-
The REPL: Issue 33 - April 2017
A Visual Introduction to Machine Learning
This stunning presentation will give you a quick introduction to machine learning and how it applies statistical learning techniques to identify patterns in data. In turn, those patterns are then used to make highly accurate predictions. The visualization are beautiful and explain intuitively the concepts described. I commend the R2D3 team behind this work and look forward to the second installment.
On-call at Any Size
This article is part of the first issue of Increment, a new digital magazine about how teams build and operate software at scale. The post is a report on what they found after interviewing teams of many sizes. There are some commonalities and best-practices that emerged from their interviews, some of which only apply at certain scales.
One of the things I love about being in software is the current environment of openness that a lot of companies operate in. They publish how they work, what they have tried. Everyone benefits.
Moneyball Teams
Brian Graham takes on hiring at software teams and makes an analogy to Moneyball (book and movie). His concept is that hiring only “the best” is hardly an effective strategy. The focus should be on building a team that can deliver on needs. Each developer brings different capabilities and are rarely interchangeable with each other. By looking at the needs of your team, your are in a better position to make good hiring choices.
-
Book Review: Programming Phoenix
Programming Phoenix: Productive -> Reliable -> Fast by Chris McCord, Bruce Tate, José Valim is an introduction to Phoenix, a web application framework written in Elixir. The authors bring a lot to the table: Chris is the main author and manitainer of Phoenix. José is the author of Elixir, prolific contributor to Phoenix and once a Rails core member. Bruce is author on several books about Java and Rails.
-
The REPL: Issue 32 - March 2017
Use the Unofficial Bash Strict Mode (Unless You Looove Debugging)
Bash is ubiquitous. Even Windows runs it now. Often, it’s the minimum common denominator you can expect a computer to have, without needing to install extra dependencies, which is why I often find myself writing bash scripts. In this article, Aaron Maxwell explains how to set a few options that will make it easier to avoid bash’s many pitfalls.
Validation, Database Constraint, or Both?
Derek Prior brings a well-articulated argument of when to use Rails validations and when to rely on database constraints. His advice is solid, for Rails, which doesn’t handle constraint violation in the database well. After reading this article, I found out that Ecto – an Elixir database wrapper – does handle database constraints and makes them errors to the rest of the application. I wish Rails had that!
So you want to be a wizard
Julia Evans made available a transcription of a keynote talk she gave recently. I really liked how show approached learning and breaking down big problems into manageable pieces. At some level, what she proposes is basic curiosity, without getting hung-up on your current level of understanding. Do you need to debug tcp networking in Linux, but don’t know about it? Read some books on it. Is that not enough? Open up the source code and read that. Inspiring, yet refreshing. We can all learn anything, as long as we do it methodically and with dedication.
-
I Also Built A CLI Application in Crystal
Recently, I’ve read about porting a Ruby application or writing a command-line application to Crystal. As it happens, I had started doing the same thing myself a while ago and recently finished it. My motivation was intellectual curiosity. Learning a new language is useful in itself, but I have also found that it learning paradigms in a new language influences how we use other languages as well.
-
The REPL: Issue 31 - Februrary 2017
Online migrations at scale
Performing database migrations – changes in the underlying schema – is a necessity for many web systems, usually because they don’t want to disrupt customer traffic. This post described how they solve this at Stripe. In my team, we follow a similar approach, but instead of dual-writing, we solve the problem by dual-reading. In any case, I commend Strip and other companies like it for detailing their successes in articles like these. The whole software engineering community gains.
The Security Impact of HTTPS Interception
In this fascinating article, researches from academics and industry detail how they went about measuring the use HTTPS interception products and it’s impact on security. HTTPS interception is usually deployed by IT systems so that they can decrypt HTTPS traffic and scan it. Essentially, it’s like a man-in-the-middle attack that the user consents to. Not surprisingly, in most cases, the use of HTTPS interception results in downgraded security.
Software Engineering at Google
Fergus Henderson describes Google’s key software engineering practices. There are great insights into their process and approach, as would be expected from one of the most successful software companies today. It includes things like how they store their source code, which languages they use, their build system, code review process, debugging and profiling, 20% investment time and project and people management. Not every company can or should adopt all their practices, but most would benefit from some of them.