Thursday, September 27, 2007
ACLMF_AT&T_APF_RGB

I love finding new music that speaks to me on a different level; meaning that it's not the same style music I've been playing or listening to in the recent past.  About a year ago, I came across Marcus Eaton, whose most recent album is rhythmically reminiscent of old Dave Matthews or Duncan Sheik.  Something I appreciate Marcus Eaton for is that he embraces technology and allows you to listen to his entire album just by visiting his site.  Sure, it's not high fidelity, but it whets the appetite.

Anyway, I was looking over this weekend's Austin City Limits Music Festival lineup, and although I came across quite a few bands that are new to me, Gotan Project really jumped out.  Maybe they remind me of my most recent trip to Paris, or maybe they're a little pop-tastic, but there's something very cool about their sound.

posted on Thursday, September 27, 2007 11:49:53 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Wednesday, September 26, 2007

Somebody forgot the admin password for our Visual Source Safe 2005 (VSS) install. I think that jackass was me.dunce

Crap.

OK, well, off to my search engine of choice..."lost vss admin password" and the first link is a forum thread that seems to be completely implausible.  Mainly because it's six years old, but also because it's impossibly simple (if you're not afraid of hex editors).

You know what?  It worked like a champ.  Here's the tip:

  1. find the um.dat file sitting in your ...\VSS\data directory
  2. back it up.  No, seriously.  If you jack this up, it's not my fault.
  3. Load up your favorite hex editor of choice  (I didn't have one on hand and didn't want anything heavyweight doing anything behind the curtain, so I found, downloaded and used frhed)
  4. Open um.dat and change bits 80 through AF** to be:
    0:80 55 55 bc 7f 41 64 6d 69 6e 00 00 00 00 00 00 00
    0:90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0:a0 00 00 00 00 90 6e 00 00 a8 01 00 00 00 00 00 00

** YMMV: If you have users with names that (alphabetically) are lower than "Admin", then your Admin password location may not start at 80.  In that case, watch for the string in your hex editor and change accordingly.  Luckily, this was not my problem.

In a nutshell, what you just did was reset the Admin password to the base install (empty) setting.  In your editor, you'll see that 85-89 spells "Admin", and if you have other users, you'll see their names further down.

Now, open up your VSS Administrator tool.  If you did it right, you will be greeted with the Administrator toolbox with all of your users' login names staring at you.  Worst case, the tool will bark at you and will ask you to run Analyze.exe.  Very worst case, you need to put your old um.dat file.

As for me, I can take off the Dunce Cap and get back to work.  As for the team in charge of VSS?  Well, I'd suggest they hit the books.

posted on Wednesday, September 26, 2007 5:56:58 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Monday, September 24, 2007

This message is for me.  If you, the reader, like this list, you're welcome to bookmark either Scott's site or mine, but I need this link here to save me the 5 minutes of my life I lose every time I go looking for the list.  Scott's a prolific writer, and digging through his "Tools" tag isn't simple.

That was a horrible sentence.

Without further adieu, Scott Hanselman's 2007 Ultimate Developer and Power Users Tool List for Windows.

posted on Monday, September 24, 2007 11:15:41 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Sunday, September 23, 2007

After setting up a few different domains to use Google Apps (specifically Google Analytics and Gmail), I've found a few best practices and an order to make the process go a bit more smoothly.

Before we get started, I'm assuming that you have a domain name set up with the registrar of your choice.  If you don't have any preference, I'd suggest you use GoDaddy.  Their UI is horrific, but their prices are fantastic.  I've on occasion had to deal with their customer service, and they've been top notch.  I'm also assuming that you have the rights and the skills to edit DNS entries and add JavaScript to a website.  The latter isn't life-or-death, but you won't be able to use Analytics.

From here down, let's call your domain "mydomain.com".

  1. Set up a new "root account" email  Even if you have an existing Gmail account, it's best to have an account dedicated to mydomain.com.  This is especially so if you have or maintain many domains, and are planning on moving them to Google Apps.  The big payoff for this is step #8 (below).  So,
    • Visit Google and sign up for a new Gmail account.
    • Hint!! Use [mydomain.com]@gmail.com as your Login Name.  This will keep things nice and tidy, and you'll never have to guess what your admin account name is.
    • Make sure to use a strong password and save it somewhere safe like VirtualKeyChain.com
  2. Sign up for Google Apps  Creating your Google Apps account gives you access to all of the fun Google toys, like Gmail, shared calendar, and online spreadsheets among other features.
    • Visit Google Apps and pick the option that best fits your organization: small, enterprise, school, or family/group
    • Sign up using the "root account" email you created above, i.e. mydomain@gmail.com
    • For the Apps account, you'll need to create an administrator account login.  I suggest something very original, like admin@mydomain.com or administrator@mydomain.com.
    • Hint!!  It's easy to forget (or not notice) this, but you and all users can reach their shared domain Google page via http://partnerpage.google.com/mydomain.com
  3. Verify your domain ownership  This step proves to Google that you are really who you say you are, and you do indeed have the rights to the domain.  Google has a good FAQ on what this is all about.  Follow the link at the top of your Google Apps dashboard that says "Verify your domain."
    • You can perform this verification by either creating an HTML file on your root website at mydomain.com, or by creating a CNAME record in your DNS entries.  Pick your poison, and follow the instructions.  Google will provide you with a unique CNAME or html page that you need to add to DNS or your website (respectively).  Hit 'Verify' once you're done.
    • The verification process may take 48 hours, especially if you use CNAME
  4. Gather all existing email account information  This is important, as midway through the next step, you're likely going to lose access to your old mail server. 
    • If there is a way to export user names and passwords, do so.  If you can't do that, at least copy all of your email names to manually generate accounts in Gmail.
    • Send out a warning to all users to make sure to download/read all mail on their server
  5. Activate Gmail  Before starting this step, make sure your client knows their email server is changing.  Once you set your DNS entries, the web will start propagating the change which will likely cause some confusion.  You'll notice that on your Google Apps dashboard, Email is the only application not activated by default.gapps-InactiveMail
    • Click on "Activate Email" and read the instructions for setting up your DNS entries for your MX records.  There should be around 7 MX records.
    • Go to your DNS manager and add those records as shown, making sure to delete any existing MX records you currently have.
      • You may not be able to set the priority exactly as Google suggests, but just get the order right, i.e. set ASPMX to the lowest (0, 1, 5, etc), then ALT1 & ALT2 to the next, and so on.
    • Click "I've completed these steps" and wait for Google to "see" your MX changes.
  6. Add Email accounts
    • Using the information you collected in step 4 above, generate new users.  
    • Per RFC requirements, make sure to add postmaster@ and abuse@ addresses.  Because Gmail automatically (and quietly) listens to those accounts, you can only create these as "lists," but that's a preferable method.  When you create them, you'll see "Google Support" is already in the distribution list
  7. Sanity Check: make sure you don't have any DNS issues  I'm a fan of the free DNS tools available on the web, my favorite being DNSStuff.com.  You can just type your domain in and get a report of all of the potential or real issues with your DNS records.  Since you just fooled with your DNS, it always helps to have a fresh check to make sure you didn't do anything "bad."
  8. Sign up for Google Analytics  Outside of Gmail, Google Analytics is definitively the crown jewel in the set of domain applications.  What's very odd about this tool however, is a) Google does not include this application in it's set of applications for domains, and b) you cannot use a non-@gmail.com domain email address to sign up for AnalyticsThis is why step #1 up above was so key.  You can now sign up for analytics using your mydomain.com@gmail.com account, and keep your stable of applications all together. 

