JJPK jjpk.me
Linux systems and networks administrator, SRE & DevOps engineer, perpetually tinkering with way too many things at once.

About me

Thank you very much for your interest! This page is mostly intended as an addition to my CV, to provide an overview of my academic years and of the work I have been doing since. I have structured it all in terms of "milestones" which you can find below. Click here to return to the home page.

Note: if you're curious to know more about the website, its code is publicly available here.

2008: HTML, CSS and QBasic

When I try to think about my first computer sciency memories, two things always come to mind. The first are the amazingly ugly static websites I would write using HTML, CSS and tons of PNG images made with GIMP. I distinctly remember squinting my eyes to align my divs, which I obviously did using absolute positioning everywhere. Fortunately for everyone, I had not even begun to grasp the idea of web hosting, servers, domains... so those pages never got out.

The second thing that comes to mind is the QBasic IDE I was able to use after some classes in secondary school. My IT teacher would let me stay on a workstation at the end of the class and trust me, I was hyped. I would literally instruct the computer to ask me my age, and it would rightfully tell me I was underage. This was the first bit of actual programming I ever did, and I often try to forget that it was on some old Microsoft tech.

Later on I decided to go further and picked up two new languages: PHP to make actual websites (and learn about web hosting, client-server applications), and C for the rest. I eventually added C++ to the list and pretty much stayed on that track until I got into university.

2012: Starting university (BSc)

A couple of months before I left high-school for university, another big revolution happened: I learnt about Linux (and Ubuntu). I quickly picked up on some basic systems admin and crammed my Windows on some isolated partition so that I could have my own Linux system in there too. I can't even give you a rough idea of how many hours I must have spent tweaking every little detail on that setup, and browsing Unix & Linux/Ask Ubuntu.

I started with a two-year degree in computer science, with plans to quickly become a systems administrator. I learnt about hardware architectures, systems, basic algorithmics, assembly, and a couple of other things. I got to do a lot more C and even some C++. This was almost worth being force-fed Java for the rest of the classes. At the end of it, there was even some web development, first some basic frontend using old Javascript, then some ancient backend using JSP (I don't care if it's still in use today, it is ancient). I think some PHP happened too but by then I had already written quite a bit on my own.

After those 2 years, I realised I could definitely push it further and delayed my plans to become a sysadmin. I went on to study for another year. We went a little further with everything I'd seen so far, and a couple of more theoretical classes were added. I started to hear about Turing machines, languages, grammars, numerical analysis... C++ even became the main language, and the only time we'd have to use Java was for the GUI design classes (whatever).

2014: Pushing it further (MSc)

By then, I'd changed my mind about studying. The new rule was: as long as it's not too challenging, keep going. After all, this computer science business did sound fun.

I went for a Masters degree with a focus on complex and distributed systems. It also had a good balance of theoretical and practical computer science, which I appreciated. A couple of trickier subjects were added to the list: probabilistic models, artificial intelligence, data mining (which I realise would be called data science nowadays), advanced database systems and, last but not least, combinatorial optimisation.

Systems-wise, this is when a last revolution happened: I said goodbye to Ubuntu and switched to Arch Linux. Having so much control over my system was extremely satisfying, and I started working on my configuration, which I still tweak and hone to this day. This made the sysadmin classes especially fun, since we were also at liberty to pick, there.

The artificial intelligence classes allowed me to discover one of my main languages of today: Python. Coming from a C/C++ background, I have to admit it felt a little shameful at first, having so little to write or think about. But when they ask you to implement grammar trees, perceptrons, evolutionary algorithms... you gladly put language specifics aside and go for something simple.

We also pushed things a little further in web development, with ES6 and Javascript frameworks (React). We weren't doing much backend though, but that was fine by me. Python had made me ditch PHP and I'd discovered Django as a good framework for larger applications. To this day, Python is still my go-to for web backends, although I tend to prefer Flask or aiohttp.

