# Wednesday, 01 June 2016

Recently I interviewed Sally Buberman and Ignacio Lopez, who turned an Imagine Cup project into a successful startup. Wormhole uses gamification to make online learning more engaging. Watch the interview below or at: Startup Stories: An Interview with Sally Buberman and Ignacio Lopez from Wormhole

Wednesday, 01 June 2016 18:20:04 (GMT Daylight Time, UTC+01:00)
# Monday, 30 May 2016
Monday, 30 May 2016 13:57:55 (GMT Daylight Time, UTC+01:00)
# Sunday, 29 May 2016

Mihai Tataran stood next before a group of technologist at the Jidvei winery and castle in Cetatea de Balta, Transylvania. IT Camp had ended the day before and the conference organizers took the speakers to the winery for a tour, a lunch, and a wine tasting. Mihai laughed and translated into English the tour guides jokes comparing wine with a beautiful woman. The group was tired from the activities surrounding the conference, but energized by the fresh air and the sunshine.

The speakers (including me) had come to Transylvania to speak at the 6th annual IT Camp in Cluj-Napoca. Cluj-Napoca is arguably the tech center of Transylvania - the region of northern Romania which has established itself in recent years as a growing technology hub.

IT Camp has grown from a small Microsoft-focused developer event into a 2-day, 6-track, multi-platform event with many presentations covering topics outside of software development, such as business skills and DevOps. This was my third visit to IT Camp in as many years.

The conference featured 3 keynote presentations - all on Day 1:

Cluj Mayor Emil Boc opened the conference by talking about the emergence of the tech industry and the advantage of the universities in his city.

Jayson Street described some things he has done wrong in his career as a security analyst and the lessons he learned from those incidents.

Laurent Ellerbach showed off his IoT-enabled garden that does everything from analyze the soil to automatically turn on sprinklers to take photos on demand.

IT Camp features an impressive list of speakers from at least 9 different countries - mostly from Europe.

I had a chance to see a few sessions presented by others, including Raffaele Rialdi's "Introduction to .NET Core", Mihai Coroș's "Building Your First SPA with Aurelia and ASP.NET MVC 6", and Radu Vunvulea's "Azure microservices in practice".

I delivered 2 sessions at IT Camp: "Open Source Technologies in Microsoft Azure" and "Adding Image and Voice Intelligence to your apps with Microsoft Cognitive Services".

The Open Source Azure session was well-received by the 30 or so attendees. This was a variation on a talk I've done in the past titled "Microsoft Azure Without Microsoft". In it, I highlight many of the open source technologies that are available in Microsoft Azure (e.g., Linux Virtual Machines and PHP web applications) and with which Microsoft Azure can work (e.g., REST services consumed by Java or Ruby).

I was much more happy with the Cognitive Services presentation. The audience filled a room with a capacity of over 100 persons and were impressed by this technology that exposes models built with machine learning to any application that can call a web service.  A line of attendees came to the stage afterward to ask questions.

I also had an opportunity to meet with the Technical Evangelists on the DX Romania team - both in Bucharest before the conference and during IT Camp.

Few conferences treat their speakers as well as IT Camp. Perks of speaking here, included:

  • A room at the Beautiful Grand Hotel Italia, overlooking the city of Cluj-Napoca
  • A buffet breakfast every morning and gourmet dinners every night
  • Evenings spent talking and drinking with other speakers and the conference organizers
  • A field trip the day after the conference. This year, a bus took us to the winery and castle in Jidvei.

I'm writing this recap from an airport lounge in Munich, waiting for a flight to take me home to Chicago. I'm exhausted from a lack of sleep this past week, but I'm happy I had the opportunity to take part in IT Camp and to reconnect with so many people that I only see once a year.

Sunday, 29 May 2016 10:08:34 (GMT Daylight Time, UTC+01:00)
# Thursday, 26 May 2016

Walking through the Old City in Bucharest in a pouring rain looking for a restaurant among the winding streets, it was hard to remember that I came here for a vacation. But I did.

For the third year in a row, I was invited to speak at IT Camp in Cluj-Napoca, Romania. When speaking in Europe, I always make an effort to take a little extra time and see something new; so I  arrived  Monday evening, although the conference did not start until Thursday.After my ticket to Cluj was booked, I looked around for a place to visit for 2 days and I settled on Bucharest. This was my third trip to Romania, but the first time I set foot in its capital city or the region of Wallachia.

As with all overseas trips, this one began with a flight - or rather with 3 flights. I counted 23 hours between the time I left my apartment to the time I arrived - exhausted - at the Bucharest hotel. Despite the long travel time, it was not a bad trip.

It was late Monday night when I arrived in Bucharest, but the JW Marriott upgraded my room and gave me access to the members' lounge, so I relaxed a bit before bed and slept through my alarm the following morning. It was noon by the time, I ventured out on the streets.

