websockets makes it easy to build WebSocket servers and clients. It focuses on correctness, simplicity, robustness, and performance.

datedelta provides consistent date arithmetic in the Gregorian calendar.



I contributed actively to Django from 2010 to 2016 and occasionally since then. I was a core developer until we removed that role. I led efforts to upgrade the project's organization in 2014. I served on the technical board.

In addition to these features, I made smaller improvements or fixed bugs in many components, including the ORM, the template engine, HTTP handling, sessions, generic views, and more.

I maintained the Django Debug Toolbar from October 2013 to May 2014 and brought it to version 1.0.

I presented my work at Django conferences. Videos and slides are available on my talks page.

Django applications

These applications provide reusable functionality. They're small, stable and well tested. You can rely on them.


django-sesame provides frictionless authentication with "Magic Links". It generates authentication tokens such as: Then it authenticates users based on these tokens.


django-sequences generates continuous sequences of integers. Some use cases like accounting require continuous numbering. Django's auto-incrementing integer primary keys don't guarantee this property.

Personal Django applications

I wrote these applications for my own needs. I published them but I don't plan to support other use cases.


myks-gallery is a simple photo gallery with granular access control.


myks-contact is a simple contact form suitable for personal websites.

Other Django applications

You don't want to use them, except maybe for educational purposes.


django-transaction-signals is merely a rant aganist transaction signals.


django-userlog is a fairly impractical attempt at knowing who does what on a Django site in real-time.


When Django moved to GitHub, I wrote trac-github to connect Trac to GitHub. This plugin is stable and robust. It was adopted by Django, jQuery, and jQuery UI, among others.


Probably every programmer writes a Sudoku solver at some point. I wrote one in several languages. In addition to solving grids, it can generate them and estimate their difficulty. Try it now!.