YJIT Research
The YJIT team submitted a paper to VMIL:

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
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
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
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.
FastRuby Posts
I wrote some Ruby 3 and performance posts for FastRuby, a Rails consultancy with a focus on upgrades and speed (link: all FastRuby posts by me.) In linking one of the posts, Peter Cooper called me the "king of running Ruby and Rails benchmarks." Several of the posts were mentioned in subject lines of Ruby Weekly and/or top-three links the week they came out.
Self-Conscious DGD
While working for Skotos on open-sourcing SkotOS for ChatTheatre, I found myself needing a lot more DGD documentation.

I wound up writing a short book on DGD code and how to write it called Self-Conscious DGD.
Ruby Mad Science
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)
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, 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
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
I was AppFolio's Ruby fellow, a sponsored full-time position working on measurement and tooling for the core Ruby language.

Computer Science: Just the Useful Bits Podcast
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
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 returned to Jason Swett's podcast to talk about Mastering Software Technique and how to become good at the practical skill of writing code. As is typical of his podcast we talked about a lot of other topics, including English etymology. He's a fun host :-)
(<-- link)
RubyInside First Q&A
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
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
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
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)
Play link for YouTube (<- YouTube link)
Six Years of Ruby Performance: A History
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
Play link for YouTube (<- YouTube link for RubyKaigi) RubyKaigi stage picture
Faster Apps, No Memory Thrash (RubyKaigi)
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)
Play link for YouTube (<- YouTube link) RubyKaigi stage picture RubyConf Malaysia picture RubyConf Malaysia picture
Make Ruby 2.6 Faster with JIT (Southeast Ruby)
I gave a talk on Ruby 2.6 JIT in Nashville, at Southeast Ruby. As I write, the video is not yet available.

Southeast Ruby site picture
Remote Ruby - JIT and Ruby 3x3
Jason Charnes and Chris Oliver had me on Remote Ruby to talk about JIT and about Ruby 3x3.
(<-- link)
How Close is Ruby 3x3? (RubyKaigi)
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)
Play link for YouTube (<- YouTube link) RubyKaigi stage picture RubyKaigi stage picture
DAQRI Augmented Reality Smart Helmet
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
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
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
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
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.
Overwatch Dashboard 1 Overwatch Dashboard 2 Overwatch Dashboard 3 Hastur Front Page Hastur Dashboard 1 Hastur Dashboard 2
Analytics for Ooyala
I worked as a senior engineer on analytics for Ooyala's 'Backlot' asset management system. We used Cassandra for storage, metrics/rollups and tagging.
Ooyala Backlot 1 Ooyala Backlot 2
DAQRI Technical Talks (Speaker, Organizer)
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.
Guest Chef for Avdi Grimm's RubyTapas
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.
GottaBeGood Tour Talk: "Sustainable Ambition"
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.
OnLive Recruiting Talks
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)
The Littlest ORM (GoGaRuCo 2013, TorontoRB)
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)
OnLive Talks on Ruby and Distributed Systems
Many talks on many topics at OnLive, including:
Rack in Every Framework (eLance, others)
Rack in Every Framework - writing Rack endpoints and middleware, and integrating them in various ways with various frameworks.
Picture of a slide
Hastur: Open-Source Scalable Metrics with Cassandra
"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.
Hastur architecture slide Hastur architecture slide
Ruby Big Data Tools at Ooyala (GoGaRuCo lightning talk)
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.
Ruby Big Data at Ooyala
The Ruby Hangout Rack Talks
The Ruby Hangout
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.
The Ruby Hangout
Building Ruby Castles in the Clouds
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
The Five-Minute Ruby Web Framework. Given as a Hacker Dojo lightning talk with slides.
Skillshares at Ooyala
Various skillshares and presentations at Ooyala:
Self and Instance Vars Ruby Gotchas
Consulting for Serpikko
Serpikko (then called ScamArmour)
Part-time freelance work on ScamArmour's prototype web site and Mechanize-based scraper. Pre-funding company, rescue job.
ScamArmour 1 ScamArmour 2 ScamArmour 3
Ruby on Rails Associate Adjunct Professor, CMU West (Silicon Valley campus)
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.
Ooyala Open-Source and Tooling
Various projects, usually open-source, including Hastur, Glowworm, Nodule, Nimrod, Tortoise, Sequel Rails Migrations, a documentation server, MapReduce Framework, Barkeep, Ecology, Termite. See Ooyala's GitHub repo for all the released projects
Glowworm control panel 1 Glowworm control panel 2 Documentation Server 1 Documentation Server 2
Replacing Java Incrementally with JRuby
On-Site Manager, Inc
A talk, "Replacing Java Incrementally with JRuby", about JRuby work at On-Site. Delivered at LinkedIn's campus. (video)
a picture of me speaking (link to YouTube)
2009 - 2011
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.
On-Site front page On-Site user search (dev)
Emblaze Mobile Operating System
2008 - 2009
Systems Americas, purchaser of PalmSource
At ACCESS, I co-architected a mobile phone OS/UX project called Emblaze First Else. This was powered by ALP, but involved a complete UI and graphics rewrite. We primarily used GObject (the basis of GTK+), Clutter and OpenGL.
Emblaze Else Emblaze Else Emblaze Else Early prototype hardware running ALP 3.0
ACCESS Linux Platform, a Successor to PalmOS
2007 - 2008
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.
ALP Screenshot ALP Screenshot 2 ALP Screenshot 3
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.
Windows Mobile:
TapWave Graphics Hardware Acceleration
2004 - 2005
Hardware acceleration support for the TapWave Zodiac, created by TapWave using PalmOS.
Tapwave Zodiac
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
A newer emulator.  The old one was blockier.
Automated Source-Code Analysis and Generation
1999 - 2000
NOW Solutions
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 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
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.
Trackless Sea
Trackless Sea, a PIXI.JS display server for TMX terrain files and graphics from the Liberated Pixel Cup. This was based on Surveyor, with a new game engine under the hood and a new display library partially completed.

The server engine was built on EventMachine, an evented Ruby library.
No More Lost Data
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
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)
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 several product sites 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)
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.
Surveyor, a CreateJS display server for TMX terrain files and graphics from the Liberated Pixel Cup. Graphics via Source of Tales.
Parallel Ray-Tracer (student project)
Parallel raytracer for a CMU computer graphics class. Group project. I wrote the distribution server and some of the renderer.
Navier-Stokes Fluid Simulation in JavaScript
Navier-Stokes fluid flow simulation in JavaScript, based on Jos Stam's GDC03 code and paper. I added a lot of controls and some minor modifications.
Click to play with it (<- Live Javascript Link) Screenshot Screenshot Screenshot
This Portfolio
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.
end-of-2018 redesign screenshot of the portfolio Screenshot Screenshot Ooh, recursion!
Shanna's Pizza
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.
Early screen 1 Early screen 2 Later screen 2 Later screen 2
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.
very early screenshot design diagram
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
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.
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.
Late 2010 screenshot Early 2010 screenshot 2008 screenshot 2007 screenshot
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.
2009 screenshot older top screenshot older bottom screenshot old post with Disqus form
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.
simple code excerpt simple graph output large Lotka-Volterra pred/prey graph small Lotka-Volterra pred/prey graph simple ruby code for Lotka-Volterra predator/prey graph
Phantasmal, an LPC MUD Library for DGD
1999 - 2008
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
Early work on Physics code for CrystalSpace, a 3D library
Maslow, an AI Experiment
Maslow, a trivial needs-based AI for evaluating actions and predicting futures.
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
SillyBand, a very quick demo project for MIT's Scratch. All media made by me, very, very quickly.