Archive for hardware

Ode to the iPhone & iPod Touch

I know I’m nearly two years late to the game, but I finally went out an purchased an iPod Touch, and I have a feeling an iPhone will be mine in the near future. I’ve been blown away by how far ahead of it’s time this thing is. More importantly, it amazing how much of an application ecosystem has developed in such a short time.

Kyocera 6035

Back in the day, I bought one of the first Smartphone’s to be sold in the United States, the Kyocera 6035. It was basically a Palm device glued to a phone. It was pretty cool since I could use the same device to play Monopoly and make phone calls. After getting rid of this phone, it would be years before I would get another so called “Smartphone”.

Years later, I started getting into the Windows Mobile world (Pocket PC at the time). The Windows mobile platform is compelling because as a developer I can write applications using the .NET Compact Framework without a huge learning curve. It’s also one of the few platforms that works/worked great with Microsoft Exchange. My current carrier of choice, Sprint, also tends to have a great suite of Windows Mobile phones. I also like the fact that any hackable feature is just a registry edit away.

HTC Touch Diamond

My current phone is an HTC Touch Diamond. On paper, this is currently one of the most amazing phones ever created. It’s one of the smallest Smartphone’s you can buy, yet it has a fast processor, VGA screen, excellent GPS, light sensor, stylus sensor, accelerometers, resistive & capacitive features, etc. However, in reality, this phone drives me crazy. Opera is a decent browser except that it takes too long to open, and doesn’t render as fast as it should on 3g. The push email features are pretty good except that the UI is a joke. Scrolling is not as smooth as it should be. Integration between apps is non-existent. The resistive screen isn’t optimal for finger use. The experience is just laughable. The list goes on. I assumed these were all unavoidable simply due to the fact that it’s a mobile platform.

Recently, I decided to try the iPod touch. It’s my understanding that it’s somewhat of a gateway drug to the iPhone. Essentially, it’s the same thing but without a phone, a real GPS, and a microphone.

After using this device for a while, I am consistently surprised how streamlined and painless it is to use. Nearly every function works without even thinking about it. Every motion is perfectly smooth. No configuration is too difficult.

At first I was skeptical about the main interface, which consists of one or more screens full of icons. There is really no organization, no folders. The beauty of this design is in its simplicity. You’re never more than one press away from the information you’re looking for. Weather, click. Headlines, click. Calendar, click. Email, click. Touch Flo 3d on my HTC phone is essentially lipstick on a pig. It looks cool, and kind of works well if you’re completely sober.

Now, let’s get to the real reason that the iPhone is an unstoppable force. They have an insane application ecosystem. Most of the applications are not worth the bytes they’re made of. However, a few of them are so simple, so elegant, and so efficient that they change the platform. For example, if I want to see what movies are in the theater, I can use the movie app. If I want TV listings, I use the TV app. If I want to find local events or lookup a number, I use the yellow pages app.

iPhone applications usually have similar functionality to what you get in your browser on your desktop or laptop computer, but they’re typically designed to do one thing, and do it well. If you were to download an application to your computer specifically for getting movie times, I’m sure the experience would be similar, but on the desktop platform it’s not quite worth it. I find myself using my iPod touch instead of my laptop to get a lot of quick information. I’ve also been opened up to a world of information that I normally would not have seen. For example, I have an application that shows me the local events in the area. I could have Googled for the same information, but this puts it all just a press away.

If you are someone that hasn’t given the iPhone platform a try, do yourself a favor and go spend $230 on the iPod Touch. Then, visit the app store and download some freebies. If you’re waiting for Windows Mobile or Android to catch up and build up the same application ecosystem, don’t hold your breath.

I’ve been so excited by this platform that I ordered myself a Mac Mini that should hopefully be showing up tomorrow :-). Stay tuned as I talk about the experience of a c# developer writing an iPhone app in Objective-C!

Vista x64 Frequent Stuttering – Dell M6400

I recently got a new laptop at work (the details of which I’m saving for another day). It’s a Dell Precision M6400. With a fresh install of Vista Enterprise x64, the whole machine would stutter/pause/stall every few seconds. It wasn’t just the mouse, it was the display, the sound, everything. It was unbearably annoying, and I eventually fixed it.

When the stuttering started, I frantically searched Google for other people having the same issue. Apparently it’s a frequent issue, and is often caused by NVidia drivers. In other cases, it’s caused by hard drive issues. It was even occurring on all the other laptops we ordered with the same configuration.

