The AppleTV Remote Sucks

Dec 9 It’s so bad a Swiss company made a much saner substitute that sells for ~$20.

Nov 16 Looks like you can use the old remote with the new AppleTV.

I’m annoyed every time I have to use the infernal thing.

  • It tries (poorly) to be something other than a damn TV remote1.
  • There’s no way to tell which end is up.
  • There’s no accidental tap detection when you pick it up.
  • It’s way too small.
  • It’s way too slippery.
  • I use Siri to skip forward and backward because the edge clicks are unmemorable and dysfunctional.

I use the iPhone app when I can and, while I can’t stand the terribly implemented inertial scroll, still find it better than the hardware.

Inertial scrolling does in fact exist on the Siri remote, but the effect is muted. The on-screen movement doesn’t accurately reflect your swiping — scrolling is staggered and it often stops abruptly, when you don’t intend to stop. This makes aspects of navigation, like manual search or entering your email address or password, extremely cumbersome.

– Dave Smith, “My biggest problem with the new Apple TV remote

See also: Steve Brykman of ArsTechnica’s thoughts on “the nightmare horrorshow” that’s the remote.

  1. “You’re basically getting a giant iPad game that you have to play with a tiny remote” ↩︎

State, Coupling, Complexity, & Code

Dependencies (coupling) is an important concern to address, but it’s only 1 of 4 criteria that I consider and it’s not the most important one. I try to optimize my code around reducing state, coupling, complexity and code, in that order.

I’m willing to add increased coupling if it makes my code more stateless.

I’m willing to make it more complex if it reduces coupling.

And I’m willing to duplicate code if it makes the code less complex.

Only if it doesn’t increase state, coupling or complexity do I dedup code.

The reason I put stateless code as the highest priority is it’s the easiest to reason about. Stateless logic functions the same whether run normally, in parallel or distributed. It’s the easiest to test, since it requires very little setup code. And it’s the easiest to scale up, since you just run another copy of it. Once you introduce state, your life gets significantly harder.

I think the reason that novice programmers optimize around code reduction is that it’s the easiest of the 4 to spot. The other 3 are much more subtle and subjective and so will require greater experience to spot. But learning those priorities, in that order, has made me a significantly better developer.

crun1r on HackerNews (emphases and formatting mine.)


Jan 12 On “incidental duplication”:

I’ve usually heard this phenomenon called “incidental duplication”, and it’s something I find myself teaching junior engineers about quite often.

There are a lot of situations where 3-5 lines of many methods follow basically the same pattern, and it can be aggravating to look at. “Don’t repeat yourself!” Right?

So you try to extract that boilerplate into a method, and it’s fine until the very next change. Then you need to start passing options and configuration into your helper method… and before long your helper method is extremely difficult to reason about, because it’s actually handling a dozen cases that are superficially similar but full of important differences in the details.

I encourage my devs to follow a rule of thumb: don’t extract repetitive code right away, try and build the feature you’re working on with the duplication in place first. Let the code go through a few evolutions and waves of change. Then one of two things are likely to happen:

  1. you find that the code doesn’t look so repetitive anymore, or,
  2. you hit a bug where you needed to make the same change to the boilerplate in six places and you missed one.

In scenario 1, you can sigh and say “yeah it turned out to be incidental duplication, it’s not bothering me anymore.” In scenario 2, it’s probably time for a careful refactoring to pull out the bits that have proven to be identical (and, importantly, must be identical across all of the instances of the code).

burlesona on HackerNews (emphasis and formatting mine.)

Whatever. I say we continue to abstract away and make better and better hammer factories and beam at our sophistication in creating unnecessary complexity #jobsecurity

Hubble Ultra-Deep Field

One of my favorite things in the world.

Located southwest of Orion in the southern-hemisphere constellation Fornax, the rectangular image is 2.4 arcminutes to an edge, or 3.4 arcminutes diagonally. This is approximately one tenth of the angular diameter of a full moon viewed from Earth (which is less than 34 arcminutes), smaller than 1 sq. mm piece of paper held at 1 meter away, and equal to roughly one twenty-six-millionth of the total area of the sky. The image is oriented so that the upper left corner points toward north (−46.4°) on the celestial sphere.

Wikipedia (emphasis mine)

Here’s all that in video form

The best screensaver in the world using red-shift data

And a very high-resolution image (> 60MB). Wallpapers are available.

Our shit is so, so, so tiny.

There are over 100 billion galaxies in the universe. Simply saying that number doesn’t really mean much to us because it doesn’t provide any context. Our brains have no way to accurately put that in any meaningful perspective. When we look at this image, however, and think about the context of how it was made and really understand what it means, we instantly gain the perspective and cannot help, but be forever changed by it.

We pointed the most powerful telescope ever built by human beings at absolutely nothing for no other reason than because we were curious, and discovered that we occupy a very tiny place in the heavens.

Deep Astronomy

Not so sure about “instantly” gaining perspective but the rest about wonder and curiosity and our insignificant place the heavens still stand.

Comrade Hoff

