Samuel Williams Friday, 31 January 2020

This month has been productive. I spent some time on the West Cost of New Zealand with my family enjoying a lack of internet and daily lake swimming.

Programming Dojo

A fruitful collaboration between Canterbury University, Courtney Bracefield and myself, we have updated the Programming Dojo, a website for school students to learn more about programming languages.

This site hosts a number of fun tools, including a register machine interpreter and a truth table generator. You can also download and print out the programming language posters.


Rack is a critical piece of infrastructure in most Ruby web applications. For almost 5 years, Rack has not had a non-patch level release. In the past two months, many useful pull requests have been merged. We have removed the website which was sevearly out of date, and started working on updated documentation.

As you can imagine, the recent v2.1 release which included many unreleased changes on the master branch, caused a bit of a headache, including breaking SideKiq and ActiveStorage. The next release, v2.2 will include almost all outstanding pull requests along with improvements to efficiency and memory usage.

Big thanks to Aaron Patterson who has managed the releases and Jeremy Evans who has helped triage issues and brought an extra dimension to the future of Rack.


This month saw the release of Falcon v0.35 which brings the new falcon host and falcon virtual commands.

This release incorporates updates to async-container, which provides abstractions for parallelism in Ruby using either multi-process (CRuby) or multi-thread (JRuby/TruffleRuby). Graceful reloading and restarting are supported, along with the systemd process readiness protocol for better system integration.

Falcon Host

This command is the designated entry point for hosting a web application in production. It opportunistically uses GC.compact and application pre-loading to reduce memory usage. It uses a falcon.rb configuration file which defines all services, which can include things like process supervisors, watchdog timers, background job processing, etc.

Falcon Virtual

Best practice virtual hosting of multiple applications requires a front-end proxy/load balancer, and a HTTP to HTTPS redirection. falcon virtual will launch and manage falcon proxy, falcon redirect, along with falcon host for each individual application.


This work is supported by my GitHub sponsors. If you are a company and you depend on Ruby, I invite you to support my work. I also provide commercial support agreements and contracting for businesses that want to improve their infrastructure using Falcon and Async.


Leave a comment

Please note, comments must be formatted using Markdown. Links can be enclosed in angle brackets, e.g. <>.