Chris Gomez

Development topics for the indie programmer

Making your first web page at the International Back to School Hackathon

This weekend I attended the We Connect The Dots International Back-To-School Hackathon.  The students made websites dedicated to solving global problems in just 48 hours!  That included the time to learn to make web sites!  This was a great experience and I am really proud of the work that was completed.  The web sites look great and the students are using the same tools and frameworks professionals use!

Here is a link to the official recap by We Connect The Dots.  You'll see the smiling faces of our participants there, too!

After the event is over, you might want to learn more about web development.  I tracked down some good places to get started.  There are great web sites that will help you learn to build web sites and make them more and more awesome with JavaScript.

There’s plenty of resources out there for you to learn to make web pages.  Here’s a nice list to get started:

Places to learn

Codecademy – Learn to code right in your browser.  You can sign up for a new account using your Gmail or Facebook account.

FreeCodeCamp – The idea here is that you complete lessons and then write code to help non-profit organization that need web sites built.

Videos you can watch

Microsoft Virtual Academy courses

Microsoft Virtual Academy is completely free.  If you want, you can use your Microsoft Account to log in.  If you do that, you will get credit for the courses on the site and you earn points.

But I tested not logging in and it all still works (thank you Microsoft!)

There are hundreds of free courses here, but you might like these:

HTML5 & CSS3 Fundamentals: Development for Absolute Beginners

Developing in HTML5 with JavaScript and CSS3 Jump Start

Developng 2D Games with HTML5 – If you master the previous two, you might try this one out.  It’s a little more advanced, but you can learn to make games that work in your web browser or on your phone!

Online editors

You can code right in the web browser using these

Cloud9 – This online editor works right in the browser and you can log in using your GitHub account.  You can save code directly to GitHub and have it deploy to Azure Web Apps in seconds.

CodePen – An online editor where you can test out HTML, CSS, and JavaScript snippets quickly.  Ignore the paid plans and look for the free plan

Reference – This really is the best set of JavaScript documentation on the web. – This was the reference site at the Darby, PA site that the kids used to compile “tips and tricks” for how to do different things.

Honorary Hacker

Our Honorary Hacker tells us about her website:

Philly.NET Hands On Lab - Getting Started with Git

Thanks to everyone who attended the Philly.NET Hands On Lab tonight!  I wanted to post some of the links and concepts I talked about so you wouldn't have to take notes during the meeting.

I find that git is unfamiliar to many "Windows" or "Microsoft" developers but yet we see it being integrated into more and more of our workflow whether we are ready for it or not.  You're seeing built-in support in Visual Studio and Visual Studio Code and the ASP.NET team is building ASP.NET 5 in the open in GitHub.  The Core CLR team is building the new .NET "Core CLR" there too.

To that end, I am working on a video series that goes much more in depth, so watch this space for announcements when they are ready.

But let's recap what we looked at in the lab!

GitHub Desktop - This is how I install Git.  I get the GitHub desktop tool and the posh-git Powershell extension right away.  It's sort of a "just works" approach for me.  Purists: feel free to complain.

My sample repository

To be honest, you should be able to create repositories and work on them without needing a sample, but if you want to try contributing to something, I'd appreciate help fleshing out my ES6 Demos that was the basis for a presentation in December.

Also, if you have anything to contribute to any of my samples, feel free!  If there's something you'd like to see me work on in a sample, open a GitHub issue!  Social coding in action!

GitHub-like experiences for the enterprise

You might choose to host Git at work if you aren't interested in cloud-based hosting or paying for privacy.  Here are some options.


Bitbucket Server - This used to be called Stash

This list is not complete.  It's a place for you to start.

I have had personal experience with GitLab in real-life work and I've tested out Stash.

Other Git GUI Tools

SourceTree by Atlassian - Works with Mercurial and Git.  Like GitHub desktop it "steers" you to BitBucket, but works with any repository you want.

SmartGit - A commercial tool, which is tough in the days of free tools, but worth a look.

Podcasts about Git

I talked about Git and Social Coding on the Static Void Podcast with Jess Chadwick and Todd Snyder

Bill Wagner was just on .NET Rocks with an excellent show on Git and GitHub fundamentals.

ASP.NET 5 on Ubuntu Linux "from scratch"

