Samsung Galaxy S6 First Impressions

They’ve done it. After a couple of false starts, Samsung have finally worked out what people want in a phone. Good design, great materials, fast software that gets out of your way, and a kick-ass camera.

The S5 was a hilaribad warmed-over S4, stuffed with crapware and ignoring much of the great work Google has put into Android over the last few years. The S6 in comparison is a fresh start.


Apart from the obvious screen difference, the S6 and S6 Edge are all but identical. Apparently the S6 has a battery about 2% smaller than the edge. I’ve come to ignore processor, memory and screen details these days, because they’re all good enough. What matters is that the UI is responsive: Samsung have nailed it on this one. No glitches, smooth animation, and the camera startup time is finally OK (which is novel for an Android phone).

The camera is a stunner. I imagine the nerds will give some in-depth comparisons that might prove the iPhone 6+ has better chromatospores or some other nuance, but in-person it’s obvious the S6 does incredible things in low light. Our location this morning was camera-punishing: low light with a bright window. Where the iPhone couldn’t cope, the S6 pulled out well-metered, front-lit photos with great white balance. I was pleasantly surprised because we can normally completely ignore any claims of camera superiority over an iPhone.

The phone feels … robust. They’ve done away with the flimsy removable back that made the S4 and S5 creaking and cheap-feeling. The S6 by comparison feels solid and expensive.


Basically: who are you and what have you done with Samsung?!

I’m not sure if Google demanded that Samsung cut back on the crapware, or if Samsung woke up. Whatever the reason, Samsung’s take on stock Android in the S6 is massively improved over the predecessors.

S-Health, S-Travel, S-Whatever have all been relegated to simple icons in the launcher. They’re there if you want them, but not in your face like they were on the S5. Even Samsung’s take on the settings panel is logical, fast, and easy to use.

Samsung Pay is difficult for kiwis to understand, but I think it will work well in the USA, where magstripe is still a thing and will be for years to come. The convenience of magstripe is causing headaches for both chip-and-pin and NFC adoption in the USA, and Samsung have done well to find a workaround for this. I presume the S6 has a magnetic field generator inside it, and it’s pretty neat to see the way it finagles the magstripe reader into thinking it has seen a card.

The Edge

Better than the U2 version, Samsung’s Edge is more than a gimmick. For one: it looks gorgeous. It makes the phone look different to anything that has come before. It looks truly modern; space-age even. It tapers to a slim, sharp edge that feels nice in the hand, with a feeling of security that reminds me of the hard-edged iPhones 4 and 5. No slippery curves here.

The software applications for the Edge are pretty neat too. Rub it gently in sleep mode and the Edge will show you the time and notifications. An incoming call from a favourite contact will light up the Edge in a selected colour. If you’re one of those people that uses the flash-notification on your iPhone to alert you to silent calls, I think the Edge will be a nicer approach to the same problem.

Overall, I’m impressed by the S6. Samsung have pulled back from their crapware-for-everything focus, and turned their impressive heft toward hardware and system design. The results are obvious: gorgeous hardware with what looks to be the best near-stock Android platform available.

(Re)Building from the ground up

A few years ago the New Zealand Warriors went through a particularly tough patch. I remember watching them recover from that particularly tough patch. I recall the way the team would back each other up after mistakes. After a dropped ball or a missed tackle, several team mates would approach the player, offering advice and consolation. Back-pats, smiles, words of encouragement. With this supportive culture, they reduced their mistakes, improved, and went on to complete one of their greatest seasons.

A year ago the engineering team at Vend went through a rough patch. We didn’t have our shit together. We were a new team trying to operate in the hairball structure of an early start-up, where everyone demands everything and everyone just builds stuff as fast as they possibly can. We struggled to ship at pace.

With the application of focus, a bit of structure (but mostly trust), and heaps of great new people, we’ve improved. We’re incredibly tough on ourselves and are convinced that we’re a long way from optimum output, but we’re better.

experimentalI’ve come to realise that building a high-performance team in a fast growing business is just one long fail. At any point in time you can only think “hell, we have to do better than this”. Yet when you look back over a year of growth, the improvement is phenomenal.

Every day we start from yesterday’s mistakes and failures, building a team that can cope with tomorrow’s inevitable challenges and changes.

Today, we drop the ball and we pat each other on the back and offer words of advice. Tomorrow we will do better.

Tomorrow we do a bit better, but we still drop the ball and we pat each other on the back and offer words of advice.

And the next day we do a bit better.

QCon NYC Day Two: Skills To Pay The Bills

[This is a slightly modified version of an internal travel blog post I wrote for the Vend crew]

It’s a dreary Thursday in downtown Brooklyn, low cloud, muggy – but at least I got some good sleep. The F-Train was packed this morning.

TL;DR: Embrace imperfection and change. Still no one doing transactional microservices.

Tweet of the day:

The day kicked off with Dianne Marsh, Director of Engineering at Netflix. She didn’t elaborate a lot on what Aidrian said about Netflix culture on Wednesday, but did list through a bunch of tools they use to do their builds and deploys. They use tools like Asgard and Animator to manage and deploy Amazon Machine Images (AMIs) directly. Apparently this is pretty old-school compared to what we’re doing with Puppet; and Chef, and new containerised deploy tools.

She talked about freedom and responsibility at Netflix, using the example of an engineer who wanted to use Python (freedom), but was required to completely integrate it with Netflix build, deploy and monitoring stack (responsibility).

Next up was my favourite session of the day: Michael Feathers talking about Conway’s Law (’s_law) and suggesting that we flip it around. What if we organised the company structure around the way we would like our architecture to look? We’re already doing this with our separation of POS clients and API, but if we were to run separate teams based on product area, would that cause us to define better boundaries between those components? Maybe.

Michael had some interesting thoughts about cruft and debt. What if we treated entire swathes of code as “open for extension, closed for modification” like OO classes? His point that there should perhaps be a more clear delineation when a section of code is “closed”, but teams instead tend to let things tail off a bit without properly “closing” stuff.

Michael also touched on constantly changing teams, and asserted that teams and employees will ALWAYS change faster than the structure of the application. So if we always assume that teams will change, then we design ways to cater for that. He suggested keeping teams small is a good idea – like smaller than 12 people per team. HAHA. LOL. [We don’t have many more than 12 engineers at Vend right now]

Also, Michael talked about combining Conway’s Law with Dunbar’s Number (’s_number) to posit that there is an actual upper limit on the overall size of a feature that a team can manage, and therefore the overall size & complexity that an entire product could safely be given a number of teams and engineers. He referred to this as “human scale” software architecture, and suggested that these limits should be taken into account using careful “asset management” when planning new features, and that features should not actually be added if they can’t be supported. Interesting.

Then (fanboy moment) Eric Evans – Mr Domain Driven Design. Warning for designers: his book has the ugliest cover design in the history of technical book covers. Ugh. Anyway, digression. Eric’s talk was about embracing imperfection, which I think surprised much of the room given how dogmatic some proponents of DDD have become.

Eric talked about creating Bounded Contexts, and how useful these are in refactoring software. Define an area of the application that you want to work on, nail down a clean domain model for it, and build a translation layer (ahoy! API!) between that context and the rest of the app to abstract away imperfection. He went on to explain that yes, this will result in multiple different models throughout the app, but this is inevitable, and in fact desirable because it gives you more flexibility to cater for the specifics in each context.

One interesting thing Eric talked about was that adopting a “trendy new language” can in fact be a good way to force the creation of a new bounded context, because:

  • Early adopters tend to be very capable developers.
  • The new language marks the part of the software where “we’re going to do it right” – at least initially.
  • The new context makes connecting with other parts of the application in a loosely coupled way a conscious step

