Polyglot from the Microsoft Realm

Recently, I joined my friends Dave and Victor on creating a podcast called DevCoaches.  In our first episode, we talk about our adventures with The Software Guild, where the 3 of us are instructors.  Dave and Victor are currently focused on our .NET curriculum, whereas I spend time in both .NET and Java curriculum and currently teach a Java cohort.  These guys lovingly refer to me as “a traitor”, since I’m a Microsoft MVP yet not teaching on the Microsoft stack.  So… I wanted to talk about my interesting position and why I shouldn’t be seen as a traitor. In the computer programming system, the people are represented by two separate, yet equally important groups – the people who write the code and the people who teach those who write the code.  These are their stories.

Microsoft & Other Platforms

First of all, just because I’m not on the Windows platform doesn’t mean I stop caring about Microsoft and their technologies.  From my early days in computing, I believed in Microsoft and their cross-platform dreams.  At PyCon 2009, I presented on running IronPython (a Microsoft .NET implementation of Python) on Linux through the help of Mono.  Why?  More like… why not?!?  I’m in technology because I love to play with tech and see the capabilities.  Running Microsoft technologies in a non-Microsoft operating system intrigued me, so why couldn’t I play?

Fast forward to today, where Microsoft isn’t only able to run on other platforms, but they’re bringing in other platforms too.  From .NET Core to bringing bash into Windows, it’s astounding to see where Microsoft is venturing.  Further more, it’s great to see the community embracing it – even those of us who grew up in a Windows world understand that there is more out there and it could be possibly the right mix for us.

Microsoft was once seen as an evil empire, but is it still that way?  It looks a lot like they’ve changed their tune.  Hopefully that image is changed as well.

C# vs Java?

If there’s one thing you should know about me, it’s never one programming language versus another.  It’s never “my semi-colons are better than yours”.  It’s all about knowing which tool is to be used in the appropriate situation.  Thankfully, I think Microsoft realizes that as well.  While I’m not specifically talking about C# anymore and took an opportunity to teach Java, I still recommend that my apprentices learn both.  If you can learn one, the other isn’t that much more difficult – though Java’s namespaces are still awful to the file system. So many folders… (I digress…)

As a Microsoft Most Valuable Professional, I am aware of the tools that Microsoft has and am able to give them the feedback they need to hear from those of us in the field, using their tools.  Armed with this knowledge, I actually do use a Microsoft technology in my class.  When it comes to web development and managing my apprentices’ sites, I have them organized well and use Visual Studio Code to look at their CSS, HTML, and JS.   Work has me using a Mac – which is a blog post of its own – and Visual Studio Code works fine on it.  I’ve also used Visual Studio Code in an Ubuntu virtual machine without issues.  (And yes, I have used other text editors as well.  But did I mention that I have a lot of chaos going on?  Sometimes, it helps to have one UI with a familiar layout to keep me grounded.)

Also, little do they realize that even though I’m teaching Java, I’m still looking at the C# curriculum and have to make changes to things.  So I need to keep my C# skills on point if I want to write relevant lessons.

The Power of a Polyglot

Let’s face it – I’m a polyglot.  I have a problem – if A&E had a Hoarders episode for those who hoard programming languages, I would be on that episode.  I’ve always enjoyed various programming paradigms and switching between languages – yes, even when my apprentices ask me about a perl script they’ve found and what it could look like in the languages we’ve shown so far.  I like that I’m not tied to one IDE, one platform, one programming language, one train of thought.  I like that I have the flexibility to change platforms and tools as needed.  And I’m thankful that Microsoft still keeps me as Most Valuable Professional – with involvement in the community being key – and is supportive of those of us living a polyglot life.  It’s definitely an interesting realm.

Programming languages… gotta learn them all! 🙂

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 One Code to Rule Them All

I’m at the Microsoft MVP Summit this week, which means that there are a lot of things I won’t be able to share due to all sorts of non-disclosure agreements, lawyers, etc.  However, there may be some cool non-NDA stuff that I’ll be able to share as well, and you can bet that if it’s that cool, then I’m telling you guys about it.

While checking out some work that MVPs and Microsoft has done, I came across this gem: Microsoft All-In-One Code Framework.

So, Sarah, what’s so cool about this?

Have you ever had a moment while coding when you wondered “How do I do {xyz}?”  Sure, you may have looked up that in your search engine of choice.  However, if you have Visual Studio 2010 or Visual Studio 2012, there’s an add-in for you that lets you search a code repository of various samples.  If you’re more of a “Let’s look at code samples and maybe get inspired” kind of person, their Sample Code Browser is a great app for that.  The VSIX for the Visual Studio extension and the ClickOnce for the app are both available from their download page.

Let me get this straight. Someone did something cool with a code repository?

Yes! Here’s a look at what I downloaded just this morning from their site:

OneCode

 

While the menu and layout remind me of my nemesis – the Zune software, the content is helpful.  Also, I have a good feeling that there’ll be even more features, as talking with these guys, I gathered that they are open to feedback and would love to see this take off.

That’s pretty… but where’s my Visual Studio Add-In? I know I installed it here somewhere…

Once it’s installed and Visual Studio has been restarted, you’ll see a toolbar that looks like this (minus the search criteria):

OneCodeAddIn

 

Okay… not so confused anymore.  Show me how you find stuff for graphs, since you hinted at it above.

 

Now, let’s say you’re working on a project that uses graphs.  Business people like seeing data in charts and graphs, so we better do an app for them.  In my add-in, I typed graph and pressed Enter, which opened the following results:

OneCodeGraphSearch

 

180 results is a lot to sift through!  Let’s filter these so that I’m only looking at HTML5 stuff, as this client is trying to target multiple platforms and thinks HTML5 might be the way to do it.  Click in the box, and the filtering selections appear.  I’m changing my Technology to HTML5.  Much smaller!

OneCodeGraphSearchHTML5Filter

 

 

Let’s take a look at a sample and what it has to offer.  I’ve chosen the top one.

What are the details, documentation, and social about?

I’m getting there!  First off, the details section:

OneCodeGraphSearchHTML5FilterDetails

 

This section contains a link to where I can find the app.  You can see what technologies are supposedly used, the license, the supported Visual Studio edition(s), the author, ratings, last update, and download count.  If you click that download button, it’ll download the sample and change to an open button.  Clicking that button will open the sample in Visual Studio.

The documentation panel shows any documentation that is associated with the project.

OneCodeGraphSearchHTML5FilterDocumentation

 

This shows any important information the creator included for their project.  In this particular case, we see the software that’s required plus a note on unblocking the ZIP file.  Helpful information indeed!

The social panel shows any social media activity for that project – currently tracking Twitter, Delicious, Digg, and Facebook.

OneCodeGraphSearchHTML5FilterSocial

 

As you can see, I Tweeted about this, as it need a little love.

Okay… I don’t care about graphs. I went back to the pretty home screen and was seeking some inspiration.

Me too!  I’ve been getting rusty on my SQL skills and figured I could use some inspiring in that department, so I clicked on the SQL Server button on that page.  That in turn took me to these results:

OneCodeSQLServer

 

So now I have samples to help inspire me.

You mentioned they’re open to feedback.

Yep!  Click the Sample Request Service link at the top, and then click the bright red Submit a Request button.  This will take you over to their Codeplex Issue Tracker, where you can submit your suggestions.

Okay… this is nifty! But… Zune software style seems old school.  I’m running Windows 8. Can I use this on my tablet?

Ah yes… if you do a search for “All-In-One Code Browser” on the Windows Store, there’s a beautiful version for the Windows 8 {Metro UI/Windows UI/”fancy tiles that need a better branding name” UI}.

OneCodeFrameworkWindowsStore

This Sample Browser app has a nice user experience, inline with the new tablet-esque/tablety user experience.

More on that in a future blog post…  did I mention I’m at the MVP Summit?  Gotta eat breakfast for the big day ahead!  Hopefully will blog about Sample Browser later.

