// caseydunham.net

Wednesday, October 21, 2009

Microsoft Code Camp 12 Review

I know this is a bit late, but I was very busy after Microsoft’s Code Camp 12 last Saturday in Waltham, MA and this is the first chance that I have had to sit down and do a write up on it.

This was the first Code Camp I have attended and didn’t know what to expect. The format of the Code Camps are basically like a mini conference. They consist of a number of presentations packed into about an eight hour day. All the presentations are developer focused so they usually contain a decent amount of code which I wasn’t expecting but was very happy with. Registration is free and for the most part, a community effort for developers, by developers.

Code Camp 12 had about 45 presentations tracked to seven different conference rooms! That’s a lot of information to take in a short amount of time. I am not actively involved in a lot of the technologies that the talks were about, most on the topic of Silverlight, C# and Azure, but it was very interesting to see what everyone else is up too. Now onto some notes about the presentations that I have attended.

Presentation 1: So, You Want to Give a Code Camp Talk?
Presenter: Bill Wilder

Even though this particular presentation wasn’t about programming, I jump at any opportunity to better myself at public speaking. I meet a lot of students in the Computer Science department at my school, both new and old, who don’t quite grasp how important communication really is. Bill Wilder also talked specifically about giving presentations that are code or technology heavy, which was great, because not many books or sites that you read give much thought to it. It definitely changes your presentation style. The attendance was small at this one, which was great because we were able to get into a few discussions that greatly benefited myself and I think the others in the room as well.

Presentation 2: Dysfunctional programming with F#
Presenter: Talbott Crowell

I only had a vague notion of what F# was before this presentation. For those who haven’t heard of it, F# is a functional language for the .NET environment that is inspired in part by OCaml. Talbott Crowell, a beginner in the language himself, talked about some of the differences in F# compared to other languages and most importantly, why use F# at all? One big difference in functional languages is that the functions have no side effects, everything is immutable. In F#, if you want to be able to change a variable after it is created it has to be declared with the mutable keyword. This sounds like a big drawback, but I didn’t realize how much of a benefit this actually was until this presentation. The big gains that F# provides over other .NET languages, is when faced with heavy multi-thread use and multi core, multi processor programming. Anyone who has done a decent amount of multi threaded programming knows how aggravating it can be when you run into deadlock or concurrent variable modifications that weren’t supposed to happen. Even with the new frameworks for C++ and C# designed to make this an easier problem to deal with, it is still very hard to take advantage of.. This is going to get worse as more computers are shipping with quad core CPUS and with operating systems having the ability to offload tasks to the GPU, this problem is going to be a major hurdle to some of these other languages.

Talbot also demonstrated how easy it is to prototype and develop GUI’s in the language. Since the language is interpreted it can be executed on the fly through an interactive prompt just like Python, Ruby and other interpreted languages. This allows you the ability to build a GUI or run other programs dynamically and watch them execute as you code. Visual Studio 2010 is also going to provide even more built in support for F# upon its release, so I wouldn’t be surprised to see this becoming more popular over the upcoming year.

This was a very good presentation and would encourage everyone to check out F# a bit more.

Presentation 3: 7 on 7
Presenter: Jim O’Neil

This was mostly a recap of the entire New Efficiency event that I attended a couple of weeks ago, but I went to anyways to see if anything was explored in more depth. There were a few interesting points about the Federated Search functionality in Windows 7 that got glossed over at the New Efficiency, but for the most part I could have sat this one out.

(Lunch)

Presentation 4: Behavior Driven Development
Presenter: Tom Cooley

This one was a bit over my head as I am still working on developing my Test Driven Development mindset, but Behavior Driven Development is a natural next step for those who have attained a level of proficiency with TDD. While TDD is about ensuring that the code you are writing is correct, BDD aims to make the language that tests are written in as close to the domain as possible, making the transition from Use Cases, or User Stories, to actual code much easier than it can be in real life. The presentation itself was in a small room that was very well attended so I wasn’t able to take part in the discussions too much, but there were a lot of very knowledgeable people in this one. I had a chance to talk to Tom Cooley after his presentation and managed to get good answers to some of my TDD issues.
Presentation 5 and 6:

I skipped the presentations slated for these two slots as I was hanging out talking to some of the other Code Campers and presenters. My one big suggestion for this whole event would be to allow a bit more time for networking and conversation. There was only about 10 minutes or so between presentations and lunch was only about 30 minutes so it didn’t leave a whole lot of time to meet and network.