Where are we now?  We now have a single Gmail account that serves as the home for all administrative communications on our Google Apps.  This isn't as simple as it sounds.  Although you could have used any old Gmail account, what happens if you want to give administrative rights to someone else you work with, or the client themselves?  You certainly wouldn't hand over your personal Gmail account login, but this is now an easily transferable object.

posted on Sunday, September 23, 2007 3:28:50 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Friday, September 21, 2007

I sat up in bed this morning with a brilliant (read: retire-in-three-years) idea:

"A web site that allows you to exchange your unused gift cards for cash or another card!" I shouted out loud.

Quickly, I ran to my GoDaddy account and typed as if I was racing someone around the world for the same domain name...

"GiftCardTrader.com" I shouted.
"Taken.  Drats.  How about GiftCardExchange.com?!"
Uh oh.  0 for 2.

That last one sounded like a winner, but after visiting GiftCardTrader.com and finding nothing, I thought, just hoped, "maybe this hasn't been done!"  If GiftCardExchange.com wasn't taken, I might be on to something.

Whoops.  Damn.cardavenuelogo

Well, looks like in October of 2005, someone in the Midwest had the same idea and went live with what looks to be a great service, CardAvenue.com.  If you're like me and have a stack of cards that are to stores you have little interest in (really, who needs 3 gift cards to Red Lobster?), then give this service a whirl and let me know how it goes.

