The Curious Engineer

All blogs / Ruby / Rails

Hi, we're Arkency

blog.arkency.com

Ruby / RailsSoftware / engineering practiceTesting / QAEngineering blogs

Posts
484 from 21 Sep 2012 to 29 Sep 2026
Posting
monthly (20 in the last year)
Kind
company blog
Feed
https://blog.arkency.com/feed.xml

2026 17

  1. AI-Native Rails
  2. 6 levels of knowledge management maturity in organizations
  3. TERAZ - live collective ambient experience made with Rails & Tone.js
  4. We are all juniors again
  5. Maintaining an organizational knowledge graph with an LLM and event sourcing
  6. 3 example process managers in Rails
  7. Ingress is not the owner of the invariant
  8. Let Your AI Assistant Explore the Event Store with res-mcp
  9. Inspect Your Event Store From the Terminal With the res CLI
  10. What's New in Rails Event Store 3.0
  11. Storing data as a sequence of events - RubyConfAt lightning talk supplement
  12. RailsEventStore 2.19: Starting Gun for 3.0
  13. The Rails Way in 2026
  14. Rails apps have layers but no modules
  15. Getting nondeterministic agent into deterministic guardrails
  16. The timezone bug that hid in plain sight for months
  17. Stop using DateTime in 2026 (unless you work for UNESCO)

2025 20

  1. Adding multi-tenancy to a DDD Rails app
  2. Rewrite with Confidence: Validating Business Rules Through Isolated Testing
  3. Making race condition tests deterministic with Concurrent::CyclicBarrier and seam
  4. The Joy of a Single-Purpose Class: From String Mutation to Message Composition
  5. Rails 8 upgrade story: duplicate keys sneaking into our JSON responses
  6. Evolving event names and payloads in Rails Event Store without breaking history
  7. Watch out for this one deprecation warning when upgrading from Rails 7.1 to 7.2 on Heroku
  8. Breaking the Singleton: How to Reload Ruby Singleton Instance
  9. Stop concatenating URLs with strings — Use proper tools instead
  10. 5 gems you no longer need with Rails
  11. I do not blindly trust setting things in new_framework_defaults initializers anymore
  12. Batch mapper in RailsEventStore - how initial idea evolved into experimental feature
  13. Multi tenant applications with horizontal sharding and Rails Event Store
  14. Installing Precompiled Native Gems with bundle lock --add-platform
  15. Rails: when "nothing changed" is the best feature
  16. Implementing an Inventory Module in Ruby on Rails: Handling Concurrency with Database Locks and SKIP LOCKED
  17. Is your Rails application special?
  18. Ractor - getting started
  19. Improve your user experience with Turbo Frames
  20. Turbo Frames and the Extra DOM Node – How to Handle It?

2024 12

  1. The difference between Turbo Streams and Turbo Frames
  2. Smooth Ruby and Rails upgrades
  3. How to add index to a big table of your Rails app
  4. Conditionally Enable GZIP on Heroku with Rack::Deflater: Reduce Response Size Significantly
  5. How to use Hotwire Turbo Streams effectively?
  6. Replace aasm with Rails Enum today
  7. Do you tune out Ruby deprecation warnings?
  8. How to get burned by 16 years old hack in 2024
  9. How to add a loading animation to your turbo frame with TailwindCSS
  10. Upcasting events in RailsEventStore
  11. Completely custom Zeitwerk inflector
  12. The mysterious litany of require_dependecy calls

2023 16

  1. Repository implementation on ActiveRecord
  2. A crucial detail in implementing an async read model builder
  3. Temporary databases for development
  4. Who calls who? — a simple events heuristic
  5. Six ways to prevent a monkey-patch drift from the original code
  6. The most underused pattern in Ruby
  7. How to become 10x developer with a help of ChatGPT
  8. Few static analysis tricks to bulletproof your application
  9. The most important boundary in your app
  10. How to write a good incident postmortem
  11. Tracking down not resolving constants in Ruby with parser
  12. Offloading write side with a read model
  13. First class json(b) handling in Rails Event Store
  14. Replaying events in RailsEventStore
  15. How to build Read models with bi-temporal events
  16. Effortless debugging with those 4 linking classes from RailsEventStore