Presentation 7: Getting your game published on XBox Live Indie Games
Presenter: Michael Cummings

This was probably my favorite presentation of the day. It was very informative and has made me very interested in Indy Game development for the XBox. Michael Cummings talked about the XNA Creator’s Club in general, the review process games undergo and why they might fail or be rejected. He also presented solutions to many of the gotcha type of problems that people don’t think about, but aren’t too complicated to deal with (controller issues, differences between the PC monitors and television screens for starters).

He also presented a statistical summary of about fifty games from various income categories, some barely making any money and others that grossed a significant amount all over the last year or so. I really can’t wait to start working on a few XBox games so I think I might be seeing an XBox 360 in my near future.

Overall I had a good time especially for a free event. The drive down only took about two hours and while I was unable to stay long after the event to go the after party, I hope to make it to the next Code Camp, which I believe is going to be sometime near April since they attempt to do these every six months or so.

If you are a Windows developer or at all interested, I would definitely recommend checking this out.

posted by Casey at 11:14 pm  

Friday, October 9, 2009

Windows 7 First Impressions

I’ve been using Windows 7 Ultimate for about two days now and have to admit that so far I really like it. It seems that most of the minor nit picky things that have been really annoying to me in prior versions of Windows, have been fixed or at least aren’t as annoying. Some of these things may seem trivial and some should have been in Windows a long time ago, but they are consistent annoyances in my use of Windows and while I use Linux operating systems just about as much as I do Windows, I am glad that Windows is starting to catch up in some areas.

First on the list is the speed. I have it installed on my laptop with 2Gb of Ram and an AMD Turion 64 X2 processor and it is speedy, even with all of the fancy GUI settings.  This most likely has a lot to do with the new Windows 7 graphics stack which has brought with it a much needed drop memory usage in the Desktop Windows Manager (DWM) which I tested by opening a lot of applications, playing videos and watching Syfy in Firefox and IE at the same time. The memory taken up by the DWM was about half that of Firefox while playing an episode of Ghost Hunters (by the way, IE on my setup actually consumed less memory doing this same task than Firefox did). I’ve been watching performance on various applications throughout the last couple of days and most of the Windows processes seem to be well behaved.

Next on my list has been a constant annoyance, probably going back all the way to Windows 95, is the lack of my ability to rearrange the icons on the taskbar that represent open programs. I find myself opening up applications in a certain order, as I usually keep longer running applications, or those that I use a lot throughout my day, to the left of the taskbar and since every Linux window manager I have ever used has allowed me to rearrange where those icons get placed, the annoyance on Windows had grown even more. The ability to do this now, makes me very happy.

Still on the topic of the taskbar is something that I haven’t quite gotten used to yet, is the removal of the quick launch taskbar (it can still be turned back on, directions here). I haven’t turned mine back on even though I have used it for years for my most frequently used applications, because I wanted to first see if the new way had any gain. In Windows 7, the taskbar rolls the quick launch bar along with the running programs into one. The difference now is that the items on the taskbar that are pinned to it (shortcuts that remain there) have jumplists that can be accessed with a right click (or left click and move the mouse upwards) that presents an application defined menu of quick links. I haven’t quite gotten used to the new feature yet but am going to play around with it for a bit more. I think it will definitely be interesting to see how applications take advantage of it (such as maybe providing a list of recent saved games and being able to run the game and load that saved game without having to go through a series of menus).

Another notable and much needed inclusion was native support for burning .iso files. Finally, I no longer have to download another program or switch to my Linux system to burn an image.  All I need to do now is to double click the image file and Windows pops open a small window and I can start burning. I’ve burned a few applications that I needed to install this way and it seems to work quite well.

One last minor irritation has always been the built in calculator. At my last job I often had to do a lot of bit manipulation or masking while programming and I always wished I had a Gnome’s calculator on my Windows box which allowed me to do not only do conversions between different bases, but I also could do right and left bit shifts and rotations. Now I have a built in application to do this.

My only real irritation with Windows 7 right now is the ribbon menu system that they introduced with Office 2007 and is now the standard for Microsoft’s applications on Windows7. I didn’t like it in Office and I am not a big fan of it right now in Windows 7. I am sure to get more comfortable with it over the next few weeks, but I don’t think I am ever going to really like it. I don’t like bloated windows and really don’t like a lot of toolbars and extra things floating around, but we’ll see.

posted by Casey at 11:03 pm  

