Continuous Configuration with Transistor 2.0

Several weeks ago I was involved as software architect to optimize design/configuration/development process of our new social game. So, the configuration of the game is pretty huge JSON file. It contains several collections of entities types available in the game with all their parameters and relations. That JSON config then used on both the client and server side. The game designer prepare the data in the set of spreadsheets. It’s very handy. So, it needs to move the actual data from the spreadsheets to the config file. The best they to do it (to avoid copy-paste by hand) is to provide some automation like CI. Let’s call it Continuous Configuration.

Last year I provided solution for similar problem as transistor tool. I implemented it in python (last year the python was my “default language”). It loads data from CSV sources, process and included as static data right into the sources by appropriate templates. Better approach is to use loadable config file. We can provide changes without re-build. It doesn’t need to create the templates for any language we need to support.

I created Transistor 2.0 tool in CoffeeScript as nodejs application. The code looks like ruby/scala/erlang. Try CoffeeScript and you never back to ugly JavaScript (maybe).

Transistor 2.0 is a command line tool that needs just 2 things described in separate JSON config (one more to rule all of them): description of sources (CSV) and the structure of output JSON. There are 2 roles in this process: a game designer who prepare the data in spreadsheets and the game developer who needs that data as JSON config. Both of them are unchained of spending their time for producing typos during senseless copy-pasting.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: