About me
Hi
I've authored many Ruby gems in my career, these ones being the most significant:
- Shrine – file attachment toolkit for Ruby applications
- rodauth-rails – Rails integration for Rodauth authentication framework
- ImageProcessing – high-level wrapper for image processing with ImageMagick and libvips
- Down – streaming downloads using net/http, http.rb or wget
- sequel-activerecord_connection – Allows Sequel to reuse an ActiveRecord connection
- tus-ruby-server – Ruby server implementation of tus resumable upload protocol
- uppy-s3_multipart – Ruby HTTP component for resumable uploads to S3
I've taken over maintenance of some popular gems as well:
- MiniMagick – Ruby wrapper for the ImageMagick CLI
- sinatra-activerecord – provides Active Record integration for Sinatra
And for some gems I've had significant contributions:
- Rodauth – ruby's most advanced authentication framework
- Sequel – the database toolkit for Ruby
- Roda – routing tree web toolkit
- Refile – file attachment toolkit that's a successor to CarrierWave (core team member)
- http.rb – a fast Ruby HTTP client with a chainable API, streaming support, and timeouts (core team member)
- Async – an asynchronous event-driven reactor for Ruby
File Uploads
My primary focus in open source is around file uploads in Ruby. Having tried and been disappointed with other file attachment libraries in the past, I've decided to create Shrine.
Shrine brings many improvements over existing libraries:
- follows good design principles (no god objects, minimal state, modular design, decoupled from Rails)
- offers both processing up front (Paperclip, CarrierWave) and on-the-fly (Active Storage, Refile, Dragonfly)
- advanced direct uploads with Uppy (enabling resumable uploads)
- concurrency-safe backgrounding support
- low memory usage with streaming
As part of developing Shrine, I've created helper gems for processing, downloading, and resumable uploads with tus and S3. I've also created various extensions and storage implementations, you can find them in the shrinerb GitHub organization.
I've also been contributing memory optimizations to many projects, including http.rb, async, mimemagic, aws-sdk-s3, symmetric-encryption, and mongo.
Sponsorship
I would like to continue maintaining Shrine and its ecosystem, as I believe it provides significant value for building file uploads. However, I don't have the luxury of being paid for my open source work, so any kind of support I can get will help ensure a healthy continuous maintenance
If the existing tiers don't suit your needs, feel free to email me at janko@hey.com.
Featured work
-
shrinerb/shrine
File Attachment toolkit for Ruby applications
Ruby 3,014 -
janko/image_processing
High-level image processing wrapper for libvips and ImageMagick/GraphicsMagick
Ruby 732 -
janko/down
Streaming downloads using net/http, http.rb or wget
Ruby 900 -
janko/tus-ruby-server
Ruby server for tus resumable upload protocol
Ruby 193 -
janko/rodauth-rails
Rails integration for Rodauth authentication framework
Ruby 361 -
janko/sequel-activerecord_connection
Allows Sequel to reuse Active Record's database connection
Ruby 111