I spent hours trying to fix it, including the following:

  • Updated BIOS
  • Switched the hard drives to performance mode
  • Enabled VT extensions (needed to do this anyway)
  • Forced all of the graphics options in the NVidia control panel to off.
  • Uninstalled NVidia drivers, reinstalled them. I also hacked some of the official NVidia drivers and installed them instead of using the ones that Dell supplies.
  • Turned off superfetch
  • Turned on readyboost and used a USB thumb drive
  • Full scandisk checking for bad sectors
  • Defrag
  • Disabled touchpad and eraser head
  • Turned off just about every service, and killed almost every process
  • Installed chipset drivers (SM Bus)

I had just about given up, when a colleague suggested a few things, including installing new SATA drivers for my RAID array (I’m running RAID 0). I grabbed the latest copy from Dell, instead of using the ones that came on the original CD. Sure enough, that fixed it.

Storage Manager Drivers (Middle One)

The irony is that I usually set up my own machines (I’m pretty specific about how I like it set up), but this time I let our IT guy set it up to save me some time. When I set up machines, I’m obsessive about getting the latest drivers from the web, because I’ve been through this type of problem before. From now on, I’m going back to setting up my own machines.

I get the feeling this will help someone out there!

Laptop Hard drive, 5400 or 7200RPM for dev?

My laptop came factory equipped with a 250GB 5400RPM hard drive. Overall, the performance has been pretty good. One of the only areas that has been less than spectacular was virtual machine performance. I placed an order for a 320GB 7200RPM laptop drive. Was it faster? Read on to find out!

Hard Drive

Old drive: Seagate Momentus 5400.4 - 250GB 5400RPM 8MB Cache SATA
New Drive: Hitachi Travelstar 7K320 - 320GB 7200RPM 16MB Cache SATA

Before I upgraded to the bigger, faster drive, I took a few quick benchmarks. It booted in 57 seconds from pressing power to being able to type my password. I was able to build SharpDevelop in 29 seconds, and my XP performance rating was 5.6.

The upgrade process was fairly painless, but I have a fairly good background in computer hardware and imaging (as do many of my readers I’m sure). I created a disk image with Acronis TrueImage (equivalent to Norton Ghost), and wrote that image to the new drive. Since I had about 70 extra gigabytes on the new drive, I allocated that as a second partition. I figured that I would use that extra partition for my virtual machines (typically a good practice).

I was back up and running in less than 2 hours.

Unfortunately, I was fairly disappointed. I was expecting a reasonable boost in performance but was let down. My HD performance rating went from 5.6 to 5.7, but my other benchmarks actually got worse. I’m not convinced that the HD actually made the performance worse, but some part of the upgrade process must have had an ill effect, or my benchmarking process just wasn’t very scientific.

Vista Performance Index

Stat summary (obviously unscientific):

5400RPM 7200RPM
SharpDevelop Build 29 seconds 30 seconds
Cold boot 57 seconds 74 seconds
Experience Index 5.6 5.7

Conclusion

If I had it all to do over again, I wouldn’t buy the faster drive. It just wasn’t worth $100 (it’s $80 after rebate now). If my drive was slower, older, or smaller, it may have been worth it. Fortunately, the new drive is just as quiet as the old one, and I’ve noticed no power usage difference. At the very least, it gave me an opportunity to dedicate a partition to my virtual machines.

Cloud Computing (and Azure) - Right for your site?

Everyone seems to be getting excited lately about the prospect of cloud computing. Just like many others, I get excited by the idea that I wouldn’t have to worry about adding servers to scale up. Theoretically, a guy (or girl) could make the next YouTube, in his basement, for free. However, there is one huge advantage that most people ignore, and that’s the fact that’s also perfect for a small scale website.

iStock_000004135866XSmall

I’ve tried or considered many different ways of hosting my content:

  • Shared hosting - Cheaply host your sites, but be at the mercy of their IT guy messing with your computer and rebooting it for automatic updates. Also, in my experience, the performance is terrible if your traffic spikes. They typically have hundreds of users on the same server as you, and you all get to compete for performance.
  • Dedicated hosting - This is what I use now, because it ensures that I get the full performance of a machine. The disadvantage is that I have a single point of failure, and I have to manage the machine myself.
  • Hosting from home - Yes, people actually do this. If you have a high enough upload speed it shouldn’t be too bad. The problem is that your connection typically won’t be able to handle traffic spikes. You’ll also potentially be a victim of power or Internet outages, where professional hosts would have redundant systems in place (in theory).

