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.
NAS: Checking status
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.
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
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
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:
- Make the application compatible with all Garmin watches
WebwatcherPython, Google App Engine
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.
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 deployed on a free instance on Heroku.
Next development steps:
- Reliability across modern browsers
- It would be nice to add audio and video
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.
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.
Unfortunately (again), Google closed the Latitude API. The application no longer works.
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.
Application is available here.
Next development steps:
- Fix all bugs
- Allow to add a record (seems like a bug in Google API helper)
- Find a better use case
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.
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.
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.
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:
- Make Pastry a standalone package
- Allow to build playlists
- Share favorites tracks with other users
You all know what happened to Wave: killed and buried. Anyway, it was a nice try with Google App Engine API.
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!
Just add firstname.lastname@example.org in your wave.
I've also created a tic-tac-toe gadget.
Install 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.
Go here to give it a try.
Next development steps:
- Fix some bugs
- Improve configuration section by adding more informations about logged user and more settings like colors or background image, using new file API (HTML5)
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.