[Now on GITHUB!  I've started a GitHub repo for automating the setup of ASP.NET across platforms.  It currently supports Ubuntu and CentOS flavors, but I plan to keep testing and updating, and include an automated setup for Windows]

[Update: The following is working with ASP.NET beta 6 and was tested on August 22, 2015.  I'll try to keep the post updated, but for one thing I have seen in Announcements for beta 7 that they are changing the dnx command syntax so that may need to be updated in the future.]

[Update: August 22, 2015: I was having problems with dnu restore. The script has been updated to add an environment variable to .bashrc to give Mono more threads per cpu, which made dnu restore much more reliable.]

I've been working at getting ASP.NET 5 running on Linux.  This post doesn't replace the great work of the documentation at the ASP.NET repos at github, or the great work of those working on the Yeoman generators for aspnet.  This merely stands on their shoulders.

I wanted a single script I could use to bootstrap a Linux VM.  After working at it and testing again and again for a few days, here is the script I've come up with for now: Gist on Github

This follows the instructions (essentially) for installing mono, libuv, and dnvm.  Then it installs node and yeoman (remember, I am basing this on a clean install of Ubuntu 14.04 LTS) and puts you just a few steps away from running an ASP.NET template.

How clean is that Ubuntu install?

My Ubuntu installation for this test is via VirtualBox 5.0.2.  The host is Windows Server 2012 R2.  I did accept the third party software and didn't skip anything during the installation.  I let the system get all the Software Updates.  Then I installed the VirtualBox Guest Additions just to make things smoother.  Finally, I installed Atom text editor from

Getting the script

Method 1: Copy/Paste into Atom

If you enable the Shared Clipboard and at least Host to Guest (Bidrectional works too), I've opened the VM, opened atom and then copy and pasted the script home folder as

Then I run:


I had no interruptions other than needing to elevate for the sudo portions of the script right when it started.

Method 2: The one liner

Here, I copy the file down using wget (which seems to be preinstalled) and immediately run bash, but after authenticating for sudo elevation, I can walk away.

wget && bash

"How did this happen?" Q&A

1) Why not "sudo bash"?  Because the dnvm download in particular didn't really want to be installed as root.  I was much happier having that portion installed as my user.  Since the dnvm script updates .bashrc, if you download dnvm as root, you have trouble with the various utilities (dnvm, dnu, dnx) running in your user environment.

2) Why did you wget and then run via bash instead of piping curl output to bash?

A month ago, that sentence would have been meaningless to me.  I am not sure if it is truly literate or sounds like a first grader.  In any case, I really wanted to download and pipe the script to bash.  But what I found was, the script would halt after mono was installed.  I don't know why and I found that getting the file and then calling bash on it worked.  Why wget instead of curl?  No reason.  curl -L [url] > [filename] should work, too.

Script's Done

DNVM and the Mono environment won't be set up for you.  The shell will tell you it has no idea what dnvm is and you really need an environment variable set before you run dnu restore later.  The ASP.NET team's script adds dnvm to .bashrc, and after some reading, I decided to export the Mono environment variable there, too.  Let me know what you think about these choices.

You could always open a new shell but I found manually running:

source .bashrc

did what I wanted and I could continue on from here.

Now you take over

The script ends with mono, libuv, dnvm, node, yeoman, and the aspnet generators installed (along with dependencies).

You still need a version of aspnet to be installed (dnvm list shows none).  So:

dnvm install latest

After this was done, I still need to generate an ASP.NET 5 project using:

yo aspnet

So far I've tried the Console and WebApplicationBasic templates.  After one is created, it will give you a quick rundown of getting them running.  But for review:

First you need to cd to the folder you created the project in and restore NuGet packages:

dnu restore

Then finally, after all that I could run the Console application with (from beta 7 on, drop the period and use dnx run)

dnx . run

And I could run the WebApplicationBasic application with (from beta 7 on, drop the period and use dnx kestrel)

dnx . kestrel

Once the WebApplicationBasic template is running, point to http://localhost:5000 in your browser.

How does this work for you?  I greatly appreciate suggestions, as I'm coming over to Linux from a career spent in Windows.

Visual Studio 2015 is here! How’s ASP.NET 5 coming?

Visual Studio 2015 is RTM today and there was a live launch event.  Besides a typical keynote highlighting new features, there was also an in-depth feature about building a real application with the new Visual Studio.  Along the way there were tons of great interviews and tidbits of information.

I don’t want to forget everything I looked at today, so frankly this post is mostly about keeping track of all the links to look at over the next few weeks:

Recordings of the Release Event

Page one is filled with sequential videos of the keynote and then on toward In The Code, the special feature I was mentioning earlier.  If you skip over the out-of-place Git Branches and Policies video that got placed first, you can relive the event by watching these videos.

But don’t stop there.  Page two and beyond have more short videos that expose new features of Visual Studio 2015.

Go Get Visual Studio 2015 now

If you just want a free version, get Visual Studio Community.  It’s all the features of Visual Studio Professsional, except it’s free and you can use it on small teams or indie development.  Publish your first app, web site, game, or whatever.

ASP.NET 4.6 and .NET 4.6 RTM

ASP.NET 4.6 is finished and “in the box”.  This release is similar to past releases with some nice new incremental features for WebForms, MVC, Web API and so on.  Alongside is the .NET Framework 4.6.  If you’re a seasoned .NET developer, this will all seem like a familiar upgrade progression.  It works much the same as you remember.

