Indie Developer
I usually prefer to code in the fantastic Sublime Text, but sometimes it’s convenient with more integrated tools, such as runners for RSpec and Cucumber and an real debugger. In those cases there is no better IDE for Ruby than RubyMine. Apart from the fact that it runs on Java - it must be because it’s pretty slow at times - I can recommend it to everyone.
Not sold yet? Version 5 has support for RubyMotion!
Still not sold on it? They included Darcula, a new native dark UI theme. =)

I usually prefer to code in the fantastic Sublime Text, but sometimes it’s convenient with more integrated tools, such as runners for RSpec and Cucumber and an real debugger. In those cases there is no better IDE for Ruby than RubyMine. Apart from the fact that it runs on Java - it must be because it’s pretty slow at times - I can recommend it to everyone.

Not sold yet? Version 5 has support for RubyMotion!

Still not sold on it? They included Darcula, a new native dark UI theme. =)

Ruby on Mac
Yesterday I wrote about the fantastic RubyMotion. I must mention its cousin - MacRuby. It uses a JIT compilation compared to the statically compiled RubyMotion. Another difference is the garbage collection. In MacRuby it uses the exact same garbage collector as objective-c, while it’s a proprietary solution for RubyMotion.

Ruby on Mac

Yesterday I wrote about the fantastic RubyMotion. I must mention its cousin - MacRuby. It uses a JIT compilation compared to the statically compiled RubyMotion. Another difference is the garbage collection. In MacRuby it uses the exact same garbage collector as objective-c, while it’s a proprietary solution for RubyMotion.

Ruby on iOS
Not sure if I’ve been living under a rock, but I have completely missed the fact that RubyMotion and MacRuby exists.
RubyMotion allows you to use Ruby to develop applications for iOS (iPhone, iPad, iPod touch). You can do exactly the same things as you do with Objective-C. RubyMotion compiles your ruby code statically to LLVM IR and then to assembler/machine code. Performance is the same (and sometimes better) than the Objective-C counter part. And yes, the resulting app follows the Apple restrictions and can be published on the App Store.
The only downside is that it is closed source, and will set you back about $200.
I think this is one of the most exciting things I have seen in quite some time. Now it can be fun to develop for iOS again!

Ruby on iOS

Not sure if I’ve been living under a rock, but I have completely missed the fact that RubyMotion and MacRuby exists.

RubyMotion allows you to use Ruby to develop applications for iOS (iPhone, iPad, iPod touch). You can do exactly the same things as you do with Objective-C. RubyMotion compiles your ruby code statically to LLVM IR and then to assembler/machine code. Performance is the same (and sometimes better) than the Objective-C counter part. And yes, the resulting app follows the Apple restrictions and can be published on the App Store.

The only downside is that it is closed source, and will set you back about $200.

I think this is one of the most exciting things I have seen in quite some time. Now it can be fun to develop for iOS again!

I think it was my twitter friend Pat Wilson that introduced me to CoffeeScript in 2010. I have tried it out on a couple of projects and I like it a lot!
It includes the nice things with javascript (yes, there are a few), while blocking out some of the real bad parts with it.

I think it was my twitter friend Pat Wilson that introduced me to CoffeeScript in 2010. I have tried it out on a couple of projects and I like it a lot!

It includes the nice things with javascript (yes, there are a few), while blocking out some of the real bad parts with it.

MongoDB is a fantastic object oriented database. You sometimes want a UI instead of hacking away at the mongodb console.
Check out MongoHub!

MongoDB is a fantastic object oriented database. You sometimes want a UI instead of hacking away at the mongodb console.

Check out MongoHub!

KanBan-like
I can’t understand how I have missed this one?
It’s made by Joel Spolsky, who made the fantastic StackOverflow, FogBugz and other great software. But I have tried to find a great kanban-like web app for quite some time, but not found anything that is really simple and easy to use.
Just played around with Trello for a short while, but it looks great! Will make a new post when we have tried it on one of our game projects.

KanBan-like

I can’t understand how I have missed this one?

It’s made by Joel Spolsky, who made the fantastic StackOverflow, FogBugz and other great software. But I have tried to find a great kanban-like web app for quite some time, but not found anything that is really simple and easy to use.

Just played around with Trello for a short while, but it looks great! Will make a new post when we have tried it on one of our game projects.

Automatic Tweeting
I got the question tonight, “how do I post from my own site automatically to twitter?”
It can be a bit tricky to get all the oauth stuff working. But this is a special case. You are the only one that needs to authenticate your own application. Twitter has made this a lot easier for us.
Go to https://dev.twitter.com/
Create your application. The application name is sometimes shown in the twitter clients, so please select a good name.
Make sure that the access level is set to “Read and Write” (default is Read only). Otherwise you won’t be able to post to your timeline.
Press the “Create my Access Token” button. Twitter has simplified a lot for us now, we no longer need to request these tokens at runtime. These tokens should never timeout.

There are only four strings that we need to handle to access the api. Consumer Key and Consumer Secret, which is represent our application. And Access Token and Access Token Secret which represent the user giving the access to the application.
Now the call to update our timeline is called statuses/update.
Here is a sample Python application which requires python-oauth2 and httplib2:

import oauth2 as oauth
  
consumer = oauth.Consumer(key="asdfasdf7897987", secret="adfasdf787sa89fd7as89f7as89f7as89d")
  
access_token = "fdas89f8asf8a90sd-sadf8as09d8fas98f0a9sd8f"
access_token_secret = "safd8asd0f8a9sd0f8asd0f8asdfasf"
token = oauth.Token(access_token, access_token_secret)
  
client = oauth.Client(consumer, token)
  
update_status = "http://api.twitter.com/1/statuses/update.json"
response, content = client.request(update_status, "POST", "status=Hello%20World")
  
print "Response", response
GitHub Gist
The API url is http://api.twitter.com/1/statuses/update.json and the parameters are not placed in the URL but sent in the HTTP body as json. The HTTP headers contain the tokens as well as an encrypted HMAC-SHA1 signature.

Automatic Tweeting

I got the question tonight, “how do I post from my own site automatically to twitter?”

It can be a bit tricky to get all the oauth stuff working. But this is a special case. You are the only one that needs to authenticate your own application. Twitter has made this a lot easier for us.

  • Go to https://dev.twitter.com/
  • Create your application. The application name is sometimes shown in the twitter clients, so please select a good name.
  • Make sure that the access level is set to “Read and Write” (default is Read only). Otherwise you won’t be able to post to your timeline.
  • Press the “Create my Access Token” button. Twitter has simplified a lot for us now, we no longer need to request these tokens at runtime. These tokens should never timeout.

There are only four strings that we need to handle to access the api. Consumer Key and Consumer Secret, which is represent our application. And Access Token and Access Token Secret which represent the user giving the access to the application.

Now the call to update our timeline is called statuses/update.

Here is a sample Python application which requires python-oauth2 and httplib2:

import oauth2 as oauth
  
consumer = oauth.Consumer(key="asdfasdf7897987", secret="adfasdf787sa89fd7as89f7as89f7as89d")
  
access_token = "fdas89f8asf8a90sd-sadf8as09d8fas98f0a9sd8f"
access_token_secret = "safd8asd0f8a9sd0f8asd0f8asdfasf"
token = oauth.Token(access_token, access_token_secret)
  
client = oauth.Client(consumer, token)
  
update_status = "http://api.twitter.com/1/statuses/update.json"
response, content = client.request(update_status, "POST", "status=Hello%20World")
  
print "Response", response

GitHub Gist

The API url is http://api.twitter.com/1/statuses/update.json and the parameters are not placed in the URL but sent in the HTTP body as json. The HTTP headers contain the tokens as well as an encrypted HMAC-SHA1 signature.

Git - Hit the bucket!
Let the record show that I’m a true GitHub fan. They have a fantastic service. But they only allow a limited number of private repositories, even for paid plans.
BitBucket was previously Mercurial only, but since october they fully support Git. Unlimited private and public repositories, unlimited storage for free (up to five users).
If you have big repositories or a lot of private ones, BitBucket is the way to go.

Git - Hit the bucket!

Let the record show that I’m a true GitHub fan. They have a fantastic service. But they only allow a limited number of private repositories, even for paid plans.

BitBucket was previously Mercurial only, but since october they fully support Git. Unlimited private and public repositories, unlimited storage for free (up to five users).

If you have big repositories or a lot of private ones, BitBucket is the way to go.

Ludum Dare #22 is in full effect!
It’s a competition where you make a game in 48 hours according to a theme that is revealed at the start of the competition. After the event everyone votes for the best entry. No awards, no prizes, just the great honor of participating.
Theme this time: Alone.
Usually I will fail to complete something acceptable within that time. This time probably won’t be an exception.

Ludum Dare #22 is in full effect!

It’s a competition where you make a game in 48 hours according to a theme that is revealed at the start of the competition. After the event everyone votes for the best entry. No awards, no prizes, just the great honor of participating.

Theme this time: Alone.

Usually I will fail to complete something acceptable within that time. This time probably won’t be an exception.

Salt for everyone.
Native Client makes it possible to run compiled x86 or x64 code with very small performance overhead in a browser. Currently it only works in Google Chrome. Before execution it is checked that the binary is safe and doesn’t perform any outside calls. Only calls that are allowed are to Pepper, which supports 2D and 3D graphics (OpenGL ES 2.0), low level audio, keyboard and mouse input, and local file system.
It’s a perfect solution for cpu demanding games or if you have an existing code base that is hard to rewrite in Javascript.

Salt for everyone.

Native Client makes it possible to run compiled x86 or x64 code with very small performance overhead in a browser. Currently it only works in Google Chrome. Before execution it is checked that the binary is safe and doesn’t perform any outside calls. Only calls that are allowed are to Pepper, which supports 2D and 3D graphics (OpenGL ES 2.0), low level audio, keyboard and mouse input, and local file system.

It’s a perfect solution for cpu demanding games or if you have an existing code base that is hard to rewrite in Javascript.