Sylvain DOIGNON

Technology enthusiast. Love to solve all kinds of problems.

I realized this small website to present my personal IT projects. The number of my Github repositories keeps growing (for serious ou fun projects) and I wanted to show them in a more orderly way. For every project I explain why and how & and provide a screenshot and a link to the repository where you can find the actual code. I hope some of them will get your attention.

There are currently ? projects presented here with the following tags (click to filter): empty

Viewing the project with the tag :

Now
 April 2017

My new resume

My previous resume was made with Photostop. Every edit was a nightmare: boot up a Windows VM, open the bloated Photostop, make the edit, re-align all the content, flatten all the layers, export it with the correct parameters... Furthermore Photoshop is not free as in speech or as in beer.

That's why I decided to make the same resume but with LaTeX which is a professional document preparation system. Basically, you declare the general layout, the content and LaTeX does all the formatting part. This is great! No more time is wasted on the layout.

This was my first real LaTeX document and I used the great moderncv document class. I only disliked the header layout so I made one myself.

Now, editing my resume is really easy. Fire up a text editor, make the edit and compile in seconds the corresponding PDF.

LaTeX

 More details

 April 2017

This website

Created to explain and present my projects in a more practical manner that Github does.

Made from scratch, easily editable & hosted on Github.

This website is defined by meta-language, such as LESS & Pug who compiles respectively to CSS & HTML. This allows the code to be as small as possible and very modular. Furthermore, when in development, I've added a watcher on some files to automatically launch the build process. In this way, there is no "build time" drawback.

Code strive to be minimal. This project permitted to acquaint myself with the relatively new CSS flexbox positioning system.

WebShell scriptsnpmLESSCSSPug

 More details

 December 2016

My Terminal Dashboard

I always dreamed about a screen always on presenting some useful information. The low energy small laptop WM8650 from a previous project was a perfect device for this.

This device can't host an X server with good performance that's why a fancy way to create such a dashboard can be a terminal app. I've chosen the Go termui library to learn the Go language.

Extra, nobody likes to miss a train because it left just a few minutes ago. Also, the general train status is important. When all trains are cancelled because of an outage, it's better to anticipate. Furthermore, everybody likes weather forecasts. That's why I wanted my app to display all this information.

For this, this app fetches some information from the RATP & the Open Weather APIs.

The dashboard displays the following info :

  • Trains status
  • Next trains
  • Next bus
  • General day information
  • Weather
    • Temperature
    • Cloud coverage
    • Wind speed
    • Rain

You can also control the house's light bulbs thanks to the Hue system.

This device is now used everyday and is very convenient. I never missed a bus or discovered a cancelled train while in the station!

GoTerminal appAPI

 More details

 November 2016

Astronomy Picture of the Day

This project was my third Android app but the first really useful one: this app fetches and present the NASA's Picture of The Day.

I started this project for a school project intended to learn images gesture on Android. But instead of the dumb and useless app requested, I wanted to make this app useful. Therefore, I pushed the instructions further and came with this idea of presenting beautiful images (with gestures support, of course) but along with other features. Such as:

  • Fetch the last two NASA Pictures of the Day
  • Create a date picker to view a past picture
  • Open the related NASA website
  • Share the app with your friends
  • Great UI?

This app has been great fun. I still have the app on my phone to learn space things and this app is often downloaded by people all around the globe.

AndroidJavaAPI

 More details

 November 2016

MiniList

My second Android app was very educational and kind of useful. In fact, this app is the classic TODO app.

This app manages notes. Each note can have a deadline and a priority. Then, you set the task as "done". The main view allows the notes to be sorted by numerous criteria.

This project permitted to learn the intent, activity and list view objects in Android.

AndroidJava

 More details

 November 2016

Temperature Convertor

This is a school project. The instructions were to make a temperature converter with a UI app as simple as possible. That's why there are no buttons but only two fields that convert automatically the number you input.

This app permitted to discover the Android development that I always wanted to discover.

AndroidJava

 More details

 October 2016

WM8650

This is one of my favourite challenge/project.

While friends were about to throw away this antique Android-only laptop (useless to them), I recovered this laptop challenging myself to install Linux on it.

First, this Chinese small laptop had one of the first release of Android : Froyo. It was painfully slow on this device and not usable at all: who support Android 2.2 nowadays?

