An auspicious start to DOS programming

In 1992  I was a young geek of 19 years. My programming experience consisted of the BASIC programs in the manual that came with our Commodore 64 and a few others in our schools Apple II lab. I had also written a few HyperCard and FileMaker apps on the Mac in my bedroom, where I did all the typesetting for my Dad’s print shop. [Thanks so much dad, for buying that first Mac Plus instead of a Compugraphic typesetting machine].

My vocational training in Mechanical Drafting had landed me an entry level position at Kysor/Cadillac as the blueprint clerk. Before long I rearranged the print room to maximize the efficiency of the engineers and myself, leaving me with hours of spare time each day. Often I would roam the engineering department, in search of  engineering projects, much to the delight of the engineers who could often find drudge work to offload.

During one of these lulls, I was chatting with David, a bright young lad who worked in the QA department. David was also quite fond of computers and told me of an escapade in which some students at his school had written a login simulator that captured and stored passwords when users logged into an system infected with their program.

Our engineering files were stored on a Novell Netware server connected by a token ring network. Each DOS computer logged in using a Novell program (login.exe, IIRC). The password capturing program seemed like an interesting challenge so I acquired my first DOS compiler (Qbasic or PowerBasic, I can’t recall which I used for this task) and wrote login.bas. I simulated the login screen perfectly, stored the passwords to a file, and then passed them on to the real login program, logging the user in. It  offered the user no indication that foul play was at hand.

Pleased with my results, I showed Rick, our network admin. I explained that I hadn’t inspected the contents of the file, knew what was in it, and turned my back while he inspected it. It turns out that Rick wasn’t terribly fond of being informed that his network security wasn’t all that secure. A few of his heated words I recall were, “that’s not your job!” He immediately escalated the matter to Keith, our VP of Engineering, intent on having me fired.

On that day, it was quite fortunate for me that I had set a precedent of doing a lot of engineering work that was not my job. Unbeknownst to me, the wheels of my first promotion were already set in motion specifically because of the extra-curricular not my job work I had been doing. That day ended with me getting a stern talking to. Soon thereafter, I was promoted and my new job involved writing software for Kysor.

Motion Sensors

Thanks – very helpful!  I’m curious – what model of motion sensors are you using?  Have you had good luck with them?  What’s the battery life like? Is it practical to put them in pretty much every room of a house?

Every room? That depends on your budget. 🙂

Outside I have Aeon Labs Aeotec Z-Wave MultiSensor: (Motion, Temp, Light level, Humidity) which turns on the lights when motion is detected and it’s dark. I’m not doing anything with the Temp or Humidity yet, but they’re neat to have.

Inside the house, I have Ecolink Z-Wave PIR Motion Detectors. I currently have one in the kitchen, dining room, living room, and front stairwell (split-level). When it’s dark outside (see above) and motion is detected, GE Link bulbs turn on and light that area. I’m going to buy more because my son wants the lights in his bedroom to be smart too.

The motion detectors work fairly well, with limits. They are Passive IR, which is GREAT for battery life, but after tripping they don’t begin watching again for 4 minutes. To prevent going off when someone is sitting idle in the room, I find I can’t “trust” a lack of motion until about 20 minutes after motion stopped. I’ve read that some folks run these detectors in “test” mode, which reduces the 4 minute timeout to 10 seconds, at the cost of shorter battery life. I haven’t tried that yet, but likely will in the dining room. Believe it or not, sometimes my kids actually sit still while doing homework!

I also have a SmartThings SmartSense Motion Sensor that came in the kit with my hub. It usually senses motion and temperature, and after a month’s use six feet from the hub, it’s down to 66% battery. All the Aeon motion detectors are at 100% after a months use. I’m substantially less impressed by this ones reliability (which impacts the WAF) so it got relegated to the garage. I haven’t done any validation of battery life reporting, but there’s a good chance I won’t recharge this guys batteries.

