- [Porting a Discord Bot to Microsoft Teams, Entirely With AI](/2026/09/16/porting-strata-to-microsoft-teams-entirely-with-ai.html)
- [Standardizing Exception Message Style in Ruby](/2026/09/05/standardizing-exception-message-style-in-ruby.html)
- [Adventures in Daylight Saving, Norfolk Island, and Time Zone Math (in Ruby)](/2026/08/28/adventures-in-daylight-saving-norfolk-island-and-time-zone-math-in-ruby.html)
- [Benchmarks Are Free Now](/2026/08/15/benchmarks-are-free-now.html)
- [Ruby Instance Variables Are Not Inherited (and Why That Breaks Your DSL)](/2026/08/14/instance-variables-are-not-inherited-and-why-that-breaks-your-dsl.html)
- [Generating AI Descriptions of Automated Pull Requests](/2026/08/11/generating-ai-descriptions-of-automated-pull-requests.html)
- [Safely Passing Ruby Variables to JavaScript in ERB](/2024/10/30/safely-passing-ruby-variables-to-javascript-in-erb.html)
- [Writing a Channel Slack Bot with Granular Permissions](/2024/06/30/writing-a-channel-slack-bot.html)
- [Migrating Classic Slack Ruby Bots to Granular Permissions](/2020/11/30/migrating-classic-slack-ruby-bots-to-granular-permissions.html)
- [Dup, Don't Modify Input Hash Parameters in Ruby](/2020/11/11/dup-dont-modify-input-hash-parameters-in-ruby.html)
- [Comparing Version Numbers in Ruby](/2020/07/16/comparing-version-numbers-in-ruby.html)
- [Writing a New OpenWeatherMap.org API Ruby Client](/2020/05/17/writing-a-new-openweather-ruby-client.html)
- [Handling of HTTP Headers in Grape with Rack and Rails](/2019/07/06/handling-of-http-headers-in-grape-rack-rails.html)
- [Solving Slack-Side Disconnects in slack-ruby-client](/2019/03/04/solving-slack-side-disconnects-in-slack-ruby-client.html)
- [Writing a New Strava API Ruby Client](/2018/11/27/writing-a-new-strava-api-ruby-client.html)
- [Implementing Geolocation with a Custom GraphQL Scalar Type in Ruby](/2018/09/04/implementing-geo-location-with-a-custom-graphql-scalar-type-in-ruby.html)
- [Auto-Publishing Strava Runs to Github Pages](/2018/02/17/auto-publishing-strava-runs-to-github-pages.html)
- [Google Finance Web API Ruby Client](/2017/12/30/google-finance-ruby-client.html)
- [Generating and Handling Errors in GraphQL in Ruby](/2017/10/30/generating-and-handling-errors-in-graphql-in-ruby.html)
- [Building and Consuming a GraphQL API with Ruby on Rails](/2017/10/23/building-and-consuming-a-graphql-api-in-ruby-on-rails.html)
- [Grape Framework 1.0 Released](/2017/07/03/ruby-grape-1.0-released.html)
- [The Demonic Possession of Hashie::Mash](/2017/02/24/the-demonic-possession-of-hashie-mash.html)
- [How To Test Delayed Jobs](/2015/11/02/how-to-test-delayed-jobs.html)
- [Lazy Each in Ruby MRI vs. Rubinius](/2015/08/31/lazy-each-in-ruby-mri-vs-rubinius.html)
- [The New Ruby Grape](/2015/08/04/ruby-grape.html)
- [Getting Things Done with Mongoid 5](/2015/07/24/getting-things-done-with-mongoid-5.html)
- [ActionMailer Integration Testing with Email-Example-Spec](/2015/04/07/email-example-spec.html)
- [Designing a Hypermedia API with Grape & Roar](/2014/11/05/designing-a-hypermedia-api-with-grape-roar.html)
- [Taking Over Someone Else's Open-Source Projects](/2014/09/20/taking-over-someone-elses-open-source-projects.html)
- [Syntax Highlighting in Markdown Content with Recarpet, Coderay and Rails](/2014/08/31/syntax-highlighting-in-markdown-content-with-recarpet-coderay-and-rails.html)
- [Golden Gate Ruby Conference 2014](/2014/07/18/golden-gate-ruby-conference-2014.html)
- [Anatomy of a Ruby Gem: Grape](/2014/06/23/anatomy-of-a-ruby-gem-grape.html)
- [Ruby Enumerable Detect with Value](/2013/12/21/ruby-enumerable-detect-with-value.html)
- [Custom RSpec Meta Tag Validator](/2013/12/13/custom-rspec-meta-tag-validator.html)
- [ld: library not found for–lXext installing RMagick on Mavericks](/2013/11/24/ld-library-not-found-forlxext-installing-rmagick-on-mavericks.html)
- [Grape Mounted behind Goliath](/2013/10/20/grape-mounted-behind-goliath.html)
- [Making HTTPs Requests in Ruby & JavaScript w/ Node.js](/2013/09/30/making-https-requests-in-ruby-javascript-w-nodejs.html)
- [Evolving APIs using Grape API Versioning](/2013/07/19/evolving-apis-using-grape-api-versioning.html)
- [Being Helpful with Ruby Exceptions and Error Messages](/2013/05/15/being-helpful-with-ruby-exceptions-and-error-messages.html)
- [Your First Ruby Gem](/2013/05/15/your-first-ruby-gem.html)
- [Grape vs. Poncho](/2013/04/06/grape-vs-poncho.html)
- [Grape 0.4.0 Released w/ Stricter JSON Format Support & More](/2013/03/17/grape-040-released-w-stricter-json-format-support-more.html)
- [Should you use 'Should' in RSpec Examples?](/2013/01/31/should-you-use-should-in-rspec-examples.html)
- [Losing Control to the Heroku PaaS](/2012/12/14/losing-control-to-the-heroku-paas.html)
- [Measuring Performance in Grape APIs w/ NewRelic RPM](/2012/12/03/measuring-performance-in-grape-apis-w-newrelic-rpm.html)
- [TaxCloud: SOAP Service Integration in Ruby](/2012/11/27/taxcloud-soap-service-integration-in-ruby.html)
- [Slow Migration to Mongoid::Slug 2.x](/2012/11/22/slow-migration-to-mongoidslug-2x.html)
- [Wrapping Responses with Grape and Rack](/2012/07/05/wrapping-responses-with-grape-and-rack.html)
- [GoRuCo 2012: From Zero to API Cache w/ Grape & MongoDB in 10 Minutes (Video)](/2012/07/01/goruco-2012-from-zero-to-api-cache-w-grape-mongodb-in-10-minutes-video.html)
- [How Not to Rewrite Everything](/2012/05/03/how-not-to-rewrite-everything.html)
- [Grape 0.2.0 Released](/2012/03/29/grape-020-released.html)
- [Paging and Iterating Over Large Mongo Collections](/2012/03/28/paging-and-iterating-over-large-mongo-collections.html)
- [How To Convert Numbers Into Words in Ruby (with numbers\_and\_words)](/2012/03/23/how-to-convert-numbers-into-words-in-ruby-with-numbersandwords.html)
- [How Long Does it Take to Create a 12 Lecture, 8 Week Course](/2012/03/14/how-long-does-it-take-to-create-a-12-lecture-8-week-course.html)
- [Crafting a Ruby on Rails Course for Developers](/2012/03/14/crafting-a-ruby-on-rails-course-for-developers.html)
- [Watching Rack Application Changes with Guard-Rack](/2012/02/23/watching-rack-application-changes-with-guard-rack.html)
- [Updating Devise Trackable Last User Sign-In Time with Devise Rememberable](/2012/02/08/updating-devise-trackable-last-user-sign-in-time-with-devise-rememberable.html)
- [CarrierWave: DelayJob-Processing of Selected Versions, Revisited](/2012/01/31/carrierwave-delayjob-processing-of-selected-versions-revisited.html)
- [Testing w/ Analytical Gem and RSpec](/2012/01/30/testing-w-analytical-gem-and-rspec.html)
- [Grape API Mounted on RACK w/ Static Pages](/2012/01/30/grape-api-mounted-on-rack-w-static-pages.html)
- [Paginating w/ Mongoid 2.4.0, MongoMapper and Kaminari](/2012/01/15/paginating-w-mongoid-240-mongomapper-and-kaminari.html)
- [Warning: Toplevel Constant XYZ Referenced Admin:XYZ](/2012/01/08/warning-toplevel-constant-xyz-referenced-adminxyz.html)
- [Fabricating Spec Failures](/2012/01/06/fabricating-spec-failures.html)
- [Blame it all on MongoDB](/2011/12/20/blame-it-all-on-mongodb.html)
- [Grape vs. Webmachine](/2011/12/14/grape-vs-webmachine.html)
- [Grape: Describing and Documenting an API](/2011/12/11/grape-describing-and-documenting-an-api.html)
- [Pushing Assets to S3 w/ Rake: Versioning and Cache Expiration](/2011/12/10/pushing-assets-to-s3-w-rake-versioning-and-cache-expiration.html)
- [Serving Compressed Rails Assets from S3 via CloudFront](/2011/12/09/serving-compressed-rails-assets-from-s3-via-cloudfront.html)
- [NYC.rb: Building RESTful APIs w/ Grape](/2011/11/08/nycrb-building-restful-apis-w-grape.html)
- [Rendering Markdown Documents in Rails](/2011/11/07/rendering-markdown-documents-in-rails.html)
- [Grape: Routing Multiple Methods](/2011/11/03/grape-routing-multiple-methods.html)
- [Filtering by User-Agent in Rails](/2011/11/03/filtering-by-user-agent-in-rails.html)
- [Using GCC to install Ruby w/ RVM on Mac OSX Lion](/2011/11/03/using-gcc-to-install-ruby-w-rvm-on-mac-osx-lion.html)
- [Sorting Tables in Rails w/ Mongoid](/2011/10/13/sorting-tables-in-rails-w-mongoid.html)
- [Capybara: Failed to Resynchronize, Ajax Request Timed Out (not caused by green elves)](/2011/09/28/capybara-failed-to-resynchronize-ajax-request-timed-out.html)
- [CarrierWave: DelayJob-Processing of Selected Versions](/2011/09/22/carrierwave-delayjob-processing-of-selected-versions.html)
- [New Relic: Performance Instrumentation with Grape API](/2011/09/21/new-relic-performance-instrumentation-with-grape-api.html)
- [Mongoid Collection Snapshot](/2011/09/19/mongoid-collection-snapshot.html)
- [Rails Editable Mail Templates w/Preview from 37Signals](/2011/09/15/rails-editable-mail-templates-wpreview-from-37signals.html)
- [IE9: Cache-Busting with Grape Middleware](/2011/09/14/ie9-cache-busting-with-grape-middleware.html)
- [Being Lazy: Using the Ruby driver to connect to MongoDB](/2011/09/12/being-lazy-using-the-ruby-driver-to-connect-to-mongodb.html)
- [Rails: Custom and Editable Mailer Templates in Markdown](/2011/09/09/rails-custom-and-editable-mailer-templates-in-markdown.html)
- [The Jenkins AnsiColor Plugin You've All Been Waiting For](/2011/09/04/the-jenkins-ansicolor-plugin-youve-all-been-waiting-for.html)
- [Exporting Data to Excel in Ruby on Rails w/ Spreadsheet and to\_xls](/2011/09/01/exporting-data-to-excel-in-ruby-on-rails-w-spreadsheet-and-toxls.html)
- [Permission denied - /var/tmp/ruby-uuid](/2011/09/01/permission-denied-vartmpruby-uuid.html)
- [Embedding API Sandboxes in Documentation](/2011/08/19/embedding-api-sandboxes-in-documentation.html)
- [RSpec: Fuubar + Breaking Tests into Suites](/2011/08/16/rspec-fuubar-breaking-tests-into-suites.html)
- [Selecting items from a dropdown with Capybara, Selenium (Firefox) & JQuery](/2011/08/12/selecting-items-from-a-dropdown-with-capybara-selenium-firefox-jquery.html)
- [Modularizing a RoR Grape API: Multiple Versions](/2011/07/30/modularizing-a-ror-grape-api-multiple-versions.html)
- [Introducing Gem-Licenses: Collect 3rd Party Licenses in RoR Projects](/2011/07/26/introducing-gem-licenses-collect-3rd-party-licenses-in-ror-projects.html)
- [Modularizing a RoR Grape API](/2011/07/23/modularizing-a-ror-grape-api.html)
- [Mongoid 2.0.2 Dropped Pagination =\> Kaminari](/2011/07/07/mongoid-202-dropped-pagination-kaminari.html)
- [RSpec + Capybara Don't Return a Proper Exit Code](/2011/06/23/rspec-capybara-dont-return-a-proper-exit-code.html)
- [Compass: Invalid US-ASCII character 'xE2'](/2011/06/09/compass-invalid-us-ascii-character-xe2.html)
- [Delaying Image Processing on Heroku with delayed\_job](/2011/06/04/delaying-image-processing-on-heroku-with-delayedjob.html)
- [RoR Win: 'Getting Things Done' with MongoDB Mongoid](/2011/05/27/ror-win-getting-things-done-with-mongodb-mongoid.html)
- [Improving tags map/reduce with MongoDB 1.8.x](/2011/05/12/improving-tags-mapreduce-with-mongodb-18x.html)
- [Rails + S3 + CloudFront + Jammit + Heroku + 100 грам](/2011/05/10/rails-s3-cloudfront-jammit-heroku-100.html)
- [Grape: API Authentication w/ Devise](/2011/05/04/grape-api-authentication-w-devise.html)
- [Grape: trapping all exceptions within the API](/2011/05/04/grape-trapping-all-exceptions-within-the-api.html)
- [Wrapping the Idee PixMatch RESTful API in a Ruby Gem](/2011/04/14/wrapping-the-idee-pixmatch-restful-api-in-a-ruby-gem.html)
- [VirtualBox: Linux on Windows](/2011/04/09/virtualbox-linux-on-windows.html)
- [Mongoid\_fulltext: full-text n-gram search for your MongoDB models](/2011/04/05/mongoidfulltext-full-text-n-gram-search-for-your-mongodb-models.html)
- [CarrierWave: Saving Best Image Geometry](/2011/04/04/carrierwave-saving-best-image-geometry.html)
- [A Rake Task for Copying Data between Amazon S3 Buckets](/2011/03/30/a-rake-task-for-copying-data-between-amazon-s3-buckets.html)
- [Rails: Passing Arrays in a Query String](/2011/03/28/rails-passing-arrays-in-a-query-string.html)
- [A Rake Task for Copying MongoDB Databases](/2011/03/27/a-rake-task-for-copying-mongodb-databases.html)
- [CarrierWave: Full Control over Changing (S3) Upload Path Name](/2011/03/22/carrierwave-full-control-over-changing-s3-upload-path-name.html)
- [Continuous Deployment with Heroku-Bartender](/2011/03/20/continuous-deployment-with-heroku-bartender.html)
- [How to define Enums in Ruby?](/2011/03/16/how-to-define-enums-in-ruby.html)
- [Models look nice, but sometimes you just want to change they way they feel](/2011/03/16/models-look-nice-but-sometimes-you-just-want-to-change-they-way-they-feel.html)
- [Dan North doesn't believe in magic and makes babies cry](/2011/03/07/dan-north-doesnt-believe-in-magic-and-makes-babies-cry.html)
- [Ruby: Unlearning OOP and Embracing Anarchy](/2011/03/03/ruby-unlearning-oop-and-embracing-anarchy.html)
- [Folder-Driven Development: when to create a folder?](/2011/02/26/folder-driven-development-when-to-create-a-folder.html)
- [Adding (almost) static pages to your fancy Rails website](/2011/02/21/adding-almost-static-pages-to-your-fancy-rails-website.html)
- [Seeding, exporting and importing MongoDB data with Rake](/2011/02/14/seeding-exporting-and-importing-mongodb-data-with-rake.html)
- [Rails: opinionated directory structure](/2011/02/13/rails-opinionated-directory-structure.html)
- [DataMapper: promoting columns into classes](/2011/02/11/datamapper-promoting-columns-into-classes.html)
- [Running ruby files on Heroku via rake](/2011/02/11/running-ruby-files-on-heroku-via-rake.html)
- [BSON::InvalidKeyName: key must not contain '.' or ‘$'](/2011/02/04/bsoninvalidkeyname-key-must-not-contain-or.html)
- [kernel.rb:27:in `should': uninitialized constant RSpec::Expectations::PositiveExpectationHandler (NameError)](/2011/02/03/kernelrb27in-should-uninitialized-constant-rspecexpectationspositiveexpectationhandler-nameerror.html)
- [The program can't start because msvcrt-ruby18.dll is missing from your computer.](/2011/01/14/the-program-cant-start-because-msvcrt-ruby18dll-is-missing-from-your-computer.html)
