Friday, March 8, 2013

Thoughts on the PS4 Specs

The news broke about Sony's next-generation console last month. As expected, it will officially be dubbed the PlayStation 4. Unlike the PS3, the new console architecture closely resembles a typical gaming PC. The system will sport an 8-core AMD Jaguar CPU along with 8 GB of GDDR5 RAM and a next-gen AMD Radeon GPU.

Sony seems to be taking a safe route with this console. The PlayStation brand has had a history of being difficult to develop for, however, Sony is clearly focused on improving the process with this console iteration. Just take a look at the press release announcing the console; the very first section is titled "Gamer Focused, Developer Inspired" and touches upon the system's "ease of development". Good move Sony!

The 8 GB of GDDR5 RAM stands out as a major boon for game developers. Consider for a moment that the PS3 only had 256 MB of RAM, imagine what developers will be able to accomplish with a 32x improvement in memory. Additionally, the GDDR5 used by the PS4 will have a memory bandwidth of 176 GB/second compared to the 25.6 GB/second of the PS3.

Sunday, February 17, 2013

Furnace Debugging

A few days ago, the blower motor on my Carrier Weathermaker 9200 furnace stopped working. Luckily, this model of furnace provides quite a bit of debugging information printed on the inside of the door. It was very straightforward to test the blower motor and confirm that it was not the source of the problem. After a bit of poking around with a multimeter, the only remaining possibility was the blower motor relay.

Resoldered Relay Trace on Control PCB
This furnace is equipped with a HK42FZ008 control board. This board holds the blower motor relay along with the control circuitry. There is a clamshell style case that snaps in place around the board; the relay is not accessible without removing this case. Once removed, the source of the issue was obvious. It appeared as if the solder around one of the legs of the relay burned up. The damage was enough to burn the PCB copper around the leg so that there was no electrical connection between the board and the relay. After testing the relay to make sure it still function properly, the solution was to expose enough copper of the trace leading up to the relay so that a large amount of solder could be added. Hopefully, the solder will be enough to handle the large motor currents that likely caused the issue in the first place.

The blower motor has been running fine ever since the repair. It is possible that an issue with the motor resulted in an unusually large amount of current draw causing the relay connection to fail. However, there is a 3 amp fuse on the motor supply line that was still intact. To my knowledge, the control board is original to the furnace which is about 20 years old. It may simply be a case of failure over time.

Tuesday, February 5, 2013

Vim For Health

Today I was watching a video on using Vim as a Python IDE when a comment about the health benefits of Vim caught my attention. Oddly enough, one of the reasons I decided to learn Vim was because of hand pain. After switching to Vim full-time, I have experienced less pain and could not imagine going back.

One additional step I took was to remap the left Ctrl key to Caps Lock. This has made a huge impact since I use the Ctrl key frequently and find the position of the key to be awkward. Hitting the normal key requires either a left hand movement or curling up the pinky finger; it's a recipe for hand cramps! The Caps Lock key being on the home row feels more natural. I use SharpKeys to handle the remapping on my Windows machines.

Sunday, December 30, 2012

Qt 4.8.4 and MinGW Quick Start

The following are instructions for installing Qt and compiling a demo application using the MinGW toolchain:
  1. Download the Qt 4.8.4 libraries installer here.
  2. Run the installer. If a warning message about the version of the w32api.h file appears ignore it and continue the installation (my install is version 3.17 and appears to work fine).
  3. By default, the installer does not add the Qt toolchain to the PATH. Instead, it provides a custom command prompt environment called the "Qt 4.8.4 Command Prompt"; launch this command prompt from the Start menu.
  4. Now we can try compiling an example; from the Qt command prompt, navigate to C:\Qt\4.8.4\demos\textedit.
  5. Execute the command qmake; this should generate a makefile.
  6. Build the example using the command make.
  7. If everything goes correctly, textedit.exe should now exist in the debug directory; launch the demo application.
That’s it! Your machine is now ready to build Qt apps using MinGw.

Saturday, December 22, 2012

Vim Zoom Hack

When writing large documents with a text editor, it is sometimes useful to zoom out and get a high-level view of the file (I believe Sublime Text has a feature called minimap that does this). This functionality can be added to gVim with a simple vimrc addition (to my knowledge, this will not work with regular Vim).
Add the zoom out command with the following: noremap <Leader>zo :set guifont=courier_new:h4<CR>

Add the zoom in command with the following: noremap <Leader>zi :set guifont=courier_new:h10<CR>

Adjust the font type and normal size as desired. Not the most elegant method but it works. Please note that split window sizes may be affected during the zooming process.

Saturday, December 1, 2012

PopPage

Recently, I had a need for a very lightweight static website generator. The idea was to have Asciidoc and Pandoc handle the markup to HTML conversions while the generator would simply apply the HTML content to a Jinja2 template. The result was PopPage, a simple command-line driven website generator. It plays nicely with native Windows batch scripting and I plan on providing a few examples in the GitHub repo shortly.

Docopt

While browsing YouTube recently, I stumbled upon a video about a great third-party Python module called Docopt. It greatly simplifies writing command line utilities; instead of writing custom logic using the standard library optparse or argparse modules, you simply write the usage docs for the utility and Docopt handles the parsing. Check out the documentation; there are some great examples that really showcase the power of this module.