Into the Void


Xbox HDD Key Recovery

Posted in Tech by Scott Baldwin on the August 29th, 2006

About 2 years ago I helped a friend mod his Xbox (v1.4) by soldering a mod chip to it. It worked fine until recently when he loaned it out to someone who, for some reason, decided to flip the Xecuter BIOS switches while the console was turned on. We tried getting the mod chip to work again, and even tested all the leads for proper voltage, but no dice… the chip was fried!

So it was time for plan B: software-modding. Since my friend already had a copy of 007:AUF and a memory card with the save-game exploit, it should have been easy. That is, until we booted the Xbox to run 007:AUF and got a “Your Xbox requires service…” error! The problem is that the hard drive was unlocked (from when it was modded before), and the only backup of the key ever made was stored on a Maxtor drive that crashed in 2005. Without the key, we could not boot the Xbox since the stock BIOS must unlock the drive with the key it has stored in its EEPROM. If the drive is already unlocked, then the unlock operation will fail. What this meant is that the only way around the problem would be to extract the key from the EEPROM, which by the way would be encrypted.

So we search Google and find an article (click here to read) that explains how to build an EEPROM reader that allows you to dump the contents of the EEPROM to a PC. The EEPROM reader consists of a hardware interface (an I²C->DB9 adaptor) that you must build and a freeware application called PonyProg2000 that will actually read in the contents. I got all the parts I needed from Radio Shack for about $13 and built the adaptor (shown below)…

Front of Adaptor

Back of Adaptor

Since the Xbox could power up fine, I did not need to use an external power supply. I connected the adaptor, ran PonyProg2000, and it dumped the contents without a problem. Cool! I then used a program called LiveInfo (thanks Yoshihiro) to decode the EEPROM contents and get the HDD key. All in all it was a great deal… for $13 and a few hours of work my friend can once again use his Xbox for, you know… emulating the NES and N64, watching XviD movies, running Linux, and sharing files. Who knows?… one of these days he might even use it to play an Xbox game!

My Abit KG7 Laid to Rest

Posted in Tech by Scott Baldwin on the August 22nd, 2006

Last night, my third-fastest computer, an AMD 761/VIA 686B/Athlon-XP 2100/512MB pc2100, became horribly unstable. For the past year it has run Gentoo Linux and I’ve used it mainly for development and running servers with very few problems. Last night though I started getting seg-faults during compilations, and running memtest86+ would fail in about 15 minutes. The first thing I tried was replacing the RAM, but memtest would still fail in roughly the same amount of time. Because of that I was reasonably sure the problem was not the RAM. That was bad news actually, because when memtest86 fails and it’s not the RAM’s fault, you probably have a damaged motherboard.

Luckily, I had a spare Gigabyte motherboard with the exact same northbridge and southbridge chipsets (AMD 761/VIA 686B) as the Abit KG7 I had to replace. It took about an hour to do because I had to completely rebuild the system and clean and re-Arctic the CPU/heatsink. I crossed my fingers, rebooted, ran memtest, and no errors! And since the boards were completely interchangeable, Gentoo booted without a problem, which was a nice bonus.

One thing still bothered me though… typically when motherboards go bad, you will not even get a POST, let alone be able to boot an OS. In this kind of situation the problem is usually bad RAM, but that was not the case this time. In fact, take a look at the capacitors near the CPU and memory sockets: Angle #1 | Angle #2… I’m no Electrical Engineer, but it definitely looks to me like these capacitors are damaged. Without knowing more about the physics and composition of capacitors, I can’t really speculate as to what the material on top might be. It looks like rusty solidified discharge and its texture is rigid and crusty. If you have an idea what it is then let me know!

Is Google a Wikipedia Wrapper?

Posted in Tech by Scott Baldwin on the August 14th, 2006

It seems more and more like Google is being reduced to a Wikipedia wrapper. I recently asked several of my friends to guess the percentage of their Google searches that reference Wikipedia articles on the first page of results. The guesses ranged from 40% to 70%, which were inline with my own guess of 70%. So then I decided to take a more scientific approach… via Firefox Extensions. Most of my friends use Firefox now so they should all be able to participate in this study if I can create a non-invasive extension that tracks the number of Google searches that reference Wikipedia on the first page. It shouldn’t take long at all to create a basic implementation of the extension. The basic features would be tracking, high-lighting, and reporting. I am going to start development on the extension as soon as I finish making this post. So right now!… I’ll let you know how it turns out.

