Yes, you can judge a book it’s cover

A job rejection has gone viral over the last few days.  A college senior has complained that she was turned down for a job because of her attire.  Elizabeth Bentivegna is graduating from Oberlin College later this year with a degree in Computer Science.  She had contacted by a recruiter to apply for a position at OnShift.

By Bentivegna’s account, the interview went well and she expected to receive a job offer from OnShift. Instead the recruiter told her that she was rejected because she didn’t look “put together and professional” enough. Bentivegna had worn a black t-shirt, red skirt, black tights, and a black cardigan.

Bentivegna then vented about not getting the job on her Facebook account. Her opinion is that OnShift had made a mistake and she was being held to a different standard because she is female. She has a friend that works for Buzzfeed, Alanna Bennett, who tweeted a picture of Bentivegna’s Facebook post with the text “So my friend got rejected from a programming job today because she was wearing too much makeup.”

So my friend got rejected from a programming job today because she was wearing too much makeup.
So my friend got rejected from a programming job today because she was wearing too much makeup.


First, the recruiter never said anything about the makeup, just a comment about not looking professional enough.  There was probably more to this than just the clothing, but that was the information that the recruiter shared with Bentivegna.  While the developers may wear t-shirts and jeans at work, I doubt that’s what they wore to to their interview.

Let’s take a look at prospective employer.  OnShift offers workforce management software targeted for the health care industry. Their customers are retirement communities, nursing homes, assisted living facilities, home health agencies. They are doing line of business (LOB) apps for a conservative market.  if Bentivegna had done a little research, she would have looked at the OnShift Management Team page.

A third of the management team is female.  Each person on the team has a corporate head shot.  And they all dressed in professional business attire.  That should have been Bentivegna’s styling cue for her interview.

They say that you can’t judge a  book by it’s cover.  Wrong, you do judge a book by it’s cover.  That’s why they have covers in the first place.  For a job interview, you are selling your self. You want to use every tool at your disposal and that includes your attire.

If you are in the video game industry, then it’s appropriate or even expected to show up in jeans and t-shirt.  Just about everywhere else, it’s professional business attire.  It doesn’t matter if you like those rules or not, it’s how the game works.

Without knowing any of the details, but having been on both sides of the interview, I have a pretty good guess of what could of happened.  Bentivegna may have had a good technical interview.  But perhaps she didn’t click with the development or management teams on a personal level.  That is actually much more important that the technical skills.  A company can train a new developer on their tool stack, that’s easy.  Bu they can’t fix a personality that doesn’t mesh with the team.

It’s also possible that that company had interviewed multiple candidates and found someone that was a better fit.  Which is actually the official statement from OnShift.

Interviewing is a learned skill and Bentivegna was new at this.  In all fairness to Elizabeth Bentivegna, the recruiter should have prepared her for the interview and that includes discussing her choice of clothing.  When you make a mistake, you try to learn from that mistake and move on.  She was lucky to get some feedback for not getting the job.  Usually, you just hear that the employer went with another candidate.  Afterwards, the recruiter did suggest that Bentivegna purchase clothes for future interviews.

Michael K. McIntyre’s article on has an interesting quote from Bentivegna:

“I don’t see how my outfit could have been judged unprofessional, but I also think it’s silly that someone who is perfectly qualified and skilled and wants the job still can’t do it based on some arbitrary criteria,” she said. “Everyone has a different definition of what it means to look professional. I don’t think a male person would have had the same problem getting a job as I would.”

Elizabeth Bentivegna completely missed the lesson.  What a 21 year senior viewed as appropriate is not going to be the same as what the person with 30+ years of experience who interviewed her would viewed as appropriate.

You dress up for interviews.  You want the employer to know that you are taking the interview seriously.  It shows that you have attention to detail and that you are showing respect to people conducting the interview process.  Once you are on-board, you can follow the accepted dress code for the office, but until then you dress for success.

Publicly slamming the prospective employer was a dumb move. There is an expression that I heard once from a HR manager, “Sour Grapes equals Bad Apples”.    Her friend Bennett didn’t help her by sharing it with the world.  Bentivegna has demonstrated that she does not yet have the skills to handle rejection.  When she applies elsewhere, this incident is going to be the first thing that an employer is going to see.  That’s unfortunate, on paper she seems like a bright and capable candidate for an entry level web developer position.

