summaryrefslogtreecommitdiff
path: root/personal/cv
diff options
context:
space:
mode:
Diffstat (limited to 'personal/cv')
-rw-r--r--personal/cv/.gitignore2
-rw-r--r--personal/cv/Makefile23
-rwxr-xr-xpersonal/cv/add-personal-info.sh29
-rw-r--r--personal/cv/cv.org102
-rw-r--r--personal/cv/en-short.md34
-rw-r--r--personal/cv/fonts.tex12
-rw-r--r--personal/cv/personal-info.template3
7 files changed, 102 insertions, 103 deletions
diff --git a/personal/cv/.gitignore b/personal/cv/.gitignore
deleted file mode 100644
index 30c5702..0000000
--- a/personal/cv/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-results
-personal-info \ No newline at end of file
diff --git a/personal/cv/Makefile b/personal/cv/Makefile
deleted file mode 100644
index 00715cd..0000000
--- a/personal/cv/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-PDFs = $(patsubst %.md,results/%.pdf,$(wildcard *.md))
-inputs = $(patsubst %.md,results/%.md,$(wildcard *.md))
-
-pandoc_options = --verbose
-
-$(PDFs): pandoc_options += \
---pdf-engine=xelatex \
---include-in-header=fonts.tex \
- -V mainfont="DejaVu Sans" -V colorlinks
-
-all: $(PDFs)
-
-results/%.pdf: results/%.md fonts.tex | results
- pandoc $< $(pandoc_options) -o $@
-
-results/%.md: %.md add-personal-info.sh | results
- ./add-personal-info.sh $< $@
-
-results:
- mkdir $@
-
-clean:
- -rm -r results
diff --git a/personal/cv/add-personal-info.sh b/personal/cv/add-personal-info.sh
deleted file mode 100755
index 2e9ea8b..0000000
--- a/personal/cv/add-personal-info.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-input=$1; output=$2
-cp ${input} ${output}
-
-. personal-info
-
-fullname=$(getent passwd $(whoami) | cut -d: -f5 | cut -d, -f1)
-sed -i s/INSERT-FULLNAME-HERE/"${fullname}"/ ${output}
-
-# On the one hand, anyone can compute my age from my birth date. On
-# the other hand, wasting reader brain cycles on this computation
-# sounds kind of rude. On the gripping hand, having to bump my age
-# manually every year would be silly. Clearly the way forward is to
-# summon the powers of bash, date, bc and sed to save us the trouble.
-
-birthstamp=$(date -d "${birthday}" +%s)
-now=$(date +%s)
-age=$(bc <<< "(${now}-${birthstamp})/(3600*24*365.25)")
-sed -i s/INSERT-BIRTHDATE-HERE/"${birthday} (${age})"/ ${output}
-
-sed -i s/INSERT-LOCATION-HERE/"${location}"/ ${output}
-
-sed -i s/INSERT-PHONE-HERE/"${phone_number}"/ ${output}
-
-# Set by .profile and/or .xsessionrc.
-sed -i s/INSERT-MAIL-HERE/${EMAIL}/ ${output}
diff --git a/personal/cv/cv.org b/personal/cv/cv.org
new file mode 100644
index 0000000..d5751f1
--- /dev/null
+++ b/personal/cv/cv.org
@@ -0,0 +1,102 @@
+I strive to develop reliable and maintainable software,
+with an eye toward improving the tools of our craft.
+
+* Experience
+** 2014 – present: software engineer at Airbus CyberSecurity
+*** Research
+I took part in the [[https://paclido.fr][PACLIDO project]], a French government-funded project
+gathering industrial and academic partners in order to design and
+implement *lightweight authenticated encryption algorithms* and
+protocols.
+
+During the course of this project,
+
+- I implemented the reference version of Lilliput-AE, our submission
+ to the [[https://csrc.nist.gov/projects/lightweight-cryptography][NIST Lightweight Cryptography Standardization Process]].
+
+- I described this implementation in [[https://csrc.nist.gov/CSRC/media/Projects/Lightweight-Cryptography/documents/round-1/spec-doc/LILLIPUT-AE-spec.pdf][the algorithm's specification
+ document]], comparing its performance to that of Ascon and ACORN, the
+ lightweight winners of the [[https://competitions.cr.yp.to/caesar-submissions.html][CAESAR competition]].
+
+- I extended the [[https://www.cryptolux.org/index.php/FELICS][FELICS]] benchmarking framework to support AEAD
+ algorithms; we [[https://gitlab.inria.fr/minier/felics-ae/][published this fork]] and presented these improvements
+ at the [[https://csrc.nist.gov/CSRC/media/Presentations/felics-ae-a-framework-to-benchmark-lightweight/images-media/session3-huynh-felics-ae.pdf][NIST LWC Workshop 2019]].
+
+- I developed optimized software implementations for Lilliput-AE on
+ the 16-bit MSP430 platform.
+*** Industrial development
+For four years, I helped develop a network monitoring appliance. My
+main role was *maintaining the codebase* for an in-house rule-matching
+engine: designing and implementing features, fixing bugs… Over the
+course of the project, I took part in many other activities:
+
+- I helped our project transition from manual software packaging to
+ full-blown continuous integration,
+
+- I contributed extensively to our integration test suite,
+
+- I studied some mechanisms to improve the system's security (Secure
+ Boot, TPMs) and helped implement others (LXC containers).
+
+- I reviewed all uses of cryptography in the system as part of our
+ security certification process; this allowed me to get a good grasp
+ of how filesystem encryption, VPNs, webservers, and repository
+ authentication are configured in a free software distribution.
+
+- I supported our license team in assessing our use of free and open
+ source software.
+** 2014 (6 months): internship at Airbus CyberSecurity
+I extended an *Intrusion Detection System to authenticate and decrypt
+its ruleset using a Hardware Security Module*. This was a very
+informative foray into the world of cryptographic APIs, such as:
+
+- the [[https://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html][PKCS#11]] standard to communicate with hardware tokens,
+- the [[https://tools.ietf.org/html/rfc2315][PKCS#7]] format, and its successor [[https://tools.ietf.org/html/rfc5652][CMS]], to serialize encrypted and
+ authenticated messages,
+- the [[https://tools.ietf.org/html/rfc5280][X.509]] standard to understand how PKIs work and how to process
+ certificates,
+- the [[http://luca.ntop.org/Teaching/Appunti/asn1.html][ASN.1]] format to reverse-engineer cryptic HSM errors, such as
+ ECDSA signatures lacking the [[https://www.cryptsoft.com/pkcs11doc/v220/group__SEC__12__3__1__EC__SIGNATURES.html][zero-padding expected in PKCS#11]],
+- [[https://www.openssl.org/][OpenSSL]], to setup PKIs, [[https://stackoverflow.com/a/23422301/1503371][encrypt and sign rulesets, and generate CSRs
+ for keys stored securely on a hardware token]].
+
+I also got to learn [[https://security.stackexchange.com/q/58131][a thing or two]] about network security.
+
+As far as software development goes, I dug into many aspects of C
+programming: debugging with gdb and valgrind, profiling with
+gperftools, the best practices for [[https://www.akkadia.org/drepper/dsohowto.pdf][shared libraries development]]… I
+also got a feel for Python by way of [[https://scapy.net/][Scapy]].
+** 2013 (4 months): internship at LIRIS laboratory
+I studied two protocols for anonymous communication:
+
+- [[https://dedis.cs.yale.edu/dissent/][Dissent]] :: "accountable anonymous group communication",
+- [[https://hal.inria.fr/hal-00945795][RAC]] :: "freerider-resilent, scalable, anonymous communication"
+ ([[https://web.archive.org/web/20131018000154/http://www.temple.edu/cis/icdcs2013/data/5000a520.pdf][paper]]).
+
+The goal was to instrument Dissent's implementation to assess its
+performance, then to implement and benchmark RAC in order to validate
+the theoretical results presented in its specification.
+
+While four months proved too short for me to obtain comparable figures
+for both protocols, I appreciated this opportunity to dive into the
+guts of these secure communication protocols. Technically, I also
+enjoyed sharpening my knowledge of C++, the Boost framework, and
+working with the [[https://www.grid5000.fr/w/Grid5000:Home][Grid5000 environment]].
+** 2012 (2 months): internship at Vescape 🇩🇪
+I helped this innovative startup expand its game repertoire by
+studying a free software game engine and adapting the gameplay to
+their unique use-case.
+
+This was my first deep-dive into a considerable codebase, and thus my
+first opportunity to practise various aspects of software development
+(version control, debugging) on a non-trivial C++ project.
+** 2009 – 2014: school projects at INSA de Lyon
+Thanks to INSA's generalist syllabus, as well as [[http://gamerush.free.fr/debriefing2.html][some extra-curricular
+activies]], I touched on a wide array of problem domains and
+technologies:
+
+- drivers for segmented LCD displays on MSP430 microcontrollers, in C,
+- image recognition based on [[https://en.wikipedia.org/wiki/Image_moment#Rotation_invariants][Hu moment invariants]], in C,
+- game engines, in C++ and Java,
+- GUIs in Java,
+- webservers, in Java and Go.
diff --git a/personal/cv/en-short.md b/personal/cv/en-short.md
deleted file mode 100644
index 78424c7..0000000
--- a/personal/cv/en-short.md
+++ /dev/null
@@ -1,34 +0,0 @@
-% INSERT-FULLNAME-HERE
-
-------------- ---------------------
-Date of birth INSERT-BIRTHDATE-HERE
-Location INSERT-LOCATION-HERE
-📱 INSERT-PHONE-HERE
-📧 INSERT-MAIL-HERE
-------------- ---------------------
-
-Areas of interest: system & network programming, cryptography
-
-# Skills
-
-------------------- ------------------------------------------------
-Software tools SCM (**Git**, SVN), IDEs (**Emacs**, Eclipse),
- GNU toolchain, Debian packaging, Jenkins, Docker
-Methodologies Continuous integration, Agile, TDD
-------------------- ------------------------------------------------
-
-## Programming languages
-
------------ -------------------------------------------------
-fluent **C, Python 3, Bash, Makefile**
-dabbles in Emacs Lisp, Rust, assembly
-notions C++, Java, C#, Go, Ruby, Pascal, Prolog, Streamit
------------ -------------------------------------------------
-
-## Spoken languages
-
-------- ------------------------
-native French
-fluent English (TOEIC: 990)
-notions Spanish, Russian, German
-------- ------------------------
diff --git a/personal/cv/fonts.tex b/personal/cv/fonts.tex
deleted file mode 100644
index 1a36389..0000000
--- a/personal/cv/fonts.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-\tracinglostchars=2
-
-\usepackage{fontspec}
-\usepackage[Latin,NumberForms,Punctuation,Symbols]{ucharclasses}
-
-\newfontfamily{\mydefaultfont}{Symbola}
-\newfontfamily{\mymainfont}{DejaVu Sans}
-
-\setTransitionsForSymbols{\mydefaultfont}{\mymainfont}
-\setTransitionsFor{NumberForms}{\mydefaultfont}{\mymainfont}
-\setTransitionTo{Punctuation}{\mymainfont}
-\setTransitionTo{Latin}{\mymainfont}
diff --git a/personal/cv/personal-info.template b/personal/cv/personal-info.template
deleted file mode 100644
index 0ec9b09..0000000
--- a/personal/cv/personal-info.template
+++ /dev/null
@@ -1,3 +0,0 @@
-birthday='1970-01-01'
-location='Somewhere'
-phone_number='+42 7 42 42 42 42'