On Conversational Interviews

Recently, I started running through mock interviews with some of my awesome apprentices.  As we graduated one group last week and are graduating another group in mid-December, the apprentices are meeting with employers and hopefully finding places that will be a great start to their new careers in software development.  Some have a technical background, and others don’t.  Some have worked in their industries for years, and others are still fairly young with a little work experience under their belts.  All of them have been nervous and excited about their opportunities ahead.  Thankfully, when I do interviews, I do conversational interviews.

Conversational interviews… what are these?

Having been in the interviewer seat for a previous employer, I’m used to having candidates come in for these positions with walls of nerves put up.  As an interviewer, I find that the walls of nerves don’t allow me to see the candidate properly.  So what I try to do is engage in simple conversation.  I look at a candidate’s resume or LinkedIn to get a glimmer of some topic that may get them talking.  I want to know their story – how did they get to where they are today?  Why should I hire them over any other candidate?  What is something unique that would make them stand out?

As an introvert who grew up with some shyness, I understand how painful it can be for some to interview.  I try to take a conversational approach to interviewing to hopefully take down the wall of nervousness and get a glimpse of the true person behind that wall.  From these questions, I have a way of jumping to asking candidates how they understand technologies and how they apply them.  My first goal in any interview is for me to determine who the candidate is and if they are a great fit for the position – both technically speaking and also personality-wise for the team.

How well do these work?

Rather than the formal Q & A, I’ve preferred using this conversational approach.  Rather than the approach of putting someone who is already nervous center stage, I try to get them off the stage to talk through things.  I have found the conversational approach to work wonderfully, as I have torn down some of the toughest walls of nervousness.  I think it helps that I am curious about my candidates not just for the position itself but as the individual that they are and how they’ll fit into the grand scheme of things.

Sometimes, these work a little too well.  In addition to tearing down the walls of nerves, I also end up tearing down walls of arrogance as well.  I’ve had some candidates waltz in, super confident – with a degree of arrogance – in their skills.  If there’s anything you need to know about me, I don’t tolerate arrogance and egos well and see those as a challenge to put people back in their place.  However, if I pull in certain technical questions, I can bring some of the most arrogant candidates to their knees.  Some of them get to the point where I can narrow in on another weakness – being afraid to say “I don’t know”.

I love conversational interviews because it helps me to get my candidates in the right light.  I am able to get them to take down the walls and see a better glimpse of who they are and how the company will be able to use them, their talents, and their skills to the best of their abilities.  So this is my interview style of choice when I get the ability to interview candidates for potential positions.

Every Breath You Take…

COPDAndMe2015-smaller

Normally, I try to keep my posts about tech and my adventures in tech or in the community.  Today, though, is something personal that I want to share, both to get a glimpse of me and as part of #MeAndCOPD, as November is COPD Awareness Month.

7 years ago today, I sat at my desk at work, waiting for my doctor’s office to call me back.

I had gone through a bout of bronchitis during Spring 2008, which caused me to cough so hard that I cracked a rib.  It was awful, but the worst was yet to come.  In October 2008, I had a harder case of bronchitis that really knocked me down, physically.  To put it in perspective, I would go to work but sit at my desk and communicate with people more over IMs than in person.  This is so unlike me, as I normally went from one side of the office to another – from web development to IT to designers to marketing, back to web development, and sometimes over to HR.  I was always on the go, preferring in-person communication when possible.  I knew though that I needed to conserve my energy – what little I had left.  Every step that I took, every word that I spoke… those consumed energy that I was rapidly losing.  To feel this, I knew I was at a low point but I hadn’t realized just how low.  My doctor ordered some tests to see why I was drained and beaten and what happened.

7 years ago today, I got that fateful call – my doctor diagnosed me with severe COPD (chronic obstructive pulmonary disease).  After I hung up the phone, I remember setting my head in my hands on my desk, trying so hard to fight the tears that had welled up in my eyes.  Crying was going to take more energy and I needed to conserve it.

Why?!? I had never smoked a day in my life, though I grew up in a house with secondhand smoke most of my life.  Why me?!?

Naturally, I had a lot of questions. Googling the disease and its stages concerned me a lot.  However, “dying” is never on my to-do list, so my searches switched from “severe COPD” to “managing COPD“.  Talking with my doctor, I ended up seeing a pulmonologist for awhile to understand my disease.  The bout of bronchitis from October 2008 did some serious damage – I was breathing at 30% of what I normally should be. This metric is what led to the initial severe COPD diagnosis.   After months of seeing how I respond to various drugs and treatments, my pulmonologist changed the diagnosis to asthma, as I made considerable improvements in my breathing statistics, which showed that the damage done to my lungs was somewhat reversible – which typically isn’t reversible in COPD.

Weird Diagnoses at the Wrong Stages of Life

The thing that gets me the most about this experience is that I received diagnoses under atypical situations.  COPD typically shows up in people older than 40 who typically have smoked or are still smoking.  I was 28 years old, and I’ve never smoked a day in my life.  However, I was exposed to second-hand smoke most of my life and they think that played a part of it.

