Speaking
I am scheduling limited speaking engagements for 2017, if you're interested in having me speak at your event let's talk.
Writing
Cryptozoologist as password generator: is this really a good idea...?
September 01, 2017Honestly I never knew I needed to generate so much random text until I had a random text generator all my own. Ever since I wrote Cryptozoologist, I seem to have a lot more reasons to lorem ipsum it up. pygmy-puff-jumper-polar-drift
? I mean, obviously. But it got me thinking: could you use Cryptozoologist as a random password generator? And if you could, how … terrible of an idea was it?
Modules and self in Ruby
December 06, 2016I love modules in Ruby: they’re like little folders for your code (ok, well, sometimes they are actually representative of folders in your code). It took me awhile to get comfortable using them, particularly because the concept of self
can be difficult to understand at first. Here’s a quick overview of extend
, include
, and self
as they pertain to modules in Ruby.
Testing common functionality across Ruby modules (and classes)
December 05, 2016One of my favorite things to do when writing tests is find little ways to write fewer tests but still have the same test coverage. While working on Cryptozoologist, a Rubygem I use to teach gem writing workshops, I utilized a few simple tricks to do this.
Configurable Ruby gems: Custom error messages and testing
March 31, 2016Previously, I’ve written about writing a Ruby gem with options for configuration. This is a really great thing to offer your gem users for a number of reasons, but how can we make the interface more helpful to our users? Things like custom error messages for configuration errors and solid testing are two easy ways to get started!
Rails: Using Active Model Serializer with POROs (without Active Record or Active Model)
February 07, 2016Recently I was working on a Rails application with non-persisted models (aka plain old Ruby objects). We didn’t need a database, which means we didn’t need Active Record either. We opted not to use Active Model, either. We didn’t need most of the stuff...