Been Busy in 2015

Haven’t had too much time this year for this blog. I’ve been busy working to launch in Seattle and spend most of my time writing code, or worrying about business these days.

It’s really hard to know if I’ll succeed this time with I do know that the same set of issues that I set out to solve in 2000 once and for all still plague the software industry systemically.

It’s all pretty complicated (the tech, the people, the business). Still, it matters to me that the world stops wasting so much damn time re-writing crap software when (a) re-use can be engineered into the process [1] (b) the saved time can be spent to solve the worlds truly pressing issues.

I wrote an essay about it earlier this year that I published on Medium:

Software design should be a highly-automated collaboration between men and machine.

Find me most days heads-down at the Impact HUB Bellevue. And online at:


[1] If you own a smart phone, you’re holding in your hand the manifestation of a design and engineering process carried out virtually by thousands of people all over the world who ensured that the system was largely perfect before any of the semiconductor chips were ever even manufactured. That same sort of efficiency will come to the world of software. It’s just a matter of time. And, we’re a whole lot closer than people imagine 🙂

Posted in General | Leave a comment

Protected: Mt Defiance Hike

This content is password protected. To view it please enter your password below:

Posted in General

Furnish Your Seattle Start-up on a Budget

Here’s what I dug up for sources of used office furniture in greater Seattle.

Particularly interesting is the City of Seattle’s surplus warehouse.

I’m looking for a new desk for a whole bunch of monitors…

Posted in General | 2 Comments

Node.js App Debugging

Install node-inspector:

npm install -g node-inspector

Start the node-inspector server:

node-inspector &

Start your node app under node-inspector debugger:

node --debug your/node/program.js

Break on entry:

node --debug-brk your/node/program.js

Attach Chrome debugger locally:

chrome &

Posted in Compute, Internet, Open Source, Software | Tagged , , , , | Leave a comment

Link: Lua scripting for Redis

Useful links with information on writing Redis extensions in Lua:




Posted in Compute, Internet, Open Source, Software | Tagged , , , , , | Leave a comment

Chevy misses ford, sinks.

Springtime in the Snoqualmie River Valley:


Please support the Snoqualmie Valley literacy program.

I couldn’t drive by this scene w/out stopping to take a photo.

Posted in Funny Shit | Tagged , , | Leave a comment

You Can’t Connect the Dots Looking Forward

Printed and hanging over my workstation:

“You can’t connect the dots looking forward. You can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something; your gut, karma, life, destiny, whatever. Because believing that the dots will connect for you down the road will give you the confidence you need to follow your heart even when it leads off the well-worn path. And, that will make all the difference.” – Steve Jobs


Posted in Inspiration | Tagged , | Leave a comment

Object Namespace Manager on node.js

I’ve been porting the Object Namespace Manager library (formerly ONMjs, now simply onm) from a global namespace implementation to CommonJS and working on a Grunt-based build strategy. Here’s what I need to do:

  • Maintain the onm source code, in CoffeeScript, using a single module format. I’m thinking this will be CommonJS. But, we’ll see.
  • Generate debug and release CommonJS packages for node.js/npm.
  • Generate debug and release packages for the browser using (likely) AMD/RequireJS, and possibly a global namespace option for pure HTML clients that leverage an AppCache manifest for this JavaScript.

onm on node via npm

Going forward, the Object Namespace Manager (onm) will be distributed via the npm package for node.js.

npm install onm

Or, to save onm as a dependency in your package.json:

npm install onm --save

using onm on node

// index.js
var onm = require('onm');
var dataModel = new onm.Model({ jsonTag: "testNamespace" });
var dataStore = new onm.Store(dataModel);
console.log(dataStore.toJSON(undefined, 2));

… will print to the debug console log:

  "testNamespace": {}

consuming public onm data models via npm

In essence an onm data model declaration defines a data exchange protocol. To make your data exchange protocol public, package your onm data model declaration as a node.js package and publish it via npm.

For example, I’ve published the node package onmd-scdl for a complicated data model called Software Circuit Description Language (SCDL). The details aren’t important. What is cool is how easy it is for you to work with SCDL data now.

Do a little setup:

mkdir test && cd $_
npm install onm
npm install onmd-scdl

Now a little code:

// index.js
var onm = require('onm');
var scdl = require('onmd-scdl');
// Default construct a SCDL object store.
var scdlStore = new onm.Store(new onm.Model(scdl.DataModel));
console.log(scdlStore.toJSON(undefined, 2));

… execute the node program:

node index.js

