HN user

samstokes

3,771 karma

Londoner living in San Francisco. Distributed systems are fun. Once cofounder of Rapportive, Staff Software Engineer at LinkedIn, Honeycomb, LaunchDarkly. Interested in scalable architectures, functional programming, and great abstractions that make us better at writing software.

I blog at https://five-eights.com. Follow me on Mastodon at https://hachyderm.io/@samstokes.

[ my public key: https://keybase.io/samstokes; my proof: https://keybase.io/samstokes/sigs/wIsBnkrHbUgNMwRFtYyBmnGTNtzVhJonzw064n2rQUg ]

Posts84
Comments563
View on HN
blog.1password.com 5y ago

Pronounceable passwords now default in 1Password

samstokes
4pts0
honeycomb.io 9y ago

Build Observable Systems

samstokes
9pts3
medium.com 9y ago

Why GitHub Is Doing Much Better Than Bloomberg Thinks

samstokes
5pts0
blog.samstokes.co.uk 9y ago

How to start your own home bar

samstokes
2pts0
blog.samstokes.co.uk 9y ago

How to start your own home bar

samstokes
1pts0
github.com 10y ago

Eve proposed developer syntax

samstokes
1pts0
blog.samstokes.co.uk 10y ago

Move fast with confidence

samstokes
2pts0
blog.samstokes.co.uk 10y ago

Move fast with confidence

samstokes
6pts0
www.amazon.com 10y ago

Amazon Prime offers ad-subsidised unlocked phones

samstokes
3pts3
engineering.chartbeat.com 10y ago

Tiered replication

samstokes
1pts0
blog.samstokes.co.uk 10y ago

Let's talk about confidence

samstokes
4pts0
www.michaelnygard.com 10y ago

In Love with Your Warts

samstokes
1pts0
continuations.com 10y ago

Key-based device unlocking

samstokes
1pts1
blog.samstokes.co.uk 10y ago

Let's stop talking about quality

samstokes
52pts37
www.macrumors.com 10y ago

Bill Gates Says Apple Should Unlock San Bernardino Shooter's iPhone for FBI

samstokes
14pts8
meta.stackoverflow.com 10y ago

Proposal to add documentation to Stack Overflow

samstokes
5pts1
www.wired.co.uk 10y ago

Coder used 23andMe to create a race wall around the web

samstokes
2pts0
www.kickstarter.com 11y ago

Women in Tech: The Book

samstokes
5pts0
www.linkedin.com 11y ago

Programming is not magic

samstokes
8pts0
www.somerandomidiot.com 11y ago

Doing nothing in Mirage

samstokes
1pts0
blog.codeship.io 12y ago

Why you should build an immutable infrastructure

samstokes
22pts0
blog.codeship.io 12y ago

Immutable Infrastructure with Ansible and Packer

samstokes
1pts0
blog.samstokes.co.uk 12y ago

What Programming is Like

samstokes
96pts38
blog.codeship.io 12y ago

Immutable Infrastructure

samstokes
19pts0
blog.codeship.io 12y ago

Testing with Cucumber – best practices

samstokes
38pts6
blog.linkedin.com 12y ago

The Definitive Professional Publishing Platform

samstokes
2pts0
venturebeat.com 12y ago

Speedy code shipper Codeship receives $2.6M

samstokes
4pts0
chromaticleaves.com 12y ago

Generating random user profiles with Haskell QuickCheck

samstokes
2pts0
blog.import.io 12y ago

Query 100 data sources with one API call

samstokes
3pts0
techcrunch.com 12y ago

It Doesn't Have To Be This Way

samstokes
8pts1

Code being expensive would be one reason to plan, but hardly the only one. Some other reasons: cost of failure (don't leak customer PII), maintenance, unclear requirements, unclear success criteria.

Most of the comments so far are responding to the first few paragraphs of this article. On reading further, I thought this was actually an unusually balanced take on how to use LLMs in a software org.

I can't help but cringe at the "cost of code is now zero" meme that this article repeats because in my experience the biggest cost of code was always the activities around the code - planning, communicating, reviewing, validating. This author, despite repeating the meme, seems to agree. Their emphasis on writing PR descriptions and specs for humans rhymes with my experience and it sounds like a nicer way to work than chasing some dark factory fever dream.

I also thought the "Two Modes of Working" section was useful. People get wildly different results from coding agents depending on how they use them, but I've not seen a lot of actual guidance on when to do X vs Y.

Personally, I've been using what the author calls "sidekick mode" since last October - before the supposed "AI got good now" threshold - and agree it's a more useful default for an engineer than "delegate mode".

The post says they wrote a custom harness that orchestrates work between multiple separate model invocations. That is different from running Claude Code (which is a specific existing harness around the Claude models).

The post takes a while to get around to saying that, and could have included more detail besides the workflow diagram and table (which they flag as only "an example of" such a harness), but it does answer the question. It's a different kind of tool because it's a model rather than a harness+model pair.

I wouldn't agree that LLMs are a higher level of abstraction, but I've found they do help me think at a higher level of abstraction, by temporarily outsourcing cognitive load.

With changes like substantial refactors or ambitious feature additions, it's easy to exceed the infamous "seven things I can remember at once":

  * the idea for the big change itself
  * my reason for making the change
  * the relevant components and how they currently work
  * the new way they'll fit together after the change
  * the messy intermediate state when I'm half finished but still need a working system to get feedback
  * edge cases I'm ignoring for now but will have to tackle eventually
  * actual code changes
  * how I'm going to test this
Good lab notes, specs etc can help, but it's a lot to keep in mind. In practice these often turn into multi person projects, and communication is hard so that often means delay or drift. Having an agent temporarily worry about
  * wiring a new parameter through several layers
  * writing a test harness for an untested component
  * experimentally adding multibyte character support on a branch
frees up my mental bandwidth for the harder parts of the problem.

The main benefit is to defer the concern until I have a mostly working system. Then I come back and review its output, since I'm still responsible for what it delivers, and I want better than "mostly working".

The Codex App 6 months ago

Bit of a buried lede:

For a limited time we're including Codex with ChatGPT Free

Is this the first free frontier coding agent? (I know there have been OSS coding agents for years, but not Codex/Claude Code.)

This seems lazy. It's ad hominem but not even, since you don't know what inept bureaucracy I am defending. Is there any argument that you couldn't level this accusation at?

One could interpret the title that way, but not consistently with the rest of the article, which includes assertions like "in the realm of societies, governments and economies, systems thinking becomes a liability".

I think there's plenty to agree with in the article's descriptions of failure and hubris. What the critical commenters are taking issue with is that the article blames those symptoms on a straw man. It's a persuasive article, not a historical review, so it's reasonable to debate its conclusion and reasoning as well as its supporting evidence.

The title of the article is an intentional conflation of "systems thinking" with "magical thinking", which is not a compliment.

What an interesting and strange article. The author barely offers a definition of "systems thinking", only names one person to represent it, and then claims to refute the whole discipline based on a single incorrect prediction and the fact that government is bad at software projects. It's not clear what positive suggestions this article offers except to always disregard regulation and build your own thing from scratch, which is ... certainly consistent with the Works In Progress imprint.

The way I learned "systems thinking" explicitly includes the perspectives this article offers to refute it - a system model is useful but only a model, it is better used to understand an existing system than to design a new one, assume the system will react to resist intervention. I've found this definition of systems thinking extremely useful as a way to look reductively at a complex system - e.g. we keep investing in quality but having more outages anyway, maybe something is optimizing for the wrong goal - and intervene to shift behaviour without tearing down the whole thing, something this article dismisses as impossible.

The author and I would agree on Gall's Law. But the author's conclusion to "start with a simple system that works" commits the same hubris that the article, and Gall, warn against - how do you know the "simple" system you design will work, or will be simple? You can't know either of those things just by being clever. You have to see the system working in reality, and you have to see if the simplicity you imagined actually corresponds to how it works in reality. Gall's Law isn't saying "if you start simple it will work", it's saying "if it doesn't work then adding complexity won't fix it".

This article reads a bit like the author has encountered resistance from people in the past from people who cited "systems thinking" as the reason for their resistance, and so the author wants to discredit that term. Maybe the term means different things to different people, or it's been used in bad faith. But what the article attacks isn't systems thinking as I know it, more like high modernism. The author and systems thinking might get along quite well if they ever actually met.

You're right, you're not his caregiver, or obliged to be. Sorry if it sounded like I was suggesting that.

I doubt the staff would expect or pressure you to take responsibility for him. If anything you might have trouble getting them to even discuss his case with you - different states vary but in some cases they won't share case details without explicit permission from the patient. (If that sounds frustrating given your first hand experience of his symptoms and their progression - I sympathise.)

The support groups in particular may be useful despite that, just because you mentioned he's a housemate, so he may continue to be in your life. When I attended there were spouses, parents, but also just friends who wanted to help out their friend and understand what they were going through, without adopting responsibility for them.

I'm sorry this is happening to you and to your friend. I have some similar experience and want to share some advice I wish I had heard earlier.

It sounds to me like you did the right thing - situations like this can get worse if left unchecked and have serious consequences for the person in question and those around them. I'm not diagnosing your friend - I'm no expert, and various disorders can have those symptoms - but there are resources out there about (e.g.) mood disorders [1] that might give you some perspective and advice.

Treatment can help, and can make a huge difference. Hospitals are unpleasant but can sometimes be the only way for someone who needs treatment to receive it. I am certainly no legal expert, but I think if he was forcibly committed to a hospital and police were involved, he's unlikely to be released without accepting treatment.

You might find it helpful to join a support group for caregivers (e.g. [2]). In my experience it's common for friends as well as family members to attend those. People will offer resources and advice, as well as just sharing their experience, which can provide perspective and help with feeling lost.

Also consider (if you're not already) finding a therapist of your own. People in one of these episodes can push boundaries, say things to you they wouldn't normally mean, and generally be hard to be around while maintaining your own health and boundaries - particularly if you're invested in trying to help them.

[1] https://www.dbsalliance.org/education/ [2] https://www.dbsalliance.org/support/chapters-and-support-gro...

This makes some good points about misuses of these AWS services, but the title is misleading. The article is actually more like "tempting but inadvisable use cases for AWS services".

My employer uses three of these heavily (ElastiCache, Kinesis and Lambda) and we get quite a bit of leverage out of them.

ElastiCache in particular surprised me. At first glance I mistook it for a transparent (and expensive) wrapper around sticking Redis on an EC2 instance, but if your usage is heavy enough to need multi-node clusters (e.g. read replicas or full Redis Cluster), its orchestration features are pretty useful. We can resize instances, fail over to a replica, and reshard clusters, with zero downtime, by clicking a button (or a one-line Terraform change). And never having to install security patches is nice too.

It certainly is expensive, though. (But if you're not willing to pay a premium for managed infra, what are you doing on AWS in the first place?)

I may have lost people with lower confidence in their abilities and a greater fear of failure.

That HBR article I linked in the other thread actually addresses that. Their survey indicates that people are deterred less by lack of confidence in their abilities, and more by lack of confidence in your process to assess their abilities in the absence of a credential. The top-given reason (from both women and men) for not applying was “I didn’t think they would hire me since I didn’t meet the qualifications, and I didn’t want to waste my time and energy.”

Now maybe you're actively looking for people who hustle and won't take no for an answer (which isn't quite the same thing as "confident in their abilities"). Maybe that's your team culture, or your company culture. That's certainly your choice if so.

In case you're not aware, there is evidence [1] that this sort of "required but not really" job posting deters a lot of people, and especially women, from applying even if they would actually meet the (unstated) actual requirements.

Making it explicit that you will accept "experience and a good resume" in place of a CS degree might increase the diversity of your applicant pool.

[1] https://hbr.org/2014/08/why-women-dont-apply-for-jobs-unless...

That's the "monitor from the customer's point of view" approach the OP alludes to. If you use tools like Honeycomb [1] that can easily and routinely answer questions like "show me the 95th percentile latencies for each of the 10 customers experiencing the worst latencies", then situations like you're describing are a lot easier to discover.

[1] https://honeycomb.io. Disclaimer: I used to work for them.

Since this has become yet another discussion about "the pipeline problem" instead of a discussion about a tactic major tech companies are using to duck accountability, this Twitter thread might be informative: https://twitter.com/Code2040/status/1092853501766467585?s=19

It's from an organisation (Code2040) that spent 10 years working to build a pipeline of qualified Black and Latinx candidates, only to find many companies had hiring processes that wouldn't hire their candidates anyway.

You've italicised "pipeline" as if you believe this is a novel insight, but actually it's very common to dismiss diversity and inclusion efforts by redirecting attention to "the pipeline problem". Unfortunately there is evidence that the pipeline is far from the only problem, and even after successful interventions to swell the pool of qualified diverse candidates, companies' representation is still extremely skewed, and those candidates still encounter hiring barriers that other demographics do not.

Here's one thread from an organisation that spent 10 years working on the pipeline and found many companies wouldn't hire their candidates: https://twitter.com/Code2040/status/1092853501766467585?s=19

(Edit: gah, pasted the same link twice instead of the Twitter thread I meant to post)

And some more links on the "pipeline problem": http://isitapipelineproblem.com

The submission title is misleading (“License Changes for Confluent Platform (Kafka)” at time of commenting) - the license changes do not apply to Kafka itself, as the article specifically states.

WHY NOT BOTH? (OP here. I figured the prominent company branding was sufficient disclaimer that yes, we do have a product to sell; but we built the product because we see a better way of doing things, rather than vice versa.)

TL;DR: use probabilistic logging (x% chance of logging, with x chosen by dev for each log statement) instead of importance levels (ERROR, WARN, INFO, etc) to keep common events from flooding log files. Is that it?

Basically. But if your volume is high enough to have this problem, you're probably past the point where humans reading logs is a reasonable use of time, so you need machines to help humans consume the logs (e.g. to produce summary statistics and graphs).

So as well as probabilistic logging, annotate the logs you do emit with the probability of emission. That way the machines consuming the logs can continue to account for the logs that were dropped.

Geek Career Paths 9 years ago

a) You don't have to take VC funding to be a startup.

b) If you do take VC funding, you don't have to adopt VC culture too. (VCs don't even get a board seat until the series A.) Some startups do adopt VC culture anyway, but it's not a forgone conclusion.

That's true, but any incentive structure at all has similar hazards. (Ever seen the software quality bar lowered in order to meet a deadline?) So long as the company does have standards, and processes it trusts to enforce those standards, it's possible to guard against that failure mode, just as you'd guard against any other employee misbehaviour.

If you do have employees (or execs) bypassing the process or lowering their standards in order to meet short term goals, that in itself is a cultural problem the company would want to address.

Edit: it's worth noting that every manager who has more planned work than they can execute with their current head count already has a short-term incentive to lower their hiring bar and get someone in the door quickly. Managers get measured on executing to plan, so that's probably a stronger incentive than any bonus structure.

So my point isn't that lowering the bar to game the system will never happen, but that it's a failure mode that already occurs and that the system should already have defences against.