Technology

Self Driving Cars

Robot Car
Robot Car

Every so often, I’ve seen the “ethical dilemma” of Self Driving cars come up for debate.  Specifically, the scenario goes something like this:

A self driving car is approaching a crowd of children, it can veer off a cliff and kill the occupants, saving the children, what choice does it make?  Who is responsible for the deaths?”

Its a dilemma to be sure, but it’s also completely absurd and effectively a non issue, which is an angle no one seems to really look at or realize.  This specific scenario is completely absurd because, why are a bunch of children blocking a road on the side of a cliff to begin with?  It can be toned down to be a bit more realistic of course, what if it’s a blind corner, maybe the children are just on a street and it’s just a crowd of people and not children.  The children are just there to appeal to your emotional “Think of the children!!” need anyway.  Maybe the alternative is to smash into a building at 60 mph after turning this blind corner into the crowd of people.

No wait, why was the car screwing around any corner where people may be at 60mph?  That’s highway speeds, there’s a reason we have different speed limits after all, open view open areas like highways are faster because we can see farther down the road and we have more room to swerve into other lanes or the shoulder and not into buildings or random crowds of people.

Exceeding the speed limit like that is a human problem, not a robot problem.

So, maybe the car is obeying the speed limit, maybe the brakes have suddenly, inexplicably, failed, and the car simply can’t stop…

No wait, that doesn’t work either.  Brakes generally don’t just “fail”.  A robot car will be loaded with sensors, it will know the instant the brakes display even a little bit of an issue and probably drive off to have itself serviced.  Or at the very least it will alert the driver of the problem and when it reaches a critical stage, simply refuse to start or operate until fixed.  Should have taken it into the shop, that on demand last minute fix service call will probably cost you three times as much while you are late to work.

Looks like ignoring warning signs of trouble is also a human problem, not a robot problem.

So what if there simply isn’t time to react properly because it’s a “blind corner”?  Maybe some idiot is hiding behind a mailbox or tree waiting to jump out in front of your self driving car.  Except this is still more of a human problem than a robot problem.

All of these self driving robot cars, are all going to talk to each other.  You car will know about every crowd of people in a twenty mile radius because all of the other cars will be talking to it and saying things like “Yo dawg, main street’s closed, there’s a parade of nuns and children there,” and the car will simply plan a different route.

They will even tell each other about that suicidal fool hiding behind the tree.

Maybe your car is alone, in the dark in a deserted area.  First, it’s a robot, it doesn’t care about the darkness, if there isn’t some infrared scanner attached telling it there is someone hiding somewhere, it’s going to still see the obstruction.  It will be able to know “How fast could a dog or a person jump out from behind that thing, how wide should I swing around it, how slow should I pass by it.”

It knows, because this is all it does.

Speaking of dogs, or possums, or deers, this also becomes a non issue.  The car will be able to see everything around it, in the dark, because it can “see” better than any human.  It also constantly sees everything in a 360 degree view.  The self driving robot car will never get distracted rubber necking at an accident, it will never be distracted by that “hot chick” walking along the side of the street, it will never road range because some other robot car cut it off (which won’t happen anyway).

It just drives.

And it will do it exceptionally well.

And even if our crazy scenario comes true, even if a self driving car has a freak accident and kills a buss full fo children every year or really every month, it will still kill fewer people than humans kill while driving.

So feel free to waste time debating which deserves to die, the driver or the pack of people, or debate who is responsible, you may as well ask who will be responsible for cleaning up all the poop cars make when they replace the horse and buggy.

What I Use: Synergy

synergyLast post, I talked a bit about my new Multi Monitor set up.  I mentioned that I use a program called Synergy to handle using multiple machines with one keyboard and mouse.  It’s essentially a virtual KVM, only without the V, since everything has it’s own Video disrt play.

It’s not a free program, but it’s not expensive, and it’s well worth it if you use multiple machines in this manner.

The general gist of it’s use, one machine acts as a server, and other machines connect to it.  The server hosts the mouse and keyboard, and the configuration.  Out of the box, Synergy actually works kind of crappy with a multi monitor involved such as my set up.  The configuration is a simple drag and drop positioning grid, and it doesn’t care about how many monitors are on one system, it assumes one.

synergy_config

You can manually set up a more complex configuration pretty easily.  I’d recommend doing a basic set up and making sure everything is working well before delving into the complex realm.  I’ve found several tutorials online with complex formulas and jargon but the whole set up, in most cases, is a lot simpler.

Start off with your basic set up and save the configuration file.  Now, save it again with some sort of appended name like “edited” or “custom”.  This way you can always reload the original working configuration.  Also, you can save this configuration anywhere but ultimately the program may need to reload it so I would recommend saving it somewhere handy but out of the way, like Documents or even a folder in Documents.

Now, find the file you just saved and open it in notepad.  Find the section labeled “section:links”.  This is the meat of how the program knows where to transition.  It should look something like this:

