"When we first did this, however, we forgot to make the horse stop acting like a horse. Pretty soon there was a rash of server crashes because the horse inside the player was wandering around, picking up the stuff it found inside the player, rifling through the player’s backpack and eating things it thought were edible, and eventually, wandering “off the map” because the player’s internal coordinate system was pretty small, and the edges weren’t impassable." Games programming, folks.

"The reason I am able to make Twitter bots is because I have been programming computers in a shitty, haphazard way for 15 years, followed by maybe 5 years of less-shitty programming. Every single sentence in the big preceding paragraph, every little atom of knowledge, represents hours of banging my head up against a series of technical walls, googling for magic words to get libraries to compile, scouring obscure documentation to figure out what the hell I’m supposed to do, and re-learning stuff I’d forgotten because I hadn’t used it in a while." This paragraph also represents my experience of both programming and how I write my toys; a slightly round-about set of experience to get to where we are now, with lots of reading the manual and doing things in dumb ways occasionally. Programming!

Great article from Jeff Minter on the journey from 70s vector art, 80s vector games, through to the (excellent) Tempest 2000 - including some great stuff on embracing the Jaguar's chips and instructions to make beautiful weirdness - and onwards through Nuon and Space Giraffe to TxK on the Vita. A really lovely balance in the article of coding voodoo, focusing on gameplay, and always wanting to make things both weirder and prettier. (Incidentally: I loved T2K when I first played it, but playing an original Tempest cab at Ground Kontrol was a special moment - striking how much a spinner changes that game). Definitely recommended.

"At last week’s Game Developers’ Conference I delivered a talk titled “AI-driven Dynamic Dialog”, describing the dialog system used in Left4Dead, Dota, and basically all of Valve’s games since The Orange Box." This is a brilliant talk - really worth going through the PDF for. In a nutshell, it's how the Left4Ddead conversation works - something I tried emulating with my Twitter bots a while back - but also sheds light on how I could have sped up some of the decision-making code on Hello Lamp Post. It's also good on what designing (andwriting) for this kind of work looks like. Might have to write something longer on this.

"I think as experienced game developers / engineers / artists / makers, we don't realize how we've developed strong senses of "vision" -- the ability to visualize and maintain this thing in our head, and gradually work to realize that thing into existence despite countless obstacles. Frequent failure is expected! But this kind of emotional intelligence, to be patient with yourself and your work, takes time to cultivate. People have trouble grasping this if they are new to making things, and maybe it's our mission to help them own their constant failures." This is a really good way of expressing this issue. And, in particular, spending time understanding what's going wrong, rather than throwing hands up at the first error message. Those tracebacks, however weird they may seem to begin with, are designed for the reader, and they help with the journey.

