Free-form version 0.2.0 released

We are very happy to announce version 0.2.0 of our form building library Free-form. This version includes: Started Bootstrap 3 support. Change API from :free-form/field to :free-form/input . Created example app to help test, exercise and develop the library: http://free-form-examples.carouselapps.com The Bootstrap 3 support means that you can have whole fields defined as succinctly as:


Prerenderer 0.2.0 released

We are proud to announce the release of version 0.2.0 of our ClojureScript library Prerenderer, a library to do server side pre-rendering of single page applications. In this release, we include: Changed the ClojureScript API to hide NodeJS details. New re-frame implementation that depends on re-frame 0.6.0 but not on a fork. Added an option to specify the working directory …

Review of Clojure Exchange 2015 London

Image of Bruce at Clojure Exchange 2015 London

I recently attended Clojure Exchange 2015 London, the conference organized by Skills Matter for Clojurians. Like many other attendees I was impressed by the quality of the talks and as a presenter, I was particularly pleased that only a few hours later my presentation, What is a Macro?, was already published, in video form, for everybody to see. Some presentations I …

Announcing Ninja Tools

These days we use tens if not hundreds of web apps for running our businesses: Email: Google Apps for Work, Outlook. Project Management: Trello, Basecamp, Asana. Issue Tracking: Jira, FogBugz, GitHub. Chat: Flowdock, Slack, Hipchat, Speak. Source code hosting: GitHub, Kiln, BitBucket. Error Reporting: Yeller, Bugsnag, Airbrake, Rollbar and a million others. When it comes to choosing a new app, …

Don’t forget to clear your client side state when logging a user out

When a user logs out from our web site, we are used to clearing the session and that’s it. When you are developing a single page application, you are likely to keep a lot of state on the client side, and that should be cleared too. For Ninja Tools, that meant going from the traditional re-frame initialize-db:

to having …


Bidi vs Silk

In previous blog posts I mention that Bidi and Silk are essentially equivalent. I don’t believe this anymore. I now prefer Silk and I can show you why with a little example. First, let’s define some routes:

When it comes to defining routes, I find both a bit cryptic. Bidi feels a bit easier to read but I found it …