# Thursday, February 16, 2017

LMB01Last week, Ladysmith Black Mambazo brought a bit of South Africa to Chicago. The vocal group performed at The Old Town School of Folk Music Saturday February 11.

LBM was formed by Joseph Shabalala in Ladysmith, South Africa in 1964. Shabalala did not make this trip, but a number of his sons still perform with the 8-man group. Westerners learned of their talents in the 1980s when they recorded the classic "Graceland" album with Paul Simon; but they have been touring and recording on their own for decades. Their tight harmonies and blend of African and western music make them appealing to audiences all over the world.

LBM delighted the audience in a too-short (about 80 minutes) performance before a sold-out theater. They blended harmonies and melodies and humor and Zulu dancing to entertain us. There were no instruments because there was no need for instruments.

LMB02They sang some songs in English and some in the Zulu language. "Homeless" and "Diamonds on the Souls of her Shoes" from "Graceland" were crowd pleasers; but most of the night consisted of traditional African songs and their own compositions. For most songs, a different member of the band would step to the front of the stage to sing lead, while the remaining 7 harmonized behind him. Some songs were accompanied by coordinated Zulu dances.

The night concluded with a stirring rendition of "Amazing Grace".

Ladysmith Black Mambazo has long been on my list of bands to see live. Now I can cross them off the Bucket List. Until the next time they come to town.


Thursday, February 16, 2017 7:03:59 PM (GMT Standard Time, UTC+00:00)
# Tuesday, February 14, 2017

I have a busy speaking schedule coming up. Here are the confirmed events as of today.

Date Event Host Location
2/14/2017 Cloud and Azure intro University of Illinois Champaign, IL
2/16/2017 Building Powerful Applications with AngularJS 2 and TypeScript Northwest Chicago Javascript Schaumburg, IL
2/20/2017 Cognitive Services workshop Womine in Computer Science Champaign, IL
2/21/2017 The Hitchhiker's Guide to Azure Mobile Apps  University of Illinois Champaign, IL
2/28/2017 Big Data Solutions in Azure Chicago .NET User Group Downers Grove, IL
3/1/2017 Effective Data Visualization Chicago City Data User Group Chicago, IL
3/5/2017 Big Data Solutions in Azure Software Development Community Naperville, IL
3/14/2017 IOT Workshop Mission to Mars Chicago, IL
3/16/2017 Adding Image and Voice Intelligence to your apps with Microsoft Cognitive Services Louisville .NET USER Group Louisville, KY
3/29/2017 The Hitchhiker's Guide to Azure Mobile Apps  Indy.Code() Indianapolis, IN
3/29/2017 Adding Image and Voice Intelligence to Your Apps with Microsoft Cognitive Services  Indy.Code() Indianapolis, IN
4/5/2017 Adding Image and Voice Intelligence to your apps with Microsoft Cognitive Services MadDotNet Madison, WI
5/8/2017 TBA Dubuque .NET Software Development User Group  Dubuque, IA
5/9/2017 TBA CRIneta : Cedar Rapids .NET User Group  Cedar Rapids, IA
5/9/2017 TVA Cedar Valley .NET User Group Cedar Falls, IA
5/10/2017 Building Powerful Applications with AngularJS 2 and TypeScript Iowa .NET User Group Des Moines, IA
5/12/2017 Keynote: You and your community Convergence Detroit Detroit, MI
5/22/2017 TBA GLSec Grand Rapids, MI
Tuesday, February 14, 2017 5:43:00 PM (GMT Standard Time, UTC+00:00)
# Monday, February 13, 2017
Monday, February 13, 2017 4:14:00 PM (GMT Standard Time, UTC+00:00)
# Sunday, February 12, 2017

When I worked in consulting, part of my job was to interview potential new hires. This often included a technical screening. Here are a few of the questions I would ask on Object Oriented Programming (OOP)

What is the difference between an object and a class?

An object is an instance of a class. A class is a template - or blueprint - that describes what an object based on it will look like and behave. Further, objects have a defined lifetime - they are created and eventually destroyed; not so with classes.

What is encapsulation?

Encapsulation is an OOP principle describing an object hiding its implementation details form the outside world.

What is inheritance?