One thing about motion detectors is they don’t detect us until after we come into their field of view. Duh, right? For the motion sensor inside the front door, this means the sensor generally doesn’t “see” us until the door has mostly opened and we’re walking in. During that delay, someone is invariably reaching for the switch at the same time the lights come on. That’s confusing, especially if they flip a 2-way switch and nothing happens. I could put another motion sensor on the other side of the door, but what I like better is…

the Ecolink Z-Wave Door/Window Sensor. I now have one on every exterior door. The second the door starts to open, the lights come on both inside and outside the door (if they weren’t already). The motion sensors are then used as occupancy sensors that turn off the lights after the area hasn’t been occupied for N minutes. A planned automation feature for the door sensors is to automatically yell at my kids if they’re more than N feet from the front door and didn’t close it.

The less “smart” but very useful motion sensors that I’m using are these Mr Beams MB726 Battery Powered Motion Sensing LED Nightlights. They aren’t smart in the Home Automation sense but they are much cheaper. They’re ideal for lighting up dark hallways and stairs where “light it up when I come, and turn if off 30 seconds later” is just perfect. I bought those because I have kids and a couple of our hallways didn’t have power outlets to plug in a motion-activated AC powered nightlight.

One last tangent related to motion sensing, but more on the “smart switch -vs- bulb” topic: With the smart bulbs, one limit is that if someone turns off the switch, the bulbs forget their dim level. A switch never loses power so it remembers. An advantage of smart bulbs is that at homework time, motion turns on all 4 bulbs at 70% brightness. At dinner time, motion turn on 3 bulbs at 50% brightness. After 9PM when the kids are in bed, motion turns on one bulb at 10% brightness. Switches act on all the bulbs or none.

Child Automation and our Yale Deadbolt

I found almost exactly the lock I was looking for in the Yale YRD240-ZW-605. The wife and kids love it too, making me even happier with the choice.

When we get home, one of the kids asks for the house keys. The first one to ask gets the keys and gets to unlock the door. They love to unlock the door, so it’s frequently a race. I’ve been thinking it was time to give them their own keys, but its really hard when they can’t yet hold onto the same library card for more than a year. Stashing a key outdoors didn’t fit my sensibilities.

In exploring the options, I found a wide variety of locks. Push buttons. Numeric keypads. Bluetooth. WiFi. Smartphone Apps. Key fobs. So. Many. Options!

Some I was able to weed out straight away. Requiring a smarthphone is a non-starter. For that matter, requiring that we carry anything seems so last century. If someone gets locked out of the house naked, absent their sniggering sibling on the other side of the door, they should be able to get back in.

I found almost exactly what I was looking for in the Yale YRD240-ZW-605. I can easily program a unique key code for each family member. I can add a key-code for the neighbor to feed our pets when we’re on vacation. It has a Z-Wave radio built-in which pairs with my SmartThings hub. I can pull out my phone and lock/unlock the front door from anywhere. Instead of the far-less-secure key backup, this version has a 9-volt battery port which serves as the spare key.

[amazon template=image&asin=B00HS1O5NM]

The Wife Acceptance Factor of this lock is very high. When she walks out the door, she just waves her hand at it and it locks the door. When she gets home, keying in the code is faster and easier than fishing her keys out of her purse. If her phone is already out, she can unlock the door on her way towards it.

The kids adore it, but the entry routine is  a little different than I expected. Before someone unlocked the door and we all piled through. Now one child enters their very own Simerson Secret Door Society code, enters, and then deadbolts the door. Then the next child enters their code and enters. When I pull into the garage, they run out the garage door so they can enter via the front door. Shucks, they still lock themselves outside just to use their secret code and get back in. I’m amazed that the batteries have lasted three weeks. The lock says it’s battery life is still 100%. Amazing.

home automation

I recently gave a presentation on Home Automation to a room full of engineers/programmers. I was asked several times to share the presentation.