section: links
pi:
down = Squall
Ixion:
right = Squall
Squall:
up = pi
left = Ixion
end

Notice the directions, up, down, left, right, these are the edges where transitions occur.  You can alter these to make them more precise by adding (x1,x2) to each entry, where x1 is the starting percentage across the screen and x2 is the ending percentage.

synergy_monitors

If you have some complicated positioning, you can futz out some math on the percentages by using the number of pixels /the number of pixels total, but if you have a fairly simple set up like mine, it’s not hard to generalize these percentages.  In my case, this becomes:

section: links
pi:
down(0,100) = Squall(33,66)
left(0,100) = Ixion(0,100)
Ixion:
down(0,100) = Squall(0,33)
right(0,100) = pi(0,100)
Squall:
up(0,33) = Ixion(0,100)
up(33,66) = pi(0,100)
end

Note, that (0,33) is the “first third” across the top of the total width (3 monitors).  The other transition is (33,66) or the second third.  If I had a third monitor on top, it would end up being (66,100), however since I don’t the mouse stays locked within the monitor on the right instead of transitioning anywhere.

With my original generic set up, any upward movement always went to “pi” and going off the left hand edge went to “Ixion”.  In the new set up, everything behaves as expected in a seamless up, down, and across fashion.

Oh, and it works on a Raspberry Pi!

Multi Monitor Mount

I just wanted to take a moment to share my new multi monitor set up.  Many years ago I was turned on to the idea of using two monitors at my previous job.  having the extra desktop space was great and we ended up adding a second monitor to a lot of the desktops in the office.

Five monitor stand

After building my home office PC, I ended up gathering a few more monitors second hand and eventually had a triple monitor set up at my desk.  I’ve been planning for a while to get a stand that would hold all of the monitors together and clean up desk space but kept putting it off.  When I finally set out to order a stand, I found I could get a 6 monitor stand for almost the same cost as the 3 monitor stand I was looking at, so I figured why not.

So the stand arrived, I used a drill and a hand saw to chop a slit in my desk to slide the mount into, and I went about mounting things.

Unfortunately, the monitor stand isn’t quite designed to fit in a corner, and my monitors are just just just too large to fit on it properly.  Fortunately, I noticed the arms are set up with a long part and a short part, on all four arms.  So I disassembled the arms on the top half and reassembled things so that each of the lower arms had two long bits, which was perfect for the lower monitors to fit together.

Back on an unfortunate note, this means that the upper arms are both really short.  I opted to just pull the one arm off and use just the two monitors on the above section.

This also means I have space to rotate the lower right hand monitor into a vertical alignment if I feel like it.

So why does one need so much screen real estate for.  I’ll admit, it’s probably overkill, and three is probably the most that is really necessary here.  The upper monitors are mostly used for peripheral uses.  The three lower monitors are all hooked to my desktop, I keep Facebook Messenger and Thunderbird (email, Usenet) on the rightmost one, the browser on the left one, and the center one is reserved for whatever the focus is, a game, Photoshop, video editing, sometimes the browser.

The upper center monitor is hooked to one of my Raspberry PiB2s and has XCHAT running connected to my ZNC server.  This is also the same Pi that I host a Minecraft server from.  I tried running Xchat off of the same PiB+ that runs the ZNC server but the lag made things unusable.  The B2 runs things way better than the B+.

The upper left monitor is still kind of undetermined.  It’s limited since it only has a VGA input on it for starters.  Once I get my CHIP with VGA adapter I may stick it on the back of the monitor.  For now I dug out an old Netbook and use it to monitor security cameras.  I’ll probably also use it to display a home automation dashboard if I ever get around to building such a thing with my Arduino boards.  It currently runs Windows 7, mostly because I haven’t been able to find any software on Linux to monitor multiple IP cameras.  The only one available isn’t free, which wouldn’t be a problem but it uses an asinine license system so it’s a reoccurring yearly cost and it’s not cheap.

I really refuse to pay for “license” style software that isn’t constantly providing some some sor tof regular upkeep/service.  A stand alone self run product really shouldn’t cost yearly, but that’s a rant for someplace else.

Everything is tied together using a really nice piece of software called Synergy.

On a technical note, each of the lower monitors is 21″ across the diagonal and the upper monitors are both 19″ across the diagonal.

One Month on Windows 10

windows-10-logoI held off a bit on the whole “Free Update to Windows 10” thing.  I’m still a bit apprehensive on the whole issue, it feels like there might eventually be a “catch” of some kind.  There probably isn’t, more likely, it’s just an attempt to get everyone on the same page so to speak.  It makes everything better and easier for them.  Easier for security, easier to maintain, easier for developers to make apps they “know” will work.

