Elixir Wizards is an interview-format podcast, focused on engineers who use the Elixir programming language. Initially launched in early 2019, each season focuses on a specific topic or topics, with each interview focusing on the guest's experience and opinions on the topic. Elixir Wizards is hosted by Eric Oestrich and Sundi Myint of SmartLogic, a dev shop that’s been building custom software since 2005 and running Elixir applications in production since 2015. Learn more about how SmartLogic uses Phoenix and Elixir. (https://smartlogic.io/phoenix-and-elixir?utm_source=podcast)
"Keeping it Fresh" with Bilal Hankins and Anna Dorigo
In Office Hours Episode 6, SmartLogic Developers Anna Dorigo and Bilal Hankins join Elixir Wizards Sundi and Dan to discuss their experiences maintaining a decade-old Ruby on Rails codebase.
They delve into the critical importance of deeply understanding the codebase, keeping dependencies current, and adapting to the original application's evolving priorities and design choices.
The conversation spans a range of topics, including accessibility, testing, monitoring, and the challenges of deploying database migrations in production environments. The guests share effective strategies for sustaining and enhancing older codebases, such as employing automated tools, performing code audits, and adhering to clean coding principles.
Key topics discussed in this episode:
- Grasping the legacy codebase and its historical context
- Overcoming accessibility issues in older applications
- Safe dependency management and upgrades
- The effects of application scaling on database performance
- The critical role of comprehensive test suites in legacy systems
- Using tools like Sentry for error tracking and performance monitoring
- The benefits of automated security and dependency scans
- Juggling client needs with budget constraints
- Local simulation techniques for large datasets
- The value of iterative code reviews and maintaining clean code
- Utilizing git history for contextual understanding
- Onboarding strategies for legacy projects
- Removing obsolete code and avoiding "magic numbers"
- Importance of descriptive naming for better code clarity
- Leveraging a rich repository of example code for learning and reference
- Proactive code audits to anticipate issues
- Managing pull request sizes for smoother reviews
- Communicating effectively about upgrades and potential impacts
- Strategies for handling large databases efficiently
- Ensuring thorough test coverage
- Keeping open lines of communication with clients regarding ongoing maintenance
Links mentioned:
COBOL programming language https://developer.ibm.com/languages/cobol/
Ruby on Rails https://rubyonrails.org/
ARIA Rules (Accessible Rich Internet Applications) https://www.w3.org/TR/using-aria/
Shawn Vo on Elixir as a Competitive Advantage https://smartlogic.io/podcast/elixir-wizards/s5e5-vo/
Bundler Audit Ruby Gem https://rubygems.org/gems/bundler-audit/
Sentry application monitoring and error tracking software https://sentry.io/
Dependabot Github automated dependency updates
Mix hex.audit https://hexdocs.pm/hex/Mx.Tasks.Hex.Audit.html
Git Blame https://git-scm.com/docs/git-blame
Cow hoof trimming videos - The Hoof GP on YouTube (TW graphic imagery)
Special Guests: Anna Dorigo and Bilal Hankins.