Build A Home Theatre PC for $317

Although I’ve been planning on it for a while, I’ve been putting off the purchase of a home theatre PC for my house. I’ve been storing all of my media on a server running in my basement, but I didn’t have any way of playing that media on the TV in my living room. An HTPC seemed like the logical answer.

The only issue I had was that I was on a budget. I wanted to have this system powerful enough to handle 1080p video with no trouble, load up quickly, play anything that I can throw at it, and still be affordable. After watching some sales and pricing out the components, I managed to build a fully-functional system for only $317.

The HTPC case.

Here’s the component list for what I ordered:

  • AMD Athlon II X2 250 3.0Ghz 65W processor – $62.99
  • Foxconn A74ML-K AM3 Micro-ATX Motherboard – $46.99
  • Rosewill WMC Remote – $24.99
  • Sapphire ATI Radeon HD 4350 low-profile video card – $45.99
  • hec Black Media Center case w/ 300W power supply – $59.99

A few notes about this:

  • I already had a hard drive, so I didn’t have to buy one. I saw some for $36 recently that would do just fine for this.
  • I had bought the wrong RAM (I bought DDR2 when I needed DDR3), but I had a friend who did the same thing but bought DDR3 when he needed DDR2. We traded RAM and I gave him $20 and we called it even.
  • Operating System not included. I found that ATI’s proprietary Linux drivers don’t cut it for 1080p video and the sound output didn’t work with the TV in my living room, so you might want to find a Windows licence.
  • I had an existing HDMI cable and a TV that supported HDMI output. You will either need both or will have to figure out another way of getting your video and sound on your TV.

My first build used Ubuntu 10.10 for the operating system, but I found that 1080p video just wouldn’t play smoothly. It looks like ATI just hasn’t put the spit polish on the Linux drivers. When I tried a full 1080p video it dropped several frames per second and maxed-out the graphics processor. So, I decided to go with a Windows build. I happened to have a spare licence of Windows 7 Professional, so I used that as my base operating system, and I’m really happy with it.

The media centre I’m using is XBMC Media Centre, which was originally designed to work on the classic Xbox (fun fact: I soft-modded a friend’s Xbox to run it; it works great until you throw something high-def at it), but now runs on Windows, Linux, Mac, or Apple TV for XBMC. If you’re looking for a home theatre frontend, I highly recommend this. It’s seriously one of the best pieces of software I’ve used, and it has support for a MySQL media database, which is great for me because I have multiple frontends that share content. After an install and a quick configuration change, it worked out of the box after I gave it my server login credentials.

The remote took a bit to get going. I found a guide online to disable Windows Media Center from loading when I hit the Windows logo on the remote, and set it up to open XBMC instead. Also, rather than booting into a Windows environment first, I configured Windows to load XBMC as its graphical frontend rather than explorer. This means that there’s no menu bar at the bottom, no applications running in the background to slow down processing power, and it’s much harder for people to use the computer for other purposes. After I got the remote working, I packed up the keyboard and mouse; I have no use for them anymore, as it should be with an HTPC.

All in all, I love this new thing. It runs so quiet I can barely hear it, uses little-to-no power, and will play absolutely anything that I have. It’s more expensive than those pre-built ones that Western Digital makes, but is customizable, can be used for other purposes such as surfing the internet, and has a compatibility list that can be summarized by “it can play it”. If you like your digital media and want to play it on a TV, build one of these; you won’t regret it.

Replacing The Junker

Some of you may remember the first car that I owned: a 1994 Plymouth Acclaim. The behemoth handled like a Plymouth van (which handles like a boat) and guzzled gas like it was a Slurpee. The only thing good about that car was that it got me around and it had a pretty awesome custom sound system in it.

This past summer, with my co-op job bringing in some serious cash, I decided to buy a ‘new’ car: a 2006 Ford Focus ZX5 SES, to be more specific. My stipulations when picking a new car was that it had to be a manual transmission, sporty looking, fun to drive, a good track record for repairs, and relatively easy on gas; the Focus met all of those, and came at a great price as well.

With me being the audiophile that I am, my first thought was that I would be replacing the sound system pretty soon. When the car salesman heard this, he thought I was nuts. He kept on going on about how the sound system was “pretty darn good for a stock system”. I’m tempted to take my car back now for him to see. I lasted maybe two weeks before the sound system was ripped from my old car and put into the new car, with a few improvements along the way.

The gear going into the car

