Simon Gray's blog

My home on the web since and an occasional outlet for my thoughts.

I hate not knowing how to repair my bike

Alt text

I live in Copenhagen. Bicycles are my primary means of transportation. On occassion, e.g. when leaving the city, I will use public transportation. I don't have a car or even a driver's licence.

But I suck at repairing my bike(s). I want so bad to be good at it, but the couple of times I've tried to repair something that was broken on my bicycle, I either chickened out or broke it even more which just made the repair more costly.

And usually I will wait a while before I eventually give up and hand it over to the professionals, which just costs me extra money spent on public transportation as I go through this process of swallowing my pride.

I can do a few things, though:

  • I keep my chain relatively clean and well-oiled.
  • I pump it regularly.
  • I can replace or repair a punctured tube. My dad taught me this when I was a child.
Keep reading ↪

A hydrated SPA architecture using Rum

...with special guests: Transit and Pedestal.

To anyone who is not my future self: these are my notes on the architecture of a web application used to browse the next version of the Danish WordNet: an RDF graph and its associated ontologies.

At this point, I have several years of experience working with reagent which—I believe—is still the simplest way to create a 'reactive' single-page app (or 'SPA' for short) in ClojureScript. However, I had still not created a properly 'hydrated' SPA, which is the nomenclature used to describe single-page apps that are prerendered server-side and subsequently made to come alive in glorious, reactive dynamism on the client.

Reagent's strengths

Keep reading ↪

Clojure: the Lisp that wants to spread

NOTE: this blog post was originally published on my Github pages. At the time, it generated a lot of discussion on Hacker News.

From its humble beginnings, Clojure was always meant to be a “hosted” language. It is important to note that while the Clojure of today is definitely a tightly integrated JVM (Java Virtual Machine) language, there were always multiple implementations of Clojure.

The language was consciously designed with its host abstracted away, apart from the host-specific functions in the java namespace and in glimpses of Java interop code. The same held for the CLR implementation of Clojure for the .NET Common Language Runtime, released concurrently, with its very similar-looking interop code.

Interestingly, Rich Hickey made an implementation of Clojure in Common Lisp too, but abandoned it prior to the public announcement of Clojure.

Keep reading ↪