Tuesday, October 6, 2009

New Efficiency Review

A few months ago I was notified of a free Microsoft event for Windows 7 called the New Efficiency in which they were giving away free copies of Windows 7 Ultimate. So without too much thought I sent my registration in and yesterday morning I awoke very early (4am) to catch the 5am bus out of Portland to Boston to see what the New Efficiency was all about. Registration started at 7:30 after which we were provided breakfast. The event was split into two sessions, the morning for Developers and the afternoon for the IT guys. I only attended the morning session so my comments and thoughts (abuses) will be limited to that session. The whole event was geared towards introducing some of the new features in Windows 7 along with a few code examples. All the presentations were done by Microsoft Evangelists, (people who go around talking about the latest and greatest from Microsoft), I can’t remember the last presenter’s name, but the first was Chris Bowen who talked about some of the new features and how to take advantage of them from a developer’s perspective, the second presentation was by Bob Familiar who touted the new graphics stack and the new sensor technology, and the last presentation was on the new touch capabilities that Windows 7 supports.

The whole third presentation was devoted to introducing us to the new Touch capabilities built into Windows 7.  It started with the presenter spending about ten minutes teaching us the gestures to use, “this is a click”, as he touches the screen, “this is how we zoom in” etc… Really? A room full of supposed developers and geeks and you feel the need to teach us this? I suppose they were right since there were a lot of people ooing and aahhing over it all. Oh and the control panel now has Search capabilities. Let me get this straight. Instead of making it easier to navigate and to find settings, you just put in search capabilities? Awesome. I hope it works better than finding files on Windows Vista.

The best piece of news that I heard through it all was the reduction in the Desktop Manager’s memory. I haven’t verified this yet since I have not had a change to install Windows 7 (planning on tomorrow night), but I would be very happy with the 30% reduction that they said they have gotten due to the new graphics stack. On Vista my CPU gets pegged quite frequently while switching windows a lot and the highest amount of memory being consumed is usually by the Window Manager.

One thing that really surprised me was the lack of .NET support for Windows Touch. To take full advantage of it in a .NET application you need to dip down into unmanaged code land and interface with COM. I thought that from pushing .NET so much that they would make sure the latest new technology was integrated. Supposedly it will be coming very soon, but next year’s .NET update will make it all seamless and fully integrated.

Overall, I thought the whole thing was a bit lackluster. It felt a bit short and even though it was a free event I wished that some of the features were explored a bit more since I am interested in them and I am sure we will see applications taking advantage of them in new ways, especially if they are considered from a mobile computing standpoint. For example, Bob Familiar showed an example of how an application on a mobile device could interface with a light sensor and change the resolution, font sizes, contrast or anything else it wanted to make the display easier to read when someone moved from a lighter to a darker area or if they were standing in a lot of sunlight.

Would I go to this event again if it happened next year? Sure, I did meet a couple of new people in the Boston area and if there was going to be a free operating system at the end.

“Go Be One With 7″

posted by Casey at 10:26 pm  

Sunday, September 13, 2009

Ludum Dare 15 Results

Tonight ended the Ludum Dare 15 two week voting period and the results are in! Here is the breakdown of how my entry, Coffee Caverns, did. The categories are scored on a 5.0 scale.

  • Innovation – 1.68
  • Fun – 2.41
  • Theme – 2.0
  • Graphics – 1.77
  • Audio – 1.80
  • Humor – 1.79
  • Overall – 2.23
  • Community – 2.88
  • Coolness -  26%

Overall, I placed 92 out of 107 and won a bronze medal for Coolness.

Looking over the Top 10 entries, there are a few games I didn’t get to play in there and will over the next few weeks, check them out and probably play some of the ones that I already did a couple of times to see what makes them winners in their category. I will also be taking a close look at what was used in the creation of the game and see if I an pick up any interesting ideas through the games’ author blogs.

The next Ludum Dare, is going to be sometime in December, so I am making sure to leave my weekends open!

posted by Casey at 11:36 pm  

Thursday, September 3, 2009

Coffee Caverns – Postmortem

This past weekend I took part in my first Ludum Dare competition, Ludum Dare #15. Ludum Dare is a community driven contest where a single developer has to create a complete game within 48 hours.  I have watched the prior competitions, but have never really had the time with family and school, so I was a bit surprised to find that last weekend was fairly open. So on Friday afternoon I decided I would take part.

