Found something useful? Don't forget to leave a comment!

Saturday, December 18, 2010

ffmpeg with WTV support

Ah, the joys of open-source software development. A patch that adds WTV (Windows Television, the recording format of Windows 7 Media Center) demux support to ffmpeg is now in a mature state, thanks to developer Peter Ross. Gone are the days of circuitous, roundabout conversions from WTV to DVR-MS to MPEG!

I’ve taken the liberty to compile a 32-bit Windows build of ffmpeg with the WTV patchset rolled in. Also included is a simple fix for the “non-monotone timestamps” issue that often comes up. x264/XviD/LAME MP3 libraries were NOT used for this build, as it’s intended for WTV conversion purposes only.

WTV files can be re-muxed into plain MPEG files as follows:

ffmpeg.exe –y –i inputFile.wtv –vcodec copy –acodec copy –f dvd outputFile.mpg

Windows Media Center users, enjoy!

Download link

Saturday, November 27, 2010

Black Friday 2010: The Aftermath

Black Friday – that special day in November when deals on everything and anything abound. My Black Friday adventure this year, of course, was computers/electronics-oriented. Here’s a list of my shopping spoils.

Best Buy (believe it or not, this big box store actually does have some good deals from time to time)

  • Western Digital Caviar Black 1TB 7200 RPM hard drive, retail package (most likely a WD1001FALS in the box) – $59.99

Fry’s Electronics

  • Antec EarthWatts 750W – $65 – $30 rebate = $35
  • Samsung 2494LW 23.6” monitor – $149.99
  • Asus 24X DVD burner, $29.99 – $25 rebate = $4.99
  • Zalman Z7 Plus ATX computer case, $48.00 – $40 rebate = $8 (!)

The WD Caviar Black deal was quite good, especially considering the fact that it’s at Best Buy and a boxed retail version. Fry’s had some unbelievably good deals this year – where else are you going to get a 750W name brand PSU for that amount? Or a DVD burner for $4.99? And a name brand mid-tower computer case for $8 whopping dollars? Simply amazing.

Of course, those rebates are a pain to fill out, but as long as nothing goes wrong I’ll get my money back in due time.

Sunday, November 14, 2010

John The Ripper 1.7.6 jumbo for Windows x86

Here’s a jumbo build of John the Ripper 1.7.6 compiled using MinGW/GCC 4.5.0. Revision 7 of the jumbo patch and OpenSSL 1.0.0 were used.

Benchmark results on a 4GHz Phenom II X2:

Benchmarking: Traditional DES [128/128 BS SSE2]... DONE
Many salts:    2860K c/s
Only one salt:    2378K c/s

Benchmarking: BSDI DES (x725) [128/128 BS SSE2]... DONE
Many salts:    95093 c/s
Only one salt:    93132 c/s

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    11635 c/s

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    701 c/s

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:    319531 c/s
Long:    1046K c/s

Benchmarking: LM DES [128/128 BS SSE2]... DONE
Raw:    14351K c/s

Benchmarking: NT MD4 [128/128 SSE2 + 32/32]... DONE
Raw:    19418K c/s

Benchmarking: Mac OS X 10.4+ salted SHA-1 [32/32]... DONE
Many salts:    4934K c/s
Only one salt:    4454K c/s

Benchmarking: M$ Cache Hash [Generic 1x]... DONE
Many salts:    22610K c/s
Only one salt:    8376K c/s

Benchmarking: Apache MD5 [32/32]... DONE
Raw:    11752 c/s

Benchmarking: HMAC MD5 SSE2 [hmac-md5 SSE2]... DONE
Raw:    3862K c/s

Benchmarking: Post.Office MD5 [STD]... DONE
Many salts:    4152K c/s
Only one salt:    4165K c/s

Benchmarking: Raw MD5 SSE2 [raw-md5 SSE2 16x4]... DONE
Raw:    11658K c/s

Benchmarking:  md5_gen(0): md5($p)  (raw-md5)  SSE2 [md5-gen SSE2 16x4]... DONE
Raw:    12219K c/s

Benchmarking:  md5_gen(1): md5($p.$s)  (joomla)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    6990K c/s
Only one salt:    5343K c/s

Benchmarking:  md5_gen(2): md5(md5($p))  (e107)  SSE2 [md5-gen SSE2 16x4]... DONE
Raw:    4969K c/s