After all, it was my idea.

Technorati Tags: ,
posted on Friday, September 21, 2007 12:20:52 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Wednesday, September 19, 2007
sqlloginbug

I'm running SQL 2005 client tools version 9.00.3042.00.  Every morning I connect to my dev server to run queries, analyze data, etc.  Despite checking "Remember Password," the MSSMS (horrible acronym, by the way) dialog refuses to remember the password.  This is by no means a show stopper, but it certainly is frustrating, especially if you use strong passwords.

If you're witnessing the same behavior, please tell Microsoft by voting "up" this bug, and they'll work the issue.

Technorati Tags: , ,
posted on Wednesday, September 19, 2007 10:18:45 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Tuesday, September 18, 2007

I do enjoy the NYTimes.  I also enjoy the NYTimes online site.  I don't however, enjoy having to logon, providing personal information just to get that content.  Two notes to online content creators:

  1. if you think your content is very special, then make people pay for it and you'll see just how special your content is
  2. if you think your content is kinda, sorta special, then don't make me provide you demographics just to get at your content

If you decide to lock down your content and make money, congratulations.  If you decide to collect demographics, you better make sure you test your users well, or at least check out BugMeNot.com to see if you're being gamed.

freeNYT What's interesting is that the Times seemed to have a very special set of content, and I thought they would not stray from the pay-per-view model.  Interestingly, they decided to let their content go free tonight at midnight, realizing they will make more money from online advertising than pay-per-viewers**.

The best news is that they are also opening up their historical search tools.  Hooray!  I no longer have to keep the famous no-knead bread dough recipe in my safe deposit box.

**I wonder if the Times is going to start redirecting Firefox users who employ AdBlock extensions?

[Irony note: when I went to read the details about this article, the Times asked me to log on (see image).]

posted on Tuesday, September 18, 2007 2:41:22 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Wednesday, September 12, 2007

Now that the first software-only hack for unlocking the iPhone is in the wild, I have to wonder how Apple iPhoneonVirginprivately is  handling all of this.  Publicly, they have stated that they are neutral on the idea of 3rd-party applications, which basically applies to this software-only hack.  But I pose the question: if you could stop this hack from working, would you?

Arguments for blocking the hack

The money

The people at Apple most likely gnashing their teeth are the accountants, and Peter Oppenheimer most specifically.  Rumor has it that Apple has an agreement with ATT which earns Apple $3USD/mo for each iPhone subscriber, and $11USD/mo for each new (to ATT) iPhone subscriber.  Given that Apple just recently sold it's 1 millionth iPhone, and the ATT subscription agreement is for 2 years, simple and conservative math yields a 2 year income to Apple of $3MM/mo for the next two years, or $72M USD over the next two years.

$72MM is a fair amount of money, but more than just the end number, its a recurring revenue stream which is the holy grail for sustaining any business, large or small.  iTunes, for example, doesn't make a dime on the download of the client software, but rather earns money on each and every song purchased; every day; every month; for as long as iTunes is the dominant player in the legal online music download space.  Now that is a killer application.  And that is exactly why iTunes is constantly battling the likes of Hymn and SharpMusique

User experience

The phone I use is a 3 year old handset running an unbridled version of Windows Mobile 2003.  Behind closed doors, you could certainly get Microsoft to admit that WM2003 has significant flaws, the most glaring is that it doesn't tell how much battery life is available on the main screen.  For the first six months with this phone, I would gamble taking the handset on an overnight without having a charger available, as it's a bit of a battery hog to boot.  The only available option to this problem was to purchase a 3rd party tool that displays the battery information right on the screen

