Art without engineering is dreaming;
Engineering without art is calculating.

Steven K. Roberts, N4RVE

A Learning Curve Junkie in the Zone of Hackery

Wow, I haven’t been in this mode for years, and I feel rusty! Downloading libraries, reading documentation, defining data structures, parsing strings, and even sketching a retro flowchart or two… this is definitely Good Times, but man, am I ever out of shape. But still, hot on the heels of installing Zen Cart for local development under MAMP and firing up a server on the Technologic TS-7200 ARM Linux board, my current plunge into Arduino development is like coming full circle and landing again in micro-land. That’s where I most enjoy frolicking… where I can feel the bits between my toes, there is no vertigo in the address space, and raw I/O is just a statement away.

The workspace is artificially clean now, but that won’t last long. This is the warm spot in the lab where I’ll be doing all the embedded electronics and software, and before long there will be a big folding console in the midst of it, with dangling umbilici creating a trip hazard and exposed electronics rendering the space off-limits to Java-the-cat, who is drawn to warm novel nap sites.

The first node in the shipnet is SEWAGE, a good choice since it is both useful and easy. It has ten electronically-trivial sensor inputs, including magnetic sensors on the stopcocks for thru-hulls and tank vent, a flooding sensor, electrical observation of the macerator pump circuit, Lavac head pump-stroke counter, cabin and head compartment doors, and a hack into the commercial tank level sensor (which it reads by pretending to push the button and observing the LEDs). One of its important jobs is blinking a warning if the pump circuit breaker is on and the blackwater stopcock and vent are not open… and if a careless human persists and actually fires up the powerful macerator, a buzzer will scream loudly and the node will call the Hub for reinforcements. The problem is that this can create a catastrophic mess, ranging from a damaged valve to explosive decompression of raw sewage.

The node’s routine activity is to collect simple data from those points and return it whenever requested by the hub, whereupon the values join the vast sensor map of the boat. From there it is databased with time stamps, used to answer queries from any of the comm channels, and presented graphically on the ship web server. This is one of about a dozen Arduino-based nodes, and they are joined by other data sources including the NMEA 2000 network and the Outback power system.

Here is the “hello, world” of simple I/O – a flooding sensor dangling temporarily off the Adafruit prototyping shield atop the board, with an LED reflecting the state of the magnetic reed switch. Trivial program, but that means everything in the chain is working… and is the first hurdle in getting familiar with new tools:

The next step is to cobble together a simulator for all the I/O the node will encounter, and write the program. This includes some string processing to deal with a small repertoire of 8 commands, but of course I first have to get clear on some fundamentals to streamline things at the other end (like slurping it tidily into the database). The first question, which occupied me for much of this exciting Saturday night in the lab, was whether to use key-value pairs or comma-delimited sentences reminiscent of NMEA 0183. I seriously considered fixed-format point IDs like the PGNs in NMEA 2000 (and may still), but in a small system like this I am fond of having everything human-readable. I want to be able to type a command from a terminal and see understandable text… not have to use a reference manual to translate numeric addresses into names of valves, or count commas to find the number I want.

As this shapes up, the trade-offs will settle out, but none of this is an immediate impediment to bringing the first node online.

The Hub

I have still not made a final choice on the always-on computer that will talk to all these little guys while also acting as ship’s server, archivist, and general apps engine. As I mentioned in a previous posting, my first aesthetic choice would be a Mac Mini, though they do draw about 20 watts (and I was most disappointed to not see a rumored new model announced at MacWorld). I’ve also been growing very intrigued with a low-power Ubuntu Linux machine (which I won’t name just yet, but very likely soon), and that got me thinking about a role for the Technologic TS-7200 acquired for the original Shacktopus system:

This is a sweet board, currently sitting beside me on the bench running Apache. It is hilarious to FTP to it from the Mac and realize it feels and acts just like a distant server, yet only draws 400 mA of 5 volts. It would never stand up to a slashdotting, of course, but in this context it is surprisingly robust. The ship does need a “back door” node, reachable from the Net and empowered to answer queries and perform maintenance on the main system… I had considered the Make Controller for that, but it has no file system, network services, or USB host port. So this may yet find itself integrated into the nautical reincarnation of Shacktopus.

The Boat Hacking Emporium

A room full of merchandise may sound like an anchor for one who is trying to get nomadic, but I’m making good progress on the new online store… and have even lined up some excellent dealerships. My intent, of course, is to render the physical side of this business clearly defined enough that it can be handled by a manager, helping to amortize the expense of keeping home base operational while we’re gallivanting about. Besides, like most folks, I’ve been hammered by the economy… I need to deploy more nickel generators while I can!

The puzzle now is where in my tangled namespace this should live. Not including domains I maintain for non-technical friends and a few strays unrelated to boat geekery, I have these:

