.

Chrtistophe Roux - Webmiel

Webmiel Société en Commandite Simple
Use contact form if you want to obtain a license for using Marscii-64 in the programming language you develop.
Version Fr Version Es
Veille Mag: Article en Français sur Marscii
christophe.roux@webmiel.fr
Développeur et Testeur Java, formateur et support Chrome OS
Conférence du 24/04/2024 chez IESF sur Chrome OS
Un enjeu stratégique pour Google:
Un environnement complet pour l’usage courant,
Une plateforme de développement à moins de 500€.
Chrome OS est plus qu’un navigateur; Chrome OS est à l’ordinateur de bureau ce que Android est au smartphone.
From Java Legacy to Modern Android: Software Craftsmanship with 30 Years of Experience
Christophe Roux - Senior Engineer, Former Teacher, Author
Android & AI Integration: The Welcoming Robot
A native Android application using Kotlin and TensorFlow for facial recognition.



Software Architecture Expertise
Book author "Architecture logicielle avec GCJ: GNU Compiler for Java"

Skills
Core: Java / C++
DevOps: Docker / Git / CI/CD
Mobile: Android / Kotlin / Compose
TECHNICAL SKILLS
Mobile
Android SDK, Kotlin, Material Design, REST API integration.
Mobile & GUI
Android SDK, Kotlin, Jetpack Compose.
Expertise in GUI Architecture (Swing/AWT)
allowing for rapid mastery of Android Layouts and Component lifecycles.
Core
Java (Expert), C++, OOP, Design Patterns, TDD, Clean Architecture.
Web/Backend
Spring Boot, Spark Java, Angular, TypeScript, PHP/WordPress.
Tools
Version Control Experience, Android Studio, Selenium.
Data/AI
SQL, JSON, XML, TensorFlow (Basic).
Android & Full Stack Developer
IESF & Webmiel Freelance/Contract
2024 – Present
Developed native Android applications and modernized web tools.
Android Development
Built a facial recognition application for a welcoming robot using Kotlin and TensorFlow.
Architecture
Implemented Clean Architecture principles to ensure code reusability and testability.
API Integration
Connected Android apps to RESTful backends (Spring Boot/Spark Java) handling JSON data.
Modernization
Automated the conversion of WordPress user data into agenda displays using PHP.
Automation
Designed a Dockerized development environment to support legacy Java 7 applications, ensuring consistency across development and production stages.
Keywords
Kotlin, Android Studio, REST API, Git, Code Quality.
Software Test & QA Specialist
Hagi-yaki
2016 – Present
Volunteered IT expertise for a non-profit serving the disabled community.
Testing
Identified failures in official websites (France Travail, AI) regarding security concerns.
Quality Assurance
Performed rigorous testing to ensure robustness and usability.
EARLY CAREER (Summary)
C/C++ & GUI Developer:
Worked with Bull, Softeam, Jouve (1990-2000). I specialize in GUI development and Technical Translation.
EDUCATION
Master of Engineering (Ingénieur)
INSA Lyon (1991) Specialization in GUI and Software Engineering.
Scientific High School Diploma
Pass with Distinction (1986)
LANGUAGES
French
Native
English
Fluent (TOEIC 740 - Technical translator background)
Spanish
Fluent
LSF (French Sign Language)
Intermediate (400 signs)
VOLUNTEERING & INTERESTS
President
Hagi-yaki Association (Disability advocacy & IT accessibility).
Marathon Runner
Demonstrated discipline and endurance (2015-Present).
Delegate
MACIF Insurance proximity delegate.
Une vidéo de démonstration de Scripting avec Java
https://youtu.be/g6AxbT-jqqo cliquez sur ce lien ou sur le logo à gauche pour visionner la vidéo de démonstration
Un exemple de code que j'ai développé
// I choosed 2 characters indentation because it fits easily in a book
// but I know that standard java indentation is 4 characters wide
package com.ajeeig.autologic;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class AutoLogic {
public String qualityName = "smallness";
public String antiQualityName = "greatness";
public String s1 = "megabyte";
public String s1opt = "mega";
public String s2 = "epsilon";
public String word = null;
public boolean nOrMore = false;
public boolean quality = false;
public boolean property = false;
public boolean shortness = false;
public boolean smallness = false;
public int enne = 5;
public int stepFinish = 7;
public static void main(String[] args) {
AutoLogic al = new AutoLogic();
al.quiz();
System.out.println("Thank you for playing.");
}
boolean result(boolean exact) {
if (exact) {
System.out.println("Good!");
} else {
System.out.println("Bad!");
}
return exact;
}
boolean readAnswer() {
String s;
try {
BufferedReader in =
new BufferedReader(
new InputStreamReader(
System.in));
System.out.println("Please, provide an answer (y/n).");
s = in.readLine();
if (s.equals("y") ||
s.equals("Y") ||
s.equals("o") ||
s.equals("O")) {
System.out.println("You answered Yes.");
return true;
}
} catch (IOException e) {
}
return false;
}
boolean checkProperty(boolean value) {
if (nOrMore && value) {
return false;
}
return true;
}
void usage() {
System.out.println(
"Use keyboard keys \"y\" or \"n\" for choosing " +
"then <Enter>.");
}
public void quiz() {
boolean a = false;
boolean b = false;
int step = 0;
boolean swap = true;
boolean askAgain = false;
loop:
while (step <= stepFinish + 1) {
step++;
switch (step) {
case 1:
askAgain = false;
System.out.println("Choose a word from " +
"the following:");
if (swap) {
System.out.println(s1 + " (y)");
} else {
System.out.println(s1opt + " (y)");
}
System.out.println(s2 + " (n)");
break;
case 2:
if (word == null) {
step = 0;
System.out.println("You have to choose a word and " +
"it cannot be null.");
continue;
}
System.out.println("boolean a <== the word \"" + word +
"\" expresses the " +
qualityName + " (y) or the " +
antiQualityName + " (n)?");
break;
case 3:
System.out.println("boolean b <== the word \"" +
word + "\" is " + "short (y) or long (n)?");
break;
case 4:
if (a && b) {
System.out.println("Is the word \"" + word +
"\" autologic?");
break;
} else {
step++;
}
case 5:
if ((!a) && (!b)) {
System.out.println("Is the word \"" + word +
"\" autologic?");
break;
} else {
step++;
}
case 6:
if ((!a) && b) {
System.out.println("Is the word \"" + word +
"\" heterologic?");
break;
} else {
step++;
}
case 7:
if (a && (!b)) {
System.out.println("Is the word \"" + word +
"\" heterologic?");
break;
} else {
step++;
}
case 8:
default:
if (askAgain) {
step++;
break loop;
}
System.out.println("Do you want to try again?");
if (!askAgain) {
askAgain = true;
}
}
usage();
boolean answer = readAnswer();
switch (step) {
case 1:
if (answer) {
if (swap) {
word = s1;
} else {
word = s1opt;
}
} else {
word = s2;
}
quality = !answer;
nOrMore = (word.length() >= enne);
property = !nOrMore;
break;
case 2:
a = answer;
if (!result((a && quality) || ((!a) && (!quality)))) {
step = stepFinish;
}
break;
case 3:
b = answer;
if (!result((b && property) || ((!b) && (!property)))) {
step = stepFinish;
}
break;
case 4:
if (!result(answer == (quality && property))) {
step = stepFinish;
}
break;
case 5:
if (!result(answer == ((!quality) && (!property)))) {
step = stepFinish;
}
break;
case 6:
if (!result(answer == ((!quality) && property))) {
step = stepFinish;
}
break;
case 7:
if (!result(answer == (quality && (!property)))) {
step = stepFinish;
}
break;
case 8:
default:
if (answer) {
swap = !swap;
step = 0;
}
}
}
}
}

Région Parisienne
J'habite en région parisienne sur la commune de Fresnes dans le Val de Marne. Je dispose d'un véhicule et du permis B.
Si vous désirez me contacte, cliquez sur lien ci-dessous.

Nos mentions légales
version 3 décembre 2025
éditeur: Webmiel 6 avenue de la Libération 92 350 Le Plessis-Robinson France tel : +33(0) 749 12 53 39 Société en commandite simple SIREN : 931214126 RCS Nanterre Naf : 58.29C https://www.webmiel.fr christophe.roux@webmiel.fr
hébergeur: 1&1 Ionos Sarl 7 place de la Gare BP 70201 Sarreguemines Cedex