Here’s a quick rundown of the sound gear that got put into the car:

  • 1 800W Sony 2-channel amplifier (for back speakers)
  • 1 1300W Sony Class D amplifier (for subwoofer)
  • 1 Farad capacitor (helps battery deliver current quickly)
  • JVC single-DIN head unit w/ iPod cable
  • 2 Alpine Type-S 6″x9″ speakers (for custom privacy screen)
  • 4 Soundstream 5.25″ speakers (door replacements, not pictured)
  • 2 4ga-8ga distribution blocks (distributes power lines)
  • 4ga Power line from battery to distribution blocks
  • 8ga power line from distribution blocks to amplifiers

The first thing to do was to rip out the stock head unit and replace it with my custom one. This was probably the easiest part of the job, as it involved only a bit of soldering, and the entire front panel popped right out. The DIN converter plate has a nice little storage pocket underneath for the iPod hookup.

The next step was to run a power line from the battery to the trunk to power the amplifiers, as well as the remote and audio lines from the head unit to the trunk. I decided to run them on separate sides of the car this time: power on the left, data on the right. I also opted for a higher-gauge cable: 4ga (1/4″ thick) instead of my old 8ga (1/8″ thick). 4ga wire should be able to take a couple thousand watts without much trouble. I took pictures of the carpeting ripped up, but unfortunately they did not turn out well.

Now the door speakers needed to be replaced. There were two tricky things about this. First, the door panels needed to be removed (picture on left). Secondly, the stock speakers were 5″x7″ speakers, and the hole would not support the 5.25″ speakers I wanted in there. The solution was to build custom mounting brackets to support the speakers in the hole. All I had to do was trace the old speakers and drill a few holes. Problem solved!

Now for the part I think I’m most proud of: the subwoofer cabinet. My old cabinet was a ported box that takes up at least a third of a trunk. Don’t get me wrong: it sounds amazing. My main goal however was to have a functional trunk when I was done with my custom build, and my old cabinet simply did not accomplish this. Time to build a new one. Inspired by the Focus SVT model which comes with it’s own subwoofer, I built mine into the opposite side of the car trunk, and designed it to be as small as possible while still being around the ideal volume for my subwoofer (about 0.95 cubic feet). The end result, after carpeted and equipped with the sub, amplifier, distribution blocks, and capacitor, is something I’m very proud of. Had you seen it prior to it being carpeted, most people would have thought it was professionally built.

I’m glad to say that this is now fully installed and sounding beautifully. I got a great deal on that 1300W amplifier, and it really packs a punch; seriously, if you don’t believe me, ask Tyler S for those of you that know him (he can attest to how his hair started vibrating at about 3/5ths volume). More importantly, however, is that it sounds clean, clear, and balanced, and it most certainly does.

I have also done some other work on my car, but unfortunately I do not have photos of it…yet! So, you will have to stay tuned for part 2, when I will have photos of the custom-built privacy screen (that part in hatchbacks that covers the trunk space), the custom shift and e-brake boots (I pulled out the sewing machine for them!), and the custom lighting mods, which look amazing. If you don’t believe me, below are a few teaser shots of my trunk with the subwoofer cabinet installed and the trunk lighting on. Talk to you all later!

Where I’ve Been

For the past four or five months, I haven’t had much of an online presence. In an effort to keep people updated (and perhaps explain the lack of posts), I have here a brief summary of my past few months, including notable purchases, projects, and job changes.

At the start of May, I started working a 16-week contract job working for the RCMP. Overall it was an interesting experience. I got to see the inner workings of Canada’s federal police force, and I got some hands-on experience working in a support environment. The work was not challenging in the slightest, but it paid well and I worked with some good people. In the interest of not breaking the law and violating my security clearance, I won’t go into any more detail.

Along with the very nice pay check I was getting was a goal I had of purchasing a new vehicle. My old car, as you may recall, was an old 1994 Plymouth Acclaim. After a few months of looking around, I settled on a 2006 Ford Focus ZX5 SES with manual transmission (oh, how I missed you). I pulled out my sound system from the Acclaim and put it into the new car with some mods that I’m very proud of (post coming next week!), including a new custom-built sub cabinet and custom-built trunk privacy screen. I also put some time into doing some lighting mods, and I even had to pull out the sewing machine for a few parts. All in all, I love the car; it’s far better than my old vehicle.

At the start of May, I took over the position of President with the University of Manitoba Swing Dance Club, which has been an exhausting experience, but definitely well worth it. I redesigned the website, and I have a great executive to help me out. Although my delegation skills need some work, I’m confident that my executive this year will keep me in line, and I in turn will unload work on them :). Our open house is today, so you should all come out! We have tons of things planned for this year, including potlucks, live band events, movies, and more.