2022 17

  1. Speed up aggregate roots loading with snapshot events
  2. Sometimes it's worth to test your framework features
  3. Handling third-party webhooks with Rails Event Store
  4. Take advantage of Turbo Streams in event handlers
  5. Verifying Content-Security Policy with Selenium and Cuprite
  6. Fixing the past and dealing with the future using bi-temporal EventSourcing
  7. How we got struck by 5–year–old implementation
  8. Be careful with turbo and view components
  9. Test which reminded me why I don't really like RSpec
  10. The final trick when moving from Rails CRUD to Event Sourcing
  11. Simplify your system debugging by introducing event store linking
  12. Tune up your esbuild config with plugins and cleanup your assets directory
  13. How I migrated a Rails app from Webpack to esbuild and got smaller and faster JS builds
  14. Which one to use? eql? vs equal? vs == ? Mutant Driven Development of Country Value Object
  15. Keep your team up to date on production data changes
  16. Notify Honeybadger about errors after few occurances
  17. Don't waste your time on assets compilation on Heroku

2021 31

  1. The Difference Between a Cache and a Read Model, an example
  2. A lesser known capability of Ruby's JSON.parse
  3. Audit log with event sourcing
  4. Limit your automatic retries
  5. Semantic blind spot in Ruby case statement
  6. Fighting the primitive obsession with Value objects
  7. How to build a read model with Rails Event Store Projection
  8. When in doubt, signal!
  9. Decorate your runner session like a pro
  10. Rails console trick I had no idea about
  11. How to balance the public APIs of an open-source library — practical examples from RailsEventStore
  12. Zeitwerk-based autoload and workarounds for single-file-many-classes problem
  13. Explaining Rack — desugaring Rack::Builder DSL
  14. Rack apps mounted in Rails — how to protect access to them?
  15. How to speed up Netlify build, twice
  16. Write once, publish in many places, keep SEO happy
  17. 'render' is not your final word in your Rails controller's action
  18. How to delete jobs from Sidekiq Retries
  19. Disadvantages of Pull Requests
  20. Code review of an Order object implemented as a state machine
  21. Use ActiveAdmin like a boss
  22. 7 simple ways to make remote work feel less lonely
  23. Recording real requests with WebMock
  24. Discord-to-Slack bot hosted on repl.it
  25. 3 tips to tune your VCR in tests
  26. Testing cursor-based pagination with Webmock
  27. The Goodies in Rails Event Store 2.x
  28. How well Rails developers actually test their apps
  29. Gradual automation in Ruby
  30. 4 strategies when you need to change a published event
  31. Low-boilerplate process manager

2020 27

  1. Rails multitenancy story in 11 snippets of code
  2. Multitenancy with Postgres schemas: key concepts explained
  3. What surprised us in Postgres-schema multitenancy
  4. Anti-IF framework - if/else based on type
  5. People's experiences with approaches to multitenancy
  6. Painless Rails upgrades
  7. Don't blindly apply software patterns
  8. Rails multiple databases support in Rails Event Store
  9. Introducing EventStoreClient - a ruby implementation for EventStore DB
  10. Comparison of approaches to multitenancy in Rails apps
  11. Upgrading a trivial Rails app from Ruby 2.3.1 to 2.7 and from Rails 4.2.6 to 6.0.3
  12. Avoid coupling between Bounded Contexts using Weak Schema
  13. Overcome 10k rows database limit on Heroku by upgrading the database plan
  14. Practical use of Ruby PStore
  15. Update Rails Event Store to v1.0.0 - walkthrough
  16. Rails Event Store 1.0 — The Past, Present and Future
  17. Most controversial rules in Arkency
  18. Rename stream in Rails Event Store with zero downtime
  19. Managing Rails Event Store Subscriptions — How To
  20. Catchup subscriptions with Rails Event Store
  21. How to work remotely and not get crazy
  22. Rails connections, pools and handlers
  23. Remote Mob Programming — review of ideas and the book
  24. Remote collaborative modeling
  25. Ultimate guide to 3rd party calls from your Aggregate
  26. Legacy Rails DDD Migration strategy — from read models, through events to aggregates
  27. How to migrate large database tables without a headache

