---
title: Projects
---

* Academic projects

 [fn::{-} [[./images/communities.png]]]

** Master's thesis: [[https://github.com/dlozeve/tda-networks][Topological Data Analysis of time-dependent networks]]

Application of the recent advances in Topological Data Analysis (TDA)
and Persistent Homology to periodicity detection in temporal
networks. [[./files/tdanetworks.pdf][Master's thesis dissertation]].

** [[https://github.com/dlozeve/community-detection][Community detection]]

Community detection algorithms and applications to a large social
network obtained from Prestashop data. [[https://dlozeve.github.io/reveal_CommunityDetection/#/][Slides (in French)]].

* Personal projects

** [[https://mlochbaum.github.io/BQN/][BQN]] libraries

- [[https://github.com/dlozeve/bqn-graphics][bqn-graphics]]: A collection of graphics-related tools for BQN
  (generate [[https://netpbm.sourceforge.net/doc/pnm.html][PNM]] images, convert between RGB and HSV, various
  colormaps).
- [[https://github.com/dlozeve/bqn-npy][bqn-npy]]: Serialize and deserialize arrays in BQN to the Numpy [[https://numpy.org/doc/stable/reference/generated/numpy.lib.format.html][NPY format]].
- [[https://github.com/dlozeve/bqn-curl][bqn-curl]]: BQN HTTP library, from [[https://curl.se/libcurl/][libcurl]] FFI bindings.

** [[https://github.com/dlozeve/sncf-bot][SNCF Bot]]

Display the next departures at any SNCF train station. It also
implements a bot for Mattermost.

** [[https://github.com/dlozeve/uniplot][Uniplot]]

Plotting tool for displaying CSV data directly in your
terminal. Uniplot uses Unicode Braille characters and ANSI control
codes to display line plots as text. It can be used as part of a
standard Unix pipeline. ([[https://cons.io/][Gerbil Scheme]])

** [[https://github.com/dlozeve/ShaderTool][ShaderTool]]

Live tool for developing OpenGL shaders
interactively. High-performance GPU rendering, live reloading,
screenshots, FPS tracking. (C)
[[https://dlozeve.github.io/ShaderTool/][Documentation.]]

** [[https://github.com/dlozeve/reaction-diffusion][Reaction-diffusion system]]

 [fn::{-} [[./images/reactiondiffusion.png]]]

[[https://en.wikipedia.org/wiki/Reaction%E2%80%93diffusion_system][Reaction-Diffusion system]] simulation using the Gray-Scott
model. ([[https://www.dyalog.com/][Dyalog APL]] and [[https://mlochbaum.github.io/BQN/][BQN]])

** [[https://github.com/dlozeve/GardenOptim][GardenOptim]]

Optimization of a vegetable garden: optimal allocation of plant
species on a non-rectangular garden subdivided in individual cells,
with constraints from an affinity matrix between neighboring
species. Uses mixed integer quadratic programming and Markov chain
Monte Carlo.

** [[https://github.com/dlozeve/ising-model][Ising model simulation]]

 [fn::{-} [[./images/ising.gif]]]

Monte Carlo simulation of the [[https://en.wikipedia.org/wiki/Ising_model][Ising model]] using
Metropolis-Hastings. [[./posts/ising-model.html][Associated blog post.]] (Clojure)

** [[https://github.com/dlozeve/lsystems][L-systems]]

Generate and draw L-systems. (Haskell)

** [[https://github.com/dlozeve/Satrap][Satrap]]

Simple ARP spoofer, allowing for interception and modification of all
communications between two targets. It sends ARP packets to perform a
man-in-the-middle attack. (C)

** [[https://github.com/dlozeve/orbit][Orbit]]

[[https://en.wikipedia.org/wiki/N-body_simulation][N-body]] simulator. (Haskell)

** [[https://github.com/dlozeve/Civilisation-hs][Civilisation]]

[[https://en.wikipedia.org/wiki/Boolean_satisfiability_problem][SAT solver]], using the [[https://en.wikipedia.org/wiki/DPLL_algorithm][Davis-Putnam-Logemann-Loveland]] (DPLL)
algorithm. (Haskell)

** [[https://dlozeve.github.io/ww2-bombings][WWII bombing visualization]]

Every allied bombing during WWII, mapped over the whole world. The
data has been released by the U.S. Department of Defense [[https://data.world/datamil/world-war-ii-thor-data][here]].

** [[https://dlozeve.github.io/adsb][ADS-B data visualization]]

Visualization of plane trajectories over Northeastern France. The data
was gathered using a Software Defined Radio to listen to aircrafts.

* Challenges and competitions

- [[https://www.dyalogaplcompetition.com/][2020 APL Problem Solving Competition]]
  - My submission [[https://github.com/dlozeve/apl-competition-2020][on GitHub]]
  - Accompanying blog posts with explanations: [[./posts/dyalog-apl-competition-2020-phase-1.html][Phase I]] and [[./posts/dyalog-apl-competition-2020-phase-2.html][Phase II]]
- 2018 APL Problem Solving Competition
  - My submission [[https://github.com/dlozeve/apl-competition-2018][on GitHub]]
  - Nominated as a [[https://www.dyalog.com/nnews/128/456/Winners-Announced-for-the-2018-APL-Programming-Contest.htm][Phase I winner]]
- [[https://adventofcode.com/][Advent of code]]
  - [[https://github.com/dlozeve/aoc2023][2023]] (BQN)
  - [[https://github.com/dlozeve/aoc2022][2022]] (mostly BQN)
  - [[https://github.com/dlozeve/aoc2021][2021]] (mostly Chicken Scheme)
  - [[https://github.com/dlozeve/aoc2020][2020]] (50 ★) (Racket, C, Dyalog APL)
  - [[https://github.com/dlozeve/aoc2019][2019]] (Racket, Common Lisp, Dyalog APL)
  - [[https://github.com/dlozeve/aoc2018][2018]] (Scheme, Dyalog APL)
  - [[https://github.com/dlozeve/aoc2017][2017]] (Haskell, Scheme)
- [[http://www.boundvariable.org/task.shtml][2006 ICFP Programming Contest]]: "The Cult of the Bound Variable"
  (partial)
  - Implementation of a [[https://github.com/dlozeve/bound-variable][virtual machine]] in C for a simple 32-bit
    architecture with 14 instructions, with register, heap, array
    allocation and deallocation, and character-based input and output
- [[https://challenge.synacor.com/][Synacor Challenge]] (partial)
  - Implementation of the [[https://github.com/dlozeve/synacor][virtual machine]] in C
- [[https://github.com/dlozeve/DocAssist][DocAssist]]: hackathon project made during [[http://oxfordhack.com/][OxfordHack]] 2017
  - Automate record and diagnosis tracking for medical practitioners
  - Automatically extract meaningful data from conversations with
    patients
  - Automatic speech recognition, entity extraction, recommendation
    system, and knowledge extraction
