Lua Web Server

One of my large and ever-unfinished projects is a Home Automation system. This is designed as multiple processes where most of them are Lua script engines along with several C++ processes as well that handle low-level interfacing and infrastructure for the system.

This is all running on a RaspberryPi.

As part of this effort, I wrote a simple Lua web server to allow access to the system from a browser or a custom iOS app. Since this Lua web server might be useful to others, I am making it available as a separate component.

It is quite simple, but for serving JSON and HTML, and responding to requests (JSON or otherwise) in a low-demand system like personal home automation, it should be just fine.

Note that this depends on the Lua socket library being present.

Lua Web Server repository on Bitbucket

Apple iPad Pro Review

I was really looking forward to Apple announcing an iPad update this Fall. My iPad 3 was due for replacement, being heavy and slow due to the GPU being underpowered for the Retina display. Since the iPad Air 2 had been out for a year, I was waiting for its refresh/replacement model.

When Apple did not announce any new full-sized iPads, I was greatly disappointed.Sure, they announced a new iPad Mini, but I’d had a mini at one point, and missed the larger screen.

As time passed I started to give more and more thought to the iPad Pro that had been announced. Awesome screen. Great sound. Fast CPU and GPU. Huh.

The more I though about it and the way I tend to use my iPad, the more I thought maybe the Pro would work. So when ordering became available, I ordered one, and picked it up the next day at a local Apple store!

Here are my early impressions.


Yeah, it’s not small. But the large screen is terrific. In the same way the mini screen felt to cramped to me, the Pro screen feels better than the “normal” iPad screen. The device is a little heavy, but coming from an iPad 3, which is pretty heavy itself, it’s not bad at all. Admittedly not something you want to spend a lot of time holding up in mid-air, but resting own a lap or a table is more common in my experience anyway. If you are coming from an iPad Air or a mini, your opinion about the added weight may differ from mine!


Great. Very fast and fluid. Haven’t done much that really taxes it (e.g. gaming) yet, but for my normal everyday tasks performance is great.


Having an iPad with a Touch ID sensor is wonderful. I know this isn’t the first iPad to offer that, but it’s a new iPad feature for me!

The audio is impressive. Amazing sound from an iPad.

Split-screen multitasking. So so good. It took me less than a day to begin being annoyed by the apps that don’t support this feature yet. Being able to have two apps on the screen and active at the same time is a fundamental improvement in usability. Even though the pre-existing app switching functionality is pretty fast, not having to do it at all is a vast improvement in usability. Evernote in one pane for reference or not-taking with a browser or some other app in another pane is very cool. And by cool I mean “incredibly useful”.


I expect it to be transformative for travel. When we fly somewhere, the iPad becomes our major device for entertainment. TV shows and movies one the airplane, as well as in the hotel room.

Really looking forward to the larger screen for this purpose. And no more need for a Bluetooth speaker in the hotel. The audio from the iPad itself is plenty for watching video. And, I expect, for background music in the room.

Since the iPad Pro is treated like an iPad for purposes of airplane restrictions, it means that even though the screen is in the laptop size range we can use it during takeoffs and landings. And it can stay in my backpack through security.
I also expect the game of protecting a laptop screen from the suddenly reclined seat on the airplane to be eliminated by the iPad Pro as well. (I’ll admit I need to obtain the new keyboard cover and test this to be sure, but it seems like a reasonable conjecture.)

Combined with a hardware keyboard it should be able to eliminate the need for a laptop when traveling. I never got as much time to program when traveling as I thought I would anyway, and that’s about the only thing the iPad can’t do that the laptop can. And if the rumors of Xcode for the iPad Pro are true…


The Apple Pencil. The Smart Keyboard. Two things I don’t have. When I pre-ordered my iPad Pro, I foolishly thought it would be the hard-to-get item and the accessories would be readily available and I could grab them once I decided how the device itself was going to work for me. Oops. I have both on order, but by the time I decided to place those orders, the deliver time was 4-5 weeks out. Sigh.

