« August 2006 | Main | October 2006 »

Thursday, September 28, 2006

Mac mini memory upgrade

The first phase of pimping out my Mac mini was upgrading the RAM from 512 MB to 2 GB. I followed the instructions in this excellent video from Other World Computing.

The tools I needed were a thin 1" wide putty knife (emphasis on thin), a #0 Phillips screwdriver with a magnetized head (emphasis on magnetized) and a thin, stiff plastic card. I used one of the $10 Vinny T's gift cards that seem to show up in the mail every week or three. They're thinner than a credit card and are just about right for the job. Anything that feels like a business card made out of plastic should do. A stiff business card might even work, too.

There was nothing to opening the case. The clips released easily. The whole process took less than ten minutes, following the steps outlined in the video. The airport antenna wire has zero slack, but everything went back together just fine. Needless to say, the mini really likes the extra RAM. The performance boost was impressive.

Tuesday, September 26, 2006

Windows Remote Desktop Client on Intel Macs

Microsoft had long ago released a decent Remote Desktop Client (RDC) app for PowerPC-based OS X Macs. It's still freely available on Mactopia. On the newer Intel-based Macs, RDC has to run under emulation via OS X's Rosetta. The experience, IMHO, leaves something to be desired. With any luck, Microsoft will release an Intel port of RDC one of these days.

In the mean time, it's slow enough that's it's almost unusable for doing Visual Studio work. It flickers way too much and goes nuts over-scrolling when I try to block-select. To be fair, I'm working with the most basic of the current Mac mini models: 1.66 GHz Core Duo CPU, 512 MB RAM and a 60 GB SATA drive. I know the machine is memory-bound. 512 MB is too light for any major OS these days. I have a 2 GB upgrade arriving in two days.

It would be easy to chalk up the RDC sluggishness to the RAM constraint, but after installing TSClientX, which incorporates the venerable rdesktop and TSClient packages into a seamless Mac .dmg, I had to cast a suspiscious eye on RDC. TSClientX ran like lightning, even with my measly 512 MB. The whole Aqua/X11 full-screen switching thing (see the docs) is a minor pain, but the performance is worth it.

I hesitate to really cast doubt on MS RDC until I upgrade my memory. Emulation is both CPU and memory-intensive. Still, I'd suspect that an Intel-native rdesktop app will always outrun an emulated app on an optimized machine.

One major edge enjoyed by the X11/rdesktop approach is in the use of the F keys while debugging in Visual Studio. With the MS RDC, F10/11 (corresponding to Step Over/Step Into in Visual Studio) are commandeered by OS X's Expose feature. This really hinders the debugging process. When X11 is run in full-screen mode I have the use of my critical F keys under rdesktop. On the flip side, running X11 in full-screen mode means that I have to toggle back & forth between X11 and OS X's Aqua (the normal Mac desktop) using Command-Option-A.

There's no perfect solution right now. I'll re-evaluate MS RDC once I upgrade my RAM, but my money's on TSClientX/rdesktop.

Saturday, September 23, 2006

Mac mini - the secret to silence?

A few months ago I talked about tricking out a Mac mini and creating a silent, high-performance desktop machine with a tiny form factor. I'd recently built a reasonably quiet server from the parts I had lying around from an earlier project and those from an existing Pentium 4 machine. The server lives in the basement and provides us with file sharing, HTTP, FTP, SQL and VPN services. It's got drive redundancy and is quite secure (protected by tight system security, good firewalling and Labrador Retriever).

