gaend is a easy way to get Restful endpoints
on Google App Engine for Python. It
builds endpoints directly from your ndb.Model
classes.
This is my first Open Source Python library. It was fun to write and it helped me internalize some of the driving philosophies behind Python. Though there were many learnings, I think the thing I got the most was that Python favors complexity being hidden even at the cost of understanding. In reality, most Python code is NOT simple. However, most python libraries go to great lengths to hide complexity from the user. At some level, I feel that this is a disservice as it risks keeping the user in a permanently "infantile" state. On the other hand, it means that things "just work" and you probably aren't going to cut yourself on a sharp corner.
Contrast this to Clojure. In Clojure, a library should ideally be made of a collection of simple parts. These parts should have no state. It could be bias, but it seems like it is usually easier to understand the internal workings of a random Clojure library vs a random Python library.
The difference though comes down to usage. In Python, a library can often be used with one simple function call. Furthermore, there is usually one blessed library for most problems. Clojure however often requires you to put together "found art" from different libraries. Putting together multiple parts of many libraries to get to a solution. This is the ultimate in flexibility and expressiveness, but it also means that it can be comparatively difficult to get started.
Beyond the project itself, I also enjoyed writing the documentation. It can be kind of fun to make believe that you are a user of your software with no context. It can be challenging to try to picture what your own software looks like to a complete stranger. It is actually a rather difficult job and I gained some respect for people who spend most of their lives writing technical documentation.