Many moons ago, in the early 1990’s during high school, my friends and I somehow came across three ancient laptops. Back then, we acquired all kinds of weird and wacky stuff, and being poor students, would press anything into service we could manage. I don’t recall the model exactly, but they were something much like a Toshiba T1100, if not one of these exactly, pictured here:

Toshiba T1100

By Johann H. Addicks – own photo, deriving from Gallery, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1254296

Of course, the first thing to do was get DOS running. Having abandoned DR-DOS a few years prior, we whipped out our ever-handy MS-DOS 6.22 disks and set to work. No problem! Worked first go. Remember when it was that easy? Not so much any more… Of course, the next thing on our agenda was to connect them all together.

What? Network these ancient beasts? And who did that for funsies at home in 1992?? You see, we got into this whole network thing early, being nerds and all. Dialup, Gopher protocol, all that fun stuff. I fondly recall the days spent with Dave trying to make a pair of ISA Ethernet cards work. Thinnet 10Base-2 stuff, RG-58 coax, T-connectors, and terminators… We even had to compile IPX/SPX drivers using some Novell Netware floppies. Massive pain in the ass. Why did we go to all this trouble? Well, it was the classic motivator for any youngins to learn them some high-tech toys – To play Hexen on a LAN in co-op mode, of course. It was worth every second of effort. =) We ended up re-playing Heretic as well, and moved on to Descent. Oh my, I still get vertigo thinking of that game, and I’m not one to suffer from vertigo! So good…

ISA Ethernet

It looked something like this. But crustier. Image by Klaus Eifert – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=11045803

And before that Ethernetty goodness that we lucked into, we all had our machines wired up with serial cables, between rooms, and between floors of the house. It was tiring having to sneakernet files between machines all the time, and (at the time) damn near impossible when one was a DOS-based 8086 (actually an NEC V30 or V40, the cloned and souped-up version) and the other a Macintosh SE running System 6.0.8. Of course, we would shuffle connections when it was time to fire up the modem (which was ALL the time, duh! MOM! Hang up the phone!!). And that sucked.

So when it came time to network our new-found “laptops”, I got crafty. I figured, well hey we have three of these things, and some desktops we may want to get in the mix, so why not connect them all together at once? Mind you, at the time, Ethernet was still exotic, expensive, and well out of our reach with that one notable exception for Hexen. (Heck this may predate that event; it’s all a bit fuzzy) But, I was pretty handy with RS-232 and RS-422, thanks to a PC, a Mac, and a modem.

So I created SPRINGNet! This stood for Serial Packet Ring Network. Machine A would send to B, which would send to C, which would send back to A. Or however many we had in the ring. Mind you, this was before I had ever even heard of Tokenring, and just seemed the thing to do. Well, it worked! For what applications, you ask? Well, for the roleplaying game engine that we wrote in QuickBasic 4.5. It wasn’t a game by itself, but it facilitated AD&D sessions like a champ (2nd edition FTW). Started out by extending the codebase with the SPRINGNet protocol, which was little more than a message format and an source/destination address, but hey what more do you need?

SPRINGNet diagram

SPRINGNet diagram

After that I extended it to a separate TSR driver that would do the same thing, so that any application could use it. Worked well, but we never made much use of it, primarily because those ancient laptops really sucked. I had big plans to build some hardware accelerator modules for the protocol, since it wasn’t nearly as fast as I’d like for transferring files, implementing all the address detection and packet decoding in software. It was going to be simple, and would simply be a chip that would watch for the address byte, and if it matched the address of the machine/adapter, it would switch the data stream into the serial port instead of pass it on. (We’re talking basic logic chips here, not microcontrollers.) We didn’t have any kind of TTL counter to prevent loops, but would just have the originating machine look for it’s own address as the sender, and drop the packet if it saw it.

Never got around to building the hardware, and moved on to other things. But SPRINGNet lives on fondly in my memories! Even had some door sensors, buttons, and other fun stuff hooked into the ports, what with all those DSR CD CTS etc wires hanging out unused. (RI? Who ever used RI anyhow??) Yes kids, back in the day, our things were all on the Internet (or some kind of net). Take THAT, IoT!


Google Sheets Spreadsheet Trendline Fix Hack

