A common problem in software engineering is avoiding confusion and errors when dealing with multiple types of data that share the same representation. Classic examples include differentiating between measurements stored in different units, distinguishing between a string of HTML and a string of plain text (one of these needs to be encoded before...
You’d be forgiven for not having heard of RalliSport Challenge - a rally racing game for the original Xbox, and Windows PC. But don’t go away without playing the sequel - the best rally racing game ever made. I missed out on the Xbox during it’s ascent to online gaming console of choice, picking one up only recently when a friend of mine gave me...
It’s easy to forget that when dual screen feature of the DS was announced some corners of the gaming world thought Nintendo had lost the plot. Whilst a reasonable number of launch games used the lower, touch-sensitive screen in novel ways, it was important that games continued to do so as the console matured. Meteos was the DS’s second big-name...
Usually it’s IE6 that makes you cry because of quirky behavior, but today I ran into a bug in Chrome. It caused notification messages to sometimes get stuck in the title bar, in my Title Alert jQuery plugin. It turns out that if you set document.title immediately after you have activated the browser tab (for example in the window.onfocus event...
Flicky is one of those games that’s been released so many times on so many compilations that you probably already own it without even realising. It’s also a typical 1980s arcade game—simple to pick up, difficult to master, and a lot of fun along the way. I’m a bit too young to have encountered Flicky in the arcades. I actually stumbled across the...
It seems a long time ago when mobile phones functioned more as a phone than anything else. You could download games for them, of course, but the whole experience was hard work and underwhelming at best. In fact, you’d be forgiven for wondering why you’d even bother. And then along came Vijay Singh. I’ve always loved golf video games, even if I...
Kuru Kuru Kururin sums up what I think is so great about the sort of games Nintendo publish. It’s an unorthodox action/puzzle/maze game made by a third party best known for their scrolling shoot ’em ups. No other company would have the balls to release a game like this, never mind as part of a console launch line-up. The launch of a console is...
I like to think that this game taught me as much about world geography as school did, but that’s probably a slight exaggeration. Still, it remains to this day one of my all time favourite games. You’re a little dude in a white safari suit on an around-the-world quest to destroy bouncing balloons at various well known locations. A second player...
A while back, I was poking around LLVM bugs, and discovered, to my surprise, that LLVM doesn’t support the va_arg intrinsic, used by functions to accept multiple arguments, at all on amd64. It turns out that clang and llvm-gcc, the compilers that backend to LLVM, have their own implementations in the frontend, so this isn’t as big a deal as it...
I examine Belnap’s two criteria of existence and uniqueness for evaluating putative definitions of logical concepts in inference rules, by determining how they apply in four different examples: conjunction, the universal quantifier, the indefinite choice operator and the necessity in the modal logic S5. This illustrates the ways that definitions...
We study the interpretation of Grzegorczyk’s Theory of Concatenation TC in structures of decorated linear order types satisfying Grzegorczyk’s axioms. We show that TC is incomplete for this interpretation. What is more, the first order theory validated by this interpretation interprets arithmetical truth. We also show that every extension of TC...
I’ve been playing this on-and-off for years and still haven’t finished all the puzzles. It’s one of those games that I love so much that I sort of don’t want to finish it. Possibly the greatest puzzler of all time – disregarding Tetris, of course. Each stage sees you having to complete the image by placing and removing blocks on the board. The...
For a website me and my friend Robert recently released we had to do a tedious work of manually positioning a lot of car rental stations geographically on a Google Maps widget. For every station, we had to look up the address using a swedish yellow pages service or Google it if it wasn’t found, and then manually verifying that there was a car...
I’ve recently come back to this game in an attempt to complete it 100%, picking up my 10 year old save game. It’s a great game, though the sensitivity of the controls can be unforgiving at times. But it’s definitely worth persevering with. Think of it like a modern day Stunt Car Racer and you’ll be fine – laying off the accelerator is just as...
After the fuss of the last two weeks because of CVE-2010-3081 and CVE-2010-3301, I decided to take a look at a handful of the high-profile privilege escalation vulnerabilities in Linux from the last few years. So, here's a summary of the ones I picked out. There are also a large number of smaller ones, like an AF\_CAN exploit, or the l2cap...
Sep 24 2010 I find it incredibly hard not to be judgmental. I’m not sure what part of my personality makes this happen, but even when I try to curb tearing down other people, I end up doing it anyway. I’m not sure if it’s just me, but I think part of the problem is that these kinds of things are rewarded. One of the reasons that I use my real name everywhere is to try to improve the civility of my discourse. When you’re anonymous, it’s really easy to be...
Sep 21 2010 It’s funny how true this quote is. There are three people that I really admire: _why, Zed Shaw, and Yehuda Katz. And to simplify my tenses a bit, I’ll speak of _why in the present tense. What do these three guys have in common? They all churn out badass software like nobody’s business. _why started so many projects that it just adds to his mythical qualities; Zed has been cranking out software and blogs left and right, and Yehuda’s “
Sep 17 2010 So, Wednesday, Diaspora was released. If you’re not familiar, a few months ago everyone was up in arms about the latest Facebook privacy change. So four college kids started a Kickstarter project with a dream: let’s make a distributed, private Facebook. They asked for $10,000. They got about $200,000. They worked on the...
I really like Twitter. I think it’s a great, fun, service, that helps enable interesting online communities, and is a surprisingly effective way to spread news and information to lots of people online. One of the things that I’ve loved about Twitter is their API, and how open and welcoming they’ve been to developers. I even use Twitter from an IM...
I’m at Dragon*Con this weekend, my second time here now. I decided that if I was going to Dragon*Con again, I needed to do something in terms of costuming, and I wanted it to be something unique – I wasn’t going to come anywhere near as epic as some of the costumes people pull off, but I wanted something that was going to be a little impressive,...
Published 2010-09-04 My MSc dissertation 'Design and Analysis of a Gossip Algorithm', in which I present an algorithm for forming a dynamic, unstructured overlay in which each node can generate a stream of independent, uniformly distributed samples of the overlay membership. Such peer sampling services form the basis for a number of gossip algorithms...
Basically anyone who’s used Linux for any amount of time eventually comes to know and love the strace command. strace is the system-call tracer, which traces the calls that a program makes into the kernel in order to interact with the outside world. If you’re not already familiar with this incredibly versatile tool, I suggest you go check out my...
Aug 19 2010 Today is Whyday. A programmer’s holiday. Today is the day that we don’t forget that programming isn’t all Agile and driven by behavior and Serious Business. Inside each cubicle, the hacker spirit is trying to burst free. Today, it will. Today, I’m also releasing a prerelease version of Hackety Hack 1.0. It’s been a long time coming. The announcement of Whyday got me thinking about the past year of a world without _why, and the ‘your domain is about to...
In response to my query last time, ezyang asked for any tips or tricks I have for finding my way around the Linux kernel. I’m not sure I have much in the way of systematic advice for tracking down the answers to questions about the Linux kernel, but thinking about what I do when posed with a patch to Linux that I need understand, or question I...
I haven’t been feeling very motivated to blog lately – I’ve missed the last two weeks of Iron Blogger, and I’m not totally enthusiastic about any of the items on my “to blog” list. But, I do enjoy blogging when I actually get into posts, and I’d like to keep updating this blog. So, in a bit of a copout, and following in Edward’s footsteps, this...
Here’s my brief entry in the speculation derby surrounding the departure of Mark Papermaster from Apple. Assuming Papermaster is out at least partially due to the iPhone 4 antenna and not some completely unrelated matter, and assuming Apple really did know about the iPhone 4’s antenna problems even before Papermaster was hired, it may seem...
Jul 24 2010 Sometimes, insight comes from very unlikely places. I’m keenly interested in the music industry, and how it will evolve, or possibly die. I care deeply about music; it’s had a profound effect on my life over the years. Even though the entire industry has been screaming that they’re dying, I truly believe that music will never die. It’s bigger than money. I’m not exactly sure about the details, even though I have some ideas. In any case, I was...
I’m pretty sure every developer who has ever worked with a modern database-backed application, particularly a web-app, has a love/hate relationship with their ORM, or object-relational mapper. On the one hand, ORMs are vastly more pleasant to work with than code that constructs raw SQL, even, generally, from a tool that gives you an object model...
In this paper we show how the formal counterexamples to Hume’s Law (to the effect that you cannot derive a properly moral statement from properly descriptive statements) are of a piece with formal counterexample to other, plausible “inferential barrier theses”. We use this fact to motivate a uniform treatment of barrier theses which is immune...
Last time, I announced Check Plus, a declarative language for defining Check tests in C. This time, I want to talk about the tricks I used to implement a declarative minilanguage using the C preprocessor (and some GCC extensions). The Problem We want to write some toplevel declarations that look like: #define SUITE_NAME example...
Jun 30 2010 The images in this post have been lost to time. Oh well. Original post below, images removed. The other day I wrote a post about being excellent to each other. Today, I’ve got a great example of that for you: Divvy. What would you do if you received an email like this? Here’s what happened: Here’s a
I’ve measured the amperage across the solar panel throughout the day, at 9:00 AM (.3 amps); 12:00 PM (.7 amps); 5:00 PM (.3 amps); or about .4 amps averaged from 9:00 to 3:00. So, (0.4 amps) _ (12 volts) = (4.8 watts) _ (6 hours) = (28.8 watt hours / per day) The inverter takes a consistent 1 watt. Which comes to, (1 watt) * (24 hours a day) =...
Check is an excellent unit-testing framework for C code, used by a number of relatively well-known projects. It includes features such as running all tests in separate address spaces (using fork(2)), which means that the test suite can properly report segfaults or similar crashes without the test runner crashes. My main complaint about Check is...
Well, the battery ran out on me and the inverter’s power alarm started screeching at me. I don’t think the panel is giving it’s full output.
I added plumbers tape to the other side to support it even more and ran two 40 ft. extension cords to my house along my wall. I’ve then connected a power strip to the end and two Motorola USB Charging plugs. They rate around 5 watts each max. Looking great right now!
The battery charged my Droid, iTouch, and iPhone all through the night. Looking good so far!!!
I’m mounting the panel today, it’s looking good so far! I’ve mounted it to my Tree Fort. I’ve had to add a beam across the front to support the right side of the panel. To keep the panel rotated I’ve added a strip of plummer’s tape (the gray plastic strip on the left side) to the array.
A few months ago I found a really useful Stack Overflow Question. Here are my favorites from the answers. Use render_to decorator instead of render_to_response This decorator is found in the app django annoying, and is a very nice shortcut for declaring what template a view should render. Instead of returning the response of render_to_response,...
Ever since the rise of twitter, when URL shortening services got an extremely big popularity boost because twitter chose to shorten their URLs for technical reasons while ignoring user experience, the web has been polluted with shortened links. I want to be able to see where a link goes before I click it. I want to be sure that my links continue...
Just finished setting up wiring, can’t wait to get it up and running! I wired the SunForce Solar Panel up to the included charge controller. This charges the 18 ah Battery, an equivalent of 216 watt hours or around 3.5 days of charging (“10 watts an hour” * “6 hours a day” = “60 watt hours a day” then “216 watt hours” / “60 watt hours” = “about 3...
A few weeks ago, I wrote that software engineers should keep lab notebooks as they work, in addition to just documenting things after the fact. Today, I’m going to share the techniques that I’ve found useful to try to get in the habit of lab-notebooking my work, even though I still feel like I could be better at writing things down. Here’s my...
One of the major reasons I can’t stand webapps is because I’m a serious emacs junkie, and I can’t edit text in anything that doesn’t have decent emacs keybindings. Fortunately, on Linux, at least, GTK provides basic emacs keybindings if you add gtk-key-theme-name = "Emacs" to your .gtkrc-2.0. However, some webapps think that they deserve total...
Jun 08 2010 Right now, I’m having a bit of a ‘darkness before the dawn’ kind of moment. I feel like I might soon start to become productive again. It’s sort of strange, how these things travel in waves. Just a month or two ago, I was super-ultra-crazy productive. I was working on Hackety, coding Bindlr, writing three days a week on the blog, and more. This doesn’t even count the more-than-a-full-time CloudFab. But lately, all I’ve wanted to do was hang out and play...
Most of the projects I've been working on today have fairly strict code review policies. My work requires code review on most of our code, and as we bring on an army of interns for the summer, I've been responsible for reviewing lots of code. Additionally, about five months ago BarnOwl, the console-based IM client I develop, adopted an official...
If you’re reading this blog, I probably don’t have to explain why I love GNU screen. I can keep a long-running session going on a server somewhere, and log in and resume my session without losing any state. I also love X-forwarding. I love being able to log into a remote server and work in a shell there, but still pop up graphical windows (for...
I was reading an article on planetbeing's blog the other day and my curiosity was tipped off when he mentioned that phones don't run only one operating system but two. I decided to learn a bit how all this really works and here are my notes with the source code associated. Hopefully it will help someone investigating the subject..
Recently, I’ve been working on some BarnOwl branches that move more of the core functionality of BarnOwl into perl code, instead of C (BarnOwl is written in an unholy mix of C and perl code that call each other back and forth obsessively). Moving code into perl has many advantages, but one problem is speed – perl code is obvious a lot slower than...
Scampy is a bot for engaging 419 scammers in pointless conversation and consuming time that could have been spent on real victims. It was originally intended to be a smart bot. I had visions of data mining conversations and inventing dsl's for chat scripts. This all takes time however, so in order to get up and running quickly the prototype just selects responses at random from a prewritten list. This turns out to be...
Since I first discovered ratpoison in 2005 or so, I've basically exclusively used tiling window managers, going through, over the years, StumpWM, Ion 3, and finally XMonad. They've all had various strengths and weaknesses, but I've never been totally happy with any of them. This blog entry is a writeup of what I want to see as a window manager....
Software engineers, as a rule, suck at writing things down. Part of this is training – unlike chemists and biologists who are trailed to obsessively document everything they do in their lab notebooks, computer scientists are taught to document the end results of their work, but aren't, in general, taught to take notes as they go, and document the...
Apr 27 2010 Pretty soon, Twitter is going to turn off Basic Authentication and switch entirely to OAuth. People are upset. It’s natural. If apps aren’t updated, they’ll stop working, entirely. This could be bad. But in the long run, it won’t be. In any sort of long-term endeavor, things can go sour,...
I use urllib2 from Python’s standard library, in quite a few projects. It’s quite nice, but the documentation isn’t very comprehensive and it always makes me feel like I’m programming Java once I want to do something more complicated than just open an URL and read the response (i.e. handling redirect responses, reading response headers, etc). ...
Many years ago, I recall talking with some of my Mac-nerd friends about how strange it was, after Apple’s near-death experiences of the late 1990s, to be living in a world where it’s just assumed that any tech luminary will mostly likely use a Mac. A year or two later, Tim O’Reilly gave a name to this prognostication technique: watching the...
With the announcement this week that Quora had taken $11 million in VC at an $86 million valuation, there’s been an awful lot of attention on Quora. I’ve had an account there and wanted to write up some of my initial thoughts. If you haven’t heard about Quora, it’s yet another question/answer site on the web. People pose questions, and you can...
About two months ago, Linux saw CVE-2010-0307, which was a trival denial-of-service attack that could crash essentially any 64-bit Linux machine with 32-bit compatibility enabled. LWN has an excellent writeup of the bug, which turns out to be a subtle error related to the details of the execve system call and with 32-bit compatibility mode. While...
The fundamental tool of any engineering discipline is the notion of abstraction. If we can build a set of useful, easily-described behaviors out of a complex system, we can build other systems on top of those pieces, without having to understand to worry about the full complexity of the underlying system. Without this notion of abstracting away...
Mar 10 2010 I’ve been waiting for this book for a while. “Rework” is the new book by Jason Fried and David Heinemeier Hansson from 37signals. It hit stores on Tuesday. Here’s a (non-affiliate) link to Rework on Amazon. For those of you who...
Mar 08 2010 Ever wonder why some websites are so addictive? Certain sites always keep you going back, time after time after time. Well, I can’t speak for all of them, but there’s a subtle reason that some sites draw your attention on such a repeated basis: They’re actually games. Wait, games? Try a little thought experiment: If I say, “Yeah, he’s a ______ addict,” what are the first few things that pop into your mind? For me, top two are...