2019 10

  1. Rubyʼs raise Exception.new or raise Exception — they're both the same
  2. OOP Refactoring: from a god class to smaller objects
  3. Unexpected benefits of storing commands
  4. 10 lessons learnt from the Ruby Refactoring Kata - Tennis Game
  5. Heuristics for choosing bounded context for an event handler
  6. How many Ruby programmers are there in the world?
  7. Using streams to build read models
  8. A scary side of ActiveRecord's find
  9. Optimizing test suites when using Rails Event Store
  10. Patterns for asynchronous read models in infrastructure without order guarantee

2018 25

  1. Modeling passing time with events
  2. Serverless Slack bot on Lambda with Ruby (and what’s the less pleasant part about it)
  3. I was a CRUDoholic
  4. Image Placeholder for your development environment
  5. What I've learnt at RESCON
  6. 3 ways to make your ruby object thread-safe
  7. Big events vs Small events — from the perspective of refactoring
  8. Command sourcing — why I am considering it
  9. Event scout rule
  10. Use channels, not direct messages — 9 tips
  11. Doing more on reads vs writes
  12. Removing magic with magic
  13. Rewriting deprecated APIs with parser gem
  14. Correlation id and causation id in evented systems
  15. Using singleton objects as default arguments in Ruby
  16. What I've learned at Arkency and why I am leaving
  17. Ruby Event Store - use without Rails
  18. Rails Event Store - better APIs coming
  19. How to use Algolia without coupling to ActiveRecord::Base
  20. Your search index is a read model (and API 😉) in the Searching bounded context
  21. How Algolia built their frontend search widgets with React.js by following redux principles
  22. The anatomy of search pages
  23. Building custom search is hard and boring
  24. Testing React.js components with Jest in Rails+Webpacker+Webpack environment
  25. Process Managers revisited

2017 78

  1. Using ruby parser and AST tree to find deprecated syntax
  2. On ActiveRecord callbacks, setters and derived data
  3. How to get an audit log with RailsEventStore today
  4. Why Event Sourcing basically requires CQRS and Read Models
  5. Event Sourcing is a transferable skill
  6. Quarantine your non-deterministic tests with a time limit
  7. Safely migrating hasandbelongstomany associations to Rails 4
  8. Decoding JSON with unknown structure with Elm
  9. Interview with Scott Bellware (Eventide co-creator) about micro-services in Ruby, event sourcing, autonomous services, SOA, dumb pipes, EventStore and mis-representation of terms in IT
  10. Make your JSON API tests clean with linter
  11. A bug that only appears once a year
  12. Application Services — 10 common doubts answered
  13. Relative Testing vs Absolute Testing
  14. Make your Ruby code more modular and functional with polymorphic aggregate classes
  15. Two ways for testing preloading/eager-loading of ActiveRecord associations in Rails
  16. Using state_machine with event sourced entities
  17. Event-sourcing whole app — opinions
  18. Could we drop Symbols from Ruby?
  19. One simple trick to make Event Sourcing click
  20. Which ruby version am I using — how to check?
  21. How to overwrite tojson (asjson) in Active Record models in Rails
  22. Composable RSpec matchers
  23. All the ways to generate routing paths in Rails
  24. Custom application configuration variables in Rails 4 and 5
  25. Rails components — neither engines nor gems
  26. Physical separation in Rails apps
  27. How mutation testing causes deeper thinking about your code + constructor for an included module in Ruby
  28. What I learnt from Jason Fried about running a remote/async software company
  29. Making tmux work for you
  30. How to setup development work with RailsEventStore and mutant
  31. How to find records where column is not null or empty in Rails 4 or 5
  32. DATABASE_URL examples for Rails DB connection strings
  33. Why we follow the Rails repo structure in Rails Event Store
  34. Interview with Sergii Makagon about hanami-events, domain-driven design, remote work, blogging and more
  35. inject vs eachwithobject
  36. Testing deprecations warnings with RSpec
  37. The === (case equality) operator in Ruby
  38. How to connect to and use ActiveRecord outside of Rails?
  39. What I learned from reading spreadsheet_architect code
  40. That one time I used recursion to solve a problem
  41. Domain Driven Rails
  42. My fruitless, previous attempts at not losing history of changes in Rails apps
  43. My first 10 minutes with Eventide
  44. How to add a default value to an existing column in a Rails migration
  45. When DDD clicked for me
  46. How to quickly add graphs and charts to Rails app
  47. nil?, empty?, blank? in Ruby on Rails - what's the difference actually?
  48. Monitoring Sidekiq queues with middlewares
  49. Non-coding activities in a software project
  50. How to keep yourself motivated for blogging?
  51. Handle sidekiq processing when one job saturates your workers and the rest queue up
  52. How to safely store API keys in Rails apps
  53. The easiest posts to write for a programming blog
  54. Using influxdb with ruby
  55. Tracking dead code in Rails apps with metrics
  56. What I learnt today from reading gems' code
  57. Dogfooding Process Manager
  58. Test critical paths in your app with ease thanks to Dependency Injection
  59. Acceptance testing using actors/personas
  60. Testing cookies in Rails
  61. Handling SVG images with Refile and Imgix
  62. Passive aggresive events - code smell
  63. Self-hosting Event Store on Digital Ocean
  64. The vision behind Rails, DDD and the RailsEventStore ecosystem
  65. What's inside the Rails DDD workshop application?
  66. Conditionality is filtering. Don't filter control flow, filter data.
  67. All Rails service objects as one Ruby class
  68. Reliable notifications between two apps or microservices
  69. Why classes eventually reach 50 columns and hundreds of methods
  70. Prototypes in Ruby and the strange story of dup
  71. Ruby code I no longer write
  72. A potential problem with PStore and Rails
  73. How to unit test classes which depend on Rails models?
  74. yield default object
  75. Fluent Interfaces in Ruby ecosystem
  76. Why Smalltalk instead of Ruby
  77. Run your tests on production!
  78. On upcoming immutable string literals in Ruby