The solution is elegant and provides better feedback from the phone, but it also has it's issues.  At it's root, the solution significantly alters the UI and the experience I have with the phone.  For someone like Apple, who worked so hard to create a specific experience, this might just be the reason to extinguish the hack. 

For example, one of the iPhone's five main sales points was visual voicemail.  With the hack (and service with someone other than ATT), this feature is gone.  Additionally, Steve Jobs specifically mentioned his concern to having 3rd party applications on the iPhone in a NY Times article, for fear that you load "three apps on your phone and then you go to make a call and it doesn't work anymore." 

This hack should be driving the industrial designers in Cupertino completely batty.

Arguments for leaving the hack alone

Market share

I propose that a sexy piece of hardware, such as this, or the XBox 360 will have an inherent market regardless of the functionality or price.  If it can be hacked, I would suggest that you're going to get a perceptible bump in sales directly proportional to the ease of the hack implementation.  Engadget describes how a hackable system (XBox 360) can lead to tangential sales (DVD+/-R), but I would argue that Microsoft also saw a bump in sales.  Was it a 50% bump?  Not likely, but even a single percentage bump in sales would be welcome in such a competitive marketplace.

I hacked my original XBox.  I didn't do it to copy software, but rather to run all of the great 3rd party software developed for the hack, such as MAME.  As a matter of fact, that hack was the primary reason I purchased the XBox versus another game box.

The petri dish of 3rd party applications

One of the largest complaints leading up to the launch of the iPhone was that it lacked the ability to run 3rd party applications on the handset.  Although Jobs is worried about 3rd party apps, he's not entirely against the idea either.  In my opinion, he shouldn't be.  The Palm used to be the undisputed champion of the handset market not because it was sexy, but because it had the largest number of 3rd party developers writing software for the OS.  Heck, this was exactly how Microsoft beat Apple in the personal computer business of the '80s and '90s.

Although Jobs thinks Safari is an acceptable sandbox to write all of the applications to run on the iPhone, that idea is flawed in that it inherently allows application portability, which the Palm OS applications didn't.  In other words, if Microsoft can (finally??) get a handset and OS to the market that is stable and has a web client that doesn't suck, all of those web-based apps will suddenly and transparently work on that handset as well.  Facebook?  Check.  YouTube?  Check.  NYTimes?  Check.  How about a portable iTunes client? 

What this hack (more specifically, the underpinnings of the hack) allows is the ability for the millions of creative minds to do more in months with the iPhone than the thousands of Apple developers could do in years.  Specifically, all those disenfranchised Palm OS developers can now find a new OS to start porting their previously hot-selling application to.  It's a win-win solution for Apple.

posted on Wednesday, September 12, 2007 12:30:19 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Sunday, September 09, 2007

CH Products has strangely been the lone producer of a yoke system, the most familiar interface to flight simulators for real chyoke pilots.  I've never been a fan of the cheap feel that their plastic products give off, and the layout of some of their sliders and switches have been less than convenient or realistic.

One of the oddest parts of the CH yoke is where their throttle/control stack is; right over the yoke itself.  So, say you've got your realism set fairly high, you're fighting a crosswind during a landing and you decide to go around.  You would have to reach over your yoke and shove that little tiny switch forward.  That's just not comfortable, and at best, it's just strange.

I just read that Saitek has added their own yoke to the market, and it seems to be a superior product than CH's.  saitekyoke Although CH does offer a separate throttle/control stack similar to Saitek's, it costs more.  So out of the box, it appears Saitek is offering more value for the sheer volume of products.

Although the casing is still molded plastic, the control shaft is metal (presumably aluminum) so if you're more into fighter games, you won't twist or snap the shaft off.  Saitek also has a USB hub in the yoke, so there's not a tangle of chords you have to plug/unplug to your main box (especially if you also use their rudder system, which also consumes a USB port).

I'm disappointed that they haven't released this product with a good force feedback, as that feedback is a much more realistic way to diagnose a stall or feel winds aloft.  Given that they've decided to add a timer to the center of the yoke, it appears Saitek wanted to add some realism to the product, but apparently not too much.  Certainly, if they offered feedback, they wouldn't be able to offer it at such a reasonable price, but a guy can dream, can't he?

