Don’t optimize!

Actually you should optimize, but not at the wrong places, or for the wrong reasons. But I’ll get back to that in a minute. I recently released a small XNA-based game together with my friends at Badgerpunch Games, and have been following the indie game development community through forums and twitter. Game developers are very concerned about performance, mostly for good reason. No one wants a game with choppy framerate. Because of all this worrying about performance, there is an array of optimization tips and articles that get passed around to alleviate the problem. The majority of the tips and articles are informative and useful, but hardly any of these articles touch on the main issue of optimization: When not to optimize and why not.

Game developer, and then what?

Wow, it’s been almost two years since Darkfall (Online) was released! I was involved from the very beginning, in 1999 when we were a bunch of young inexperienced guys with a a dream of making “the best game evah” ™. We started a company here in Norway in 2000, moved to Greece in 2003 and released Darkfall, a badass full-loot player versus player  mmo, on the 25th of February 2009. That pretty much amounts to 10 years making one single game.

Maven Dependency Management (Deptools)

Dependency management in Maven is a tricky business. At the company where I work we have several large projects that include many different libraries and all dependencies are managed by Maven.  These projects end up having transitive dependencies where the libraries our projects depend on have dependencies on yet other libraries. Maven does a good job of including all the transitive dependencies, but sometimes it resolves itself in such a way that Maven selects an older version of a library when given the choice between two different versions of the same library. This is extremely annoying when the older version contains bugs or lacks features that it’s dependent library needs. A good colleague of mine, Morten Kjetland, has created an excellent Maven plugin called ‘deptools‘ that solves this issue by raising a compile error if it detects that an older transient dependency has been chosen instead of the newer version. Deptools has saved us from a lot of head-scratching and

read more Maven Dependency Management (Deptools)

Weekend in Rome

I spent this last weekend in Rome. I got to see the Colosseum, Pantheon, Saint Peters’ Basilica, Piazza Navona and more. Colosseum was the most impressive building. Even today in its broken-down state, it still is incredibly impressive. I would love to be able to take a 3d-tour of the place as it was when it was built. A good second best will be watching The Gladiator again soon!

Ja Ja JavaZone

I got back from JavaZone last week; a 2-day Java-oriented programming conference. JavaZone 2010 was a very enjoyable and educational experience. I got to attend quite a few really good talks, including some good lightning talks. The most memorable talks in no particular order: Emergent Design — Neal Ford How we blew our shot at beating Spotify, spending two metric truckloads of cash doing it — Espen Dalløkken It Is Possible to Do Object-Oriented Programming in Java — Kevlin Henney Leveraging Open Source – Everything You Wanted to Know About Open Source that Nobody Told You (including getting paid to do it) — Jeff Genender Hacking Your Brain for Fun and Profit — Nathaniel Schutta As you can see, most of these talks don’t have much to do with Java, but they were all great and might make me a better developer if I take just a bit of the wisdom to heart. I was particularly impressed with the professional

read more Ja Ja JavaZone

The Code Quality game

Most programmers think they can recognize good code and a lot of them think they produce good code, but the sad truth is that not a lot of programmers actually do. Between time constraints, feature creep, and laziness, programmers hardly ever end up producing super quality code.

Update

I guess this is the post where I say: Welcome to my new and improved website! I’ve had a long pause in writing anything in this blog. Mostly due to laziness, but other contributing factors have been Getting Darkfall Released, followed by Moving Back To Norway, and last but in no way least: Becoming a Dad for The Second Time. That’s a time-consuming trilogy. Well, all that has happened, and now I am back. I fixed my website (yay WordPress!), and I am going to be writing bits and pieces here again. At some point soon I am also hoping to put my experiences in the making of Darkfall into a post. When I do, it will be posted here. Anyway, until the next post: Have fun and code hard!

FindBugs for statisk analyse av kode

For de fleste programmerere er det viktig å finne defektene i koden man produserer, slik at kvaliteten er høyest mulig. Man har ikke lyst til å gi ut programvare som er full av feil. Men et trist faktum er at de aller fleste programmer har defekter. Undersøkelser viser at kommersielle programmer har i snitt 20-30 bugs per tusen linjer kode. Det er mange forskjellige typer defekter i kildekode, og noen er mindre kritiske for programkjøring enn andre, men alle feil bør finnes og fikses. Det finnes en del metodikker som kan senke feil-frekvensen. Noen eksempler på disse er Extreme Programming,Test Driven Developmen og Code Review Disse metodikkene er fullverdige metoder for å øke kvaliteten på programvaren man produserer, og bør vurderes som en del av den totale utviklings-modellen. Det er flere måter å finne bugs i kode. Et av disse er statisk analyse av koden. Statisk analyse er å gå gjennom koden og lete etter kjente mønster som indikerer feil,

read more FindBugs for statisk analyse av kode

Integrerte utviklingsverktøy

Jeg har installert Linux hjemme med diverse hjelpeverktøy for utvikling. Mest fordi jeg er en tekno-junky, men også fordi jeg liker å pludre litt med ting hjemme som kan hjelpe meg å gjøre jobben min bedre. På Linuxen min har jeg installert Subversion, DokuWiki, Bugzilla, CruiseControl, og MySQL. Jeg har konfigurert opp disse programmene slik at jeg kan sjekke inn kildekode i Subversion, så henter CruiseControl ut den koden og kompilerer den og sender meg en epost hvis den ikke greier å bygge det prosjektet kildekoden hører til. Jeg har brukt DokuWiki til å kjapt kunne skrive ned spesifikasjoner og notater om ting jeg holder på med, og dermed ha dem lett tilgjengelig til senere. Bugzilla har jeg ikke brukt mye enda, men det er meningen at den skal hjelpe meg å holde oversikt over bugs i prosjektene mine. Alt dette er vel og bra. Jeg har stort sett det jeg trenger til å kunne utvikle et produkt og holde

read more Integrerte utviklingsverktøy

Er alle programmeringsspråk skapt like?

Ifølge denne artikkelen er ikke alle programmeringsspråk like kraftige. Noen er mye bedre enn andre. Det er vanskelig å ikke være enig etter å ha lest artikkelen. Han sier at man lett kan kjenne igjen språk man kan som ikke er så kraftige som språket man bruker i dag, men at det er umulig å vite om språk man ikke har erfaring med er bedre. De virker kanskje bare rare. Jeg tror det er på tide å lære noen nye programmeringsspråk.