A word on SSDs & HDDs

New PCs shouldn’t come with single HDDs, period. The now incremental cost of SSDs is so small that it’s really not a big deal at all. I understand that ‘lots of people wouldn’t even realize the difference’ and blah blah blah, but does your mom *really* need a 3TB drive (running at 5400 rpm, no less) for stalking you on facebook & sending emails like ‘FW:FW:FW:FW:FW:FW: OBAMACARE DEATH PANELS – WHAT THE LIBERAL MEDIA DOESN’T WANT YOU TO KNOW?’

I digress. I started a new gig today. Pretty excited, lots of cool stuff to come – so I got in, they had ordered me a shiny new Dell Latitude ‘desktop replacement’ type of laptop. Meaty, meaty stuff – i7-3740QM, 16GB memory, 1080p screen – the works.

Then I noticed it took *literally forever* to boot up. Which left me perplexed – I’ve not used a PC without an SSD for a few years so I suppose I was taken aback at how long it takes platters to spin up. So I got home today and cloned the drive over to a Crucial M4 I had going spare around the house. The difference is…intense. I was shocked at just how dramatic the change was – I’ll let the numbers speak for themselves:

7200 RPM 500GB platter drive (Dell claims this is a hybrid, I don’t believe it)

  • Sequential read:
    • IO Size: 65536
    • Average throughput: 83.725 MB/s
  • Random Read:
    • IO Size: 16384
    • Average throughput: 1.62 MB/s

Pretty dismal, huh?

Crucial m4 128GB

  • Sequential read:
    • IO Size: 65536
    • Average throughput: 503.837 MB/s
  • Random read:
    • IO Size: 16834
    • Average throughput: 372.29 MB/s

That’s 6x faster sequential and 232x faster random…and these aren’t even ‘great’ numbers by today’s SSD standards. This m4 is probably a year-old+. The M500s are even faster.

Which brings me to my point. Why?

Why would Dell sell something marketed as a ‘desktop replacement’ or ‘workstation’ and give it such an abysmal drive? Starting price on the i7 E6530 is $1588 ($1111 with Dell’s ‘instant savings’ – whatever the hell that means) – and upgrading to a 128GB SSD is $84…so Dell, why not just throw it in? Why not make the SSD the default and let those with intense storage needs ‘splurge’ and buy a $50 500GB or 1TB HDD? Is abysmal performance at first run the kind of impression you want to leave on someone who just dropped upwards of $1500 on a ‘workstation?’ I could certainly understand this on the $249 Best Buy Black Friday special, but on a workstation? It completely undermines all of the other *amazing* internals.

Media Center Fails DCA due to HDCP Failure

My desktop at home has an ATI Radeon 6770. I recently moved into a new office at home & decided TV would be best, since it’s a bit larger now, so I wanted to setup my desktop to use the HDHomeRun Prime that runs the TV downstairs. This requires running the infamous ‘Digital Cable Advisor’ in Media Center.

I thought, no sweat – 16GB memory, i7, Radeon 6770, no big deal. The PC downstairs is an old laptop with a *decent* mobile Radeon, so surely this would run it properly…surely.

And of course, the DCA failed, stating my display or driver wasn’t HDCP compliant. After about seven driver version installs/removals, I started looking at my video card wondering why on earth this was happening – it’s pretty simple. Hyper-V. It adds some extra display drivers that MCE doesn’t play well with.

Disable Hyper-V, reboot & DCA will pass. You can re-enable Hyper-V after that & all works in harmony.

A new sharepoint blog

I’m doing a lot of SharePoint & Office 365 work now, so I started a new blog.

You’ll find it here: http://wtfsharepoint.com

Naked Domains & CNAMEs

If you’ve recently started building on the cloud, you’ll come across a problem pretty quickly – making the root of your domain point to your cloud-hosted service. It’s a real problem, something that has a variety of solutions. But just what is the problem?

Naked Domains…Sounds Dirty, but really just a PITA

So what is a naked domain, anyway? It’s your domain with nothing in front of it – i.e., johndandison.com. Who types www anymore? Not many people. If you want your app to get traction, it’s gotta hit on the root domain, with nothing in front of it – i.e., the naked domain. A great example of a broken site in action is belkcredit.com – the naked domain does nothing – you must type www.belkcredit.com to get to their site.

So where does DNS come into play…?

Take a look at the DNS records of a typical website – you’ll find a few records (or a lot, but that doesn’t really matter) – mxtoolbox.com is a great tool for doing this. It’s geared towards helping you setup DNS & assorted accoutrement, but it is great for checking out DNS.

You’ll find an A record at the root, or zone apex – A records translate names to IPs, so if there’s an A record, that’s the IP someone’s browser is going to try and connect with to get your site. Simple enough, right? CNAMEs also work for translating names to other names, essentially an alias.

