M. Chevalier-Boisvert, N. Gibbs, J. Boussier, S. Wu, A. Patterson, K. Newton, J. Hawthorn. YJIT: a basic block versioning JIT compiler for CRuby. In Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL), 2021
Our paper and the yjit-bench benchmarks were cited in S. Kaleba, O. Larose, R. Jones, S. Marr. Who You Gonna Call: Analyzing the Run-time Call-Site Behavior of Ruby Applications. In Proceedings of the 18th Symposium on Dynamic Languages (DLS), 2022.
It was also presented at MPLR in 2023:
Maxime Chevalier-Boisvert; Takashi Kokubun; Noah Gibbs; Si Xing (Alan) Wu; Aaron Patterson; Jemma Issroff: Evaluating YJIT's Performance in a Production Context: A Pragmatic Approach
In both cases I handled a lot of the benchmarking and raw data reporting, including some of the graphing and visualisation.
ChatTheatre for RWOT
2020-2021
Using SkotOS ChatTheatre, I put together the technical side of a virtual meeting space for Rebooting the Web of Trust, an online cryptography and distributed identity organisation.
SkotOS ChatTheatre
2020-2021
For 20 years, Skotos was a commercial MUD (massively multiplayer text-base game) company. I helped to open-source their code as ChatTheatre. I worked extensively on documentation and install/setup to make it reasonable for an external engineer to get everything ready for development.
Codefol.io Writing
2010-2021
My personal site was the primary focus
of my writing efforts from late 2019 to 2021, and has been active
much longer than that. I wrote
Ruby Weekly's most
clicked article of 2020, played with social media and generally increased
the yearly revenue of Rebuilding Rails (et al) in a variety of ways.
It wasn't profitable enough to remain full-time on it, but we all live and learn. I did roughly double the long-term passive income.
Ruby Mad Science was a simple
educational/courseware site that I set up as a replacement for some
MailChimp email classes I didn't like as well. I wrote
a blog series
on the writing of Ruby Mad Science as well. Long-term the dynamic
email reminders weren't popular and I took them down.
Rebuilding HTTP (self-published)
2023-present
Rebuilding HTTP is an ebook
leading the reader through building a small application server from
scratch, thus understanding the server side of HTTP and many of the
tools used to debug at that level.
Mastering Software Technique (self-published)
2019-present
2019, 2021
Mastering Software Technique, an ebook on
conscious practice to learn the practical, non-academic discipline of writing code.
My talk at RubyConf in 2019
is the short version.
I consider the book a great critical success and commercial failure. Those who love it,
love it. But it sells far fewer copies, at a lower price, than Rebuilding Rails.
YJIT Project at Shopify
2021-2023
I joined Shopify to work on YJIT, initially as its own project. It's now a part of CRuby.
I worked on the Rust port. I built
speed.yjit.org, yjit-metrics,
and related benchmarking, graphing and reporting software.
As I write this in 2023, yjit-bench is still the premier Ruby-language
benchmark in active service and continuing to increase its lead.
Ruby Fellow for AppFolio
2016-2019
I was AppFolio's Ruby fellow,
a sponsored full-time position working on measurement and tooling for the core Ruby language.
I recorded a series of interview podcasts
with a variety of software developers about
how they learned to program and what they thought of it. I asked a lot about
specific techniques (e.g. big-O, state machines) and how/whether they were
useful, and university versus boot camp versus self-taught.
Mike Dominick / The Automator Podcast
2020
Mike Dominick and I had a fun interview on The Automator talking about Rebuilding Rails, Mastering Software Technique
and general Ruby-age.
(<-- link)
Rails with Jason - New Book, Practicing Writing Software
I was the first-ever subject of a RubyInside Q&A session with Glenn Goodrich — I was posting content they liked pretty regularly when they decided to add this as a feature.
Rails 5x5 with Britt Martin
2019
Britt Martin and I spoke on the Rails 5x5 Podcast.
We talked about recent Ruby developments like Guilds and Ruby 3x3 performance, as well as
about conscious coding practice and coding studies.
(<-- link)
Rails with Jason - Computer Fundamentals
2019
Jason Swett had me on the
Rails with Jason podcast, originally to talk about my book Rebuilding Rails.
But as we talked about programming fundamentals, it drifted a lot
further into computer architecture and operating systems.
(<-- link)
Conscious Coding Practice: the Three Concrete Steps
2019
At RubyConf in 2019, I gave a talk on
how to improve coding as a practical discipline by conscious,
specific practice. This is very similar to my book
Mastering Software Technique
in both outlines and specifics.
(slides)
(<- YouTube link)
Six Years of Ruby Performance: A History
2019
My 2019 RubyKaigi talk was about using simple
Rails applications to measure Ruby's speed over the years.
Since these benchmarks were aimed at Ruby 3x3, it started from a
Ruby 2.0 baseline, aiming to measure toward the "3x faster" goal.
This talk introduced Rails Simpler Bench (RSB) as a contrast to the heavyweight, comprehensive Rails Ruby Bench.
I also gave this talk for Brighton Ruby 2019.
(rubykaigi page)(slides)Video link for Brighton Ruby
(<- YouTube link for RubyKaigi)
Faster Apps, No Memory Thrash (RubyKaigi)
2018
My 2018 RubyKaigi talk was about understanding
and optimizing your Ruby application's memory configuration. This is the talk
where I introduced the env_mem tool. The
slides were good enough that they got their own mention in
Ruby Weekly. I also gave the talk at
RubyConf
Malaysia in Kuala Lumpur.
(rubykaigi page)(slides)
(<- YouTube link)
Make Ruby 2.6 Faster with JIT (Southeast Ruby)
2018
I gave a talk
on Ruby 2.6 JIT in Nashville, at Southeast Ruby. As I write, the video is not yet
available.
After a year as AppFolio's Ruby Fellow, I spoke at RubyKaigi
with a summary
of the speed history of Rails by Ruby version. I assessed how fast current Ruby was
compared to 2.0. (rubykaigi page)(slides)
(<- YouTube link)
DAQRI Augmented Reality Smart Helmet
2015-2016
At DAQRI I was back-end services architect and team lead for a tools
and infrastructure team for their Smart Helmet product. The smart
helmet was designed for workplace safety, and we added monitoring,
system configuration and automation to support reliability and
auditability. Our infrastructure was AWS-based, using Puppet for
configuration management. Our team was about 50/50 infrastructure
tooling and app development in Ruby, with me doing both.
OnLive: Engineering Blog, Open-Source Software
2013-2015
While at OnLive, I scrubbed and open-sourced
older code, wrote and open-sourced new tools and started an engineering blog
while coordinating with legal about code and information release.
I wrote most
blog content and some of the open source code.
See the OnLive GitHub
repository and the
OnLive Engineering blog.
OnLive Analytics
2013-2014
I served as OnLive's head of Analytics — the old team was
gone before I arrived. I analyzed, documented and debugged the system, and then
began making upgrades while recruiting a team. The existing system was
enormous, and much cleanup work was replacing underused technologies
with smaller, simpler replacements. I also supported the Business
Intelligence team's needs for new data sources and infrastructure.
Technologies maintained and/or sunsetted included Pentaho Reports, Kettle, Coral8, Esper, InfoBright,
sharded MySQL, Grails, Java, Tomcat, Flash. Newer technologies used or
integrated with included Rails, ZenDesk, iPost.
Valhalla, a Ruby SOA Platform for OnLive
2013
I was brought in to be technical lead for Valhalla, a prototype to replace an existing
legacy allocation and scheduling system for back-end servers.
It used a novel dual-mode SOA/monolithic architecture
based on Olaf,
also written by our team. We attempted to use Cassandra for
geographically distributed sync, with mixed results.
Hastur, a Cassandra-Backed Monitoring System for Ooyala
2011-2013
At Ooyala, I co-architected
Hastur, a Cassandra-backed observability system, with Amy Tobey. It used
ZeroMQ transport and had front ends in Ruby, Go, Scala and C.
At peak, it pushed over 50,000 production messages/second.
Useful features included high-cardinality retrieval, automatic collection
and dashboards.
Analytics for Ooyala
2011-2012
I worked as a senior engineer on analytics for Ooyala's 'Backlot' asset management system.
We used Cassandra for storage, metrics/rollups and tagging.
DAQRI Technical Talks (Speaker, Organizer)
2015-2016
At DAQRI, I established a series of weekly
technical talks on relevant topics: distributed systems, reliability,
DevOps, Ruby, security. I gave about half the talks, and filmed and
edited all of them.
Avdi Grimm asked a few folks about recording a
guest episode of RubyTapas,
back before that was common. I got to be one of the earliest guest chefs!
Sorry, this episode is not free, so you'll need to subscribe to see it.
My wife and I delivered a talk on Sustainable
Ambition for Sebastian Marshall's
second GiveGetWin tour. It
covered how to succeed in large projects (writing books, running a marathon,
homeschooling children) when real life gets in the way.
I gave talks on Ruby concurrency (threads and processes),
Ruby app servers and Ruby HTTP app architecture at local meetups to recruit
new Rubyists to OnLive. I also arranged a private meeting with
Matz (Yukihiro Matsumoto, creator of Ruby) for OnLive while he was
in the US.
(slides)(slides)(slides)
At 2013's Golden Gate Ruby Conference, I was honored to deliver
a talk on building a simple ORM in Ruby called "The Littlest ORM." The ORM code was small
and simple enough that I showed and read through all of it from slides in a nice large font, in a
talk that clocked in under 30 minutes! I later gave the same
talk for the TorontoRB Meetup.
(GoGaRuCo video on YouTube)
Rack in Every Framework - writing
Rack endpoints and middleware, and integrating them in various
ways with various frameworks.
Hastur: Open-Source Scalable Metrics with Cassandra
2012
"Hastur: Open-Source Scalable Metrics with
Cassandra," from the
Cassandra Summit 2012(Video)
(Slides PDF)
The talk primarily covered our Cassandra schema. This was before CQL, and
some of the architectural decisions are specific to that era of Cassandra.
It's a decent example of how to
store a complex and highly-indexed time series in Cassandra.
Ruby Big Data Tools at Ooyala (GoGaRuCo lightning talk)
2011
Ruby Big Data Tools at Ooyala, given as a Lightning Talk
at GoGaRuCo 2011. It was a brief rundown of how
we used Hadoop, Cassandra and Logstash at the time.
Just Build Your Server on Rack (and the Five-Minute
Ruby Framework).
(YouTube video).
Given as an informal talk plus questions for The Ruby Hangout.
Building Ruby Castles in the Clouds
2013
Building Ruby Castles in the Clouds,
an interview with Sebastian Marshall
(text interview).
Sebastian runs a popular blog on self-improvement and strategy, and GiveGetWin.
The Five-Minute Ruby Web Framework
2012
The Five-Minute Ruby Web Framework.
Given as a Hacker Dojo lightning talk with slides.
Ooyala Development Process and Tools (new hire training, recurring)
RVM and Bundler at Ooyala
Ruby Performance and Profiling
Lessons from Glowworm
Using Hastur
Build a Gorgeous Web-App Dashboard in Under Ten Minutes
With Hastur::Rack
ZeroMQ, an Overview
Glowworm (intro, usage)
Design Reviews: Hastur, Chef for App Deploy
Consulting for Serpikko
2012
Serpikko (then called ScamArmour)
Part-time freelance work on ScamArmour's
prototype web site and Mechanize-based scraper. Pre-funding company, rescue job.
Ruby on Rails Associate Adjunct Professor, CMU West (Silicon Valley campus)
2011-2012
Carnegie Mellon University West
Office hours and tutoring in Ruby on Rails
for masters students in the Master of Software Engineering
program at CMU's Silicon Valley campus. Part-time.
I worked as an engineer at On-Site.com,
a SaaS web app for the multifamily
unit rental industry. On-Site had a Java app of long standing that we were converting to use
JRuby and Ruby on Rails.
I worked with the former PalmSource/PalmOS team
on the ACCESS Linux Platform, including
Tasks, Memos, Photos and Attention Manager. We worked in GTK+ and C on
Linux. An expanded multinational engineering team was managed from
California. Code quality was kept up using Coverity, which helped
immensely.
PeakStream, Inc.
2006 - 2007
At PeakStream,
now part of Google, I wrote CodeBaby, a Python template system for C and C++ source-code generation (and a few other projects.)
I'm also co-author of patent #8024708 (Systems and methods for debugging an application running on a parallel-processing computer system) from that same time and work.
Ultra-Fast Zoomable Graphics for SugarSync Mobile
2005 - 2006
For our Photos product, now called SugarSync,
I integrated
Kakadu's implementation
of JPEG2000 and prototyped the same with
LuraTech
as well.
I also handled scaling, zooming and cropping, for
which I wrote custom very fast fixed-point image libraries.
My implementation was shown off within Palm to demonstrate,
"hey, these new Windows phones have a lot of horsepower! Look
how fast the graphics can be!" Code ran on WinCE and Windows2000.
Our client apps team was two people - I focused on graphics and
custom image decoding.
Win32:
Windows Mobile:
TapWave Graphics Hardware Acceleration
2004 - 2005
Hardware acceleration support for the
TapWave
Zodiac, created by TapWave using PalmOS.
BroadCom Set-Top Boxes
2002 - 2003
Captioning APIs (CC, CGMS, WSS, TeleText) for
various BroadCom cable set-top boxes, including the now long-discontinued 97115 and 7110.
NVidia Graphics Drivers
2003 - 2004
Engineer on Linux NVidia graphics drivers for iTanium and Intel.
PalmOS SD Card Support
2000 - 2002
File system and launcher integration of apps
on SD cards for PalmOS (launched with m500-series.) I was on the
team of 4 engineers building this.
PalmOS HostFS
2000 - 2001
HostFS, a file-system emulator for the PalmOS
Emulator
RIPC, a system to generate CORBA-like pairs of proxies and stubs.
It used a Perl script to generate the code from C++ headers, including
inheritance information and additional keywords for timing and
data handling. This was used by NOW Solutions for embedded WinCE in-vehicle
tracking.
Callout Tools from a Highly Dynamic Language
1995 - 1997
As a student employee of CMU's Gwydion Project, I helped maintain
Melange, a C callout tool
for Dylan
Scarpe
2023-present
Scarpe is a re-creation
of _why's much older GUI library called Shoes. It's a GUI toolkit that
allows a Rubyist to portably, easily create local desktop GUI applications
with a configurable display back-end. The vast majority of initial work was
on the Webview back-end, followed by Wasm.
Scarpe was the result of an early prototype before me, followed by
Shopify Hack Days I was part of in early 2023, followed by intensive
later work of various kinds. I handled a lot of the Webview and Wasm
adaptation, general library architecture and a ton of testing —
always tricky in a GUI library. Nick Schwaderer gave a
Scarpe talk at Brighton Ruby 2023 that explains in more detail.
Shards of Faerie
2018-2019
A simple implementation of an Entwined-like choice-based game
engine, intending to put other simple games into it as well.
Open-source,
like nearly all my hobby projects.
Shards was partly an attempt to use Rails and ActionCable to
see how they held up for web game programming.
The server engine was built on EventMachine, an evented Ruby library.
No More Lost Data
2016
No More Lost Data is
a no-longer-for-sale text-and-video technical class on Rails Migrations and how to
avoid downtime, data loss and other problems for large or busy
production databases. (teaser video)
Rails Deploy in an Hour
2014-2015
Rails Deploy in an Hour is
a no-longer-for-sale text-and-video technical class on deploying Rails apps quickly and
easily on highly-scalable open-source tools. Normally the integration of
these tools can take days or weeks to set up — the class software
allows this in well under an hour using the open-source
Ruby Mad Science
software, also by me (note: no relation to the later re-use of the same
name as a courseware/educational site.)
Primary tools included Rails, Chef, Capistrano and Vagrant.
Ruby Mad Science (2014 version)
2014-2015
Ruby Mad Science is
MIT-licensed software to deploy a custom server for your Rails apps,
quickly, using Chef, Capistrano,
Vagrant and other tools. The setup takes under an hour for most apps,
but uses standard best-in-class open-source tools so you can scale out
later.
Note that this name was later re-used for an unrelated SaaS courseware/educational
site, which is unrelated to the 2014-era failed deployment software.
Octopress Bootstrap Sites
2014 to 2016
I redesigned Codefol.io and
severalproductsites to use Octopress, and
wrote several large batch jobs to reprocess Disqus comments
properly for Codefol.io. Eventually I switched to Middleman for the static site generator, though I kept Disqus.
Rebuilding Rails (self-published)
2012-present
2016, 2020
Rebuilding Rails, a video class and ebook on
building your new Rails-like framework from scratch — "Understand
Rails by building Rails." It's also one of the best sources
of documentation on the Rack framework, which can be difficult to approach.
I filmed and edited the videos. I wrote the sales site and all marketing campaigns plus incidental
code like payment processing integrations.
Rebuilding Rails has sold single-digit thousands of copies and is one of the few books
to help intermediate Rubyists become advanced Rubyists.
Rebuilding Rails was also taught as an in-person class at OnLive and AppFolio, and as a workshop at RailsConf 2019 that was the foundation for the video workshops, filmed in 2020.
It has been used for a number of book clubs, including
The Ruby Learning Center's streamed book club in 2022.
This portfolio. Initially this was an
exercise in frontend development like hashchange, jQuery and
templating rather than the server-side dynamic sites I was used
to. It has slowly changed into an appreciation of how much
easier modern Bootstrap is than old Bootstrap, and how much I can
improve my visual presentation skills by just writing less.
Shanna's Pizza
2010
I wrote Shanna's
Pizza, a simple game to teach young
children to use logic gates for
simple programming. Minimal text, for ease of use by pre-readers.
Written in C with SDL. Linux and Windows.
RailsGame, a Server-Push Experiment
2009 - 2010
RailsGame
(implementation,
example),
a Juggernaut-based approach to merging a persistent game server with
a dynamic web site, sharing content and permitting use of a web client
without constant AJAX polling. A dynamic, persistent browsergame engine.
CheapToad
2009-2010
CheapToad, a
very simple plugin to turn any Rails project into a HopToad
exception server with only a few lines of code! Uses Rails
Engines and a gemplugin to make this happen. Generates
an RSS feed of your app exceptions.
NeoArchaeology, an Early Success at Writing
2004, 2009
NeoArchaeology
was a column I wrote for Skotos back
in 2004. one
article got SlashDotted, which was gratifying. Edited by
Shannon Appelcline.
RailsFrame, for Server Automation and Configuration Management
2011
RailsFrame,
a deployment framework to set up a virtual Rails server with
Vagrant using a specified set of applications and packages.
Useful for things like server-push apps that often have
extensively dependencies on other processes running at the same
time.
WantMyJob
2007 - 2008, 2010 - 2011
WantMyJob, a web app for
trading suggestions about finding good employers. Ruby on Rails.
My first significant Rails app, rewritten multiple times as I
improved. It was useless in practice, but invaluable exercise.
RefactorIt
2010
Refactor It, a
very simple web app to let users upload snippets of code, and
suggest refactorings of other people's snippets. It was also a
simple Rails 3 app tutorial with blog post
(GitHub
repo for tutorial).
My Blog, the Early Years
2009 - 2010
Once called Blog.angelbob.com,
(ancient implementation),
it was a simple Rails-based blog, from scratch.
Includes route mappings to translate
from ancient WordPress entries,
Disqus comments, tags, and other
normal blog features. I mention it for content, not codebase.
This was some of the first content I carried forward with me, treating
it as something important to transition and to preserve.
DiffEQ, My First RubyGem
2006-2007, 2010
DiffEQ
RubyGem. Symbolic
manipulation, numerical integration, basic graphing of Ordinary
Differential Equations. Includes its own simple algebra package
and GNUplot output.
Phantasmal MUDLib for
DGD. I was the initial and primary author, primary maintainer until 2008.
I handed off control in 2008, but it was never successful enough to have
a user base.
DGD's Primary Documentation Site
1999 - 2008
I wrote the first significant
documentation site for the DGD
programming language. There was a many-years-old mailing list,
which I organized into a site with Perl-scripts and HTML. I handed off control
of the site in 2008, and it seems to be offline these days.
CrystalSpace Physics Code
1998
Early work on Physics code for
CrystalSpace,
a 3D library
Maslow, an AI Experiment
2008-2009
Maslow, a trivial needs-based AI for evaluating actions and predicting
futures.
Facelets
2007, 2010, 2012
Facelets,
a simple JavaScript Canvas webtoy for FireFox and Safari.
Later, one of my earliest forays into CoffeeScript as a rewrite.
SillyBand for MIT Scratch
2007
SillyBand, a very quick demo project for
MIT's Scratch. All media made
by me, very, very quickly.