I’ve heard nothing but good about the Pencil. So even though I’m in no way an artist, I want to take a look. I do like to sketch diagrams and such, so I’m hopeful it will be useful even for me.

I’m a little more uncertain about the keyboard/cover combo. If Xcode for the iPad ever does actually appear, then OMG yes yes yes. But since I’m not a writer, or even a rabid blogger, I don’t find myself typing that much on an iPad. I suspect that multitasking (and the larger screen) might change that equation a bit for me, but up until now I was much more of a “consumer” on my iPad than a creator.
But the laptop-replacement aspect of the device seems to be related to having a well integrated keyboard, so in for a penny, in for a pound.

Bottom line is I’m looking forward to trying them both!
And if the keyboard isn’t useful for me, it would be for my wife. Who does not have an iPad Pro. But if it is as useful for me as I think it’s going to be, it would be even more useful for her. So I’m expecting/fearing we might have to become a two iPad Pro family at some point. :-)


Wonderful screen real estate, fast, enough space for multitasking to be comfortable. I love it so far.

1802 Emulator

In a previous post I talked about the 1802 Assembler I was playing with when I revisited an ancient 1802-based FIG-Forth implementation.

Since it was a pain to get that code running on real hardware, I also threw together an emulator. This was done in Objective-C for the Mac.

Note that the core emulation code is written in ‘C’ however, so it should be quite portable.

It is fairly quick, although I have not tried to quantify it’s equivalent speed.

It will build under recent Xcode versions such as Xcode 6 or Xcode 7.

Listing files can be loaded and executed. There is application-specific code to treat some of the IO ports as serial input/output to a simple terminal facility.

This is in no way a polished final product, but it is made available on the off chance that someone else might find the code useful or interesting.

iOS Apps – Letting Go

At this point I have three apps on the Apple App Store. Dose Tracker, an app that allows you to track how many doses have been taken and how many remain of perhaps an inhaler.
Grounded, a silly app that lets you keep track of the “grounded” status of your children. And GrieveIt, a serious tool for labor professionals.

All three are in various states of neglect, due to my iOS development focus having been my full-time job as an iOS developer at Mellmo for the past several years.

So for those several years, I’ve been feeling guilty about not maintaining or improving these apps. From a financial standpoint, it makes no sense whatsoever. For inexpensive non-games with no advertising budget, the revenue is minuscule.

After giving this a lot of thought, reading blogs and talking with other developers, I think the time has come to remove most of these apps from the store. The one app that I feel I need to at least maintain is GrieveIt, so that one stays. But the other ones are going to go.

I’ll still feel guilty, but not as guilty as I feel about having outdated apps still for sale. And from a “portfolio” standpoint, those don’t really represent the state of the art, so they probably aren’t fulfilling that function either.

I think that marks the point where I clearly segregate my programming into two groups. Things that I do primarily to make money (i.e. my day job), and things I do for fun (my own iOS apps, etc.).

Yes, I know, GrieveIt falls in the middle, sigh. I’m toying with the idea of making it free, since it does help people do things I believe in. And by free, I mean truly free – no in-app purchases, no advertising. Free.
I’m still thinking about this. If I decide to invest some time to update it and add features, I might keep it in the theoretically money-making state. Or I might not – the whole effort to maintain even a simple “business” is a drag on my time and energy as well. (And if I don’t invest the necessary time and energy, then I pay in guilt, so…)

In summary: time to streamline!

Cosmac 1802 Assembler in Python

So back in the day, one of my Cosmac 1802 projects was getting FIG-Forth up and running on the 1802.

I laboriously converted the printed listings to a digital assembler source file. This file was then assembled with a cross-assembler that was written in BASIC.
As part of that effort I also modified the Forth system to run from EPROM.

Since I wanted to get Forth running on the 1802 Membership Card (see earlier blog post), I needed the ability to assemble that source, and do some updates etc.