UPDATE (08-15-2006)

GooWiki is available to download at http://www.etherice.com/xpi/goowiki. Please use it and send feedback!

Etherice Got Cell Phowned!

Posted in Tech by Scott Baldwin on the July 29th, 2006

Etherice.com was down for most of yesterday, and after restoring the server I was emailed a photo from the hacker responsible… click here to view it

I wish my phone had a Unix shell built in!

GeoLocation Logging

Posted in Tech by Scott Baldwin on the July 10th, 2006

GeoLocation, sometimes referred to as GeoIP, is the mapping of IP addresses to geographic information.  In other words, GeoLocation is how some Websites will know that you’re from Springfield, USA.

For a long time now it has been easy and straight-forward to determine the country of a user with a high degree of accuracy, but determining the user’s city or region has been a different story until very recent years.  This greatly improved accuracy is why it’s no surprise that GeoLocation has become increasingly popular in targeting specific demographics with localized ad content.  So this morning I thought to myself, “Why doesn’t Etherice have this capability yet?!”  Well it does now… check out the screenshot.

The solution I found is called GeoLite City from www.maxmind.comGeoLite City is a free, but slightly less accurate version of the commercial GeoIP City system from MaxMind.  Installation and integration with my custom logger were incredibly simple.  First I downloaded the (PEAR-compliant) database file from maxmind.com  and copied it to a location on my Webhost.  Then I downloaded the PHP interfaces for it and added this helper function to my logger script:

function ip2loc($ip) {
 global $gi;
 if ( empty($ip) ) {
  return null_or_val();
 }
 $record = geoip_record_by_addr($gi, $ip);
 $retval = '';
 if ( !empty($record->city) ) {
  $retval .= $record->city . ", ";
 }
 if ( !empty($record->region) ) {
  $retval .= $record->region . ", ";
 }
 $retval .= $record->country_name;
 return null_or_val($retval);
}

Note: null_or_val() is just a helper function that prints a red “null” instead if the value passed in is empty.

And that’s it!  One important thing to note is that I do not perform the GeoLocation lookup on every page access.  In my opinion, it is better to do the lookup on-the-fly when the data is being presented:

echo "<span class=\"sloc\">" . ip2loc($row['ip']) . "</span>\n";

First off, this method has the advantage of not having to store the GeoLocation lookup results in my SQL database, saving space.  Second, and more importantly, it keeps the log tables free of redundancy.  If you’ve ever taken a DBMS course then you know that this allows for greater normalization.  So next month when I update the MaxMind GeoLocation database with a newer, more accurate one, older logs will benefit too.

So far I’m impressed with how accurate this free database is.  According to MaxMind it’s only 60% accurate, but it seems like “misses” are not too far off from the actual city (e.g., a suburb outside the actual city).  I also like the fact that updating the database each month will consist of overwriting a single file… in fact I’ll probably just create a cron script that does it automatically.

For now I’m simply using the GeoLocation info for traffic analysis, but I may eventually parlay it into something more useful.  When you think about it, the possibilities are near-endless.

The Apple Identity Crisis

Posted in Tech by Scott Baldwin on the July 5th, 2006

Since early 2006, Apple has been selling Intel-based PCs (so-called Mactels), fully capable of running Windows XP, and they will continue doing so indefinitely. The TV commercials in their latest ad campaign, however, seem to tell a different story. All the commercials feature two actors– a twenty-something cool-guy and a forty-something douchebag. The cool-guy represents an Apple computer and the douchebag represents a PC, comparing the two as if they are apples and oranges (pun intended) despite the fact that Apple computers are now PCs!

Apple is still shamelessly trying to differentiate itself from the architecture that it now is, essentially denying its newfound identity. In one of the new TV commercials, the cool-guy says that since he (the Mac) can “run Windows like a PC, there’s no reason to buy a PC anymore.” Actually, I can think of $everal excellent reason$.

Then in another spot, the douchebag is sick from the “latest virus going around”, and that “there are over 100,000 known viruses for PCs.” The cool-guy (who is perfectly healthy of course), says something like, “Good thing I’m not a PC”. (New Apple systems are PCs, but that’s beside the point.) The idea is that OSX is not as susceptible to viruses as Windows. I won’t disagree, but by the same logic, OSX is also less susceptible to useful software.