2016 62

  1. Event sourced domain objects in less than 150 LOC
  2. Why would you even want to listen about DDD?
  3. Safer Rails database migrations with Soundcloud's Large Hadron Migrator
  4. Patterns for dealing with uncertainty
  5. Recovering unbootable NixOS instance using Hetzner rescue mode
  6. Testable Javascript with pure functions
  7. Async/Remote: make work a better place
  8. Educate about DDD/CQRS/Event Sourcing at the Facebook group
  9. Dealing with randomly failing tests from a team perspective
  10. One request can be multiple commands
  11. Ruby exceptions are 4400 times faster than ActiveRecord::Base#create
  12. Rails and adapter objects: different implementations in production and tests
  13. The typical Ruby bugs with changing the last line in a method
  14. Overcommunication is required for async/remote work
  15. Running bash command from Ruby (with your bash_profile)
  16. The esthetics of a Ruby service object
  17. Developers as DDD bounded contexts representatives
  18. Hourly Billing is Nuts
  19. The freelancer in you that wants to be FREE
  20. To blog or to write code?
  21. How we save money by using DDD and Process Managers in our Rails app
  22. Minimal decoupled subsystems in your rails app
  23. Command bus in a Rails application
  24. Phases of refactoring complex Rails apps
  25. Two dimensions of a Rails developer's growth
  26. respond_to |format| is useful even without multiple formats
  27. The quotes from the Post Rails Book Bundle books
  28. Implementing & Testing SOAP API clients in Ruby
  29. Always present association
  30. Domain Events Schema Definitions
  31. Cover all test cases with #permutation
  32. API of the future
  33. Rails Refactoring Podcast #6 - Frontend Friendly Rails
  34. Mutation testing of Rails views
  35. Is Rails a good fit for writing rich frontend applications?
  36. Use ES2015 with Rails today - what & how
  37. See how we create books. Live
  38. Porting a Rails frontend from CoffeeScript to ES6 and JSX - examples
  39. One more step to DDD in a legacy rails app
  40. The story behind our Rails TDD & DDD video class
  41. 70% off the Rails / TDD / DDD / mutant video class until 11pm 19.05.2016 CEST
  42. Ruby On Rails Custom Software Development
  43. Domain Events over Active Record Callbacks
  44. The anatomy of Domain Event
  45. Packaging ruby programs in NixOS
  46. How I hunted the most odd ruby bug
  47. Custom type-casting with ActiveRecord, Virtus and dry-types
  48. Creating new content types in Rails 4.2
  49. Using anonymous modules and prepend to work with generated code
  50. The smart way to check health of a Rails app
  51. How and why should you use JSON API in your Rails API?
  52. Private classes in Ruby
  53. Testing aggregates with commands and events
  54. How to teach React.js properly? A quick preview of wroc_love.rb workshop agenda
  55. Rails: MVP vs prototype
  56. How RSpec helped me with resolving random spec failures
  57. From legacy to DDD: What are those events anyway?
  58. Where and why I'm still using Rails
  59. Drop this before validation and just use a setter method
  60. One event to rule them all
  61. Loading all data when starting Flux SPA
  62. From legacy to DDD: Start with publishing events

