I am currently working as a software engineer at Zendesk, working on our pubsub/presence/status API and infrastructure and related front-facing features. It's kind of like what Pusher does, but different.

I was previously a doctoral student (Information Systems Science) at Aalto University School of Economics. I have a MA in Cognitive Science from Helsinki University, and am a United World College graduate.

  • Use my window manager
  • Follow me on Twitter
  • Connect via LinkedIn


Books I've written (freely available)

  • Single page apps in depth

    Single page web apps and good practices around writing single page apps

  • Mixu's Node book

    Node.js patterns and core libraries, JS gotchas, control flow and Socket.io


Code highlights github/mixu >>

  • nwm

    A dynamic window manager for X11 written with Node.js

  • view.json

    A decoupled, framework-agnostic minimal view layer (WIP)


  • minilog

    Client & server-side logging with Stream API-backends and counting, timing support

  • npm_lazy

    A lazy local cache for npm


  • gluejs

    Build CommonJS modules for the browser via a chainable API.

  • unbundle

    A set of small libraries for building web apps (WIP).


  • microee

    A tiny client and server -side EventEmitter for routing events.

  • nplay

    Console-based mp3 player with Winamp key bindings and jump-to-file.


  • radar

    High level API and backend for writing web apps that use push messaging

  • snapshot

    Serialize circular references, custom objects and other types not supported by JSON


  • token

    Time-limited, HMAC-based authentication token generation

  • pixiedust

    RESTful lazy chainable API generator


  • vectorclock

    A simple implementation of vector clocks in Javascript.


Recent blog posts blog.mixu.net >>

    npm packages I've written npmjs.org >>

    • gluejs. Build CommonJS modules for the browser via a chainable API.
    • miniee. An EventEmitter-like client and server side library for routing events w/regexps.
    • nwm. Dynamic window manager for X11.
    • pixiedust. RESTful lazy chainable API generator.
    • requireincontext. Wrapper to require() js files in a custom context.

    Open source - own

    • nwm (w: 165, f: 11). Tiling Node.js window manager for X11. [gh]
    • siobench (w: 18, f: 4). Basic socket.io benchmarking. [gh]
    • nwm-user (w: 4, f: 3). Custom nwm configuration. [gh]
    • nodeko (w: 4, f: 1). Node.js window manager for X11 (written at NodeKO 2011). [gh]
    • sioconfig (w: 3, f: 1). Socket.io HAProxy and Stunnel configs, and a test tool. [gh]
    • glue (w: 2, f: 1). Build CommonJS modules for the browser via a chainable API. [gh]
    • npm-lazy (w: 2, f: 2). A lazy local cache for NPM to make your local deploys faster. [gh]
    • nbar (w: 2, f: 1). Status bar for nwm. [gh]
    • controlflow (w: 2, f: 1). Node control flow patterns from my book. [gh]
    • objector (w: 1, f: 1). . [gh]
    • collections-lite (w: 1, f: 1). Simple collection classes for JS. [gh]
    • npm_push (w: 1, f: 1). NPM push API without the couchdb stuff. [gh]
    • espresso (w: 1, f: 1). Syntax highlighting theme for Sublime Text 2 and Guake. [gh]
    • nplay (w: 1, f: 1). Node frontend for mpg321 with Winamp key bindings.. [gh]
    • fake.io (w: 1, f: 1). Fake Engine IO server and client for running tests without starting a server. [gh]
    • tcp-loadbalancer (w: 1, f: 1). TCP load balancer for running load balanced scenario tests. [gh]
    • nodeunit-runner (w: 1, f: 1). A simple nodeunit test runner for invoking tests via node. [gh]
    • evlog (w: 1, f: 1). Message sequence logging for evented servers. [gh]
    • heartbeat (w: 1, f: 1). Combine multiple recurring timers to a single interval. [gh]
    • minimal (w: 1, f: 1). A router and http client - without unnecessary additions, modifications, or complications. [gh]
    • eventspy (w: 1, f: 1). Helper for writing event emitter / pubsub tests. [gh]
    • injector (w: 1, f: 1). . [gh]

    Open source - bitbucket

    • Kohana-translate (link). A translation management for Kohana 3. Allows you to provide web access to your application translation files to translators. Supports import/export/merge translate files for Kohana. Includes patch which automatically collects strings to translate during development.
    • Kohana 3 validation helper (link). Kohana 3 validation helper. Wraps forms in your custom markup, shows errors in correct context on form.

    Open source - forks

    • node-getrusage (w: 2). C++ Port of Unix getrusage for getting cputime, usertime and other process information
    • statsd (w: 1). Simple daemon for easy stats aggregation
    • onejs (w: 1). converts nodejs (commonjs) packages into single, stand-alone javascript files that can be run on web browsers
    • engine.io (w: 1).
    • browserbuild (w: 1).
    • node-taglib (w: 1). Simple taglib bindings to Javascript using node.js
    • socket.io (w: 1). Realtime application framework for Node.JS, with HTML5 WebSockets and cross-browser fallbacks support.
    • socket.io-client (w: 1). Sockets for the rest of us

    Closed source

    Presence and status infrastructure. A custom backend for Zendesk's presence and notification functionality, built on top of Engine.io.

    Chat infrastructure. A custom backend for Zendesk's chat, built on top of Socket.io.

    Git/Hg repository replay tool. A source code visualizer, where you can play back commits of any tracked repo via a slider online.

    Feedback tool. A dead-simple feedback tool built in 48 hours during Garage48 Helsinki. I wrote the high-performance backend in Node.js. [blog post]

    Online scholarship application web app. Supports writing applications online (e.g. essays, grades, attachments); writing teacher's and principal's recommendations, reviewing applications and creating various Excel exports and PDF exports. [link]

    YUI2 toolkit. An abstraction over Yahoo's User Interface (YUI) which simplifies interaction between YUI user interface elements and provides additional functionality for trees, tables and dialogs. Contains a portable search module which allows for easy creation of applications which require record search.

    Purchasing & inventory management web app. Intranet app for various business processes, including purchasing, inventory management, procurement planning etc.

    Human resources application. Allows users to fill in detailed (150+ item) profile via self-service portal. Supports PDF and Excel exports. Admin functionality for personnel reserve management, training management, contract creation, payroll reports. Sophisticated search options which allows all fields in the CV's to be searched with results updated in real time.

    Older work. Tons of it... apps for the Finnish Army, Helsinki University etc.

    Talks

    • On real-time at larger scale at NodeConf 2012 in Portland
    • On Node and Socket.io at Zendesk at Node.js Club SF on November 30th 2011 in San Francisco
    • On Node.js at Frontend.fi on May 11th 2011 in Helsinki
    gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.