Microsoft Billing and Account Management SUX

Recently, I wanted to manage my billing options, as I had an invalid credit card tied to my Zune and XBOX Live account.  Unfortunately, I had the experience of meeting the Microsoft Billing and Account Management site.  This is unfortunate, as it is a site with horrible, HORRIBLE user experiences.

Select from Account IDs 

Yes, somebody didn’t get the memo that exposing accounts as account IDs really is a bad user experience.  Let’s see what I have…

  • Acct ID# 00000-00000-00020-12345 (Personal)
  • Acct ID# 00000-00000-02300-12345 (Personal)
  • Acct ID# 00000-00000-02412-12345 (Personal)
  • Acct ID# 00000-00000-02460-12345 (Personal)
  • Acct ID# 00000-00000-00302-12345 (Business)

Now those aren’t my real account numbers, but these are the options that I’m given. I have no idea what any of these account IDs mean. What’s better… in their respective applications, I don’t see these IDs. So why are you showing them to me as an option? Why couldn’t I get options that look more like the ones below?

  • Hotmail Plus (Personal)
  • XBOX Live (Personal)
  • TBD TBD (Personal)
  • Platform Services (Personal)
  • marketplaceformobile.somerandomstring.US  (Business)

I have no idea what some of these are even for – especially if there’s no service listing for that account.  And TBD TBD… no idea what that even is let alone why it appears there.  Some of these are even cancelled services, so why would I care to manage their Billing if I don’t have them anymore? (Edited note: Talking with my husband, we think this might be a migration of multiple billing systems into one, which could only lead down an ugly path.)

Now one of my accounts looks like it manages my XBOX Live, Zune Pass, and App Hub accounts.  So maybe coming up with friendly names for the accounts is a bit harder for their devs… how about letting the end user create friendly names for those accounts rather than showing them Acct ID# 00000-00000-00020-12345?

Disconnect in Payment Data

I went through the process of removing the invalid credit card from my Zune and XBOX Live account.  Looking at this in the Billing portal though, I see that this card has been marked as Removed on my cancelled MSN Hotmail Plus account. If I switch to my XBOX Live account, I see that same credit card listed, without being marked as Removed.  Really?  Mind you, under both accounts, it shows as Xbox Live (Visa: xxxxxxxxxxxx0000) – same exact name.  Why wouldn’t show as Removed on the XBOX Live account?

400 Clicks Later

As I mentioned on Twitter today, I was having other issues with my Zune account where credits weren’t showing.  Thankfully, @ZuneSupport and the Zune support chat team were able to find a solution that works for my needs.  However, I had Tweeted that I had hoped I wouldn’t get sent to the Microsoft Billing site as it was a headache user experience.  Leave it to one of my friends to point out that there’s the joys of clicking through a lot of screens to get the data you need.  Boy was she right!  Even the context-driven FAQs on the right of each page… click, click, click… ah there’s what I need… maybe.

Conclusion

I hope that one day Microsoft will invest in a great user experience team that can go through their websites and find these problems before we do.  At the moment, there are a lot of painful user experiences on their sites that I use, and the more I have to use these sites, the more I’m tempted to look at alternative solution providers or weigh the cost of abandoning my current services just to get away from these bad experiences.  Painful user experiences are what drives users to competitors who get the user experience right.  Please, Microsoft, save us from the painfulness known as your billing site by working with UX experts on making it easier to deal with.

Microsoft in Open Source

I know that the title sounds deceiving, especially to those who’ve been watching the open source realm over the past couple decades.  However, Microsoft has been dabbling with open source for awhile, and they even have a website that talks about it.  Let’s look into this a bit more.

Background

I’ve had my eye on the open source world for at least the past decade.  While my roots may be in Microsoft technologies, my first presentations at user groups and conferences were on open source projects and programming in Linux.  Even when I keynoted at Software Freedom Day – Cleveland 2011 – talking about “Keeping an Open Mind About Open Source”, I made sure to mention that yes, Microsoft is included in the list of those involved with open source.  It was nice to be able to mention their company name and get more intrigue than groans.

