Starred Notes from CodeMash 2019

0
January 13, 2019 // irl

It’s a new year, and I’m grateful to have started things off at a conference like CodeMash to sharpen the saw and re-energize. Similar to previous blog posts, I’d like to share some highlights from the sessions I attended. The single biggest takeaway from each session is also bolded for you tl;dr lovers. 😉

Same disclaimer as always: Please keep in mind this is only my paraphrasing or lessons learned from each talk, and may not be even remotely accurate of what the speaker was trying to convey.  We all hear what we want to hear.. 😉

Code Reviews: That’s a Great Idea! – Amy Gebhardt

  • “Formal code reviews are 30-35% more effective than unit testing” -Steve McConnell in Code Complete
  • 200-400 lines of code is the sweet spot
  • Set time expectations (e.g. one hour) for reviews
  • Have a style guide, the conventions are always there so be courteous enough to make them explicit/discoverable
  • Avoid general feedback like “this looks great” or “this is messy”
  • Be specific with feedback, both positive and negative, so the author can continue/adjust accordingly
  • Don’t do feedback sandwiches (positive, negative, positive), but do look for positives as well as negatives
  • Assume positive intent, both in the author and the reviewers
  • Code reviews are not about making the code better, it’s about empowering each other to write great code

Leadership Guide for the Reluctant Leader – David Neal

  • “Humility is not thinking less of yourself, it’s thinking of yourself less.”
  • Fixing weaknesses just brings someone up to average, instead emphasize their strengths for significant impact
  • What’s a highway at 100% utilization? A parking lot. There needs to be slack in the system.
  • People will forget what you said and did but remember how you made them feel
  • It’s always the right time to do the right thing
  • If your actions inspire others, you’re a leader

“Did you get my message?” A comparison of several modern messaging platforms – Jack Bennett

  • Why messaging? It’s a versatile technology behind several software paradigms.
  • Apache’s Kafka – heavy solution that supports publish, storage and process techniques
  • RabbitMQ – most popular open source message broker, does not support persistence
  • ZeroMQ – light-weight solution that extends socket abstraction concept and is embedded as a piece to other solutions

git gone wild: how to recover from common git mistakes. – Magnus Stahre

  • git is composed of refs, which point to a commit, which point to a tree, which point to a blob
  • Need to throw away a specific commit?
    • git rebase d –onto d~
  • Need to amend a previous commit?
    • git rebase -i d~
    • git rebase -continue
  • Need to find the commit that caused a bug?
    • git bisect start
    • git bisect good d
    • git bisect bad a
    • git bisect good c
    • etc.

Learning the Three Types of Microservices – Mike Amundsen

  • Microservice principles are interchangeable with unix program principles (history repeats itself again)
    • SRP (single responsibility principle)
    • Output of each is input of another
    • Release independently
  • Can bucket into three types
    • Stateless – ephemeral computing (e.g. translation, conversion)
    • Persistence – durable storage (e.g. simple I/O)
    • Aggregator – workflow choreography (e.g. chain of events)
  • Any HTTP verb except POST should be idempotent

Extreme Performance Architecture – Oren Eini

  • Code optimizations can get you 10-500% improvement
  • Architecture optimizations can get you orders of magnitude improvement
  • Counter-intuitive solutions (e.g. disable cache) can surprise you, validate your assumptions
  • Understand the environment where your code runs and utilize it

Building Products Sustainably with Resilient Teams – Waldo G

  • Beware an unhealthy focus on features over operations
  • Watch out for low consideration of can we run this responsibly in production over time
  • Organize as self-contained product teams that bear responsibility (and ideally control) over their products/features

Building Letters for Livia: A Vue.js App in an Hour – Jessica Mauerhan

  • Vue.js has been the most starred JS framework the last three years in a row (https://stateofjs.com/)
  • Vue is lighter than Angular and only supports one-way binding
  • Vue is similar to React but doesn’t require ramp-up on custom JSX format
  • Built to be an incrementally adoptable system

Rekindle Your Love – Avoiding Burnout In A Fast Paced World – Kalvin Tuel

  • Burnout is not because you don’t love something anymore, it’s because you are out of balance with your other loves
  • We’re cursed to believe our failures are something other than stepping stones
  • Budget your time, just like you budget your finances
  • Write down your top 10 priorities, choose the bottom five and let go of them. Rank the remaining five and balance your time accordingly.

THE STORIES OF THE MOST INFAMOUS BUGS – Ian Zelikman

  • Mars climate orbiter – separate modules/teams need to talk to each other
  • Ariane 5 explosion – reuse without retesting is dangerous
  • AT&T network outage – trying to improve can degrade
  • Patriot system failure – be clear in your documentation (“reasonable” is subjective)
  • Soviet nuclear false alarm – test your edge cases and humans are still critical

Finding your place in the Cosmos: When and why you should consider Azure Cosmos DB. – Eric Potter

  • Cosmos makes global distribution as easy as a click of a button
  • Supports five consistency models so you can trade-off accuracy and speed
  • Supports document, key-value, graph and column store models
  • Underneath the covers everything is atom-record-sequence

The Two Question Code Quiz: How to Interview Programmers Effectively – Scott Connerly

  • If you can google the answer, it’s a bad question
  • Do collective problem solving (e.g. how would you build Monopoly online?)
  • Clearly define what you’re looking for and evaluating on before you ever interview
  • “Tell me about what you have owned”
  • Have a reason behind every question you ask (e.g. “Why did you get into development?” can really answer are you passionate or a clock-puncher).
  • Anyone that is a maybe hire, is a do not hire

Building Your Team to Last – Sarah Withee

  • Before hiring, ask the team what they feel is missing
  • Advertise the role correctly (say what you mean)
  • When onboarding, provide a mentor who will willingly answer questions and is easily available

CodeMash 2019 Summary

I had a fantastic time at CodeMash and so much of the content was extremely relevant to where I’m at today. I want to express my gratitude to the speakers, organizers and everyone involved in making CodeMash an amazing experience.. as well as my employer Viral Launch who made it possible for me to go even when there’s always pressing priorities in the office.

Previous CodeMash notes (2017): http://www.codecadwallader.com/2017/01/15/starred-notes-codemash-2017/

About the author

Steve Cadwallader is a software developer who geeks out on user interfaces, clean code and making things easier.

Leave a Comment