The third installment of this annoying ad campaign has the cool-guy bragging about how he (the Mac) can do all sorts of fun things, like make photo albums and edit videos. The douchebag PC-guy acts like all he can do is make spreadsheets and pie-charts. In my opinion, this will make every Windows user in the world roll their eyes knowing that there is far more software available for Windows than OSX, including photo and video editing software. True, Apple PCs can run Windows now, but if that’s your argument then why pay thousands of dollars for a Mac in the first place? OSX is by far the worst Unix-derivative on the planet, and it pales in comparison to Windows for desktop applications, so again, why get a Mac? Oh yes, of course… because they look pretty. Or maybe it’s just a cult-thing.

Apple wants to reap the benefits of adopting a PC architecture and claim that it’s still not a PC. So the question is, “Can Apple have its cake and eat it too?”… Well, as long as Apple continues to exploit the ignorance of its user base, I guess the answer is Yes. (Non-Apple PC users will continue to laugh and save thousands of dollars.)

If you haven’t yet seen the Apple commercials I’m talking about then search Apple’s Website for them. I’d post a link, but I’m sure Apple would find a way to sue me. In fact I’m expecting a letter from their legal department for not putting TM and ® symbols everywhere. Wait a second!… what’s this?!!… an email from Apple Computer, Inc… I haven’t even posted this yet! It says, “Dear Blogger, We have reason to believe you are about to upload text to the Internet that violates one of our trade secrets. We demand that you immediately cease and desist such activities or face the wrath of our legal team. […]”

I’ll take my chances.

Closing note: despite how it may seem, I personally have nothing against Apple. If you don’t believe me then just check out the Apple desktop backgrounds I created… I guarantee you won’t find any free promotion like that for Windows on this site. So instead of sending me hate-mail, download one of those delicious Apple wallpapers to remind yourself of how much Etherice truly loves Apple Computer, Inc.!

Etherice 2.0 Chameleon!

Posted in Tech by Scott Baldwin on the June 22nd, 2006

Etherice 2.0 (Chameleon) is complete! Every single aspect of the site was custom-coded by yours truly, from the graphics and layout to the image gallery and context-aware-indexing.  Read more about it here!

Safely Remove Hardware?!!

Posted in Tech by Scott Baldwin on the June 5th, 2006

Everytime you plug in your USB Flash drive, Windows will mount (i.e., attach) the file system it contains to a drive letter such as E:\, F:\, G:\, etc..  An icon will then appear in the system tray that gives you the option to “Safely Remove Hardware”.  Sometimes however, the device is still in use when you try to safely remove it, and you have to wait and try again.

So you wait.  You try again… still in use.  You wait some more, and try once again… still in use!  In the peak of your frustration, you yank the drive out anyway… then out of curiousity you put it back in.  What’s this?… all your files are still there, perfectly in tact and unharmed.  After months of doing this without consequence, you start to think that safely removing hardware is something that paranoid idiots do for fun.

Well, one of my friends thought the same thing until the other day when about 99% of his file system got corrupted!…  Take a look at what he saw the next time he plugged it in:

More corrupt than a politician!

This drive was formatted with a FAT file system.  FAT (file allocation table) file systems have an index that keeps track of where all the files are located in the logical address space of the device’s memory.  What caused the corruption is that my friend removed the drive while Windows was writing to this index, messing up its pointers and data structures.  The files are still there, but they are lost due to the corrupted FAT.

It’s normally possible to use special file recovery software to recover the lost files, but doing so can be difficult and unreliable.  Using a journaling file system (such as NTFS or EXT3) instead of FAT would have likely avoided the corruption altogether, but fewer operating systems have native support for those file systems.  The good news for my friend is that even though his files are lost, the drive itself is perfectly fine and just needs to be reformatted.

The moral of this story is to always safely remove your Flash and external hard drives, especially if you have written anything to them.  You should do the same with your Wi-Fi cards, MP3 players, and anything else that exchanges data (so pretty much everything).  As my friend will tell you, it’s better to be safe than sorry.

The Art of Software Design

Posted in Tech by Scott Baldwin on the April 2nd, 2006

