Blogs / Personal blogs

Tim Bray

tbray.org

Popular posts
93
Total points
26,134
HN comments
15,768
Rank
#21 personal

Visit tbray.org → On Hacker News Apr 2008 – May 2026

Tech Industry & Business 38Society, Policy & Culture 29Software Engineering 23Life, Learning & Writing 15Web & Frontend 14Career & Management 14

1

On SQS

In my position I probably shouldn’t have a favorite AWS product, just like you shouldn’t have a favorite child. I do have a fave service but fortunately I’m not an (even partial) parent; so let’s hope that’s OK. I’m talking about Amazon Simple Queue Service , which nobody ever calls by its full name.

2

Broken Links

I’ve been getting madder and madder about the increasing use of dorky web links; for example, twitter.com/timbray has become twitter.com/#!/timbray . Others have too; see Breaking the Web with hash-bangs and Going Postel . It dawns on me that a word of explanation might be in order for those who normally don’t worry…

3

Go Creeping In

I’ve seen the inside of the Google and Amazon tech stacks. There are common threads that run through them and also, I bet, through most BigTechCos. Here and there down the stack is a lot of C++ and vestigial remnants from earlier days, Perl or PHP or whatever. Out in front of humans, of course, JS. But in between…

4

Post-REST

More or less all the big APIs are RESTful these days. Yeah, you can quibble about what “REST” means (and I will, a bit) but the assertion is broadly true. Is it going to stay that way forever? Seems unlikely. So, what’s next?

5

RFC 9839 and Bad Unicode

Unicode is good. If you’re designing a data structure or protocol that has text fields, they should contain Unicode characters encoded in UTF-8. There’s another question, though: “ Which Unicode characters?” The answer is “Not all of them, please exclude some.”

7

Fat JSON

Most server-side APIs these days are JSON-over-HTTP. Developers are generally comfy with this, but I notice when I look at the JSON that it’s often, uh, what’s the tactful term these days? Let’s say “generously proportioned”. And I see clumsy code being written to walk through it. The options for dealing with this are…

9

Making Code Faster

I’ve enjoyed writing software for 40+ years now. Lots of activities fall into that “writing software” basket, and here’s my favorite: When you have a body of code with a decent unit-test suite and you need to make it go faster. This part of the Quamina diary is a case study of making a piece of the library faster.

10

Golang Diaries: Generics

My coding time this year has been invested in Quamina , an event-filtering library implemented in Go. Just in the last couple of weeks I spotted an opportunity to bring Go’s shiny new generics to bear, and not just anywhere, but for a central data structure. I got good results, but the process was sort of painful; I…

11

Fixing JSON

I’ve edited a couple of the JSON RFCs, and am working on the design of a fairly complex DSL, so I think I can claim to have dug deeper in the JSON mines than most. We can easily agree on what’s wrong with JSON, and I can’t help wondering if it’d be worth fixing it.

15

Doing It Wrong

Enterprise Systems, I mean. And not just a little bit, either. Orders of magnitude wrong. Billions and billions of dollars worth of wrong. Hang-our-heads-in-shame wrong. It’s time to stop the madness.

16

An Android Side Project

I want to be able to write apps for my phone in in something other than the Java language; for example Ruby or Python. This isn’t one of the things my group at Google has asked me to look at, but I think it’s worth doing and worth some of my time. I’m writing this today because I’m amused by the contrast with the…

17

Desperate Perl Hacker

I owe a whole lot to Perl. So does the practice of computing in general, and the construction of the Web in particular. Perl’s situation is not terribly happy; I wouldn’t go so far as to say “desperate”, but certainly these are not its glory days.

19

A Story of O(racle)

In recent days I’ve been thinking of JavaOne, as we kicked it around and decided we just couldn’t send speakers ; and of Oracle OpenWorld , to which JavaOne will now serve as an appendage. It reminded me of a conversation I had last year about Oracle.

20

Tail Call Amputation

This is perhaps a slight digression; just an extended expression of pleasure about Clojure’s recur statement. It neatly squashes a bee I’ve had in my bonnet for some years now; if it’s wrong to loathe “tail recursion optimization” then I don’t want to be right.

21

Ongoing · Concur.next — Hard-Core Clojure

Here’s real news: Alex Osborne of National Library of Australia , also known as @atosborne , whom I first met on #clojure , took the Wide Finder bit between his teeth and has posted a remarkable implementation story: Widefinder 2 with Clojure . Um, 8m4.663s! If you care about any aspect of this stuff you really ought…

22

Clojure N00b Tips from Tim Bray

Clojure is the new hotness among people who think the JVM is an interesting platform for post-Java languages, and for people who think there’s still life in that ol’ Lisp beast, and for people who worry about concurrency and state in the context of the multicore future. Over the last few days I’ve been severely…

23

Idiomatic Clojure

I’m starting to wind down my Clojure research, but I’m feeling a little guilty about having exposed people to my klunky Lisp-newbie code, perhaps giving a false impression of how the language feels. So I’d like to show you what it looks like when it’s created by someone who’s actually part of the tribe and thinks in…