Software

A showcase of all the projects which I have co-developed, have contributed to, or maintain myself:


Research Software

snek5000

On my postdoc role, I started using Nek5000, is a really popular Fortran 77 HPC code. Using it is bittersweet experience:

  • loads of features
  • good performance 🚀
  • monolithic, uses in-house build tools
  • utilizes several legacy Fortran anti-features

On the bright side, as a user there is a separation of the user code and parameters from the Nek5000 core. This fact was exploited to create snek5000 to create a pythonic API to effortlessly launch simulations with varying parameters.

pymech

A collection of I/O utilities to operate on files produced by Nek5000. Along with other friends, I maintain and improve the package.

FluidDyn project

An ecosystem of packages for research and teaching in fluid dynamics.

Some key features include:

  • FluidDyn: Classes to manage parameters, large sets of files, named numpy arrays, scripting job submissions in clusters, MPI wrappers to easily implement sequential and parallel programming.

  • FluidFFT: Unified Python and C++ API for various sequential and MPI & GPU accelerated FFT implementations.

  • FluidSim: Arguably one of fastest CFD framework specializing in pseudospectral solvers, with on-the-fly post processing. Example of a research done using FluidSim (click to play on Invidious or Youtube):

    Toy model simulation sw1l.exactlin.modified
  • FluidImage: Calibrate, pre-process and perform PIV on large sets of images asynchronously and with open-source software.
  • FluidDevOps: Nifty CLI tools to help ease the development workflow.

Caeroc

A toy desktop GUI calculator for compressible aerodynamics built on top of scikit-aero. Demo recorded on PeerTube:

Caeroc demo

Open-Source contributions

I have also contributed some serious projects such as:

  • CPython: the reference Python interpreter. I helped in fixing:
    • A typo (link)!
    • Detected broken docstrings (link).
  • fzf-bibtex: a BibTeX source for fzf. I added:
    • Biblatex support. (link)
  • IPython: IPython provides a rich toolkit to help you make the most of using Python interactively. I contributed to:
    • warnings while executing !pip or !conda (link).
    • replacing os.path with pathlib in the module responsible for the edit magic (link) and the interactive shell (link)
  • JupyterLab: Next generation UI for Jupyter notebooks. I have:
    • added access to solarized theme for the text editor (link)
    • fixed font rendering in the terminal (link)
  • pyenv: Python installer for POSIX operating systems. I have:
    • fixed links to download PyPy from (blog post)
  • PyMC3: Probabilistic programming in Python. I have:
    • improved the overall structure of documentation (link)
  • Pythran: An ahead-of-time compiler for creating blazing fast Python extensions from Pure python or NumPy code. I contributed to:
    • improvements in Pythran extension build process (link)
    • linting Pythran configuration files (link)
  • vim-instant-markdown & Instant markdown server: Write markdown with instant preview. I added MathJax support and much more. I am currently the main maintainer.
  • We-Care analysis scripts: Processing data collected from covidmap.se. I have:
    • performed some basic maintenance, and implemented database logic (pull-requests)
  • xarray: Python package that makes working with labelled multi-dimensional arrays simple, efficient, and fun. I have:
    • specified optional runtime dependencies required to run xarray (link)

Humble projects

Some repositories that I maintain for my personal use and possible reuse.

  • Awesome scientific writing: A curated list of resources for writing scientific documents with markup languages.
  • awkupy: AWK meets Python: API, CLI and IPython / Jupyter magics for data wrangling with awk.
  • Backdrop theme: A responsive pelican theme compiled node, grunt, sass technologies.
  • dotfiles: My Linux configuration files a.k.a. dotfiles.
  • domain-name-search: Search for cheap and available domain names on Porkbun
  • jupyter-wordcloud: Generate wordclouds from Jupyter notebooks.
  • pelican-planet: Pelican plugin which asynchronously aggregates feeds into the planet page in this website.
  • xrandr-extend: CLI tool to calculate and use non-HIDPI external displays along with HIDPI monitors.