BOATHACKING.COM – for the new book and maybe the store
DATAWAKE.COM – the streaming data-collection project
GONZOENGINEERING.COM – too nice to pass up
MICROSHIP.COM – my front door
MICROSHIP.NET – defensive position
MICROSHIP.ORG – defensive position
NOMADICRESEARCHLABS.COM – company name, but too long
NOMADNESS.COM – you are here!
RIGNEXUS.COM – part of Shacktopus
SHACK2GO.COM – a fleeting product name idea, also related to Shacky
SHACKTOGO.COM – variant on above
SHACKTOPUS.COM – bringing this back to life as part of the ship
SHOALDRAFT.COM – silly idea over a beer one night
TECHNOMADIC.COM – small store for spin-off products

I’ve already let a couple go (at $15 each per year, it adds up) – Pedarka and Kayaktopus were never going to be as useful as I thought during that first neologistic buzz, though Shacktogo is cute for a portable ham-radio station. But what I really need to figure out is where to best place a store… and I’m assuming that is not in a subdirectory of another site, even though my two main ones have very nice page rank.

If someone has been through this exercise and would like to share a few thoughts, I’d appreciate it. My current thought is to use for that, and give it a subdirectory for material related to the new book.

Back to it! I feel the urge to twiddle some bits… but first, speaking of learning curves, Erik Satie’s Gnossiennes are wonderful.


  1. Ed Davies on January 11, 2009 at 4:54 am

    Asus Eee Box?

    Re the domain names: I’d suggest keeping it all as simple as possible. Unless you think there’s much likelihood of spinning things off into separate businesses it’s just confusing to have lots of names floating around diluting your “brand”.

    The pages at and look the same but the reader is left wondering if there’s some subtle difference, perhaps one’s more up-to-date than the other. If you have two URLs for something it’s better if one explicitly redirects to the other, I think. is different but the page title and the title line which draws your eye is “Nomadic Research Labs” – but I thought that was the other site! Though the other site has a different favicon.

    I’ve been involved (as a contractor) with a couple of small companies which have changed their names. They wound up spending too much time talking about what the name change signified though, no, it didn’t really mean any change, when they could have been putting over more interesting things about what they were doing.

    People accept that small companies can have more than one activity – just link to them clearly on the home page, I think.

  2. Steve Roberts on January 11, 2009 at 10:39 pm

    HI Ed, and thanks for the comments!

    (It’s not the Eee Box at the current top of my list, but that was the first of the breed to catch my eye… perhaps.)

    I really appreciate your observations on the domain names, which are indeed rather scattered at the moment (a mix of parked, redirects, and subs). Maybe the new bizlet should be a /store under the main site, with links over from the others. I certainly don’t have enough momentum to take a risk of getting any more diffuse… and I know the confusion of multiple names when you don’t know the entity first-hand.

    Thanks for the good advice,

  3. Eric Remy on January 12, 2009 at 7:24 am

    I’ve a bit of experience with domains (heh) and I think is ideal for the store. It’s an easy-to-remember domain, and the fact that it contains “boat” and “hacking” should increase your search engine ranking. Certainly link to it from the front page of the other domains, if they get traffic. That will also increase your search rank.

    I also have a handful of crazy domains that I registered after too many drinks. I can remember waking up, very thirsty, with my head pounding, and thinking “Did I really register, .net, and .org last night?” Ha…

  4. Anonymous on January 12, 2009 at 10:41 am

    How about the OLPC XO? Inexpensive, low power; rugged.



  5. Steve Roberts on January 12, 2009 at 12:45 pm

    Yes, the OLPC is intriguing… as are the netbooks. Interface and display-remoting are more awkward, though they tend to be well-optimized in the power domain. One decision I have made is to not integrate the LCD too tightly into the console… that technology changes a lot. And frankly, as long as I/O is on a USB tiered star instead of bare-metal interfaces, it almost doesn’t matter. What goes in there now could be swapped out in a year.

    Initially, I’m going for lowest power and the most approachable learning curve, ruling out windows. I need to make sure the key tools (like the Arduino toolchain) work easily in Linux, and then there are the apps that need to run on the box… many of which support the Mac Mini approach.

    Ah well, development on the bench is via laptop, so maybe I can postpone this decision a little longer while I get the network going!


  6. Ed Davies on January 13, 2009 at 3:18 am

    “I need to make sure the key tools (like the Arduino toolchain) work easily in Linux,…”

    They work fine for me under Ubuntu. I seem to remember a little bit of fiddling around to get the USB/serial connection going but it was well documented on the Arduino site.

    Captcha: nestrats

  7. Dan L on January 21, 2009 at 9:15 pm

    I just read about some engineering
    students that are entering an
    an autonomous sailboat transatlantic
    regatta. They're using something
    from these guys:;=1

    (5 watt atom processors, with lots of i/o capability).

  8. Steve Roberts on January 22, 2009 at 7:10 pm

    Hey, those look neat, Dan – thanks!