Now, let’s talk about cloud computing. That magical cloud that many don’t understand. There are two potentially viable cloud computing methods available right now:

  • Cloud virtual machines - Amazon’s EC2 solution is probably the most popular in this category. Basically, you can create, start, and stop virtual machines remotely. You just pay an hourly rate while the computer is running. You can even upgrade and downgrade the hardware as needed. The advantage is that you can treat the computer like a physical machine and configure and use it however you like. The disadvantage is that maintaining individual machines can be time consuming and is not necessarily part of your core business.
  • Cloud application server - Instead of creating virtual machines, a cloud application server runs your application directly. You no longer worry about the constraints of a physical machine. You application could potentially be run on dozens or hundreds of servers simultaneously. The major advantage is that there is little to no maintenance, because that is the job of the provider.

I see the cloud application server as having some of the greatest advantages. You’re free to write your application with a level of abstraction, which allows you to solve the problems you really want to solve.

One of the most well known cloud application services is the Google App Engine, which currently supports Python applications. Microsoft joined the game recently with Azure for ASP.NET.

As I mentioned, not only do application servers let your applications scale up, they let you pay only for what you use. This is great for the small to medium website’s that are stuck with bad shared hosting or difficult-to-manage dedicated hosting. The fact is that most sites get a few hundred visitors daily or less. If you start to think about how often a page is actually requested, you’ll realize that it’s not very much. Even with 500 users requesting 5 pages each in a 12 hour period can easily be handled with a very low end server from years ago.

The reason that application servers are so much more efficient than shared hosting is because they’re built from the ground up to spread the load around. This results in higher utilization, but more headroom for any single application. Shared hosting providers can move users between servers, but it’s usually a manual, and often difficult process. You’re bound to a specific physical machine (unless it’s VPS hosting), and if it goes down, so does your site.

Cloud computing is also a great way to handle traffic spikes such as the Digg effect. Let’s say that you only have 500 visitors today, but might get 10, 100, or 1000 times more in a single day. It happened to FaceStat. They went from 10,000 page views per day to almost a million because of a story on the front page of Yahoo. They had to scramble to add application servers and develop a scaling strategy immediately.

Conclusion - Cloud Application Server Benefits

Cloud computing has tremendous benefits. You no longer have to worry about scaling the underlying hardware, you simply pay as you go, and you can handle traffic spikes with ease. Once cloud computing becomes mainstream and absolutely reliable, there will be few reasons to not use it.

What do you do with your old hardware?

I’ve been on a mission to scale down all of the old tech hardware I have laying around in my house. Here is a partial list of what I had/have:

3 working mid-grade desktop computers, 3 Netgear routers, 17" CRT Monitor, Vonage VOIP adapter, Sunrocket VOIP SIP adapter, Subwoofer, 10 network cards, Modems, PCI + AGP video cards, 802.11g PCMCIA card, 5 hard drives ranging from 20gb to 160gb, 3 256MB USB flash drives, 3 memory cards, Old computer books, 2 UPS’s

So here is my question. What do you do with stuff like this?

In round 1, I threw away anything I knew was completely worthless. Frayed wires, parallel to TI-86 cables, those useless USB to PS/2 mouse adapters.

In round 2, I sold some of the small, valuable items on eBay. This is a great place to sell anything of value. You’ll have a large audience, and you’ll get what it’s worth. You’ll also have to deal with packing and shipping it.

In round 3, I gathered up almost all of the rest, and sold it on Craigslist. Which, by the way, is a great way to get rid of a lot of stuff very quickly. I took a picture of a whole pile, described some of the more valuable items, and sold it in a couple of days.

In round 4, I’m not sure what to do! I have lots of small things left like the USB flash drives, case fans, hard drives, etc. Back to Craigslist?

What is the best way to get rid of this stuff without filling up the landfills? I know there is someone out there that is about to drop $20 on a network card, when I have 10 here that he could have for free. I just don’t want to spend the time and money to pack it up and ship it somewhere.

Some suggestions I’ve received:

  • Donate to schools - I’m not sure if or what they’re interested in. I’ll have to contact them.
  • Donate to Goodwill - I called them and they don’t want it!

Any thoughts? This is surely a common problem amongst techies?