# Friday, March 11, 2016

The auditorium darkened. The music began and a small light appeared at the front of the room; then more. Students on stage danced and waved lanterns on ropes for an impressive musical light show to kick off the 2016 SpartaHack hackathon.


Students came from all over the world to attend this hackathon on the East Lansing campus. Over 200 universities were represented among the applicants. In addition to a number of international students studying on American campus, I met students who traveled to the hackathon from India, Russia, Germany, and the Philippines.

AnnaMattDavidBrian My colleague Brian Sherwin arrived in East Lansing the day before the hackathon to host an Azure workshop for 30 students - showing them how to use the cloud platform to enhance their applications. Ann Lergaard joined us a day later and we did our best to answer student questions and help them build better projects. Late Friday night, I delivered a tech talk showing off some of the services available in Azure.

Microsoft offered a prize for the best hack using our technology. It was won be 2 students who built an application that allowed users to take a photo of text with their iPhone and, in response to voice commands, read back any part of that text. The project combined Microsoft's Project Oxford OCR API with an Amazon Echo and its Alexa platform, an iPhone app, and a Firebase database.

A couple other cool hacks were:

  • ValU, an app that used Microsoft Excel to analyze historical stock price data using Excel VBA scripts.
  • Spartifai, which modified a driver, allowing a Kinect device to be used with a MacBook.

JazzBand A hackathon is an event at which students and others come together and build software and/or hardware projects in small teams over the course of a couple days. I attend a lot of hackathons and SpartaHack was one of the better organized that I've seen. Over 500 students spent the weekend building a wide variety of impressive projects - often with technology they had not touched prior to that weekend. The organizers also did a great job of providing fun activities beyond just hacking. A jazz band and a rock band each performed a set for students to enjoy during a break; a Super Smash Brothers tournament was scheduled; and a Blind Coding Contest challenged students to write code without compiling or testing to see if it would run correctly the first time in front of an audience. 

Snowman As sponsors of the event, we tried to provide some fun as well. We gave away prizes for building a snowman and for tweeting about open source technology. We also provided some loaner hardware for students; and we spent a lot of time mentoring students, which resulted in a lack of sleep this weekend.

The MSU campus has changed a great deal since I earned my undergraduate degree there decades ago. It has even changed since my son graduated from there 4 years ago. But it still felt like a homecoming for me.



Friday, March 11, 2016 4:42:00 PM (GMT Standard Time, UTC+00:00)
# Monday, March 7, 2016
Monday, March 7, 2016 12:52:00 PM (GMT Standard Time, UTC+00:00)
# Sunday, March 6, 2016

Today I am grateful to unexpectedly run into Jody​ and David in Chicago yesterday.

Today I am grateful for new shelves and less clutter in my apartment.

Today I am grateful for a home-cooked dinner last night.

Today I am grateful for dinner last night with Kevin.

Today I am grateful for:
-an overwhelming number of kind messages on Facebook yesterday.
-a birthday lunch with Chris in Grand Rapids yesterday.

Today I am grateful for my first visit to ann arbor, MI since I sold my house, including: -A personal tour of The Forge by Jeeva -Coffee with Velichka -A great crowd to attend my Azure Mobile Apps talk at Mobile Monday.

Today I am grateful to the SpartaHack organizers and hackers who contributed to a successful hackathon this past weekend.

Today I am grateful that this parking ticket was thrown out by the local police.

Today I am grateful for a day in East Lansing, MI and at Michigan State University.

Today I am grateful for a good crowd at our Azure Workshop last night at MSU.

Today I am grateful for the technology that allows me to watch TV and movies when and where I want.

Today I am grateful to Michael, Chris, Chris, and Murali for helping make yesterday's Cloud Camp a success by bringing real world experience to the presentations.

Today I am grateful to be able to ride my bike in February in Chicago.

Today I am grateful to the organizers and participants at HackIllinois who made this weekend's hackathon so successful.

Today I am grateful to Vanessa, who brought me espresso yesterday each time my energy ran low.

Today I am grateful for the hundreds of students who came to my Azure talk last night that I re-wrote yesterday afternoon.

Today I am grateful for this excellent and unexpected moving gift from Betsy

Today I am grateful for unsolicited praise from a co-worker yesterday.

Today I am grateful for an unexpected call from my cousin Kevin yesterday.

Today I am grateful for dinner with Christina last night.

Today I am grateful for a pristine blanket of snow covering downtown Chicago this morning.

Today I am grateful for Nyquil, Dayquil, and a Neti Pot.

Today I am grateful for finally paying off some sleep debt.

Today I am grateful for: -Lunch yesterday with Matt -A chance to present to a group of University of Chicago students

Today I am grateful for: -My first day with a personal trainer at the new gym -Attending Founder Institute graduation

Today I am grateful for my first game at Purdue's Mackey Arena.

Today I am grateful for the help I received yesterday unpacking dozens of boxes from my move.

Today I am grateful for an excellent week in Seattle.