Of course there are all the downsides of early adoption too, like will the language still be around, and will people have the knowledge to work on it? No easy answers here, but Michael (in the prior talk) did make the point that longevity of a species implies death and rebirth, not immortality. Deep.

Finally Eric talked about acknowledging imperfection at small-scale via what he calls the “spill zone”. You’re building or refactoring something and you have a wonderful elegant model that solves 90% of the cases, is within reach of a further 5%, and simply can’t cater for the final 5% weird-cases. What do you do? You use an if-then-else and write a crappy “allTheRest()” function to cater for the weird cases. He suggests this is a faster, better approach than spending much longer attempting to reach an elegant model for 100% of cases. AND the “allTheRest” function doubles as documentation of the weird cases.

In closing: I’m glad I wrote this, because Thursday’s sessions didn’t feel as interesting as Wednesday, but in review there are some interesting nuggets there. I’m looking forward to Friday because there is an entire stream on Engineering Culture with talks from GitHub and others. Peace out.

QCon NYC Day One: No Sleep Til Brooklyn

[This is a slightly modified version of an internal travel blog post I wrote for the Vend crew]

After a couple of nights of 4-hour jet lagged sleeps, I caught the F-train subway from my sister’s house (near Prospect Park) to Downtown Brooklyn. Turns out that the inside of the Brooklyn Marriot is the same as any conference centre in the world, regardless of how much Beastie Boys I listen to.

I sat through 7 talks, and will try to summarise my top 3 each day.

TL;DR: We’re doing cutting-edge work in a supportive team culture at Vend. There are some incremental ways we could improve as we grow, but nothing earth-shattering.

Tweet of the day:

Adrian Cockcroft (basically “Mr Microservices” from Netflix, now working at a VC firm) talked about the culture and process of moving to the cloud and micro services. The talk was more aimed at big enterprises trying to break down monolithic IT departments, but there were some good points:

  • Netflix has a policy: If a meeting happened, you should try your best to remove the reason for the meeting in the first place.
  • Stop doing any “undifferentiated heavy lifting”. Find a XaaS or supplier to do it for you.
  • Disruptors take something that used to be expensive and work out a way to “waste” it. E.g. cloud based SSD storage. Incumbents still treat it as precious.
  • Even if you’re doing CI and deploying multiple times a day, QA & Integration is hard at scale.
    • Gets really hard in the 100-dev range.
    • Maxes out at 10’s of deployments per day.
    • This is where microservices come in. They can reduce or remove overlap between teams.
    • Doing Microservices properly means no running components are changed. Leave the old ones there and deploy new ones, then slowly route traffic to them. “Waste” more VMs so that you can experiment and roll-back easily.

In general, microservice architecture is getting constant airtime at the conference, but I’ve yet to talk to anyone using it in a seriously transactional environment. Netflix helped pioneer it, but the way I understand it, Netflix is extremely read-only in comparison to Vend, and probably can afford to lose some input data occasionally. We can’t.

Jez Humble (Mr Continuous Delivery, now also Mr Lean Enterprise) talked about Kanban, Jidoka, and continuous improvement. He said “Lean doesn’t mean cutting costs. Lean means investing to reduce waste.” – which lends itself to carefully and analytically eliminating areas of waste and inefficiency (calling back to Adrian’s comment about removing meetings).

He also pointed out that a high trust culture is a predictor of efficiency, and recommended reading about the Nummi car plant, where Toyota re-hired a poorly performing GM workforce and completely turned it around though application of their process and policies. Foremost of which being a no-blame culture, especially during stop-the-line events. I reckon we do an awesome job of this already.

Jez reminded me about Toyota’s “Improvement Kata” (which I think we could and should do better, especially out of Retros).

My third favourite talk was by Edmund Jorgensen, on ways to improve delivery velocity. He had a pretty hilarious allegory for talking about cruft or technical debt (or other causes of slower delivery), and the way that non-technical people see it:

Imagine a stock warehouse with lots of forklifts. They drive around ok most of the time, but occasionally Ninjas appear and muck things up, slowing down the forklifts. The only way to make the Ninjas go away is to do a juggling display for them. Every time we complain about the ninjas, and non-technical users come to see, the ninjas disappear. All they see are juggling forklift operators, so they say “Stop bloody juggling and get back to work!”

His solution: don’t talk about Ninjas when talking about the Ninja fight. Kinda silly, but he did suggest finding alignment between what makes the user’s thing faster or better, and what makes our engineering stuff easier to build and therefore faster to deliver.

I think we already do this very well, by improving our architecture as we build or fix features. And given our required pace, I can’t see us stopping all the forklifts for an all-out Bruce Lee Ninja Fight.

So yeah, a pretty intense day. Tune in tomorrow for Eric Evans, Aish Fenton and more.

Politics and Social Media

I’m hoping for a change of government in New Zealand come September, but not for the reason you may assume.

Back in 2008 when John Key came to power, Twitter was barely kicking off and Granny Herald had about 40 or 50 thousand more subscribers than today. I genuinely can’t remember being involved in any real-time online conversations about Helen Clark’s Labour government, whereas I now read multiple personal opinions on a daily basis about the latest thing that Key or Brownlee or Cunliffe or Norman has done.

I guess it’s obvious that Trevor Mallard is just as bad as Judith Collins on Twitter, but what about Chris Carter, Cullen and Goff? What would their time in power look like through the lens of personal jibes and dumb hashtag jokes? Did they get a relatively free ride?

When National put through not one, nor two or three, but four laws that appear dodgy in respect of the Human Rights act, I paused before flipping my lid online: surely it can’t be this bad? Surely other governments have done similar things and it’s just my pinko-liberal world-view to blame. Chill out. Right?

Is the Fifth National Government truly a cesspool of dimwitted decision making, or do I only think that because the Twitter echo chamber tells me to do so? I like to think I’m equally critical of Cunliffe’s gaffes and lack of policy, but worry that I’m just suffering confirmation bias. Does John Key truly disagree more with scientific, statistical, and economic consensus than Helen Clark did, or do I just think that because there are more immediate howls of anger from the e-left (iLeft? cyber-left?) when he comes up with another pearler about his “advice” saying otherwise?

To me it looks like no politicians are getting an easy ride online right now, when any fact or opinion can be rapidly fisked by the pyjama army ranks on both the left and right. If anything, it appears that investment in polling and carefully researched talking points is many times more valuable now than it was in the time of controllable media. Just take a look at the nutty “infographics” and crappily crafted motivational posters coming thick and fast from all sides lately: any time a politician says something vaguely quotable it’s turned into a Facebook-shaped meme before bedtime. Most of these are pointless crap, but I guess the plan is if just one of them turns “viral”, then yay votes!

The question I’m asking is this: what does social media look like when your favourite team ends up winning all the time instead of losing? I’m a Greens voter, but I like to think I’ll still be calling bullshit on dumb policy if they’re ever in power. Will they turn out to look just as idiotic as the current bunch? Will Trevor Mallard be an appalling speaker, biased toward the left instead of driving for genuine answers at Question Time?

Basically: bring on a change of government so I can check my bias by trolling left-wing politicians. Also: you’re on notice left-wing echo chamber. I’ll be watching.



We Are Treating it Very Seriously

After reading Lance’s latest post, I remembered an interview I heard on the radio this morning. It was about a serious workplace accident, at a company that has had two recent workplace deaths. The man being interviewed said:

“We are treating this very seriously”

I’m going to come right out and say no, you are not. You are not treating this very seriously at all. Neither are Auckland Transport, the NZTA, nor countless other organisations dealing with the interaction between humans and heavy machinery.

