Newsletter #50

FAANG Engineers, What's Going On Here, I Could Build This During the Weekend, Product-Minded Developers, Crazy New Ideas, The Instagram Ads Facebook Won't Show You, and Branch Predictor

Hello there - Is anyone watching SNL tonight?

If you haven't joined yet, you can subscribe right here:

Fantasy Angel Fund #1

$3M fantasy angel fund - $50K checks - 60 seed-stage startups - * new check

  1. Rome*

  2. BigBrain*

The full list is here.

Markup #8 - Goody raised a $13M A led by NEA.

FAANG Engineers

What’s Going on Here, With This Human?

Questions for the candidate

  • What criteria would you use to hire someone to do this job if you were in my seat?

  • How would your spouse or sibling describe you with ten adjectives?

  • I think we’re aligned in wanting this to be a good fit, you don’t want us to counsel you out in six months and neither do we. Let’s take the perspective of ourselves in six months and it didn’t work.  What’s your best guess of what was going on that made it not work?

  • What are the names of your last five managers, and how would they each rate your overall performance on a 1-100?

  • What are you most torn about right now in your professional life?

  • How did you prepare for this interview?

  • How do you feel this interview is going?”

I Could Build This During the Weekend

“The world is messy. As software is more ubiquitous, we're encoding this chaos in 1's and 0's. It's more than that. Some scenarios are more difficult to encode in software than their pre-digital counterparts. A physical taxi queue at the airport is quite simple to understand. There's no GPS technology involved, no geofencing. A person and a car can only be in one place at a time. In the digital world, things get messier.

When going into solution mode, we should try to understand the context and think about second-order factors that can lead to a suboptimal state. Maybe we can't build that app on the weekend, after all.”

Product-Minded Developers

Crazy New Ideas

“There's one kind of opinion I'd be very afraid to express publicly. If someone I knew to be both a domain expert and a reasonable person proposed an idea that sounded preposterous, I'd be very reluctant to say "That will never work."

Anyone who has studied the history of ideas, and especially the history of science, knows that's how big things start. Someone proposes an idea that sounds crazy, most people dismiss it, then it gradually takes over the world.

Most implausible-sounding ideas are in fact bad and could be safely dismissed. But not when they're proposed by reasonable domain experts. If the person proposing the idea is reasonable, then they know how implausible it sounds. And yet they're proposing it anyway. That suggests they know something you don't. And if they have deep domain expertise, that's probably the source of it.”

The Instagram Ads Facebook Won't Show You

“We created a multi-variant targeted ad designed to show you the personal data that Facebook collects about you and sells access to. The ad would simply display some of the information collected about the viewer which the advertising platform uses. Facebook was not into that idea.

Facebook is more than willing to sell visibility into people’s lives, unless it’s to tell people about how their data is being used. Being transparent about how ads use people’s data is apparently enough to get banned; in Facebook’s world, the only acceptable usage is to hide what you’re doing from your audience.

So, here are some examples of the targeted ads that you’ll never see on Instagram. Yours would have been so you.”

Branch Predictor

“We started our journey from a piece of trivial code, and asked a basic question: how costly is  adding a never-taken if branch in the hot portion of code?

Then we quickly dived in very low level CPU features. By the end of this article, hopefully, an astute reader might get better intuition how a modern branch predictors works.

On x86 the hot code needs to split the BTB budget between function calls and taken branches. The BTB has only a size of 4096 entries. There are strong benefits in keeping the hot code under 16KiB.

On the other hand on M1 the BTB seems to be limited by L1 instruction cache. If you're writing super hot code, ideally it should fit 4KiB.

Finally, can you add this one more if statement? If it's never-taken, it's probably ok. I found no evidence that such branches incur any extra cost. But do avoid always-taken branches and function calls.”