Trying to get Apple Testflight to send new build notifications

I used TestFlight 18 months ago when I finished our first iOS app.  It worked great.  It was a stand alone service that allowed you to beta test your apps before submitting them to the Apple App Store.

Then Apple bought the Testflight company and it works not so great.

The latest hitch is that it doesn’t generate update notices to testers when a new build is uploaded to iTunes Connect.  As near as I can tell, you have edit the “What to Test” field in the app record in iTunes Connect and then save those changes.

Once you do that, the email invitations go right out.  This is not documented by Apple.  I did it mentioned on Stack Overflow,  If this is a required field for the workflow, it should be documented as such.  It’s just common sense.

Apple violated some basic rules when they acquired Testflight:

  • If it’s not broken, don’t fix it.
  • Don’t make me think.

Registration is now open for the 2015 Microsoft MVP Virtual Conference.

2015 Microsoft MVP Virtual Conference
2015 Microsoft MVP Virtual Conference

I’ll presenting at the 2015 Microsoft MVP Virtual Conference.  The MVP V-Conf is a new 2-day event presented by MVPs from the Americas’ region.  It’s a virtual conference and it’s free.

The theme of the inaugural conference is “The Power of Community” where we MVPs will share our technical skills with our technical community.  Our sessions will be interactive, you will get to ask questions or offer comments via a moderated live chat.

There will IT Pro, Developer, and Consumer tracks, with sessions available in Spanish (Latin America MVPs) and Portuguese (Brazilian MVPs).  The keynot address will be delivered by Steven Guggenheimer,  Corporate Vice President of the Developer eXperience (DX) group at Microsoft.

Registration is open now and please visit the V-Conf site for more information and registration information.

The first US MVP Open Days was a success

Last week I attended the first US MVP Open Days.  It was held at the Microsoft Technology Center in Malvern, PA.  It was a 2+ day conference for US Microsoft MVPs.  Other countries have been holding their own MVP Days, it was time for us to have one.

People finding their seats, just before the start of the opening session

It was two days of networking and attending presentations.  Some presentations were by MVPs, the other were by Microsoft staff.  A few of the topics were NDA, but many of the topics were about improving the experience of being an MVP and how to best leverage Microsoft resources.

Doug Ware with a session on Office365

I came to this session knowing almost no one, I left with many new friends and colleagues.   I’ve now attended two of the Microsoft MVP Summits, where you are with MVPs from all over the world.   The Summit is great, but you end up spending most of your time with MVPs that are in your same group.

This is was nice and cozy and I was able to interact with other MVPs from different groups.  People who I usually do not get to interact with.  That was very nice, worth the trip down to PA just for that experience.

We got to celebrate Steven Murawski’s (Powershell MVP) in suitable style:

You either get it or you don’t.

In addition to full group sessions, we broke up into smaller focus groups.  I attended one on running user groups and code camps that was led by Bill Wolff.  Bill runs the very successful Philly .NET user group and he shared his tips on how to run a user group and the growing pains his group went through with camp camps

Bill Wolff showing us the secret magic for getting big sponsors

I was in Windows Insiders session that was run by Jeremiah Marble (Windows Marketing) and Tyler Ahn,   We talked about what could help the MVPs could participate in the Windows 10 experience.

The Windows Insiders planning sessions.  Random arm courtesy of Ken Tucker.

We also had time to do some group photos…

MVPs and Staff

We ended the conference with plans to continue the conversations and to make plans for future Open Days.  I want to thank Rowina Branch, Esther Lee, and Fernanda Saraiva, their staff, and the MVPs that helped put this conference together.

As an added bonus, Brian Prince gave a sticker to fix my Macbook…

It’s a ninja cat riding a firebreathing unicorn. This should be the new logo for Microsoft. Click on the image to order one.

A little late to the Band Party

My Band with some decoration for the upcoming US MVP Open Days

My Microsoft Band arrived last week. I had first tried one out last November at a Microsoft Store and it felt like a handcuff. It turned out I was indeed holding it wrong. I put it on with the face on the top of my wrist, but it’s really designed so that the face of the band is on the inside of the wrist. When I wear as an “innie”, I don’t really notice that I’m wearing anything.

