Python

Curb stomping code readability

I have many reasons for loving Python, but I think my favorite aspect of it is the inherent readability of the language. I mean, you really have to work hard to make your Python code unreadable (though, people mis-using decorators can make otherwise readable Python code extraordinarily unreadable...)

The thing about Python is how hard it can make working with other languages once you've fully ingested the Python kool-aid. The many aspects that make Python such a wonderful language to work with really amplify related weaknesses in other languages. For example, I always had complaints about Java, but I couldn't completely articulate my biggest complaint (how hard it is to make readable Java code) until I worked with Python for a few years.

Well, for the last two years I've been working the majority of my time in C# (doing games for Funavision). I have to say, I really don't mind C# as much as I expected I would- while it is obviously C/C++ and Java inspired in many ways, it has a good deal of sanity to it that reduces my frustration when working with it. It also helps that Visual Studio has handy features that make working in the language even easier.

However, it still has the big problems associated with making readable code. Inconsistent syntactic sugar (see C# switch/case), ability to hide entire code segments in property get/sets (grrrr), "Interface" objects that are supposed to be method free but which can still contain method-like code (see get/set previously), etcetera are all examples of language hurdles to readable code.

Well, a while ago I came up with what is probably the least readable C# code I've ever done. I'm not proud of it... but I've decided to share it anyway...

Professional development in an unprofessional way

I saw an interesting post over in the XNA Forums about team based development and I decided to share some of my experiences doing exactly that at Funavision. As I was writing my reply it dawned on me that this is probably a significant stumbling block for a lot of start-up Indie game developers. So I've decided to make this post and share my experience with a broader audience.

In this post I'll cover what we've done for distributed development over at Funavision as well as give some tips and tricks we've picked up that will help you out. The focus will be on Version Control and Project Management tools with a strong emphasis on free (as in no cost) and Open Source tools. It will also be heavily skewed towards XNA and Windows development (largely because if you're, say, a Linux developer then you likely know most of this stuff :-)

The post will be linked from the XNA Forums. Hopefully that will get it around enough people who need it that word of mouth can then take over and the people who could actually use this information will be able to find it.

I do want to say that what we did at Funavision is by no means the end-all, be-all solution for working in a distributed team-based way. There are many different ways to accomplish what we've done, and many different technologies and techniques that can be used (both open-source and proprietary). All I can say is that this is how we've done it, and it's worked very well for us. If you're someone lost and looking for some options, then you certainly could do a lot worse than what I'll be describing. However, if you already have something that is working well for you then I'm not suggesting you should ditch it and try the solutions described here. Each to their own.

vfx

vfx is a command-line utility for adding visual effects to videos.