Engineering and Minecraft

It’s been a while. I get the feeling that I’m writing to an empty room, which contributes to the lack of content. If this is not the case, please let me know. These are still nice to write sometimes though.

I’ve discovered Minecraft. It’s a sandbox game like no other. The world is a natural landscape generated out of one-meter cubes: hills, mountains, valleys, caves, forests, beaches, deserts, plains, tundra. The fact that’s it’s generated makes it not only different each time, but also incredibly huge: the maximum size of the Minecraft world is limited only by the precision of a 64-bit double. This apparently works out to eight times the surface area of the earth. There’s a lot of exploring to do. However, that’s not all that makes Minecraft different: there’s no goal. There is no objective that the player is pushed to, other than to make their own. I can easily see this being a bad thing for some people, but after playing my fair share of linear games I find it quite refreshing. The player starts out with nothing more than a pair of hands to manipulate the world and works up from there: resources can be gathered to form ever more powerful tools, which can be used to manipulate the world faster. As it’s constructed of blocks, the entire world can be removed block by block, and placed back as seen fit. This allows for the construction of huge castles, tunnels, pits, mines, houses, and highways. There’s a pride in standing inside a shelter built with one’s own virtual hands. I also found Minecraft-Overviewer, which is an application which parses Minecraft maps and renders them into Google Maps tiles so that it can be inspected from above at multiple zoom levels, which sets it apart from single-image renderers such as Cartographer, although Cartographer has many more options. If you’re interested, you can view my world, but I warn that I haven’t built much above ground and it brings the lack of upload bandwidth into sharp focus with its slowness. But it’s there. (EDIT: never mind.) Monsters spawn in the dark: nightfall is terrifying.

In my engineering course I’m part of a small group that elected to automate a small hovercraft instead of relearn programming concepts we’ve already been over multiple times. Instead of learning more coding, we’re focusing on hardware. Our current status is soldering the chips on a board so that we can attach is to the rate table without it flying apart and eventually mount it on the hovercraft. I spent a few hours with gnuplot_i and GNU Scientific Library to make these graphs. I know the value of R^2 is wrong, I’m not quite sure what it is as I’m having trouble with the statistics functions in GSL and have never taken a statistics course. I hope to get it sorted out soon.

Graph of ADC3 calibration

Graph of ADC5 calibration

Graph of ADC6 calibration

What these show is the data we collected for the channels: we fed it known voltages in 0.1v increments and recorded the count given by the ADC, then found a best fit line for each one. They’re similar, but slightly different: I hope the difference isn’t just sampling error. At the very least they all seem to dip down until around 0.4v and float up until around 1v, so we may need to make something more complicated than a straight line to account for that.

Heading Off to College with The Monolith

It’s official: I’m registered for classes at the University of Michigan and I move into the dorms August 31st. Although I’m excited to learn more, go onto another stage of life, and experience what college has to offer, this summer has been excellent, and if I could repeat it or just sections of it I gladly would. I’m rather scared to move on; I think I will be able to handle the independence, though it will surely take time to get used to it. Most of all, I feel going off to college will mean saying goodbye – the phone just isn’t the same as being in the same room.

My cat died – our guess is either a seizure or a stroke. It was very sudden, and marks my second pet to die unexpectedly and swiftly. I’m glad that at least she didn’t suffer long. In a few hours my knowledge went from “your cat is sick and at the vet” to “your cat is dead.” I was shocked. By this point I’m okay, though.

As a graduation present, I built a $1,500 desktop and upgraded to a widescreen LCD.

Phenom II x 4 @ 3.4GHz


1.5 TB HDD

ATI Radeon HD 5770 1GB GDDR5

It runs incredibly smoothly. The bottleneck is of course the hard drive. I’d have gone for an SSD if they were reasonably priced, but that day has yet to come.

I’m enjoying my internship at IDV. I’ve gotten to look at both the sysadmin and developer side of things. There’s quite a learning curve to coming up to speed with a new codebase, but I got it. Coding requires long bouts of focus, while sysadminning can be more intense, but frequently stopped by waiting for the computer to complete some semiautomated process. I’ve also done more work on Cavez of Phear.

Keep on keepin’ on

