German Velasco
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
- Don’t niche down. Position yourself.
- Diverge then converge with LLMs
- Are plan files the new 10k-line PRs?
- Reflections on creating ExCrap without looking at the code
- Why dead code feels hard to delete
- Draw the rest of the ___ owl (software factory edition)
- Stop writing code by hand (and feel the friction)
- Daily writing retrospective
- Thinking about the extremes to break out of local maxima
- Pair-programming is a cheat code
- What Managerial Economics can tell us about AI and Software Development
- Your problem is (often) two problems
2025 2
2024 2
2023 8
- Don’t silo your team
- Refactoring has a price. Not refactoring has a cost. Either way, you pay.
- The Phoenix testing pyramid
- Prefer LiveView's assert_redirect over assert_redirected
- Build your own lazy operation evaluator in Elixir
- Phoenix 1.7's verified routes
- Using `dbg/2` to replace `IO.inspect/2` and to pry into code
- Elixir 1.14's new `:optional` option when deriving the `Inspect` protocol
2022 23
- Phoenix 1.7 is View-less! 😱
- Adding `gh` to my pull request workflow
- A short introduction to BDD
- 7 GUIs: Implementing a Circle Drawer in LiveView
- They own the problem. You own the solution.
- Write commit messages with the future in mind
- Avoid test setup pollution (and 4 problems it creates)
- How LiveView got rid of dangling processes in tests – and how we can do the same
- Is the test LiveView immutable or not?
- Minimize context loss when opening a Pull Request
- Reduce the friction of executing a test
- Ecto's uniqueness constraint vs Rails' uniqueness validation
- Using ExUnit's `start_supervised/2` for better cleanup
- TDD changes code design from invention to discovery
- Mocking External Dependencies in Elixir
- Dependency Inversion with Elixir Protocols
- Using mix aliases to improve your workflow
- elixir lunch is now elixir social
- Testing Singleton Processes with Dependency Injection
- Starting elixir lunch
- Taking LiveView's JS commands for a spin
- BDD and just-in-time development
- New to Elixir? Beware of Date and DateTime Comparisons!
2021 13
- Lateral Joins Instead of Window Functions
- What is Elixir? For my Ruby friends.
- 7 GUIs: Implementing a CRUD App in LiveView
- Project-wide find and replace in Vim
- CSS Selectors for Tests
- 7 GUIs: Implementing an Interactive Timer in LiveView
- 7 GUIs: Implementing a Flight Booker in LiveView
- I'm going on a consulting adventure!
- 7 GUIs: Implementing a Temperature Converter in LiveView
- 7 GUIs: Implementing a Counter in LiveView
- Deadlines vs Appetite
- Keeping the same path helpers when turning a view into a LiveView
- Culture is a 50-day moving average
2020 12
- Using has_element?/3 for better LiveViewTest assertions
- A minimalist LiveView testing guide
- TDD Phoenix Update (Nov 2020)
- Testing LiveView talk and course
- Break apart your features into full-stack slices
- Pay the cost up front. Don't distribute it to others.
- Beyond basic modal editing. Using vim's command-line mode.
- TDD Phoenix — update on a work in progress
- On Quitting Vim
- Remote Tools and Tips in These Remote Times
- Breaking Out of Ecto Schemas
- Splitting a Commit
2019 10
- 5 Tips for More Helpful Code Reviews
- Faking External Services in Tests with Adapters
- Supercharge Your Elixir and Phoenix Navigation with vim-projectionist
- Finding the Time to Refactor
- Dumpster Diving through Dotfiles: Remote Git Branches
- Let's Not Misuse Refactoring
- Better domain modeling in Elixir with sum types
- Dumpster Diving through Dotfiles: Better Git Logging
- Back to basics: psql
- Say no to more process, say yes to trust
2018 8
- A couple of Elixir videos on Upcase
- Do you break your Elixir eggs on the big end or the little end?
- Don't forget the silent step when you squash and merge
- Is Elixir a scripting language?
- Write good commit messages by blaming others
- Long-lived processes in Elixir
- Build your own web framework in Elixir (video)
- How to organize your functional code