I have also started doing some private contracting for my web development and computer skills, earning the occasional few extra dollars. A year ago, I started Windfire Hosting to offer cheap web hosting to friends (only $5/month!), and I’m pleased to say that I’m finally making a bit of “pizza ‘n beer” money off of it. I’ve started offering web development along side my hosting, so I can always guarantee that my applications run on the server it will be deployed to. Most notably, I’m building a photography portfolio for my friend Miguel; his site should be up within a week or so, so check out Chrestos Photography when it goes live.

If I ever had free time on a weekend, a couple friends and I started getting back into gaming of all sorts: board games, consoles, and tabletop role-playing. We’ve gotten on a regular schedule, so my friend Tyler (one of them) started a podcast called “I, Gamer“, which has actual play recordings, discussions about multiple gaming topics, and some random philosophical talks. If you’re interested in gaming, I highly recommend checking it out, and I’m not just saying that because I’m a regular contributor and I’m responsible for the podcast recordings.

Last but not least, I have university to contend with, including two of the hardest computer science courses offered at the undergraduate level: automata and cryptology. All of my courses are really interesting (at least the content is), so hopefully my other time commitments will not interfere with my studies.

Next week, I’ll have a post talking about some of my car mods that I’ve done, along with a bunch of photos of the partially-gutted interior, the finished mods, and more.

I’m Back; Photography Updates To Get Back In The Groove

After a period of almost five months of no blog posts, I’m finally getting going on these again. In a moment of inspiration, I decided to dust off the lenses and flashes and start honing the photography skills again, as well as working on the previously-regular rhythm of bi-weekly blog updates. A post will come later (hopefully by the end of this week) about what I’ve been up to over the past months. In the meantime, here’s a few photos I took this past weekend. They’re not much, but it’s definitely a start!

The wooden bowls are all made by my father, who over the past couple years has become obsessed with lathes, wood turning, pen making, and bowl making. The surface underneath is an old chest that was made by my great (great?) grandparents, and was recently refinished by my mother. I thought the combination of the two together would work nicely.

It’s always nice to hear from other people about the photos I put up. If you like what you see, take 30 seconds of your time and leave a comment. Let’s be honest: chances are you’re either slacking off in class, procrastinating over some work, or surfing between this and <insert social media site here>. I’m sure you can spare 30 seconds. 🙂

Without further ado, here’s the photos. Next week I’ll throw up some photos of the work I have recently done on my new car, some of which I’m quite proud of.

[nggallery id=16]

May 18 Photography Update

About two months ago, I found myself hitting a brick wall with my creativity. Not just photography in general, but with website design, programming, and life in general. I found myself not producing anything that I considered “up to par”. Thus, my camera found a home, case gathering dust, in my closet, wasting its life away.

A week or two ago, after reading a very helpful blog post by Lisa Bettany (I LOVE her photography; check her website out), I managed to get back into the swing of things; I think it had a lot to do with reading Lisa’s blog, particularly because a while ago she went through a similar issue, where she felt that none of the photos she took were any good (the different being she’s a professional and I’m not :P). I got the opportunity to photograph some of my late grandfather’s World War II medals, which let me put some of my practical skills to the test. I made myself a back-lit softbox with a flash behind the medal and a shoot-through umbrella above. Doing some minor post-shot colour tweaks, I got some great looking shots which, I think, do the medals justice.

This past weekend, I got the opportunity to have take some photos of a get-together with a couple high school friends, and the camera came out again. Although a number of my photos didn’t turn out, I was very happy with the results of some others.

Finally on Sunday, I went through my back yard and the back lane, taking photos of the trees in bloom and an old truck in a neighbour’s back yard. Although the photos I had originally intended on taking didn’t turn out nearly as well as I had hoped, other ones worked out nicely.

So, in attempt to get back into the photography (and blogging!) groove, I’ve decided to put up another 45 photos from the past weeks. As always, your comments and constructive criticisms are welcome and encouraged.

[nggallery id=15]

Dynamic Named Routes for Semi-Static Pages in Rails

When I was designing the new UMSwing website, I had a few issues that, at the time, I didn’t have a clean method of implementing. One of those was the creation of semi-static pages. After watching this episode of Railscasts, I had a pretty good idea of how to implement them. The only issue with the solution offered was the lack of dynamically generated routes.

