Max Ogden | Open Web programmer
April 2019
Voxel.js Next
Check out the Voxel.js reboot
May 2016
Getting Started With Node For Distributed Systems
Where to get started with streams and peer to peer
July 2015
What's the deal with iot.js and JerryScript
Node.js will soon be running on tiny low power chips
July 2015
Electron Fundamentals
A quick intro to Electron, a desktop application runtime
May 2015
HD Live Streaming Cats to YouTube with the Raspberry Pi Camera
A how to guide
May 2015
Interdisciplinary Open Source Community Conferences
A list of community organized events
April 2015
Setting up HTTPS with a wildcard certificate and Nginx
How I set up HTTPS with Nginx
April 2015
A Month of Modules
Modules Mafintosh and I wrote this month
February 2015
Tessel Powered Plant Watering System
Make an HTTP accessible water pump
January 2015
Portland Fiber Internet
Review of 1Gb fiber from CenturyLink
January 2015
node-repl
An interactive console for node
January 2015
Nested Dependencies
Insight into why node_modules works the way it does
July 2013
Node Packaged Modules
Bringing NPM modules to the web
March 2013
Kindleberry Wireless
A Portable Outdoor Hackstation
January 2013
Bringing Minecraft-style games to the Open Web
A status report from the one month old voxel.js project
November 2012
A Proposal For Streaming XHR
XHR2 isn't stream friendly. Lets explore why and propose a solution!
October 2012
Scraping With Node
Useful modules and a tutorial on how to parse HTML with node.js
October 2012
Building WebView Applications
Things I learned while building @gather
May 2012
Fast WebView Applications
How to make web apps feel fast and responsive
April 2012
Node Streams: How do they work?
Description of and notes on the node.js Stream API
December 2011
Gut: Hosted Open Data Filet Knives
HTTP Unix pipes for Open Data
July 2011
Little Coders
Elementary school programming
Little Coders

Elementary school programming

My first foray into programming was in 1999 and happened accidentally inside the Starcraft custom level editor. I would sit, fully immersed in a paracosm, and create complex storylines that the player could play through, one small objective at a time. You could specify, for instance, that if a Zergling walks onto a particular platform then an event should trigger. You could subscribe other elements of the game to listen for events on that platform and perform other callbacks. I was getting exposed to event based publish/subscribe asynchronous programming without realizing it.

triggers inside a Starcraft scenario

triggers inside a Starcraft scenario

When my older brother asked me how to get his nine year old interested in programming, I told him to look for a programming environment that sacrifices practicality for imagination. Nine year olds aren't worried about vendor lock in or job security, they are only going to get hooked if the feel like they are playing a video game (in my case with Starcraft I was literally playing a video game). A good example of this mentality is Hackety Hack by _why the lucky stiff. Hackety Hack aims to "offer a place for plainspeople to tinker with code". Here is a wonderful video from the Art && Code Symposium where _why talks about his thoughts on programming education for youngsters and shows off Hackety Hack. Highly recommended viewing.

Near the end of the above video, _why describes a card game called Kaxxt that is designed to get little coders introduced to fundamental programming concepts. At it's core Kaxxt is about robots, lazers and pyramids. What nine year old wouldn't want to play that? When kids play this game they get exposed to ideas such as enumerability or thinking recursively, much in the same fashion that The Little Schemer tries to "present abstract concepts in a humorous and easy-to-grasp fashion". The Flash game Lightbot also comes to mind. In Lightbot, you visually program an animated robot through a series of puzzles. It seems that robots and lazers may be the key to connecting with today's youth.

Sadly, _why mysteriously stopped contributing to his projects at some point in 2009, leaving many orphaned works behind. His projects have been adopted by various open source community members. Steve Klabnik recently quit his job to courageously follow his heart and work on Hackety Hack full time. Similarly, Joey Hess then took the liberty of creating an alpha, playtestable version of Kaxxt that uses the pieces from the board game Icehouse. His port is called 'Kaxxt on Ice'

There are also a few notable academic programming education efforts. Greenfootis designed to teach kids Java. There is an entertaining series of postsfrom a programmer who tried teaching his nine year old daughter how to program using Greenfoot. Google has been lightly researching alternative curriculum designs through their Google for Educators program. As described by Google's director of education relations in the tech talk "Initiatives in Education", Google has been working on "integrating computing curriculum across K-12 core subjects". They also recently donated 2 million USD to Sal Khan's Khan Academy, which offers a staggering amount of free, digestible education lectures.

MIT's Scratch and Carnegie Mellon's Alice seem to each have years of development poured into them, as well as some friendly competitionand actual in-classroom testing. At first glance, both Scratch and Alice appear deep and involved, much like a complicated programming IDE. I would personally like to see more lightweight artistic interpretations, mockups and spikes of the PhD level programming educational research that is happening between Google, MIT, Carnegie Mellon and elsewhere. In the Hackety Hack Manifesto it is explictly stated that"IDEs are a disaster. Newbs should see only one non-scary window free of tree controls and pinned windows and toolbars. As such, we want to stay away from project files and makefiles, the trappings of an IDE."

As part of my fellowship with Code for America in 2011 I will be working with the city of Boston on software to improve public school education (more details here). I am excited at the prospect of getting to meet those working on Scratch at MIT or researchers from the Concord Consortium.