I’ve written many programs in many different languages, from PHP/MySQL Web applications to multi-threaded servers in C++, but one thing never changed: the importance of good design.  Every experienced developer knows how imperative it is to have a clean application framework.  Creating a clean, scalable framework however can be a challenging task.  Fortunately, there exists a near-endless arsenal of languages, toolkits, APIs, and IDEs, as well as countless design patterns and methodologies to aid us in designing and implementing quality software.

I think truly recognizing the importance of good design can only happen through real-world programming experience.  Most programming courses in college will briefly mention design paradigms (such as Object Orientation), and then move on to syntax, APIs, algorithms, etc.  To make matters worse, the programming assignments (specifications) are normally so trivial and laid-out that it frees students from design challenges that exist in developing real-world applications.  Therefore, students must take the initiative to develop real-world applications outside of class.  By doing so, I have learned a lot about the importance of good design through many lessons and mistakes.  I have listed some important ways to achieve better program design and results below.

1) If you’re copying and pasting your own code, then stop!  Creating reusable software and eliminating redundancy is crucial to good design.  If you can extract any functionality from something, then do it (you can always declare it inline if you’re worried about performance).  By duplicating the code, you make it a nightmare to maintain.  Eventually, you’ll get tired of updating 10 sections of code just to change one thing, knowing that if you miss one it will cause run-time anomalies!

2) For big applications, use an Object Oriented Programming Language such as C++ or Java.  Big code bases will become extremely difficult to manage unless you tame them with the power of OOP.  The four frequently cited advantages of using an OOP language are inheritance, abstraction, encapsulation, and polymorphism.  All four of these capabilities are tremendously beneficial!  Inheritance makes it possible to create a hierarchy of functionality that cascades from the top to the bottom (direction depends on how you look at it), useful for creating reusable software components.  Abstraction lets you treat complex things as simpler things through modeling.  Encapsulation hides implementation details that would otherwise be distracting.  Last but not least, polymorphism makes dynamic programming simple through the magic of virtual methods.  These capabilities are not just great in theory… you will learn to appreciate them when you have to develop an application with 50,000 lines of code or more.

3) Take full advantage of your environment’s debugger!  It seems like many students do not understand basic debugging concepts such as memory watching, stack inspection, breakpoins, and backtracing.  These tools are invaluable so use them!… it’s well worth the initial learning curve!

4) Read the documentation!  For whatever language you choose, learn the APIs, frameworks, toolkits, and libraries at your disposal.  There is no reason to reinvent the wheel unless you absolutely have to!  Plus, odds are your “wheels” will not be as fully tested or as fast as the ones provided by your environment.  For portability purposes, the more standard the libraries are the better.

5) By properly separating the functionality of your software into cohesive units (such as Classes), you will achieve clean interfaces.  Clean interfaces will provide simple interaction between components (Classes) within your framework.  More importantly, maintaining small, clean, loosely-coupled interfaces will make your software easy to extend forever.

In conclusion, make reusable components with clean interfaces that take full advantage of your development platform, language, and libraries.  And remember, software design is an art that takes time to master.  Never give up, because you’re only bound to get better.

Capstone project official

Posted in Tech by Scott Baldwin on the February 11th, 2006

outlined The LiquidLan project has been revived after almost two years of not working on it.  My capstone professor has approved it to be my capstone project, so now I can’t graduate unless I finish it… how’s that for motivation?!!  There’s a lot of work left to do, and I’ll be working solo, but I guarantee it will be finished in time to present this May.  I’ll update my progress on it at the official site: http://www.liquidlan.net/ … check it out!

Building a Super Desktop

Posted in Tech by Scott Baldwin on the February 3rd, 2006

Radioactive My friend Nick was asked last week by his dad to build him “the fastest computer possible”.  He said emphatically that price is no object and if it ends up costing $10,000 then so be it (yes, they are very wealthy).  I immediately jumped on board to help out because building a computer with no budget has always been something on my wish list… even if it would not be my own.

As of now, we have picked out most of the components for it, including an SLI-enabled motherboard with nForce 4 Ultra, AMD Athlon X2 4800+, two GeForce 7800GTX-SLI graphics cards, 4GB of Corsair XMS2 DDR400 memory, 550W Antec power supply, two 150GB 15000rpm SAS hard drives, and an LSI SAS-RAID controller card.  The mass storage (SAS RAID) component alone is about $3,000, but we felt it was important to reduce the biggest bottleneck (disk I/O) as much as possible.  The average latency on these drives is less than 2ms!  We will set them up on a RAID0 and hope to achieve sustained throughput rates of close to 250MB/s.  This may be optimistic though.  I’ll let you know how it turns out and post some benchmarks once we have them.