Benchmarking:  md5_gen(3): md5(md5(md5($p)))  SSE2 [md5-gen SSE2 16x4]... DONE
Raw:    3194K c/s

Benchmarking:  md5_gen(4): md5($s.$p)  (OSC)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    8015K c/s
Only one salt:    7861K c/s

Benchmarking:  md5_gen(5): md5($s.$p.$s)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    8363K c/s
Only one salt:    7139K c/s

Benchmarking:  md5_gen(6): md5(md5($p).$s)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    12473K c/s
Only one salt:    4282K c/s

Benchmarking:  md5_gen(7): md5(md5($p).$s)  (vBulletin)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    13035K c/s
Only one salt:    4321K c/s

Benchmarking:  md5_gen(8): md5(md5($s).$p)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    4505K c/s
Only one salt:    4112K c/s

Benchmarking:  md5_gen(9): md5($s.md5($p))  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    6990K c/s
Only one salt:    4181K c/s

Benchmarking:  md5_gen(10): md5($s.md5($s.$p))  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    3971K c/s
Only one salt:    3572K c/s

Benchmarking:  md5_gen(11): md5($s.md5($p.$s))  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    4332K c/s
Only one salt:    3986K c/s

Benchmarking:  md5_gen(14): md5($s.md5($p).$s)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    6354K c/s
Only one salt:    3971K c/s

Benchmarking:  md5_gen(17): phpass ($P$ or $H$)  SSE2 [md5-gen SSE2 16x4]... DONE
Many salts:    8322 c/s
Only one salt:    8144 c/s

Benchmarking: PHPass MD5 SSE2 [phpass-MD5 SSE2]... Using phpass mode, by linking to md5_gen(17) functions DONE
Many salts:    8263 c/s
Only one salt:    7815 c/s

Benchmarking: IPB2 MD5 [Invision Power Board 2.x salted MD5]... DONE
Many salts:    3923K c/s
Only one salt:    2349K c/s

Benchmarking: Raw SHA-1 SSE2 [raw-sha1 SSE2]... DONE
Raw:    7825K c/s

Benchmarking: Kerberos v4 TGT [krb4 DES]... DONE
Raw:    3557K c/s

Benchmarking: Kerberos v5 TGT [krb5 3DES (des3-cbc-sha1)]... DONE
Raw:    58670 c/s

Benchmarking: Netscape LDAP SHA SSE2 [SHA-1]... DONE
Raw:    10894K c/s

Benchmarking: Netscape LDAP SSHA SSE2 [salted SHA-1]... DONE
Many salts:    13740K c/s
Only one salt:    9742K c/s

Benchmarking: OpenLDAP SSHA [salted SHA-1]... DONE
Many salts:    4946K c/s
Only one salt:    4601K c/s

Benchmarking: Eggdrop [blowfish]... DONE
Raw:    29308 c/s

Benchmarking: Oracle [oracle]... DONE
Raw:    1322K c/s

Benchmarking: Oracle 11g [oracle11]... DONE
Many salts:    4969K c/s
Only one salt:    4483K c/s

Benchmarking: MYSQL [mysql]... DONE
Raw:    1806K c/s

Benchmarking: MySQL 4.1 double-SHA-1 SSE2 [mysql-sha1 SSE2]... DONE
Raw:    6021K c/s

Benchmarking: Lotus5 [Lotus v5 Proprietary]... DONE
Raw:    125067 c/s

Benchmarking: More Secure Internet Password [RSA MD defined by BSAFE 1.x - Lotus v6]... DONE
Many salts:    131995 c/s
Only one salt:    78204 c/s

Benchmarking: LM C/R DES [netlm]... DONE
Many salts:    775573 c/s
Only one salt:    757093 c/s

Benchmarking: NTLMv1 C/R MD4 DES [netntlm]... DONE
Many salts:    1080K c/s
Only one salt:    1045K c/s

Benchmarking: LMv2 C/R MD4 HMAC-MD5 [netlmv2]... DONE
Many salts:    754913 c/s
Only one salt:    744198 c/s

Benchmarking: NTLMv2 C/R MD4 HMAC-MD5 [netntlmv2]... DONE
Many salts:    667882 c/s
Only one salt:    687139 c/s

Benchmarking: HalfLM C/R DES [nethalflm]... DONE
Many salts:    1857K c/s
Only one salt:    1768K c/s

Benchmarking: MSCHAPv2 C/R MD4 DES [mschapv2]... DONE
Many salts:    1094K c/s
Only one salt:    1060K c/s

