"The Centre of the Universe is of course that marvellous land known as Fraggle Rock. It is thus called because it is A Rock and Fraggles Live There. Fraggles are a noble race. Fearless, dignified, intellectual, they represent the very pinnacle of civilisation and culture. A Fraggle *is* , most assuredly, the best of all possible creatures." A long time ago, there used to be a TV show called…
Disclaimer I don't know anything about Bitcoin and everything I say is usually wrong. Imagine Alice grows turnips in a village. Everyone buys her turnips because hers are the best around. She trades them locally with money. Then one day, she hears that there's a guy Bob in a village far away that wants to buy her turnips. She can't sell them there herself because it's too far, but hey old Eve…
No, not that one . Or that other one . The letters "MSN" have meant so many things to so many people, a term that's been overloaded with a thousand different meanings. In the same way they throw the words "National Lampoon" onto any random movie to indicate that it claims to be a comedy, they slap the "MSN" label onto just about anything so that your poor brain goes "oh, a brand I've heard of" and…
The Lost Chord. Programmers just can't seem to stop making new things. You only have to look at how many different unit-test frameworks and build systems there are out there to see that. We're drawn to keep reinventing software that already exists, adding little improvements and new approaches. It's like a disease sometimes, it infects us, attaches to our brains while we sleep and whispers "Code…
There's a key thought of UNIX philosophy which centers around the idea of linking programs together. You know, piping the output from grep into sed and then into sort , that kind of thing. It kinda works well, I guess. For text at least. But one of the reasons it can work OK is because you, as the end-user writing this little script or command, have full knowledge of the pieces you're building it…
Just a quick post today to write down some lightmap lessons I've learned over the years, inspired by Ignacio Castaño's post on his iOS optimizations for The Witness . Many years ago I helped a little on the Wii port of "Call Of Duty: Modern Warfare", and it reminded me of the "fun" I had rewriting the lightmap system to fit into that. So I thought I'd write up some of the little tips and tricks I…
I had a Commodore Amiga as a kid. I'm told they were never especially popular in America, but in Europe they were everywhere. Well, sucks to be them I guess. Image (c) Bill Bertram 2006, CC-BY-2.5 The Amiga was and still is, for its time, the best home computer ever made. It had a clean, powerful CPU architecture. It had an operating system that blended the best parts of CP/M and Unix with none of…
Disclaimer Warning: this post may contain opinions . If you are allergic to opinions, please try the associated reddit thread instead where you will be safe from them. There's two schools of thought about how we should treat computing. One thinks programming should be about writing things to best reflect the truth of how they will be executed (C, C++, Pascal, Go, Rust, etc). The other thinks we…
Disclaimer I don't work at Naughty Dog, and I don't have any secret knowledge of Jak & Daxter, except what I figured out myself from the disc. So a lot of this may well be wrong. Take a pinch of salt with it. The massive world of Jak & Daxter I've always had a fascination with Jak & Daxter ever since it came out, way back in 2001 on the PlayStation 2. It was one of the first 3D games I'd actually…
Warning Contains (very minor) spoilers for The Witness. Jonathan Blow's 2016 game The Witness received high praise from most reviewers. Personally, I loved the island and the environmental puzzles, but I hated all the stupid little NP-hard slidey-line puzzles. I'm not here to moan about that today though. Let's talk about layout. The island itself is an absolute joy to explore. No corner of it is…
There's two ways to learn about something. One is to go in through the front door; you read the tutorial, you follow the instructions, and you progress forward through it. But the trouble with that approach is that you'll only learn what they want you to learn. Everyone has an agenda, and what they directly tell you about their product only reflects that agenda. If you want to really understand…
An oft-repeated fact on programming forums these days is that a decent optimizing compiler will always beat a puny human's attempt at hand-written assembler. There are rare cases, like MPEG decoders, where making good use of the SIMD instructions can allow assembly to massively beat the compiler. But generally you'll hear that the compiler will always do better. The reason given for this is…
Some things are just plain hard to use. There's a lot of things you have to learn before you can use it effectively, there's big manuals you have to read, there's gotchas you need to be aware of first. I can't use this thing, people will say. I just want to do X, why do I have to mess around with all these details which are getting in the way? Why can't it be simple? It's a common enough…
What would you do if you could do anything ? If you were all-powerful, and could create anything just by waving your hands around? The answer is, nothing. You could create anything you want right now . Just grab a pen and paper and draw a new universe. You could have drawn 5 different scenes today, but you didn't. It takes a special kind of person to push past the barrier of the empty page, a…
I've been meaning to write something about this for years but never got around to it. I don't claim there's any great use for this stuff; it's just one of those little oddities us graphics programmers like to collect. You all know what tonemapping is - converting a HDR (High Dynamic Range) image into an LDR (Low Dynamic Range) image for display. What might not be immediately obvious is that it's…
Uh oh. They're at it again. Yes folks, Euclideon are back with more of their smarmy-voice-over-without-any-detail brand of hype. They call it "Unlimited Detail", but what they don't do is explain how any of it actually works. If only there were some way we could find out how their idea works. If only... wait! There is! One of the great things about ideas is that you have two choices; you can…
You all know what floating-point arithmetic is , so I won't bore you by covering that. The IEEE standard originally defined two variants, the 32-bit single-precision format and the 64-bit double-precision format. But that's not all you can do. If you understand the principles behind it, you can make your own floating-point format at any precision . The most popular small-float format is the 16-bit…
There are some topics which, if posted onto a forum or news site, cause programmers to spew out more blather than all the rest put together. Such topics include: What kind of office chair you should have. The benefits of a closeable office door over an open-plan office. The brand of keyboard you use to type with. The configuration or quantity of your monitor(s). Standing desks. How long it takes…
Every now and again I see this odd little pattern pop up. You'll be using some software, some big-name famous thing perhaps, and you'll happen across an article on-line where you discover it was written by just one guy . That's not so unexpected perhaps; every project probably started as one man's idea. The odd part is when you delve a little deeper into the history of this guy, only to find out…
A little while back I found need of a PNG loader for a small project of mine . Being a complete tool I of course decided to write my own -- after all, why save yourself effort when there are still wheels waiting to be reinvented? You can check the source to the inflater code here if you so like - it's quite cleanly written. In fact I wrote it specifically to be easy to read, rather than to be the…