The state of home automation has improved greatly since a decade ago when I threw all my X-10 stuff into a box and left it to rot. H.A. still requires an engineer/geek to set up, but it’s far better than a decade ago. It’s not hard to see that in another year or two, setting up home automation will be attainable by non-geeks.

Tesla, leading.

In a huge and stunning move, Tesla invites all comers to help themselves to Tesla’s patents: All Our Patents Are Belong You.

Elon is refreshingly candid, explaining exactly why, “Our true competition is not the small trickle of non-Tesla electric cars being produced, but rather the enormous flood of gasoline cars.”

In other words, Tesla gathered their patents to protect against competition from the market incumbents (Ford, GM, Toyota, VW, etc.) who are almost entirely disinterested in eCars. Instead, Telsa’s most worrisome problem is a lack of consumption. If Tesla and electric cars are to succeed long term, they need to disrupt gasoline powered cars. To accomplish that, they need a thriving marketplace with strong competitors pushing forward the state of the industry.

I want a Tesla Model X more than ever.

chained commands are SMP friendly

I just wrote a command chain (something unix admins do often) that looks like this:

  1. gzcat threeGB-file.gz \
  2. | grep ‘match this’ \
  3. | grep -Ev ‘but not this’ \
  4. | cut -f1 -d’ ‘ \
  5. | uniq \
  6. | /usr/local/bin/idn -u \
  7. | tr ‘[:upper:]’ ‘[:lower:]’ \
  8. > infile.fifo &

That command pipeline decompresses a file, filters out the metadata, weeds out dupes,  converts punycode IDN names to  UTF-8, converts caps to lower case, and makes the data available as a file.

While sucking the contents of that file into a MySQL table, I noticed that each of the commands in the pipeline was running on a separate CPU core. While it’s not the same as Grand Central Dispatch, it’s fun to see just how well the Unix Philosophy had weathered the decades.

Windows is so much fun

I have a Dell R610.

  1. I want to update the firmware (BIOS, NIC, iDRAC, etc..)
  2. I can’t update the firmware using the built in Lifecycle Controller because it’s too old (as of 2012) to recognize the signatures on the current Dell firmware updates.
  3. I can’t update using a USB drive with the updates for the same reason (signature not recognized).
  4. The only path forward is to install from a host environment (Windows or Linux)
  5. I happened to have a Windows 7 installer on a USB thumb drive, and I only need the OS running for about 20 minutes, so I chose Windows, because then it can natively run the the Dell Repository Manager, which fetches the firmware updates.
  6. After installing Windows 7, I can’t install Dell Repository Manager because .NET 4 isn’t installed.
  7. I can’t install .NET 4 because SP1 is installed.
  8. I can’t install SP1 yet. Maybe because these 103 other patches need to be installed first.
  9. First attempt to install patches fails.
  10. Install a half dozen patches. Reboot. Install 25 more. (Repeat 4x)

PS: After a few dead ends, the solution to getting all the updates applied was booting the system onto Windows and installing a newer (v1.5.X) Lifecycle Controller. Once that is accomplished,  booting into it via F10 at the BIOS POST, and let the lifecycle controller upgrade everything else directly from ftp.dell.com.

IPv6 works on Comcast!

Yesterday my ancient TimeCapsule was misbehaving. Our network connection still worked, but nothing else did. Because of its age, I decided it was time to retire it from being our home’s gateway to the internet.

I reconfigured my v6 Airport Extreme and connected it to the shiny new IPv6 enabled cable modem that I installed in 2012. I had been anticipating that eventually IPv6 would arrive. My 10 year old Motorola Surfboard 5100 was retired because it didn’t support IPv6. After rebooting the Motorola SB6121 cable modem, the IPv4 network came right up. I went in to set up IPv6 tunneling and noticed I had native IPv6 addresses assigned!

Apparently Comcast rolled out IPv6 in Washington in Sept. 2013.