My Head Asplode

For some reason I decided to count the programming projects I’m more or less working on in my spare time and counted more than I thought.

Some Eclipse related stuff:

  • Bulletin Board API for the Eclipse Communication Framework. Recently did a major refactoring, needs some more updating to get all the features working again. (Java)
  • Padclipse, a “lite” packaging of Eclipse which includes only the Text Editor and a bit more, plus some custom additions. I haven’t really worked on it for a year and a half, but I want to update it when 3.5 comes out. (Java)
  • Eclipse plug-in to make 2D game development with Slick a bit easier. I was working on this for the past two weeks, just finishing up now and will release in a few days. (Java)
  • A secret Eclipse plug-in. Just started, will see if something good comes of it. (Java, likely some Scala too)

Server and game related stuff:

  • Ziggy, the forum bot that runs interactive fiction games, uses BB API. (Scala / Java)
  • Web interface for managing Ziggy, barely started. (Scala, PHP)
  • Scaler, a web framework, too little done to talk about. (Scala)
  • STON, a strongly typed and extensible JSON-like data format. Not sure of the usefulness. (Scala)

2D Game related stuff:

  • Scala port of the JBox2D physics engine. Almost done, but needs polishing. (Scala)
  • Gamp, a game entity system based on Slick and my Box2D port. (Scala)
  • Orbitum, a game making use of Gamp. (Scala)
  • A secret 2D platformer game, but I have barely started with this so perhaps it doesn’t count. (Scala)
  • Another game project, also secret. (Scala)

And this is not all. I occasionally work on quite a number of smaller things, some are just little experiments, others just for excercise. Some may become “projects”, some may not.

Looking at the list almost makes it seem unmanageable to me, but actually I don’t think I’m doing that bad, although there certainly have been release dates promised that haven’t been met. Now I know I should always multiply my time estimates by the number of projects I’m working on :) Only two of the projects are actually released/in production, and beta at that: Ziggy and Padclipse. At least two should have a release rather shortly: the Slick Eclipse plug-in and Scala port of Box2D. But even as I can move them out of the “yet unreleased projects” list, they are still going to need maintenance and updates.

Anyway, please comment, if you are also a programmer, or a geek with a different specialization, who has a lot of hobby projects, how do you manage not to get swamped with them or get the feeling that you are always working on cool stuff but never releasing? I was actually stressed by this a year or more ago, when I had somewhat less projects, but had not released any of them yet.

There are certainly good things about having so many projects: I don’t think I’m ever going to get bored. I have many ideas and wish there was enough time in the world to work on 30 more projects. And even if I wouldn’t think of any more new ideas, whenever I get bored with one of my current projects, I can switch to another one and so on.

11 thoughts on “My Head Asplode

  1. Pingback: Scala port of JBox2D | Tyler Weir

  2. Haven’t been to the forums for a while. I got your message now. The Scala port has one problem: it’s actually slower than the Java version (but uses a bit less memory). It may be because I used immutable vectors and matrices, but I don’t want to go back to mutable versions. However, there are some other parts that could be profiled/optimized and I would like to do that before releasing it. I just don’t have time for it at the moment. But if you really want, I can put the current code to this week.

  3. Thanks for your thoughtful response (PM) in the Box2D forum. I would definitely like to see the code posted at Github or Google Code, and possibly help with the project as a means to learn Scala.

    As far as optimizations are concerned, I’m sure that can be worked out in due time. BTW, is there a compiler option to inline all of the extra function calls in Scala, or is it already optimized?

    • There are -inline and -optimise options, but they used to crash the compiler
      for my code. I haven’t checked if this has been fixed in 2.7.4. And I’m not
      sure how much that would actually help.

  4. Well, using the compiler optimizations and the -inline flag on the D compiler gave a significant performance boost for Blaze (my port of Box2D). Also, in the AS3 version, many of the function calls are hand-inlined for dramatic performance boots. Other scripting languages, such as haXe, have a built in inline keyword that makes a big difference on runtime performance.

    Maybe it would be worth giving it a a shot w/ some profiling.

  5. Excellent, great job. I was taking a look at the island graph and noticed you’ve made provisions for multithreading! Have you made it work, and is there a performance advantage? Concurrency is one of the primary reasons I decided to take a serious look at a functional language like Scala.

    I also noticed you’ve added @inline to Vector2f. Any difference in performance?

    I can’t believe how compact the code is – Scala is very impressive!

  6. Thanks for the kind comments. There didn’t seem to be much performance advantage to threads. But I wasn’t seriously measuring — I just stared at the FPS. @inline doesn’t seem to help either at the moment.

    Actually, I think I’m just about to get an understanding of where a big part of my performance troubles are coming from (just a hunch though, I may be wrong): I used the more functional-style for-comprehensions instead of while loops everywhere, but they have more performance issues than I realized. There may be some serious boxing and unboxing going on behind the scenes. I will convert the most critical parts to while(i < x.length) {…} and see how much it helps.
    If this turns out to be the main problem, then it’s pretty ironic because some time ago I analysed and blogged about the performance of while vs. for in Scala :)

  7. Pingback: Oh, how shall I spend my Creative Mana? « My Digital Neuron

  8. Hi Errki, you asked… “please comment, if you are also a programmer, or a geek with a different specialization, who has a lot of hobby projects, how do you manage not to get swamped with them or get the feeling that you are always working on cool stuff but never releasing?”

    I was inspired to blog about this topic today, its a part-reply to your question. []

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s