Skip to content

Instantly share code, notes, and snippets.

@bevacqua

bevacqua/foo.md Secret

Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bevacqua/5b8560d36a4d4ff293a3 to your computer and use it in GitHub Desktop.
Save bevacqua/5b8560d36a4d4ff293a3 to your computer and use it in GitHub Desktop.

Like most people in our field, I've always been fascinated with problem solving. The painful thrill of hunting for a solution, the exhilarating relief of having found a fix — there's nothing quite like it. When I was young I really enjoyed strategy games, such as Chess, which I played ever since I was a kid; StarCraft, a real-time strategy game I played for ten years straight; or Magic: The Gathering, a trading card game that can be described as the intersection between Poker and Chess. They presented plenty of problem solving opportunities.

Ultima Online (UO), a massive multiplayer online role-playing game (no wonder they abbreviate that as MMORPG), wasn't any different. I played in a local server that turned out to be an open-source1 implementation written entirely in C#, all the way down to networking packets. The administrators, who had no programming experience, slowly started trusting me to handle minor bug fixes by literally emailing source code files back and forth. I was hooked. C# was a wonderful, expressive language, and the open-source software for the UO server was very amicable and inviting — you didn't even need an IDE (or even know what that was) because the server would compile script files dynamically for you. You would be essentially writing a file with 10-15 lines in it, inheriting from the Dragon class, and adding an intimidating text bubble over their head, or override some method so that they'd spit more fire balls. You'd learn the language and it's syntax without even trying, just by having fun!

Eventually, a friend revealed that I could make a living out of writing C# code — “You know, people actually pay you to do that”. That's when I started developing websites again, except I wasn't just using Front Page and piles of <blink> and <marquee> tags or Java applets, just for fun, anymore. It still feels like a game to me, though.

A few years ago I read The Pragmatic Programmer2, and something clicked inside me. The book has an assortment of solid advice, and I can't recommend it highly enough. Among that advice, the authors advocate that you get out of your comfort zone and try something you've been meaning to, but hadn't gotten around to. My comfort zone being C# and ASP.NET at that point, I decided to try Node.js, an unmistakably UNIX-y platform for JavaScript development on the server-side, certainly a break from my Microsoft-ridden development experience thus far.

I learned a ton from that experiment, and ended up with a blog3 where I would write about everything I learned in the process. Around half a year later I got an idea where I'd put my years of experience in C# design into a book about JavaScript. I contacted Manning and they jumped at the opportunity, helping me brainstorm and turn raw ideas into something more deliberate and concise. While this book relies on specific tool and framework versions, as books about web technologies usually do, it separates library-specific concerns from the theory at hand. This is a concession to the fact that tooling changes frequently in the fast paced web development arena, but design and the processes behind the tooling show a much slower rhythm. Thanks to this separation of concerns, I hope this book stays relevant for years to come.

Nicolas Bevacqua
Buenos Aires, Argentina

1 You can check out the RunUO website at runuo.com, although the project isn't maintained anymore.

2 The Pragmatic Programmer: From Journeyman to Master (Hunt, Thomas – 1999) is a timeless classic you should seriously consider reading.

3 You can read my blog, “Pony Foo”, at ponyfoo.com. I write articles about the web, performance, progressive enhancement, and JavaScript.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment