Personal and development blog of Kamran Ayub

about me

Hi, my name is Kamran. I am a web developer and designer, residing in Minnesota. I’ve been programming since 2001 and I am familiar with many different languages, both web-based and server-based. I love to tinker around and think of new ways to solve problems.

Just Released the New Keep Track of My Games Beta

Keep Track of My Games

This last weekend I finally released the beta version of the new Keep Track of My Games site. It’s been a long time coming but now it actually lets you keep track of your games. The original site only let you track new games and the new version still offers notifications but now you can organize and tag your collection to track games you’ve played or haven’t played yet (backlog) or new games.

Over the next few months, I want to add social features and more syncing capabilities to services like Steam, Xbox, and PSN. I also want to add deal notifications for any game in your wishlist.

If you use the site, let me know what you think or vote up ideas on the roadmap!

written in Announcements,, Gaming,, KTOMG, News,

Ludum Dare 29 Game Jam Success!

This last weekend I spent 72 hours working on a game for the Ludum Dare 29 game jam. LD is a competition where you get a prompt for a game and then have to spend 48 hours (solo) or 72 hours (jam) and bang out a game. The solo competition has strict rules but the game jam has looser rules and allows for team development. It was a caffeine-filled rush and I hope to write a blog post shortly about how it all went down. It was a ton of fun! I worked with my friends Erik Onarheim and Josh Edeen, both primary contributors to the Excalibur.js game engine. I am also a contributor but I haven’t done a ton with the engine core, moreso the usability of the API, opening GH issues, and the website.

Kraken Unchained

In the meantime, be sure to check out the fruits of our labor! It’s a game where you play as the Kraken and you destroy ships. We originally had a ton of ideas, as you can see in our GitHub repository, but with only 72 hours your scope is pretty narrow. Still, we’re very happy with what came out and we’re glad that Excalibur.js pulled through!

Play Kraken Unchained. Vote for it on the LD site. You can also take a peek at the post-LD version which is in on-going development. It does support touch and fixes some issues in IE10/11.

You can also view the entirety of the source code on GitHub!


Getting WebSockets to Work on Windows Azure

I was banging my head against the wall for the past hour or so wondering why I was falling back to XHR polling when I deployed my Node.js application to Azure. I’m using socket.io and everything looks like it’s in order, works locally, etc. It was failing with a WebSocket handshake error.

What I saw in the Chrome developer console was something like:

Error during WebSocket handshake: Unexpected response code: 502

In my Azure Node.js console (azure site log tail SITENAME), I was seeing EPIPE errors.

It turns out, this little tidbit from the original Windows Azure blog post on Web Sockets did the trick.

Modify your web.config and add:

<webSocket enabled="false" />

To your system.webServer configuration. Also, another good point in that blog post is to use SSL, since you get SSL for free with a *.azurewebsites.net site.

Hope this helps someone else out there. This should be added to the official Azure tutorial on using web sockets with Node.js.

written in Azure, Node.js, WebSockets

5 Tips to Improve Your ASP.NET MVC Codebase

I have an urge to write a quick list of tips for improving an ASP.NET MVC application because I just got done reviewing some code for a support ticket at work. It’s still fresh in my mind and I wanted to get some of my thoughts down to share with others. If you have been doing MVC for a while, I don’t think much of this is news. It’s more for those of you that don’t do MVC often or are new to MVC.

written in MVC, Tips Read on →

Just Released: Have I Been Pwned?

I just released Have I Been Pwned? to the Windows Phone store. It’s a tiny, tiny app that only took me a couple hours to build. You can find the source code on GitHub.

HaveIBeenPwned.com is a website created by Troy Hunt, a security MVP, that checks to see if your email address appears in a database of all the breached email addresses in prominent hacks like Gawker, Sony, and Adobe. I’ve definitely been pwned, so it’s a good service to use to quickly see if you need to change your passwords.

I plan to add the background task soon but I wanted the initial release out there so that I can just submit updates to it. If you want to contribute, send me a pull request!

written in App, Windows Phone

Just Released: Bowling Calculator App


I just released my second Windows Phone app, Bowling Calculator. It’s an open source app that I created when I gave my talk at TCCC15. If you’re a fellow developer, feel free to send me a pull request with any bug fixes or enhancements. I want to keep it focused on the simple use case of scoring a bowling game; I don’t need it to track multiple games or keep track of history. It’s purpose is to serve as a production-ready sample app and to also be good at what it aims to do.


MiniProfiler RavenDB Pull Request Accepted

I just got a notification that my pull request for adding RavenDB support to MiniProfiler went through! It’s always really cool to see your contributions get pulled in. The MiniProfiler guys were really easy-going, @yellis was even kind enough to take on the testing. That kind of acceptance for pull requests is great to see because it makes me feel good about contributing and is a bit less intimidating.

written in GitHub, OSS Read on →

Kamranicus: Now With 100% More Octopress

I’ve just pushed a new version of Kamranicus that is built using the static site generator, Octopress. Octopress uses Jekyll to generate static sites.

I decided to switch because I can leverage GitHub Pages which are free and I can use a custom domain. It’s a perfect fit because I can just piggyback on GitHub’s cloud hosting for free and not worry about incurring any downtime due to database issues (something that happened more than a few times with the last ASP.NET MVC and SQL-based site).

I really enjoyed setting up Octopress, it was easy to migrate my posts. I highly recommend it! It would be even better to have a .NET/C#-based static site generator that supported all of Jekyll’s configuration options, except with Razor-based layouts and templating. Mmmm, that sounds pretty good. Someone get on that.


Just Pushed: Blackjack Sample Game

It’s finally done! I sat down today and dug through my backups to find my original WPF BlackJack game I wrote way back when WPF was really cool. I converted it to VS 2013, made sure it still ran, organized the solution, and hit deploy. It’s now up on GitHub for your learning pleasure. There are no Nuget packages here! This was before Nuget where I had to find code to learn from and, ahem, copy. The deck is also something I found online. If I find the source, I’ll be sure to attribute it properly.

Code: https://github.com/kamranayub/blackjack/

This was a sample game I wrote to learn OO design and WPF. There’s some cool animations, sound effects, and a pretty fun Blackjack implementation. It’s very “simple” and should be easy to digest. I never got around to implementing all the cool AI but now that it’s on GitHub for all to see, maybe someone will pick it up.

I also think it’d be fun to port it to Windows 8 C# and XAML. It could be an app I release on the store, free and open source.