Thirsty Developer Archive

Several years ago, I help create and co-host a podcast called The Thirsty Developer with my good friend and fellow Microsoft Evangelist, Dave Bost.  Creating, producing and editing the show was one of the most enjoyable experiences I have had around work.  I hesitate to call it work, because we did it mainly after hours and had so much fun doing it.thirstydeveloper

I left the show when I changed roles at Microsoft and a couple of other folks had co-hosting duties after me: Clark Sell and Adam Hoffman.  Of course you never really “leave” something that you helped create, you only stop doing it as often.

As some of you may know, Dave passed away a couple of years ago.  I don’t speak much of it on social media, but I miss him terribly even to this day.  I worked with Dave’s wife to transfer the domain name over to me.  In doing so we had some issues with the content.  The site was “off the net” for a few months.

I did manage to find a copy of the site that dated back to when I was still running things.  I have the RSS feed for the majority of the show notes (I think I have ~90 of the 104 total episodes).  However, I only have 69 of the audio files.

I am hoping that I can find more of the audio files and locate the rest of the show notes as well.  If anyone stumbles across any of the old shows, please let me know.

I hope that keeping the old episodes out there will allow the many great guests developers and other friends of the show a chance to go back and listen to their favorite episodes.

Azure Web Apps Red Exclamation / Orphaned Deployment Slots