In the same way it’s been a long time since I’ve had a computer with a parallel port, it’s been a long time since I’ve had a computer with a BASIC interpreter installed.

The obvious next step was to write an assembler in a more modern language. Again Python was my tool of choice.

This is a fairly simple assembler, just sufficient to assemble my ancient FIG-Forth listings. It is not a macro-assembler and I’m sure has other limitations relative to a “real” 1802 assembler.

The source is available here: Cosmac 1802 Assembler

This plays nicely with my 1802 Membership Card Loader. The loader can invoke the assembler automatically when given a source file, allowing you to give one single simple command line that assembles the source and downloads it to the Membership Card.

1802 Membership Card Loader

So I built Lee Hart’s slick little 1802 Membership Card and its Front Panel card. Next I wanted to load some programs onto it! There was that nice DB-25 connector all ready to connect to my PC’s parallel port. However… I’ve got a Mac, and haven’t seen a computer parallel port in perhaps a decade.

My solution to this problem was to create my own interface hardware based on an Arduino. I considered using a Spark Core to allow doing things wirelessly via WiFi, but decided that for this purpose the Arduino was something more people were likely to have, and it was just a somewhat simpler solution.

The final design uses an Arduino, a 16-line I2C port expander chip, and some software. The software consists of the Arduino program and a Python program that runs on my Mac. Since it’s Python, it should also run on a Windows system, a Linux box, etc.
You can also forego the Python side of things and directly control the Arduino loader from a terminal, or from your own software if you prefer.

Why go to all this trouble? Just a fun little project!

It’s been a good mental exercise and a nice trip down memory lane.

Here is the Git repository with the source code and documentation

1802 Loader Documentation

Coming up next – an 1802 Emulator

Unification Day!

Today I merged my blogs. Yes, I’m at that advanced level where I can ignore and fail to update not one but two blogs!

One was more technology related, and hosted on my company site (Stormgate Software), and one was this one, a more personal blog.

The theory was that I’d post things related to the company, or software and hardware technology in general on the “business” blog, and post personal stuff here. That way I could point potential employers etc. at my tech blog, and not at my more personal stuff.

The reality is that even my personal blog contained a fair amount of technology posts, and really nothing that I’d feel uncomfortable about having as part of my online digital extended “resume”.

If there is anything truly personal, it tends to go on my Facebook page. And even there I try and avoid anything too polarizing or private. I’m linked on FB with both current and former co-workers, so even there I keep in mind the potential variety of my audience. And if someone want to not hire me because I support, say, women in technology, would I want to work for them anyway?

I’m hoping that by careful categorization and tagging the mix of tech and “other” will co-exist nicely.

My goal is to post more blog articles as well. We’ll see how that goes!

Favorite OSX Applications

Here are a few of my favorite Mac applications. These are mostly generic applications useful to most people using a Mac. I do of course have plenty of task-specific and domain-specific applications I use, but those are a topic for a later post.

Clipboard (cut-and-paste) history


There are many applications that do this, or do this as part of doing all kinds of other application-launching tasks, but this simple utility is the one I’ve used forever. I cannot imagine how people use Macs (or any computer) without a clipboard history.

Online backup


This is a straightforward and reliable backup tool that let’s use use backends like Amazon and Google for data storage.
Sure, I have a nice little Time Capsule for local backups, but repeat after me “It’s not backed up until it’s offsite”. And using something like Amazon’s Glacier storage means it can be economical to back up large data sets.

Retina Mac Display Resolution Setting


Yes, the Settings app lets you set display resolutions, but with nowhere near the level of control that this utility provides.

Disk Usage


If you want to see what is using up space on your disk, this tool is a beautiful way to do it!

Disk Cloning

Carbon Copy Cloner

So there are really three pillars that make up a comprehensive backup strategy.

  1. Local and very frequent – Time Capsule
  2. Offsite – Arq
  3. Local and immediate restoration – Carbon Copy Cloner