Inheritance describes a class that is derived from another class or from an interface. The derived class (or child class) inherits the properties and methods of the parent class or interface from which it is derived.

What is polymorphism?

Polymorphism describes to objects that can accept the same message (e.g., the same method call with the same parameters) and respond differently, but appropriately to that message. For example, a Customer class and an Invoice class may each have a "Print" method. Calling the Customer's print method could print a report listing details about the current customer, whereas calling the Invoice's Print method might print a specific invoice.  Polymorphism can be accomplished by implementing the same interface in multiple classes.

What is the difference between a Class and an Interface?

Although each can serve as a templates for inherited classes, an Interface includes only the names and signatures of properties and methods, whereas a class also includes the implantation of each method and property.

Sunday, February 12, 2017 8:32:16 PM (GMT Standard Time, UTC+00:00)
# Saturday, February 11, 2017

The world of Sunshine is filled with demons and werewolves and a variety of monsters. But the most dangerous creatures are the vampires - undead creatures who prey on humans at night.

sunshine[1] Sunshine is kidnapped by vampires and finds herself chained next to the starving vampire Constantine, who is also a chained prisoner of her captors.

Together, they escape their prison. Sunshine returns to her life but the authorities and her family want her to explain where she has been and how she was able to escape from these creatures (No one ever escapes vampires).

Throughout the book, Sunshine and Constantine and a few human and half-human allies fight a battle against evil and powerful vampires. Along the way, she finds herself drawn to Constantine and learning about her own powers. She wrestles with her identity as she can no longer live the simple life of working in a bakery.

I liked the story and I liked the characters. Sunshine is strong, but flawed. The writing is sometimes rambling but that's ok, because it's written in the first person and that's how Sunshine thinks. Constantine is menacing and distant and alien. But he is likeable. And he strives to understand Sunshine, which sets him apart from the others of his breed.

Sunshine is a good story for those who want a new twist on an old legend without the triteness too often associated with this genre.

Saturday, February 11, 2017 11:37:00 AM (GMT Standard Time, UTC+00:00)
# Friday, February 10, 2017

If you are interested in speaking at a conference, many of them are currently accepting submissions. Below are some open calls for presentations in and around the Central Region. I have submitted to speak at some of them, so maybe I will see you there.

Event Location Start End Conference Link CFP link CFP Closes
Self.Conference Detroit, MI 5/19/2017 5/20/2017 link link 2/13/2017
Open Source North Minneapolis, MN 6/8/2017 6/8/2017 link link 2/15/2017
Codepalousa Louisville, KY 6/7/2017 6/9/2017 link link 2/17/2017
Music City Code Nashville, TN 6/1/2017 6/3/2017 link link 3/1/2017
Chicago Coder Conference Chicago, IL 6/26/2017 6/27/2017 link link 3/3/2017
Beer City Code Grand Rapids, MI 6/10/2017 6/10/2017 link link 3/14/2017
KCDC Kansas City, MO 8/3/2017 8/4/2017 link link 3/30/2017
That Conference Wisconsin Dells, WI 8/7/2017 8/9/2017 link link 4/15/2017
Madison PHP Madison, WI 9/22/2017 9/23/2017 link link 4/30/2017
SQL Saturday - Pittsburgh Oakdale, PA 9/30/2017 9/30/2017 link link 8/1/2017
NEW Code Camp Appleton, WI 3/25/2017 3/25/2017 link link ?
Chicago Code Camp Chicago, IL 4/30/2017 4/30/2017 link link ?
Friday, February 10, 2017 9:52:55 PM (GMT Standard Time, UTC+00:00)
# Tuesday, February 7, 2017

Managing Big Data takes a lot of process power. Data often needs to be captured, scrubbed, merged, and queried and each of these things can take many hours of compute time. But often they can be performed in parallel - reducing the amount of time, but increasing the number of computers required.

You could buy a bunch of computers, cluster them, and process your data on this process. But this is expensive and these computers are likely to sit idle most of the time.

Cloud Computing tends to be an ideals solution for most Big Data processing because you can rent the servers you need and only pay for them while they are running.

Microsoft Azure offers a full suite of Big Data tools. These tools are based on the popular Hadoop open source project and are collectively known as "HD Insight".


