micha niskin

A selection of yaks I've shaved:

Project Description


A lisp implementation built atop ClojureScript. The goals are:

  • Eliminate the need to program in multiple domains (i.e. HTML markup, JavaScript, templating tools, etc.).
  • Provide a unified set of primitives, means of abstraction, and means of combination spanning the entire front-end stack.
  • Provide a unified evaluation environment, namespace, and lexical scope for all entities.
  • Eliminate callback-based event handling in favor of a push-based reactive system with first-class event streams, composable event handlers, and higher-order event handling.
  • Provide a robust mechanism for front-end library management.


A clientside UI framework implementing a declarative system of dynamic behavior specification. Frontend development is 100% HTML, with no need for site JavaScripts. Provides a unified means of abstraction and composition based on the DOM, so that complex user interfaces can be created from simpler universally composeable user-defined HTML components.


Wigwam is a PHP Remote Procedure Call framework designed for use as a backend for web applications. Backend application code is organized using PHP5 classes, etc. API classes can be added to the wigwam instance to expose them as a web service. Client library is included for JavaScript clients. API methods defined in PHP can be called from JavaScript in the client as if they were local functions. Exceptions can be thrown on the server and caught in the client. All arguments and return values are automatically translated into the native format. HTTP content negotiation, CSRF protection, etc. are provided out of the box.

Included with Wigwam is a full-featured, sane, extensible REPL—the only one in existence, maybe. It has tab-completion, history, doc comment/method signature display, recovers sanely from PHP fatal errors, runs in the global scope (so global variables are accessible from inside the REPL) but does not pollute it, and more.


Golf is a web application framework. It combines a clientside mvc with a sophisticated and easy-to-use component system. Features include full support for deep-linking, automatic google ajax crawling, commonjs-style libraries, encapsulated html, css, and js per component, automatic static or war file deployment.


A small rest client for bash or zsh. The goal is to reduce the amount of boilerplate involved with command-line rest requests. It is implemented as functions in the shell and works in the usual unix tools fashion. You can pipe data into, out of, and through resty in pipelines with sed, awk, perl, etc.


Jsawk is to json as awk is to text. This script takes json data as input and iterates through, filtering each object through the specified js code. The goal is to provide a means of robustly manipulating json data from the command line in scripts and pipelines. Features include support for js library loading, output to stdout, stderr, files, and more.


Imap-js is a js imap client. The idea was to use a pass-through proxy on the server to connect directly from the browser to the imap server, thereby rendering the serverside webmail application code unnecessary. This would simplify administration of the webmail system because there would be no serverside scripting or database. Security would be improved by the removal of the most common sources of exploitable bugs. Judicious use of html5 facilities for clientside storage and databases would greatly improve usability and performance vs. regular serverside webmail.


An edit-in-place jquery plugin that provides a simple, easy to use interface for editing html web pages. Originally written for a static, cloudfront-hosted McWebsite business.


This is the companion to jquery-eip, above. This plugin manages uploading of the page to S3 and cloudfront. The idea behind these plugins is to allow interactive updates to statically hosted websites on amazon's aws infrastructure, using js to modify the page in-place, and then updating it on aws via ajax post request. Very affordable and scalable website hosting is the result.


An extremely small jquery plugin that makes html tables sortable. Flexible, configurable, and simple to use, it's also pretty fast and responsive.


A perl script that translates a lemon (the SQLite parser generator) grammar file into a perl Parse::Yapp compatible grammar.