“Treating it very seriously” is not getting on the radio to talk about treating it seriously. Treating it seriously is protecting human life and limb at any cost. That’s all there is to it. Goods, services, transport – what’s the point if we’re killing people in the process?

Shut it down and don’t open it up again until you can guarantee me that no one will die at your port.

Ban cycling from all inner city routes until you can grade-separate cyclists from traffic. Shit, in many cases (Ponsonby Road, Parnell Rise, Tamaki Drive) all you need are some portable barriers and the removal of carparks, and cyclists are now safe. At the cost of what? Some extra walking time for people having to park farther away.

And don’t you dare fucking preach about the inconvenience. Inconvenience? Go and talk to the family of a dead person about inconvenience.

We only have our lives.

Smart TV is Bullshit

Smart TV is a pile of arse. Check out this latest fucktastrophe* from LG:

“When you first turn on the TV, an animated character called Bean Bird appears to help guide you through various options.”

What the shit? LG gets WebOS, lauded as one of the most promising operating systems of recent time, and uses it to create fucking Clippy for television?

It’s ironic that after reading all these “you must create!” missives, my first long-form blog post in god knows how long is inspired by the desire to burn down the creations of others, but stick with me here: “Smart TV” needs to die in a fire.

Standard-issue CD for TV interface designers

For decades now (pretty much since the invention of the remote control), TVs have had on-screen displays, which have been getting more terrible with each passing moment. More menus, more options, more inputs: all artfully designed by some half-blind shitbird with a “250,000 Web ClipArts” CD-ROM.

And somehow, in an age with practically unlimited computing power, TV manufacturers managed to build user interfaces with the responsiveness of a rolled pork roast. What the fuck is up with that? It’s not even like there are space or heat constraints limiting the chips they can use.

All this time computers and phones have been getting more usable and more responsive. What have TV manufacturers been doing? “Why Ben,” you say, “they’ve been adding features!”

Features like an unusably slow, impossible to navigate web browser! A shitty walled-garden tick-the-box-we’ve-shipped-it-boss app store! How about this awesome streaming video service that proxies traffic through our servers in Asia?  And don’t forget Angry Birds!

Fuck. Off.

Just stop. For one second stop and make me a television that looks great, operates quickly, and gets itself the fuck out of the space between me and my video entertainment. Please.

AND: if you feel the need to create a god-damn animated character to help people understand how to set up their TV, step the fuck back and ask yourself WHY you got to that point. Look yourself in the mirror, you “Smart TV” charlatans. Go fix something that is broken for a change.


*Credit to Nat Torkington for the word “fucktastrophe”.



Here is a list of some things. Many of these have been mentioned in conversations in most forms of media about sexual activity and rape over the last couple of weeks:

  • Drunk
  • Out late at night
  • Wearing skimpy clothes
  • Age of participants
  • Up for it
  • Knew what you were getting into
  • Not brave enough to complain
  • Not a virgin
  • A virgin
  • Slutty
  • Liked the attention
  • Friendly
  • Naked
  • Got into bed with boys

Here is what is relevant when discussing rape (or unlawful sexual connection):

  • Consent.

It bothers me greatly that consent is barely (never?) mentioned in any conversation in the media. This is rape culture.


Microsoft Surface: Hardware is not the problem

Attending the NZ launch of the Microsoft Surface 2 and Surface Pro 2 yesterday was quite weird. You might know that for the last couple of years I had been heavily invested in the Microsoft platform. I literally relied on Microsoft and Windows 8 to feed my kids. Not anymore.

So I looked on dispassionately as the Microsoft people enthusiastically extolled the virtues of these second-gen tablets. Lighter! Faster! More ports! More battery! All wonderful stuff. The Surface 2 in particular is massively better than the Surface RT it replaces (and that Microsoft are strangely still selling – I’m guessing they have a shitload of inventory to run out). Where the RT was embarrassingly slow, the Surface 2 is buttery smooth. I can’t tell you how enraged we were as developers when our gorgeous apps ran like shit on ARM Win8 tablets. I’m glad Microsoft have fixed this. The latest generation of ARM Win8 tablets are all but perfect.