Loving these Moebius-like works by Ali Hoff (prints are available.) Imagined it being a short animated series like Aeon Flux 😍

AppleTV, AppleTV, AppleTV

I absolutely love Dustin Curtis’ splendid explanation of “AppleTV” branding that’s making making the rounds on HN. For posterity, I stole this handy color-coded transcription off Michael Tsai’s blog.

See also: The intractably stupid AppleTV Remote.

A Vickrey Auction

When you end up paying the price you bid (“first price”), you have a strong incentive to lie about how much you’re willing to pay. Suppose there’s an item for sale that you’d be happy paying up to $1,000 for if necessary, but of course you’d rather pay less. In a first-price auction, if you bid $1,000 and you lose. Well, someone else was willing to pay more than you were willing to, so that’s OK, but if you win, you know that nobody else offered that price and you’d be slapping yourself for not going for $950 and saving a little. Or, who knows, maybe there are really few buyers and you later discover that the second person was only valuing the item at $600? Damn, you could have walked away with it for $610!

[. . .]

In a second-price auction, there’s no reason for you to do that. You can simply say exactly the maximum price you are willing to pay, and there’s never any advantage for you in saying anything else:

  • You don’t want to post a higher bid since you might be forced to pay it, and you don’t want to do that.
  • You don’t want to post a lower bid since you might lose the item for no good reason at all.
  • You’ll end up paying exactly what it takes to win the item: one dollar or one cent more than the next person’s maximum bid.

So, a second-price mechanism encourages everyone to bid truthfully, and the item ships to the person who really values it at the highest price. It’s the best outcome for the seller and as good an outcome for everyone else as they could wish for.

Incidentally, note that this is exactly what happens in ordinary public auctions (“going once, going twice… sold!!”) Everyone walks in with an idea of how much they’re willing to pay, and they keep bidding one dollar more than the current price until they hit their max—but they’re never forced to reveal their max and what they end up paying is just one dollar (or penny, or whatever) more than the second-highest bidder.

– Alon Amit on Quora (emphasis mine.)

Quite a bit of Game Theory stuff on Wikipedia as well.

Dawid Planeta's Illustrations

I could just stare at his work all day. This one’s called “The River of Life

and this one “Deep Forest

Data, Data, Data

Linus Torvalds on git

I’d also like to point out that unlike every single horror I’ve ever witnessed when looking closer at SCM products, git actually has a simple design, with stable and reasonably well-documented data structures. In fact, I’m a huge proponent of designing your code around the data, rather than the other way around, and I think it’s one of the reasons git has been fairly successful

[. . .]

I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

Gavin Shapiro Makes Looping Things

This is just wonderful stuff. More on his website and on Instagram.

Because God Can See

When I was little — and by the way, I was little once — my father told me a story about an 18th century watchmaker. And what this guy had done: he used to produce these fabulously beautiful watches.

And one day, one of his customers came into his workshop and asked him to clean the watch that he’d bought. And the guy took it apart, and one of the things he pulled out was one of the balance wheels. And as he did so, his customer noticed that on the back side of the balance wheel was an engraving, were words.

And he said to the guy, “Why have you put stuff on the back that no one will ever see?” And the watchmaker turned around and said, “God can see it.”

Now I’m not in the least bit religious, neither was my father, but at that point, I noticed something happening here. I felt something in this plexus of blood vessels and nerves, and there must be some muscles in there as well somewhere, I guess. But I felt something. And it was a physiological response. And from that point on, from my age at the time, I began to think of things in a different way. And as I took on my career as a designer, I began to ask myself the simple question: Do we actually think beauty, or do we feel it?

– Richard Seymour, How Beauty Feels

I want it to be as beautiful as possible, even if it’s inside the box. A great carpenter isn’t going to use lousy wood for the back of a cabinet, even though nobody’s going to see it. When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.

Steve Jobs

You did quite a bit more than the MVP for the fucking “sprint”, but you smile a lot and sleep quite well indeed. Excellence is a habit.

Saved here via Stephanie Harcrow’s post.

Anurag Kashyap on The Struggle

Kashyap on his journey to become one of India’s most important filmmakers.

The cover picture is clickbait. No “shocking” revelations. Just a good story about pursuing one’s chosen vocation with grit and perseverance (with a bit of luck along the way.)

On “Josh Talks”, who look like a TED clone and are “on a mission to raise the aspirations of Young India.”

Ballpoint Octopus

I fight Crime. And I Read.

In Ramayya Vasthavayya, Avinash is a mononymous “Central Crime Branch” officer who, according to the barcode on his IDENTITY CARD, loves new-agey mind meld books. Or so I gather. Couldn’t decipher the other barcode but submit that it might reveal his preference for reasonably priced cutlery sets at Bed Bath & Beyond.

Netflix's "Secret" Genre List

A list of sub-genres you cannot view easily on Netflix. From a Reddit thread on the subject:

This is ridiculous. What kind of hubris does Netflix have to think that their recommendation engine is better than browsing by category? Browsing by category has been the standard for browsing things since categories of things has existed. Some VP of product made his bonus by convincing someone that his ML team could do better. “Yeah, just remove it and let us populate 15 movies randomly in a whimsical fictitious category like ‘movies with dogs and music’. People will love it.”


Because the studios pay Netflix (via discounted licensing) for favorable placement on those “recommended viewing” lists.

Always follow the money.

Computers Are Fast

A nice little quiz meant to illustrate how much your typical Python and Bash code can accomplish in one second.

If the answer is 38,000, both 10,000 and 100,000 are considered correct answers. The goal is to not be wrong by more than 10x :)


A newer computer won’t make your code run 1000x faster :)


Beautiful, astoundingly well-crafted, painfully short work of interactive art.

How to Buy a Bob Ross

Was watching an episode or two of Joy of Painting with my sister when we wondered what happened to all the finished paintings on his show.

Now we know.

Digital Octopode

Never knew this was a thing. Behold a pliable, $200 digital model of an octopus for 3D Studio Max (with “72366 Faces and 71879 Vertices.”)

Why Hulls are Painted Red

TL;DW: This is “anti-fouling” that repels barnacles, algae, and mollusks by emitting “biocides”. This is desirable because they cause drag (think fuel) and structural damage. Red because traditionally some oxide of Copper.

Also this:

In nature bright colours serve as a warning and to stay away. Ships are very territorial and have even been known to attack people.

Love, Knowledge, and Compassion

Three passions, simple but overwhelmingly strong, have governed my life: the longing for love, the search for knowledge, and unbearable pity for the suffering of mankind. These passions, like great winds, have blown me hither and thither, in a wayward course, over a great ocean of anguish, reaching to the very verge of despair.

I have sought love, first, because it brings ecstasy – ecstasy so great that I would often have sacrificed all the rest of life for a few hours of this joy. I have sought it, next, because it relieves loneliness – that terrible loneliness in which one shivering consciousness looks over the rim of the world into the cold unfathomable lifeless abyss. I have sought it finally, because in the union of love I have seen, in a mystic miniature, the prefiguring vision of the heaven that saints and poets have imagined. This is what I sought, and though it might seem too good for human life, this is what – at last – I have found.

With equal passion I have sought knowledge. I have wished to understand the hearts of men. I have wished to know why the stars shine. And I have tried to apprehend the Pythagorean power by which number holds sway above the flux. A little of this, but not much, I have achieved.

Love and knowledge, so far as they were possible, led upward toward the heavens. But always pity brought me back to earth. Echoes of cries of pain reverberate in my heart. Children in famine, victims tortured by oppressors, helpless old people a hated burden to their sons, and the whole world of loneliness, poverty, and pain make a mockery of what human life should be. I long to alleviate this evil, but I cannot, and I too suffer.

This has been my life. I have found it worth living, and would gladly live it again if the chance were offered me.

– Bertrand Russell, What I Have Lived For

Two Levels of Not Giving a Fuck

No Code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.

Start by not writing any code.

Brilliant. I love both the presence and contents of the Dockerfile in that repo. As is always the case with such projects, the issues and pull requests are 💯

And if one is tempted to go against the tenets of No Code, there’s always my beloved fuckitpy, a (strangely well-thought-out) “Python error steamroller”1:

def buggy_function():

class BuggyClass(object):
    def __init__(self):


This module is like violence: if it doesn’t work, you just need more of it.

  1. Inspired by FuckitJS. ↩︎

Comedians and Comics

From an episode of My Next Guest with David Letterman:

Letterman: First of all, let’s define terms. Comedian and comic: used interchangeably but mean two different things.

Seinfeld: Kind of different, yeah. A comedian is a, to me, a full-fledged, not only a monologist, but someone who can really work a room, work a crowd and has a real act. A comic… that, I think, is a notch down. Wouldn’t you agree?

Letterman: Well, you’re assigning value to them.

Seinfeld: Yes.

Letterman: I thought they were two different pursuits. That a comedian was somebody who would be funny on stage, in a theatrical production, or in film, something like that, whereas a comic would be more like what you’ve made a career of.

Seinfeld: Oh, no, no, no. You’re talking about a comedic actor. Jackie Gleason was not a comic. He started out as a comic but he was a great comedic actor. Ten Danson is a great comedic actor, but he’s not a comedian. He has no act to do in Vegas. Which is the objective.

Letterman: So you’re saying that a comedian… but I don’t understand why there is a judgment assigned to being a comic.

Seinfeld: Just because we like judging others, that’s the reason.

Dancing & Walking

From 2016. I wonder how long this would take to render on the latest and greatest graphics card (an nVidia RTX 2080 Ti that sells for $1,200.)

I could watch this one for hours and might just loop it on the old iPad

US Population Density

The red and orange areas have about the same number of people (~104 Million)

More on this interactive page.

Baby Chromatophores

I cannot get over how maddeningly cute this is. Reddit user pendragwen’s comment makes it even better:

Awww! But look at how they test out their chromatophores first thing after hatching! It’s speculated that color-changing is how they communicate and show emotion. Almost like a little joyful stretch and squeal. “Yay! I’m alive!”

😍 (YouTube link)