My social life is shifting away from these precious tubes of ours in many ways. Being within walking distance of places I would actually want to go really helps. I find it far more fulfilling to talk face-to-face with people, and the Internet, Reddit in particular, seems to just fill that void with funny captioned pictures and the occasional interesting article. I’ve been keeping a journal of sorts and that’s proven enjoyable. The freedom that the summer and my parents give me is fantastic.

I have an internship at IDV and it’s interesting. I am happy to report that when actually coding, such as in C#, much less so in configuration files, programming techniques are generally applicable. It’s nice after floundering around to have little sections of activity where I actually feel like I know what’s going on.

As a graduation present I’m putting together a monster gaming rig. I was very happy to be notified that this would happen. Once I get the parts and snapped together ordered I’ll put together a writeup on the build.  I’m looking forward to it.

New Machines!

My dad’s work got new computers, and instead of throwing them all out, I got two.

Pentium 4 @ 3GHz with HyperThreading

3 GB DDR 533 MHz


I’m moving my graphics, sound, and Gigabit Ethernet card over to one of them, which is my new desktop. It’s not true dual core, but the clock speed increase alone is enough to warrant a move. I don’t have Windows on it yet, and I intend to get Windows 7 if my dad’s work isn’t able to loan me a CD to reinstall XP. Hopefully this machine will be able to handle Assassin’s Creed without stuttering. I plan to remove my 1.5TB external from its enclosure and mount it internally over SATA. That should fix the horrible latency and throughput issues I’ve had over USB. The other machine I have working as a Freenet node. I’m using full-disk encryption on both machines, and it’s cool. There doesn’t seem to be a drastic hit to performance, as I feared. The only issue is my own fault: I almost forgot the encryption passphrases, and actually forgot the root password on the Debian box. I remembered it, though.

The machines run fairly hot. I now have a mouse-hand heater. That doesn’t seem good. The room is warm, too, and I’m not sure how much of that is due to the sun, and how much is due to the three computers. My network architecture confused me by doing exactly what I told it to do. I set up static DHCP mappings based on MAC address, then DNS entries based on those IPs. This allows me to ping and have it resolve locally to my dad’s machine. It didn’t occur to me as I moved my Gigabit card from my old box to this new one that the IP and DNS entry would follow. It took me a while to realize I was trying to log into myself, which was why the key wasn’t matching. It was pretty funny. The old box is going to work on MilkyWay@Home. My next step is getting the requisite power strips and Ethernet cords to put the two non-desktop machines in the closet. One of them could run the alarm songs in the morning so that I don’t have to keep my desktop on at night.

Homework’s going well. I have a small amount of additional Precalc studying possible, then AP English. Comp Physics is done.

Categorized as Hardware

Essay and More

The first draft of this is dated October 18th, so many things in it are now dated, but here goes.

I’ve been thoroughly shaken by an essay question on a college application. Not that it’s a difficult question or anything.

Tell us about a time you used your creativity.

It should be easy enough. The problem is I’m having trouble thinking of recent uses of my creativity. I haven’t made any new Flash movies since 8th grade, although perhaps that’s for the better. They’re becoming increasingly embarrassing now. I made some comics Freshman and Junior year, but thaose were both for literature projects. I started making a 3D maze the last time I went to Camp CAEN, but that was the summer before last, and I stopped after I ran into an issue with sound under Linux in Zenilib. Writing about it makes me want to try picking it up again, but finding the time to do so will be difficult. It seems I have somewhat inadvertently found ways of being unproductive that are not obviously so, such as browsing Reddit instead of playing TF2. That’s not to say I’m not working hard, which I am.

My Dad’s Rosewill fan failed suddenly by making horrible grinding noises. Although PCI slot fans seem like a good idea, they might be too much trouble to be worth it. I’ll probably stay away from PCI slot fans for the time being.

Because I’ve had so much homework, namely in Precalculus, schoolwork has displaced my life somewhat. Synthetic division is nice because of the very predictable amount of space it takes up, and it’s oddly fun to multiply together factors to get a polynomial with the desired zeros. It’s making the math work to make something, rather than the other way around. It’s also strangely entertaining to factor in my head.

Thanks to this page I was able to figure out an otherwise extremely cryptic error in my crontab. It was in the line for server backups to the alarm upstairs. It’s not offsite, but at least it’s not in the same room. I also got GZIP compression working, with the assistance of these pages. To boil it down, the magic line is ob_start("ob_gzhandler");