The Intel-based Surface Pro 2 is a beast. You can get one for $1299, but fully kitted out it will cost you closer to $2500. That high-end model is stupendous: 8GB of RAM and a 512GB SSD, it runs faster than most laptops and is still incredibly small and light. I don’t exaggerate when I say that the Surface Pro 2 is the best bit of Windows hardware anywhere. It’ll run Photoshop properly, and give you a full digitiser to use while doing it.

The new covers are great too. There’s one with an optional battery, and the keyboard covers have been greatly improved with backlighting and weight reductions.

But (there’s always a but) while hardware is certainly a problem Microsoft needed to solve, it is not the problem Microsoft currently has.

Questions to the presenters about the hardware were easily answered (“yeah this shit is awesome! It has 72 graphics cores!”), deeper questions about the platform resulted in the waffle that is the signature of a corporate employee saying “yeah we have a problem there but I’m going to pretend we don’t”.

When asked about the target markets and uptake of the previous model Surfaces, the response was “yeah we’re not sure what has been holding back uptake of the Surface Pro”. To be fair, Microsoft hasn’t had a corporate reseller channel for Surface, instead directing companies to buy from Noel Leeming or JB Hifi in NZ. This has been sorted out now, so I wonder if that will reverse the trend. But in any case I was really surprised that they admitted Surface Pro uptake has been disappointing. The $900m write-down was on the Surface RT after all, not the Pro.

When I asked about corporate apps and uptake, I got the same answers I myself was shilling a year ago. Conversations about exactly the same couple of companies testing the water, and the same prototype apps that have gone nowhere in 12 months. No big-bang stories of corporates buying Surfaces (or any other Win8 tablet) by the thousand. That’s pretty sad, especially when you consider that the New Zealand Police rolled out iPads and iPhones to all front-line staff in that same 12 months.

Can Microsoft reverse this trend? I reckon these new Surface revisions are the right tools to do that job, but I’m seriously wondering if Microsoft can ever win back that portable device mindshare it has lost to Apple and Android. Still, 12 months is a lifetime in tech, and I hope Microsoft can surprise us over the next year.


The Morality of Metadata

Once upon a time a phone call was transient. Triggered by a series of clicks from a rotary dial, mechanical switches at the exchange would route your call to its destination. Perhaps Peter Dunne and Andrea Vance talked to each other on the phone, but this mechanical switchboard had no record of that happening. In that world, monitoring communications probably required physically accessing the exchange and plugging in a tape recorder. It was a Big Deal.

Today, the simple act of dialling a number results in a database entry. Visiting a website leaves a trace. Touching your access card to a door panel drops a line in a text file.

We have been living under the misguided impression that we are not being watched because the actors who would watch us are inherently law-abiding and moral. The reality is that they haven’t been watching us because it required effort.

We now see the truth: with metadata so readily accessible, it is literally easier to hand over 30 days of phone and access data than to spend time asking if the original request is valid. This is a problem: humans are lazy. No law will fix that.

Spend enough time with any volume of data, and it’s incredibly easy to become desensitized. I remember working for an insurance company, working on calculations that included a field called “expected death strain”. Each (anonymous) row showed the probability, month by month, that the insured party would not be alive. It took a long time for me to realise the importance of those numbers.

A technician in some way attached to parliament sees access and phone records every single day. Someone wants a dump from those files? No big deal, it’s just a portion of those letters numbers they see every day.

I’ve been asked a lot over the last couple of days whether the recent spate of leaks, hacks and law changes are interrelated. My initial position was that no, the changes to TICS and GCSB legislation have nothing to do with a parliamentary inquiry.

I think I was wrong.

We must demand that our metadata is treated with the same level of respect as our personal property. Anything less is immoral.