The Curious Engineer

All blogs / Elixir / Erlang

German Velasco

germanvelasco.com

Software developer and consultant. Let's build great software together.

Elixir / ErlangTesting / QASoftware / engineering practiceAI / ML

Posts
94 from 18 Jan 2016 to 3 Sep 2026
Posting
monthly (12 in the last year)
Kind
personal blog
Feed
https://www.germanvelasco.com/feed.xml

2026 12

  1. Don’t niche down. Position yourself.
  2. Diverge then converge with LLMs
  3. Are plan files the new 10k-line PRs?
  4. Reflections on creating ExCrap without looking at the code
  5. Why dead code feels hard to delete
  6. Draw the rest of the ___ owl (software factory edition)
  7. Stop writing code by hand (and feel the friction)
  8. Daily writing retrospective
  9. Thinking about the extremes to break out of local maxima
  10. Pair-programming is a cheat code
  11. What Managerial Economics can tell us about AI and Software Development
  12. Your problem is (often) two problems

2025 2

  1. Why do we write tests?
  2. 🤖 ➡️ 😄 Humanize your standups

2024 2

  1. Elixir Streams hits a 100 videos! 🎉
  2. Introducing PhoenixTest

2023 8

  1. Don’t silo your team
  2. Refactoring has a price. Not refactoring has a cost. Either way, you pay.
  3. The Phoenix testing pyramid
  4. Prefer LiveView's assert_redirect over assert_redirected
  5. Build your own lazy operation evaluator in Elixir
  6. Phoenix 1.7's verified routes
  7. Using `dbg/2` to replace `IO.inspect/2` and to pry into code
  8. Elixir 1.14's new `:optional` option when deriving the `Inspect` protocol

2022 23

  1. Phoenix 1.7 is View-less! 😱
  2. Adding `gh` to my pull request workflow
  3. A short introduction to BDD
  4. 7 GUIs: Implementing a Circle Drawer in LiveView
  5. They own the problem. You own the solution.
  6. Write commit messages with the future in mind
  7. Avoid test setup pollution (and 4 problems it creates)
  8. How LiveView got rid of dangling processes in tests – and how we can do the same
  9. Is the test LiveView immutable or not?
  10. Minimize context loss when opening a Pull Request
  11. Reduce the friction of executing a test
  12. Ecto's uniqueness constraint vs Rails' uniqueness validation
  13. Using ExUnit's `start_supervised/2` for better cleanup
  14. TDD changes code design from invention to discovery
  15. Mocking External Dependencies in Elixir
  16. Dependency Inversion with Elixir Protocols
  17. Using mix aliases to improve your workflow
  18. elixir lunch is now elixir social
  19. Testing Singleton Processes with Dependency Injection
  20. Starting elixir lunch
  21. Taking LiveView's JS commands for a spin
  22. BDD and just-in-time development
  23. New to Elixir? Beware of Date and DateTime Comparisons!

2021 13

  1. Lateral Joins Instead of Window Functions
  2. What is Elixir? For my Ruby friends.
  3. 7 GUIs: Implementing a CRUD App in LiveView
  4. Project-wide find and replace in Vim
  5. CSS Selectors for Tests
  6. 7 GUIs: Implementing an Interactive Timer in LiveView
  7. 7 GUIs: Implementing a Flight Booker in LiveView
  8. I'm going on a consulting adventure!
  9. 7 GUIs: Implementing a Temperature Converter in LiveView
  10. 7 GUIs: Implementing a Counter in LiveView
  11. Deadlines vs Appetite
  12. Keeping the same path helpers when turning a view into a LiveView
  13. Culture is a 50-day moving average

2020 12

  1. Using has_element?/3 for better LiveViewTest assertions
  2. A minimalist LiveView testing guide
  3. TDD Phoenix Update (Nov 2020)
  4. Testing LiveView talk and course
  5. Break apart your features into full-stack slices
  6. Pay the cost up front. Don't distribute it to others.
  7. Beyond basic modal editing. Using vim's command-line mode.
  8. TDD Phoenix — update on a work in progress
  9. On Quitting Vim
  10. Remote Tools and Tips in These Remote Times
  11. Breaking Out of Ecto Schemas
  12. Splitting a Commit

2019 10

  1. 5 Tips for More Helpful Code Reviews
  2. Faking External Services in Tests with Adapters
  3. Supercharge Your Elixir and Phoenix Navigation with vim-projectionist
  4. Finding the Time to Refactor
  5. Dumpster Diving through Dotfiles: Remote Git Branches
  6. Let's Not Misuse Refactoring
  7. Better domain modeling in Elixir with sum types
  8. Dumpster Diving through Dotfiles: Better Git Logging
  9. Back to basics: psql
  10. Say no to more process, say yes to trust

2018 8

  1. A couple of Elixir videos on Upcase
  2. Do you break your Elixir eggs on the big end or the little end?
  3. Don't forget the silent step when you squash and merge
  4. Is Elixir a scripting language?
  5. Write good commit messages by blaming others
  6. Long-lived processes in Elixir
  7. Build your own web framework in Elixir (video)
  8. How to organize your functional code

2017 1

  1. An introduction to concurrency in Elixir

2016 3

  1. Tests as Counselors of Design
  2. Elixir simple_one_for_one Supervisors
  3. Tests as Tools for Understanding