Here’s a nice video describing the updates to Web Forms in ASP.NET 4.6:

Jeff Fritz blogged about ASP.NET 4.6 at the top of this post (that goes into general editor improvements and ASP.NET 5, too)

Okay, so how about ASP.NET 5?

As stated above, Jeff’s post talks about ASP.NET 5 beta 5 being “in the box” of Visual Studio 2015 RTM.  The most important thing to remember here is that ASP.NET 5 is NOT DONE.  I am truly concerned about this and definitely hope the word gets out before people get frustrated with ASP.NET 5 in this release.

But here are some links I want to look at that have to do with this release:

The ASP.NET 5 Roadmap – We have a good release schedule through the end of the year and we’re looking at a possible Q1 2016 release.

The biggest takeaway I got from all of this is SignalR will not be ready.  I’m a big fan of SignalR and I’ve got to dig in and see what we’re going to have and when.  Web Pages also won’t be ready.  I’ve always thought of Web Pages as a gem that is too often overlooked.  There are plenty of web sites that would work just fine just using Web Pages and not getting bogged down in MVC or something larger.

Now, what about stuff Jeff Fritz didn’t blog about?

In an effort not to just reblog here, I loved these videos on ASP.NET 5:

Up and Running with ASP.NET on Linux – Mark Rendle  - Entertaining and informative.  One thing it really brought home (unintentionally) is how the age of package managers makes us that much more dependent on being always online.

Omnisharp: .NET sans Microsoft – Mathew McLoughlin – Nice look at using the other editors that are being supported in this really cool open source project (plus Visual Studio Code).  Makes you want to jump in and and help, doesn’t it?

(Don’t forget to look at the OmniSharp site itself)

Migrating your API from Web API 2 to MVC 6 – Filip W – Awesome and insightful look at how it’s REALLY going to feel when you port a Web API over to MVC 6.


ASP.NET 5 documentation seems to be in a few places.  The team is trying out some different things and still supporting the usual places to find things.

ASP.NET 5 documentation on Read the Docs:

ASP.NET 5 on the ASP.NET site:
Okay, so this isn’t really documentation, but there are some pages here that are documentation like posted by the teams tech writers such as:
Creating a Web API in MVC 6
View components and Inject in ASP.NET MVC 6

And then there’s stuff to read on the wiki in the GitHub repo too

ASP.NET Community Standup

And if you aren’t watching the (usually) weekly ASP.NET Community Standup, then WHY NOT?

ASP.NET Community Standup YouTube Playlist

Philly Code Camp – Web developers are already game developers

Thanks to everyone who attended my session: Web developer by day, Game developer by night at Philly.NET Code Camp 2015.  I’m so grateful that so many people would take the time out from important topics in the .NET world and beyond to come have a little fun learning about hobbyist game development.  The key message that I hope was well-received is ASP.NET developers are well-suited to put their skills to work building high performance games.

Game development seems like a black art.  If you were a career developer (on any platform) you often found the style of program flow to be foreign if you were switching from event driven programming to game programming.

Modern web development frameworks and events are working pretty hard to minimize the boilerplate code you have to write in your game loop.  In some cases, it even begins to feel somewhat event driven again.  I don’t want to oversell that.  Even in the code we wrote during the Code Camp session, we were still thinking about “what do we have to update every frame”. 

We looked at Phaser, a JavaScript framework that helps you build fast action video games.  Phaser offers plenty of great tools to help you “set-and-forget” attributes of your game components and then let the engine take care of it. More...

A DevOps “Jump Start” Using Azure Web Sites and GitHub

Previously, I discussed that I started a side project to discover better ways to build “web apis”.  In this case, I am using ASP.NET Web API but I think the lessons I am after could be applied to many technologies and clouds.

One of the things I was looking for was some light continuous deployment after code is committed.  At the same time, I wanted to see what the process was to get different kinds of web sites, using different frameworks and technologies, running on Azure Web Sites

After all, the marketing says it supports .NET, Java, PHP, Node.js, and Python.  It also claims continuous deployment.  So is it faster, easier to use, and more fun?

What To Deploy?

I created a repository on GitHub called WebJumpStart for the purpose of testing out a few tricks Azure Web Sites has up its sleeve. 

In it, you will find three web sites. 

  • AspNetMvc is an ASP.NET 5 MVC site right out of the gate after File > New Project. 
  • HelloWorld is just static content files (simple html/js/css files). 
  • NodeExpress is the Node Express starter site, also unmodified (it is a bit out-of-date at this point, but the magic of npm ensures the versions I’ve picked in package.json are there for me to use).

Note that only one of these projects is based in ASP.NET.  HelloWorld and NodeExpress could have been built with notepad, Sublime Text, Brackets whatever…