As i said, I decided to make it run Linux! The possibilities could be endless after that. This device uses uboot as a bootloader and supports booting from an SD card. Luckily, the architecture armv5 is quite common. I managed to find a great OS for it: ARM Arch Linux. Others had done this before but with older kernels. So I had to to cross compile a kernel, reboot by reboot, option by option to get this device up with the latest version of ARM Linux & the Kernel (4.7 at the time).

This has been great fun. I learned a ton about the kernel and the ARM architecture. And more importantly, this device is now useful! It has a fully working ethernet port, 3 USB ports, WIFI, small screen and keyboard!

OSHardwareKernelLinuxFirmware

 More details

 September 2016

My dotfiles

I love to tune everything to the perfection for my usage. So, after hours on various things (Zsh, Git, etc.) here's my dotfiles.

More info coming soon.

LinuxShell script

 More details

 May 2016

MiniVim

My first text editor was Sublime Text. I still like it. However it's not an open-source software and can't run in terminals. I always knew about Vim & Emacs but wasn't appealed by the apparent complexity and change.

When I had to edit a lot of files in terminals, I got tired of nano. That's why I managed to make Vim behave like Sublime Text. The MiniVim project was born.

I spend hours creating the most awesome vim configuration I could. That was very instructive. I discovered Vim a lot. The project is now quite big and complete and Vim is now much more intuitive for Sublime Text newcomers.

I use this tweaked Vim everyday at work or at home.

After Korben.info made a post about it, people took interest in the project and I had to manage it like a real small open-source project: issues, pull-requests, forks, etc.

This is my most successful project yet with over 270 Github stars.

VimCommunity

 More details

 May 2016

Graf'hit.net

For a school project, we had to realize a website with a great UX. We didn't wanted to create another useless website so we ask around the university who wanted a new website. Graf'hit radio answered first.

We decided to develop the website using Node.js that I have been experimenting with a bit. At this occasion, I improved my Node.js skills and was my first website created with Node.js.

One interesting requested feature was the fact that you should be able to navigate on the website without the current audio stream interrupted. That means you can't just change the page when the visitor click a link but you have to dynamically update the content using Ajax.

This website has some great features and got myself to know about audio in HTML5: real-time, replays, etc. It was impressive and empowering to design a website for a real usage, a radio.

Source code

Node.jsJSAjaxMySQLWeb

 More details

 March 2016

Screensaver SVG-JS

I wanted to find a fun project for an evening and learn more about SVGs.

That's why I created a website recreating this old Windows XP screensaver which bounce a triangle across the screen edges.

Source code

SVGJS

 More details

 February 2016

Human2Cat Chrome Extension

Following my Human2Cat language experiment, I wanted to be able to translate text on the fly in the browser. Furthermore, at that time, I never wrote a browser extension.

When a text is selected, with a right-click or a hotkey, you see the translated text. When the selection is in an editable field, the content is replaced by the translation.

With this project, I discovered the Chrome extension API which is quite good in my opinion. This experiment is small but improved my knowledge about browsers.

This extension is now published on the Chrome Extension Store, I'm a happy man.

JSChrome Extension

 More details

 February 2016

Human2Cat Language

Fascinated with ciphers, I wanted to create a small and fun one.

This program can turn any text into a "cat language". => grau, mio, Mio, Miaa, mi mia, miaa, Miouu, Miuu, miaa, Mi, Miou, mi Mii, Mi, miouu, mi miau, Miau, miaa, miouu, mi Mi, miouu, Miao, mi miau, Miu, miao, miau, mi Mio, miouu, miau, Miouu, mi Mi, mi mii Mii, Mi, miau, mi miou, Mi, miouu, Miuu, Miau, Mi, Miuu, Miu, mii miouu

Then, you can convert it back with no information loss whatsoever. It's not encrypted at all, it's basically just a fancy way to store 8 bits (that way, all UTF-8 character sets are supported).

Source code

JSWebCiphers

 More details

 January 2016

KikiBangBang

Java is, for now, not my cup of tea. However for a school project, in a group of two we had to make a website with Java EE.

This website is KickStarter or IndieGogo basic copy. I knew nothing about Java EE at first so I learned a lot that way.

WebJava EEJavaMySQL

 More details

 December 2015

How much do you make per...?

I wanted to know how much I made in an hour, in a day, etc. I found no websites doing so.

Of course I could just grab a calculator. But, I can't be the only one wanting to know this: someone had to do it.

Source code

JSWeb

 More details

 December 2015

Gnome Shell - Toggle Zoom

My laptop has a high resolution for its screen size. That means, sometimes, I can't read the texts because it's too small. In this was, I used xrandr to "scale" the display to a lower resolution.