At work, I check the number of steps that it was recorded.  It’s a motivational tool for me to get up and walk around the office.  I hate running, but I’m looking forward to riding my bike in warmer weather and having it record my rides.

The other thing that I am looking forward to doing is to write some apps that will work with the Band.  Microsoft has released a preview version of an SDK that will let you write apps on Windows Phone, Android, and even iOS that can read the sensors on the Band and send notifications back to the band.  Xamarin has already released a Xamarin port of that SDK for iOS and Android.

Right now the SDK is limited to apps that running in the foreground, it does not yet support accessing the Band from a background app process.  That will initially limit the types of 3rd party apps that can be written for the Band.  But I’m confident that will be addressed in a later release.

I was able to use a custom background image and send it to the Band with the app Pimp My Band.  I’ll be attending the first US MVP Open Days later this week and it makes for a nice touch to show the MVP logo.

The coolest tool that you are not yet using (Xamarin edition)

Have you played with Xamarin Sketches yet?  Sketches was announced at Evolve back in October and is available in Xamarin Studio on OS X.  It gives you a real time coding environment and lets you interactively try code out without having to go through a code/compile/deploy cycle.

I was asked by a co-worker on how to display a glyph in a button on iOS to indicate that a popup list was available.  I wanted to display an upside down caret, a triangle if you will, as part of the caption to a button.   Basically, I wanted the text to look more or less like this

Happy ▼

And thanks to Unicode, we have that symbol available to us.  Before telling my colleague to just slap a character to the end of the button caption, I wanted to test for myself that it would display correctly on an iPhone.

Normally, I would just create a new singleview iPhone project and slap a label on it.  I would then fire up the simulator and see how it looked.   That way works, but today I decided to take a shortcut and try Xamarin Sketches.

Xamarin Sketches lets you type in code and it compiles and runs it as you type.  It provides an isolated sandbox to try out some code and basically fool around before you put that code into a project.

It’s similar to Xcode Playground, except being Xamarin, it does cross-platform.  You can interactively test code for iOS and Android,   You can’t do everything in Sketch, you can’t create classes or use anonymous types.

For what I needed to try, Sketches would work just fine.  I created a new Sketch and set the platform to iOS and the toolkit to UIKit.  It can do Xamarin.Forms, but in this case I wanted to test for Xamarin.iOS code.

I created a string variable with some text and included the unicode escape sequence “\u25BE”.  That is code for something called “BLACK DOWN-POINTING TRIANGLE”.  I then created a UILabel and set the text to my string variable.  That was enough to generate the proof of concept that I needed:

Xamarin Sketches (click the picture to embiggen it)

This code was extremely simple, but it was all I needed to verify that the unicode sequence would work correctly.  I was able to do that and help out a co-worker without getting out of the cod that I was working on.

You can do more complicated things in Sketches.  During the Evolve Keynote, Miguel de Icaza wrote a simple little iOS game in Sketches:

And then did a simple Xamarin.Forms apps: 

This only works with Xamarin Studio on OS X, it’s not available in Xamrin Studio for Windows or with the Visual Studio Plugin.  That’s not really a roadblock for me, if you are doing any iOS work, you pretty much have to have access to a Mac.  If you are doing iOS work with Xamarin, you are missing out on a handy tool if you are not using Sketches.

Taking care of a pet peeve with the Xamarin Build Host

I write code in Windows with Visual Studio, but parts of it compile and debug on OS X.  I’m doing mobile (Android, iOS, and Windows) development with Xamarin and the iOS part needs to be compiled on OS X.  Xamarin provides an app called the Xamarin Build Host that runs on OS X and allows for their tools in Visual Studio to communicate with the tools on OS X.

The hardest part with getting that to work is having the Xamarin plugin in Visual Studio make the connection to the Xamarin Build Host.  Xamarin uses Apple’s Bonjour services to identify remote devices on the network.  It works great when it works.  When it doesn’t work, you can specify the IP address of the OS X box and the plugin will connect to Build Host in that way.

As someone wiser than me once said, “Xamarin needs to display the local IP address(es) on the Xamarin Build Host window “. Bonjour doesn’t work on the corporate network at work.  Between my Windows PC being on an Ethernet connection and my Macbook Pro on Wi-Fi, there are enough disturbances in the Space-Time Continuum to keep Bonjour from reliably letting Visual Studio from seeing my copy of the Xamarin Build Host.  Connecting via IP address is the way I have to set the connection.  Which works, until the IP address changes.

