I've just read through the Python 3.1 changelog, and it has encouraged me to write up something that I've wanted to say for a while, but never quite got round to: dear open source developer, please write good changelogs for your project.
# · Lire toute l'histoire · Aucun commentaireEver get cold-called on your phone by a Ghanan 419 scammer? I just did.
What the fuck. Seriously.
# · Aucun commentaireIt's Towel Day. Know where your towel is, and remember Douglas.
Heading out to California for a week or so. My towel is in my travel bag. Where is yours?
# · 3 commentairesSam graciously presented me today with a new CSS stylesheet for my Zwe blog. It really was time for a bit of a change, as the previous stylesheet was starting to show its age after many upgrades and changes to the underlying engine. Hope you like it. I certainly do.
Thanks Sam!
# · Aucun commentaireDear diary,
Yesterday, I played Wii Sports for 5 hours. Today, I have aches in muscles I'd forgotten I had.
That was fun.
# · 2 commentairesNothing hammers home the sense that your life has settled down for a while like signing a 1-year mobile phone contract that says "I'll be staying here at least a year".
# · Aucun commentaireI promise, I can explain. It started out rather simply, then got a little out of hand. A week or so later, I'm still having an immense amount of fun.
It all started when Google gave me an awesome Christmas present: An HTC Dream. It's a very shiny mobile phone, and what's more, it's an unlocked developer edition. It's hacking time!
This is where things get a bit complicated. Lemme take you through the reasoning.
# · Lire toute l'histoire · Aucun commentaireThis just in: following the discovery of the "diagnostic LED" of my black box, it took mere minutes to home in on the bug and eradicate it.
It's alive! ALIVE I SAY!
Oh, what was the bug? Let's just say that when you check, in the code of a driver, whether you properly told the power management driver to power up the chip you're driving, it would be wise to also check the code of the power management driver to make sure the power-up code is right. Because a chip with no power ain't gonna be driven nowhere.
In other news, powering up random peripherals unrelated to what you want to drive doesn't work either. No, really.
# · Aucun commentaire(Warning: very nerdy rant about very geeky topic ahead)
Debugging a NXT that crashes during the bootup sequence is hard. Before the main AVR link comes up, there is no way to even get any sound. I've already done debugging by sound: during the early stages of NxOS a couple of years back, I would debug by playing bytes I wanted to check as morse-code-like dits and daas, one bit at a time, over the brick's speaker. It's extremely basic, but it's how I got the display driver to work.
But debugging a crash before the sound driver is in a working state is hard. You have a large binary black box. Either it boots and the sound driver works, in which case you don't have a problem, or it doesn't and you only get The Beep Of Death, the sound of the coprocessor periodically blipping the speaker to say "Your OS is screwed, I'm not playing any more".
Just now, attempting to debug one such crash, I discovered something interesting. If I initialize the sound controller and start an infinite loop of playing a tone, for some reason the pitch of the Beep Of Death changes by a few kHz for 2 beeps, then returns to its regular pitch.
This gives me a more basic equivalent of the morse code byte "printer": if the tone changes, I know that the brick booted at least up to the point of my infinite loop. If it doesn't, I know it crashed before that point. It's an audio diagnostic LED that tells me either "I managed to initialize the kernel up until this point", or "Nope, the crash occurs before execution gets to the bruteforce sound loop".
Therefore, by moving the sound loop around in the init code, I should be able to zero in on the exact crash site. The initialization black box is no longer completely black. A little information leaks out. Instead of "Everything works/doesn't work", I now have "Everything works/doesn't work up to the following intermediate point of my choosing".
And, sometimes, when debugging embedded systems without proper hardware debugging hardware, that tiny insignificant diagnostic LED is the difference between hope and despair.
# · Aucun commentaireSingapore International Airport rocks.
The shopping and restaurant center in the international corridor is bigger than the main commercial zone of many so-called international airports.
For 5 euros, you can grab a delightful hot shower, sheer nirvana after 10 hours of flying. For 15 euros you can enjoy a day in the ambassador lounge, complete with complimentary refreshments, a complimentary bed to nap, complimentary gym, complimentary showers, and free internet access.
Oh, yeah, the internet access. Get this. Free broadband wifi internet access for the whole airport. Yes, you read that right: airport; wifi; broadband; free. All in the same sentence. Until now I thought airports were a "pick three of these four" deals, but it does appear that at least one airport in the world does get it.
I'm only here for six hours or so until my flight on to Zurich, but I will long remember Singapore International Airport as the first airport that was not only bearable to dwell in for 6 hours, but actually pleasant. And that's just the international corridor, I dare not imagine the awesomeness of the rest of the place. Whoever runs this joint, bravo.
# · Aucun commentaire