Microsoft’s Involvement in Open Source in Terms of Development

One myth people have believed is that developers who use Microsoft technologies don’t understand open source.  However, that myth is just that – a myth.  The truth is, developers of all types, including those who use Microsoft technologies, are interested in the open source movement.  Whether they’re contributing to their own projects or encouraging developers to contribute to projects or create their own open source projects, Microsoft has provided developers with a home for open source projects over at CodePlex.

In addition to providing a place to host these open source products, they have encouraged developers to help with the tooling in Visual Studio.  One package management system that’s used commonly in the Microsoft development realm is NuGet, the open source developer focused package management system.  This tool allows those developing with Microsoft’s Visual Studio to easily add 3rd party open source libraries to their applications.

We have a place to host open source packages and tools to give us access to open source libraries.  Microsoft is also known for promoting open source packages and pro-open source solutions in their Web App Gallery, which can be accessed on desktops via Web Platform Installer and can be installed on webhost’s servers for those webhosts that support the Microsoft Web App Gallery. You can even play with these packages and customize them on your own, even if you don’t have Visual Studio.  Microsoft’s WebMatrix tool ties into the Web App Gallery as well and makes it easy to work with applications found in the Web App Gallery.

Microsoft’s Open Source Initiative

Recently, my friend Marques – also known as @tromboneforhire on Twitter – tweeted about stumbling upon the Microsoft Openness site.  I had never ever heard about it up until that point, but I figured I’d poke around the site to see what their site was about.

Microsoft is all about building bridges across platforms.  The Openness site covers how Microsoft is about building these bridges, looking at how openness influences Microsoft and its audience.  It contains stories of Microsoft paired with common open source technologies and packages – including PHP and Drupal.  There’s also a list of resources on openness and interoperability – including standards, Microsoft projects, and other helpful links.  You can also get your short updates from them as @OpenAtMicrosoft on Twitter.

In addition to the Openness site, there’s the Port25 blog that covers communications from the open source community at Microsoft.  Here you can find where Microsoft technologies meet the open source community.  Whether it’s Microsoft appearing at OSCON or something like PhoneGap on Windows Phone being complete, you’ll find all sorts of details on Microsoft’s relations in open source.  As they put it on their site:

Port 25 is about having a healthy conversation with customers and the industry to talk openly and honestly about their biggest interoperability challenges, whether it is on UNIX, Linux, Windows, or other open source packages.

We believe that healthy and productive discussion only occurs when the parties listen and respond to each other, and this is the foundation on which Port 25 is built.

Our goal is to be accessible, approachable and smart, which means our door is always open, that no comment goes unread, that ideas (common sense required) can be openly discussed, and that while change takes time, we’re committed.

Conclusion

In “Keeping an Open Mind About Open Source”, I challenged my audience to keep their mind open for the rest of the conference, as they may have been surprised with what was covered in the conference.  As for now, I challenge you, whoever you may be, to get past the myth that Microsoft isn’t interested in open source.  It’s a myth, and the reality is that Microsoft is interested and has taken big strides over the years to show how they’re interested and want to be involved in the open source realm.

What do MVPs do?

Yesterday, I got the news that I’ve been renewed as a Microsoft MVP in Visual C#! Thanks to those who’ve thought I’ve contributed to the C# community and developer community in one way or another and are giving me another year of showing what it takes to be a Microsoft MVP!

I was asked by fellow Clevelander Steven Testa the following question:

.@sadukie any tips on becoming an MVP in the first place? Local dev communities are looking like the best way to start.less than a minute ago via Twitter for Windows Phone Favorite Retweet Reply

Getting Nominated

Our Microsoft Most Valuable Professional program has a page on becoming an MVP. As they say on the site:

Potential MVPs are nominated by other technical community members, current and former MVPs, and Microsoft personnel who have noted their leadership and their willingness and ability to help others make the most of their Microsoft technology.