As for asthma, it is typically diagnosed in childhood.  Again, 28 years old at the time of diagnosis – this has seemed odd.

The Road to Recovery 

When I looked at the search results for “managing COPD“, I saw a lot of results with breathing exercises.  Growing up playing clarinet, I was well aware of how to control my breathing.  So I read those results and took it all in.

My musical roots led me to what I like to call music therapy.  For me, in order to regain control over my lungs and getting my energy back, I had to find control in breathing and adjusting as needed.  One of the best things that helped me get back on the road to recovery was singing and challenging myself to hold notes for long periods of time and hitting certain ranges.

These are some of the songs that have helped me along the way:

  • Paramore – That’s What You Get:
  • Journey – Don’t Stop Believing:
  • Evanescence – Bring Me to Life:

Management and Survival

In addition to singing, I also speak at conferences in my industry – technology.  One of my biggest achievements since this mess was speaking in front of about 600 people center stage at the Peabody Opera House in St. Louis, MO for Strangeloop 2013.  While I was combating laryngitis that day and feeling the tightness in my chest that comes with a bad asthmatic day, I delivered a great presentation and kept others none-the-wiser.  It was truly a success for me.

Besides non-medical management techniques, I also have gone through a variety of maintenance medication.  The latest regimen that I have had for the past few years includes Pulmicort and an emergency inhaler, that I thankfully rarely use.

Since I was diagnosed, I’ve only been hospitalized once due to a nasty asthma attack.  To add to it, it was suspected that I might have had the flu… and… I was just starting the third trimester of my pregnancy with my second child.  Considering all the circumstances, I was kept in isolation.  While in isolation, I started to understand the gravity of asthma and how tough it could be.  But I was determined to fight through it – I have a family to live for and again… dying isn’t on my to-do list.

I have also learned my triggers and risk situations.  Sometimes I have a moment where I forget about my situation and do something stupid – like running across a parking lot to hang up my parking pass that I had forgotten in my bag.  When I do stupid things like that, it takes me a few days and sometimes up to a couple weeks to bounce back.  However, for the most part, I avoid my triggers or manage myself carefully to avoid asthma complications.

While I may look like a normal, possibly healthy person, I was once diagnosed with severe COPD and now work hard to keep my asthma in check, while still finding time to stay active both in my career and in my personal life.  I have a world that needs me. This is my motivation for fighting to be here.


November is #COPDAwareness Month.  This has been my personal story of #MeAndCOPD.  If you want to share your story, link to it on Twitter and use those hashtags.  Also, please link them in the comments here, as I’d love to see others’ stories.

Microsoft ♥ Linux and Open Source

A long time ago, when I was much younger, I used to see Microsoft as this gigantic, unapproachable power that was popular in homes.  I saw Linux as this operating system that truly hardcore geeks played with, geeks who were anti-social and more like hackers.  This was my misperception as a youngster.

As I got older, my friend Nivex introduced me to Linux – a friendlier, gentler idea than I had perceived.  Sure, I may have had to compile my kernel and install the distro quickly on my own since I kernel panicked in a record amount of time.  But Slackware Linux… it was still totally hardcore in my mind, hardcore and made me wonder “why was I trying to learn to work with an operating system that I felt was out-of-my-league?”

I also saw the flame wars and vitriol in the Linux community whenever Microsoft was mentioned.  Seeing the immaturity of that community steered me away from that.  For a community that embraced open source, they were closed minded, not open-minded.  It wasn’t something for me to dabble in, community-wise.

However, as time has gone on, I have continued to use both operating systems while staying on the mindset that one day they may come close.

Running .NET on Linux

Fast-forward to 2008/2009… I had caught wind of the Mono project.  Mono is an open source implementation of .NET that would bring .NET technologies to Linux, or so they claimed.  I didn’t believe it – Microsoft technologies on Linux without being in a Windows emulator… this idea just wasn’t computing.  I had to try it out for myself.

Being the polyglot that I am, I also heard about running non-Microsoft languages on top of .NET – specifically IronRuby and IronPython.  Again, mixing Microsoft with communities that aren’t typically friendly of Microsoft… I was skeptical of the idea and had to see it myself.

So what did I do?  Since Ruby has a stronger community than Python in Cleveland, I decided to take the road less traveled and venture down exploring IronPython.  But wait… Mono does .NET on Linux, and python runs on Linux…. could IronPython run on Linux?

PyCon 2009 – Showing IronPython on Linux

In my adventures of clearing up my skepticism, I had fun playing with IronPython and learning how to work with it on Linux.  Somehow, I decided it was a good idea to submit a talk to the national Python conference – PyCon – on running this.  What I hadn’t known was that the IronPython team and the father of the language (Jim Hugunin)  would be in my audience.  To this day, I remember this presentation experience clearly – from Jim taking over the Q&A session (politely!) and then waiting for me after my talk to tell me that it was cool to see since Microsoft didn’t let him play with Linux at work.  These are my slides from that conference:

So there I was, in 2009, showing that the community was wanting Microsoft technologies to be cross-platform and friendly with other languages.  But… it was truly at the community level.  Corporate marketing wasn’t there.  So Microsoft had to rely on polyglots and adventurous devs like me to help draw attention to this move.
Fast Forward to Today
Microsoft has come a LONG way since then.  They had CodePlex for their open source projects, but thanks to listening to the community, they have moved from CodePlex to GitHub.  They have moved a lot of their .NET functionality to the open source realm – check it out on their .NET Foundation repos website.
Mono has grown since then with more support and more ported libraries than it did back then. It is compatible with .NET 4.6, .NET 4.5, .NET 4.0, .NET 3.5, .NET 3.0, .NET 2.0, and yes, even .NET 1.1.  Check out Mono’s compatibility documentation for more details.
Microsoft is playing nicely with Linux.  In 2014, OpenShift mentioned that you can run Microsoft .NET apps on their platform.  Mark Russinovich reached out to the Linux faithful to encourage them to send in their resumes – they want to work with people who want to help the two come together.  Microsoft just announced a partnership with Red Hat  for cloud solutions.  Check out this demo of Microsoft .NET over on OpenShift:
They also are encouraging developers to write code for multiple platforms and adding tooling for this. With Visual Studio 2015, Microsoft brought in Visual Studio Tools for Apache Cordova.  Through this tooling, we can use Visual Studio to write apps for iOS, Android, and Windows via web .  They’re also getting their tools cross-platform, with the introduction of their code editor called Visual Studio Code – which can run on Windows, Linux, and Mac.  Visual Studio  Code has syntax highlighting for a variety of languages.  Below are screenshots of Visual Studio Code with Python, XML, and Java files:
java-vscode
Java in Visual Studio Code
python2010-vscode
Python in Visual Studio Code
xml-vscode
XML in Visual Studio Code
Conclusion
Youngster me thought that maybe one day Microsoft and Linux would get closer together and may one day play nicely.  However, I had no idea it would get to where it is today.  Microsoft has made great strides to get here, and I can only imagine where it will be going in our future.  Youngster me is very teary-eyed and proud of Microsoft and where it’s been going.

The Mystery of the PowerShell “alias”

So… I have a situation, and I’m not really sure what’s going on.  I think this is a two-fold problem:

Problem 1: Variable and Alias – Odd Things – There’s a Ghost in the (Power)Shell

To set the picture, I’m running Windows PowerShell 5.0 on Windows 10, but we also saw this on Windows PowerShell 2.0 in Windows Server 2008 R2.  When I type alias, it outputs contents as if it were running Get-Alias.

alias1-20151103

My instinct tells me this should be an alias.  So let’s see:

alias5-20151103

Nope… not an alias.  Is this a variable?

alias2-20151103

Nope… not a variable.  Is this a command?

alias3-20151103

Nope…. not a command. Is this a function?

alias4-20151103

Nope.  Is this an executable that cmd can run?

cmdexe-20151103

Nope.  We also see this phantom listing (for lack of a better term) with variable.

So… problem 1 – what are these things if they aren’t commands, aliases, variables, or  functions?  June and I tested these with PowerShell v2.0 on Windows Server 2008 R2 and PowerShell v5.0 on Windows 10, natively.  We also tested it in versions 2.0, 3.0, 4.0, and 5.0 side-by-side.

Problem 2. The Shadow of the Phantom (not the Opera)

So piggybacking off of #1, I have an odder situation.  I have a custom PS module that I’ve created for teaching – originally used in 2011 and repurposed for Coding 101 this past October.  June changed my line #1 to include -Name and -Value (but this doesn’t make a difference).  I have an issue with the alias scenario above, coming from a Linux background.  The command alias by itself is used for creating aliases, so I like to fix the alias with the proper usage:

alias6-20151103

PowerShell is not auto-loading this module, but we can load it with Import-Module and the alias alias works as expected.

Is our phantom friend from #1 shadowing my module, preventing it from auto-loading?  If so, is this a bug?  Or is this possibly an undocumented feature?  (What…?!? I’m a dev. I had to put it that way. 🙂 )

UPDATE – The Mysterious 2nd Pass

So I asked about this on Twitter, and I got responses from the PowerShell community – thanks to Bruce Payette, Boe Prox, and Lee Holmes.  Basically, as Bruce Payette explained it, since PowerShell v1.0, when a command is executed, PowerShell does a 2-pass find:  first it looks for the command by name, and if that fails, then it does a second pass with Get- prepended to it.  So…

  1. alias is looked for but not found.
  2. Get-Alias is looked for, found, and executed.

Boe Prox  blogged about this behavior and how he sniffed it out with the Trace-Command cmdlet.

Lee Holmes explained that auto-loading a module happens if CommandNotFound is about to get thrown.  However, because of this second pass, CommandNotFound doesn’t get thrown, so the module does not auto-load.

And this… this is why I love the PowerShell community.  They’re super helpful and can shed light on issues even with 140 character limits on Twitter. 🙂  Thanks, guys!