In the lab we recently bought two bleeding edge PowerEdge C6145s. Each has two servers with 48 2.5GHz cores. That’s a pretty big bang for your 2U. The danger with brand new hardware is that you also get brand new bugs and Dell, who was as confused as we were, didn’t let us down at all. One of the new boxes felt slow, real slow. Actually, per-core it was on par with my cellphone, 3.1 times slower than the other box. The machines are identical in every way. Turns out after lots of time wasted trying to figure out how the machines are different from each other, one of the power supplies had a yellow light and resetting it fixed the problem. But the strange part was that /proc/cpuinfo never showed any hint of frequency scaling even thought it must have been happening in the background anyway. More hardware, more problems…

I had the great fortune of getting into the whole Linux thing and playing around with computers thing when I was really young. When you’re in 6th grade you’ve got unlimited amounts of time, I at least had a propensity to make things crash intentionally (I guess that’s why I’ve been connected to the mains three times). So of course once you get used to Linux the interesting question of sabotaging it in progressively more creative ways comes up. My housemate managed to surprise me today though, he removed the SD card that contained his running Android system. You’d rightly expect it to crash sooner or later but check out the screenshot; in the crashdump somehow the screen looks as if it’s trying to face the other way around. That’s a new and exciting feature. Click the picture to see it in all its glory.

A lot of people with Intel wireless cards seem to have issues connecting to hidden networks with NetworkManager. Unfortunately my university only provides wireless through a hidden network. Although of course there’s a handy one that broadcasts its SSID, doesn’t require a login and explains what the SSID of the hidden one is (how this is more secure is beyond me). The problem is that NetworkManager just gives the card the BSSID and it needs the SSID as well, even though it really shouldn’t. This patch applies to head as of the end of 2008 and fixes the issue. Some distributions patch their NetworkManager in order to include something similar to this. This bug has been around for as long as NetworkManager has existed from what I can see, I wonder why it hasn’t been fixed.

I recently bought a Gateway/MPC tablet (E-295C, equivalent of C-140-something). Whoever designs these should probably quit while they’re ahead. They’re one of the worst computers to open up that I’ve ever seen. While nominally they’re designed to allow easy access opening it is always a struggle between applying just enough force to unclip a piece while not breaking it. Although that isn’t the point here.

My tablet kept overheating, I had to set up a script to balance the CPU throttling vs the temperature. Not fun. Then there was another problem, the GPU. Any time it would come out of powersave mode, like when fglrx starts, the tablet would turn off seconds later. It was also responsible for many of the heating shutdowns the CPU would be at a cool 85 degrees Celsius and the BIOS would turn things off because the GPU had reached 125 degrees.

So I sat down yesterday and opened it up in order to see what’s going on, what I found was downright ridiculous. The first thing that struck me is that the heatpad, which covers the CPU and GPU, wasn’t tightened properly. This meant that when it was facing downwards, like in normal operation, it would hang creating a tiny gap between it and the GPU. But then it got worse. So I took the headpad off. Of course I found a CPU and a GPU with plenty of therm.. Yeah, right, I hope you didn’t think that’s where this story was going. Neither the CPU nor the GPU had any termal compound on them. The surface was extremely rough, I’ve never seen a heatsink of this low quality before. This is probably a good time to mention the scratch marks on the heatpad. So I got some Arctic Silver and put the headpad on correctly. The result? No more heating issues. Not only can I start the GPU now, I can run CPU-intensive and GPU-intensive tasks at the same time. Thankfully the CPU is ok with working at 93 degrees…

Fixing this motivated me to get the Windows driver for those pesky tablet screen buttons that weren’t working. An hour or so later in IDA and now there’s a Linux daemon that will execute commands on button presses. If you have a Gateway/MPC tablet and want button support you can get it here. I much later found out about a kernel module that does the same but sadly it’s never worked for me.

Note: Sometime after this work better bindings have been submitted to Hackage, so this is no longer relevant.

I decided to make Haskell bindings for LLVM today. The build system is a horrible mess so things don’t actually install, they just build in-place. Mandatory brainfuck compiler included, it assumes a 64bit architecture but I’ll clean that up eventually. Just drop into bindings/haskell and run make. LLVM is fun to write code with.

I'm a Research Scientist at MIT working on vision, language, robotics, with a touch of neuroscience. My research interests span many disciplines but are all driven by a desire to know how machine and human intelligence works in the real world. I received my PhD from Purdue University, my undergrad from University of Waterloo, and somewhere along the way I worked for Amazon for a bit. After a few years as a postdoc at MIT I became a Research Scientist. Check out my research page! I also love hacking and reading anything fun!