Projects

Introduction

I use to do some developments during my free time. You will find below a list of little softwares or scripts I have written. Some projects are hosted directly on this server, some others are hosted on other cloud services. Source codes of projects are hosted on Github or on my NAS. As my NAS is a bit too greedy with power consumption, I shut it down when I don't need it, so it may be offline as you're reading this.

CheckingNAS: Checking status

Most of the time I am writing web based applications because they are easy to set up. There is a lot of things you can do with HTML and Javascript, from audio file analysis to 3D rendering with OpenGL. For most cases, you don't even have to use an HTTP server. Moreover, web apps are really easy to share or deploy and can be run on plenty of devices. Anyway, I am convinced that whatever the language, it is the idea that is important.

Most of web based projects shown here are not old browsers compliant. Why? Because I'm so bored to support old browsers every day at work... I don't want to have headache while developing my personal projects too. Please use a recent browser and avoid Internet Explorer as even recent versions are buggy.

CubemindPawn, Futuro Cube

Cubemind

After some times playing with the Futuro Cube, I wished to develop my own game. I chose to adapt the famous Mastermind game. Futuro Cube programs are written in Pawn, a simple language that looks like C. Pawn is very poor in terms of features compared to the languages I usually work with and it was interesting to be reminded how modern languages hide complexity.

The Futuro Cube SDK works very well. The documentation, however, is really poor and is missing use cases and examples. The biggest challenge in developing this game was to find the good design to make the Mastermind playable on a cube.

Code is available on Github.

Kaamelott SoundbotGo, Google App Engine

Since everybody is talking about Go, I thought I had to give it at least a small try. It's also one of the language available on Google App Engine "standard" environment (compared to "flexible" environment) which means you have a comfortable free quota to run your scripts. Besides, we're big fans of Kaamelott at work and heavy users of the Kaamelott Soundboard. And we're also using Slack. Perfect match for a Slack command that is able to add links to sounds from Kaamelott Soundboard in our Slack channels.

I enjoyed writing these few lines of Go. It's like a mix of old and new programming concepts. However I was a bit disappointed by the lack of native features.

Code is available on Github and an instance is available on Google App Engine.

WheeltabJavascript, Chrome, Firefox

Wheeltab

I heard very recently that a -more or less- standard API for browser extensions has been created, supported by Google Chrome and Mozilla Firefox. I would like to give it a try. I created Wheeltab, a browser extension that allows you to navigate through your open tabs using your mouse wheel.

I am disappointed that the API does not allow to use native components of browsers. It is very limited in some way.

Code is available on Github and extension is available here for Firefox and here for Chrome.

SimCity BuildIt HelperNeo4j, Java

SimCity BuildIt Helper

Last year I discovered the game SimCity BuildIt on the Google Play Store. A part of the game consists in the creation of small objects. These objects depend on each other, creating a kind of a tree. I found it was a good use case for a graph database and decided to import game data in Neo4j. I have then created a small website that will help you build these objects by displaying their dependencies and the buildings where you must build them.

I really like how easy it is to write query for Neo4j using their query language "Cypher". However, I am a bit disappointed by their REST API. Currently, it is not possible to configure users access to the database.

Code is available on Github and application is available here.

Badminton Score TrackerMonkeyC

Badminton Score Tracker

After I bought my Garmin Fenix 3, I decided to test Connect IQ which is Garmin platform to create applications for their products. As I practice badminton and always forget my score, I developed this small application to keep track of the score during a badminton match.

It was nice to think a UI for such a tiny device and to use Garmin SDK. Connect IQ works already quite well given it is only the beginning of their platform. I wished to continue the development of the app and try to detect how many strokes you make during a match but it seems the SDK does not allow an access to raw data from the accelerometer. I hope this will be improved soon.

Code is available on Github and application can be downloaded from Garmin Connect IQ store.

Next development steps:

WebwatcherPython, Google App Engine

Webwatcher

I decided to test Google App Engine for real. I choose Python to build this small application which has basically 3 features: configure some websites you want to watch and how you'll be warned in case of failure, check these websites and display a dashboard to show their current status and recorded downtimes. I must say that Python and App Engine work very well. Google Datastore is impressive because of its simplicity.

I use this little project to monitor this website. It sends me an e-mail if a specified text is not found on the home page.

Code is available on Github and application is deployed on Google App Engine.

PeerchatJavascript, WebRTC

Peerchat

I've been watching WebRTC for a long time. I have tried to use it before but browser support was too bad to build something reliable. But I think this technology is now ready for great applications so I wrote a small proof of concept which allow you to chat and to send files to your buddies inside a browser in peer to peer mode.

I also took the opportunity to test Heroku for the small Node.js script server side. I'm pretty amazed by how easy it is to deploy applications with these new providers: a git push and you're ready to go. And you can rollback to a previous version or boost you server in a click. This is crazy. In the case of Heroku, I'm a bit disappointed by the management console which is super slow.

Code is available on Github and application is available on Google App Engine.

Next development steps:

CheckmateJava, Android

Checkmate

A friend of mine would like to learn how to develop an Android application. We decided to build a chess game because we didn't found a descent one on the Play Store. This is my first pet project in cooperation and it is very interesting.

Chess is a very interesting game to program. It may look very simple at the beginning but movements like rook, promotion or "en passant" capture can kill your implementation if you don't take them in consideration at the beginning. This is particularly true for "en passant" capture which prevent you to analyze chessboard statically because you can't say what movements are available if you don't know the moves history.

We would like to rely as far as possible on Google API to build a fully multiplayer game and to synchronize your games across all your devices.