My IP address can change depending on the favor of the Wi-Fi gods.  I wanted a quick way of checking the current IP address of my Macbook.  One of my co-workers suggested using GeekTool.  GeekTool is a utility that can display all sorts of useful information via scripts.

I found a nice IP address script in the github account of Jacob Salmela.  I made some changes to have the color match my current desktop, but it’s mostly based on Jacob’s code.  I have it set that GeekTool will run the script every 10 minutes.  It will display the IP information on the desktop like this:

The SSID is displayed, along with the Wi-Fi and Ethernet IP addresses.  Very handy and gives me the same kind of information that I can get on Windows with the wonderful BGInfo tool from SysInternals.

Getting a new dev machine set up, OS X Style

So I’m on my second Macbook. I use a Macbook Pro for iOS development and I was due for a new one.  I went from a Late 2011 MBP to a late 2014 MBP.  Except now I have a Retina display and a 512 SSD. I’ve gained an HDMI port, but lost the Ethernet port.  I’m still not sure if that was a fair trade. Funny Pictures

I no longer get laptops or PC’s with spinning rust drives.  The performance benefits of a SSD out weigh the extra cost.  The PCI Express controller is faster than SATA, even with full disk encryption (IT policy).

Now I have to get the tools that I need onto the MBP.  I really don’t have a master list of what needs to be installed so I’m making one here.  I’ll continue to update this blog post as I come across stuff to install for development.

Even though I do my coding with the .NET stack using Xamarin, I still need to have Xcode installed.  Apple makes the Xcode compilers part of the tool chain.  Plus that’s the only way you get the iOS Simulator.
Where to get it:  Apple OS X App Store

Xcode simulator for iOS 7
A new Xcode install wiill just have the current version of iOS in the simulator.  If you want to test against an older version, you need to install it manually.
Where to get it:  Xcode, preferences, downloads

Xcode command line tools
Xamarin needs to have the command line tools installed. That’s the easiest way to get git and svn installed.
Where to get it:  use Terminal to install Xcode Command Line Tools.

$ xcode-select --install

Google Chrome
I’m not looking to go a Safari Adventure…
Where to get it:


We are not animals, why use anything else?  I drank the Xamarin Koolaid 2 years ago and I can’t imagine doing mobile development any other way.
Where to get it: Subscription Downloads

Right after Xamarin has finished installing, update the Android SDK. The Android installer will install the latest bits, but if you want to support previous versions of Android, you’ll want to install those SDKs too.
Where to get it: Xamarin Studion -> Tools -> Open Android SDK Manager

Both the Xamarin Android Player and Genymotion require VirtualBox. VirtualBox is a free and open source virtual machine environment.  If you install that first, it makes the Genymotion install easier.
Where to get it:  Virtual Box Download Page

Genymotion is a fast Android emulator and supports more versions of Android than any other VM based Android Emulator.  Friends don’t let friends use the Google Android Emulator.  Google’s emulator emulates the CPU on the phone, but pays a performance penalty.  Genmotion (and Xamarin and Microsoft) run a version of Android for x86, which gets you virtual machine performance.
Where to get it:  Get Genymotion

Adobe Creative Cloud
When our graphic designers send me the artwork for our apps, they give it to me in Adobe Illustrator format.  From the AI files, I can script the rendering the images through Photoshop for all of the iOS and Android sizes that I need.
Where to get it:  Adobe CC

Alternatives to Adobe CC:  GIMP is a very powerful image editor.  An open source project, GIMP is available on many plaforms.  If I didn’t have an Adobe CC subscription, GIMP would be my tool of choice.  Inkscape is another open source tool, but for vector image editing.  Inkscape has the ability to export to XAML, so you have the ability to use resolution independent images on the Windows platforms,  Android 5 supports SVG for vector images and there is the svg-android library for older versions of Android.  Which brings us to…

PaintCode is an OS X app that will take SVG files and generate iOS drawing code in Objective-C, Swift, or Xamarin C#.  With the image as drawing code, you can manipulate it at runtime, it’s no longer a static image, but one that you can edit via.

VMware Fusion
I run Windows on my Macbook Pro.  When I want to carry just one machine and compile for iOS and Windows Phone, this is the simplest solution for me.  A cool thing with Fusion is that it supports Hyper-V, I can run the Windows Phone emulator in a Fusion session.
Where to get it: VMware Fusion