But this solution needed to open a terminal and type something and was not very convenient. That's why I decided to add a shortcut to "toggle scaling/zoom" in my desktop environment ; Gnome Shell at the time.

My extension creates a small icon on the top right corner of the screen which is able to toggle the scaling. This worked and no more terminals were opened to change the scaling factor from this day.

Gnome ShellLinuxJS

 More details

 December 2015

Gnome Shell - DDCcontrol

I have an external monitor. I frequently change the brightness with the buttons under the monitor. However, this is not convenient and fast.

The DDC protocol exists to control the monitor settings through HDMI. That way, using a command line program, I was able to set my monitor brightness. Still, that was not enough fast and intuitive.

That's why a created another Gnome Shell extension that pop up a small window with a slider to change a monitor brightness. That way, I was satisfied.

Gnome ShellLinuxJS

 More details

 June 2015

Project Calendar

For a school project, in a group of two we had to develop an C++ Qt Calendar application. That was the final project for a fascinating C++ course.

Features requested were;

  • Display week days
  • Create projects with corresponding tasks
  • Meta-Task can be created to gather sub tasks
  • Each task has a start date, an end date, etc.
  • Export all the projects
  • Create reminders

I took this project very seriously and I wanted to make the best app possible. Both code side and UI side. I worked hard, discovered Qt in depth to create this app.

Finally, we had the best grade for this app and we learned a lot.

C++Qt

 More details

 November 2014

UTC login bookmarklet

The SSO of my University forbids the web browser to remember credentials. While this is mainly a good idea, on my personal computer this is a struggle.

For this, I created a bookmarklet (a special bookmark that embeds Javascript code) to solve this problem. When you click on this special bookmark, it will redirect you to the SSO website if you're not already there. Then, it will automatically submit the form using your credentials.

As always, I like to share and help others. That's why I created a small website to allow everyone to create their own login-bookmarklet.

This website was a success was used by other students!

BookmarkletJSWeb

 More details

 June 2014

Travl

In summer 2014, my friends and I went on a long trip across Europe hitchhiking. That was amazing. Before we began, I wondered how we could give news to our families.

Using our email address were not an option because it would be dangerous if we logged on a shared computer. Furthermore, we would be sentenced to include a long list of all the people we wanted to share news with.

That's why, we needed a website to post news. However, CMSs at the time were not very mobile friendly. So I had to develop a mobile-centric one!

  • The website is very small in size
  • The configuration is minimal, simply create a folder with each member you want to create
  • You can write articles easily, even on mobile. You can join pictures

During this long trip, this website was heavily used. Our parents loved it and we could share the address of this website to the people we met. That was a success!

PHPCMSJSSQLiteWeb

 More details

 May 2013

Piwake

In my University, viewing the timetable was a nightmare. You had to click 7 times and log in every time. That could not last.

This was my first real project. In a nutshell, this website scrapped the Timetable server. Then, it parses the special files received. Then, it populates a database. Meanwhile, a website allowed to view the timetable very easily and... beautifully.

This project was a huge success. I started this website only for my personal convenience but soon lots of people in my class, then in other classes, used it.

I made two derivatives.

Piwake, the original

Piwake Lite, a lighter version that only needed Javascript and fetched the timetable "live"

Austra, or a project directed by the University itself to replace the original viewer including other enhancements.

This project was a ton of fun and very instructive. Having a website used by other people raised real world problem like availability (my Raspberry Pi sometimes crashed because of the unstable current).

PHPShell scriptMySQLJSRaspberry Pi

 More details

 May 2013

PiMeal

At that time, I lived in a family in Bordeaux and have to count my meal I took with them to pay them at the end of the month.

First, we had the "sheet of the fridge" system. It worked but was sometimes forgotten and you had to sum up at the end of the month something that a computer could do.

Also, I learned PHP in school during that time.

That's how my first PHP project was born: PiMeal. A small PHP page with a button on the bottom "Add a meal". Afterwards, depending of the time of the day, the meal would be stored in a database. And the global counter on the bottom was always up-to-date.

After that, it was a pleasure to add my meal and see how my app was working well!

PHPSQLiteRaspberry Pi

 More details

 May 2013

My Raspberry Pi

My Raspberry Pi.

This was the beginning of a long journey (not yet finished) of various projects. I learned a lot about Linux and Internet thanks to it.

In fact, it was connected to the Internet and I brought a domain. Then I set up a dynamic DNS because it was hosted behind a non static IP router.

LinuxRaspberry Pi

 More details