"A lot of the stuff going on just isn’t very ambitious. ‘The thing about the advertising model is that it gets people thinking small, lean,’ wrote Alexis Madrigal in an essay about start-ups in The Atlantic last year. ‘Get four college kids in a room, fuel them with pizza, and see what thing they can crank out that their friends might like. Yay! Great! But you know what? They keep tossing out products that look pretty much like what you’d get if you took a homogenous group of young guys in any other endeavour: Cheap, fun, and about as worldchanging as creating a new variation on beer pong.’" Still thinking on this article a bit. It touches on lots of things I have issues with - the startup scene, and in particular the US startup scene, and the usefulness of what it makes; wrestling with the idea that making IS value, something I do a lot; having watched recent Bret Victor videos, what something meaningful would work like. But also: it reminds me why I've chosen some of the work I have recently, that values are something you reassess and fight for, that value isn't just curing cancer or better pill bottles, but also charm and joy and wit and provocation and art. (It's probably not another niche dating service).

Newspaper Club is a great product - but I'm really glad Tom's written about the technical underpinnings of the latest version of the code, because it's super impressive. They threw out InDesign and replaced it with their own renderer, written in Cocoa; they have a gorgeous, rich Javascript client that's a joy to use; and they have a development team of 2. TWO. Brilliant work, folks.

"I think it’s valuable to have an understanding of assembly language. Assembly language is the lowest level of abstraction in computers – the point at which the code is still readable. Assembly language translates directly to the bytes that are executed by your computer’s processor. If you understand how it works, you’ve basically become a computer magician." I don't, and this looks like a lovely way to learn. Also: I think I finally get this. Nine-year-old me sure didn't.

"I wanted to compile a list of online, Web-based tools that Web engineers can use for their work in development, testing, debugging and documentation." It is a really good list (I say this mainly because the first thing on the list is RequestBin, which is the thing I always forget the name of).

"In school most people got to try drawing or playing instruments. Trying out code should sit in the same category: as a creative pursuit that you should at least try before you decide whether you like it or not. There is a huge drive now to get kids to do just that, whether it’s to give them skills required by the modern world or whether it’s about teaching creative ways of thinking. CodeClub is one of the initiatives that has the potential to not just show how much this is needed, but provides the solutions. Kids will be okay." [this is good]

"Popularity rules, and fitness for purpose is secondary. We even make up a little rationalization about this: “Our code must be easy to read for the next programmer, so we pick idioms that will be familiar.” That would make stellar sense if idioms are forever, but they aren’t. They come and go like trends in pop music, and Ruby Archeologists can accurately date a business application by examining its gemspec file." I liked this line of thought.

"jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text." Sounds super-useful.

A huge, fascinating, braindump from Bret Victor, mainly on the state of how programming is being taught (especially in the "learn to code, live" idiom that's popular at the moment). A lot of it is very good; I'm not sure it applies everywhere, and I'd like to see examples not about geometry (which I think are entirely possible, given Victor's idioms). But still: it's huge, and dense, and well-reasoned, and has lots of jumping off points. Good to see someone thinking about this stuff like this.

"This gem provides a ruby interface to access Novation’s Launchpad programmatically. LEDs can be lighted and button presses can be responded to." Also later ported to Processing. Big "oooooooh" from here, because that'd be a lovely UI for so many things.

"In the golden age of BASIC, it was easy for anyone to write a program. Now we offer you this exact same capability, but this time with the advanced features of the Nintendo DSi™ system... Many programs are included to ensure that you can fully enjoy using BASIC. The included programs were also written in BASIC, so you can add new features to them in order to enhance your games. You can also take the programs and data you create and convert them to QR codes that can be shared with friends who also have Petit Computer on their Nintendo DSi systems. (Programs included: 12 feature samples,5games, a character picture tool,a background screen creation tool,a graphics tool,and a picture-drawing tool.)" Interesting - especially the music-creation stuff, as Create Digital Music proved.

"My next book is even stranger than my last. It's an entire book, 65,000+ words worth, about a single-line Commodore 64 BASIC program that is inscribed in the book's title, '10 PRINT CHR$(205.5+RND(1)); : GOTO 10'... Despite it's relatively simple form and structure, the program produces a surprisingly intricate maze pattern using the C64's unique PETSCII graphical characters. The book discusses many aspects of this feat from different perspectives, including the history of mazes, porting, randomness, the BASIC language, and the Commodore 64 platform. It's interspersed with short "remarks" (get it, BASIC dorks?), among them discussions of assembly, the demoscene, and a variety of ports, including one I somehow wrote to run on the Atari 2600." I would like to buy this book.

"Topics like linear algebra, topology, graph theory, and machine learning are becoming vital prerequisites both to doing daily work in these fields and, more importantly, to inventing, popularizing, and teaching the new creative tools that are rapidly arising. Without them, artists are forced to wait for others to digest this new knowledge before they can work with it. Their creative options shrink to those parts of this research selected by Adobe for inclusion in prepackaged tools. Instead of the themes and concerns of creative work driving the selection of tools from a growing technical cornucopia, artists find themselves turned into passive users of tools that are already curated, contextualized, and circumscribed by others.

So, I want to do something about this. I want to figure out a way to teach myself and others these more advanced mathematical and computational concepts with a specific eye towards applying them in creative technology."

This is going to be very good. (I'd quote the whole post if I could, but this leapt out at me hardest.) And: on the day Greg's book arrived.

"Sugar is a Javascript library that extends native objects with helpful methods. It is designed to be intuitive, unobtrusive, and let you do more with less code." Looks nice - and suitably Javascripty.

"Micro-frameworks are definitely the pocketknives of the JavaScript library world: short, sweet, to the point. And at 5k and under, micro-frameworks are very very portable. A micro-framework does one thing and one thing only — and does it well. No cruft, no featuritis, no feature creep, no excess anywhere. Microjs.com helps you discover the most compact-but-powerful microframeworks, and makes it easy for you to pick one that’ll work for you." Ooh, nice.

"It’s okay if they don’t completely understand how a program works after they’ve played with it a little. Very few ideas are completely original. The more material you give your students to plagiarize, the wider the range of derisive works they’ll make from them." Perhaps my favourite point in this very good piece. (Though I've found GameMaker way less of a "kit" than it makes out). But yes: no-one wants to learn to program (for its own sake). People want to learn to make things for screens; programming is incidental.

"HyperCard effectively disappeared a decade a go, making way for supposedly bigger and better things. But in my mind, the end of HyperCard left a huge gap that desperately needs to be filled – a space for an easy to use, intuitive tool that will once again let average computer users make their own tools. Such a project would have huge benefits for all of us, wether we are artists, educators, entrepreneurs, or enthusiasts." Lovely piece by Jer Thorp on Hypercard. I've mentioned Hypercard is quite formative for me, right?

"Every time you throw in a quick fix for something because it’s Getting Late(tm), stop and see if you can fix it correctly right then. Pragmatism says it might not be possible in the time remaining, and that’s ok; “Real artists ship” and all that but a ruthless artist will fix the problem first thing in the next release so they can keep shipping again and again and again." Unhuh.

"RequestBin lets you create a URL that will collect requests made to it, then let you inspect them in a human-friendly way. Use RequestBin to see what your HTTP client is sending or to look at webhook requests." Which is very useful.

"If school programming languages that serve children best end up looking quite a bit different from conventional programming languages, maybe it’s actually the conventions that need changing." Several good points from Alex, and some good points about breaking away from equating "computational" with "procedural".

"I could argue back and forth forever, but what I really want to do as a developer, is to work on games in tiny, tiny teams. It means less compromise when it comes to design. It means more freedom when it comes to implementation."

"The point isn't nostalgia, that things were better in simpler times, but that the conditions we create (deliberately or accidentally) for and around the practices we pursue have a tremendous influence on the ways we carry out those practices. In the case of computer programming in particular, the apparent benefits of speed, efficiency, accessibility, and other seemingly "obvious" positive virtues of technical innovation also hide lost virtues, which of course we then fail to see." Culture as a byproduct of conditions.

Really good look at getting your head around vim from Mislav. Especially on the money with regard to starting slow, and adding things as you need them. The worst thing you can do is _start_ with somebody else's .vim files.

"Sycorax is a Twitter client, written in Python, that choreographs the online behavior of fictional characters. Other tweet schedulers make your personal Twitter stream look like a clockwork robot is behind it, posting tweets at the optimal time for penetration into your social network. Syxorax lets fictional characters use Twitter the way real people do. Your characters can post at odd hours and talk to each other, taking their lines from a simple script you write, but without any ongoing work from you." Very nice.

The highlight of Ruby Manor: Tom Stuart's completely brilliant explanations of programming with nothing but Procs: making them, calling them, and nothing else. He made it fun, informative, and the right amount of mental.

"It’s hard to believe that there was a time when any of these weren’t conventional wisdom, but there was such a time. Unix combines more obvious-in-retrospect engineering design choices than anything else I’ve seen or am likely to see in my lifetime.

It is impossible — absolutely impossible — to overstate the debt my profession owes to Dennis Ritchie. I’ve been living in a world he helped invent for over thirty years."

Oh, nice; I'm always adding #format_date and #format_time methods to my formatting_helper.rb striaght off the bat, so it's nice to know there are built-ins - although I'm not keen on just overriding defaults, if only so other programmers don't get lost working out why the defaults aren't the same.

“I guess you could ask people to make recommendations on LinkedIn,” said Scott. Scott and I both work in information technology. “ 'Working with Cynthia was an amazing experience as she always made deadlines and was incredibly prepared for meetings and she is as good as her word when it comes to not dropping a deuce on your floor.'” Marvellous writing, as ever, from Paul Ford.

"JavaScript Garden is a growing collection of documentation about the most quirky parts of the JavaScript programming language. It gives advice to avoid common mistakes, subtle bugs, as well as performance issues and bad practices that non-expert JavaScript programmers may encounter on their endeavours into the depths of the language." This looks really, really good. Alas, unlike Phil, I'm still not quite fully up-to-speed on Prototypes, but it's a great piece of documentation nontheless.

"This tutorial assumes no previous knowledge of scripting or programming, but progresses rapidly toward an intermediate/advanced level of instruction . . . all the while sneaking in little nuggets of UNIX® wisdom and lore. It serves as a textbook, a manual for self-study, and a reference and source of knowledge on shell scripting techniques. The exercises and heavily-commented examples invite active reader participation, under the premise that the only way to really learn scripting is to write scripts." Really good stuff, which Nick pointed me at this morning when I revealed I couldn't write bash scripts.

Bot that buys dirt-cheap goods on TradeMe and tells Twitter what it's buying/bidding on. Seems we need a Rule 38: if software is described in an XKCD comic, the chance of it being brought into reality approaches 1 as t approahces infinity.

"After seeing there is a turing complete language in game, I felt like I should do something interesting with redstone in Minecraft. People already have done clocks and adders so I wanted to do something a little different while also be potentially useful. As a result, I designed out a ticker display." At least as crazy as those LittleBigPlanet calculators.

"The book assumes no prior knowledge of programming, but also doesn't treat I7 like a regular programming language: loops, for instance, are barely mentioned. In fact, Thinking in Inform 7 might have been a good title." This sounds great.

Excellent, detailed article on how Microsoft calculate TrueSkill - an algorithm for matching you to players about in your skill level. This is what is used every time you hit "game with strangers" on an XBL title, basically. Fascinating, detailed, not too challenging if you take it slow/steady - and the implementation is on github...

"I keep coming back to EoPS (I am re-reading it as I write this) because it’s short, it’s easy reading, it’s funny, and much of its advice is timeless. In a way, you could say its age is even a plus-point, because it makes it obvious which of the rules are of their time and which are fundamental." Sounds great.

"Primarily, spaghetti code is a literary failing. Through my observations of the developers responsible for these wrecks — they often turned out to be poor prose writers and some were very arrogant about their coding abilities. I believe the core skill that these cowboys lack is that of editing – an instinctive drive towards pruning and tweaking that all good writers know is one of the most important components of literary creation." Some good stuff in here, especially around technical literacy (and, by extension, literate programming).

"Here’s my notes for the talk Streaming Massive Environments from 0 to 200 MPH presented by Chris Tector from Turn 10 Studios. He’s listed as a Software Architect there, and obviously has a deep understanding of the streaming system they used on Forza 3. This talk was nice and deep technically, and touches all parts of the spectrum." Very technical. But: if you can grok what's going on (and this is about at the limits of my simple understanding - could barely start to recreate what's described), it's very interesting about the challenge of rendering beautiful, high detail environments at a solid 60fps, mainly by pre-preparing a lot, and maximising streaming performance both from disk and from memory.

"Better alternatives [to the RAILS_ constants] have existed for a while in Rails core (some since 2.1.0), and it’s about damn time you start using them properly. There’s also some other helpful methods on the Rails module we’ll explore in this post." That was handy.

"Building a working computer from Nand gates alone is a thrilling intellectual exercise. It demonstrates the supreme power of recursive ascent, and teaches the students that building computer systems is -- more than anything else -- a triumph of human reasoning." Ooh, that could be good, when I have an hour spare. (Another Google TechTalk).

"Jcrop is the quick and easy way to add image cropping functionality to your web application. It combines the ease-of-use of a typical jQuery plugin with a powerful cross-platform DHTML cropping engine that is faithful to familiar desktop graphics applications." Wow - snappy, well-made, and very impressive.

"Welcome to the home of the Generic Syntax Highlighter - GeSHi. GeSHi started as an idea to create a generic syntax highlighter for the phpBB forum system, but has been generalised to this project." As seen on the Panic blog: very impressive, in particular, the clickable documentation of Objective-C keywords.

"Here’s a complication of some common and useful time & date calculations and equations. Some, though very simple, are often misunderstood, leading to inefficient or incorrect implementations. There are many ways to solve such problems. I’ll present my favorites." These are, indeed, useful, and I've been using a few of them recently.

"The ST-LINK USB programmer/debugger comes attached, but it’s easy to crack one off and use this for future STMicro-compatible projects; clearly a plan of giving away the razor and selling the blades." $7 for a microcontroller which also has the usb connector/debugger attached; snap it off when you're done.