2015 69

  1. Stable Circle CI builds with PhantomJS for larger Rails-backed frontend apps
  2. A single Rails API endpoint to accept all changes to the app state
  3. In-Memory Fake Adapters
  4. Monitoring services and adapters in your Rails app with Honeybadger, NewRelic and #prepend
  5. A Simple feature toggle for a Rails app
  6. Arkency React.js resources
  7. Slack-driven blogposts
  8. Creating custom Heroku buildpack for Webpack and Ruby on Rails integration
  9. Rolling back complex apps
  10. Run it in a background job, after a commit, from a service object
  11. Advantages of working on a legacy application
  12. Do you have a framework for dealing with emergencies?
  13. Testing Event Sourced application - the read side
  14. Sanitizing html input: youtube iframes, css inline styles and customization
  15. CQRS example in the Rails app
  16. Testing race conditions in your Rails app
  17. How can Rails developers benefit from reading the Arkency books?
  18. Three most telling files in legacy Rails apps
  19. Null Object pattern in practice
  20. Testing an Event Sourced application
  21. Am I ignored in my async team?
  22. Arkency goes React
  23. Subscribing for events in railseventstore
  24. Thanks to repositories...
  25. How good are your Ruby tests? Testing your tests with mutant
  26. You can use CoffeeScript classes with React - pros and cons
  27. Start using ES6 with Rails today
  28. Using domain events as success/failure messages
  29. Introducing Read Models in your legacy application
  30. Building a React.js event log in a Rails admin panel
  31. One year of React.js in Arkency
  32. How to store emoji in a Rails app with a MySQL database
  33. Building an Event Sourced application using railseventstore
  34. Extract a service object using SimpleDelegator
  35. Mutation testing and continuous integration
  36. On my radar: RethinkDB + React.js + Rails
  37. Why I want to introduce mutation testing to the railseventstore gem
  38. Beautiful confirm window with React
  39. Bring CommonJS to your asset pipeline
  40. The Event Store for Rails developers
  41. Rails meets React.js is out: What you can find inside?
  42. How to store large files on MongoDB?
  43. Gulp - a modern approach to asset pipeline for Rails developers
  44. Implementing Game Dashboard With React.js
  45. How to use Greg's Event Store from ruby
  46. Stream pagination in Greg's Event Store
  47. Why saving data using MongoHQ takes so long?
  48. Tracking down unused templates
  49. Your solid tool for event sourcing - EventStore examples
  50. Explaining Greg's Event Store
  51. Why use Event Sourcing
  52. Fast introduction to Event Sourcing for Ruby programmers
  53. Blogging: your English is good enough, but
  54. Configurable dependencies in Angular.js
  55. You get feature toggle for free in event-driven systems
  56. You don't need to wait for your backend: Decisions and Consequences
  57. Extract a service object in any framework
  58. Use your gettext translations in your React components
  59. Blogging - start from the middle
  60. How to get anything done? - 4 tips
  61. How to split routes.rb into smaller parts?
  62. The reasons why programmers don't blog
  63. My favorite ActiveSupport features
  64. The Beginners Guide to jQuery.Deferred and Promises for Ruby programmers
  65. Adding videos embedded in a page to a sitemap
  66. Upgrade capybara-webkit to 1.4 and save your time
  67. Ruby Exceptions Equality
  68. It's easy to miss a higher level concept in an app
  69. The categories of validations