GameAlmighty.com has some great close-up photos of the product in their review.

posted on Sunday, September 09, 2007 2:40:52 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Friday, September 07, 2007
Test

posted on Friday, September 07, 2007 10:30:18 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]

Coming from nearly 10 years of experience of setting up various flavors of Microsoft IDEs on various flavors of Microsoft OSes, I thought this would just be another walk through the park.  After reinstalling Vista 3 times, I decided that the park I was walking through looked more like the one in Escape from New York, rather than something from Georges Seurat.

I'm assuming you're working on industrial-strength, two-tier applications, requiring SQL integration.  I'm also assuming you've backed up everything that might possibly have any value to you.  This isn't a post about combing through your old stuff, so I'll leave you to your own devices to get that done.

If you're ready to take the plunge, here's the software you're going to need to have ready in order to make the process less painful:

Pre install checklist:

  • Download and upgrade the latest BIOS for your make/model computer.  [I run Dell hardware; here is their support website.]
  • (optional) Get your wireless router access passwords
  • make sure you've backed up all of your old project files, and wwwroot\ directory
  • check in any code that you might have still checked out
  • I would additionally suggest that you max out your RAM before the install.  Vista demands a ton of memory, and Visual Studio is no lightweight.  Add SQL on top of that, and your Office products and you're asking for trouble.  I'm currently running with 1GB or RAM and although it's working, the machine is anything but speedy.  Installing the RAM before installing Vista will allow you to verify that the RAM is working well prior to changing the mix.

Now, clear off a calendar day.  Seriously.  This is not a 2 hour process, but rather a 5-6 hour marathon.  The only alternative is to run this in chunks.  I did the latter on my notebook using a new HDD for Vista.  Every morning, I would drop my old XP drive in, work, then every night (for a week) I'd plop the Vista HDD in, and continue along.  It's your choice.

Installing the enterprise VS2005 development environment:

[update 10/30/07: I forgot to include the (new) step 8 of altering the IIS settings.  I'm assuming you're running a version of Vista that has IIS, and you'll be installing features from SQL (i.e. Reporting Services) that wants IIS6.0.]

  1. Breath deeply. 
  2. (optional) if you're physically connected to your LAN, disconnect your NIC.
  3. Install Vista.  Go take a walk, ride your bike, or start a vicious game of faceball.  This will take a while.
  4. Install your virus protector.
  5. Connect to the internet by physical or wireless methods; if you can't, install the NIC drivers you downloaded above
  6. Update Vista.  Continue playing faceball.
  7. Disable the User Account Control (UAC) "feature".  Until Microsoft figures out how to get the IDE installer and debugger to work nicely within the UAC, you're just going to have to work without a net.
  8. Change IIS settings to use IIS6.0 compatibility.
  9. Install SQL 2005.  You have a couple of options here.  You can either work from the 3 disks you have from above (SQL, SP2, BOL), or you can just copy all of the contents of those disks on to your local HDD.  The benefit of the latter is that you can slipstream the BOL into the SQL install, thus skipping step 10 below.  DBAZine has a great how-to on both installing SQL, and slipstreaming the BOL.
  10. Upgrade SQL 2005 to SP2
  11. (optional, see step 8) Upgrade your Books Online for SQL 2005
  12. Update Vista again, just to be sure there isn't anything new.
  13. Install Visual Studio 2005.  You're going to get some warnings that VS2005 has some known issues running under Vista.  That's ok, as we'll later patch those issues with the SP for Vista.
  14. More faceball.
  15. Install Visual Studio SP1.  Memory serves me that this took an inordinate amount of time to run, but YMMV.
  16. Install Visual Studio SP1 Update for Vista
  17. (optional) Install your source control client (e.g. Visual Source Safe)
  18. Again, check Windows Update.

Now, with the (obvious) exceptions of your productivity suite (i.e. Microsoft Office), and getting the OS tweaked, you're ready to start developing.

Good Luck!

posted on Friday, September 07, 2007 12:38:47 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]

This is a test entry.  Please come back later for a much more worthy and informative post.


Technorati Profile

posted on Friday, September 07, 2007 10:56:18 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]

