# 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)
# Sunday, February 7, 2016

Today I am grateful for yesterday's Hackathon.

Today I am grateful for my first time recording in the Microsoft Channel 9 studios.

Today I am grateful for yesterday's highlights:
-Coffee with Suzanna
-Lunch with Glenn
-TechReady party at Century Link Field

Today I am grateful for lunch with Tim yesterday.

Today I am grateful for dinner last night with Ted and his family.

Today I am grateful for a rare evening, hanging out with much of my team in-person.

Today I am grateful for an evening watching Improv comedy last night.

Today I am grateful I was able to finally make it to Seattle last night.

Today I am grateful for lunch with Nick yesterday.

Today I am grateful for my first ever Illinois basketball home game at Assembly Hall.

Today I am grateful for coffee with Chris yesterday.

Today I am grateful to the neighbor who stopped by while I was moving yesterday and offered to go grocery shopping for me.

Today I am grateful for lunch with Kristen yesterday.

Today I am grateful for the ribs at Twin Anchors.

Today I am grateful for the Microsoft Holiday Party at the Mid-America Club high above Chicago last night.

Today I am grateful for coffee with Manohar yesterday.

Today I am grateful that Marc, my personal trainer is still working with me, even though we were supposed to finish in December.

Today I am grateful that my calendar is mostly clear the next 2 days, so I can get some actual work done.

Today I am grateful for dinner last night with Paul and Jeremy. .

Today I am grateful I was able to find the packages this morning that FedEx lost yesterday.

Today I am grateful for Dr. Martin Luther King, Jr., who confronted hatred, violence and racism; and responded with peace and the word of God.

Today I am grateful for all the independent coffee shops in Chicago.

Today I am grateful that the story of my friend Bill was told during an executive meeting with the Microsoft CEO yesterday.

Today I am grateful for a chance to use the new MTC studio for the first time.

Today I am grateful to chat with Becky last night.

Today I am grateful for dinner last night with Adam at the Old Town Pub.

Today I am grateful to all the guests and viewers who made it possible for #TechnologyAndFriends to reach 400 episodes.

Today I am grateful for: -The strangers who helped push my car out of a snow bank yesterday. -Watching my first game at IU's Assembly Hall.

Today I am grateful for an afternoon and evening with my son Tim.

Today I am grateful to Brian Prince and the other organizers of #CodeMash, who worked so hard to put on another excellent conference this week.

Today I am grateful for: -all those who helped us build toys for special needs children yesterday. -a party at a water park last night.

Today I am grateful for an excellent steak dinner last night with friends, courtesy of Betsy.

Today I am grateful that Best Buy exchanged my broken SD card, even though I didn't have the receipt.

Today I am grateful to see so many old friends last night in Sandusky - many for the first time in a long time.

Today I am grateful for this large latte that Sarah just bought me.

Sunday, February 7, 2016 11:02:56 PM (GMT Standard Time, UTC+00:00)
# Monday, February 1, 2016
Monday, February 1, 2016 11:54:00 AM (GMT Standard Time, UTC+00:00)
# Saturday, January 30, 2016

I admit that I am a novice when it comes to Git. But I recognize the importance of this version control system, so I documented the most important commands.

Git is a distributed version control system, so it is necessary to commit changes to a local repository (a repository on your local computer) before pushing those changes to a central repository that can be shared by others.


My needs are simple. In the vast majority of cases, I want only to get the latest code, make my changes, save them to a local repository, and share those changes with others. Git contains a lot of commands, but the following git commands suffice for most of my needs:

  • git init
  • git config
  • git add .
  • git pull
  • git commit
  • git push

Here is a brief description of each command:

git init

Intialize an empty Git repository

git config

Store information, such as username and email address in a local config file, so you don't need to re-type it later.

git remote add

Associate the local git repository with a remote repository

git add

Adds files in the current folder to the git repository

git commit –m “Comment about change

Commits changed files to the local repository. The “-m” switch allows you to provide a comment describing the code you are committing.

git pull repositoryname branch

Retrieves code from the remote repository and merges it with your local code

git push repositoryname branch

Pushes any changes from your local repository to a central repository


My usual workflow is below. It assumes my code is in the local directory c:\development\MyProject and that the remote repository is named “myproj”.

Starting a new project

At github.com, create a new repository

cd \development\MyProject
git init
git config --global user.name "David Giard"
git config --global user.email djgiard@hotmail.com
git remote add origin https://github.com/DavidGiard/nameofmynewrepository.git
git add .

git commit -m "Initial revision"
git push origin master 

After I make a change and test it and it seems to work:

git pull origin master
// Test that the application still works after pulling and merging other developers’ changes
git add .
git commit -m "My change"
git push origin master

Saturday, January 30, 2016 9:23:21 PM (GMT Standard Time, UTC+00:00)