Finally, I picked combinatorial optimisation as my focus for the final six months. You know that feeling, when things have been confusing for a while and all of a sudden, the last piece of the puzzle shows up and you have that "oh my god I feel enlightened" moment? That's what happened to me when I discovered that field. I realised that most of the algorithmics I had been studying and struggling with for years were all part of one big family of basic theoretical problems. I learnt about complexity theory then and was introduced to the legendary P = NP? question.

2017: In for a penny, in for a pound (PhD)

Remember when I said "as long as it's not too challenging, keep going" ? That's where things got challenging. No more smooth sailing from now on, it was time to feel the pain.

I got so hyped by what I worked on in combinatorial optimisation that I decided to do a PhD in that very field. I applied to a couple of places, and got in touch with a PhD advisor who had a rather fun subject to suggest... Cue the title: on the optimal placement of cameras for the surveillance of urban events. And here's a subtitle because I had room: a real-world, human-assisted combinatorial approach for decision support systems. Basically, if we'd been in a George Orwell novel, that research would have got me into the Party.

In reality though, this really did not have that dystopian vibe... There was a lot of theory, a lot of hair-pulling, and a lot of I'm never gonna finish this. In the end, it was a lot of trying, studying, prototyping (and threatening to flip the table) but now it's over. I could obviously talk about that research and what we came up with for hours (well, at least one hour) but be ready for a lot of salty ranting on the side... In any case, that would require way more space than I feel is reasonable for my website. The manuscript for that thesis should not be too hard to find though.

Aside from the obvious growth in the field of algorithmic complexity, there were also a couple of more techy improvements. I got to perfect my Arch install even further and worked really hard on my C++ skills. I also found room for React and REST APIs in there, to implement more visual prototypes. I got to study distributed and parallel computing too, which was fun. There something thrilling about requesting dozens of machines and CPU nodes to run your experiments.

As part of my "rights" as a member of the computer science lab, I was also able to apply for teaching hours, which I did. I ended up teaching basic algorithmics to first year students, which turned out to be a lot more fun than I had anticipated. It did make me miss the earlier years though. Once I concluded my PhD, I reached the conclusion that academia had nothing more to offer me and that it was time to leave. It was time to find other ways to learn!

2020: Back to engineering (Stop! ...in the name of love)

(My) truth be told, eight years is a lot of time to spend in academia. There's only so much one can take, you know? As much as I enjoyed teaching, I quickly realised how little a lot of academics actually dedicate to the practice. Today's (French?) academia has much more to do with research (and, I'm guessing, the grant money, not to mention the CVs) ; the actual art (yes) of teaching is often relegated to the background. While I do like a good fight, this is one I would have been fighting alone, at least where I was. Now, I'm not saying I won't ever go back to it, but if/when I do, I'd like to be in a different mindset.

And that means... out into the real world we go! (no, university is not the real world)

A couple of months before my viva, I decided to go back to my roots. Sure, optimisation is a lot of fun, but I was forced to realise just how much of a yearning for engineering those three years had cultivated. I really missed using Linux for real. Also, I had yet to set foot in an actual server room (as in, one I'd have access to).

There was an issue though... Almost no one wants a fresh-off-uni PhD in a server room. It does make sense when you think about it: there's very little systems/network admin taught at university, let alone at PhD level. The only way you can really get some (in France) is by choosing shorter-term degrees which involve sessions with professionals (read: industry people, not uni teachers). It took me a hot minute to land an interview with people who would actually test me and not just read my CV (which, in this world, was very empty indeed).

By the end of summer 2020 though, I'd signed my contract with said people, and to the time of this writing, I still work there as a systems administrator and DevOps engineer. I must admit, the change of pace has been a very welcome one. I don't quite remember the last time I got to learn so much so quickly! So many topics for me to dwelve into, and so little time, comparatively... Practical lower-layers networking, cryptography (gotta keep some maths), orchestration, the DevOps approach, creative Git-ing, contributing to Open Source... Let's see how much of all that I can play with before the next milestone!