I stopped for about an hour at the Microsoft office in Bucharest and met Radu Stefan - a local Technical Evangelist with whom I had been corresponding. He recommended the City Tour Bus, which takes one past many of the city's cultural and historic landmarks, providing recorded narration as it passes each landmark.

A recommendation from Twitter encouraged me to eat at Caru cu Bere in the Old Town section of Bucharest. The waiter recommended the "House Beer", which was so good I drank 2 (a rare thing for me). I didn't realize until after the waiter brought it, that I had ordered dinner "for 2". It was a good thing I skipped lunch.

Caru cu Bere is located in the Old City - a pedestrian area with cobblestone streets and many old building. I spent a lot of time walking through this section of town - in part because of a desire to explore and in part because it was difficult to find the restaurant. A steady rain fell on me while I walked, attempting unsuccessfully to dampen my spirits.

On Wednesday, I hired a tour guide and driver for the day, who took me around Bucharest. The city has a rich, multicultural history. In the early part of the 20th century, after Romania gained independence, Bucharest was known as the Paris of the East for its beautiful architecture and rich cultural attractions. But the Communists who gained control following World War II had little interest in the Bucharest of the past. Dictator Nicolae Ceaușescu destroyed hundreds of blocks of historic neighborhood to create the enormous and lavish Parliament Building.   Ceaușescu was deposed and executed before this building (the second largest administrative building in the world) was completed.

Highlights of my guided tour were:
-A walk through part of the Parliament Building
-The Village Museum - an outdoor area consisting of old homes from many parts of Romania
-The Romanian Patriarchal Cathedral on Dealul Mitropoliei

Wednesday evening, I boarded a plane for Cluj-Napoca for the IT Camp. I only spent 2 days in Bucharest, but I saw a lot of the city and I learned a lot of its history. It was definitely a worthwhile excursion. No amount of rain could dampen that.

Thursday, 26 May 2016 11:13:00 (GMT Daylight Time, UTC+01:00)
# Wednesday, 25 May 2016

Here is an interview I conducted recently with Victor Cintron of DimDrop – a startup that uses location-based services to improve communication. They are deploying a number of open source technologies to Microsoft Azure.

Startup Stories: An Interview with Victor Cintron, CEO of DimDrop

Azure | DevRadio | Interviews | OSS | Startups | Video
Wednesday, 25 May 2016 06:47:04 (GMT Daylight Time, UTC+01:00)
# Monday, 23 May 2016
Monday, 23 May 2016 10:09:00 (GMT Daylight Time, UTC+01:00)
# Saturday, 21 May 2016

Last month, I had the privilege of attending the AWS Summit in Chicago. It was a great experience for me because, although I do a lot of work with cloud computing, I have very little experience with the Amazon Web Services (AWS) platform.

The most interesting session I attended was about a service called "Aurora" (Amazon tends to give all their services catchy names). This is a relational database that looks and acts almost exactly like MySQL but runs much faster. The official product page brags that Aurora is a "MySQL-compatible relational database with 5X performance", however the session I attended claimed that they found cases in which Aurora was 63 times faster than MySQL. The presenters didn't share details of those cases, but even if results are only a fraction of that speed, it's still an impressive performance improvement.

Because Aurora is MySQL-compliant, you should be able to plug it into any application and use it just like MySQL. The SQL syntax is identical and the management tools will be familiar to anyone used to managing MySQL.

Of course, the fact that Aurora is hosted on a cloud platform like AWS gives it the advantage of high availability and flexible scaling that cloud computing offers.

Since most of my cloud computing experience is with Microsoft Azure, I tend to use Azure as a reference point for the services I saw at this summit. I was drawn to Aurora in part because I'm not aware of the same offering in Microsoft Azure.

MySQL as a service is available on Azure, but it's offered and supported by ClearDb - a third party.  If you want better performance or scalability on Azure than that offered by ClearDb, you will need to either switch to a different database or create a Virtual Machine and install MySQL on that, in which case you would be using Infrastructure as a Service, instead of Software as a Service.

In many cases, this is a non-issue. If you are building a new application, you have the flexibility to choose your preferred database technology. MySQL and SQL server have very similar languages; and, although I won't get into a debate here as to which is "better", it would be difficult to argue that SQL server is significantly less reliable or enterprise-ready than MySQL.

But there are times when you don't have a choice of database technologies. For example, if you have a large legacy application that you want to migrate to Azure, it may be a daunting task to migrate every stored procedure and SQL statement to use T-SQL.  Or if you are using a framework that is specifically built on top of MySQL, it makes sense to use that database, rather than re-writing the entire data access layer. Luckily, some frameworks have alternative data access layers. For example, Project Nami is a data access layer for WordPress that uses SQL Server as a data store, rather than MySQL.

Although the various cloud computing companies follow one another and are likely to build a service when they see traction on their competitor's platform, I find it interesting to see these gaps in offerings.

Saturday, 21 May 2016 11:28:00 (GMT Daylight Time, UTC+01:00)
# Friday, 20 May 2016

