I’ve got some bad news and I’ve got some good news.
The bad news:
I’ve tried, and I’ve failed.
I wanted to make an awesome simulation framework. I had amazing ideas that I’ve never seen before in any other piece of simulation software. In the 2.5 years in which I’ve worked my ass off on GarlicSim I managed to make some of these ideas into working software. I was so proud of them— Especially the tree-related features, that allowed you to make a change in the world, see how that change affects the future, and then come back to the parallel timeline in which the change never happened. Those kinds of features have great research applications, but beyond that they are just so damn cool and it was very satisfying to work on them and to play with them.
GarlicSim is an open-source project. And I am a human being who requires such things as food, water and a roof above my head to survive. Therefore I need to spend my time working a job that pays me money, since working on GarlicSim, as satisfying as it is, does not pay me anything.
I spend most of time working on the paying job, doing Python web development, and then there’s this thing called “personal life” that takes up what’s left of my time :)
I have to prioritize the things that I spend my time on, and I find that I care more about my job, my financial security and my personal life than the GarlicSim project.
I have therefore decided: I’m abandoning the GarlicSim project.
Unlike most open-source Python projects, GarlicSim is not a tool but a framework, and a big one at that. A big framework like that is something that is either executed with a lot of attention to detail, or better not executed at all. Nobody wants to use Big Framework version 0.6.3 alpha. A framework needs to be stable and feature-rich before people start migrating to it. And I don’t want to put in the huge amount of time needed to get GarlicSim to that stage, so there is no point in me spending any time on it at all.
That is why I decided to abandon GarlicSim.
The GarlicSim code will still be available online under an open source license for whoever finds it useful (or wishes to pick up the torch), but it’ll be marked as abandoned, as will the official website.
The GarlicSim blog, which has long ago served more like my own personal blog, has been appropriately renamed to Ram Rachum’s blog and now lives at http://blog.ram.rachum.com.
Now it’s time for the good news.
Out of the ruins of GarlicSim, a fresh new open source project was born. An open source project that, while less ambitious, has proven to be very helpful in my job as a Django web developer, and moreover I’m having a lot of fun hacking on it. I’m hoping that it will be as useful to other people as it was to me.
The project is called the Python Toolbox.
What is the Python Toolbox?
When developing GarlicSim, I often had a need for various general-purpose Python tools. One example, out of many, was the
cache decorator. One of the things I needed while developing GarlicSim was a
cache decorator that you can put in front of a function to have its results cached. So I did what every programmer does: I Googled around for an open-source caching package that I could download from PyPI and get it over with. I imagined there would be a nice implementation available, since a
cache decorator, or
memoize as it’s sometimes called, is so common that it’s often used as a case study when talking about decorators.
But… I couldn’t find one that I really liked! I’m very picky when it comes to the tools I use. For example, I remember I couldn’t find any caching module whose
cache decorator actually understands the arguments passed to functions, and is able to understand that
f(5) is the same as
f(x=5) and thus they should be cached together.
So I wrote my own, and it became known as the
garlicsim.general_misc.caching module. It was included with GarlicSim, despite the fact that it had nothing to do with simulations. It was there just because I needed that tool for GarlicSim.
And then I had more needs for more general-purpose tools. And again I was surprised with how difficult it is to find good general-purpose Python tools. So then came
cute_iter_tools… All of them general-purpose Python tools that I’ve written and that I am very proud of, but which have nothing to do with computer simulations.
The Python Toolbox is this entire collection of tools, taken out of GarlicSim. It contains about 50 such modules, not counting the sub-modules that some of these modules have.