While getting involved in the community is one thing, it also helps if you’re active enough in the community and recognized by those who are already MVPs or Microsofties who can recommend you. The more noticed you are, the more people can recommend you to the program, the more your name gets out there, and the more likely you may get evaluated.

MVP Activities

MVPs are some of the most active people in their communities – running user groups, organizing events, speaking at user groups, blogging, writing training programs, writing books, host podcasts, answering questions in forums…. doing what they can to spread the word on Microsoft technologies and products. Here are just a few examples of what my fellow MVPs are doing:

  • Zune MVP Marques Lyons runs these MVP Meet-and-Greet events called MSMVP. It’s a great way to meet the MVPs in their communities and for the MVPs to meet their fellow MVPs. Marques held one of these at the Microsoft Store in Bellevue, WA earlier this year at the time of our MVP Summit, and it was a great way to meet other MVPs and experience a Microsoft Store.
  • Visual Studio ALM MVP Steve Andrews is one of the MVPs behind GeekGive, community projects at community events – where MVPs take time to help with community projects, be it food pantry or Habitat for Humanity or other adventures.
  • Other events where MVPs are involved – be it in planning, running, staffing, or even speaking – include DevTeach, VS Live, MIX, CodeMash, devLink, StirTrek, MADExpo, Kalamazoo X, GiveCamp, and Day of .NET.

Learning More from the MVPs

Each MVP has a different story on how they became an MVP. Ask them how they go there, and they may give you better insight as to how to get there. You’ll find many of us love talking about how we got here and how we can help you get on the right path to becoming an MVP if you’re interested in going that route. You can find MVPs through the MVP Search Site. Your local Microsoft evangelists may also be able to help you if you’re looking to talk with an MVP, as many evangelists are close to their communities and know who to go to. You can find your local evangelists via this Microsoft site.

Want to hear more?

If you want to hear more from me and are in the Cleveland area, drop me an email at sarah at codinggeekette dot com. I enjoy meeting up with people over coffee and talking about how to get involved in the community more and how to put your passion for technology to work in the community!

By the Community, For the Community…?

While reading on Twitter, I saw this post:

#dddsw DDD South West 3 Call For Speakers closes in 2 days time (Tuesday) http://bit.ly/hHW555less than a minute ago via TweetDeck Favorite Retweet Reply

Being active in Cleveland’s technical community and in the Heartland District, I’m always curious to see what other communities are doing. I had seen DDD references before from some of the people I follow, so I figured I’d check out DDD South West. While the Developer Developer Developer! conference sounds cool, their call for speakers makes me wonder.

Here are the requirements for 60 minute sessions:

  • You must be resident in the UK/Ireland or an active member of the UK/Ireland community
  • You must not be a Full Time Employee of Microsoft (DDD South West is “By The Community, For The Community”)
  • Your session must not promote a non-Microsoft commercial product/service if you work for or are directly associated with the company/organisation that sells the product/service (unless there is a free version and your presentation is primarily about the free version)

It seems odd that DDD South West is excluding Full Time Employees of Microsoft (and only Microsoft) from submitting talks. Sure, they go on to say that the session shouldn’t promote a non-Microsoft commercial product or service either. But really… why are they going so far as to explicitly say no Microsoft FTEs? And why do they go on to say “By The Community, For The Community” after saying that Full Time Employees of Microsoft can’t submit talks? Are Microsoft employees not allowed to be a part of the community? This just doesn’t make sense.

It seems fairly assinine to say “You must not be a Full Time Employee of {insert a company name here}” and then say “By The Community, For The Community”. Are people who work for companies not allowed to be a part of the community? Is there something about a particular company’s FTEs that really would need to exclude them from a community?

What kills me even more is that they link to Scott Hanselman as a resource to check out on “how to present in public”. Did they not get the memo that Scott is a FTE of Microsoft? Oh yeah… and Microsoft is a sponsor backing this behavior? What the…? Again, that just doesn’t make sense.

What a confusing message to send to potential website visitors. 🙁