I'm **Ned Batchelder**, a Python software developer and community organizer.
[](https://vshymanskyy.github.io/StandWithUkraine)
[](https://github.com/sponsors/nedbat)
[](https://twitter.com/nedbat)
[](https://nedbatchelder.com)
[](https://about.bostonpython.com)
[](https://discord.gg/python)
[](https://stackoverflow.com/users/14343/ned-batchelder)
[](https://pypi.org/user/nedbatchelder)
- My personal site is [https://nedbatchelder.com][nedbat].
- I work at [2U/edX](https://edx.org) on [Open edX](https://openedx.org).
- I'm an organizer of [Boston Python][bp].
You can **find me** at:
- I'm [@nedbat on Twitter][twitter].
- On [Libera IRC][libera], I'm nedbat in #python.
- I'm sometimes in the [Python Discord][discord].
My latest **[blog][blog]** posts:
- **[Fall fallout](https://nedbatchelder.com/blog/202207/fall_fallout.html)**, 30 Jul
More about my bike fall since I wrote about it two weeks ago. *([read..](https://nedbatchelder.com/blog/202207/fall_fallout.html))*
- **[The Fall](https://nedbatchelder.com/blog/202207/the_fall.html)**, 13 Jul
One moment I was riding my bike; the next thing I remember, I was sitting on the ground talking to an EMT from the ambulance parked nearby. *([read..](https://nedbatchelder.com/blog/202207/the_fall.html))*
- **[Math factoid of the day: 60](https://nedbatchelder.com/blog/202206/math_factoid_of_the_day_60.html)**, 16 Jun
60 shows up in lots of places, including Archimedean solids *([read..](https://nedbatchelder.com/blog/202206/math_factoid_of_the_day_60.html))*
- **[400 walks](https://nedbatchelder.com/blog/202206/400_walks.html)**, 14 Jun
Yesterday I did my 400th pandemic walk. These started as a way to get exercise during lockdown with my son Nat, as I wrote about in Pandemic walks (Feb 2021) and 300 walks (Sept 2021). *([read..](https://nedbatchelder.com/blog/202206/400_walks.html))*
- **[Adding a dunder to an object](https://nedbatchelder.com/blog/202206/adding_a_dunder_to_an_object.html)**, 5 Jun
We had a tricky debugging need at work: we wanted to track how an attribute on an object was changing. Here’s the unusual solution we used. *([read..](https://nedbatchelder.com/blog/202206/adding_a_dunder_to_an_object.html))*
- **[Custom search keywords](https://nedbatchelder.com/blog/202205/custom_search_keywords.html)**, 26 May
Define custom browser search keywords to super-charge your common searches. *([read..](https://nedbatchelder.com/blog/202205/custom_search_keywords.html))*
- and [many more][blog]..
I maintain a few [**Python packages**][ned_pypi], including:
- [**Coverage.py**](https://github.com/nedbat/coveragepy): The code coverage tool for Python
[](https://pypi.org/project/coverage)
[](https://github.com/nedbat/coveragepy/commits)
[](https://pypistats.org/packages/coverage)
- [**Cog**](https://github.com/nedbat/cog): Small bits of Python computation for static files
[](https://pypi.org/project/cogapp)
[](https://github.com/nedbat/cog/commits)
[](https://pypistats.org/packages/cogapp)
- [**Dinghy**](https://github.com/nedbat/dinghy): A GitHub activity digest tool
[](https://pypi.org/project/dinghy)
[](https://github.com/nedbat/dinghy/commits)
[](https://pypistats.org/packages/dinghy)
- [**Scriv**](https://github.com/nedbat/scriv): Changelog management tool
[](https://pypi.org/project/scriv)
[](https://github.com/nedbat/scriv/commits)
[](https://pypistats.org/packages/scriv)
- [**Aptus**](https://github.com/nedbat/aptus): Mandelbrot fractal viewer
[](https://pypi.org/project/aptus)
[](https://github.com/nedbat/aptus/commits)
[](https://pypistats.org/packages/aptus)
*(made with [cog](https://github.com/nedbat/cog) at 2022-08-03 04:03 UTC)*
[nedbat]: https://nedbatchelder.com
[blog]: https://nedbatchelder.com/blog
[twitter]: https://twitter.com/nedbat
[discord]: https://pythondiscord.com
[libera]: https://libera.chat
[bp]: https://bostonpython.com
[ned_pypi]: https://pypi.org/user/nedbatchelder