Try Firefox

Since Microsoft officially announced that they will switch Edge’s rendering engine to Chromium, many people have written about how this poses a danger to the future of the web. I’m not going to repeat those same arguments, as I feel others have done a good job of it. What I want to do is urge you to try Firefox for a couple of days this week. That’s it. Give it a try.

Advent of Racket 2018

I decided to do this year’s Advent of Code in Racket and stream the whole thing. We’ll see how far I make it (getting up this early is rough!), but so far I finished day one. The code is here and the playlist for the recordings is here.

If you want to get notified as soon as I jump on to start streaming, you can follow me on Twitch.

Announcing geoip

I released geoip today. It’s a Racket library for working with MaxMind’s geolocation databases. It’s got a tiny API surface (3 functions!), but it should be useful to anyone needing to do geolocation in Racket. As always, check it out and let me know what you think! BTW, I streamed the whole process on Twitch so, if that’s your thing, you can check out the recordings here.

Announcing net-ip

I released net-ip – a small Racket library for working with IP (v4 and v6) addresses and networks – today. I needed this to be able to work on another library I’m going to release at some point in the future for doing geo-location based on Maxmind’s databases. Check it out and let me know what you think!

Announcing component

I released component the other day. It’s a Racket library for managing the lifecycle of stateful objects in long-running applications and for doing dependency injection. It was inspired by the Clojure library of the same name by Stuart Sierra. Check it out and let me know what you think! P.S. Expect more Racket libraries from me in the coming weeks and months. I’m really enjoying the language so far!

Announcing cursive_re

I released cursive_re today. It’s a tiny Python library made up of combinators that help you write regular expressions you can read and modify six months down the line.


I’ve been playing around with Racket every chance I got since early September of this year. This post is going to serve as a sort of experience report of my foray into Racket so far.

Prometheus with Molten

molten has built-in support for exporting the following Prometheus metrics: http_request_duration_seconds{method,path} – a histogram of the request duration percentiles by request method and path, http_requests_total{method,path,status} – a counter of the total number of requests by method, path and status, and http_requests_inprogress{method,path} – a gauge of the number of requests in progress by method and path. Let’s say that you have a basic molten app. Something like this: 1 2 3 4 5 6 7 8 9 10 11 from molten import App, Route def index(): return {} app = App( routes=[ Route("/", index), ], ) To start tracking metrics, add prometheus_middleware to your app’s middlewares list:

Announcing Molten

Today marks the first public release of molten, a modern API framework for Python I’ve been working on over the past couple of weeks. Check it out and let me know what you think!