A Message from Bill Cobb

Posted in Tech by Scott Baldwin on the January 20th, 2006

No love for eBay!Today I received another mass email from Bill Cobb, President of eBay. This can only mean one thing: more fees! Bill Cobb has only been President of eBay for like a year now and he’s already made about a billion fee adjustments. It’s funny too, because I thought that eBay was already making tons of money. True, their stock price hasn’t gone up five thousand percent like it has in recent years, but isn’t eBay rich enough? Shouldn’t they stop screwing over their user base (pretty much everyone) simply because they have the market power to do so?

This is why I hate Bill Cobb. I’m sure there’s pressure on him from stock holders and other executives to increase the share price, but couldn’t he have thought of a better solution than raising fees again?… The fees are getting out of control too. After the insertion fee, final value fee, and PayPal related fees, you end up paying like 12% or more! For most sellers, that results in slim or non-existent profit margins. Many companies have stopped selling on eBay for this reason.

So just for fun, I sent a reply to his email:

“We know pricing is a critical issue for our sellers. We stand behind our decision to increase final value fees…”

Why is that Bill… did you need another jet? I think you should be cautious about raising fees in the future. Your brand name will only stretch so far. You keep testing sellers, someday your dynasty will fall. Oh, and [expletive deleted]! 

I expected to get a canned response, and here it is:

It sounds as though you are upset. You have some questions about our recent increases, and it also sounds as though you feel that eBay is no longer very secure. I’d like to begin to address each of these concerns below.

The fee increases will go towards improving eBay - expanding customer support, developing features, advertising, security, and other aspects.

I understand you feel eBay is no longer a safe place to trade. I’m not sure what you are referring to, specifically; however, you can get information by going to the eBay home page, and clicking on the link called, “Security Center”, found at the bottom of the page.

Thanks again for writing.

Michael C. D.
On behalf of Bill Cobb,
President of eBay North America

What more can I say?… I still use eBay for the same reason everyone else uses it: everyone else uses it. This is why I think it’s dangerous for eBay to continue raising fees. There’s nothing special about their website and software, so if they continue to piss off sellers then someday there may be a revolution. When that day comes, put me on the front line so I can shoot Bill Cobb.

Ipod Shuffle is no Zen Nano

Posted in Tech by Scott Baldwin on the January 17th, 2006

Apple could learn a thing or two from Creative when it comes to digital music players. I’ve tried every iPod make and model to date… the original, the mini, the nano, the shuffle… and I’m stunned by how people consider these top-notch audio players. The construction, battery performance, sound quality, all suck.  Plus look at the featureless Shuffle… My friend recently purchased one for US $130 and it lasted about 2 days before “sad-podding”. The fact that it broke is beside the point though… I was more amazed by its lack of features.  The Shuffle is expensive yet it lacks essential features like a display or FM radio tuner.
 
The Shuffe’s competition is Creative Labs’ Zen Nano, with all of Shuffle’s features, plus a back-lit LCD display, FM tuner, mic input, and durable casing.  The Zen Nano user interface is simple and intuitive and all of its functions can be quickly accessed.  The firmware is easy to upgrade, backed up by an excellent recovery mode feature in case something unexpected should happen. Zen Nano doesn’t bitch about nonsense like DRM either, or require bloated PoS apps like iTunes and Quicktime to be installed.  I don’t even use the Creative software that comes with the player because it’s unnecessary… just plug the Zen Nano into USB and it mounts as a removable flash drive.  Then you can just drag-and-drop your files… any type of file!  Now that’s thinking different.
 
For those wondering, this post was inspired by a friend of mine who recently purchased an iPod Shuffle that broke after a couple days.  He said Apple Care technicians were mean, difficult, and totally incompetent. Plus they wanted to charge him a restocking fee to return it!  The good news is that he bought a Creative Zen Nano *Plus* from Wal-Mart last week (US $120), and he’s extremely satisfied.  It’s smaller than the iPod Shuffle and yet it has equal storage capacity and higher SNR (which is good).  Plus it has all the bells and whistles Apple forgot to include in the Shuffle.  So if you’re in the market for a compact digital music player, then I highly recommend getting the Zen Nano instead.