And this is a problem because…?

Now you’ve got your shiny new cloud service & you’ve been given a DNS name to connect to it. But ‘johns-awesome-blog.cloudapp.net’ or ‘xx-xx-xx-xx.ec2.amazon.net’ isn’t very sexy. In fact, it’s not even useful. How many times have you heard someone say ‘I saw this stellar video on dfw06s07-in-f0.1e100.net (one of youtube’s many CDN/webfarm addresses)! Pull it up so we can watch it!’

So sure, let’s put in an A record of ‘NewAwesomeSite.com,’ pointing to the IP of my EC2 or Azure web instance…

And then it hits. Most cloud service public IPs are only valid for the life of the deployment – so, say you reboot the server…or you publish a new build to staging…now your IP has changed, but your users aren’t getting to your app anymore, until your DNS record has been updated & the TTL has elapsed. Some TTLs can get quite long…you don’t want to be inoperable for hours, do you? Long story short – don’t use the deployment IP for your cloud service.

Ok, well I’ve got CNAMEs, so I can just alias my root, right?

No. It’s not a part of DNS (although word is the DNS group is considering adding it into the spec) – if a record is at the root like that, it’s gotta be an A record. Some providers even let you put them in, but, alas, they just don’t work.

Ok, so all of this babbling…how do I fix it?

You have a few options. Some are more elegant than others, but they all get you where you need to be.

Amazon EC2 Elastic IPs

Amazon has something called Elastic IPs – you can request one (or many) and assign them to your deployments. You don’t get charged for them unless they go unassigned. I’ve used this technique for over a year over at chattorney.com.

Forwarding

A less-than-elegant-but-ok solution is essentially using another web server with a static IP to do 301 or 302 redirects to your service – this is what we’re doing with moredeets.com right now. I have cheap hosting for this blog, so I just added a DNS CNAME for www to point to the cloud service & use IIS to do a 301 from moredeets.com to www.moredeets.com. Not pretty, since it relies on external hosting, but it works in a pinch.

Services

With three cloud services running at Amazon (and a myriad of different services running in virtual machines), it has become rapidly apparent that I’m not the only one working around this problem. I’ve found a couple of places that can handle it, but they have their own tradeoffs – DNS Azure, for instance, requires that you use them as your nameserver. Great for a one-off app, but not so great when you’re running DNS for a business that needs lots of subdomains. CloudFlare also claims to handle this through their EC2 service, but it is more of a website service & I don’t need all of that.

Rolling my own. Time to get naked!

I decided it’s time I roll my own. I just need something simple – ping and/or get the IP of the current Azure deployment (unfortunately, the Azure Management services don’t give this data yet, but the Dns namespace in System.Net works well enough), then update a DNS A record with that IP. I’ve moved my new employer on to Amazon’s Route 53 for DNS, so right now that’s the focus – using the Amazon AWS SDK to update the Route 53 A record for your naked domain. Still a WIP, but more to come soon.

I really like the Panthers. No, I’m serious.

WP_000015 (1)

Back in March I bought a new car. Per the norm, I decided to get a Panthers license plate – NC offers ‘em for a cheap annual fee & I’m a huge fan, so why not?

Most of the others I’d purchased were just regular – not with customized text…in fact, I typically think most people with customized text plates are ridiculous – most of them you can’t even understand, because someone decided to take a phrase and turn it into eight consonants that may or may not phonetically sound like the original phrase. It’s like playing telephone with Helen Keller. But I digress.

This time I decided to go with something a little better. A good friend (who, unfortunately, moved to Seattle) was both a huge car nut & a bit geeky – we both enjoyed internet culture, and, seeing as LOL as a standard NC plate was unavailable, I elected a combination of two awesome things: internet + the Panthers.

I was quite proud of myself. Then it arrived. And I realized…

People will immediately think I’m LOLing at the Panthers. This would not be a problem if they were doing wonderfully. Unfortunately, over the past few years they’ve been doing the opposite…so I would go run errands, terrified that someone would carve ‘HA HA HA’ in the paint, or leave me a nasty note.

I get a lot of people taking pictures of it – in traffic, in parking lots, all over. The traffic ones really make me nervous, as I’m not sure if people are snapping a picture because they are entertained or because they’d like to see my head on a stake…

So to set the record straight – I’m not LOLing at the Panthers. I am, in fact, a huge fan – I just didn’t quite think it through when I got the plate. But I’ve decided to keep it. I think the only plate I’d want to replace it with would be ‘PDLONRT’ – yes, that jumble of letters is supposed to be ‘PEDAL ON RIGHT’ – but since it’d only be useful on the front of the car (to signal the minivan hell I drive through every morning to get to work), I’ve elected to keep the LOL.