I blame my jangled teeth on hours upon hours of attempting to bite two tiny Legos apart.  You know the kind I'm talking about; the 2x1 1/4 height pieces that just seemed to glue themselves together?  Anyway, I've always admired PodBrix from afar, with their kitschy dioramas of Apple scenes made of specialty one-off Legos.  I came across a similar Lego hack today, this one of Stephen Hawking.  I'm not going to point any fingers, but you tell me: which one is awesome, and which one is evil?

WozPodBrix hawkmain

 

To be fair, I don't think Brickshelf is meaning any harm; quite the contrary, their main page for the Hawking-Lego is, "Best wishes on your trip to the stars."

posted on Friday, September 07, 2007 9:35:46 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [1]
 Thursday, September 06, 2007

An app that I've been maintaining for a few years was due for an upgrade from SQL 2000 to SQL 2005.  One of the features of the app is the ability to collect surveys.  Surveys, being what they are, have many types of answers, and the original solution to this was to create answer columns of a generic type VARCHAR.  (OK, ok, don't kill me on this one.  The deal was done on this architecture decision years ago, so there's no point rehashing it now; nor can it for reasons I won't get into here.)

The client came back after the original design and wanted to start performing aggregations and reports on the answers supplied, i.e. averages, standard deviations, etc.  That was all fine and good until we started to realize that some of the responses weren't expected.  E.g., How many times do you see the doctor per year?  was answered "five", "5", "4-6", and "n/a." 

An early decision was made to drop the undecipherable responses and only count true numbers, ignoring non-numeric answers via a WHERE clause, and casting the numeric representation as a decimal, integer, or some other real numeric object; this is known as an "unsafe expression."  This solution worked like a champ for 3 years... until we migrated to SQL2005.

Here's a good example of what broke:

 1: create table dbo.aaaTestBreak ( 
 2: myColumn varchar(25) 
 3: ) 
 4: insert aaaTestBreak select '25' 
 5: insert aaaTestBreak select '-10' 
 6: insert aaaTestBreak select '14.7' 
 7: insert aaaTestBreak select 'matt birmingham' 
 8:  
 9: select 
 10: avg( cast(myColumn as real)) as AverageValue 
 11: from 
 12: aaaTestBreak 
 13: where 
 14: myColumn not like '%[a-z]%' 
 15: and myColumn > 0
 16:  
 17: drop table aaaTestBreak

In SQL 2000, the WHERE clause excluding the row 'matt birmingham' was excluded, allowing the line "myColumn > 0" and the CAST to work exactly how I expected.

SQL 2005 now will rearrange the computation in order to reduce redundant calculations and match indexes earlier in the calculation.  This is great except for the case above.  In my case, the "myColumn > 0" and CAST calls are no longer guaranteed to run in any particular order.

With a suggestion from Lorin Thwaits, I created some helper functions that will not only resolve the problem, but increase readability in my code.  You have to love those two-for-one solutions.

Here's one of the new functions called VarCharToReal:

 1: CREATE FUNCTION dbo.VarCharToReal
 2: (
 3: @VarCharValue as varchar(255)
 4: )
 5: RETURNS real
 6: AS
 7: BEGIN
 8: -- Declare the return variable here
 9: DECLARE @Result real
 10:  
 11: SELECT
 12: @Result = 
 13: CASE 
 14: WHEN @VarCharValue like '%[a-z]%' THEN NULL 
 15: WHEN @VarCharValue like '%[/\|<>,`~!@#$%^&*(){};:_+=]%' THEN NULL
 16: WHEN @VarCharValue like '%[[]%' THEN NULL 
 17: WHEN @VarCharValue like '%]%' THEN NULL 
 18: WHEN charindex('-',ltrim(@VarCharValue),0) > 1 THEN NULL 
 19: WHEN charindex('.',ltrim(rtrim(@VarCharValue)),1+charindex('.',ltrim(rtrim(@VarCharValue)))) <> 0 THEN NULL 
 20: ELSE 
 21: cast(@VarCharValue as real)
 22: END
 23:  
 24: -- Return the result of the function
 25: RETURN @Result
 26:  
 27: END

