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.

Summer Speaking Engagements

It looks like I’ll have a busy summer, as I’ve received confirmation over the past couple months on some of my talks.

So if you’ve missed some of my talks, some of them are getting redelivered and some new ones are coming out.  Below are some of my confirmed talks for the summer.

PyOhio

In addition to helping with publicity, I’ve got two talks for PyOhio this year.  This first talk was set to debut later this summer, but it looks like PyOhio will get to hear it first.

A Lap Around IronPython

It’s not just C# and VB.NET that can be used in WinForms, WPF, Silverlight, and ASP.NET. You could also use IronPython! In this session, you will get a quick overview of IronPython and a look into using it with each of the following: WinForms, WPF, Silverlight, and ASP.NET.

The other talk I’m delivering at PyOhio is one that I’ve delivered in other places – including Cincinnati and Dayton this past February.  

Python 101 for the .NET Developer

The first part of the session will cover the basics of Python – its history, how its data structures compare to those we’re familiar with in the primary .NET languages, its strong and weak points, who’s using it, and why you as a developer – both generally speaking and as a .NET developer – should care about Python. The second part of the session will get into the demos – starting with some basic Python scripts and getting into IronPython scripts, if time allows. By the end of this session, you’ll have an idea of what Python is, why you should know it as a developer and specifically as a .NET developer, and how to get setup and write a basic app in both Python and IronPython.

 

devLink

I was a little hesitant about submitting talks to devLink this year after being bit by the demo gods last year.  But after talking with friends, I submitted a few talks – for the previous year’s devLink, I had submitted something around 5 talks and got 1 accepted.  This year, I submitted 5 talks and managed to get 4 accepted. As you’ll notice, I’m not focused on just one topic – welcome to my world, where I need to know all of these things.

This first talk is an updated version of my talk from Kalamazoo X 2009, with more of a business twist, to apply social networking to your careers.

Social Networking Made Simple

Whether it’s meeting like-minded individuals to talk tech with or connecting with people to hopefully find a job lead in this economy, social networking sites such as Twitter, Facebook, and LinkedIn can help boost your career and expand your knowledge. We will look at examples of how people use these tools to get ahead and how you can learn from their experiences and apply their lessons to your life.

The second talk is for those of you who may run your own websites and need to understand analytics.

A Webmaster’s Guide to Web Analytics

As a web developer, it’s nice to see when your site comes together and works well. But have you wondered which pages were getting hit a lot? What about those pages that used to be on your site that are no longer there? Do you have relationships with other websites and want to find out who’s generating traffic to your site? In this session, you will learn the base metrics that come in most web analytics packages and what they mean to you as a web developer. You will also get to see output from some of the popular analytics packages in use and learn more on what might be right for your site.

The talk that is debuting at PyOhio was also accepted for devLink, so if you miss it there, you can see it here too.

A Lap Around IronPython

It’s not just C# and VB.NET that can be used in WinForms, WPF, Silverlight, and ASP.NET. You could also use IronPython! In this session, you will get a quick overview of IronPython and a look into using it with each of the following: WinForms, WPF, Silverlight, and ASP.NET.

Finally, I’ll be showing off how a tool that some people see as an IT tool can actually be used by us developers as well, which could make our IT team’s lives a bit easier with our help.

PowerShell for Developers

PowerShell is a powerful .NET language that bridges the IT and developer realm. Come to this session to see how PowerShell can be used to benefit the developer’s side of things and possibly make IT professionals a little more appreciative of their developers. We’ll start with a few basic scripts to get a feel for the syntax, and from there, look into how we can use PowerShell in our day-to-day tasks – including scripting out website settings in your dev environment for your IT to deploy to live servers or having a quick way to do things like test regular expressions and get assembly information for those DLLs that you are using in your projects. In the end, we’ll look at how to build and use your own custom PowerShell modules in your development projects.

These are the talks confirmed for the summer conferences so far.  I hope to see you at some of them!

Python 101 for the .NET Developer

A couple weeks ago, I spoke at a few user groups in southern Ohio – the Cincinnati Financial internal group, CINNUG, and Dayton .NET Developers Group.  I took my Python 101 for the .NET Developer talk on the road, getting the word out about Python and IronPython.

Just to answer some of the questions…

 

  • Scoping, classes, and functions: There were some questions about functions versus classes, and I know I had confused some people on that.  There was also a question about scoping in Python.  For more on classes, functions, and scoping, see part 9 of the Python tutorial.
  • The @ symbol: One of the guys in Dayton had asked what the @ symbol was – this is used as a decorator.  For more details on decorators and why they chose the @, see PEP 318 — Decorators for Functions and Methods.
The slide decks were made available to the group leaders, but if you want to see the slides, please contact me.
If you’re looking for the books I recommended, check out:

 

 

Hello World!  Computer Programming for Kids and Other Beginners

ISBN: 1933988495

 

IronPython in Action

ISBN: 1-933988-33-9