# 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)
# Monday, January 25, 2016
Monday, January 25, 2016 12:09:00 PM (GMT Standard Time, UTC+00:00)
# Thursday, January 21, 2016

I moved to Chicago in 2014. Although I had spent a lot of time in this city prior to my move, much of Chicago was a mystery to me. I knew a few square miles of the Loop and the area just to north of the Loop; and I was sure I would become familiar with Old Town, where I rented an apartment.

But Chicago has 77 Community Areas and over 200 neighborhoods. And I knew little or nothing about most of them. I wanted to get to know them better.

My first thought was to take some time driving around the city - either randomly or in an organized pattern, but that would have given me only a view from my car and no taste of the actual neighborhoods, so I rejected this idea.

Heritage General Store

One day, I happened upon a list of the best coffee shops in Chicago.  Those who know me, know my fondness for fine coffees and will not be surprised that I was drawn into this list.  I formed a plan.

I decided to visit each coffee shop on the list and use this journey as a way to explore the neighborhoods of Chicago. Every cafe except Hard Boiled Coffee offered a latte on its menu, so that’s what I ordered. Sometimes I accompanied the caffeine with food. Mostly I went alone, but my brother Dan and I visited 2 places in Pilsen when he was visiting from Australia. I also visited a few places that were not on the list but that were close to my home or where I happened to be on a given day.


The coffee shops themselves were just a means to an end. My goal was to see the city.  While visiting each cafe, I was able to also visit a new neighborhood and absorb its charm. I experienced the family atmosphere of Ravenswood and the bustle of Wicker Park. I spent time walking around the Mexican culture of Pilsen and the stylish area of Boys' Town. I found areas filled with artists, with rushing businessmen, and with working class people.

The Perfect Cup

As for the cafes themselves, the decor ranged from the simplicity of Big Shoulders Coffee to the hodgepodge of Jackalope Coffee and Tea. A giant cat painted on a garage door looms over the backyard of Dark Matter Coffee at the Star Lounge, while I found a man repairing a bicycle in the back of the Heritage General Store. I don't have a favourite coffee or cafe, but I will say that all were good and I would recommend any of them.

Dark Matter Coffee at Star Lounge

If you decide to make this same journey, be aware that 2 of the coffee shops on the list (Bad Wolf Coffee and Knockbox Cafe) have closed and that Hard Boiled Coffee now exists only inside the Horse Thief Hollow Restaurant in Beverly.


And I feel now like I know Chicago a little bit more for having experienced her neighborhoods.

I'm still deciding what my next urban journey will be. I may explore the top Chicago Style Hot Dogs.

More photos

Thursday, January 21, 2016 1:12:00 PM (GMT Standard Time, UTC+00:00)