41554 blogs · [ { "id": "01a087e2-b303-733b-9f0e-5d2ce538570b", "title": "AI Curb Cuts", "url": "https://snakeshands.com/blog/ai_curb_cuts/", "published_at": "2026-01-30T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce5da54fd", "title": "Building Custom Form Elements", "url": "https://snakeshands.com/blog/custom_form_elements/", "published_at": "2025-05-11T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce60a64ff", "title": "Asides in Astro Markdown", "url": "https://snakeshands.com/blog/til_asides_in_astro/", "published_at": "2025-02-25T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce688d746", "title": "Loss Aversion Is All You Need", "url": "https://snakeshands.com/blog/oops/", "published_at": "2025-02-23T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce765c9d6", "title": "Brook, A Feed Reader", "url": "https://snakeshands.com/blog/brook_a_feed_reader/", "published_at": "2018-10-12T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce7f161b0", "title": "Reading Rails - HTTP DELETEs With a Link", "url": "https://snakeshands.com/blog/reading_rails_http_delete_with_a_link/", "published_at": "2016-05-16T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce845fc3d", "title": "The Constructive No", "url": "https://snakeshands.com/blog/the_constructive_no/", "published_at": "2015-11-16T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce8982626", "title": "Finding and Fixing Frustrating Tests", "url": "https://snakeshands.com/blog/finding_and_fixing_frustrating_tests/", "published_at": "2015-11-02T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ce926e08b", "title": "Testing a Little More", "url": "https://snakeshands.com/blog/testing_a_little_more/", "published_at": "2015-10-27T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cea10fb74", "title": "The Test That Cried Fail", "url": "https://snakeshands.com/blog/the_test_that_cried_fail/", "published_at": "2015-10-18T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cea7434c4", "title": "HasDefaultAssociations", "url": "https://snakeshands.com/blog/has_default_associations/", "published_at": "2015-08-17T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ceb728969", "title": "Reading Ruby - Minitest's Plugin System", "url": "https://snakeshands.com/blog/reading_ruby_minitest_plugin_system/", "published_at": "2015-04-03T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cec1d7df1", "title": "Reading Rails - Time Travel", "url": "https://snakeshands.com/blog/reading_rails_time_travel/", "published_at": "2015-03-15T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cecdafc0e", "title": "Ruby Ducks - Serialization Duck Type", "url": "https://snakeshands.com/blog/ruby_ducks_serialization_duck_type/", "published_at": "2014-08-31T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ced5571ca", "title": "Reading Rails - TimeWithZone", "url": "https://snakeshands.com/blog/reading_rails_time_with_zone/", "published_at": "2014-08-27T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cee4533a9", "title": "MetaRuby - Calling and Receiving Methods", "url": "https://snakeshands.com/blog/metaruby_calling_and_receiving_methods/", "published_at": "2014-06-19T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ceefc263d", "title": "Defense Against the Dark Art of Estimation Bargaining", "url": "https://snakeshands.com/blog/estimation_bargaining/", "published_at": "2014-06-17T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cef392767", "title": "MetaRuby - Monkeying With Methods", "url": "https://snakeshands.com/blog/metaruby_monkeying_with_methods/", "published_at": "2014-06-12T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cef55a7c1", "title": "MetaRuby - Building Classes Dynamically", "url": "https://snakeshands.com/blog/building_classes_dynamically/", "published_at": "2014-05-28T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2ceffc44a6", "title": "MetaRuby - An Ounce of Meta", "url": "https://snakeshands.com/blog/metaruby_an_ounce_of_metaprogramming/", "published_at": "2014-05-22T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf0a0bb74", "title": "Reading Rails - How Does MessageEncryptor Work?", "url": "https://snakeshands.com/blog/reading_rails_how_does_message_encryptor_work/", "published_at": "2014-05-19T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf0c208ee", "title": "Reading Rails - How Does MessageVerifier Work?", "url": "https://snakeshands.com/blog/reading_rails_how_does_message_verifier_work/", "published_at": "2014-05-10T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf114f38b", "title": "Reading Rails - How Do Batched Queries Work?", "url": "https://snakeshands.com/blog/reading_rails_how_do_batched_queries_work/", "published_at": "2014-05-05T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf1b24fba", "title": "Reading Rails - The Adapter Pattern", "url": "https://snakeshands.com/blog/reading_rails_the_adapter_pattern/", "published_at": "2014-02-25T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf1bd363f", "title": "Reading Rails - Errors and Validators", "url": "https://snakeshands.com/blog/reading_rails_errors_and_validators/", "published_at": "2014-01-29T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf201b8b1", "title": "Reading Rails - How Validations Are Configured", "url": "https://snakeshands.com/blog/reading_rails_validations/", "published_at": "2014-01-12T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf219f022", "title": "Reading Rails - Concern", "url": "https://snakeshands.com/blog/reading_rails_concern/", "published_at": "2014-01-06T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf295d7b7", "title": "Reading Rails - More Migrations", "url": "https://snakeshands.com/blog/reading_rails_more_migrations/", "published_at": "2013-12-31T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf322776f", "title": "Reading Rails - Migrations", "url": "https://snakeshands.com/blog/reading_rails_migrations/", "published_at": "2013-12-18T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf3d2b503", "title": "Reading Rails - Attribute Methods", "url": "https://snakeshands.com/blog/reading_rails_attribute_methods/", "published_at": "2013-12-08T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf4a09f48", "title": "Reading Rails - Change Tracking", "url": "https://snakeshands.com/blog/reading_rails_change_tracking/", "published_at": "2013-11-28T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf5139541", "title": "Reading Rails - Handling Exceptions", "url": "https://snakeshands.com/blog/reading_rails_handling_exceptions/", "published_at": "2013-11-21T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf5e860cb", "title": "Ruby Metric Adapter", "url": "https://snakeshands.com/blog/metric_adapter/", "published_at": "2013-07-09T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf5efec31", "title": "Hierarchies With Rails", "url": "https://snakeshands.com/blog/hierarchies_with_rails/", "published_at": "2013-06-12T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf64769fd", "title": "Aggregating Hierarchies With Postgres", "url": "https://snakeshands.com/blog/aggregating_hierarchies_with_postgres/", "published_at": "2013-05-22T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf6dcfe8a", "title": "Hierarchies With Postgres", "url": "https://snakeshands.com/blog/hierarchies_with_postgres/", "published_at": "2013-05-12T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf7a0cb70", "title": "When Files Change – Simple Automation", "url": "https://snakeshands.com/blog/when_files_change/", "published_at": "2013-05-09T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf82616cd", "title": "Tagging With ActiveRecord and Postgres", "url": "https://snakeshands.com/blog/tagging_with_active_record_and_postgres/", "published_at": "2013-05-02T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf8f09804", "title": "Postgres, The Best Tool You're Already Using", "url": "https://snakeshands.com/blog/postgres_railsconf2013/", "published_at": "2013-05-01T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cf9a989ce", "title": "Ivy - Bound JavaScript", "url": "https://snakeshands.com/blog/ivy_data_binding_in_javascript/", "published_at": "2012-07-14T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfa396e03", "title": "The Strange Ruby Splat", "url": "https://snakeshands.com/blog/the_strange_ruby_splat/", "published_at": "2011-01-21T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfabd3d7e", "title": "Getting to Know the Ruby Standard Library – Delegator", "url": "https://snakeshands.com/blog/ruby_standard_library_delegator/", "published_at": "2011-01-18T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfb85a74a", "title": "Getting to Know the Ruby Standard Library – WeakRef", "url": "https://snakeshands.com/blog/ruby_standard_library_weakref/", "published_at": "2011-01-09T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfbe1f191", "title": "Getting to Know the Ruby Standard Library – Timeout", "url": "https://snakeshands.com/blog/ruby_standard_library_timeout/", "published_at": "2010-12-31T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfc7eea24", "title": "Getting to Know the Ruby Standard Library – Pathname", "url": "https://snakeshands.com/blog/ruby_standard_library_pathname/", "published_at": "2010-12-28T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfd68935b", "title": "Getting to Know the Ruby Standard Library – Abbrev", "url": "https://snakeshands.com/blog/ruby_standard_library_abbrev/", "published_at": "2010-12-25T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfd838a18", "title": "Hash Tricks", "url": "https://snakeshands.com/blog/hash_tricks/", "published_at": "2010-12-24T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfe48b10b", "title": "Getting to Know the Ruby Standard Library – TSort", "url": "https://snakeshands.com/blog/ruby_standard_library_tsort/", "published_at": "2010-12-22T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cfe8576c8", "title": "Getting to Know the Ruby Standard Library – MiniTest::Mock", "url": "https://snakeshands.com/blog/ruby_standard_library_minitest_mock/", "published_at": "2010-12-18T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cff4c8956", "title": "Getting to Know the Ruby Standard Library – Shellwords", "url": "https://snakeshands.com/blog/ruby_standard_library_shellwords/", "published_at": "2010-12-14T00:00:00+00:00" }, { "id": "01a087e2-b303-733b-9f0e-5d2cff728b26", "title": "Getting to Know the Ruby Standard Library – MiniTest", "url": "https://snakeshands.com/blog/ruby_standard_library_mini_test/", "published_at": "2010-12-10T00:00:00+00:00" } ] posts Claim your blog
Back to Snake’s Hands
Blog · corpus.blog/blogs/snakeshands.com/posts

Snake’s Hands

snakeshands.com

2026

2025

2018

2016

2015

2014

2013

2012

2011

2010