Each Ludum Dare has an associated theme that the game must be created around that is decided on by community vote. The theme is only revealed at the start of the competition and for LD #15, the theme was “Caverns”. I immediately had a few ideas but nothing that seemed too out of the ordinary. Upon deciding to enter the contest, I also made up my mind that regardless of what the theme was, my goal was to complete a game, no matter how simple, within that 48 hour deadline.  I did complete a simple game, but as usual with these types of competitions, didn’t quite turn out as I had hoped. This is an effort by me to talk about some of the things that I feel went right in the development of Coffee Caverns and what could have been done better.

The Good

Probably one of the best choices was to use what I was already familiar with, C++ and SDL in a Windows environment. I know that some people like to experiment with new technologies during these competitions, but I decided to not risk it, my goal was to complete a game. Along these same lines I also decided that whatever I did would be small. I have started and never finished numerous game projects in the past much like every other aspiring game developer and I also know that one of the things that separates aspiring game developers from game developers is that game developers finish things. I had a decent idea of the scope of what I would be able to finish and decided to stick with it.

I didn’t start coding or designing anything until the Saturday morning after the competition started. I checked to see what the theme was going to be and than went to sleep. In the morning I ate breakfast and started a bit of mind mapping while having some coffee. I started thinking about caverns and I kept coming back to danger and falling, falling objects like rocks, and than somewhere in the mind map coffee came up so I ended up mixing coffee with falling rocks. Awesome, sounds a bit weird let’s go with it. It came naturally that this would be an arcade style game and once I decided on it I stuck with it. The total design of the game was probably about an hour and that was with sketching a bit of a development plan as well.

I also liked that I was able to get a couple of sound effects in thanks to the wonderful program Sfxr. I am glad that I got the title screen in without too much trouble as well. It only took a little bit of trouble and was I think worth it. Although next time, I am going to check for a specific key press to transition as opposed to any key, it made taking screen shots of it a bit tricky.

The Bad

I think that my biggest mistake was not getting the prototype up and playable as fast as I wanted to. My intention originally was to use primitives for prototyping and later put in the graphics. By the time I had the framework ready I needed a break from coding and decided that I would play around with Paint.NET a bit to see what I could come up with. I should also mention that other than SDL, I was using no prior written code, writing everything from scratch. In no time I had created a couple of graphics that I thought would work, so I figured I would just drop them in. It wasn’t a huge time waster since I was going to do it anyways and in some ways did work out in the end.

The Ugly

Easily the worst part about the game and what I would argue is the game, is the game play itself. The game is no where near as balanced as I would have liked it to have been, the scoring is very simple, and there is very little feedback to the player. I spent most of Sunday doing game play testing and bug fixing. I had the majority of the code written by Saturday night and it was a good thing too as I had a few things come up Sunday that might have kept me from finishing otherwise.

The little things that I didn’t fix that were pointed out to me in comments on my Ludum Dare blog are in retrospect what could have made the game better. The player sprite being about a pixel off during the animation would have taken me all of about three seconds to fix. I also never got the score out of the title bar like it should have been. This would have been another easy fix that would have added to the polish of the game.

The other thing that people complained a lot about was my use of an installer. I had mixed feelings about it but I know and understand the irritation I am sure it caused others as I started reviewing a few of the other entries. At a certain point I was annoyed that I had to unzip things and will next time not bother with the setup and provide a straight running executable.

Summary

Overall the whole competition was very rewarding and I learned quite a bit as well and would recommend everyone who is interested in game development to take part in these competitions as often as they can. I am definitely going to!

posted by Casey at 9:20 pm  

Monday, August 31, 2009

Ludum Dare 15 Finished!

I successfully submitted a working game to Ludum Dare 15. I plan on writing up a post mortem soon but here is a couple of screen shots and download links. The game wasn’t as finished as I would have liked it to have been, especially in the game balance side of things, but I actually spent less than 20 hours total on the whole thing. Overall I think it went well and definitely plan on entering some of the mini LD’s and the next full on Ludum Dare competition.

Title ScreenPlaying
Game Over Screen

Download Windows Executable – coffee-caverns-1.0.zip

Download VS2009 Source- coffee-caverns-1.0-src.zip

posted by Casey at 9:58 pm  

Friday, August 28, 2009

Entering Ludum Dare 15

I have decided earlier today that I will take part in Ludum Dare 15. I have been following the competition for awhile and have played many of the games that have come out of it and it seems that this weekend just may allow for me to spend 48 hours creating something.