and here's what the call would look like for the top example:

 

 1: select 
 2: avg(dbo.VarCharToReal(myColumn)) as AverageValue 
 3: from 
 4: aaaTestBreak 
 5: where 
 6: dbo.VarCharToReal(myColumn) > 0

Using the function allows me to stop worrying about non-numeric values, and get to the real business of testing for validity and performing the aggregation.

posted on Thursday, September 06, 2007 3:49:05 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]

Microsoft just refreshed their beta Live Writer product which is a client based WYSIWYG editing tool for blogs.  I use DasBlog as my blogging engine, and was interested to see how Live Writer worked with it.  Well, this is my first post with the tool, and it seems to have worked swimmingly.  Live Writer processed and married with my blog without a single hiccup, and that certainly passed the mother-in-law test.

One of the issues I've had with DasBlog since switching from Blogger.NET is that you can't easily manage how hyperlinks work via the embedded WYSIWYG editor.  Live Writer works much like Blogger did, in that Live Writer 'Insert Hyperlink' you highlight text, click "Insert Hyperlink..." and there's a nice little checkbox that allows you to manage if users go to a new window (target="_blank") or get redirected from your site.

Another big plus is the ability to easily manage the position of embedded pictures (as you can see at the left).  Again, if you want to mangle with HTML, you can certainly accomplish the same goal within the site itself, but this does certainly make life much easier.

My only cons about the Live Writer product is with the installer

  • For some reason (I'm sure there's a logical reason for it, but I don't have the time to research it right now**) it needs to shut down MSN Messenger during install. 
  • MS is really trying to package other tools during this install.  Not such a fan of that; please just let me install the products I want and leave me alone, thank you very much.

Scott Hanselman created a list of other blog editors he has used, and I'll get around to checking them out at some point if this doesn't fit the bill.

[**Update: Looks like Microsoft is shoving MSN Messenger down the installer's throat.  If I weren't a Messenger user, I'd be pretty upset about new crapware magically appearing, so let's put this feature squarely in the cons column.]

posted on Thursday, September 06, 2007 10:59:29 AM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Wednesday, September 05, 2007
Today, Apple announced the 8GB iPhone would be discounted from $599USD to $399 and quietly did away with the 4GB model. 

This all seems very curious to me.  I'm not a marketer nor do I play one on TV, but the product was released 70 days ago; 68 to be exact.  A discount of $200 over 68 days equates a real depretiation of $2.941/day.  As long as I can remember, experts have been telling me that automobiles are the worst products at holding their value*, depreciating 20% within the first calendar year, but 33% in nearly two months?  Wow.

[*In my opinion, notebook computers are the worst consumer product at holding value.  I've never owned a notebook that holds any worth after 3 years.  Thus, that would be a depreciation rate of 33%/year, but I've never seen any offical studies on the matter.]

So this all leads me to wonder aloud about a few things:
  • Did the 4GB iPhone model not sell enough to continue in a lineup?
  • Did the 8GB iPhone not move fast enough at $599?
  • Most importantly, will this affect future Apple-branded product launches?

I cannot think of another Apple product that has been deeply discounted so close to its initial launch.  Although the iPod got bigger and better, its best-available-product price has always hovered around the same range, ~$300. 

I'm baffled.  Privately, I'm having a sublime moment of schadenfreude thinking of all of the jackasses that waited in line for the iPhone.  I'm also feeling very sorry for the whole lot; price protection plans on major credit cards run out 60 days after the purchase.

[Update 9/7: Gizmodo is reporting that American Express is honoring price protection for 90 days, even though it isn't "usually covered under their plan." Note to self: use AMEX in Apple store.]

posted on Wednesday, September 05, 2007 3:28:36 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]
 Tuesday, September 04, 2007
Gatineau, despite the title, is not a a former NYJets DE or his model daughter.  Nope, it's Microsoft's new analytic engine in beta.  I'm all for someone competing against Google, so I'm looking forward to giving it a whirl.  What's very interesting is that Firefox's AdBlock extension recognizes the entire signup form as an ad.  The snapshot below shows how there's no form to sign up with.  Odd.

I'm very curious how easy it will be to implement, as compared to Google Analytics.

posted on Tuesday, September 04, 2007 8:27:32 PM (US Mountain Standard Time, UTC-07:00)  #    Comments [0]