I love creating stuff, just a tool for myself, a small application for a friend, or bigger systems for clients.
When doing that, more than often I need some glue between applications or a small gear to make things work. I try to be as pragmatic as possible, so build small libraries or tools to help with that task.
Here is a non-exhaustive list of some of those tools I've created over the years.
You can visit my profile on GitHub and peek around for other projects not mentioned below.
Drift
Small CLI and library that provides SQL-driven database schema migration functionality. No DSL or ORM to learn, each migration contains only SQL statements necessary to transform your database.
It can be used as CLI or integrated in your application as a library.
This was born as the extraction from a larger project that uses SQLite3 as database, so it's currently limited to that adapter.
hydrofoil-crystal
Years of working with different versions of Ruby made a cautious of using a system-wide version. Was burnt so many times that extended that to my personal usage of Crystal.
I created hydrofoil-crystal as a way to consistently use a version of Crystal independently of the OS being used at that moment.
Its distributed as a container image (compatible with Docker or Podman) and it packs a series of tools that I use when developing, like multi-process launcher, automatic process restart on changes and necessary elements for static/standalone compilation of projects.
RubyInstaller
Let's be honest, Windows was never the strongest platform for Ruby. RubyInstaller helped change that and became the primary distribution used by projects like Vagrant, Bitnami, and many others. It uses MinGW (GCC and GNU tools for Windows) to avoid the need for Visual Studio.
Between 2007 and 2015: 52 releases and more than 4 million downloads made RubyInstaller the first option for Ruby developers on Windows.
While I'm no longer involved with the project, the RubyInstaller2 team took the baton and continued to build and support newer versions of Ruby.
rake-compiler
Born from the pain of having to submit patches for each Ruby gem out there, I created this tool trying to normalize the build and compilation step of C extensions used by several gems like Nokogiri, Puma, ffi, bcrypt, msgpack, sqlite3, and many others.
Because most of the Ruby developers creators of those gems didn't use Windows, rake-compiler included a functionality that allowed cross-compilation of gems from Linux or macOS to Windows. This process, along with CI configuration allowed gem authors to reduce their stress to support platforms like Windows.
gem-compiler
rake-compiler did a lot of things, and sometimes doing all that was not well received by some developers. With gem-compiler, I decided to take a different approach: not only reduce the number of patches and modifications needed to be sent upstream — to gem authors — but also simplify the compilation process on any platform, not just Windows.