Carbon Copy Cloner is the tool to use for making a bootable backup, or when migrating to a new hard drive.
If you are in a situation where waiting to restore from a Time Capsule, or offline, would result in excessive downtime, a CCC backup is the fastest way to get things working again.

Monitor Everything

iStat Menus

When you want to go many many steps beyond Apple’s Activity Monitor, iStat Menus is there.
Incredible detail and monitoring of your network connection, voltages, temperatures, memory, CPU and more.
Maybe it’s just my love of gauges and dials, but I really like knowing whats going on inside the shiny box.

Other Tools

In no particular order, here are a few other tools that I find useful, but not everyone will:

  • Simplenote by Automattic
  • The Unarchiver by Dag Agren
  • Transmit by Panic
  • VLC

Embedded Development – The Hobby Edition

Ok, so here are pictures of embedded controllers and such. Just a snapshot of my hobby embedded environment.

Not shown is my workbench, which gets set up and taken down on the kitchen table as needed. (apartment living!)
This includes soldering station, digital oscilloscope, and tools.

The table top near the desk:

Spark Core, RaspBerryPi, Arduino and so forth. Plus an old-time iPod!

The RaspberryPi runs the home automation system, and is connected to an XBee used for communication with various peripherals. The Arduino is one of those, in development. The Spark Core is my development core, with others already in use around the house.

IMG 6078

Drawer #1:

Arduino stuff, XBee modules, and various shields and parts from Adafruit.

IMG 6079

Drawer #2:

RaspberryPi and Spark Core. Power supplies, and a fairly ancient Radio Shack multimeter.

IMG 6080

E-Books Update for Early 2014

Just wanted to give an update on my slow but steady transition to E-Books – a process that took on new urgency when we went from suburban life to apartment renters in downtown San Diego.

As someone who has spent a lifetime collecting, reading, and cherishing physical books, this has been a challenging journey. As the technology gets better, it has become easier though.

With my latest acquisition of the new Nook Glowlight (the one released at the end of 2013, not to be confused with the Nook SimpleTouch Glowlight which was its predecessor) this transition has become even easier to accept.

In the beginning, E-Books were read either on a Mac or PC, and the mobile hardware was pretty clunky. Today we have Retina iPads and very nice E-Ink readers. My latest Nook is E-Ink, and although my original Nook was also, this one is miles ahead.

It’s actually getting to the point where in many ways I’m preferring reading on my Nook versus a physical hardcover. Sure, this was always the case when portability was the main factor. “Hey, I can take ten novels with me on the plane, and it takes up less space and weight than one hardcover!”

But now I’m finding that the technology has improved to the point where even when the weight and size isn’t an issue, the experience is as good or better.

What factors are bringing about this change? Here they are, in no particular order.

  • Incredible reductions in size and weight. My new Nook weighs about the same as a moderate paperback, and about half of what a really think paperback weighs.
  • Higher resolution screen. It’s getting pretty close (~210dpi) to printed resolution. Close enough that it’s not obvious that it’s an electronic page rather than a paper one.
  • Frontlight for reading in the dark. The new Glowlight is pretty good, with only some mild darkening at the very top of the page. Fantastic for low-light situations. And since it’s front-light versus back-light like an iPad etc. it should have less of the sleep-impacting effects that have been reported for LCD displays.
  • No page-flip “flash” that previous generations of E-Ink typical had.

And then there’s the other factors that have been present for a while: The ability to carry hundreds of books, weeks of battery life, and (if reading a book purchased from Barnes & Noble) the ability to read those books on my iPhone or iPad with my place in the book being synced between the devices. Oh, and not having to try and hold a book open when eating lunch etc. is pretty nice as well.

I’m not ready to abandon my physical books just yet – nothing is going to replace that experience. But for my general reading, I think I’m about at the point where I no longer see switching to E-Books as a necessary compromise to accommodate our new less-burdened lifestyle, but as a pretty nice way to enjoy reading.


Get every new post delivered to your Inbox.

Join 1,567 other followers