Quick Summary: if you are seeing the red exclamation on your web apps in the old Azure portal (http://manage.windowsazure.com) run the PowerShell Get-AzureWebsite command to see if you have deployment slots that are orphaned when you deleted the parent Web App.  Delete the orphans and the red exclamation (and related issues) will be resolved.

Over the last couple of days I had been dealing with a couple of issues with my Azure Web Apps (formerly known as Azure Web Sites).  When I would access the old portal, I would not be able to manage the Web Apps and I would see a visual cue:

AzureRed!
The was accompanied by the text: The portal cannot load the management data for this resource type.  The new Azure Portal (http://portal.azure.com) did not have any issues accessing the Web Apps.  There are a couple occurrences of this documented on stackoverflow.com, but none of those really panned out.

I also had some strange behavior with a couple of other things that I was doing in the portal.  I had created a new App Service Plan and migrated all my sites over to it, but I could not delete the old App Service plan through the new portal and the old portal would not let me access the Web Apps or the App Service plans.  When I looked at the App Service Plan that I was trying to delete in the new portal it showed as having 0 sites:

AppServicePlans

You can see from the screen shot that the name of the App Service Plan was “Prod-Sites”.  I thought this might have actually been part of the problem.  The new portal was updated to prohibit any special character other than the underscore “_” some time after I had created “Prod-Sites”.

The other odd behavior I saw was the inability to add a custom domain to a deployment slot on one of the websites.  I was not able to pin down whether that was due to the underlying issue or was just a problem with the new portal (remember that the old portal was not working at the time).  Truth be told the deployment slots was what I really should have been working on, the App Service Plan clean up was just some Yak Shaving along the way.

I spent a couple hours over the course of 3 days trying different things in order to resolve the issue(s).  At one point I deleted all of the websites on the account, save one that would have been really hard to  reconfigure (the other 3 sites deploy from Visual Studio Online with a couple clicks).  I was about to delete the last web site when I remembered something my first mentor told me:

“Never trust a GUI when you have the command line” -CJS

I ran the Get-AzureWebsite command in PowerShell and saw the problem:

Get-AzureWebSite

There were 2 deployment slots listed that belonged to a Web App that I had deleted about a week ago (before all the Yak Shaving started).  If you are not familiar with the slots or how they are shown in PowerShell, they are the ones identified with the (test) and (staging) above.  The deployment slots are a “feature” of the Web App and are not normally visible in the old or the new portal, unless you open the Web App or look at the settings.  It stands to reason that an “orphaned” deployment slot from a Web App would create some havoc with the GUI.

I used the Remove-AzureWebSite PowerShell command with the -Slot option to delete the two slots and that quickly cleared up all of my problems.  I don’t know the root cause of the orphaned deployment slots, but as a precaution I will be deleting the Deployment Slots explicitly before I delete the Web App they are associated with to avoid this problem in the future.

I hope this helps…..

Note: A quick tip of the cap goes to Wahid Shalaly who identified this problem a couple weeks before I found it: http://blog.thinkinuous.com/2015/03/problem-solved-orphan-azure-website-deployment-slot.html. I only found his blog post after I solved my problem (and changed the keywords I was searching for).

My Windows Phone Start Screen

Nokia has been running a series of blog posts where they have some well-known people Share their Windows Phone start screen and talk about the apps they use most and why they have customized their device that way.  This is not a new meme, I have seen folks share their iPhone home screens as well.  Like Paul Thurrot, I don’t think Nokia will ask me to be a guest contributor on their site, so I thought I would share my start screen and talk about some of the choices I have made:

Windows Phone Screen

Note: I stitched 2 screen shots together to create the seamless look in the screenshot above.  My phone is not this long and skinny.  In reality, the screen ends on about 2/3rds of the way down the photos hub and you can’t see the bottom apps without scrolling.

A little drab

One of my co-workers asked me what my color scheme was on my phone and before I could answer they blurted out “dull and boring!”  The “steel” accent color on the dark background looks a little drab, and when you combine that with the fact that I am carrying a matte black Nokia Lumia 920, it can come across as the Orwellian.  I have always tended towards the gray colors myself and I do try and brighten up the screen with the tulip photos (that is a picture that I took a couple years ago – not a stock one).  Being able to pick the color scheme that matches your personality (or even your mood) is something I like about the Windows Phone.  In a crazy bright mood?  How about Magenta on a light background (I am sure this would look awesome on a Cyan Phone):

wp_ss_20130711_0004

Not a lot of apps, eh?

I don’t have a ton of apps on my phone, I can easily list all the applications I have installed: Facebook, Twitter, Netflix, Bing Translator and every edition of Angry Birds.  Some people might say (in a snarky voice): “That is because Windows Phone does not have any apps!”  Windows Phone is missing some notable apps that are on Android and iOS (Instagram, Path, Vine and Flipboard are probably the three most talked about), but there are plenty of good and some great apps that are on Windows Phone for a total of about 160,000+.  But I don’t think I would be downloading any more apps than the ones that I have.  There are two reasons and one is very notable about Windows Phone:

  • Many of the things that you would use an app for are built into Windows Phone.  It has great integration with my calendar, e-mail, tasks and contact databases.  This is true both for Microsoft Services (like Exchange and outlook.com), but is also true for services by Google and Yahoo! as well.
  • I would rather use the web than an app.  Probably the number one thing I do on my phone is e-mail.  Tied for second is either listening to podcasts or browsing the web (but a distant second).  I would rather look at a website than download an app any day of the week.  Nothing upsets me more than a company that wants me to download an app to do something mundane like get a map of their building or a list of their store hours.  The mobile (responsive) web continues to get better and better and (I hope) we will soon be in a position that the mobile web will be a first class citizen and we won’t have to use apps except for the few things that require them (like shooting birds at rock and stones structures.

My favorite thing about Windows Phone?

Live Tiles – hands down.  It is hard to show in a screen shot, but the Music+Videos app on the lower right of the start screen is animated with Neko Case’s picture and Name because her song was playing when I took the picture.  Also the contacts that I have pinned to the start screen (my wife Jodie and my sons) will show their latest status from social media that I have wired up (Twitter and Facebook).

I would be interested to see how other people customize their screen (not just Windows Phone – iOS and Android as well).  It really should reflect your personality.

PS: UFOs of Wisconsin – don’t ask.

Windows 8 UEFI Secure Boot on clean install

My buddy Michael Steineke @msteineke pinged me yesterday with a problem that he was having doing a clean install of Windows 8 Enterprise on his new ThinkPad Helix.  He only got a few seconds into the explanation of the problem he was having when I told him the problem was his USB was not formatted as FAT32 and if he re-formatted the USB it would solve his problem.  I know this because I had a similar experience last months when I was doing a clean install on my ThinkPad Carbon Touch.  Mike and I both agreed that we should document the problem and solution in case someone else runs into it.

In order to enable secure boot on a Windows 8 Machine, you must have UEFI and Secure Boot enabled when you install and if you use USB Media to install, it must be formatted as FAT32.  Many USB drives are formatted as NTFS and many utilities that create bootable media for install will format the drives as NTFS (like the Windows 7 USB Utility).  Windows 8 can install from this media (if you disable secure boot), but that is a feature you want.  Instructions on how to create a FAT32 bootable drive are included at the bottom of this post.

UEFI Secure Boot is a great thing….

Unified Extensible Firmware Interface (UEFI) is the modern firmware for operating systems to control the underlying hardware.  You can think of it as the new version of the BIOS.  UEFI is not a Windows-only technology, but a standard that is used by most operating systems.  One of the new benefits is the ability to have a digitally signed and verified boot path (or secure boot).  This all but eliminates attack vectors that load early in the boot processes (think root kits).  With secure boot, you know that the entire code path has been digitally signed and that it has not been changed or tampered with.

A few notes

  • Even though both Mike and I were running Lenovo Ultrabooks, this is not limited to those devices.  This applies equally to all non-legacy devices (Dell, ASUS, ACER, HP, etc.)
  • If you are loading from a DVD, you should not run into this problem
  • I have run into one device, the Samsung Build PC,  that in addition to needing to be FAT32 the USB needed to be less than 4GB in order to boot
  • This has been documented elsewhere on the internet (see this the Windows IT Pro Article), but it seems like you can’t find it when you need it 🙂

Create a Fat32 Bootable USB

Be very careful when using the following commands, as selecting the wrong device could lead to data loss or other heart break.  When in doubt, ask someone to double check your assumptions.

Launch an elevated command prompt and run the diskpart command:

C:>diskpart

Select your USB device by listing the devices on your computer and then selecting it by number.  Make sure that you select the correct device as future commands will wipe the device:

DISKPART>list disk

DISKPART>select disk <disk#>

Remove all current partitions from the device and create a new primary partition.  This command will use all available space on the USB drive:

DISKPART>clean

DISKPART>create partition primary

Select the Partition and make it active:

DISKPART>select partition 1

DISKPART>active

Format the partition and assign a drive letter:

DISKPART>format quick fs=fat32

DISKPART>assign

Exit the DISKPART Utility:

DISKPART>exit

Now you can copy the contents of the Windows 8 ISO onto the drive via Explorer, XCOPY or your favorite utility that copies files.  Be sure to enable secure boot and boot from the USB drive to install.

Hope this helps…..

Measuring your software development team (an easy test)

4474421855_4b20643258[2]

Tape_measure by pat00139 used under Creative Commons

I went to the Milwaukee ALT.NET (@AltDotNetMke) group’s Holiday hangout a couple weeks ago.  It was a fun night of drinking a couple beers, talking shop and some non-shop items.  One of the things that we talked about was something that is very near and dear to my heart: how fast can you get a new member of your team up to speed and productive and what the answer says about how mature your development processes are.  I heard a pretty surprising response from a couple of the folks at the Holiday Hang out when I asked the question.

You may have heard of the Software Engineering Institute at Carnegie Mellon University and their tools for measuring Information Technology / Software Development teams.  You almost certainly have heard of the Joel Test that pokes a little fun at the SEI and offers a simple 12 question “test” to rate the quality of your software development team.  I have quoted the Joel test to numerous developers and architects over the years myself.  I have a bit of a twist on both of these approaches it is a relatively simple test:

  1. Bring a brand new developer onto your team.  Needs to be a developer with an average level of experience, but a “rock star” developer or a novice will not skew the results too far either way.
  2. Give him/her a laptop that has access to the domain and has the basic developer tools installed (Visual Studio as an example).  But the laptop cannot have been setup by anyone on your team.
  3. Give him/her basic instructions for accessing your environment (source control repository, tools you use, development servers and databases). 
  4. Start timing to see how long it takes for the new developer to be able to get the latest version of your source code and successfully have it running on their machine.

The new developer is allowed to ask follow-up questions (and you should take notes on every question that they ask), but you are not allowed to actually do anything for them.  Each time that you have to look at their machine in order to answer a question, you should add an hour to the clock time.  Once the developer has the code running, take note of that time.  I like to call this the “zero to configured” metric.  If you are like most development teams, this number probably makes you want to weep uncontrollably.  Most development teams probably think this should take them a “few minutes”, but the actual number is probably located between several hours and never with most answers hovering in the neighborhood of a couple of days.  Seriously – try this test and see for yourself.

I wish I had actual data on this metric to share, but I only have anecdotal information.  But if you work in software, you probably have a lot of anecdotal stories of your own.  Here are a couple tidbits:

  • The project that could not build or debug unless the files were located in C:projectserin
  • The search for the .h file that you only have the .obj for
  • The class library that only worked from C:Program Files (did you know that is not a universal in Windows, it can be installed on other drives and I know that older versions of Italian installed used C:Programi)
  • The application whose production build only worked on one developer’s laptop (and the 4 hours of terror as chkdsk and several other tools were run trying to get it passed a boot error)
  • The application that required you to be running as a local administrator (*)
  • Brining on an extra developer to help finish a release on time only to have him leave 2 weeks later never having written a line of code (a shining example of the Mythical Man Month)
  • The unit tests that work perfectly until you deployed them on the server and then could only run if you spent an hour in regedit32

I was not personally involved in every one of these and I have tried to keep the details vague to protect the guilty (unless you name is Erin – sorry dude).

Does a high “zero to configured” metric mean you are a bad group of developers?  No.  It could be that you are a good group of developers and you don’t have a lot of new people on boarding.  We tend to work on problems that we encounter more frequently and if you don’t bring on new developer, you probably won’t address it.   It does mean that you will probably have a painful time when you get a new machine.

Does a low “zero to configured” metric mean you are an awesome group of developers?  No.  It could be you have a very simple application or spend too much time worrying about on-boarding new developers.  I will say that there is a high correlation between a good development team and a low “zero to configured” metric.

That was why I was so impressed by the answer that one of the guys gave when I asked the question at the alt.Net hangout.  He said that he rolled onto a project a few weeks before and was up and running in about 2 hours.  The impressive part was that the 2 hours included installing the local version of SQL Server.  Kudos to that team!

* Seriously – quit running as an administrator.  You will write better code, spend less time debugging issues and be much more secure as a result.

Will LinkedIn kill the resume? (please!)

If you work in technology and have any kind of a public presence (Twitter, Personal Blog or just a profile on LinkedIn) you will eventually and probably regularly get an e-mail that goes something like this:

I came across your resume and I think you are the perfect match for <some position> at my client.  We have been searching for someone with experience in <some technology> and you seem to be a great fit.  I would like to schedule some time with you……

I chuckle every time I get one of these because in my case I can tell you that it is a bold faced lie.  My resume is not public in any way, shape or form and it is horribly out of date.  And by “horribly out of date” I mean like 10 years out of date: It lists me being a certified systems engineer on Windows NT 4 and it is in Times New Roman.  I have taken to responding to these e-mail inquiries by telling the person just that:

Hey thanks for reaching out to me.  I am sure that your client is an awesome place to work.  You might want to take a more careful look at my resume, because you will find that I am not qualified in any way shape or form to use the technology that your customer is seeking.

My response is a little snarky and I should be nicer.  I have only gotten a couple of responses from this: One asking me for my resume and one admitting that they pulled the information from LinkedIn.  Evidentially if you pay for the LinkedIn premium membership, you get a lot more tools to search for people.  Unlike some people, I am totally cool with the LinkedIn model.  They provide me a free service and as a result they collect revenue from the few people who want extra utility from the service.  As long as I can have a gateway between myself and the recruiter I am fine with that model.  The gateway being they have to contact me via LinkedIn.

I keep my information on LinkedIn reasonably current, much more so than that 10+ year old resume.  So what I have been wondering is if it is possible to do away with the resume all together?  I am not in the job market, but if I was would a recruiter or human resources department accept a hyperlink to a LinkedIn profile rather than a Word Document or PDF that contains the same information?  I would think that since LinkedIn has a consistent data structure, they would actually prefer that.

In the meantime, I hope I don’t have to update my resume any time soon….

Thinking about job titles

I have been thinking about job titles lately.  It started when someone asked me if I knew anyone who would be a good fit for a job posting for a SharePoint Architect.  I proceeded to go on a rant about how no good architect would ever want to take a job that pigeon holed them into a single technology.  I don’t think I ever answered the question and probably frustrated the person who asked me.

About a week later, someone asked me what my ideal job title would be.  I admitted that I had not put a lot of thought into the question, however a job title that I always thought was cool was “Director of Disruptive Technologies”.  The title was held by Max Mancini at eBay.  I had read about him and his job in the book Web 2.0 Heroes by Brad Jones (Disclaimer: Brad is a friend of mine, but I am not writing this to “pimp” his book).  What I liked about it was that it described very well what he was doing: working with disruptive technologies.  However it did not specify what the disruptive technologies were.  If you have worked in technology long enough, you know there will always be disruptive technologies.

“Good” Job Title

So what goes into a “good” job title?  I think there are a few attributes that make a job title “good”: Descriptive, Universal and Flexible.   Descriptive means that people can read the title and have a (general) idea about what you do.  We know that developer in a job title means that person writes code, as an example.  Universal means that you are using terms that apply to most organizations.  I like to use the “rank” as an example: A manager is someone who has people reporting to them, a President is higher than a Vice President.  Flexible means that your job title can adapt over time.  The flexibility is the part that I really like to focus on when I evaluate a job title.  A job title of Cisco Pix Engineer, while descriptive and somewhat universal is not really that flexible.  A more flexible title might be Firewall Engineer or even better Network Security Engineer.

Kill all the job titles?

Another way to address the “problem” of having a good job title is to do away with them all together.  I always loved how the early research oriented technology firms like Xerox Parc and Bell Labs gave most of their employees the same title: Member of the Technical Staff.  Another way to address it and that is to let your employees pick their job titles.  At Microsoft we are not allowed to change are job titles in the official directory, which is driven by Human Resources, but we can pick what we want to put on our cards:

image

I am getting ready to order new business cards with the new logo.  I will update you on whether or not I have the guys to order it with this title, or if I do the predictable thing and use my official title.

Parting thought

One of my early mentors advised me to never get hung up on job titles or rank.  He said that in the military, when it “hits the fan” nobody turns to the highest ranking officer, they always turn to the guy that can get them out of the situation (usually a grizzled old Sargent).  He also said the most important thing on your business card is not your job title, it is how the person should get a hold of you (e-mail, phone number, twitter handle, etc.).

Book-a-week FAIL! (sorta)

4474421855_4b20643258[2]

Books by shutterhacks used under Creative Commons

At the beginning of the year, I set a resolution of reading a book a week (or 52 total).  If you have been following along with my list it will come as no surprise to you that I am not going to get to 52 books before the end of the year; I am currently at 20 books, including the one I finished last night, with a month to go.  I could give a lot of excuses and even a few valid reasons for not making this aggressive goal, but I can sum them all up with “I have been really busy”.  I do want to “finish strong” and get a few more books read.  It would be nice to get to 24 (two per month) or even better to get to 26 (one every two weeks).  But I will take it one book at a time.

I was going to call this a total failure, until I looked over the list of books that I have read.  I had a good balance with fiction (5 titles) and non-fiction (15 titles).  Read a great biography of Lou Gehrig, read a couple of books on Google (I enjoyed “I am feeling lucky” much better than “In the Plex”) and finally got my hands on a book I have been wanting to read for years “Showstopper!”.  I think reading 20+ books is more than most people do in a year, so I think that is a positive.  The only real FAIL! is that I did not get around to blogging enough about the books as I read them.  

CD/DVD drive device missing error

I was installing a fresh copy of Windows 7 on a new Samsung Series 9 laptop this week and as I got a strange error during the install:

A required CD/DVD drive device driver is missing. If you have a driver floppy disk, CD, DVD, or USB flash drive, please insert it now. Note: If the Windows installation media is in the CD/DVD drive, you can safely remove it for this step.

The error baffled me, because the Samsung Series 9 does not have a CD or DVD drive and I was installing Windows 7 from a bootable USB flash drive (which was already inserted).  I spent quite a bit of time troubleshooting the error and went down several bad paths.  When you search you find several forums that reference this error, mostly from the Windows 7 Beta or Release Candidate builds.  The collective conventional wisdom from the forums that I landed on said to try one (or more) of the following fixes:

  • Get another copy of the .iso (root cause: bad download)
  • Burn the iso to the DVD at a slower speed (root cause: bad burn)
  • Change the BIOS boot order (root cause: unknown)
  • Update the driver for the Drive (root cause: upgrade advisor not finding hardware)
  • Switch from SATA to AHCI in the BIOS (root cause: Windows 7 installer not supporting SATA – huh?)

One or more of the above might fix the error for you, but none of these fixed my problem and most of them did not apply even apply to my situation.  What was causing the problem for me was I had the USB device plugged into the USB 3.0 port for the machine.  I moved the USB flash drive to the USB 2.0 port (on the other side of the laptop) and the install worked just fine. 

My speculation is that the boot loader for the installer worked fine, but the installer itself had issues with the USB 3.0 device.  Windows 7 itself has no issues with the USB 3.0 port; it seems to be limited to the installer environment.  I am also fairly certain that you would see the same problem on other machines with a USB 3.0 drive- so more than just the Samsung Series Nine.

Note:  This post seems a little off topic for this site; I usually don’t talk about troubleshooting issues and the like.  However I wanted to post this in the hopes that if someone else runs into this issue, they might find this solution mixed in with all the older forum posts.  Hope this helps….