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”.
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…
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.
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).