I was recently working in a Google Docs spreadsheet (I guess they call it Google Sheets now), and had trouble adding a trendline to some time-series data. I didn’t want to have to go scare up a real spreadsheet app, since the data set was still small and I wasn’t doing anything very complex with it. But I wanted my trendline, darnit! I’ve got yet another startup brewing, and I’ll be living in spreadsheets for a while, eating finance and breathing analytics for the next N months. I needed to find a way to make it work. Searching the interwebs, I came across a number of other users expressing frustration at an apparently inconsistent, or at least non-obvious, user experience of the trendline function. So I started poking at it to figure it out, and I came up with a hack that made things work for me.

The trouble comes in when, with various combinations of options for the chart, and the formatting of the underlying data, the Trendline option in the chart’s Advanced Edit does not appear when it should. There is no user feedback to explain why it doesn’t show up, leading to the kinds of frustrated requests for help you’ll find if you search for it. The docs do say “You can add trendlines to scatter plot, line, column, and bar charts.” – and you will see the option disappear if you have a different kind of chart. But for some of these charts where it should work, it does not. If you select a column chart, the option can disappear. Or, if you format your time data as “Date Time” instead of date, it also disappears. Not cool! I’ll show you what I mean.

Let’s start with a basic time-series scatter plot:

A Basic Time-Series Scatter Plot

A Basic Time-Series Scatter Plot

According to the Google Sheets documentation on the trendline feature, we can add one easily under the Advanced Edit section of the chart. And you can see below, the trendline option is available as it should be:

Trendline Option Is Available

Trendline Option Is Available

When you change the column formatting to Date Time instead of Auto or Date, the option disappears!

Formatted as Date Time

Formatted as Date Time

And it’s gone.

No Trendline for Date Time

No Trendline for Date Time

So here’s the hack:

  1. Set the time column format to Date
  2. Add the trendline under advanced edit, and set the options as you like
  3. Change the time column format back to Date Time
  4. The trendline stays put!
  5. PROFIT!

So here I added the trendline after changing the date column to “Date” formatting. After twiddling the line to be a 5th-order polynomial, we have this nice result, verifying that Google’s directions work. This time, at least!

Add Trendline with Date format

Add Trendline with Date format

And after changing it back to “Date Time”, the trendline stays! I even twiddled the time portion of the value, moving the hours around. The data points in the plot shift as appropriate, and the trendline updates correctly. This leads me to believe this is just a UX glitch in Google Sheets.

Trendline for Date Time in Google Sheets

Trendline for Date Time in Google Sheets

So, this hack works for the scatter plot, but I have seen it not work for others (column, if I recall correctly). I’ve seen other users comment that the formatting selection made a difference for them, for other chart types and other than time-series data, so you’ll have to play with it. I didn’t enumerate all permutations of Google Sheets, charts, and trendlines!

Good luck, and have fun spreadsheeting =)


Stratasys Dimension SST 768 DIY VGA Connector

So I’ve come across a new toy: a Dimension SST 768 3D printer! But, it was having some difficulty turning on and working. Tearing into the back of the system, I found three DC power supply boards (24V, 12V+5V, and 120V), a single-board computer, an overly-complex logic/controller board, and what’s labeled a “Power Distribution Board” which connects to all the steppers and other hardware.

First order of business was to check the power boards, which were all spot-on voltage output. Ruling that out, I needed to see what was going on during the boot process.

Thanks to another helpful blog post, I discovered that the SBC was an Ampro P5v – which was awesome, because the label for the board is buried under another one, and I couldn’t see it without tearing it all down. Didn’t feel like it that day.

From the manual for the SBC, we discover the pinouts for the video port, J5:

Pin Signal DB-15
1 Red 1
2 Ground 6
3 Green 2
4 Ground 7
5 Blue 3
6 Ground 8
7 Horizontal Sync. 13
8 Ground 10
9 Vertical Sync. 14
10 Fused +5V Power n/a

I dug out a ten-pin connector with ribbon cable attached, from an old 9-pin serial backplate. Snipped off the serial port, sacrificed an old VGA cable (since there were no DB15 jacks in my junk pile), and rigged up an adapter. It works perfectly! There are also keyboard and USB and all the other I/O you could want on that SBC, documented in the manual.

Now that we’re in, it’s time to root the beast, turn on SSH, bypass the cartridge EPROMs, and make some awesome. My beloved MakerBot, your big brother has arrived!