• First Round Interview with Kimber Lockhart on Technical Debt

    It’s easy for teams to go to extremes with technical debt – either trying to eliminate any and all and the expense of delivering the needs of the business, or ignoring tech debt and letting it happen without any thought or purpose, eventually causing great pains later on in the product’s life.

    This interview with Kimber Lockhart has some great advice for engineering teams on how to handle technical debt responsibly. Here are a few highlights:

    Begin code review before anyone codes. The best technical teams envision — not just review — code together. “It goes without saying that some form of code review is essential in any type of engineering organization,” Lockhart says. “Early on, pair development or sitting next to each other reading through code will work. As the team grows, it might be important to get code reviews more formally from different individuals or teams.”

    For many companies, process evolves so that this code review is the only time engineers get feedback on their code and iterate to make it better,” says Lockhart. “Unfortunately, finding a problem after the fact forces the tough decision between taking the time to rewrite and living with bad code.

    Technical debt should be a controlled decision to take a shortcut.

    “Technical debt is not the scarlet letter. It happens to the best of teams. I’d argue it’s actually irresponsible for a startup not to have any technical debt.”

    Scrap the shortcuts that don’t save time. Lockhart has found that shortcuts can be an illusion — often it takes the same amount of time to write clean code as it would to produce code that introduces technical debt. “The problem is, bad code often feels faster in the same way hurrying feels faster,” says Lockhart, “little time is wasted planning and the code itself is written more frantically.”

    Create a rating system for bad code. “Many engineering teams lament the failure of their organization to adequately address bad code resulting from technical debt, but they can’t get their footing when asked how to resolve it,” Lockhart observes. “Engineering teams owe their organization careful prioritization, just like anyone else making requests.”

    “Hire seasoned engineers who have some tolerance for technical debt and an earned intuition when it comes to trade-offs. Seek developers who think in pros and cons, not absolutes.”

  • Better Colors in Vim

    I’m a sucker for pretty editors. Webstorm, Atom, Sublime and others have always have been better looking than Vim. Vim and the terminal simply weren’t able to support the 24-bit colors that the other editors could. Macvim did a lot to improve the situation but I really like to use Tmux, iTerm2, and Neovim together.

    Luckily, while doing some research on the topic the other day, I finally got 24-bit color support via iTerm (nightly), Tmux, and Neovim.

    Here is how to accomplish it.

    1.) Install Neovim. Here are the install instructions for Homebrew on Mac. Once complete, add the following to your Vim config file.


    2.) Download the nightly version of iTerm2. It supports 24-bit color.

    3.) Install a patched version of Tmux that supports 24-bit color.

    brew tap choppsv1/term24
    brew install choppsv1/term24/tmux

    Finally, here is what my setup looks like in all it’s colorful beauty.

    If you’d like to checkout my dotfiles and Vim config they are on Github here.

  • How to Create New Postgres User

    I was doing some work in Knex today, the fantastic SQL builder for node and needed create a new user. It took some research but here is what I found:

    This assumes you’ve already logged into Postgres with another user.


    To test it out just log back in.

    psql -h localhost -U myUser -d knex_test
  • Format XML Files

    Today I found myself looking through hundreds of unformatted XML files. I did some googling and found the following script that makes use of xmllint to format all the files and save copies of them to a ‘formatted’ folder.

    find . -maxdepth 1 -type f -iname "*.xml" -exec xmllint --format '{}' --output formatted/'{}' \;

    Worked like a charm (on Mac OS).

  • TXJS 2015

    I had the privilege of attending the Texas Javascript 2015 conference this past week. It had a stellar line up and I’d recommend watching the recorded live stream if you weren’t able to attend.

    The following were the highlights for me:

    Cold War Simulation by Simon Swain

    Simon had both an incredible slide deck and demo. He highlighted some impressive things that can be done with using Canvas. I rarely have an opportunity to use Canvas but his presentation makes me want to take a new, lengthy look at it.

    Client Side Security by Yan Zhu

    This presentation sent chills down my spine. Yan demonstrated some terrifyingly simple security holes that I wasn’t not aware of. But, she also showed some great new additions to browsers that will give developers tools to plug these holes and make the web a safer place.

    Select Box Usability by Alice Bartlett

    I really enjoyed this presentation. Alice explained the significant usability problems with select boxes. She played some videos of people struggling to figure out how to do the most basic tasks simply because of the select box control. It was a real eye opener and highlights that as developers we can’t take for granted our tech savviness and need to analyze every element we add to a site.

    Service Workers by Jake Archibald

    The hilarious Jake Archibald walked us through using Service Workers to build more performant and offline sites. He had a very interesting demo for using Service Workers to help users with spotty connection. I can see a lot of potential Service Workers in the future to load assets in the background and speed up page load time. I’m very excited to try them out!

    There were many more interesting lectures so I’d definitely recommend watching the live stream. But, if you don’t have time to watch the live stream, then at least take a look at G. Scott Olson sketchnotes for the conference.