Here is a recent conversation I had with Sean Goltz and Addison Cameron-Huff of Global-Regulation, a company that assists researchers who are searching for international law documents. They are deploying a variety of open source technologies on Microsoft Azure.

Watch this interview below or follow this link to the interview.

Friday, 20 May 2016 14:39:33 (GMT Daylight Time, UTC+01:00)
# Wednesday, 18 May 2016

The Newtonsoft.Json library contains a number of tools for working with JSON from within your .NET application.

New ASP.NET applications created in Visual Studio already contain a reference to the Newtonsoft.Json library. But if you want to add the library to a different project type or if you want to update the version installed by default with an ASP.NET application, you can right-click your project in the Visual Studio Solution Explorer and select "Manage NuGet Package..." and search for Newtonsoft.Json. Select the "Newtonsoft.Json" package (Fig 1) and click either "Install" or "Update".

Newtonsoft is very good at serializing .NET objects into JSON objects.

One feature that I find useful is its ability to rename attributes in my classes. For example, if I have a class named "SocialSecurityNumber" in my C# class and the client consuming my JSON object expects that same property to be named "ssn", I can make this transformation declaratively by adding the JsonProperty attribute to the class property, as shown in Listing 1.

[JsonProperty("ssn")]
public string SocialSecurityNumber { get; set; } 

By convention, C# developers tend to name public properties with mixed case (capitalize the first letter of each word); while JavaScript and JSON developers tend to name properties using Camel casing (capitalize the first letter of each word, except the first word). In the past, I used the JsonProperty attribute to accomplish this, renaming every variable that would be serialized to JSON, as in the following example:

[JsonProperty("firstName")]
public string FirstName { get; set; }
 
[JsonProperty("lastName")]
public string LastName { get; set; }

For projects with many objects and many properties, this can be a tedious task. Fortunately, I recently learned a shortcut.

ASP.NET contains a Formatters class that controls how items are formatted and Newtonsoft.Json can tap into this. The following code, when run at the start of your application, converts all properties to Camel-Case as you transform them to JSON.

var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

I added this code to the Register method of the WebApiConfig class in my ASP.NET MVC project, so that it is run when the application starts up, before any serialization is done.

Another useful setting is to add carriage returns and line feeds to the JSON that is created. This has the disadvantage of making your JSON slightly larger; but it makes it much easier for human beings to read, which can be very useful during debugging. This is accomplished with the following line:

settings.Formatting = Formatting.Indented; 

The full listing in the Register() method is shown below:

var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

Using the tools in the Newtonsoft.Json library, we can easily adhere to the conventional naming conventions of whatever platform in which our data is used.

C# | JavaScript | Web
Wednesday, 18 May 2016 20:18:48 (GMT Daylight Time, UTC+01:00)
# Tuesday, 17 May 2016

Gary Numan was everything I did not expect.

GaryNuman (5) He came to Chicago for 3 nights  at Metro night club in Wrigleyville. Each night he promised to perform a different album from early in his career -  "Replicas" on Sunday; "The Pleasure Principle" Monday and "Telekon" on Tuesday. I chose to attend Sunday because his 1979 album "Replicas" has always been my favourite of his. This was an album I embraced in high school a year before the rest of America learned of Gary Numan with the release of "The Pleasure Principle" and its wildly popular "Cars".

For me, Replicas was always the definitive Gary Numan album. Its layers of electronic melodies and its lyrics about a dystopian future spoke to the adolescent me and the album still holds up decades later.

GaryNuman (2) Numan performed every song from the "Replicas" album and I was impressed by his enthusiasm for songs that he released 3 decades ago.

I don't recall ever attending a concert in which I knew in advance the songs the artist would play. But he surprised us - first by mixing the order of the original album and (more significantly) updating the arrangements.

The electronic music that made him famous is still impressive. "Down in the Park" and "I Nearly Married a Human" featured impressive keyboards and unusual sounds. But, he transformed "Me! I Disconnect From You" from a hypnotic synth-pop tune into a rock song that any post-punk garage band would be proud of. The guitar bass drums came to the fore on a number of his songs, making them more rocking and less ethereal.

Replicas I expected a stiff, robotic, stoic Gary Numan - similar to the mannequin pose on the Replicas album cover. Instead, the audience was treated to an energetic performer dancing to his songs and bringing a renewed passion to his old music.

The only downside was the venue. The fact that Metro only accepts cash was a disappointing surprise, but its General Admission format made it difficult for most attendees to see the stage. There are a limited number of tables one can reserve at more than double the GA price and I'm debating doing this when Echo & the Bunnymen play there in the Fall.

GaryNuman (3) But I found a bit of floor space to enjoy the show and enjoy it I did - from the music to the strobe lights. Thanks to Numan's energy this concert exceeded my expectations.

Tuesday, 17 May 2016 15:56:18 (GMT Daylight Time, UTC+01:00)