After the competition, I will write up a post-mortem and put what I finish with up here for everyone.

My blog posts at the Ludum Dare compo site can be found here.

posted by Casey at 7:14 pm  

Sunday, August 23, 2009

Word of the week is Balance

This Summer has flown by a bit faster than usual for me this year as I have been working quite a bit and spending as much time as possible with my wife and son. We recently moved as I noted in my last post and it can be hard on kids to readjust. I moved a lot when I was younger so I have a decent idea of how he feels. Due to this I haven’t had too much of an opportunity to work on any of my own projects. As usual, without being checked the amount of work and other activities more than often grows to fill the available time. This week in particular has brought it to my attention that since graduating, I have been neglecting being mindful of this. Before I could always blame my lack of time on going to school and working, but now that I have only work, I need to reclaim the rest of the time.

For the past year I have been looking to start my own game development company and give it a shot going solo. I’m not going to be quitting my day job to do this, but this goal will never be realized without restructuring what I am currently doing and making a little time each day to spend on prototyping and developing.  I also need to make sure that I spend time away from the computer exercising and pursuing my spiritual path. It’s the trinity of mind, body and spirit making itself known. I know from past experience that if I don’t keep this triangle of activities in check I will not make progress as burnout will surely set in one or all of the areas.

I am going to use this upcoming week to start incorporating some changes to my routine. I went for a long walk/run today and forgot how much fun it can be. I am going to start running at least every other day for half an hour and bring back a few meditation techniques.  I am also going to set a goal to have a small game done by two weeks from tonight to ease myself back into things. I will also be time tracking how long the development of the game actually takes as a starting point for better time estimations.

posted by Casey at 10:04 pm  

Thursday, June 25, 2009

Project pruning

 I recently moved into a new apartment with my wife and son and with it came an inevitable downtime in internet access. However, being offline for a bit has allowed me to think about my current projects and where I am going in the next six months and what I should be focusing on. I have realized that I have too many side projects that may or may not add anything to my real goals and getting rid of these projects for good was necessary so that I can stay focused on what it is I really want to accomplish.

 Earlier this month as I moved to working almost exclusively from my laptop, I did a lot of housekeeping across all of my hard drives to get everything in one place and backed up. Looking at the list of all of the Visual Studio solution files of half started projects or all the random Eclipse projects, I decided that some action was sorely needed.

 I usually keep all of my development work, whether it is C++, Java or something else, under the same root folder usually called projects. This makes it convenient to see everything at a glance and to make sure that everything is backed up as needed. I started my pruning by making sure everything that I was working on was under this folder moving things as needed. I than started to ask myself the following questions about each project in the list:

  • What, if anything, will I gain by finishing this project?
  • Will completing this project teach me something that will help me achieve my long term goals?

 If a project didn’t pass both of these questions, it immediately went into a separate folder that I called shelved-projects. I may or may not come back to these ones but I also didn’t want to just delete them forever as they may have pieces of code that I may need again for some reason. I am going to start making this a monthly routine to keep more projects like this from cropping up and to stay focused on my real goals.

 I encourage everyone to do this as often as they feel necessary. It doesn’t even have to be software projects. It could be anything that you had it in your mind to do but for some reason or other you were unable to see it through to the end. Unless it is something to do with remodeling your house. You had better finish it or pay someone to finish it less your spouse gets mad at you!

posted by Casey at 9:25 pm  

Monday, June 15, 2009

Removing all .svn folders

At work I am working on modifying an existing application for a proof of concept. The application I am working with was pulled out of the companies svn repository and we started making the changes. We are getting ready to put it into a new svn repository created for our purposes but we needed to delete all the hidden svn folders. This project was quite large and the folder hierarchy was deep as most Java projects tend to be.

I know that I could use the svn export command to copy the project to a new location but I wanted something to remove the svn folders from the current tree. This isn’t the first time that I wanted to do something like this and I thought it would be a good time to write a tool to do it for me.

Doing a quick search on Google I found a link to a Windows Explorer shell extension to do just that written by John Galloway. It works great but I wanted something to use from the command line so I spent a few minutes and wrote an unsvn batch script. Feel free to use it as you will. I also created a .reg file from the registry settings in John Galloway’s article. Just save it to the desktop and double click on it, Windows will set the registry keys for you.

Download: unsvn.bat unsvn.reg

posted by Casey at 9:27 pm  
« Previous PageNext Page »

Powered by WordPress