Compétences

(You can switch this page to display in english by clicking on the flag in the top bar)

Programmation :

Langages :

  • C++ (notamment les normes modernes C++11 et C++14)
  • C
  • Notions d’assembleur pour processeur x86-64. Microcontrôleur 8bit Atmel AVR, Microprocesseur 8bit vintage type MOS6502

Je suis essentiellement spécialisé dans le code à bas niveau, proche du hardware (Carte graphique, carte son) et de l’OS. (Réseau, API Windows Win32, POSIX Threads, XLib…)

Dans ce cadre je maîtrise plusieurs bibliothèques et outils pour développer des application (notamment 3D temps réel, type simulation et jeu vidéo). Je suis familier avec les technologies suivantes :

  • Ogre (Moteur graphique 3D haut niveau orienté scène)
  • IrrLicht (Moteur graphique 3D simple et rapide, mais plus limité)
  • OpenGL (API de programmation pour carte graphiques)
  • SDL2 (Multimédia multi-plateforme. )
  • OpenAL (Spatialisation du son)
  • libsndfile (Décodage, Encodage de multiple formats de fichier audio)
  • Framework Qt en C++ (Développement d’application, interface graphique. Intégration de bibliothèque de rendu externe dans Qt. Par exemple: Projet personnel : Qt5Ogre21)
  • Bullet (Simulation physique et collision)
  • LibOVR (SDK Oculus Rift)
  • OpenVR (Communication avec la plateforme SteamVR. Pour communiquer avec casque type HTC-Vive)
  • TinyXml2
  • posix thread
  • API Win32
  • Catch (tests unitaires en C++)

J’ai utilisé notamment ces bibliothèques dans un projet personnel open-source en développement continu appelé Annwvyn. Annwvyn est un moteur de jeu pour casque de réalité virtuelle sous forme d’un framework de développement C++.

Je pense aussi qu’un bon code est un code clair, modulaire et documenté. J’ai pris l’habitude de toujours organiser et commenter du code de façon à ce qu’il puisse être processé par des outils comme Doxygen.

J’aime beaucoup essayer de nouvelles choses et je n’ai jamais peur d’aller retourner la documentation (et le code source, si disponible) d’une nouvelle bibliothèque afin d’apprendre à l’utiliser rapidement.

En dehors de ces domaines, j’ai aussi eut l’occasion d’utiliser d’autres langages de programmation :

  • Python
  • Java
  • C# (Dans le cadre de développement avec Unity3D)

Développement web :

Ce n’est pas ma spécialité, mais j’ai déjà réalisé des projets Web utilisant :

  • HTML5
  • CSS3
  • PHP 5
  • JavaScript

CMS :

  • WordPress
  • PluXml
  • DokuWiki (Wiki en ligne)

Administration système :

Sur mon temps libre, j’aime m’occuper de machines sous Linux qui servent plusieurs service que j’utilise avec mes amis et proches:

  • Distributions Linux (Debian-like, Suse et ArhcLinux)
  • Stack LAMP
  • Serveur mail PostFix
  • Serveur de mailing-list MailMan
  • Serveur de discussion XMPP (Prosody)

Graphisme :

Je ne suis pas graphiste. Mais les dommaines de programation qui m’intéresse font que je dois souvent manipuler des images, textures et modèles 3D dans des logiciels de graphisme.

Logiciels :

  • Gimp (Retouche d’image) – un équivalent libre de PhotoShop
  • Blender (Modélisation 3D) –
  • MakeHuman (Génération paramétrique de models 3D humanoïdes)
  • InkScape (Dessin vectoriel) – un équivalent libre d’Illustrator