A path to happiness with ASP.NET Web API

I recently started a side project to learn how to better compose a “web api” project.  I am using ASP.NET and ASP.NET Web API, but there were a lot of things I really wanted to drill down on.

First of all, I have seen many a project at various places I’ve worked begin with the ASP.NET templates.  Obviously, this is nothing new.  Many a team has gotten the chance to work on a brand spankin’ new ASP.NET project and hits File > New Project in Visual Studio and starts coding away in what the project template spits out.

But I really believe the project templates are meant more for exploration of what is possible.  You look at them to see how the framework operates and some ideas of what you can do with it.  When you start wanting to go down the road of laying out the project so it’s actually easier to code, deploy, and maintain… well that’s an entirely different story.  And since I may find myself in the situation of being asked to hit File > New Project someday, I’d like to have practiced with starting on a truly EMPTY project and composing the building blocks that will make it deliver real business value quickly and EASILY.

So I wanted to come up with a non-trivial project that I might actually have a use for.  And I came up with the following.

The Project

I’d like to have a small website that allows me to enter dues payments for residents who live in a homeowner’s association.  Each quarter, the residents have dues to pay, and it’s nice to be able to record some information about the dues payments.  I’ve found it’s nice to keep track of when the payment was received, deposited in the HOA account, what the check number was, and how much they paid (because it’s not always the balance due!).  I’d like to be able to build in the logic to automatically assess fines for being late and eventually generate the billing statements (perhaps either for display in the site or by email).


Intro to Git in Visual Studio

More and more, my topics are going to involve you downloading and looking at code.  And that will mean you can get the code from GitHub.  The idea of “social coding” has gone beyond the hot new fad to being the standard for open source projects.

Even for Microsoft developers who are used to waiting for CTP’s and Preview SDKs, this is changing rapidly.  The ASP.NET team has embraced open source, and are developing the next generation of ASP.NET in the open, and it’s all available to view and contribute to on GitHub.  Even TFS supports Git repositories now and so do the other sites in the “social coding” space.

If your daily home is Windows and Visual Studio, here’s a short primer on how you can get started.

Okay, I have Visual Studio, what else do I need to install?

Right now, nothing.  Let’s start with Visual Studio’s capabilities and move on from there.

At the Philly.Net Hands-On Lab last September, I demonstrated a few tools by using a GitHub repository.  We’ll practice cloning this repository first.

The purpose of this post, and this lab, is just to show you how to use the Git tools built into Visual Studio.  As you get more advanced, there are a lot of other great things you can do with Git, and I’ll have some tips for you on that as well.

Get the URL for the repository

If you head to, you’ll find the repository.  First off, you could just use the Download ZIP button in the lower right to get the code.  But instead, copy the clone url.  We can use that inside Visual Studio.

The url is:

Open Team Explorer in Visual Studio 2013

You can use any Visual Studio edition to do this.  Whether you have Ultimate, Professional, Community or an Express Edition, this works.  Since this project is an ASP.NET Web API project, you COULD use Visual Studio 2013 Express for Web.

But don’t do that.  If you need a free version of Visual Studio, get Visual Studio Community.  It is equivalent to the Professional version, but it is absolutely free for you to use to get started learning to code.  Get it here.  Do not bother with the Express editions anymore.  It is high time they were unified again and kudos to Microsoft for doing it.


3D Game Development: Sculpting Worlds with Unity

Last night at Philly GameWorks in Malvern, we learned the basics of using the Unity game engine to create an outdoor world you can then explore using standard first person gaming controls.

We’ll be working more with Unity and other game engines at the meetup, and we want to see you there.  There should be no worries that you haven’t been keeping up as we strive to have meetups that cater to the beginner and the Philly GameWorks enthusiast.

(You can download this ZIP file stored on Dropbox and run the Windows executable if you want to see the product. Hopefully that works for you if you are interested:

We hadn’t written a single line of script code and we had built a world that we could explore in a first person viewpoint complete with a beautiful sky, mountains, hills, trees, grass and environmental sounds.


We used the standard installed Character Controller package to insert a First Person Controller that you could use to walk around your creation when playing the game right inside Unity.


Start your journey in code

It is cliche to say a journey of a thousand miles begins with a single step.  Nevertheless, starting a journey to become a software developer is going to take awhile.  Therefore, my advice is you start today.

When I related how my journey began when I was ten years old, it isn’t to scare you into believing that you only have a few decades to go.  Not every moment of every day of that time was spent improving as a developer.  I gave up on the whole thing for a few stints of years at a time.  Then I became reinvigorated and got a few jobs.  Next thing you know, it’s a career.

What I believe you must do is begin immersing yourself in the discipline.  This doesn’t mean immersion as in fanatic devotion.  It means that you should do what you can to start listening to voices in the development community.  It means you should try to build some meaningful application.  It means you should code. More...