Air Server
When I want to demo an actual iOS device and be able to display on my Macbook, I use AirServer.  AirServer is an AirPlay receiver for OS X (and Windows). This works great for demos and for sharing with WbeEx or GotoMeeting.  The only caveat is that it uses the same port as the Xamarin Build Host.  The Xamarin Build Host is the app that lets Visual Studio on Window access the Xamarin and Xcode build tools on the Mac.
Where to get it: Airserver Download page

AirServer uses a bunch of ports, 5000 is used for audio and causes the conflict with Xamarin.  To change the audio port used by AirServer, open up Terminal and run the following command:

defaults write com.pratikkumar.airserver-mac com.airserver.raopPort 5010

Paragon NTFS for OS X
Out of the box, OS X can read NTFS but it can’t write to it.  If you have a large capacity USB drive, it’s going to be formatted with NTFS.  Paragon makes a stable and cheap NTFS driver for OS X.
Where to get it: NTFS for Mac

Sublime Text
Sublime is a very nice text editor that is available for multiple platforms.  I like being able to use the same tools on Windows and OS X where possible.  It makes for less things to learn and remember so you can concentrate on getting stuff done.
Where to get it:  Sublime Text Download page

Balsamiq Mockups
Balsamiq is a great tool for doing wireframe mockups.  When doing quick designs, wireframe mockups let you walk do the basic design and flow, without getting distracted by pixel placement.  This is a other one of the multi-platform tools.
Where to get it:  Balsamiq download page

Adium is a free instant messaging application for OS X that supports multiple chat platforms.  When I want to IM a co-worker, I use whatever platform that they prefer, AIM, Yahoo, Google, Facebook, etc.  Using Adium lets me deal with just one app.
Where to get it:

Right now I’m using the Microsoft Remote Desktop app for OS X.  I used to use CoRD, but Microsoft Remote Desktop looks like it’s more up to date and I’ll stick with it.  I don’t RDP to Windows from OS X that much, the MS one should be enough.  Also CoRD doesn’t appear to support Mavericks or Yosemite.
Where to get it: Apple OS X App Store

Db Browser for SQLite
This is an open source, cross platform tool for working with SQLite databases.  When writing code that writes to a SQLite database, an external database browser can help validate that you are writing the right data.
Where to get it:  Github

When you use the iOS Simulator, you can access files from the simulator image with Finder.  The location will vary, depending on the version of Xcode used.  This Stack Overflow post is a good starting point.

Objective Sharpie
This is a tool that Xamarin developed for building binding libraries for Objective-C libraries.  It’s not the easiest tool to use, but it greatly cuts down the amount of work needed to created a Xamarin C# binding to an Objective-C library.
Where to get it: Objective Sharpie

I use OneDrive.  A lot.  Most of the documents that I work on, I tend to put into OneDrive.  It just makes it easy to not care from which machine that I used to last edit the document.  I have some PhotoShop scripts for generating different sized icons from a single source file.  I keep it in the cloud so I can use it where ever I have Adobe PhotoShop installed.  From a synching perspective, DropBox is probably a better choice, OneDrive is backed into everything else that I use so I’ll stay with it.
Where to get it: Apple OS X App Store

TechSmith makes the best screenshot capture tool period.  I use this more often that I would have expected to.  Also falls into the category of being available for OS X and Windows.
Where to get it: TechSmith

Android File Transfer
I had to move some large files from the old MBP to the new MBP and I left my thumb drives at home.  So I used my Nexus tablet as a large, awkward thumb drive.  With Windows, you can just use the tablet as a drive, with a Mac you need the Android File Transfer app.  When you run the app it will display the file system of the connected Android device in a Finder-like window.  You can drag and drop files between the Mac and the Android.
Where to get it:

I have an external monitor on the Mac and I was amazed that OS X does not include any keyboard shortcuts for resizing windows, docking to screen edges, or moving windows to other displays.  Unless you use both OS X and Windows on a day to day basis, you don’t realize how Windows has passed OS X in many areas for UX.  So I installed Spectacle, an open source app for OS X that provides the keyboard shortcuts for moving windows around.  This should be built into the OS.
Where to get it:
Bonus round: Get the cheatsheet from a StackExchange post.