Benchmarking: MS-SQL SSE2 [ms-sql SSE2]... DONE
Many salts:    14364K c/s
Only one salt:    10292K c/s

Benchmarking: MS-SQL05 SSE2 [ms-sql05 SSE2]... DONE
Many salts:    14376K c/s
Only one salt:    10106K c/s

Benchmarking: EPiServer SID Hashes [SHA-1]... DONE
Many salts:    4750K c/s
Only one salt:    4601K c/s

Benchmarking: PHPS MD5 SSE2 [MD5(MD5($pass).$salt) SSE2]... Using phps mode, by linking to md5_gen(6) functions DONE
Many salts:    13899K c/s
Only one salt:    4431K c/s

Benchmarking: MYSQL_fast [mysql-fast]... DONE
Raw:    27191K c/s

Benchmarking: PIX MD5 SSE2 [pix-md5 SSE2]... DONE
Raw:    11650K c/s

Benchmarking: SAP CODVN G (PASSCODE) [sapg]... DONE
Many salts:    1605K c/s
Only one salt:    1399K c/s

Benchmarking: SAP BCODE [sapb]... DONE
Many salts:    1965K c/s
Only one salt:    1640K c/s

Benchmarking: Netscreen MD5 [NS MD5]... DONE
Raw:    5645K c/s

Benchmarking: HTTP Digest access authentication [HDAA-MD5]... DONE
Many salts:    1869K c/s
Only one salt:    1783K c/s

transcode tools for Windows (version 1.1.5)

I’ve prepared a Windows/Cygwin build of the following tools from transcode 1.1.5:

  • avifix
  • aviindex
  • avimerge
  • avisplit
  • avisync
  • tcmodinfo
  • tcmp3cut
  • tcyait

Only avimerge has been tested extensively. I take no credit except for performing the compilation.

Saturday, November 13, 2010

FLAC.exe for Windows x64

I was messing around with the mingw-w64 cross-compilers for Fedora, and got a bit carried away. The result? a 64-bit build of FLAC for Windows.

This 64-bit build seems to be about 20% faster than vanilla FLAC.

Of course, I take no credit other than for compilation.

Wednesday, July 28, 2010

SLIC 2.1 BIOS mod for Gigabyte H55M-UD2H

This is the F9 release BIOS. Tested successfully on a revision 1.0 board.

Disclaimer: BIOS flashing is, of course, a potentially risky operation. All the mods below have been flashed and tested successfully, but I am not responsible for anything that happens due to the use of these mods.

Board model: Gigabyte H55M-UD2H
BIOS type: Award
BIOS version: F9
Mod method: SSV3

Tuesday, July 13, 2010

1337 tip: Alphabetize a String in Python with a One-liner

Let’s say you have a string of letters that needs to be alphabetized – a string of nucleotide bases, for example.

Original string: “TA”
New alphabetized string: “AT”

Code: newString = ‘’.join(sorted(myString))


Sunday, July 11, 2010

Whip Cygwin’s vim into shape

If you’re a Windows user like me but do a lot of editing/development work on Linux, chances are you rely on the Cygwin environment and its host of software. One of the staples of Linux is the editor vim. Cygwin’s vim, however, is configured by default to run in old-school vi mode. That means no nice colors, no statusbar messages, and bad arrow-key/cursor support. A far cry from how vim works in modern Linux distros, that’s for sure.

The solution? Easy.

Create an blank .vimrc file in your Cygwin home directory. Better yet, enable autoindent by adding these four lines:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set pastetoggle=<F2>

If you’re a heavy user of vim on Cygwin, I’m sure you will find this to be a godsend.

Thursday, July 1, 2010

rdesktop 1.6.0 for Windows

This is a Cygwin-compiled build of the *nix rdesktop RDP client for Windows machines.
Sound support is included.
Depending on your needs, you may find this to be a useful alternative
to the standard built-in Windows client.

X server for Windows (e.g. Xming or Cygwin X11)
You must have the X server running prior to using rdesktop.

Additionally, the DISPLAY environment variable must be set.
See the included batch script (RDstart.cmd) for an example
of how to set this variable and start rdesktop.

rdesktop is a command-line program: for more information, please
see the original rdesktop website.


Saturday, June 26, 2010

The College Survey Scam

