PhillipBlanton.com

"Save me, oh God, from people who have no sense of humor."
— Ludlow Porch

Just replaced the Windows 7 Bootcamp Partition with OpenSUSE 11.2

openSUSE.org

And it is the finest Linux distribution I have ever used. I used to use SUSE back in the 2001-2004 time, before Novell bought it. I liked buying the boxed version at Best Buy or CompUSA. After Novell bought it, they jacked up the price and it went away from the retailers. I'd heard good things about this upstart Ubuntu distro and that is what I started using. When OpenSUSE came out, I stuck with Ubuntu, because I liked it. Recently though I was wanting to try out a new distribution on a Windows machine I was upgrading to Linux, and the OpenSUSE with the latest KDE blew me away.

After getting my new Core i7, 27" iMac, I was thinking about setting up the Boot Camp partition with Windows 7, but thought I'd try OpenSUSE on Boot Camp. I downloaded the freshly released 11.2 in 64-bit and was hooked. I can run Windows 7 in a Fusion Virtual Machine without any trouble, so my newly carved out Boot Camp partition goes OpenSUSE. My machine is *nix to the metal. It's a good feeling.

If you are a Windows developer and are looking for a nice, clean operating system for a change (Yeah, I know Windows 7 is the bomb. I don't care), I heartily recommend upgrading to a Mac, and Boot Camping, 64-bit style with OpenSUSE Linux.

Lorem Ipsum Filler Text in Javascript.

I do page layouts for websites sometimes and I often find myself going to http://lipsum.com, in order to find satisfactory filler text. Today I needed something a little more dynamic for testing a fluid page layout. I ended up writing a javascript function that you can call from within your asp.net page in order to dynamically create some filler text. Saves me a trip to lipsum.com, and is easy to use. it's been added to my standard debug.js file. Here it is…

<script type="text/javascript">
var chunkCount = 5;
var minChunksPerPara = 3;
var chunk1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';
var chunk2 = 'Nunc vitae dignissim turpis. Nulla eleifend felis sed velit molestie non fermentum nibh pellentesque.';
var chunk3 = 'Duis egestas dapibus felis ut posuere.';
var chunk4 = 'Ut nec neque eu lacus pulvinar commodo et vel diam. Integer semper adipiscing enim eu tempus.';
var lorem = ['p', chunk1, chunk2, chunk3, chunk4];
/* The number of chunks written to the current paragraph. */
var paraChunkCount = 0;
/* Minimum number of chunks to write per paragraph. Larger number means larger paragraphs. */
function fillLorem(chunks) {
	document.write('<p>' + chunk1 + ' ');
	for (var i = 0; i < chunks; i++) {
		var chunk = lorem[Math.floor(Math.random() * chunkCount)];
		if (chunk == 'p') {
			i--; /* decrement i, or else we'll lose a printed chunk for every p. */
			if (paraChunkCount >= minChunksPerPara) {
				/* we're writing the end of a paragraph and starting a new one. */
				paraChunkCount = 0;
				document.write('</p><p>');
				paraChunkCount = 0;
			}
		}
		else {
			/* We're writing the current chunk to the current paragraph. */
			document.write(chunk + ' ');
			paraChunkCount++;
		}
	}
	document.write('</p>');
}
</script>

…and here is how to use it:

<script type="text/javascript">fillLorem(50)</script>

That will create a filler text block made up of a random selection of fifty of chunk1 through chunk4. If you want a more natural looking Lipsum (fewer repeated passages), increase the number of chunks to something greater than four, and change the chunkCount variable to one greater than the number of chunks you have (one greater, because the 'p' is a chunk and needs to be represented in chunkCount).

Enjoy!

Drinking at 9:00 AM is totally acceptable behavior in the airport.

While waiting in the Denver airport, for an 11:10 AM flight to nashville, tennessee, I am sitting at a Quizno's in terminal A, that happens to be next door to a bar. The bar seems to be loosely associated with the Quizno's, because the barmaid keeps hawking Quizno's sandwiches and salads to the bar patrons. 

Many bar patrons are drinking beer, whisky and gin drinks at 9:00 AM. This would be totally unacceptable behavior outside of an airport setting. Apparently since airport patrons have been or will be traveling. The time zone excuse makes for a drinky drinkin' good time! 

The barmaid seems to be in her late thirties, and is enjoying the heck out of offering a "hot weenie" to every person who stops by. Apparently the Quizno's here offers a "hot weenie" sandwich on the menu. She seems to be cleaning up on the tips.   I am sitting near a "25-year-old" kid who's washing down a Quizno's Turkey Sub with a bud-lite; at 9:00 AM!  It's surreal.

The barmaid was nice enough to refill the water bottle that I had to dump out before crossing into the airport's "secure zone". She even refilled it with soda water for free! ... but I did buy a caesar salad from her.

Why I won't extend my Skype In number.

I have had a Skype In number for a few years. When I first bought it, it cost me about $20 per year. I thought that was a good price for having a real number that people could use to call me on Skype. That and the ability to have Skype forward all calls to my cell phone when I wasn't at the computer, made my SkypeIn number very useful.

Last year, when I went to extend the number for another year, the cost had gone up to $35 I think. I moaned, and paid it. It was still a good value.

This year, I went to extend my Skype In number and see that it has increased again to $60 per year, plus they have changed Skype Out to a subscription-based service that they want $2.95 per month for. Skype Out used to be a service that came with Skype In for free. Now, they offer a discount for Skype In, as long as you buy a Skype Out subscription at the same time, but the price has still increased by about 100% overall in the last year.

I see a trend here. I don't want to spend any more time, dependent on a service that insists on doubling its rate every year. I like Skype and think it is may be the best VOIP service out there, but if outfits like Magic Jack can give me a phone number and unlimited VOIP service for $20 per year AND include custom hardware (to be fair they charge $40 for the first year to offset the hardware costs), then Skype's prices are gouging pure and simple.

The whole point of Skype and what makes it so attractive is the low-cost. If they continue to pursue this high-cost path then the service becomes much less compelling. EBay buying Skype has been the worst thing to happen to the service since its inception. I won't continue to support it financially until I am convinced that it is returning to its roots. 

iMac Core i7


I am a software developer. I write software that targets the Microsoft .NET framework. I have switched to a Mac for all of my development work. You can too.

About a year ago, I bought a 15" Macbook pro for my 16 year-old daughter, for her birthday. I was on a business trip to Oak RIdge, Tennessee and took her new laptop with me before i gave it to her. While on the trip, I fell in love with the operating system.

For the past eight years or so, I have done all my work on a VMWare virtual machine. I haven't installed a development environment on my host operating system in as long. Therefore, the switch to Mac was seamless. I purchased VWare Fusion (for mac), ~$70, and just copied my virtual machines over to the new mac without a hitch. VMWare Fusion ran my old PC VM's without any problems.

When my wife decided that she needed a new laptop (and asked for a cheap netbook), I purchased her a 13" Macbook Pro. She fell in love with it immediately. Later, I needed to replace my old HP laptop with a faster one. I decided on a  unibody, 15" Macbook Pro and am soooo happy I did.

Recently it came time to replace my desktop with a new machine. I had been using the same virtual machines, copying them back and forth from my old Windows desktop to my new Macbook Pro. I decided to go all the way and replace my desktop with a Mac. I had researched a little and bought a 27" base model iMac. After a little research (on the new iMac) I decided that I had made a mistake. I wanted the new Intel Core i7, 27" iMac instead.

I went back to the Apple store in Colorado Springs, where I had purchased the new iMac not a week earlier. They said that although they don't carry the Core i7 iMac, they will be happy to take this one back and not charge me any restocking fee as long as I order my new Core i7 iMac from their store.

So, tomorrow, I plan on returning this beautiful new, 27" Core 2 Duo iMac, and ordering a new 27" Quad Core i7 iMac and paying them an extra $500. It will take a week or so to receive my new, hairy-chested iMac, but it will be well worth the wait. Did you know that the new Core i7 iMac will hyper-thread eight processor cores? Did you know that the new Core i7 iMac has a powerful ATI Radeon HD 4850 graphics card with 512MB of GDDR3 memory?

Yeah. Me either. But it does.

According to independent benchmarks, the new iMac is far more powerful than the Mac Pro at about half the price. Especially considering the fact that the Mac Pro doesn't even offer a 27" monitor option.

If you are a Windows developer, I highly recommend upgrading your development machines to Mac.

Update:
The Core i7 iMacs are delayed three weeks. Apparently they are so popular that Apple hasn't all the parts they need to keep up with the demand. I ordered mine with the remote control and I see that it has shipped, but the computer itself won't ship until about the 12th of February, and I won't likely get it until the middle of the following week. Here's hoping that it all comes together a bit earlier.  On the plus side, they won't charge my credit card until the computer ships.

More Update:
I placed my order from the Apple store on Friday Jan 22. I got an email last night at 11:49 PM, that says my new iMac shipped yesterday. Only one week and five days from the time I ordered it. Apparently the three week lead time has a lot of wiggle room in it for the iMac factory. Hopefully Apple has solved the screen problems with the 27" iMac. FedEx is showing the estimated delivery date as Feb 8 (Monday), so I am very excited.

Installing Windows Server 2008 R2 on an Enlight SR-107201

I found a good deal on a new dual-xeon server from an EBay seller, about a year and a half ago. I picked up an Enlight SR-107201 1U rack mounted server chassis with the motherboard, CD-ROM Drive, mounting rails and power supply for about $150. It turned out to be not so good a deal. This machine is relatively unsupported and the Enlight website support email system goes largely un-monitored. The only sites I could find where people were talking about setting up this server were in foreign languages.

I bought two 3.4GHz Xeon processors, eight GB of RAM and four 500GB hard drives. After plugging it all together, the first problem started. It wouldn't boot. After trials and tribulations, it turns out that Xeon processors require ECC RAM. A trip back to Pricewatch.com and a few days waiting for the mail solved the problem. Now it boots.

The next problem is that the "Speedy-In!" software that came with the machine, only supports Windows 2000 and 2003. I want to install 64-bit Windows 2008. Speedy-In! is right out. The big problem though is that the 64-bit version of Windows 2008 only allows digitally signed drivers. I can't find a digitally signed driver for the RaidCore BC4000 RAID controller.

I give up and carry the machine down to the storage room. It sits for a year - a monument to my desire to save a few bucks.

About a year later, I take the machine out of the storage room and pursue getting it up and running, with renewed vigor. It takes a long time, but I finally diiscover that RaidCore was acquired by Broadcom. Broadcom then sold it (or spun it off) to Ciprico. Ciprico then went bankrupt and was acquired by Dot Hill. Dot Hill doesn't support any RaidCore products prior to October 2008; however, I stumbled upon a forum post by a guy who said that the 3.3.1 version of the RaidCore drivers on the Dot Hill site were the right drivers for the BC4000 controller.

For those of you who have the Enlight SR-107201 with the BC4000 RAID controller, the signed, 64-bit driver for Windows Server 2008 is here...

http://crc.dothill.com/article.asp?article=2262&p=2

Installing that driver, allowed Windows to recognize the controller. I then created partitions on the drives, and formatted them, but each drive showed the following error...

"Windows is unable to install to the selected location. Error: 0x80300001"

Clicking "Refresh" after formatting all drives made that error go away, and Windows installed. I am now looking at an Enlight SR-107201 server running Windows Server 2008 RC2.

Whew!

Update: 3/31/2011

This site has now been up and running on that server for over a year. It has so far been a great server and I am loving having it up!.

My Visual Studio Macros

These are the visual studio macros I use on a daily basis. They are posted here for my own edification, but you are welcome to use them too.

macros.txt (7.07 kb)

There are four macros in here that I find quite useful. They are...

 

  • CollapseSolExplorerNodes
    Collapses all top-level solution explorer nodes. You know how sometimes you open up a large project and all nodes are open? This will snap the top-level nodes closed. I attach it to the "alt + \" chord.

  • ExpandSolExplorerNodes
    Expands all top-level solution explorer nodes. This is the opposite of the one above. I don't use it very often, but it was an easy one to write so I wrote it. I assign it to the "alt + /" chord.

  • MakeRegion
    This is my favorite. Select a block of code you'd like enclosed in a region. When this code executes, a dialog pops up and asks you for the region name. It is pre-populated by the method, class or property name but you can type in whatever you want.  When you press enter, the block is enclosed in a properly named region. I assign it to the "alt + R" chord.

  • AttachToAspNET
    You are all familiar with the chord "ctrl + shift + B" for building your solution. This macro works great assigned to the chord "ctrl + shift + D". When executed, it attaches your project to an existing w3wp.exe process (the running IIS web server). This saves a ton of time as compared to F5 debugging.