Microsoft Lync
We use Lync as our corporate IM and it’s handy to be able to use from the Mac.  There is an OS X Lync app, but I prefer to use the web application.  It requires a browser plugin, but it more or less works.
Where to get it: Lync Web App

After I get the tools installed, the next thing is to get Time Machine set up.   I have an external 2TB USB 3 drive that I use for backing up the Macbook Pro.  Time Machine is one of those OS X features that you can set and forget, it just works.  The hard drive crashed on my previous MacBook Pro, I was able to completely recover my stuff from the Time Machine backup.

Ignite your IT and Enterprise Dev skills this May

Get ready for a glimpse at what’s possible today and in the future

Consolidating the various IT and Enterprise developer conferences, Microsoft Ignite will be in Chicago this May.  Microsoft Ignite kicks off with pre-conference sessions on Sunday, May 3, and concludes the afternoon of Friday, May 8.

This is a new conference and is aimed at IT professionals and enterprise developers looking to learn about new and existing technologies and network with the best in the business.  Ignite replaces TechEd and other IT/Enterprise related conferences.

Microsoft CEO Satya Nadella

Microsoft CEO Satya Nadella will be the key note speaker and will be joined by other Microsoft leaders.  Brad Anderson, Joe Belfiore, Julie Larsen-Green, and Mark Russinovich are just some of the Microsoft executives that will be appearing at Ignite.

With over 270 sessions, there are topics to interest both IT and developers.  The topics cover Microsoft technology from A to V.

The conference will be held at the McCormick Place Convention Center, near downtown Chicago.  Registration is already open and if you are planning on attending, sign up now to get a good hotel close to McCormick Place.

On February 3rd at 9am (PT), join the Ignite team for #IgniteJam on Twitter.  The Ignite Team and conference speakers will be online to answer your questions.  To participate in this #IgniteJam

  1. Log in to Twitter at 9:00 AM PT on February 3rd. For easier real-time participation, use Twubs and join the Ignite Team at:
  2. Introduce yourself and include the hashtag #ignitejam and tag the Ignite Team at @MS_Ignite.
  3. Watch for questions coming from @MS_Ignite and chime in with your answers and commentary, using the hashtag #ignitejam.

You can find Ignite on Twitter, Facebook, Instagram, and for some odd reason, Google+.

Quick work around for unresolved Xamarin components in Visual Studio

Have you ever had an unresolved component when  using the Xamarin plugin win Visual Studio?  You add a component from the Xamarin Component Store and after you installed it, it comes up as unresolved.

There is a path limitation that causes this error.  The components come packaged in a zip file with files inside folders.  When this length of the file paths in the zip file are factored in with the path length of your project, it can exceed Windows limits when the component is being added.

This only seems to be a factor when the component is being added.  Once the component has been added to the project, the path length is well within what Windows allows.  It also appears to be a Windows only issue, Xamarin Studio on OS X does not have this issue.

The way around this is to have your project on a shorter path.  There are a couple of ways of doing this.  The obvious way is to move your solution to a shorter path.  That’s annoying, especially if your code is already mapped a source control system that is expecting the files to be in the original path.

Another way around it is to make the path shorter via a directory junction. A directory junction is like a symbolic link, but is easier to get rid of when you are done with it.  You create a link with a shorter path to the original path and then reopen the solution using the shorter path.  You add the component, it will install cleanly now because the path length is no longer an issue.

Your code is still in the original location.  You didn’t move it, you just created an alias to that location and that aliased location looks and feels like a real path.  Once you have added the component, you can either leave the link or remove it.

You can add the link from the command, or you can install a shell extension and do it from Windows Explorer.  I’m a command line kind of guy so I prefer to do it that way with the mklink command.

Open up a command prompt shell with admin access (Run as Administrator).  Once you have an admin shell, use the following syntax:

mklink /j new-path original-path

For example, to create a shorter path c:\source\xamarin\myapp and have the new path named c:\x, do the following

mklink /j c:\x c:\source\xamarin\myapp

Now you can open your solution from the c:\x folder.

To get rid of a directory junction, just use the rmdir (rd) command.  To get rid of c:\x, you would execute the following:

rd x

That removes the directory junction, but does not touch the original location.

A work in progress

%d bloggers like this: