RSSAmplifier

Blog

programming is terrible

lessons learned from a life wasted

programmingisterrible.comRSS feed ↗20 posts

Latest posts

Questions I have been asked about photography

… and some answers I have given which may or may not help you. I haven’t been coding much, instead I’ve been enjoying nature photography, and sharing it on twitter. It’s why I haven’t been blogging here as much as I used to. As a result, I find myself being asked about photography far more than I am about coding, and so much like with coding, I decided to write up my…

How to befriend Crows

There is no secret to making friends with crows. Like many things in life, it requires time, patience, and disposable income. Step 1: Find Crows. Crows tend to hang out where humans leave trash, so they’re everywhere. Step 2: Leave food out for the crows to eat. Crows are carrion-eaters, they’ll eat almost anything. They like raw peanuts (in the shell, unsalted, not roasted either), they like…

Scaling in the presence of errors—don’t ignore them

Building a reliable, robust service often means building something that can keep working when some parts fail. A website where not every feature is available is often better than a website that’s entirely offline. Doing this in a meaningful way is not obvious. The usual response is to hire more DBAs, more SREs, and even more folk in Support. Error handling, or making software that can recover from…

What the hell is REST, Anyway?

Originating in a thesis, REST is an attempt to explain what makes the browser distinct from other networked applications. You might be able to imagine a few reasons why: there’s tabs, there’s a back button too, but what makes the browser unique is that a browser can be used to check email, without knowing anything about POP3 or IMAP. Although every piece of software inevitably grows to…

Repeat yourself, do more than one thing, and rewrite everything

If you ask a programmer for advice—a terrible idea—they might tell you something like the following: Don’t repeat yourself. Programs should do one thing and one thing well. Never rewrite your code from scratch, ever!. Following “Don’t Repeat Yourself” might lead you to a function with four boolean flags, and a matrix of behaviours to carefully navigate when changing the code. Splitting things up…

Write code that's easy to delete, and easy to debug too.

Debuggable code is code that doesn’t outsmart you. Some code is a little to harder to debug than others: code with hidden behaviour, poor error handling, ambiguity, too little or too much structure, or code that’s in the middle of being changed. On a large enough project, you’ll eventually bump into code that you don’t understand. On an old enough project, you’ll discover code you forgot about…

Psychological Safety in Operation Teams

Psychological Safety in Operation Teams : Think of a team you work with closely. How strongly do you agree with these five statements? If I take a chance and screw up, it will be held against me. Our team has a strong sense of culture that can be hard for new people to join. My team is slow to offer help to people who are struggling. Using my unique skills and talents comes second to the…

How do you cut a monolith in half?

It depends. The problem with distributed systems, is that no matter what the question is, the answer is inevitably ‘It Depends’. When you cut a larger service apart, where you cut depends on latency, resources, and access to state, but it also depends on error handling, availably and recovery processes. It depends, but you probably don’t want to depend on a message broker. Using a message broker…

I like this talk a lot: what modularity is, what we use it for,...

I like this talk a lot: what modularity is, what we use it for, how modularity happens in systems, and how we can use modularity to manage change.

RIP, Mathie.

Last night I found out i’d lost a friend , and if you’ll be patient with my words, I’d like to reflect a little. Mathie was one of the older, weirder, geeks I met. I’d escaped my home town in the edge of nowhere, and it was my first time having a peer group of adults. He’d helped everywhere. With the student run shell server, with the local IRC server everyone…

PapersWeLove London: End-to-End Arguments In System Design

This week I gave a short talk on a paper I love: End-to-End Arguments in System Design The talk was recorded and uploaded (but not captioned), and you can watch it here: https://skillsmatter.com/skillscasts/8200-end-to-end-arguments-in-system-design-by-saltzer-reed-and-clark

A million things to do with a computer!

I gave a talk at !!con last weekend, about my favourite programming language scratch: Back in 1971, Cynthia Solomon and Seymour Papert wrote “Twenty things to do with a computer”, about their experiences of teaching children to use Logo and their ideas for the future. They were wrong: There’s a lot more than twenty. Logo’s successor, Scratch, has over thirteen million things that children and…

Addendum: Write code that is easy to delete, not easy to extend.

I found two translations by accident. I can’t tell if they are perfect translations but I am thankful nonetheless. Russian Chinese (Many people mentioned The Wrong Abstraction , and it is worth mentioning here too.)

Write code that is easy to delete, not easy to extend.

“Every line of code is written without reason, maintained out of weakness, and deleted by chance” Jean-Paul Sartre’s Programming in ANSI C. Every line of code written comes at a price: maintenance. To avoid paying for a lot of code, we build reusable software. The problem with code re-use is that it gets in the way of changing your mind later on. The more consumers of an API you have, the more…

This is short, and packed with the voice of experience.

This is short, and packed with the voice of experience.

I got my talk transcribed, and now it has subtitles in english.

I got my talk transcribed, and now it has subtitles in english.

Nothing is more indicative of a bullshit job than the interview

Technical interviews, as they stand, are at best a proxy for finding people exactly like the interviewer and at worst part of the systematic discrimination plaguing tech . We have very little idea about what makes good code, so it should come as no surprise that we have little-to-no idea how to find people who are good at coding, along with the dozens of complementary skills. Tech interviews boil…

What Your Open Source Culture Really Says, Part One

What Your Open Source Culture Really Says, Part One : “What Your Open Source Culture Really Says”, a handy translation guide for the myriad of bullshit that is the world of open source — in particular the corporate exploitation of unpaid work.

How to burn your audience on twitter.

Twitter is not great at many things, but it worked well enough for me until now. As much as I enjoy having a public persona on twitter, I primarily use it for arranging my social life. That was until I hit newsy combinator and techcrunch — my mentions filled up with people shouting so loudly, I couldn’t hear my friends anymore. As a short term fix, I forced everyone who followed me to…

(╯°□°)╯︵ ┻━┻

(╯°□°)╯︵ ┻━┻ : Women are leaving your tech company because you don’t deserve to keep us around. […] Fuck that, we’re done. It’s not us, it’s you.