HBase is a NoSQL data store that is optimized for big data. Unlike SQL Server and other relational databases, the database does not enforce referential integrity, pre-defined schemas, or auto-generated keys. The developer must code these features into the client application. Because the database doesn't need to worry about these things, inputting data tends to be much faster than in a relational database.

HBase also can be scaled to store petabytes of data.


Apache Storm is a framework that allows you to build workflow engines against real-time data. This is ideal for scenarios like collecting IoT data. The Storm topology consists of a Stream, which is a container that holds a Spout and one or more Bolts. A Spout is a component that accepts data into the Stream and hands it off to Bolts. Each Bolt takes in data; preforms some discrete actions, such as cleaning up the data or looking up values from IDs; and passes data onto one or more other Bolts. Data is passed as "Tuples", which are sets of name-value pairs formatted as JSON. You can write your code in C#, Java, or Python and a Visual Studio template helps you create these components.


Hive is a data warehouse. With it, you can query NoSQL data (such as Hive) and relational data (such as SQL Server). Hive ships with a query language - HiveQL - that is similar to SQL. Where HiveQL falls short, you can even write user-defined functions to perform more complex calculations.


Spark is a visualization tool. In Spark, you can write code in R, Python, or Scala. Jupyter notebooks are a popular interactive tools that allow you to create templates consisting of text and code, so that you can generate real-time reports. Jupyter notebooks support both Python and Scala. Spark also ships with a number of libraries that make it easier to connect to data, create graphs, and perform a number of other tasks.


Each of the services described above supports running in clusters of servers. In a cluster, these servers process in parallel, greatly reducing the amount of time required to process the data.  You can easily create a cluster in the portal or you can write a script in PowerShell or CLI.

The ease of creating clusters is a big advantage of running HD Insight over deploying your own Hadoop servers and clustering them yourself. Of course, the other advantage is that you do not have to purchase and maintain servers that are only being used occasionally, which can be a big cost saving.


One word of caution about using these services. You pay for each server in a cluster by the minute. This can quickly add up. Typically, you don't need to have your cluster running for very long in order to complete tasks, so it is a good idea to shut them down when they are finished. Because of this, it's a good idea to script the creation and deletion of your cluster to make it easy to perform these tasks.

Tuesday, February 7, 2017 6:08:01 PM (GMT Standard Time, UTC+00:00)
# Monday, February 6, 2017
# Sunday, February 5, 2017

Today I am grateful for checks and balances and those who believe in them.

Today I am grateful for a trip to Milwaukee, including a visit to the Milwaukee Art Museum yesterday.

Today I am grateful for a chance to spend time alone with those I care about.

Today I am grateful for high productivity days.

Today I am grateful to the countless immigrants and children of immigrants who contributed to the greatness of my country.

Today I am grateful for good dental care, good dental insurance, and healthy teeth.

Today I am grateful for a Microsoft party last night at Shedd Aquarium.

Today I am grateful I was able to attend Pam's funeral yesterday with Jim and his family.

Today I am grateful to Sara for driving me from San Francisco to Oregon yesterday.

Today I am grateful for all the crap I threw away yesterday when going through boxes in my closet.

Today I am grateful to Dan for driving down to Champaign on his own time yesterday to help me help out me and some professors.

Today I am grateful for a number of successful meetings with university professors.

Today I am grateful for my new MacBook Pro.

Today I am grateful to attend a Webb Wilder concert in Chicago last night.

Today I am grateful for how much better my life is - in almost every way - than it was a decade ago.

Today I am grateful I was able to get a last-minute ticket to the Microsoft Tech Summit at McCormick Place this week.

Today I am grateful for the wonderful imagination of Neil Gaiman.

Today I am grateful for -a record crowd at the Wisconsin .NET User Group last night -Hao helping me tweak my Angular presentation yesterday

Today I am grateful for lunch with Brian yesterday.

Today I am grateful to see Buddy Guy in concert last night at his own club - Buddy Guy's Legends.

Today I am grateful we made it home safely after a long drive yesterday.

Today I am grateful to all who have built the #CodeMash conference and made it such a great event.

Today I am grateful for: -Visiting a Japanese steakhouse with my team -An evening at a waterpark