… prints the following JSON to the console log:

  "scdl": {
    "catalogues": {}

Generically, that is without regard to the data model, the onm package provides object create, remove, enumerate, traverse, introspect, address, observation, and and serialize services via its API (

So there’s a lot more that we could have done in the above example.

Here’s a more complicated example that leverages the onm package API to affect data model introspection and initialization of test SCDL data set.


onm in the browser

I’m between solutions for the browser as of this writing. The current onm package build (based on Grunt) produces a single-file JavaScript file for use in the browser via grunt-browserify. I have not tested this yet. And, I may never.

I’m looking at uRequire as a possible way to achieve the single source code base, multiple build target scenarios I have in mind of onm package’s Grunt build.

Posted in Compute, Internet, Open Source, Software | Tagged , , , , , , , , , , | Leave a comment

Weird Chome/Chromium Rendering Problems in KDE 4.11.2 under VirtualBox

I recently upgraded to VirtualBox 4.3.4 on a Windows 7 host machine and noticed a bunch of strange rendering problems with Chrome/Chromium in Debian and Kubuntu Linux guest instances running the latest stable KDE 4.11.2.


  • Whenever Chrome opens a modal dialog box, it is rendered _below_ the active window (i.e. not visible). Because it’s modal, Chome appears to hang.
  • When the modal dialog is displayed, dragging the outer frame of the Chrome window shears: the tab remains in-place during drag and the frame moves. Releasing the drag snaps the client area of the tab back into the correct coordinates making the previously invisible modal dialog visible.
  • This same “shearing” (due to what I believe is a Z-order bug) is manifest in drop-down menus, and also when moving other non-Chrome app windows over the tab client area of a running Chrome instance. The client area of the active tab appears to remain pinned at the top of the Z-order.

I tried re-installing the VirtualBox guest additions, and even switched Linux trying to get out from underneath this problem. Finally, I tracked down some useful information:

The relevant tip is to modify the google-chrome.desktop file to add the –blacklist-accelerated-compositing option to the end of the exec lines (see first link above for details).

This is preferable to completely disabling VirtualBox 3D acceleration. I’ve only seen this problem with Chrome/Chromium (so far).

Posted in Compute, Software | Tagged , , , | 1 Comment

Baseline Web Development Environment on Debian 7.2.0

Installed a fresh copy of Debian 7.2.0 in a VirtualBox VM and am gong through the process of setting up a web development environment on top of this Linux distribution. FWIW, I like KDE and am using it instead of Gnome on Debian.

I’ve already installed Chromium browser. Also, if you’re new to Debian and wondering WTF Firefox, it’s Iceweasle (should be perfectly obvious right?) Google it if you’re curious. I was.

Step 0: Become member of sudo group

As root, adduser username sudo

If su’d, exit, logout/login user to get sudo group priviledge.

Step 1: Node.js

Node.js is too fast moving for Debian package support so you need to do a little work. Helpful stackoverflow thread:

I’m following the instructions here: Credit: Sekati

sudo apt-get update && apt-get install git-core curl build-essential openssl libssl-dev
git clone
cd node

# 'git tag' shows all available versions: select the latest stable.
git checkout v0.10.23

# Configure seems not to find libssl by default so we give it an explicit pointer.
# Optionally: you can isolate node by adding --prefix=/opt/node
./configure --openssl-libpath=/usr/lib/ssl
make test
sudo make install
node -v # it's alive!

# Lucky us: NPM is packaged with Node.js source so this is now installed too
# curl | sudo sh
npm -v # it's alive!

… which works like a charm.

Note: I’m seeing a single failure in the make test step currently (64-bit Debian and Ubuntu-based distros). I’m not sure what the impact of this is. Seems like the issue is known:

Step 2: CoffeeScript

sudo npm install -g coffee-script

Note: You might be setting up a new VM? Better make sure that that your ~/tmp directory ownership is correct; if the first use of ~/tmp is as root then it will be created with root ownership and later when you try to npm install later you’ll get an EACCES error…

Step 3: Emacs

because old habits die hard

sudo apt-get install emacs

Step 4: Yeoman

… and follow the directions remembering to sudo all those npm install -g ‘s!

This will get you Yeoman, Grunt and Bower installed.

Edit: Glad I took the time to write these steps down because when I came back this AM to continue on, I hit a nasty unresolved bug in VirtualBox 4.2.18 r88780 that made the saved VDI boot media inaccessible.  The only way to work-around was to loose the latest VM state and revert per directions posted here:
^— possible fix for annoying rendering problems with Chrome/Chromium under KDE executing in latest VirtualBox 4.3.4 (works for me).

Posted in Compute, Internet, Open Source, Software | Tagged , , , , | Leave a comment