I recently downloaded Cavez of Phear and it was fun. However, the lack of save functionality made it frustrating, as I had to continually replay levels after dying. As it is open source, and I had compiled it, (requires libncurses-dev) I decided to crack open the code and give it a go. With the very low number of comments it is somewhat difficult to read. It seems that once it loads in a level file made of of low-level, unprintable ASCII, it replaces special objects with the stone character, and makes entries in another array. I have yet to figure out why it needs another array for this. I’m also currently mystified as to why the save function (I didn’t write it, it works in the editor,) produces complete gibberish even right after I load the map and haven’t moved. It still does this when I undo the replacement of special items. I’ll probably have to rip chunks out of the program until it’s more evident. I really should try gdb. Maybe I should start a Git repo to make all this easier to manage, as although my memory is fuzzy on the matter I think I had parts of this working better before.

Despite my problems figuring this out, it is meaningful for me because although I’ve long known philosophically and logically that open source is far better for innovation and rapid development, I’ve never been able to directly participate in helping that process. (I’ve donated to and reported bugs for Wine, but that’s about it.) Even though it is a very simple contribution, it’s something that with a closed-source product would take emailing the developer or doing some strange dark arts with DLLs. With open source, I am able to open up the code and start to add a new feature. This is amazing.

I got my plate of food together and left it in the kitchen. Asking my sister to guard it against cats, I took my salad and milk out to the table. I returned for my plate, and noticed the empty one intended for Sarah sitting on the counter as Sarah held a full plate. I asked her if the plate was mine. No, she mumbled around the ham.

Matt called me over and asked if I wanted his old machine. He said it had stability problems. I’m now agreeing with that, as when I tried to connect to it just now to check the specs, it was unreachable. What I can remember is Athlon 39(?)00+ 3700+ at 2.4 GHz with 512MB RAM. It seemed stable at first… Maybe I should check the BIOS settings again, as I seem to recall it complaining about failed overclock upon POST.

Cables, Infections, and More!

A few days ago I brought my desktop over from Dad’s and set it up at Mom’s, along with a switch to connect both desktops to the network. Someone accidentally bumped the switch, and the cable that brought the network connection up from the basement could not be wiggled back into working again. My hasty crimp had given out. I took my single remaining cable end, and managed to, after maybe two tries, get what seemed like a flawless crimp. Only having one end, and thus one chance at crimping to get online, was a very powerful motivating force. Upon further inspection it is not perfect, but it’s better than other crimps I’ve made. Maybe the loading bars I anticipate getting will help.

I cleaned up a machine at KI that was very badly infected. Our tools took care of the infection, but what took me a really long time to realize was that ndis.sys had been infected and deleted by the scanners. Everything was working except for networking devices, which showed up with corrupted drivers. Fresh drivers did nothing, and uninstalling the drivers did not actually seem to do so. Copying ndis.sys over from another machine fixed the problem.

My Dad sold his house, and we have now moved to Wendy’s house. At this point my room has no blinds, and my desk is in pieces. My room has the feeling of a LAN party in a metaphorical tornado – there are objects one might expect to find in a bedroom, except in strange locations and often not assembled. I hope this gets sorted out somewhat quickly.


I feel foolish. I moved the modem to my communications closet so that it would be more difficult for Mom to accidentally turn it off in preparation for a storm, but forgot that I had changed my email password. On my first try I failed to get a DSL signal when running it through a surge protector, so I ended up running it only with an extension. I was confused because the modem’s tests all passed, and both the connection and DSL were listed as up. I could ping whatever I wanted to, although AT&T was redirecting all my traffic to some strange password mismatch page, and traceroutes timed out. (Why not “incorrect?” “Mismatch” confused me into thinking it was set to my mom’s email and my password or something.) I was too worked up over the fact that they were hijacking my traffic to take into account the possibility that AT&T was correct that the password was wrong. I feel bad for wasting their time, but on another note I think that assuring customers that a password utility that requires an executable download is legitimate simply because they continue being redirected to it is not the best way to go.

Categorized as Hardware

Zombie 6 Version 2

