Tag: Programming

Introduction to Recursive Descent Parsers with C#

Parser? Aren’t parsers utterly boring? Well no, quite the opposite. Lately i have been solving some of the programming challenges on talentbuddy and bumped into task to create parser and solver for simple arithmetic expressions in string format, something like this: “(2+2)-(3-(6-5))-4”. On first thought this seems trivial, but only until the moment you start implementing it. If you are doing it the wrong way, for example by using regular expressions, you can bump into some interesting problems, and also develop a solution that works for most cases but then fails on edge cases etc. The proper way Fortunately there are…

Awaiting for that Button click

Why wait when we can await? I believe that most of C# developers know about the new language features for asynchronous programming with async and await keywords but how many of us are really exploiting them to full extent? Recently i was watching the excellent C# Language Internals course on PluralSight.com by Bart De Smet and came across very cool idea of using Await to wait for Button to be clicked – which pushed me to write this post and share it with everyone. By implementing a custom awaiter for Button (via extension methods) and hooking up to the Click handler…

Marbles game for Windows 8

Finally my first Windows 8 game called Marbles is finished and available in the Windows Store! That partially explains why i did not wrote any posts on this blog for almost a year 🙂 It’s been emotional! Seriously, it has been quite a journey. First i was learning XNA, then Monogame, and then game development in general. I always wanted to write a game (aren’t we all?) so finally i decided to really do it! At first i started very enthusiastically and tried building a 2d platformer game, and after solving most of technical problems like character and level rendering…

Dot Net Gotcha #2 – Loop variables and Closures

This one is my favorite. Can you guess the output of this simple console application: One would expect to see numbers from 0 to 9 but here is the actual output of the app: OK that’s strange right? It turns out its like that by design. What you have there is a Closure over the loop variable. And closures in C# are done around variables and not around specific values of those variables – so that means that lambda expression gets to use the actual reference to the closed variable. Let me explain in little bit more detail: In first loop…