How to Survive the Zombie Apocalypse: Software Engineering for Web Startups

Lecture (slides). WIP…

What the WWW is all about, SE principles specific to web apps development, recent failures and implications for startups, and maybe some forecasts?


Drupal → WordPress: Migrating Database, URLs, Generating Posts…

The long and winding road of (low-level) migrating content from a Drupal website to WP. Workplan: MySQL and SFTP → SQL → CSV → scripting → import plugin → theme hacking…


DOM Templating and Interpolation



bson2json: just a quick & dirty converter, BSON→JSON, and rudimentary schema analysis, for preparing to migrate a MongoDB dump to LevelDB.


Hacked Teacup: Double Macchiato

Teacup (HTML templating in CoffeeScript) is a fantastic DSL (domain specific language). Less “specific” than Jade, but it’s a programming language, so the potential for extending is exciting! I’ve been writing “helpers” to abstract HTML details, make my templates a higher level DSL.

But, although Teacup has nice facilities for extendibility, it’s restricted by its rendering architecture: a single pass, depth first recursion, immediately rendering CS→HTML. This limitation obviously prevents post-processing of nested contents by wrappers higher up the call stack, given, of course, we don’t want to manipulate/parse rendered HTML — that would smell wrong, and require a complex and slow full parser… which really misses the point.

Two use cases I’m sorely missing: patching any nested content to, eg, provide defaults, and freely composing helpers, eg:

# Allow wrapping immediate calls:
mockup initially_hidden screen '#home'
# But also support wrapping callbacks:
mockup ->initially_hidden ->screen '#home'

(First form calls inner, then wrapper; second form — reversed order.)

Thus, Teacup must be hacked!


Constitution: a Method

Systematic web apps development (notes towards…). The method I follow with my still work in progress Constitution stack.

Bmeter: Pure Client Side Single Page App

Hackathon, yay!

I was tasked with upgrading the Bchirometer, a simple single page app (SPA), to a narrow (first?) UI, given a bunch of sketches in PNGs.

Rewriting, really. Repo was a mess of drafts, and… nu.

App uses Open Knesset‘s data, but otherwise it’s independent — separate (sub)domain. Not even same servers: it’s on S3, because pure client side, aka static.

(I still (it’s 2015!) can’t understand why open/activist projects use obsolete technologies: Django, Bootstrap, and other, unmentionable, crap. What would Ivan Illich have said? I’m still revolting against “worse is better“.)


Stepping Into Node Streams Twice

CLI for transforming some JSON — Chromium’s bookmarks, specifically — into HTML, for quick (and dirty) publishing here.

And while we’re at it, let’s ponder Node streams again?


LevelUP: Promises, Promises…

Promisifying LevelDB in Node to escape callback hell…



Notes towards…