Back to the mini. I broke down and bought one. Just the basic model w/a 1.66 GHz Core Duo CPU, 512 MB RAM and a 60 GB 5400 RPM hard drive. Since my plan had always involved chucking the CPU, memory and drive, it didn't seem to make much sense to consider any factory enhancements (Apple's prices and options leave something to be desired). I've been having a blast with it and I'm realizing just how much I missed having a Mac. Perhaps most importantly, my mini makes no detectable noise (it's approximately 18" from my left ear) and it's not warm to the touch. Although I've been very happy with my Alienware Sentia notebook for everyday work, I've been feeling that having a single point of computing failure doesn't make sense for a guy who makes his living writing code. Plus, I like to stay abreast of new technologies and Intel's Core Duo / Core 2 Duo lineup features concurrent processing, various CPU instruction extensions and virtualization support (I'll have more to say on this in the near future).

My intention is to build a dual-booting Mac/Windows box using Apple's Boot Camp. I'll use OS X for personal stuff and Windows for doing my work. The first order of business was to boost the RAM. 512 MB isn't really enough for any graphically-intensive OS these days. In addition, the mini's graphics chipset 'steals' some of the system RAM for its own use. I ordered 2 GB (2 x 1 GB) of Corsair ValueSelect PC2 5300 RAM from newegg.com. That was the easy piece of the puzzle. The remaining pieces include a larger (since I'll need separate Mac & Windows partitions) and faster hard drive and a Core 2 Duo CPU with the 4 MB L2 cache (2.0 GHz and above), in that order. I'm currently looking at several hard drives in the 100 GB - 160 GB range with spindle speeds of 5400 - 7200 RPM. 5400s offer more capacity while 7200s offer raw speed. The 7200s also throw off more heat, which concerns me in a tightly-packed fanless case. The hard drive decision may prove to be the trickiest piece. The Core Duo and Core 2 Duo CPUs have very similar thermal profiles (way to go, Intel!), so I'm not so concerned about the CPU swap. I might even hold off on it for awhile if I see the expected benefits from the RAM and hard drive upgrades. The only _real_ difference between the Core Duo and Core 2 Cuo lines is 64-bit support, which is currently not much of a motivator. The Core 2 Duo features an average 5 - 15% performance increase over the Core Duo.

My mini also has a ComboDrive, which can't burn DVDs. I'll eventually replace it with a SuperDrive (which can burn DVDs), but this isn't really on the critical path. This isn't the kind of rig that gamers would want. The Intel 950 graphics chip is fine for light 3-D work, but not for intense gaming. I'll have more to say once I get the 2 GB of RAM installed.

Wednesday, September 20, 2006

Whatever happened to tune-ups?

I recently decided that I was no longer going to pay someone to tune up my Jeep.  The cost is always pretty high and I used to do my own tune-ups in college.

My first tune-ups were done in the days of points and condensors.  In addition to changing the spark plugs (and possibly the ignition wires), the distributor cap and rotor, the air filter, PCV valve and fuel filter, you also had to swap out the points and condensor, set the point gap and adjust the ignition timing.  Sounds scary at first, but it can be mastered in a few hours.  There's no diagnosis involved.  Just swapping parts and doing a few adjustments which were well-documented in many self-service guidebooks.

When cars with electronic ignition systems became common, the points and condensor disappeared.  Not much of a change, but at least you didn't have to gap the points.

Nearly twenty years later I'm about to tune up my '01 Jeep Wrangler.  I discover that it has distributorless ignition (which I just learned about yesterday), no ignition wires and no PCV system.  It's also got a long-life fuel filter which supposedly never needs replacing.  Distributorless ignition systems don't require mechanical timing adjustments, which is a good thing, since I sold my timing light last year and it wouldn't have worked with this kind of setup anyway.  My 'tune-up' involves changing the spark plugs and replacing the air filter.  I'll also inspect the hoses, battery clamps, etc., but there's really nothing to it these days.

Everything is now microprocessor-controlled.  Makes me wonder whether I can tool up some code to pimp things up a bit.  I don't think I'll go that far, though.  Just getting ready for winter and having to buy only a fraction of the parts I expected to need makes me quite happy.  Plus, I won't miss the need for a timing light.

Since my parts list was so short, I opted for higher-end components. I got the K&N 100,000-mile, high-flow air filter and Bosch platinum plugs. The old plugs were kinda hard to get out, which means that the kind folks who did my last formal tune-up didn't use anti-sieze compound on the threads (thanks, guys!). The whole mess took me about 45 minutes and the results are impressive. While my old air filter didn't look very dirty and my old plugs didn't seem very worn, the Jeep has newfound pep.

Sunday, September 17, 2006

Another Windows Vista review??

...nah.  Just a few random thoughts and opinions.  There are plenty of well-crafted reviews of Vista RC1 out there for those who are interested.  I'm just aiming to share my initial impressions from working with it for a couple of days on my Alienware Sentia notebook (1.8 GHz Pentium M, 1 GB RAM, 60 GB 7200 RPM hard drive, Intel Extreme Graphics 2).

I make my living as a Windows developer, so it's important for me to keep an eye on what's coming down the pike.  I begin taking Microsoft development tools seriously when they reach the beta 2 stage.  I take thier operating systems seriously when they reach release candidate 1.  I base this rule of thumb on my own historical experiences with these product lines.  Prior to reaching these milestones, Microsoft products have often been too unstable for critical evaluation.  Once this threshold is achieved it's time to begin beating on them.

I was fully expecting to not like Vista.  Everything that I cared about as a developer was either removed from Vista or targeted for retrofitting to XP.  WinFS, the object-oriented file system (actually a layer atop NTFS), was dropped early on.  WinFX, which has since been recast as .Net 3.0, Windows Presentation Foundation, XAML, Windows Communication Foundation, etc., will be just as much a part of Windows XP as it is of Vista.  I was concerned about Vista's use of a 3-D drawing surface for the desktop, since that can cost serious CPU cycles if your graphics card isn't up to snuff.  Not being a gamer, my graphics capabilities often lag behind the cutting edge.

Vista was a pleasure to install.  It requires very little information and completes quickly.  It found all my hardware and even set up my oddball 1280x800 resolution screen properly.  Apparently my GPU wasn't up to Aero's requirements, so I didn't get to play with Vista's cool transparency features or its 3-D task switcher.  That's OK, 'cause I turn off all the graphical glitz anyway.  I need my machines to compile code quickly more than I need pizazz.  I expected that disabling the glitz in Vista would be more difficult that it is in XP, but I found it was easier.  Similarly, I assumed that Vista would wrap the traditional tools and familiar configuration dialogs in many layers of 'friendliness'.  To my delight I discovered that Vista's 'grandma-friendly' UI was only a thin facade sitting atop the tools I've worked with for so long.

I like the Mac/Linux-style confirmation dialogs which stand guard over system-level changes and I especially like having to just click 'OK' rather than having to enter a root password.  After all, I _am_ logged in as a member of the Administrators group.  Jumping through more hoops might be appropriate for server administration, but it's a pain in the butt when you just want to change something on your single-user desktop machine.

I still don't know if I really care that much about Vista.  I need to better understand how well Microsoft is talking to me with this release.  I don't need help with multimedia or computer security and those features seem to be Vista's primary focus.  I suspect that it will be a lesser feature or three that drives me to Vista once it's officially out.  That and my need to be running the latest and greatest.  :-)

Cleaning up the ride

My '01 Jeep Wrangler has never seen the inside of a garage.  I was an apartment dweller for the first three years of its life.  During that time the only washing/polishing it saw was from automated car washes or coin-operated do-it-yourself wash bays.  I've always tried to keep it fairly clean, but continuous exposure to the weather and suboptimal cleaning and protection was beginning to take its toll.  Or at least I thought it was.

My wife just bought a Mini Cooper S and has immediately become a car detailing junkie.  Since graduating from bachelor apartment life to married suburban house life, the Jeep has received much better care.  By this I mean hand washings every month or so during the warmer months and two coats of polish per year.  Still, three years' worth of not-so-great care remained easy to spot.

Ali wants to keep her Mini looking showroom-new and paying attention to details right from the start is the way to go.  I was curious about how good a thorough going-over could make my Jeep look.  Ali did some research and learned that Zaino products are popular among show car enthusiasts and have a reputation for delivering a deep, wet-looking gloss and for providing excellent protection.  We ordered an array of thier products (which are only available from thier site) and gave them a try.

The first step was to wash the Jeep with a light Dawn (the regular bule stuff) dishwashing detergent solution to remove the residual polish. Then I washed with Zaino's Z-7, followed up with a Z-18 Clay Bar treatment to remove surface crud and then gave it another wash with the Z-7.  At this point, we're down to the factory clear coat.  The surface is about as clean as it's going to get.

Next I used Z-5 to fill in the lighter scratches in the clear coat.  It did a decent job with the minor abrasions, but next time I'll use something a little more heavy-duty to fill in the deeper scratches which have accumulated over the years.

Two coats of Z-2 polish came next, followed by a coat of Z-6 for deeper gloss.  My alloy wheels really came back to life through the use of Eagle One cleaner, a bottle brush and a lot of elbow grease.  I used a product called Invisible Glass to clean my windows and they really look like they're not there.  I also opted to pimp my tires out with some off-the-shelf 'wet-look' spray.  After all that, the Jeep really looked great.  The whole procedure took about five hours and my arms were pretty burned out by then (wax-on, wax-off).

Needless to say, Ali's Mini looks fabulous.  Being brand new, it's pretty easy to keep it looking that way.  Plus, she gets the garage.  :-) Now we wash the vehicles every week or two.  I'll Z-2 at least once more before the snow flies and that should be good until spring.  I'm blown away by how great the Jeep looks.  It's certainly not showroom-new, but from 20' it almost looks like it is.  Its deep gloss is stunning and it really stands out in a parking lot.  Next spring I'll Clay Bar again, a little more thoroughly, Z-5 two or three times, followed something designed to fill in deeper scratches and then reapply Z-2 and Z-6.

Sunday, September 03, 2006

Why two cores are important

Intel's Core Duo and Core 2 Duo CPU lines are all the rage these days.  These chips are extremely powerful, miserly in thier use of power and can execute two unique operations at the same time.  Both product lines feature two discrete CPUs, complete with level 1 and 2 caches, on a single die.  This differs markedly from the Pentium 4's hyperthreading, which provided simultaneous execution pathways only under certain conditions.  In addition, the P4 line consumed so much power that systems built around it were often difficult to cool.

The Core 2 Duo, which was just recently released, improves upon the original Core Duo design by including support for 64-bit instructions along with a modest overall performance increase - without any additional power draw (or price!).  Few of us currently have use for a 64-bit architecture, so for all practical purposes the two CPUs are pretty much the same.

Many (most?) common applications are single-threaded, meaning that they perform only one task at a time.  Others use multithreading sparingly, meaning that they perform most tasks one at a time.  Microsoft Word, for example, performs print operations as background threads so as to not tie up the user interface in the process.  Applications which are single-threaded or lightly multi-threaded will not directly benefit from multi-core CPUs.  Users who do more than one thing at a time with thier computers will, however, benefit significantly.

An operating system typically has many applications running simultaneously.  These include those apps instantiated by the user as well as processes needed by the OS itself.  One of the OS' jobs is to schedule the running of all processes on the available hardware.  When one CPU is available and a resource-hungry application is running, interactive OS operations can become sluggish.  I've often found that even hyperthreading could all but eliminate this phenomenon.  I'd expect a dual core setup to be even better.

A real-world scenario which illustrates the problem is the compression of large files.  I frequently need to compress database snapshot files which can be up to 30GB in size.  Compression can reduce this footprint ten-fold, or more, which is very useful for archival storage or for when the files must be transferred over the Internet.  The compression process can take awhile, which makes using my (single core) Pentium M notebook a bit frustrating.  On my old hyperthreaded P4 desktop I never even noticed it.  Burning recordable media is another example.  I make far more coasters on my single core machine than I ever did on my hyperthreaded box when I try to burn something at high speed and do work at the same time.

Even the average computer user can benefit from having two cores.  In this age of malware and spam, many of us run real-time antivirus, anti-spyware, spam-filtering, ad-blocking and popup-blocking software.  These tools consume very real resources that could be put to better use.  A dual core machine will help offload some of that work and maximize productivity.