56,966 blogs · [ { "id": "01a087eb-48ac-735b-8ab0-a100f48a0529", "title": "Using an AI agent to navigate an undocumented Kubernetes repo", "url": "https://teotti.com/using-an-ai-agent-to-navigate-an-undocumented-kubernetes-repo/", "published_at": "2026-04-17T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f4d51226", "title": "Precision, Recall, and F1: A Simple Explanation", "url": "https://teotti.com/precision-recall-f1-a-simple-explanation/", "published_at": "2026-04-16T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f5196a7b", "title": "How to build evals for LLM prompts in production", "url": "https://teotti.com/how-to-build-evals-for-llm-prompts-in-production/", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f593a940", "title": "Zombie Barbies: AI writes prettier tickets than your PM", "url": "https://teotti.com/zombie-barbies-ai-writes-prettier-tickets-than-your-pm/", "published_at": "2026-03-30T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f5c8bcce", "title": "80 prompts, zero evals: fixing an LLM pipeline after launch", "url": "https://teotti.com/80-prompts-zero-evals-fixing-llm-pipeline-after-launch/", "published_at": "2026-03-25T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f6abfc55", "title": "One Year with AI in Production: The Autonomy Myth and What Actually Works", "url": "https://teotti.com/one-year-with-ai-in-production-what-actually-works/", "published_at": "2026-03-19T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f6d99a95", "title": "From 68% Recall to 95%: Fixing a Job Classifier Without Increasing LLM Spend", "url": "https://teotti.com/how-to-increase-recall-on-a-job-classifier-with-heuristics-ml-and-a-smarter-llm/", "published_at": "2026-03-18T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f7696fad", "title": "LLM with MCPs assessing application performance", "url": "https://teotti.com/llm-with-mcps-assessing-application-performance/", "published_at": "2026-03-11T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f85f5980", "title": "How to Write Bug Reports That Engineers Can Work On", "url": "https://teotti.com/how-to-write-bug-reports-that-engineers-can-work-on/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f864a1ee", "title": "Faster bug triaging with AI LLMs via MCP", "url": "https://teotti.com/simplify-software-debugging-with-llm-mcp-and-source-code/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f887a2d5", "title": "Generate product insights with AI Agents, DB MCPs and your app sourcecode", "url": "https://teotti.com/generate-product-insights-with-ai-agent-db-mcp-and-app-sourcecode/", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f8dbf043", "title": "Shopping list to North Star", "url": "https://teotti.com/shopping-list-to-north-star/", "published_at": "2026-01-25T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100f9c62a0e", "title": "LLM and MCP: A primer", "url": "https://teotti.com/llm-and-mcp-a-primer/", "published_at": "2026-01-24T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fab73899", "title": "8 Standards for Shipping Production LLM Features", "url": "https://teotti.com/8-standards-for-building-production-ready-features-using-llms/", "published_at": "2026-01-17T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fb38a3da", "title": "Is it virtual or online facilitation?", "url": "https://teotti.com/is-it-online-or-virtual-facilitation/", "published_at": "2021-01-28T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fbf37024", "title": "Key questions to ask in a Sprint Retrospective", "url": "https://teotti.com/key-questions-to-ask-in-a-sprint-retrospective/", "published_at": "2021-01-20T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fca64259", "title": "Star Wars Agile Retrospectives a Principle 12 Story", "url": "https://teotti.com/star-wars-agile-retrospectives-a-principle-12-story/", "published_at": "2020-11-23T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fd4e3122", "title": "Cynefin helps Agile Retrospectives", "url": "https://teotti.com/cynefin-helps-agile-retrospectives/", "published_at": "2020-11-06T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fd7ae9f7", "title": "Questions to ponder when Agile Retrospectives are missing reflection", "url": "https://teotti.com/questions-to-ponder-when-agile-retrospectives-are-missing-reflection/", "published_at": "2020-10-30T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fe285107", "title": "How I ask for questions while facilitating online", "url": "https://teotti.com/how-i-ask-for-questions-while-facilitating-online/", "published_at": "2020-09-21T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fe5e2691", "title": "From software engineer to visualizer", "url": "https://teotti.com/from-software-engineer-to-visualizer/", "published_at": "2020-06-18T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100feab522b", "title": "The law of two feet in open space online", "url": "https://teotti.com/the-law-of-two-feet-in-open-space-online/", "published_at": "2020-05-13T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100fee2ab28", "title": "Video call from your LAN during COVID-19", "url": "https://teotti.com/video-call-from-your-LAN-during-covid19/", "published_at": "2020-04-02T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a100ffa3f3c4", "title": "What happens before an agile retrospective", "url": "https://teotti.com/what-happens-before-an-agile-retrospective/", "published_at": "2020-03-21T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10100194fa7", "title": "Big picture event storming. My notes from the masterclass.", "url": "https://teotti.com/big-picture-event-storming/", "published_at": "2020-01-20T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101005c950f", "title": "Event storming one year later", "url": "https://teotti.com/event-storming-one-year-later/", "published_at": "2020-01-20T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010134ae13", "title": "Make your retrospective facilitation even more effective? Here's 4 things to look at", "url": "https://teotti.com/make-your-retrospective-facilitation-even-more-effective-here-4-things-to-look-at/", "published_at": "2020-01-20T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10101a544a4", "title": "Remote visual facilitation with iPad pro", "url": "https://teotti.com/remote-visual-facilitation-with-ipad-pro/", "published_at": "2019-10-07T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10101fdedbb", "title": "Challenge Kerth's prime directive when you set the stage of your retro", "url": "https://teotti.com/challenge-agile-retrospectives-prime-directive/", "published_at": "2018-07-21T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101025cfe66", "title": "Analyze Kerth prime directive", "url": "https://teotti.com/analyze-kerth-prime-directive/", "published_at": "2018-07-10T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10102c56a9a", "title": "Measure success of your agile retrospective", "url": "https://teotti.com/measure-success-of-your-agile-retrospective/", "published_at": "2018-06-01T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10102f64c9d", "title": "Time to change your agile retrospective format?", "url": "https://teotti.com/change-your-agile-retrospective-format/", "published_at": "2017-08-23T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101036ea024", "title": "Concourse pipeline for consumer driven tests with Spring boot and Ruby", "url": "https://teotti.com/concourse-pipeline-for-consumer-driven-tests-with-spring-boot-and-ruby/", "published_at": "2017-05-24T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101037021f5", "title": "Parallelising iOS UI tests", "url": "https://teotti.com/parallelising-ios-ui-tests/", "published_at": "2016-11-01T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101045c5766", "title": "Untangle unmaintainable Ruby on Rails controller actions", "url": "https://teotti.com/untangle-unmaintainable-rails-controller-actions/", "published_at": "2016-09-20T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10104b8e809", "title": "Simplelenium with Google Chrome", "url": "https://teotti.com/simplelenium-with-chrome/", "published_at": "2016-06-03T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10105a0184a", "title": "Thinking Sphinx search one model with two indices with static attributes", "url": "https://teotti.com/thinking-sphinx-search-one-model-with-two-indices-with-static-attributes/", "published_at": "2016-05-17T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10105b37b3a", "title": "Fluentlenium with Google Chrome", "url": "https://teotti.com/fluentlenium-with-google-chrome/", "published_at": "2016-04-13T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10105e07e8c", "title": "SikuliX automated testing with image recognition", "url": "https://teotti.com/sikulix-automated-testing-with-image-recognition/", "published_at": "2016-04-07T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010678a2ea", "title": "Prepare my first tech conference talk", "url": "https://teotti.com/prepare-my-first-tech-conference-talk/", "published_at": "2016-03-23T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10106b458b9", "title": "Maintainable Rake tasks in a Ruby on Rails application", "url": "https://teotti.com/maintainable-rake-tasks-in-a-ruby-on-rails-application/", "published_at": "2016-03-04T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10107721d93", "title": "Cognitive overload in software development", "url": "https://teotti.com/cognitive-overload-in-software-development/", "published_at": "2016-01-28T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101084d1e80", "title": "Management by fear", "url": "https://teotti.com/management-by-fear/", "published_at": "2016-01-17T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10108899894", "title": "Create dependency structures with local Ruby Gems", "url": "https://teotti.com/create-dependency-structures-with-local-ruby-gems/", "published_at": "2016-01-11T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010974ddbe", "title": "Reengineer legacy Rails applications", "url": "https://teotti.com/reengineer-legacy-rails-applications/", "published_at": "2015-11-07T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010a30fca1", "title": "Application directories named as architectural patterns antipattern", "url": "https://teotti.com/application-directories-named-as-architectural-patterns-antipattern/", "published_at": "2015-08-31T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010a4a5f19", "title": "Use of the specification pattern", "url": "https://teotti.com/use-of-the-specification-pattern/", "published_at": "2015-08-25T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010a986e06", "title": "A successful deploy workflow using Git tags and a changelog", "url": "https://teotti.com/a-successful-deploy-workflow-using-git-tags-and-a-changelog/", "published_at": "2015-07-27T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010aa3f6e7", "title": "Rails vs Hanami", "url": "https://teotti.com/rails-vs-hanami/", "published_at": "2015-06-29T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010b3122b7", "title": "Relocate from Sydney Australia to work in New York City", "url": "https://teotti.com/relocate-from-sydney-australia-to-work-in-new-york-city/", "published_at": "2015-06-29T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010bb780ec", "title": "Rails service oriented architecture alternative with components", "url": "https://teotti.com/rails-service-oriented-architecture-alternative-with-components/", "published_at": "2015-05-26T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010c594344", "title": "Ignorance Driven Development", "url": "https://teotti.com/ignorance-driven-development/", "published_at": "2015-05-11T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010c765f2f", "title": "Ruby on Rails partials are slowing you down", "url": "https://teotti.com/ruby-on-rails-partials-are-slowing-you-down/", "published_at": "2015-04-17T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010d3fa40e", "title": "A component based Rails architecture primer", "url": "https://teotti.com/component-based-rails-architecture-primer/", "published_at": "2015-03-19T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010d5d8ee6", "title": "EC2 instance and IP geolocation", "url": "https://teotti.com/ec2-instance-and-ip-geolocation/", "published_at": "2015-03-10T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010df6d2a4", "title": "Best practices releasing semantic versioned (Ruby) libraries", "url": "https://teotti.com/best-practices-releasing-semantic-versioned-ruby-libraries/", "published_at": "2015-03-06T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010eeb72d9", "title": "Mongo command line client brackets highlighter", "url": "https://teotti.com/mongo-command-line-brackets-highlighter/", "published_at": "2015-03-03T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1010f465440", "title": "A successful Ruby on Rails performance analysis guideline", "url": "https://teotti.com/a-successful-ruby-on-rails-performance-analysis-guideline/", "published_at": "2015-02-24T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101100c869d", "title": "A process to identify and monitor inconsistently failing automated tests", "url": "https://teotti.com/a-process-to-identify-and-monitor-inconsistently-failing-automated-tests/", "published_at": "2015-02-16T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101101586cc", "title": "Create maintainable mongodb queries in Ruby with query object and mongoid criterias", "url": "https://teotti.com/create-maintainable-mongodb-queries-in-ruby-with-query-object-and-mongoid-criterias/", "published_at": "2015-02-09T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10110d0e380", "title": "Reduce memory footprint requiring portions of your component based Rails application with Bundler", "url": "https://teotti.com/reduce-memory-footprint-requiring-portions-of-your-component-based-rails-applications/", "published_at": "2015-01-27T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101115fbbfc", "title": "One URL segment serving different resources with Ruby on Rails route constraints", "url": "https://teotti.com/one-url-segment-serving-different-resources-with-ruby-on-rails-route-constraints/", "published_at": "2015-01-19T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10111ad6663", "title": "Ignore query strings in Ruby on Rails caching with rack-cache", "url": "https://teotti.com/ignore-query-strings-in-ruby-on-rails-caching-with-rack-cache/", "published_at": "2015-01-09T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10112239ec8", "title": "Building intention revealing Ruby on Rails helpers", "url": "https://teotti.com/building-intention-revealing-ruby-on-rails-helpers/", "published_at": "2014-12-30T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10112ad7ccc", "title": "Simulate order by field with Mongo DB aggregates", "url": "https://teotti.com/simulate-order-by-field-with-mongodb-aggregates/", "published_at": "2014-12-19T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10112e58e4c", "title": "Ruby on Rails filter pages using search engine polymorphic URLs", "url": "https://teotti.com/ruby-on-rails-filter-pages-using-seach-engine-polymorphic-urls/", "published_at": "2014-12-09T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101133d8dfa", "title": "Gemfile hierarchy in Ruby on Rails component based architecture", "url": "https://teotti.com/gemfiles-hierarchy-in-ruby-on-rails-component-based-architecture/", "published_at": "2014-11-19T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101143b86e5", "title": "GIT precommit hooks helping local Ruby GEMs development", "url": "https://teotti.com/git-precommit-hooks-helping-local-ruby-gems-development/", "published_at": "2014-08-05T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a10114532306", "title": "Deploy parts of a Ruby on Rails application", "url": "https://teotti.com/deploy-parts-of-a-ruby-on-rails-application/", "published_at": "2014-08-04T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a1011524734b", "title": "Building and maintaining a large Ruby on Rails application for 3 years", "url": "https://teotti.com/building-and-maintaining-large-ruby-on-rails-applications-for-3-years/", "published_at": "2013-07-16T00:00:00+00:00" }, { "id": "01a087eb-48ac-735b-8ab0-a101160ddd5a", "title": "Use of Ruby on Rails environments", "url": "https://teotti.com/use-of-rails-environments/", "published_at": "2013-04-30T00:00:00+00:00" } ] posts Claim your blog
Back to teotti.com
Blog · corpus.blog/blogs/teotti.com/posts

teotti.com

teotti.com

2026

2021

2020

2019

2018

2017

2016

2015

2014

2013