41554 blogs · [ { "id": "01a0c6c5-25fd-72de-bd14-0e0a5fcbb20f", "title": "Building a Discord Command", "url": "https://daniel-azuma.com/blog/series/building-a-discord-command/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6031495a", "title": "Conference Talks", "url": "https://daniel-azuma.com/blog/series/conference-talks/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a604db827", "title": "Family Ties", "url": "https://daniel-azuma.com/blog/series/family-ties/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a60ea96ec", "title": null, "url": "https://daniel-azuma.com/blog/series/georails/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a61891e5a", "title": null, "url": "https://daniel-azuma.com/blog/tags/elixir/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6195204d", "title": null, "url": "https://daniel-azuma.com/blog/tags/google/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a61f018f3", "title": "Open Source", "url": "https://daniel-azuma.com/blog/tags/open-source/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a62e23946", "title": null, "url": "https://daniel-azuma.com/blog/tags/rgeo/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a63a447c2", "title": null, "url": "https://daniel-azuma.com/blog/tags/ruby/", "published_at": "2026-05-02T18:32:33+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308a105e8e", "title": "Ractor::Wrapper and the Ractor improvements in Ruby 4.0", "url": "https://daniel-azuma.com/blog/2026-05-02-ractor-wrapper/", "published_at": "2026-05-02T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308ad52a7a", "title": "Remembering Google", "url": "https://daniel-azuma.com/blog/2025-09-16-remembering-google/", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308b3a54c2", "title": "Beware Twitter/X", "url": "https://daniel-azuma.com/blog/2025-08-04-beware-twitter-x/", "published_at": "2025-08-04T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308c22de12", "title": "Building a Discord Command: Part 4", "url": "https://daniel-azuma.com/blog/2021-05-04-discord-command-in-ruby-on-google-cloud-functions-part-4/", "published_at": "2021-05-04T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308cce9a85", "title": "Building a Discord Command: Part 3", "url": "https://daniel-azuma.com/blog/2021-05-03-discord-command-in-ruby-on-google-cloud-functions-part-3/", "published_at": "2021-05-03T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308cf2ccdd", "title": "Building a Discord Command: Part 2", "url": "https://daniel-azuma.com/blog/2021-05-02-discord-command-in-ruby-on-google-cloud-functions-part-2/", "published_at": "2021-05-02T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308d3621b4", "title": "Building a Discord Command: Part 1", "url": "https://daniel-azuma.com/blog/2021-05-01-discord-command-in-ruby-on-google-cloud-functions-part-1/", "published_at": "2021-05-01T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308dbe5ad7", "title": "Building a Discord Command in Ruby on Google Cloud Functions", "url": "https://daniel-azuma.com/blog/2021-04-30-discord-command-in-ruby-on-google-cloud-functions-intro/", "published_at": "2021-04-30T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308df95471", "title": "Should I use instance_eval or class_eval?", "url": "https://daniel-azuma.com/blog/2021-02-02-should-i-use-instance-eval-or-class-eval/", "published_at": "2021-02-02T00:00:00+00:00" }, { "id": "01a08766-e558-7163-bfd9-6c308e37db9e", "title": "Designing a Ruby Serverless Runtime", "url": "https://daniel-azuma.com/blog/2021-01-20-designing-a-ruby-serverless-runtime/", "published_at": "2021-01-20T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7217c8e4", "title": "Is it time to replace Rake?", "url": "https://daniel-azuma.com/blog/2019-11-06-is-it-time-to-replace-rake/", "published_at": "2019-11-06T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a713344c7", "title": "Deploying My Blog to Google Cloud Run", "url": "https://daniel-azuma.com/blog/2019-07-01-deploying-my-blog-to-google-cloud-run/", "published_at": "2019-07-01T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a70b7e31b", "title": "Yes, you should provide a client library for your API! (RubyConf 2018)", "url": "https://daniel-azuma.com/blog/2018-11-13-rubyconf-2018-api-client-libraries-talk/", "published_at": "2018-11-13T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a708e4cd0", "title": "Docker and OTP: Friends or Foes? (ElixirConf 2018)", "url": "https://daniel-azuma.com/blog/2018-09-07-elixirconf-2018-docker-otp-talk/", "published_at": "2018-09-07T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7045dffa", "title": "Containerizing Rails: Techniques, Pitfalls, and Best Practices (RailsConf 2018)", "url": "https://daniel-azuma.com/blog/2018-04-18-railsconf-2018-containerizing-rails-talk/", "published_at": "2018-04-18T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6feafe18", "title": "Dispelling the Dark Magic: Inside a Ruby Debugger (RubyConf 2017)", "url": "https://daniel-azuma.com/blog/2017-11-17-rubyconf-2017-inside-a-ruby-debugger-talk/", "published_at": "2017-11-17T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6fd658a9", "title": "Family Ties part 10: My type of language", "url": "https://daniel-azuma.com/blog/2016-08-02-family-ties-10-my-type-of-language/", "published_at": "2016-08-02T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6fd4593d", "title": "Family Ties part 9: Curse of the Preprocessor", "url": "https://daniel-azuma.com/blog/2016-07-11-family-ties-9-curse-of-the-preprocessor/", "published_at": "2016-07-11T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6edfffd2", "title": "Family Ties part 8: Rise of the Preprocessor", "url": "https://daniel-azuma.com/blog/2016-06-20-family-ties-8-rise-of-the-preprocessor/", "published_at": "2016-06-20T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6ebd611d", "title": "Family Ties part 7: Lost and Found", "url": "https://daniel-azuma.com/blog/2016-06-06-family-ties-7-lost-and-found/", "published_at": "2016-06-06T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6de0c859", "title": "Family Ties part 6: Being On Guard", "url": "https://daniel-azuma.com/blog/2016-05-31-family-ties-6-being-on-guard/", "published_at": "2016-05-31T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6d41c6f4", "title": "Family Ties part 5: Exceptionally Similar", "url": "https://daniel-azuma.com/blog/2016-05-25-family-ties-5-exceptionally-similar/", "published_at": "2016-05-25T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6cdf3bf4", "title": "Family Ties part 4: Scoping Out the Scene", "url": "https://daniel-azuma.com/blog/2016-05-17-family-ties-4-scoping-out-the-scene/", "published_at": "2016-05-17T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6c0f9afe", "title": "Family Ties part 3: It’s All In a Name", "url": "https://daniel-azuma.com/blog/2016-05-12-family-ties-3-its-all-in-a-name/", "published_at": "2016-05-12T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6b748b1f", "title": "Family Ties part 2: A Tale of Three ASTs", "url": "https://daniel-azuma.com/blog/2016-05-08-family-ties-2-a-tale-of-three-asts/", "published_at": "2016-05-08T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6b7088aa", "title": "Family Ties part 1: Comparing Erlang and Elixir", "url": "https://daniel-azuma.com/blog/2016-05-07-family-ties-1-comparing-erlang-and-elixir/", "published_at": "2016-05-07T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6b25aacd", "title": "New Maintainer for RGeo", "url": "https://daniel-azuma.com/blog/2014-05-04-new-maintainer-for-rgeo/", "published_at": "2014-05-04T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6a6c02e2", "title": "Humanity on Rails (RailsConf 2013)", "url": "https://daniel-azuma.com/blog/2013-04-29-railsconf-2013-humanity-on-rails-talk/", "published_at": "2013-04-29T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a69b14d6d", "title": "Getting Down To Earth: Geospatial Analysis With Rails (RailsConf 2012)", "url": "https://daniel-azuma.com/blog/2012-04-23-railsconf-2012-geospatial-analysis-talk/", "published_at": "2012-04-23T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a68b611c7", "title": "Geo-Rails Part 9: The PostGIS spatial_ref_sys Table and You", "url": "https://daniel-azuma.com/blog/2012-02-05-georails-part-9-postgis-spatial-ref-sys-table/", "published_at": "2012-02-05T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a67d3020b", "title": "Geo-Rails Part 8: ZCTA Lookup, A Worked Example", "url": "https://daniel-azuma.com/blog/2012-01-16-georails-part-8-zcta-lookup-a-worked-example/", "published_at": "2012-01-16T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a67951030", "title": "Geo-Rails Part 7: Geometry vs. Geography, or, How I Learned To Stop Worrying And Love Projections", "url": "https://daniel-azuma.com/blog/2012-01-09-georails-part-7-geometry-vs-geography/", "published_at": "2012-01-09T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6717636e", "title": "Geo-Rails Part 6: Scaling Spatial Applications", "url": "https://daniel-azuma.com/blog/2012-01-02-georails-part-6-scaling-spatial-applications/", "published_at": "2012-01-02T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a66368310", "title": "Geo-Rails Part 5: Spatial Data Formats", "url": "https://daniel-azuma.com/blog/2011-12-19-georails-part-5-spatial-data-formats/", "published_at": "2011-12-19T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a654480c2", "title": "Geo-Rails Part 4: Coordinate Systems and Projections", "url": "https://daniel-azuma.com/blog/2011-12-12-georails-part-4-coordinate-systems-and-projections/", "published_at": "2011-12-12T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a6527663a", "title": "Geo-Rails Part 3: Spatial Data Types with RGeo", "url": "https://daniel-azuma.com/blog/2011-12-05-georails-part-3-spatial-data-types-with-rgeo/", "published_at": "2011-12-05T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a64a2eb1a", "title": "Geo-Rails Part 2: Setting Up a Geospatial Rails App", "url": "https://daniel-azuma.com/blog/2011-11-29-georails-part-2-setting-up-a-geospatial-rails-app/", "published_at": "2011-11-29T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a640f00f7", "title": "Geo-Rails Part 1: A Call to Revolution", "url": "https://daniel-azuma.com/blog/2011-11-28-georails-part-1-a-call-to-revolution/", "published_at": "2011-11-28T00:00:00+00:00" }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7820669e", "title": "Daniel Azuma | Tech / Travel / Music", "url": "https://daniel-azuma.com/contact", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a78ef37e0", "title": null, "url": "https://daniel-azuma.com/google3956c2e8e1235d13.html", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a79614c8b", "title": "Daniel Azuma | Tech / Travel / Music", "url": "https://daniel-azuma.com/home", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7a487366", "title": null, "url": "https://daniel-azuma.com/blog/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7aac5103", "title": null, "url": "https://daniel-azuma.com/blog/tags/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7b3e00c5", "title": "Blog archives", "url": "https://daniel-azuma.com/blog/archives/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7bd404e3", "title": null, "url": "https://daniel-azuma.com/blog/series/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7c3feda3", "title": "Daniel I. Azuma", "url": "https://daniel-azuma.com/resume", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7d093ec2", "title": "Page 2 of 4 for Blog", "url": "https://daniel-azuma.com/blog/page-2/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7d4ddf76", "title": "Page 3 of 4 for Blog", "url": "https://daniel-azuma.com/blog/page-3/", "published_at": null }, { "id": "01a0c6c5-25fd-72de-bd14-0e0a7e2b4d32", "title": "Page 4 of 4 for Blog", "url": "https://daniel-azuma.com/blog/page-4/", "published_at": null } ] posts Claim your blog
Back to daniel-azuma.com
Blog · corpus.blog/blogs/daniel-azuma.com/posts

daniel-azuma.com

daniel-azuma.com

2026

2025

2021

2019

2018

2017

2016

2014

2013

2012

2011

Undated