Posts

Hiring in an Up economy

Image
/via http://www.commitstrip.com/en/2017/12/04/how-many-other-candidates-are-there/

Aligning Incentives in Software Development

Image
Shit happens.   Sometimes it happens because you screwed up, sometimes it happens because somebody else screwed up, and sometimes, well, it Just Happens. Relying on it not happening is a sucker’s bet — don’t go there, especially when it comes to software. Software will not, and can not, be defect free (•). A far,   far   better approach is to assume that it will happen, and set things up so that you can deal with the aftermath — limit the blast radius, clean up the detritus, fix the bug, deploy the update, compensate the afflicted, etc. And that, my friends, finally gets us to Incentives — the carrots and sticks — which ensure that all the parties are committed to, appropriately, dealing with the aftermath. The sticks, in this case, are “ the pain and suffering caused by the issue ”, and the carrots as   “relief from this pain ”. The way to align incentives, is to make sure that that the people who can actually resolve an issue should feel pain from the iss...

Kubernetes Workflow with Argo

Image
(For when you need to get beyond basic container orchestration) Seriously, Kubernetes is great for your baseline orchestration — stuff like scheduling, nodes, volumes, and so forth. It’s when you get into the complexity of workflows — like all the entertainment around continuous delivery — that you eventually realize that you need   something more , and that your increasingly complex python/scripting setup needs to be cleaned up. Enter Argo —  https://github.com/argoproj/argo  — which takes care of specifying, scheduling, and co-ordinating these workflows, the steps therein, and the interactions between these steps, all in a simple declarative style (YAML! You can munge this into your repo, and be well on your way towards immutable infrastructure!) In addition, Argo also integrates artifact management — which, in and as of itself, is ridiculously useful. My highly unscientific survey guesstimates that around 70% of the cruft in most existing home-built systems revolves ar...

Image (mis)-Classification, Deep Learning, and an Uncertainty Principle?

Image
You’ve seen the articles about the horror of image mis-classification, right? The ones where Stop Signs aren’t recognized because of stickers, schoolbuses become panda bears, and faces aren’t recognizable because of glasses (°)? The reason for this has been hard to identify, but Gilmore et. al. —  https://arxiv.org/abs/1801.02774  — may have found something in play, a kind of Uncertainty Principle if you will. They found that there is a tradeoff between the test error, and the distance to the test error (in the higher dimensional space that the classifications are occurring in). To put this differently, it has been assumed that the mis-classification occurs because the model is incorrectly including data from outside the classification space(“outside the data manifold”). What this result seemingly shows is that the models are   correctly identifying incorrect data , they actually think the school-bus is a panda bear, so to speak. If true, this may point out that — for ins...

The Dunning-Kruger Effect

Image
When people believe they are way more — tremendously more — competent than they actually are. Sound familiar? We all know people like this (boy,  do  we these days!), and the cause is fairly straightforward —  the cognitive bias of illusory superiority results from an internal illusion in people of low ability and from an external misperception in people of high ability; that is, “the miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others.”  (/via  Wiki  ) Anyhow, in song…

Are we still cool with using BGP?

Image
TL;DR —  “There is no evidence of the imminent collapse of BGP”   and none of the metrics indicate that growth is anything other than within router capacity. When we look at BGP (•) performance, and possible issues, there are two main things we tend to be concerned about • Routing Table Size  : since each router has a local db containing all the prefixes for each routing peer, and each of its line cards contains a decent subset thereof. Which translates to, at line speed, the need to do an imprecise 32-bit lookup on this ever-growing db in less than 5ns (yes, that’s hard!) • Update frequency (route churn)  : As this goes up, the router starts to lag, and eventually just drop, updates. At best, this means “ghost routes”, with the router reflecting some past state of the network. At worst, router loops, where a packet just goes round and round till it times out. Each just worsens the problem.   Geoff Huston looks at these problems , with metrics, and, defin...

Flexpoint — float16 with 16-bit mantissa

Image
Intel — as part of their Nervana processors — introduced Flexpoint ( flex16+5 ), for tensor operations. Gory details in the paper below, but think of it as • all the elements of the tensor have the same exponent • the extra 5 bits of precision in a 16bit op can now be allocated to the mantissa. • which means you’re basically doing integer operations on the entire tensor • which can mean faster, and less expensive, hardware • the exponent (and hence the dynamic range) is updated for the tensor as a whole during training The last bit is particularly useful — and fascinating! — since it turns out that during training, tensors  “have a rather peaked (and rightward skewed) distribution sufficiently covered by a 16-bit range. But the positions of these ranges vary from tensor to tensor, and for certain tensors they shift significantly during the course of training”  (image above). Regardless of whether Nervana catches on,  flex16+5  seems like a pretty nifty ...