Code is available on Github and application will hopefully be released soon on the Google Play Store.

Philips HueJavascript, Philips API

Philips Hue

A friend of mine bought a Philips Hue kit. As soon as I learned there was an open API, I tried to build an app.

The API is pretty easy to use except for setting light color... The fact is that lights take their color in a special color space and Philips does not provide a documentation about how to transform a simple RGB color to this color space. A lot of smart people found the right way to do so, but I found that lights does not behave as expected according to the documentation for colors which are out of the color space. That irritated me a little bit: what is the purpose of an API if it is not well documented?

Anyway, I'll finish what I started and put it here.

Better LatitudeJavascript, Google API

Unfortunately (again), Google closed the Latitude API. The application no longer works.

Better Latitude

I wanted to test Google APIs for a long time, particularly OAuth. It's now done with this application written entirely in Javascript. Yeah once more, Javascript, but it's a key language nowadays.
This application helps you to manage your Google Latitude history. I'm not happy with the official one because it does not allow to delete more than one record at once, it's very frustrating. It can also show your some nice stats. Feel free to use this application with your data.

Although this application won't mess up your data, be kind and don't try exotic actions. There is a lot a asynchronous stuff and some will just not work.

Code is available on Github and application is available here.

UniverseJava, Javascript

After a fail with my previous Android application I decided to build an other one. I started to build a small Universe simulator using Canvas. After some hours spent and a disillusion about native applications, I realized that I could do the same application in HTML/Javascript.

To make it more difficult, I choose to use 3D with WebGL. Unfortunately, after some more hours and one or two headaches trying to debugging code, I realized that my old Geforce 7800GT does not support OpenGL ES 2.0. I gave up leaving everything unfinished.

As always when you don't have any direction, I gave up both projects.

SMS OVHJava, Android, OVH API

I give up. OVH does not even answer my e-mails. They've found the right way to disgust a developer.

Unfortunately the application has been removed from the Android market by OVH due to trademark violation. I'm currently in discussion with the legal department from OVH to find a solution, but it really makes me sick to see how they have acted. They removed the application without any warning whereas I spent spare time to develop it.

SMS OVH

I own an Android phone for a while now so I couldn't not try to develop an application. As I also own an OVH account which allow me to send SMS from Internet and avoid roaming fees when I'm traveling, I thought this was the perfect use case for my first Android app. OVH is a big hosting provider in Europe and is also selling SMS packs.

I had to use the OVH SOAP API which is really a pain because there is no native support for XML and WSDL in Android. After I decided to write the XML by hand, I really worked hard to handle network calls. Build a robust application which rely entirely on network services on a mobile device where connection can be killed at every moment is really difficult. And it's even worst when you know that Android apps can be paused or resumed anytime. Anyway, after some hours and a research on Android forums to know how to use Android unpublished SMS API, I managed to make it work pretty well.

If you own an OVH SMS account, try it on the market: http://market.android.com/details?id=name.matco.android.smsovh.

PastryPHP

I have lost all my faith in PHP. I was believing they could build a real language with PHP 6 but I now know this will never happen. The ubiquity of PHP on the web is decreasing as old hosting providers are replaced by new ones which purpose languages like Python, Java or Node.js. I think this is beginning of the end for the PHP era.

Pastry

Inspired by the Apache Tapestry Java web framework, I'm working on a tiny MVC framework in PHP. I would like to show what you can do in PHP. I think there is still a market share for this language as it can be used by everyone to quickly create a website which can be hosted almost everywhere.
The purpose of this project is to allow the creation of prototypes very quickly thanks to MVC. Separation in layers is a good idea to keep a project clean, specifically with PHP. The framework is totally component based and manage data binding. It strongly relies on PHP DOM API.

I wrote a demo website called Tracks using this framework and data generated from my other project Scanlan. This web application allows a logged user to easily search among a catalog of music files, listen one of them and note it.

Tracks is available here.

Next development steps:

Google Wave robot and gadgetJava, Javascript, Google API

You all know what happened to Wave: killed and buried. Anyway, it was a nice try with Google App Engine API.

Google Wave

As an early adopter of Google Wave, I've created a tiny robot. He's counting every user messages in waves where he has been invited. You can invoke him with the command !stats and reset data with !reset. Try him!

Wave robotJust add matthieu-corageoud@appspot.com in your wave.

I've also created a tic-tac-toe gadget.

Wave gadgetInstall this gadget from http://matthieu-corageoud.appspot.com/_wave/3tinstaller.xml by clicking on the "New extension installer" button while writing a new blip.

SVN PythonPython, SVN

I wrote a small web application in Python to manage SVN configuration file using a LDAP as a source to find users.
Details coming soon.

WebdesktopJavascript

Webdesktop

I'm tired from people saying that Javascript is a boring language, cabbalistic and difficult to use. That's why I decided to start a little prototype in Javascript to prove that this language is really interesting with some nice concepts.
The goal is to emulate an OS desktop in a browser. All has been developed from scratch without any usage of common Javascript libraries. This use really bleeding edge code so you must use latest version of Gecko or Webkit to render it.

Go here to give it a try.

Next development steps:

ScanlanPerl

Scanlan

Written in Perl, Scanlan is a bunch of scripts which can index files from a local hard drive or a network location. It creates a database to record some details about each file and try to identify identical files.
The goal was to use this little piece of software during a LAN to index all files on all computers to make sharing easier (LANers would know what I mean).

Unfortunately, I never finished the network part required to discover all computers on the network to find shared files. Today I use it to index all media files on my NAS.