2014 51

  1. Does everyone in your team write good code?
  2. Beyond the Rails Way
  3. rails-refactoring.com podcast #1
  4. Don't forget about eager_load when extending autoload paths
  5. Frontend performance tips for web developers
  6. You can move React.js root component around
  7. How to start using Arrays in Rails with PostgreSQL
  8. How to persist hashes in Rails applications with PostgreSQL
  9. Unit tests vs class tests
  10. Instantiating Service Objects
  11. React.js and Dynamic Children - Why the Keys are Important
  12. Behind the scenes
  13. How to start using UUID in ActiveRecord with PostgreSQL
  14. React.js and Google Charts
  15. Adapters 101
  16. Concurrency patterns in RubyMotion
  17. How we structure our front-end Rails apps with React.js
  18. Burnout - do you need to change your job?
  19. Truncating UTF8 Input For Apple Push Notifications (APNS) in Ruby
  20. SSH authentication in 4 flavors
  21. RubyMotion app with Facebook SDK
  22. Using ruby Range with custom classes
  23. Ruby background processes with upstart user jobs
  24. Hidden features of Ruby you may not know about
  25. 6 front-end techniques for Rails developers. Part I: From big ball of mud to separated concerns
  26. Why we use React.js in our Rails projects
  27. 4 ways to early return from a rails controller
  28. Code style matters
  29. Developer matters
  30. RubyMine basic navigation features (that make you move around code fast)
  31. Microservices - 72 resources
  32. Service objects as a way of testing Rails apps (without factory_girl)
  33. From Rails to RubyMotion: basic toolkit
  34. Create, run and manage your Ruby background processes with upstart
  35. My journey to Arkency world
  36. Real-time Web Apps
  37. Take most out of async textual standups
  38. Effective async communication
  39. Async & remote - toolbox
  40. Would you love to work remotely (and asynchronously)?
  41. Mastering Rails Validations: Objectify
  42. Mastering Rails Validations: Contexts
  43. The biggest obstacle to start with Continuous Deployment - database migrations
  44. Zero uptime deploy
  45. Don't call controller from background job, please. Do it differently!
  46. 2 ways to deal with big and complicated features
  47. Sitemaps with a bit of Metal
  48. Rails Refactoring: the aha! moments
  49. Pretty, short urls for every route in your Rails app
  50. 37 signals was not lying, you win by being remote
  51. Stop including Enumerable, return Enumerator instead

2013 27

  1. Rails and SOA: Do I really need to have this big app?
  2. CoffeeScript acceptance tests
  3. 3 ways to do eager loading (preloading) in Rails 3, 4, 5 and 6
  4. Chronos vs Kairos: Find out how you think about time when working on a project
  5. Developers oriented project management: What our new book is all about?
  6. Developers oriented project management: Take the first task
  7. Developers oriented project management: Leave tasks unassigned
  8. Services - what are they and why we need them?
  9. Developers oriented project management: Story of size 1
  10. Throw away Sprockets, use UNIX!
  11. Developers oriented project management
  12. Testing client-side views in Rails apps
  13. Single Table Inheritance - Problems and solutions
  14. CoffeeScript tests for Rails apps
  15. Ruby and AOP: Decouple your code even more
  16. Are we abusing at_exit?
  17. Implementing worker threads in Rails
  18. How to track ActiveRecord model statistics
  19. The A Team
  20. Is it cute or ugly?
  21. Naming in OOP
  22. Introducing hexagonal.js
  23. Web is no longer request-reply
  24. Black-box Ruby tests
  25. Rails API - my simple approach
  26. You don't inject for tests
  27. Blogging for developers

2012 8

  1. Google Analytics for developers
  2. Why we don't use ORM
  3. Not Rails
  4. One app, one user, one ruby
  5. Sending async data from Rails into the world (II)
  6. Sending async data from Rails into the world
  7. JavaScript objects philosophy
  8. Filepicker and Aviary - Image uploading on steroids

Undated 14

  1. Ruby On Rails Upgrades
  2. Fintech Solutions
  3. EventStorming Workshops
  4. Mentoring
  5. DDD Workshops
  6. Hotwire Workshop
  7. Frontend Development
  8. How do we work?
  9. Hire us!
  10. Async Remote
  11. Frontend Friendly Rails
  12. Responsible Rails: Trustworthy Developers
  13. Blogging for Busy Programmers
  14. Join our team