Sunday, March 6, 2016 12:51:12 PM (GMT Standard Time, UTC+00:00)
# Monday, February 29, 2016
Monday, February 29, 2016 5:44:00 PM (GMT Standard Time, UTC+00:00)
# Wednesday, February 24, 2016

semjs-large When I lived in Michigan, I was a regular attendee of the Southeast Michigan JavaScript meetup – a local user group that attracted close to a hundred attendees each month and excellent speakers from all over the country.

One thing I admired about this meetup is their habit of recording meeting presentations. 

Those recordings are now available on Microsoft’s Channel 9 site. You can view dozens of these presentations at https://channel9.msdn.com/Blogs/semjs.

In the past 2 weeks, over 50,000 people have watched these videos on Channel 9.

Below are some of the more popular presentations:

Wednesday, February 24, 2016 9:11:23 PM (GMT Standard Time, UTC+00:00)
# Tuesday, February 23, 2016
# Tuesday, February 16, 2016

I spent years as a software consultant and I wrote a lot of web applications during that time.

I remember when I first discovered Active Server Pages  (which we now call "Classic ASP") and I remember how excited I was by this technology. It empowered me to write dynamic applications that the whole world could see.

When Microsoft introduced ASP.NET, I quickly embraced it and when ASP.NET evolved to MVC, I was excited to move to this new paradigm.

I even wrote a bit of JavaScript, enhancing my web applications with client-side validation and interactivity. I wrote even more JavaScript after discovering how jQuery made the DOM manipulation easier to write, debug, and maintain.

But, about 5 years ago, I stopped writing web applications. It wasn't because I disliked anything about them; it was only because my customers were looking for different solutions. So, for a few years, I wrote middleware services and web services and rich client applications and I built databases and I set up continuous integrations systems and I barely looked at web development.

But Web Development technologies did not stand still; if anything, they changed faster than almost any other area of software.

Web Development has moved largely from the server to the client. Interactions that were once handled by a form post and full page refresh are now done using Ajax calls to a web service and client-side DOM manipulation. An asynchronous callback from the server to client triggers a JavaScript function to update elements on the page, eliminating the need for a disruptive repainting of an entire page.

The user experience of a Single Page Application tends to be far superior to the older multi-page applications, so users are demanding more and developers are now writing large, complex applications that run almost entirely inside a browser.

JavaScript wasn't designed with this complexity in mind, so a number of JavaScript frameworks emerged to help developers manage this complexity. These frameworks take care of things like data binding, DOM manipulation, input validation, and separation of concerns, freeing developers to focus their efforts on business logic and other features unique to their own applications.

These frameworks help, but they come at a cost. It takes time to learn a new framework and each framework has its own set of rules and idiosyncrasies.

Even more challenging is the speed at which these frameworks are released. A year after the popularity of ember.js and backbone.js peaked, developers began flocking to Angular.js. Last year, Angular seemed to lose ground to React.js. It's hard to tell what will be the next hot JavaScript framework (Angular 2.0? Aurelia? Something else?), but the rate at which new frameworks appear is accelerating.

Of course, it is not practical to re-write every application every year, simply because you discover a new framework - even one with advantages over your existing framework of choice. And most of us don't have the time to become familiar with a new framework every few months. We have to balance the increased productivity of a new framework against the time spent learning (as opposed to building).

This is the world in which I now find myself as I return to Web Development after a half decade absence. Everything has changed and continues to change at a startling rate.

In many ways this constant innovation is exciting and energizing. But it can also be overwhelming as I try to select the appropriate tools from a plethora of options and as I spend the time and effort learning how to use these tools.

meerkats I feel like I'm in a science fiction movie where the hero departs the Earth at light speed; then returns to discover the planet is ruled by talking meerkats: All the rules have changed while I was gone and I need to adapt. Quickly.

The approach I've taken is to pick a JavaScript framework, learn it, and build an application with it. I chose Angular to start - partly because I had heard good things about it and partly because its popularity ensured I would be able to find samples, tutorials, videos, and other reference materials to assist me. Next, I'll rebuild this functionality in ReactJs, followed by some other framework, until I have a feel for the paradigms involved in JavaScript development and for the relative strengths of each framework.

You can track my progress at https://github.com/DavidGiard/tvdg and on this blog.

So far, I'm enjoying the ride.

Tuesday, February 16, 2016 2:41:04 PM (GMT Standard Time, UTC+00:00)
# Monday, February 15, 2016
Monday, February 15, 2016 6:33:27 PM (GMT Standard Time, UTC+00:00)
# Tuesday, February 9, 2016

At CodeMash last month, I was interviewed for Channel 9 about Azure Mobile Apps.

You can watch the interview below:

Azure | Video
Tuesday, February 9, 2016 4:01:34 PM (GMT Standard Time, UTC+00:00)
# Monday, February 8, 2016
Monday, February 8, 2016 1:31:00 PM (GMT Standard Time, UTC+00:00)