DZone recently had an opportunity to sit down with Brian Peek and Dan Fernandez, authors of 'Coding4Fun: 10 .NET Programming Projects for Wiimote, YouTube, World of Warcraft, and More'. In this interview, they discuss the book, the Coding4Fun website, and a variety of other fun topics.
DZone has made available chapter 1 from Brian and Dan's book, which can be downloaded here. Also, through 20 March, 2009, you can buy the print or ebook version of Coding4Fun for 30% off the list price, courtesy of DZone and O'Reilly Media. Just use promo code CD4FN.
Competition Time! DZone, together with O'Reilly Media, are happy to offer you the chance to win a copy of Brian and Dan's 'Coding4Fun'. To be in with a chance of winning just tell us what kind of projects you code for fun. (Leave a comment below.) We will then randomly select a winner based on the entries received by 20 March, 2009.
DZone - What do you do at your day jobs? Give us the nickel tour.
Brian Peek - By day I work for ASPSOFT, Inc., a .NET consulting company located outside Orlando, FL. I live and work from upstate New York and telecommute. My daily grind consists of your average .NET business and health care applications. Sadly, it's usually not very exciting...
Dan Fernandez - I work for Microsoft as an Evangelism Manager in the Developer and Platform Evangelism team. My job consists of a lot of things including building out our online community strategy, hosting This Week on Channel 9 - a weekly show covering developer news, managing a team that publish videos to the Evangelism Network, a set of community sites including Channel 8, Channel 9 and Channel 10 and of course content for Coding4Fun.
Brian - For me, it was to get even more people interested in coding for fun. There are tons of books on the "boring" stuff, but it seems there aren't many titles on the hobby side of development. As developers, we spend a lot of time in front of a computer writing and debugging pretty "serious" things. It seems the hobbyist developer isn't as prevalent as s/he once was. We hope to change that with the Coding4Fun site and book, showing that there are plenty of interesting and fun things to be done with computers, and that you can learn valuable skills and information in the process.
Dan - For me personally, it was to try and inspire software developers, to excite their hearts and minds if you will.
DZone - Am I a geek or isn't ALL coding fun? What types of applications qualify as 'Fun'?
Brian - I'm not sure ALL coding is fun. I've worked on plenty of projects that have all but sucked the life out of me... :) But it is true that any project can be fun. For me, doing interesting things with hardware, like the Wiimote, or writing games, or even mashups are fun because they allow me to think about new technologies in interesting ways that don't normally fit into my regular job. I try, but nobody wants a Wiimote interface for their back-end accounting software...
Dan - Coding4Fun isn’t about saying that certain types of coding is fun and certain types aren’t, but rather to show how you can use your software development skills in your personal life. So if you are a World of Warcraft player, you can build a .NET application to read and write data out of Wow. If you own a Nintendo Wii, you can learn how to build a R/C Remote controlled car that you drive using your Wii controller, or if you travel a lot, perhaps you want to download YouTube videos with you or connect up to your home PC to watch videos on your Media Center, that’s what Coding4Fun is, it’s about taking the things you are passionate about in your personal life adding a little code and coming up with something really compelling.
DZone - What was your favorite project you created for the book?
Brian - "Alien Attack" is probably the favorite of my chapters. It takes you step-by-step through building a Space Invaders clone using C# and XNA that runs on a PC, Xbox 360 and Zune. If you know nothing about developing games, this chapter will teach you the ropes of getting a 2D game up and running quickly.
Dan - It’s hard to pick a favorite, but at the time, InnerTube, an application that downloads, converts and syncs YouTube videos was great because I was travelling a lot and was sick of watching the same DVDs so being able to download 75 new YouTube videos of the weekly top rated, most viewed, and most commented videos was great and helped kill time so it was certainly the most useful for me personally.
DZone - What is the coolest project (or project concept) that did not make it into the book?
Brian - I'm not sure I have one...everything I wanted to get into the book is there.
Dan - One of the hardest parts about the book was striking the right balance between Windows, Web, Gaming, and Hardware applications. You don’t want a book with 10 projects and have the majority be hardware hacks or just games, you want a little bit of all different types of projects. One project that didn’t make the book because it was still under development at the time is Unreal Tournament 3 bots. UT3 Bots is a project that enables you to build custom AI players in VB or C# that you can load into Unreal Tournament 3 - http://www.codeplex.com/UT3Bots and the fun part of course is in having you and some friends enter the game with your AI bots and see who can live longer, man or machine.
DZone - Are you actively involved in the Coding4Fun site on MSDN?
Brian - Yes I am. After the book was finished, I took some time to enjoy the holidays and not think about writing, but I'm actively working on 3 or 4 projects right now that will be up on the site over the next couple months.
Dan - Yes, definitely, we have lots of fun projects in the future including some for April Fool’s Day, but you’ll have to wait until we release them. :)
DZone - Where do you see game development going? Is Kodu (a visual programming tool designed for children which runs on the Xbox 360 and PC) going to have a big impact on that space?
Brian - I haven't used Kodu, but I've seen it in action and watched it grow over the past couple of years. It's an amazing piece of software and I think we'll see some very interesting games come out of it. I think with things like XNA and Kodu, console game development, and, more importantly, distribution, is getting into the hands of hobbyist developers. With Xbox Live Community Games, anybody can get a game built and distributed to the millions of people on Xbox LIVE, and even make a couple of bucks in the process.
Dan - This is a big question, but I’ll try and hit some of the key themes that will affect game developers
- No one right answer – I still think there won’t be one right answer for game development just like there isn’t one right answer for software development. You’ll see game engines evolve, or RAD tools like Kodu or Popfly among others help make building simple games simple, but there won’t be a massive jump to just one technology or tool.
- Marketplace/Distribution – Marketplaces like Xbox Live, Valve software’s Steam, or the iPhone App Store have made it very easy for game developers of all sizes to easily monetize their applications. For PC games, Steam has shown how they can easily distribute very large games (multi-gigabyte) something once thought to be unfeasible. Both Steam and Xbox Live also have their own social networks so you can make friends, see what friends are doing online, invite them to join a game, and more. I think we’ll see these services borrowing features (or integrating with) other Web 2.0 social networks in the future.
- Services – The other big change is that these marketplaces are providing a huge swath of services including a payment system, ratings, usage metrics, automatic updates and more. In the future, imagine being able to see exactly how people are playing your game, where are they getting stuck, when do they quit the game and perhaps even how did they rate your game because they kept dying on the same boss 10 times. While some big studios (like Bungie) have the ability to have heat maps on levels, just imagine having that level of detail available for all gamers. Gabe Newell, founder of Valve said at the recent Dice conference that the next big game-machine war isn’t about graphics or fancy controllers, but rather the company that helps connect software publishers with their customers - http://blog.wired.com/games/2009/02/valves-newell-n.html
DZone - Are there any 'best practices' to follow when Coding4Fun?
Brian - My only "best practice" is "make it work". :) I think it's ok for small apps like these to break some of the best practices and rules of software development. That's not to say you should ignore everything and litter your code with goto's and piles of copy/pasted code, but I think it's important to realize that a lot of these projects are proofs of concepts and meant to be tinkered with and evolved, and aren't running in a production environment with thousands of users relying on them to run flawlessly. For me, the process is to make it work, evolve it, and continuously refactor.
Dan - Totally agree with Brian, it should be about having fun more than anything. You should challenge yourself to do something that you don’t think is possible. Don’t overly worry about the code or how its factored or that you aren’t use this or that best practice, worry about getting it to work. There’s something magical when you can make an application work that you couldn’t imagine it working before, that’s what you should worry about first.
DZone - Do you think it's important for developers to make time for creating fun projects in their free time?
Brian - I do. I think it gives developers a chance to learn technologies they wouldn't normally use in their daily lives. It also allows developers to think in different ways to solve problems in their projects. I think both of these things can have a positive effect in their professional lives, as well as relieve the stresses of the daily development grind.
Dan - I think it depends on your learning style, some people prefer to read multiple books or attend a class before they start trying to code a new technology, while others prefer to get their hands dirty and start coding bit-by-bit. In general, developers should leave time to be creative and to explore new technologies as that’s the only way they can get better.
DZone - Who should buy your book?
Brian & Dan - Anybody who is interested in software development, really. There's something in this book for everyone, from game development to hardware integration to web development. If you want to try coding something new and think in a different way, this book is for you. I've received emails from students, professionals, and even just tinkerers, and they've all gotten something out of the book.
DZone - Do you have any new book projects on the horizon? Any early thoughts of a 2nd edition?
Brian & Dan - Nothing book related...just articles at the moment. A 2nd edition would be great, but sales will determine if that happens. So buy your copy today! :)