Better by default

Going through some old notes on technology choices, I came across Jason Moiron's excellent commentary on iron.io's performance gains from their switch to Go from a few years ago:

People have commented that these savings could have been gained from writing critical sections in C or by going over the original code with an eye for performance. Putting the obvious parallelization benefits that Go has over most other languages aside, the point they're missing here is that you more or less achieve these results by writing normal Go code.

While I still think Go lacks a lot in terms of language features to make productivity a priority, it's hard to dispute the fact that for a number of cases, Go is better by default. While my notes took Moiron's point to heart, I still chose Python for the bulk of the backend work of Audacious for now, for that exact reason. There are presently a few services written in Go for critical paths, but for the most part, Go is incredibly unproductive, especially in the context of simple Web service related things, which are, by and large, CRUD with one or two bells or whistles.

June 12, 2019 |


Women in the Room

Zach Holman makes a very solid point in the wake of the most recent wave of realisations that the tech industry is filled with misogynistic shitheads. The "throw women at the problem" approach to fixing the tech industry simply isn't the right way about it, and it obviously isn't working. It has to start somewhere else.

Fundamentally, the assholes who ruin it for everyone else need to either go, or change their behavior in major ways and own up to their past mistakes in a genuine manner. I must say, I'm pretty pleased to see a few of the most gnarly examples I've had the chance to interact with get theirs in recent time – including a few who have been smelling their own farts hard in public.

However, while this is all well and good, it shouldn't be the women's job to make this happen. There are enough "good guys" in this industry, that we should be able to call these people out and solve it within our own "ranks." Or at least, that's how it should be – and we should kind of all be embarrassed that this hasn't been the case. Sure, that gun-wielding founder is mercurial and scary and all, but whatever happened to doing the right thing? The industry as a whole spends so much time talking about "changing the world for the better," that surely, this must be part of the agenda too.

I mean, the whole industry can't possibly be this deranged... right?

July 3, 2017 |


A much needed grain of salt

I remember reading Malcolm Gladwell's "Outliers" a few years back and being unable to shake the eerie feeling that the whole premise was a bit too much "pseudo" and not enough "science." The book is by all accounts an interesting and somewhat thought provoking read on some of the factors that make up a select few "successful people." But, most conclusions were drawn from Fox News-esque summaries of research, and it left one wondering how heavily influenced the entire book was by selection bias.

Now, I know the book was never made out to be a scientific study of any sorts, but it seems like Gladwell's persuasiveness got the better of a lot of readers, as I've kept on hearing the fabled "10,000 hour rule" – Gladwell's rule, that if you put in 10,000 hours of practice at something, you'll be come an expert at it – stated as fact ever since the book came out. As it turns out, it's nowhere near as simple as that. In fact, earlier this year, a book excerpt written by Anders Ericsson – the main author of the study, "The Role of Deliberate Practice in the Acquisition of Expert Performance," Gladwell based his rule on – saw the author explain the extent to which Gladwell is incorrect (spoiler alert: Gladwell took a single average and made it a rule.) Especially the deconstruction of Gladwell's The Beatles example is eye-opening, if you didn't already balk at the example in the book. But, for a wider audience, I think the distinction of influential practice is probably the most important part of Ericsson's rebuttal:

This distinction between deliberate practice aimed at a particular goal and generic practice is crucial because not every type of practice leads to the improved ability that we saw in the music students or the ballet dancers.

In other words, even though someone has been doing something for 10 hours a day for 20 years, it does not make them an expert – it's their approach to it, that does. This is not at all to say that I think Gladwell's work should be dismissed altogether. It's merely to say, that I wish people would stop and think about what they read and are told, rather than just accepting it all at face value. For now though, the "10,000 hour rule" serves as a good indicator of when to walk away from a conversation, or counter with such equally fascinating and scientific facts as the 8 spiders a year consumed during sleep average.

July 17, 2016 |


Looking for maintainers for django_atomic_*

As I'll be leaving Iconfinder by the end of August, I'll no longer be using Django in my everyday life. Therefore, chances are slim at best, that I'll have the time to work on the atomic transaction signalling (and related) Django modules I've written mostly for the needs of Iconfinder:

Currently, they're all functional for Django 1.6 and 1.7, but I can make no such guarantees about Django 1.8 and beyond. But, as a few people are using these modules in production, I'd hate to see them just wither in my absence. So, if you're one of these people and wish to take over the task of maintaining them, I'd be very grateful. I'll happily hand over both the repositories and pypi ownership of the modules – just get in touch at nick@bruun.co.

Boom! Adam Johnson, the author of the MySQL extension Django module, django-mysql, has offered his services in maintaining the repositories going forward. I'm confident they're in great hands – thanks, Adam!

July 22, 2015 |


AArch64 on the server? Not yet.

For a couple of years now, I've been dreaming of building a low-power ARM server cluster for... something. I never really got the process very far; early ARM server SoC providers were either unwilling to respond to inquiries or completely unhelpful. Oh yea, and I never had a real reason for doing it, other than, you know, doing it. A week ago, that dream was reinvigorated by an actual use case. However, I "need" 64-bit addressing, so my drawer of odd ARM development boards I've accumulated during spouts of ambition over the last couple of years is useless. But, my iPhone 5s sported an ARMv8 64-bit processor, so surely there must now be some solid 64-bit SoCs out there?

With AMD's 64-bit ARM server revolution still failing to materialize, Calxeda going belly up and Marvell, Qualcomm and the rest focusing on mobile applications, it turns out the answer is "no." ... -ish. The only real contender with an actual product to show for is AppliedMicro with their X-Gene SoC. Although the development boards sport some pretty serious price tags ($1495 for the basic and $2495 for the fun one), an 8-core 2.4 GHz SoC with 10G Ethernet, a SATA III controller and ECC RAM support touting "Xeon-level performance" surely must be able to do the trick? After all, HP is now shipping microservers with this next-generation piece of silicon (points to the marketing division for repurposing the name "cartridge.")

As it turns out: no. AnandTech has done an excellent review, pitting the 1st generation X-Gene (the only one available) against some Atoms and low-end Xeons. The results are striking; the archaic 40 nm process with which the X-Gene 1 is produced coupled with the apparently abysmal performance means that AppliedMicro's big bet fails to deliver in every single way – including performance per unit of power. And in a big way.

As with any benchmark, there are some details to be kept in mind. The compiler generation used in the review doesn't have the latest in AArch64 optimizations, and this is of course only the first generation of the chip, with X-Gene 2 supposedly to be produced with a more modern 28 nm process. But, none of that really matters. As far as compiling your code and running it in production goes, the X-Gene 1 and the AArch64 environment at large seem to be so far off the mark it's not even a hypothetical contender at this point. For now, then, it seems we're still better off in any regard just buying mid-range Xeons and getting on with it.

April 14, 2015 |