Semi-static pages are used everywhere on websites. They’re those pages like an “About” page, which has content on it that doesn’t really change that often. Typically, a controller would have to house these actions (/about, /faq, /contact, etc.), and  the routes specified manually. Railscasts came up with an ingenious idea to create a controller which was routed to /static/*, so that semi-static pages could be created on-the-fly and modified easily. It also allows for modifications to change without committing to a repository and going through the process of deploying all over again.

For those needing a quick Rails primer before going on, here’s the quick and dirty of what you need to know to understand this:

  • Rails is a MVC-based web application framework that runs on Ruby. In short, Ruby code is written to create webpages on-the-fly.
  • Every request in Rails is first put through the routes file in config/routes.rb. This file tells Rails which Controller and Action is run.

Okay, let’s get started. Let’s create our static pages scaffold (which includes model, views, and the controller). Obviously, there are sections of this that you would want to require authentication for (editing and deleting, for example), but that’s outside the scope of this tutorial.

script/generate scaffold pages title:string permalink:string content:text;
rake db:migrate

Now we need to modify our controller slightly. More specifically, our show action. Right now, it will respond to showing an element only when the ID is displayed. We want to modify it to handle a permalink as well (/about and /contact look better than /pages/135, don’t you think?). Here is your modified show action:

def show
  if params[:permalink]
    @page = Page.find_by_permalink(params[:permalink])
    @page = Page.find(params[:id])

Before we go any further, we need to create two custom methods in our model. These will format the permalink to remove any unwanted characters for the custom route name (replacing all unacceptable characters with an underscore) and for the URL (replacing all unacceptable characters with a forward slash to allow for nesting of pages). It’s also important to note here that previous validation should be done to ensure that the permalink does not have leading or tailing non-alphanumeric characters, but I removed that for simplicity’s sake.

class Page < ActiveRecord::Base
  def route_name
    p = self.permalink.gsub(/([^A-Za-z0-9])+/, '_').downcase # Change non-alphanumeric characters to an underscore
  def uri
    self.permalink.gsub(/([^A-Za-z0-9])+/, '/').downcase # Change non-alphanumeric characters to a forward slash

At this point, we can create and modify our pages as we would regularly expect from a new controller. All of our pages are accessible via /pages/1, /pages/2 etc. We now need to make our controller act as our catch-all (so that all requests that do not match any of the other controllers get routed to our Pages controller), and we also need to provide permalink support. Finally, we will dynamically generate customized, name routes for all of our semi-static pages. All of that gets accomplished with a few short lines of code. Add the following code to the top of your config/routes.rb file, starting at line 2 (inside the ActionController::Routing::Routes.draw section):

def map.static_page_actions
  pages = Page.find(:all)
  pages.each do |page|
    self.send("static_#{page.route_name}", "#{page.uri}", :controller => "Pages", :action => "show", :permalink => page.permalink)

Finally, we need to call this method close to the bottom of the code, right before our default catch-all routes.

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

What this method does is retrieve all of the static pages in the database, then creates a customized, named route for each page, telling Rails what each URI should look like, and where to direct the request to.

Hopefully this helps some people out with their dynamic page creation. I’m pretty sure there’s a pitfall or two here, but I think it could be taken care of by doing some simple route housecleaning in the Pages CRUD controller. The perk of this option is that it allows the routes to be named, and hopefully that is of some benefit for others.

Fix Your Facebook Privacy Settings

Earlier this week, Facebook rolled out a new privacy policy which allows outside applications to view information stored on you, including your likes, connections, education, current city, and more. Needless to say, there’s a big issue with privacy here. While you want your friends to be able to see this information, you want to avoid giving it to 3rd parties as much as possible. Here’s some key tips to locking down your profile from those automated prying eyes.

1. Remove Instant Personalization [link]

Instant personalization gives your information to 3rd party websites such as, Pandora, and Yelp. Uncheck this box to prevent these sites from accessing your information.

2. Remove Unused (and sketchy) Applications [link]

Chances are you’ve added some application at some point, and although you deleted it off your profile, it probably still has access to your profile. Remove any unwanted applications by going to the link above and deleting those apps which shouldn’t be there. You might be surprised how many pages can see your information!

3. Remove Your Public Profile [link]

Data mining will largely rely on your public profile as a starting point for gathering your information. Remove that ability by going to the link above. Change your Facebook Search Results to Friends and Networks, and then Uncheck the option to have a public profile.

4. Lock Down Your Contact Information [link]

On this page, you can find all of the contact methods that are available to you. Unless you really want anybody to contact you, it is best to set almost all of these to “Friends” and nothing else. The only exceptions are the option to add you as a friend, and to send you messages. Both are worthwhile to leave open to everybody unless you happen to get spam from them.

5. Lock Down Your Profile Information [link]

Finally, there’s your actual profile information that should be locked down. Setting all of these to “Only Friends” is the best course of action.

If you haven’t done so, lock down your information soon. I can guarantee that the automated data mining services are working full-tilt in case Facebook reverts its privacy settings. It’s time to take control of your profile settings.

Backup and View Your iPhone SMS Messages For Free

Update: this does not work for iOS 4 and up, due to iTunes encrypting the backed up files. There is an easy fix for all of those with jailbroken devices, however. Stay tuned for that update!

Lately I wanted to backup some of my text messages from my iPhone 3GS onto my desktop, but couldn’t figure out how to do that. After some quick research and some poking around, I was able to figure out how to view them quickly and easily.


I am not responsible if you screw something up on your computer. It’s not my problem if something breaks. Do this at your own risk (which should be pretty low, unless you’re one of those people that shouldn’t be allowed near a computer).

What you’ll need

Let’s Get Started

In a nutshell, the SMS system on the iPhone is just a carefully hidden SQLite database. All we have to do is find the file and open it up in the SQLite Browser.

  1. First, we need to locate the file that contains the SMS messages, which will be either:
    • 3d0d7e5fb2ce288813306e4d4636395e047a3d28.mdbackup
    • 3d0d7e5fb2ce288813306e4d4636395e047a3d28.mddata

    This will be in one of the following locations:

    • Windows Vista/7: C:\Users\[Your User Name]\AppData\Roaming\Apple Computer\MobileSync\Backup\[iPhone ID]\
    • Windows XP or lower: C:\Documents and Settings\[Your User Name\Application Data\Roaming\Apple Computer\MobileSync\Backup\[iPhone ID]\
    • Mac OS X: User > Library > Application Support > MobileSync > Backup >[iPhone ID]
  2. Copy this file to a new location to protect the file in case you accidentally screw something up (your Desktop, for example).
  3. Open up the new copy of the file in SQlite Browser, then select the “Browse Data” tab. Finally, select the “message” table from the “Table:” dropdown box

And that’s all it takes! From here, you can export this as a CSV via File -> Export -> Table as CSV so you can import it into Excel, or manipulate it however else you wish. If I get the time, I’m going to write a quick tool to nicely export the messages to PDF so that they look good instead of being in a table. But, it’s a nice fix for wanting to go through them on a computer, or do fulltext searches with the content.

New Music Monday Recommendation: Professor Kliq and SXSW

I know I said I was going to write a post about backing up your iPhone SMS messages, but that’ll have to wait until later today (it’ll be out in the afternoon: I promise!).

Every once in a while, I stumble upon a great artist. I mean, really great. Yes, there are talented artists out there, many of which are mainstream in today’s society. That isn’t what makes this artist great, however. Yes, he’s talented. Very talented, as I hope you’ll find out when you listen to some of his music. What makes this artist great is that he distributes all of his music for free.

Yes. Free.

If you are even remotely interested in electronic music, you’ll love Professor Kliq (Mike Else). Making music since 1996, he has been making music for almost fifteen years, experimenting with many different forms of electronic music, taking both grassroots and modern styles into his experimentation. He has put out six albums, one EP, and one set of remixes. Do yourself a favor and give this a listen; if you appreciated electronic music half as much as I do, you’ll love this.

Secondly, if you love music, chances are you’ve heard of SXSW, or South By Southwest. SXSW Conferences & Festivals offer the unique convergence of original music, independent films, and emerging technologies. Even if you don’t attend the events, many artists give out a free MP3 of their music to be distributed by SXSW on their website. The latest batch of 2010 entries was recently put up on BitTorrent, boasting a grand total of 1083 songs, and 5.43GB of disk space across two torrents. If you want the opportunity to be exposed to some amazing new music by independent artists who are freely (and legally!) giving away their music for you to listen to, check out the link below for more information.

March 5 2010 Photography Update

So I haven’t put up any photos in a while. I’ve been on a bit of a dry spell, but I went through my archives and pulled out some that I think were better. Comments, as always, are welcome and encouraged.

Next Monday, I have an interesting post for all of you with iPhones. One thing I really like about the iPhone is that I don’t have to delete text messages. I have a quick and free way for you to back up all of your text messages to read later on. There’s a lot of paid services out there to do it, but you don’t have to pay anyone for this quick-and-easy trick!

[nggallery id=14]