It’s part of the beauty of phones, on some level, they are all mostly the same.  Except of course for the 50 different versions of Android floating around due to manufacturer cruft and skins and carrier differences and phones that don’t get updated, etc etc.  Still, even if 50 wasn’t an exaggeration, it’s a small fraction of the potential different versions of Windows out there from XP, Vista, 7, 8, 8.1, 10, Monthly and weekly patches, Service Packs and updates.

So, anyway, it’s been about a month since I did the upgrade on my Windows 7 desktop.  I’m generally happy with it all around, aside from my one major issue.

The Good

It’s not Windows 8.  Windows 10 has a lot of the best features of Windows 8, but it doesn’t have the annoyances.  The goofy full screen start screen mostly, I have no idea how that would work on my multi monitor set up.  It doesn’t have the annoying charms bar or crap popping in and out all over on the edges.  It does have the live tiles and all that jazz.

It runs just fine, I haven’t really noticed an increase or decrease in performance honestly.

It also has the store, which is a nice optional way to get programs and apps and other things.

The Bad

ScreenShot394Apps and live tiles are great, if they work.  They don’t seem to work very smoothly at all.  Most of the time they just show their basic icon.  On the other hand, it’s kind of frustrating when they have a live tile photo of some kind because now the app isn’t obvious.  I don’t know how many time I went looking for the Facebook app because it had someone’s profile photo on it.

Groove Music is a horrible piece of crap.  This is Microsoft’s music store/player.  I had similar issues on my phone with Xbox Music.  I have a decent collection of music, from the free promo Microsoft ran last year to the 10 cent sale they ran this year, I have quite a few albums.  The thing is, I also have music from Google, and a lot fo music from Amazon and some ripped from CDs.  I manage all my music as local files, or with the Synology Music player on my NAS.  This means downloading the files, which you can do with Groove music, when it doesn’t time out or fail, or reload thinking it hasn’t downloaded any files yet.  There also isn’t any way to manage the download Queue at all, even basic controls like a pause function would be nice.  Instead, I can start some downloads, then walk away, but if I want to halt things to clear up bandwidth, I have to close the program, which screws everything up again.

The Really Really Ugly…

I don’t know the root cause, I new will, but the Windows 10 November Update totally screwed up my machine.  In searching for the fix, I found others had had the same issue and it’s a relatively special case.

I dual boot Ubuntu Linux, which means when the machine boots, it brings up the boot loader, GRUB, which has configuration files on the Linux partition.  I rarely actually use this other OS, especially since I get my Linux fix on  my Laptop these days, but it’s there.  Honestly, part of the reason I still keep it around is because I don’t want to hassle with removing GRUB.

This update, apparently messes witht he partition tables, and potentially the partitions themselves, because during the update, my machine became unable to boot.  It restarted and I got an error in GRUB that it couldn’t detect any OSes.  I went and found a boot repair tool from Ubuntu, but the tool did nothing.  Eventually I opted to simply reinstall Ubuntu, thus reinstalling and restoring GRUB, and I found what seemed to be a large chunk of “Empty Space” on my main drive.  I reinstall Ubuntu into the hole, ran the repair tool, which fixed the base install since it could now see an OS, then reconfigured GRUB to see Windows.

I fixed it, but it was a massive hassle, one that shouldn’t have been an issue.

I seriously hope this doesn’t happen with any future major releases, the next should be in 2016 with Redstone 1.

Tools I Use: Netscan and Fing

I wanted to do some occasional posts on some tools I use for various technical tasks.  Partially just to suggest some useful stuff, partially so I have some posts to reference anytime I reference said stuff.

I wanted to start off with Netscan and Fing, which serve the same basic purpose on two different platforms.  Both of these tools will scan the local IP range and return a list of every device connected to the network.  Netscan is what I use on windows, Fing is what I use on Android.

I use these tools very frequently, several times a week on average.  So what use is scanning the local network anyway?  I have two main uses, though both come down to Device Discovery.

Firstly, basic device discovery.  I’ve hooked something new to the network and I need to access it.  A lot of what I connect is headless with no easy way of discovering the IP aside from a scan.  An Arduino, a Raspberry Pi, a networked Webcam, all of these things need to be found once connected.  The scan is also useful for getting the MAC address of devices on the network.  The IP is dynamic on a network by network basis, a MAC address is a unique identifier.  Knowing the MAC address is useful for building firewall rules and setting up static IPs assigned by the router for devices like phones or laptops where assigning IPs on the device can get hairy.

The other reason for doing a network based scan is intrusion detection.  Generally speaking, I don’t expect to see hackers or anything on my home network.  This is more for checking things like “if my kids’ devices are connected” or occasionally if one of my kids has a new device borrowed or whatever that I am not aware of on the network.

Ultimately I want to set up a little network monitoring system on a server to do these sorts of checks in real time but both of these tools have served me well for years as doing the job quickly and simply.

Both are also useful for poking around foreign networks.  You can see what machines are on an open WiFi hotspot and see if they have any open shared files.  Though some open hotspots are smart enough to block such scans.