- Monday Calendar
- Node.js Modules
- Vim Plugins
Monday Calendar is a calendar and todo web app and service. Its uniqueness lies in its design — by handling todos and events together, it lets you plan out your day and responsibilities in a single place. Secondly, it has a concept of social or secondary events — things you want to be aware of, but don’t consider as part of your daily plan. Those are shown separately, at the bottom of the weekday. Monday Calendar also synchronizes with Google Calendar, Eventbrite and others, so work calendars, shared calendars and ticket purchases show up automatically. It also supports CalDAV, a calendar standard, which allows syncing any compatible desktop or mobile app to Monday Calendar. The iPhone, for example, comes with CalDAV support in its Calendar and Reminders app out of the box.
I think it’s got immense potential, but there’s work to be done to make it into a successful business.
Rahvaalgatus is an Estonian non-profit site for creating public initiatives, collecting signatures and sending them to the Estonian parliament (Riigikogu). It’s tied to the Estonian Collective Proposal law from 2014 whereby the parliament is required to review any initiative with at least a 1000 signatures. Some have ended up as amendments to legislation, some merely solved local problems. Rahvaalgatus was founded and is run by the Estonian Cooperation Assembly, a non-profit founded in 2007 by the Estonian President.
Being a tax-payer and donation-funded site, Rahvaalgatus’ source code was published in Oct 2017.
All of the libraries have tests written with my own Must.js.
J6Pack.jsLibrary to render JSX to HTML on the web or on Node.js. Works with Express.js. Minimal with no React dependency.Since .
HugML.jsAn XML parsing and serializing library based on Google's GDATA and BadgerFish conventions. Supports namespaces.Since .
FetchParse.jsFetch API mixin to buffer and parse response bodies. Supports media type patterns for content type specific custom parsers.Since .
FetchDefaults.jsFetch API mixin to set a default base URL and options. Functional and immutable.Since .
FetchFormify.jsFetch API mixin for urlencoding an object and setting Content-Type if unset. Functional and immutable.Since .
FetchJsonify.jsFetch API mixin for stringifying JSON and setting Content-Type if unset. Functional and immutable.Since .
JSON Stringify SafeLike JSON.stringify, but doesn't throw on circular referencesSince .
StandardHttpError.jsStandard HTTP error class for Node.js. Proper serialization, no bloat. Extensible.Since .
SyslogProtocol.jsSyslog (RFC 3164) parser. Works with RFC 3339/ISO 8601 timestamps. Since .
ElementFromPoint.jsA consistent cross-browser document.elementFromPoint function. Works around idiosyncracies of old WebKits et al.Since .
DDL.jsGets you a JSON Schema from PostgreSQL or SQLite3. Also supports arrays and default values. Use it for introspection or preparing your domain models like with Rails's Active Record.Since .
All of the modules have tests written with my own Must.js.
Heaven.js for SQLiteHeaven.js's Table Data Gateway for SQLite. CRUD API that parses and serializes your models.Since .
Flash Fiction.jsFlash messages middleware for Express/Connect with support for redirects and immediate use. Useful for informational or errors messages. Like Rails's Flash.Since .
SeleniumDOM.jsSeleniumDom.js is a mixin library for Node.js's Selenium WebDriver that adds DOM methods to Selenium's WebDriver and WebElement.Since .
Fetch/Off.jsFetch API polyfill and facade. Its request and response wrappers can be used separately: use fetch for request yet get back Node's Http.get response (IncomingMessage) for streaming.Since .
PgError.jsAn error class for Node.js that parses PostgreSQL's ErrorResponse format and sets human readable field names. Works with node-pg, too.Since .
Mitm.jsIntercept and mock outgoing Node.js network TCP connections and HTTP requests for testing. Intercepts and gives you a Net.Socket, Http.IncomingMessage and Http.ServerResponse to test and respond with. Super useful when testing code that hits remote servers.Since .
Syslogh.jsLog to your system's Syslog from within Node.js. Provides simple native bindings to
and syslog(3). Works on Node v0.10 up to v4 and beyond.Since .
Require GuardPrevent files and modules being required more than once. Helps with auto-reloaders or test runners that insist.Since .
As time goes on, I expect to open source more Node.js modules I've written in the past decade. If you'd like to be notified, your best bet now is to subscribe to my articles via Atom/RSS. Alternatively, you could follow me on GitHub, but I'd like to eventually move away from depending on centralized source code hosting.
Vim is the only editor where you've got to find (or write, in my case) a plugin to be able to close a file intuitively (see Bbye.vim below). In spite of that, I find Vim's modal editing to be superior to any other text editor. Its keybindings have made their way to my spinal cord and made it impossible for me to edit lengthy texts elsewhere. I keep hitting Escape.
Node.vimTools and environment to make Vim superb for developing with Node.js. Like Rails.vim for Node.Since .
Bbye.vimDelete buffers and close files in Vim without closing your windows or messing up your layout. Like Bclose.vim, but rewritten and well maintained.Since .