Today I am grateful for the overwhelming generosity of the tech community.

Today I am grateful for friends who want to help and support one another when tragedy strikes.

Today I am grateful for: -A return to #MIGANG last night -Driving 400 miles in an SUV with 7 smart people -Jason driving our excess luggage to Sandusky, OH.

Today I am grateful to find time to get together on a very busy Sunday.

Today I am grateful for a full day with Tim Giard.

Today I am grateful for an evening at Second City with Tim Giard.

Today I am grateful for my first presentation of 2017 last night.

Today I am grateful for the infinite possibilities of 2017!

Today I am grateful for a desire to continually learn new things.

Today I am grateful for: -An evening spent browsing in a Lincoln Square book store -Finally seeing Rogue One last night

Today I am grateful for -a night at the movies watching La La Land -unexpected free parking when I exited the structure last night

Sunday, February 5, 2017 12:16:00 PM (GMT Standard Time, UTC+00:00)
# Saturday, February 4, 2017

We were at CodeMash this year when we heard the news.

The news was about our friend Jim Holmes, the man who started CodeMash and ran it until a couple years ago. Jim had just lost his wife - killed in a violent incident. Obviously, Jim was not coming to CodeMash as planned; he turned around headed back home.

Meanwhile, us - his friends - were left in shock. We were fortunate that we had each other to talk to and help one another deal with this tragedy.

It was a helpless feeling. We wanted to do something. I wanted to do something.

Although I did not know Pam well, Jim has been a friend and mentor since we first met at a Red Robin in Columbus, OH in 2007. Over the years, Jim has done me a number of personal kindnesses - some large and some small and he has done much to help the software community in general.

We began with a fundraising effort. We created a campaign on gofundme.com, allowing friends and others to contribute some money to Jim's family - money to allow him take time off work and focus on his family and dealing with the aftermath of this tragedy. I was overwhelmed to see the campaign raise over $30,000 in the first week. It now stands at over $40,000. As the administrator, I found myself adjusting the campaign goal upward 4 different times.

It helped me to see the outpouring of love and cash from those who felt a connection with Jim. It helped me to deal with the helplessness I was feeling.

But it wasn't enough.

When I learned the funeral details, I wanted to attend. But there was a problem. In 2015, Jim and his family moved to Ashland - a small town in southwest Oregon. Every airline route I found consisted of 3 flights and a full day of flying. When I heard that Sara Ford was driving up from her home in San Francisco, I reached out to her and asked if she wanted company. I booked a flight to SFO and Sara picked me up and we drove the 400 miles together.

Ashland, OR is a difficult place to get to - especially from the Midwest. CodeMash takes place in the Midwest and flights from Midwestern cities to small-town Oregon are difficult to arrange. As a result, very few from the developer community were able to take time off work on short notice and spend a full day traveling there and a full day traveling home. So Sara and I arrived at the funeral carrying greetings sympathy and hugs and love from many who could not make it. We were fortunate to have flexible schedules. But we had the responsibility to tell Jim and his family what they already knew - that those he knew and those he helped over the years were thinking of him and his family and praying for them all.

The funeral was sad of course. But it was not all sad. The Eulogy was read by the minister who married Jim and Pam a quarter century ago. And he spoke a lot about love and forgiveness - even for the one who killed Pam. I've heard Jim echo these thoughts and it's an attitude that not everyone takes and it's refreshing and humbling.

For me, the hardest part of the service was seeing Pam's mother say goodbye to her daughter. It brought back memories of my mother dealing with the death of my sister 7 years ago.

I spoke at length with Jim's parents and some of his siblings, who I found to be charming people. I was able to offer my condolences to Pam's mother and daughter. I met many of the Wolosz and Holmes family and I was impressed with them all.

We attended the funeral and the reception afterward, before getting back in the car and driving back to San Francisco, so I could catch an early morning flight home. I flew about 4500 miles and drove about 800 miles in less than 2 and a half days. I would do it again in a heartbeat.

I'm really glad I went. I think it helped Jim that I was there. But I know it helped me.

Sara and Jim

Saturday, February 4, 2017 5:13:00 PM (GMT Standard Time, UTC+00:00)