What i’ve been up to

I’ve been in stealth mode for almost two months now (with a wedding somewhere in between the busy days). Some have already wondered what i’m up to due to my mysterious and at times mad-manish babbling on Twitter. Today i can finally announce what i’m working on!

That’s right, i’m working on RoboVM! It all began when Niklas send out a job ad sometime in May/June for the position of a developer based in Sweden, with some interesting skills. Jokingly i replied to the ad, saying that i lack any kind of swedish skills. After some back and forth it turned out that i may be a good fit and we agreed to collaborate.

I started working full-time on RoboVM by the end of July, learning the ins and outs of RoboVM and all technologies attached to it (mainly LLVM). It’s been a blast so far. Technology-wise, i’ve learned more in the last few weeks than in the last two years at my old job, where i was mostly concerned with management tasks. I’m finally back to full-time coding and it’s been extremely satisfying so far.

Getting into the code-base was one of my biggest concerns before starting at RoboVM. I’ve worked on quite a few legacy projects over the years, and it has often been a struggle due to shitty code, architecture astronauts going berserk or simply the shear amount of code. I’m probably also responsible for a few mental breakdowns of others who have to maintain my code. Interestingly enough, getting into the RoboVM code base turned out to be quite a smooth ride so far. This is especially surprising to me as i have to touch a multitude of different technologies and languages along the way. I guess this is a testament to the engineering effort that Niklas has put into it so far. My previous adventures into building a JVM also helped a little. Getting paid to work on something like RoboVM has always been a bit of a dream for me. I guess i’m pretty happy at the moment, even though this is probably the toughest thing i’ve worked on in my life so far.

I’m working remotely for RoboVM, which has resulted in a bit of a life-style change as well. I can now work from anywhere at any time. I found a new home at the office of BYTEPOETS here in Graz for when i’m sick of being alone. They are an amazing start-up in the web and mobile space. Seeing their processes at work is pretty fantastic and enlightening. I get to know a lot of new talented folks with interesting stories to tell. If your business is in need of services in the web and/or mobile space, check them out (and i don’t say this because they let me sit in their office). Seal of approval from me! When working from home it can become hard to differentiate between work time and free time, but i guess that will work out eventually as well. It definitely helps having an office to go to. Gives me a feeling of closure for the day when i leave.

I can’t tell what exactly i’m currently working on, but i hope it will make your life easier once it’s complete and working. The pressure is on, wish me luck :)

libGDX 1.3.1 released

libGDX 1.3.1

Hot on the heels of libGDX 1.3.0 comes 1.3.1 with an emergency fix for our GWT backend. Thanks to Nex for catching and fixing that bugger!

See this wiki article on how to update to the latest libGDX version (1.3.0). The latest snapshot version is now “1.3.1-SNAPSHOT”.

libGDX 1.3.0 released!

libGDX 1.3.0

It’s the time of the month again, here’s our latest release. What’s new, what’s changed?

  • API Addition: Added Input.isKeyJustPressed
  • API Addition: multiple recipients are now supported by MessageDispatcher, see https://github.com/libgdx/libgdx/wiki/Message-Handling#multiple-recipients
  • API Change: State#onMessage now takes the message receiver as argument.
  • API Addition: added StackStateMachine to the gdx-ai extension.
  • API change: ShapeRenderer: rect methods accept scale, more methods can work under both line and fill types, auto shape type changing.
  • API change: Built-in ShapeRenderer debugging for Stage, see https://github.com/libgdx/libgdx/pull/2011
  • Files#getLocalStoragePath now returns the actual path instead of the empty string synonym on desktop (LWJGL and JGLFW).
  • Fixed and improved xorshift128+ PRNG implementation.
  • Added support for Tiled’s animated tiles, and varying frame duration tile animations.
  • Fixed an issue with time granularity in MessageDispatcher.
  • Updated to Android API level 19 and build tools 19.1.0 which will require the latest Eclipse ADT 23.02, see http://stackoverflow.com/questions/24437564/update-eclipse-with-android-development-tools-23 for how things are broken this time…
  • Updated to RoboVM 0.0.14 and RoboVM Gradle plugin version 0.0.10
  • API Addition: added FreeTypeFontLoader so you can transparently load BitmapFonts generated through gdx-freetype via AssetManager, see FreeTypeFontLoaderTest.java
  • Preferences put methods now return “this” for chaining
  • Fixed issue 2048 where MessageDispatcher was dispatching delayed messages immediately.
  • API Addition: 3d particle system and accompanying editor, contributed by lordjone, see pull request 2005
  • API Addition: extended shape classes like Circle, Ellipse etc. with hashcode/equals and other helper methods, see pull request #2018
  • minor API change: fixed a bug in handling of atlasPrefixes, see pull request 2023
  • Bullet: btManifoldPoint member getters/setters changed from btVector3 to Vector3, also it is no longer pooled, instead static instances are used for callback methods
  • Added Intersector#intersectRayRay to detect if two 2D rays intersect, see pull request 2132
  • Bullet: ClosestRayResultCallback, AllHitsRayResultCallback, LocalConvexResult, ClosestConvexResultCallback and subclasses now use getter/setters taking a Vector3 instead of btVector3, see pull request #2175
  • 2d particle system supports pre-multiplied alpha.
  • Bullet: btIDebugDrawer/DebugDrawer now use pooled Vector3 instances instead of btVector3, see pull request #2174

I’d also like to divert your attention to Ashley an entity/component system originally developed by the good folks at Robotality, now under the umbrella of libGDX and David alias siondream. It’s sweet, fast and compatible with our HTML5 backend!

See this wiki article on how to update to the latest libGDX version (1.3.0). The latest snapshot version is now “1.3.1-SNAPSHOT”.

Happy coding!