Zombie 6’s problems seem to be due to a capacitor that was bent until a pin ripped out of it. The only way I might be able to fix this is ordering a new capacitor off the Intertubes, removing the old one, and very carefully soldering on the new one. That likely won’t happen soon, if at all. I got a Pentium 3 @ 866 MHz board with 512 MB RAM from KI. I was very impressed when I was able to just put the board in the case and fire up Debian, which had been booting an Athlon, presumably with an entirely different chipset as well. At this point the ethernet device was named eth1, which was annoying, so I went into /etc/udev/rules.d/70-persistent-net.rules, commented out the eth0 line, changed the name of the new one to eth0, then rebooted. I also commented out the old entry for the optical drive, under which it was on a different IDE channel. For whatever reason, to get networking functional, at each house I had to set the interface to DHCP, restart networking, then set it to static and restart networking again. I’m trying to find out what that does, and why it works.

Categorized as Hardware

TX Underrun

Ever since I set it up, once my pfSense box has been running for a while it seems I will plug in the monitor to find two, three, or more messages about TX underruns, such as

dc0: TX underrun -- increasing TX threshold

However, my network started being slow to respond on the 6th, going so far as to drop one packet when I pinged Google. The LAN side was just fine. Yesterday I plugged the monitor into the router to see what was up, as I was unable to find a system log of console messages. The last message was

dc0: TX underrun -- using store and forward mode

My understanding is that this is why it became slow. This machine is not screaming fast by any means. It has 504 MB of RAM and a 499 MHz Pentium 3. Looking in the WAN interface settings, I realized I had misunderstood and set the wrong MTU. I saw the size for PPPoE, and given its mention in my modem’s configuration, I had understood, incorrectly, that my router would use PPPoE. (Even though the WAN interface was visibly set to DHCP on that very page.) I now do not know why I felt the need to set this manually, and as I reread my modem’s status page I feel more and more mystified as to how I came to that understanding: PPP on the modem (Public IP for LAN device). I left the field blank as to allow pfSense to set the MTU,  and my WAN connections are speedy again.

Cats and Overheating

It seems we now have five cats. I’m looking into options for filters so my heatsinks aren’t clogged with all the cat hair. It’s far easier to brush things off a filter than blow them out from between heatsink fins. I should also renew my efforts to get our machines off the ground so they act less like vacuums. I really don’t understand the thought that went on in this decision, and in some ways doubt it occurred.

In other news, Zombie 6 started making an alternating tone, and it was only when I installed a sensor kernel module that I discovered:

$ sensors


Adapter: Virtual device

temp1: +60.5°C (crit = +65.0°C


Adapter: ISA adapter

VCore: +1.74 V (min = +0.00 V, max = +0.00 V) ALARM

+3.3V: +1.52 V (min = +0.14 V, max = +2.05 V)

+5V: +4.78 V (min = +0.05 V, max = +1.72 V) ALARM

+12V: +12.16 V (min = +0.43 V, max = +0.49 V) ALARM

-12V: +2.11 V (min = -3.07 V, max = -13.59 V) ALARM

-5V: +0.33 V (min = -7.71 V, max = -7.71 V) ALARM

V5SB: +5.59 V (min = +0.22 V, max = +0.00 V) ALARM

VBat: +3.07 V (min = +0.00 V, max = +0.00 V) ALARM

fan1: 5192 RPM (min = 168750 RPM, div = 2) ALARM

fan2: 0 RPM (min = 8881 RPM, div = 2) ALARM

temp1: +33.0°C (high = +12.0°C, hyst = +16.0°C) ALARM sensor = thermistor

temp2: +60.5°C (high = +60.0°C, hyst = +55.0°C) ALARM sensor = thermistor


I really hope either the default rail voltage ranges are somehow wrong, that the CPU overheating was leading to strangeness, or that I’m misunderstanding something, because if those are the rails’ actual voltages, I’m surprised the machine was still running and not on fire. Ranges including 0 seem weird, I don’t know if it’s listing acceptable variance from the stated voltage, and if so it seems in some cases too wide a range for normal operation. It’s probably not seeing a rotation speed for fan 2 because if I recall correctly it’s running off molex. I should add some sort of temperature monitoring to my machines. I will probably have to reseat a heatsink in the near future. For now the machine is off and unplugged – it’s unplugged just in case the PSU is really that broken and the 5V rail might do something nasty.