Raspberry Pi: Creating a secure torrent client

Recently, I was made a gift of a Raspberry Pi project computer, and I’ve been going nuts ever since doing numerous projects with it. None of them are particularly unique, because this is basically a Linux computer, so I could do any of these projects on a regular computer. However, the fun thing about the Raspberry Pi is that it can be a small device that is focused on doing one thing, with a small physical and energy footprint. (This particular project could also be applied to a regular Linux-based desktop computer, but this tutorial will be Pi-focused in some of it’s aspects.)

Continue reading

Branch Freezing with Mercurial

I recently found the need to venture into the somewhat shady realm of Mercurial hooks. (If you are not familiar, Mercurial is a git-like Version Control System written in Python.) Within my development environment, after making releases, we construct named branches of the release, to be kept pristine in perpetuity. This allows us, at any time in the future, to reconstruct a particular release identical to what has been released to the public, or to sub-branch from that point for any subsequent patch releases that might be necessary.

Continue reading

Tips For Debugging a Windows Shell Extension

This is just a brief article to note the debugging work flow I used while recently developing the Associated Windows Shell Extension. Windows Shell Extensions can be a bit tricky to debug, especially when you use the live Windows Explorer to test your work, as I do. The work flow I use is not very complicated, and doesn’t require hacking the Windows Registry (as some techniques do). There are other work flows that run separate Explorer processes, and do not require elevated privileges, but this is the work flow I use.

Continue reading

Associated: A Windows Shell Extension

Necessity is indeed the mother of invention. Most things you see around you in life are there because somebody one day had a need that the current crop of available tools could not satisfy. Seeing the need, a tool maker then created (and eventually refined) a tool so everybody could get the job done. Of course, one of the really cool things about being a tool maker is that you never have to wait for somebody else to solve your problem.

Continue reading

Fixing your XBox 360’s RRoD

I know there are a plethora of YouTube videos and blog posts out there about fixing the “Red Ring of Death” on your XBox 360. Fixing the RRoD turned into a multi-million dollar industry, truth be told. Well, I’m going to show you how to fix yours using about $4 worth of parts so you can get yours up and running without having to spend any more just to find the right path. To date, I have successfully fixed two machines using these steps, and as I write this article, I am in the process of correcting a third (pictured). So far, my approach, cherry picked from several sources, has proven successful — and here it is for you to use, free.

Continue reading

Welcome to Snow Leopard: Mac OS X 10.6 and VMware Workstation 7

You know how things get easier with practice? Well, there wasn’t much required for this feat: Installing Mac OS X 10.6 (a.k.a. Snow Leopard) into a VMware Workstation 7 virtual machine. Workstation 7 appears to have greatly improved support for the Mac operating systems to the point that installing Snow Leopard into a virtual machine is much easier than it was with Mac OS X 10.5.6 under VMware 6.5.2. In fact, in this version (I’m using 7.0.0 build-203739), you can install VMware Tools yourself, and enable sound!

Continue reading

Adding builder priority to Buildbot 0.7.10

I’m currently managing the automated build/test system for my project (the most recent of many hats that I’ve been required to wear during my tenure). We are using Buildbot to manage the builds for three platforms (Windows, Linux, Mac OS X), two architectures (32-bit and 64-bit), and four branches of development (one new product, two branches of a legacy product, and N-number of growing private developer branches). Doing the numbers, and trying to apply the result to six available machines for performing automated builds and test cases, it becomes clear that some level of priority management is needed to ensure the higher-priority builds complete before the lower-priority are serviced.

Continue reading