College students are a population that can reliably be characterized as “poor” and “constantly in need of money”; I am no exception. While this is unfortunate enough in itself, even worse are the existence of scams designed to prey off this demographic. I got an email today from a “James Scott” (very likely a fake name) from, claiming to offer summer part-time work for college students:

Our market research program offers competitive payment for participants in 
simple on-line surveys and evaluations. Our Internet-based program is designed
as a part-time job with a flexible schedule.

Sounds innocuous enough in itself. But if you actually go to the website, you’ll find that the direction of money flow isn’t as expected: first you have to sign up for their program and pay a $29.99 fee. This should send up a red flag for any individual with half a brain. Indeed, a quick inspection of the email headers reveals some questionable tidbits.

Received: from ([] helo=ee)
by with esmtpa (Exim 4.69)
(envelope-from <>)
id 1OSdhB-0000Mh-42

The email was sent from some Bulgarian cable ISP. If you do an nslookup on the domain, you’ll find that its address ( is registered to a Bulgarian webhost.

If you plug that IP address into whois, you’ll find that this domain is registered in Bulgaria. Maybe this James Scott guy is some clever American entrepreneur who’s decided to set up shop in southeastern Europe. More likely, it’s just a lowlife, unemployed Slavic scumbag looking to get rich (like that will ever happen).

If I didn’t have better things to do (and if I could actually speak Bulgarian), I’d be giving that ISP (and the scam’s payment processing company) a nice long call. Ah well…just don’t fall for it!

P.S.: On the website they list a US contact address: “10685-B Hazelhurst Dr., Houston, Texas 77043 US”. In any case, this is still highly suspect…

P.S. 2: They also claim to have 24/7 customer support. Wouldn’t hurt to shoot ‘em a message and see just how fake they are.

uTorrent IPFilter Updater 1.5.8 released

This is an incremental update that restores functionality with the downloads. The source code has been reworked for full Python 3.1+ compatibility, and the EXEs are now built with cx_freeze. Download the new version here:

Saturday, May 29, 2010

Convert lyrics to subtitles with lrc2srt is a Python 3 script intended to convert .lrc lyric files into SubRip-format .srt files.
This kind of conversion may be useful, for example, when adding lyrics to a music video file. lrc2srt requires Python 3.x and is licensed under the GPLv3.

To download along with a detailed readme file, please visit:

Friday, May 28, 2010

The Mystery of the Beeping Motherboard

My new Samsung Spinpoint F3 1TB hard drive finally arrived yesterday, and without delay I proceeded to pop it in. I couldn’t have asked for a smoother install – the drive’s power and SATA connectors were hooked up in the span of a few minutes. Powering on the machine, I start thinking about how I’m going to move my data over when BAM! the computer/motherboard suddenly starts emitting a buzzing/continuous beeping sound from the system speaker. I quickly shut the machine down. Thinking it might be the new hard drive, I fully disconnect it and restart the system. Bzzzzz….at this point I was getting pretty worried as the computer was now in its original configuration yet still making that incessant buzzing noise. My next thought is that the power supply might be slightly overloaded; I disconnect a couple of case fans and turn the rig back on. No luck. I then go into the BIOS and start fiddling around, thinking it might be some random setting that needs to be flipped. Only after visiting the “PC Health” section, which shows all the temperature readouts, do I see the issue. I had the CPU temperature warning enabled. The alarm was sounding for good reason - my processor was running in excess of 70C! Clearly, something was wrong with my CPU cooling. I’m running a Corsair H50, so that means the pump must not be working. I connect the pump to another 3-pin connector on my PSU, and upon rebooting the beeping magically stopped. It seems that the old connector that the pump was connected to must have died.

Moral of the story? If your computer starts buzzing non-stop, take a look at your CPU temps. Your computer is trying to tell you that it’s dying…

Sunday, May 9, 2010

SLIC 2.1 BIOS mod for Gigabyte MA78LM-S2H

Here’s another BIOS mod, this time for the Gigabyte MA78LM-S2H. The version is F10 and is current as of this post. Tested successfully on a revision 1.3 board, and should work on all earlier revisions.

Disclaimer: BIOS flashing is, of course, a potentially risky operation. All the mods below have been flashed and tested successfully, but I am not responsible for anything that happens due to the use of these mods.

Board model: Gigabyte MA78LM-S2H
BIOS type: Award
BIOS version: F10
Mod method: SSV3

Monday, May 3, 2010

Remote sessions on Ubuntu 10.04 LTS with NeatX

As detailed in my previous article on NX technology, being able to remote into your machine and get a remote desktop is becoming a capability that’s more and more useful these days. Unfortunately, the latest 10.04 LTS release of Ubuntu requires a slightly more involved procedure to get an NX running (at least until most of its supporting software packages are brought up to date). Basically, NeatX (another FOSS Linux NX server) will be used instead of FreeNX. Here’s the basic steps required for installation on a 64-bit Ubuntu 10.04 LTS system:

  1. Go to System – Administration – Software Sources.
  2. Go to “Other Software” and click Add.
  3. Enter the following (without quotes, of course!): “ppa:freenx-team/ppa”
  4. From the shell/command line enter: sudo apt-get install neatx-server
    Alternatively, you can use Synaptic (also located in the System - Administration menu) to install this package and its dependencies

You might also want to have the SSH server up and running (sudo apt-get install openssh-server), just in case you need to troubleshoot anything or just need a console-only session for the time being.

After the package installation completes your NX client should be up and running. Test and use your newly minted NX setup with any NX client, e.g. the NoMachine Windows NX Client.

Friday, April 30, 2010

eSATA Strangeness on a Foxconn A7DA-S

After all this time (more than a year since I built the rig in question), I finally got the opportunity to try out my board’s eSATA port. This particular motherboard (the AM2+ version of the Foxconn A7DA-S, equipped with the 790GX northbridge and SB750 southbridge) has no integrated eSATA port on the I/O panel; rather, a back-panel expansion bracket is supplied and is supposed to hook up to the “eSATA”/#6 SATA port on the board. For some reason, Windows was not detecting the external HDD, even though AHCI was enabled. I connected the eSATA bracket to SATA port #5, thinking that the designated “eSATA” port was dead. I then went into the BIOS and set SATA IDE Combined Mode to off, and following this Windows was able to autodetect the eSATA HDD.

Sounds all well and good, right? Unfortunately, shortly after unmounting and unplugging the external disk, my computer began to spazz out. Specifically, the system began thrashing the internal hard drive indefinitely, causing a system freeze. I was forced to reset the board. After a CMOS clear and a chkdsk run, I booted back into Windows. Plugging in and unplugging the eSATA drive again caused this crazy disk-thrashing.

After a bit of trial and error, I ended up reconnecting the eSATA bracket to where it should have gone, the #6 SATA port marked “eSATA.” For some reason, this worked: Windows was able to automount the eSATA drive, and unmounting the drive caused no strange behaviors.

I think there are a few things to learn from this strange incident. It is evident that not all motherboard manufacturers implement AHCI and SATA hotplug capabilities in the same way. It seems that on this board Foxconn only implemented eSATA functionality correctly on one of the six SATA ports, perhaps explaining why this port is specifically labeled “eSATA” on the PCB and in the BIOS. Furthermore, my roommate’s newly minted desktop build, which runs a Gigabyte board (the MA78LM-S2H) with a lesser chipset (the 760G) seems to be able to handle hotplugging correctly on all four of its SATA ports. Obviously, there’s a reason why manufacturers like Asus and Gigabyte are considered “Tier 1” brands while guys like Foxconn are relegated to a lesser status in the computer community. Had budget not been a concern when I put together my rig, I would surely have gone with a more reputable motherboard maker.

Friday, April 23, 2010

Sponsored Link: SnapIt Screen Capture

Capture anything you see on your PC screen!

Don't waste time cropping your captures. Take a "snapshot" of anything exactly what you need, with just a click.

Easy to Learn, Easy to Use!

Screen Capture Software

Tuesday, April 20, 2010

mktorrent-GUI version 1.35 released

Version 1.35 is a major release and supports the saving and loading of profiles. These profiles allow heavy torrenters to quickly import sets of tracker URLs. Additionally, most fields are now persistent – in other words, their content will be preserved in between application sessions.

Go to the main project page for a full readme and the download link.

Wednesday, April 7, 2010

NX: Linux Remote Desktop Access Done Right

Being able to access a computer remotely is becoming a more and more useful feature these days. This is especially true for headless servers and virtual machines, where local/direct access is often not an option. Windows machines (at least the non-home versions have the option of using Remote Desktop, which is a solid and reasonably fast solution. VNC is an option for both Windows and Linux, but it tends to be slow and inefficient as it runs through the framebuffer and is bitmap-based.

I was recently setting up an Ubuntu 9.10 VM for academic programming purposes. Since my (Windows-based) laptop, a four-year-old Dell, is a little underpowered, my plan was to connect to this VM remotely to do all my work. Sure, I could do X forwarding through SSH + PuTTY + Xming or something, but that tends to be somewhat cumbersome, especially when a full desktop is desired. I did try Ubuntu’s VNC-based Remote Desktop feature – it works fine, especially considering the fact that everything was being sent/received over a wireless network. But there was still a bit of lag and window tearing. I wanted something that could really push the envelope of remote computing. A bit of internet research indicated that NX is the king of remote-access technology for Linux, and after field-testing it on my VM and laptop I must say that I would totally agree. Not only is NX speedy, it also provides SSH-based connection security – something VNC can’t do on its own.

Installing and Configuring the NX Server on Ubuntu

An excellent official guide to setting up the open-source FreeNX server software can be found here. The instructions work well for the latest version of Ubuntu at the time of this writing, 9.10.

Installing and Configuring the NX Client on Windows

The preferred client is provided by NoMachine. The setup package can be downloaded here. The latest version at this time is 3.4.0-7.

After running the install, you can create a new connection profile by running the NX Connection Wizard. The questions are fairly straightforward – give your session a name, supply the server hostname, etc. For Ubuntu you want to use the Unix connection type. Set the desktop to GNOME or KDE if you have it installed. One of the nice things about NX is that it can dynamically set up the resolution. You can choose fullscreen or a specific resolution. Note that if fullscreen is used, you will still be able to ALT+TAB out of the NX window if you want to go back to your Windows desktop/programs for a bit.

Once a profile has been created, you can just use the NX Client for Windows shortcut. Type in your username + password (same as your local Linux credentials), wait a few seconds, and boom! Your Linux desktop in all its glory should appear. The claim that NX can achieve near-local-speed responsiveness is certainly not a joke, as I’m sure most users of it would agree.


Wednesday, March 24, 2010

Howto: Download TurboTax state forms for free

TurboTax is great for filling out those pesky tax return forms without relying too much on manual brainpower, especially if you have a complex tax situation. The federal forms are free, but TurboTax only lets you file one state return free of charge. If you need additional state forms, it’ll run you $39.95 each. Needless to say, this is a pretty ridiculous fee when you could buy another copy of TurboTax (Deluxe) for a similar price. Fortunately, there’s a way to remedy this…inconsistency.


The basic premise is to install and use TurboTax in a virtual machine. There are several VM solutions out there, but this guide will illustrate the use of VirtualBox. VirtualBox is free and lightweight, making it ideal for the relatively simple task here. We will use the snapshot feature of VirtualBox to create an image of the TurboTax install BEFORE downloading the first free state. After downloading the free state, the virtual machine can be reset to this snapshot, whereby another state can be downloaded for free.

You might complain about having to use TurboTax in a virtual machine – true, it’s slightly more inconvenient, but who doesn’t like the added layer of security?

Materials needed:

  • VirtualBox (download here)
  • Windows XP/Vista/7 install media
  • TurboTax (2009) [duh!]

Prepare the Virtual Machine for TurboTax

Install VirtualBox if you haven’t already, using the download link above.

Install your virtual operating system of choice in VirtualBox. The intricacies of this will not be covered here. However, I recommend Windows XP since it is smaller in size than Vista or 7.

Install the VirtualBox Guest Additions (highly recommended). This enhances the video quality in the guest OS and also allows shared folders, which can make it easier to transfer files (e.g. tax documents).

*If your guest operating system is Windows XP or Windows Vista, you will first need to install the .NET Framework 3.5 SP1. (web installer, full offline installer)

Install TurboTax (2009) into the guest operating system. Run the application and allow it to grab updates, then exit out. Shut down the guest OS.

From the VirtualBox interface, create a snapshot of your VM.


Download the 1st free state

Start up the virtual machine and open up TurboTax.

Click “Start a New Return”.

Go to the “State” menu. Keep clicking “Continue” until a window pops up asking you to choose a state to download for free. Proceed with the download.


Once the download is finished, quit TurboTax. Navigate to the location “C:\Program Files\TurboTax\Forms”.


Of the directories listed, it should be relatively easy to pick out the one that corresponds to the state you just downloaded (e.g. ohi_09 corresponds to the 2009 Ohio forms). Simply transfer this folder (zip it up first if you’d like) to your real OS, or any other permanent storage location.

Shut down the VM.

Reset the VM and download more states for free

Go to the snapshots menu in the VirtualBox interface (see screenshot above). Right click the snapshot you made and hit the “restore” option.

Reboot the VM. The VM and the TurboTax install are now in the original state (no pun intended) where it will allow you to download one more set of state forms for free.

Repeat the process described above to download the state forms.

Rinse and repeat, if desired.

Add the state forms back into TurboTax

Now that you have all the state forms you need, it’s time to add them back into TurboTax. Copy/move these form directories back into the “C:\Program Files\TurboTax\Forms” on your virtual machine.

The next time you start up your virtualized TurboTax install, it should scan and pick up these new forms. You can now proceed to use TurboTax normally. If desired, the new form files can also be added into the forms directory of a TurboTax installed in a real OS.

Friday, March 5, 2010

DesktopIce for Windows 7

DesktopIce is a Windows 7-only applet that "freezes"
your desktop and locks your computer. This is in contrast
to the standard blue background that appears when the computer
is locked.

You need administrator privileges to run DesktopIce since the desktop image
is saved to a system directory.
Run the program executable. An ice cube icon will appear in the taskbar.
To lock the computer through DesktopIce, right click the tray icon and click "Lock".

If you already have a custom background saved, using DesktopIce will not affect it.
Your custom background will be backed up to backgroundDefault-orig.jpg, and
put back in place once the screen is unlocked. This allows you to use the "regular"
locking mechanism (Windows Key + L) too.

DesktopIce can be downloaded at:

Saturday, February 6, 2010

The Guide to Safe Torrenting: College Edition

The ubiquity and ease of use of the BitTorrent P2P protocol has attracted to it a countless number of users. But as with any P2P technology, it carries with it risks, especially in the context of copyrighted content. The MPAA, RIAA, and other so-called antipiracy outfits acting as mercenaries on behalf of content owners employ a variety of controversial techniques in an attempt to catch people downloading or uploading a torrent red-handed. The successful capture of a name, or more likely IP address can have some pretty undesirable legal consequences, particularly in the United States due to the Digital Millenium Copyright Act (DMCA). A cease-and-desist letter is usually sent, followed by a demand for a large, financially burdening out-of-court settlement. This threat is especially damaging on college and university campuses, where the user base is young and often ill-informed about P2P safety, not to mention poor! Furthermore, colleges and universities often have their own, equally undesirable sanctions should they have to forward a copyright claim letter to the student. The risk of being pursued for copyright infringement, however, can be significantly minimized if one knows how to keep a low surface profile on the network. Here are several tips and tricks that will help reduce the risks of using BitTorrent on a college network, or more generally, a high-risk environment.

  1. Refrain from downloading new, high-profile content in the days following its release
    Content creators and their hired copyright watchdogs are almost certain to be monitoring torrents of newly released movies and (possibly to a lesser extent) music and software. Don’t let the temptation of downloading a brand-new film screw you over – if you wait at least a week, the dangers of connecting to bad peers is significantly reduced.
  2. Limit your speed
    As with #1, it’s all about discipline, discipline, discipline. Is it really going to kill you to wait an hour or two extra to finish that torrent? If you’re maxing out your upload/download capacity for extended periods of time (especially likely if using a private tracker), red flags are going to start popping up. Any half-brained network administrator worth his salt will be suspicious and look to investigate. If your ISP doesn’t bust you, any antipiracy groups that happen to be monitoring the torrent will be drawn to high-speed peers.
  3. Use protocol encryption
    All the modern and major BitTorrent clients, including uTorrent, Transmission, and Vuze, support a feature called protocol encryption. Basically, the headers of any BitTorrent packets are obfuscated to disguise the nature of the traffic. Note that the actual data in the packet is not encrypted, however. Though this method is not at all foolproof, it will at least create a shadow of doubt as to the nature and purpose of that high-volume traffic going through the network.
  4. Use an IP blocklist
    As with #3, this method is nowhere near foolproof. However, it will afford you some protection in that it prevents you from connecting to known bad/malicious IP addresses that might be connected to watchdog groups/government agencies/etc. Several of the leading torrent clients support loading a blocklist in one format or anoather. If you’re using uTorrent, be sure to checkout my uTorrent IPFilter Updater, an in-house production of Binary Inspirations.
  5. Use private trackers, if possible
    Of course, this is not an option that’s feasible for everyone, including the casual user and newcomers into the BitTorrent world. Since private trackers have a limited user base, the risk of being monitored by copyright outfits is lower than on a public tracker. The smaller and more obscure the site, the less likely that any members are “double agents”. Additionally, some private sites have entry requirements and interviews that make it more difficult for malicious users to infiltrate (though not impossible - *cough* TorrentLeech *cough*!) The fast speeds and other perks of private trackers make them an option worth investigating if you haven’t already.

Friday, January 29, 2010

Z-Alarm 2 (version 2.2) released

Time for a new Z-Alarm release. Version 2.2 brings:

  • overhauled timer management and more responsive user interface
  • randomized alarm buzzer tones (you’ll never, ever get used to it)
  • Spacebar shortcut to hit the snooze button (no more stumbling around drowsily trying to move the mouse)
  • Detailed artist-title tag info display (for supported file formats)
  • More attractive-looking snooze button

More information and download:
Z-Alarm 2 (version 2.2)

mktorrent-GUI version 1.0 released

mktorrent-GUI is a Windows-based GUI frontend to the console-based (Linux/UNIX native) mktorrent tool. There don’t seem to be any decent standalone torrent file creators on Windows. There is MakeTorrent, but that was last updated in 2004 and doesn’t support more modern features like private flags. My frontend aims to address these shortcomings and expose all of the functionality of mktorrent to the user via an easy-to-use interface.

Of particular interest to hardcore torrenters is the batch mode feature. If a directory is specified as a source, mktorrent-GUI will scan one level deep for subdirectories and automatically create a torrent for each subdirectory. All of the usual features such as comments, piece size and the private flag can be set.

More information and download link:
mktorrent-GUI version 1.0

Saturday, January 16, 2010

Corsair H50: CPU cooling, redefined

Air cooling is simple and inexpensive, and for this reason it is by far the dominant method of CPU cooling. However, they aren’t flexible; overclocking will often overwhelm the cooler’s ability to regulate temperature. This was precisely the problem I ran into with my desktop rig:

  • Case: Cooler Master Centurion 5 Blue
  • PSU: Raidmax RX-530SS Hybrid 2
  • CPU: AMD Phenom X4 9850 Black Edition (125W TDP)
  • Cooling (old): Arctic Cooling Freezer 64 Pro 92mm
  • Motherboard: Foxconn A7DA-S
  • RAM: 2x2GB OCZ Reaper HPC DDR2-1066 (the good old days, when memory was dirt cheap…)
  • GPU: Sapphire Radeon 4830 512MB GDDR3
  • HDD: Western Digital Caviar Blue 640GB
  • Optical: Samsung SH-S223B
  • Add’l fans: 120mm, 2 x 80mm

At stock clocks and voltage, the CPU would idle around 33-35 degrees C. Seems pretty normal, right? Whenever the CPU encountered a heavy load, temperatures would easily skyrocket past 61C, which is AMD’s specified thermal limit for this particular chip. I was forced to take it easy with demanding applications like video encoding and processing – overclocking, of course, was completely out of the question. The latter was especially unfortunate as my chip seems to need a bit more voltage for any decent overclocking to happen.

So I decided to something about it.

After quite a bit of research, I came across the Corsair H50. It’s known as a closed-loop liquid cooler. Water/liquid cooling obviously provides vastly improved performance over air cooling, but a decent full-fledged setup with a pump and radiator is much more complicated to set up, and also much more expensive. The risks of watercooling (fluid leakage, regular maintenance) are also something to consider. The Corsair H50 claims to provide the benefits of liquid cooling in a completely sealed, compact package.

Corsair claims that installation is easy, but it ended up taking longer for me (maybe it was just a result of my own clumsiness?) I ended up doing some steps out of order before everything came together.

The H50 comes with a “high-efficiency” 1700RPM 120mm fan for its radiator. The radiator allows you to attach an additional 120mm fan to it to create a push-pull setup, which I did by using my existing case fan.

The results? Nothing short of phenomenal. Check out these temperatures:

idle: 27-29C (2.6GHz @ stock 1.28V); 33-35C (3.0GHz @ 1.312V)
load (running Prime95): 45C (2.6GHz @ stock 1.28V); 54C (3.0GHz @ 1.312V)

Under a more realistic load, my temps don’t go above 47C.

If you need serious cooling without the hassle of a full-blown enthusiast setup, I wholeheartedly recommend the Corsair H50. You’ll be blown away by what it can do.