Systems
2010-02-20
Eucalyptus
The Eucalyptus Open-source Cloud-computing System provides a way for organizations to build private cloud computing infrastructures to flexibly provide computer resources to their users. Eucalyptus implements Amazon's EC2 and S3 cloud computing interfaces and runs user applications on virtual machines on a computer cluster for isolation and redundancy. It features a virtual network so that user applications need have no knowledge of the physical network.
2010-02-14
Cassandra
Cassandra is a distributed database for structured data developed by the facebook team. They open sourced it in 2008 and is now an Apache incubator project and used by a number of other companies for data sets as large as 150 TB. It's written in Java with bindings for a number of other languages including Python, Haskell, and Erlang. Combining Amazon's Dynamo distribution model with Google's Big Table data model, Cassandra looks promising for Ultra Large Scale (ULS) systems.
2010-02-05
Revisiting Cyber Renaissance
I've been doing some thinking about Cyber Renaissance and the system management problems the company is trying to solve. It's still an early stage startup and we're exploring some ideas about using autonomic clusters of computers to do useful work. This is an interesting problem domain, and may prove to be profitable.
We're looking at using a functional programming language such as Erlang or Haskell to implement this since they promise improved reliability and effective use of the multi-core processors that are now mainstream. As we develop our ideas, we'll experiment with the functional programming paradigm to see how well it fits both the problem domain and our brains.
2010-01-15
Brian Neural Simulator
The Brian Simulator is a Python package for rapid development and testing of large neural network models. It achieves relatively quick execution speed by using NumPy to execute many calculations in each time step. For large models it up to 75% of the speed of a pure C implementation, but smaller ones suffer more from Python's interpretive overhead.
2010-01-09
Exploring SLAPP
I recently downloaded the 2009-11-10 version of SLAPP (Swarm Like Agent Protocol in Python) and worked through the examples to see how it's coming along. It's still alpha quality and not organized as a package, but improving. Some file and directory names include spaces which is inconvenient for working on the command line. The code looks like Objective C written in Python. Tutorial 6 is under development but is functional. It converts a schedule.xls file to schedule.txt and fails if you don't have the xlrd module installed. Tutorials 7 and 8 are simply placeholders at this point. I also downloaded the Swarm documentation and Objective C source to help fill in the gaps.
I'm using Tutorial 6 as the starting point for a simple traffic simulation model. This consists of a four way stop intersection with the base case of drivers (agents) following the standard rule of proceeding through the intersection in the order they stop and yielding to the driver on the right when multiple drivers arrive at the intersection at the same time.
I'll massage the code from the tutorial to make it a little more Pythonic, package the core pieces to better support multiple models, and ensure compatibility with both Python 2.6 and 3.1. The tutorial has the beginning of a GUI interface using Tk which I may work on, though I'd like to see OpenGL and browser based interfaces as well.
2009-11-17
Small Worlds
In Small Worlds: The Dynamics of Networks between Order and Randomness Duncan Watts explores the effects of network connections on system behavior. Network effects are evident in the spread of epidemics, the function of the brain, the adoption of new technologies, and other disparate areas.
Small World networks are non-random and sparsely connected. They tend to contain clusters of closely connected notes with a few shortcuts to distant ones. The "six degrees of separation" from urban lore is an example of the small world phenomenon. Watts raises more questions than he answers concerning this emerging research topic.
2009-11-03
Speaking at PyCon 2010
I received my acceptance note from the program committee, and I'll be speaking on "Agent Based Modeling and Simulation in Python" at PyCon 2010 in Atlanta next February. I've got a half hour session and will probably set up an open space meeting as well. From the reviewer feedback, I should focus more on the "why Python" section and the example.
2009-09-19
SLAPP
I'm interested in Agent Based Simulation and have played with Swarm a bit. While Objective-C is OK, I prefer dynamic languages and have thought about building something in Python.
Pietro Terna has already done this as he describes in Agents in Simulation Models, using a Swarm-like Agent Protocol in Python. His SLAPP package is available here. SLAPP is still young, but can be used to build interesting models.
2009-07-12
Probabilistic Relational Networks
Learning Probabilistic Relational Networks are a generalization of Bayesian Networks. They can take advantage of the large volume of data available in relational databases and it is claimed that they are more robust than Bayesian Networks.
2009-04-23
Cloud Computing
Duncan McGreggor has embarked on an interesting series of posts about cloud computing. Cloud computing is many things to many people, but Duncan's perspective is close to mine.
2009-03-26
Tiny Core Linux
Tiny Core Linux provides a basic graphical desktop in on 10 MB, making even Damn Small Linux look fat. Based on Linux 2.6 kernel, Busybox, Tiny X, Fltk, and Jwm, it is a minimal platform for building a custom desktop or specialized computing appliance that boots and runs quickly on modest hardware.
Extensions include development tools like the Gnu Compiler Collection, Python, and Ruby, but not Emacs, so you have to make do with Vim or another lightweight editor or do your own port. I may just have to install this on an old laptop to check it out.
2009-03-15
Speeding Up SimPy
Version 2.0 of SimPy came out in January and it's quite nice for systems modeling, but can be a tad slow, so I'm taking a look at speeding it up. For a first pass I tried Psyco, the specializing Python compiler. This gave me a 45% speed improvement wit a similar increase in memory footprint. This is certainly worthwhile, but still a lot slower than the same model coded in C. SimPy depends heavily upon generators which aren't supported by Psyco yet. Cython doesn't support generators yet either, so that doesn't look like an easy speedup either.
2009-02-07
2009-02-02
Cyber Renaissance
Cyber Renaissance is a new startup dedicated to the creation of an open source Network Management System using Erlang. I've joined the forum to begin kicking around ideas with the founder.
2009-02-01
In the Wake of Chaos
Stephen Kellert presents a philosophers view of chaos theory with his In the Wake of Chaos. He follows an introduction to chaos theory and its history with an exploration the philosophical implications. The sensitive dependence on initial conditions of chaotic systems combined with the limits to measure precision from quantum mechanics places limits on the predictability of many physical processes.
Kellert then poses the question: Why did it take so long for chaos theory to become a field of serious scientific inquiry? The commonly presented explanation is that lack of the necessary mathematical and computational tools delayed such explanation, but Kellert doesn't think this sufficient reason. Poincare laid the mathematical foundations in the late 19th century and digital computers were available in the mid-twentieth century, but the dynamic non-linear systems of chaos theory weren't investigated until decades later. Kellert finds this surprising and proposes social factors that kept chaotic phenomena from being considered interesting. I think he's right, though I don't find it surprising. Even pure research tends to be driven by the potential utility of the results.
2009-01-31
SimPy 2.0
SimPy 2.0 has been released! I haven't played with it much yet, but it looks like a substantial improvement over 1.9. The object oriented API requires about 10% more code for small models, but should pay off for larger ones.
What is new in SimPy 2.0?
Object Oriented API
In addition to its existing API, SimPy now also has an object oriented API.
The additional API
- allows running SimPy in parallel on multiple processors or multi-core CPUs, using Parallel Python.
- supports better structuring of SimPy programs,
- allows easy extension of model classes by sub-classing, thus providing a capability for developing application libraries,
- allows subclassing of class Simulation and thus provides users with the capability of creating new simulation modes/libraries like SimulationTrace, and
- reduces the total amount of SimPy code, thereby making it easier to maintain.
Note that the OO API is in addition to the old API. SimPy 2.0 is fully backward compatible.
You may download SimPy 2.0 from: http://sourceforge.net/project/showfiles.php?group_id=62366
2009-01-10
SimPy Plans
Good news from the SimPy mailing list:
SimPy Plans for 2009
New Year Greetings to all Simpy users.
I thought you might be interested in current plans for SimPy this year. We have had no bug reports on the current SimPy 1.9.1.
Klaus Muller and other, have been busy in two directions: the next version of SimPy and the eventual transition to Python 3.0.
A beta of a new object-oriented version of SimPy is under test and is available on the Subversion repository. Since this is such a significant change it will be released as SimPy 2.0. The object-oriented capability will allow the development of much cleaner programs and will be a great help in running multiple simulations.
Many of you will be relieved to know that this will be completely compatible with the current versions and NO CHANGES IN YOUR PROGRAMS WILL BE REQUIRED -- unless, of course, you wish to use the new object-oriented capabilities.
We are still working on the documentation, using the Sphinx documentation system, the same as that now used for Python.
Klaus is developing a Python 3.0 version of SimPy but we have no plans for immediate release. A beta version could be out as soon as mid 2009 but the current Python 2+ version will be continued for some time in any case.
Tony Vignaux
2008-12-21
Location Based Services
In this study on location-based services, the acceptance and utility of location tracking versus location aware services was measured for a group of college age people in a controlled environment. In this experiment, the subjects found location tracking more useful, but had privacy concerns about the technology.
I suspect that in a more diverse and unpredictable environment, privacy issues would be more critical and the utility difference between location tracking and location aware services would be smaller. We can then expect location aware services to see faster market growth than location tracking services.
2008-12-20
Pixel Crash Report
Following Armadillo Aerospace's Lunar Lander Challenge level 1 win, Pixel experienced a failure in their attempt at the level 2 prize. John Carmack reports that they believe the caused by an engine cutoff switch that can go intermittent in some vibration regimes. This is a reminder that adding safety devices can have hidden costs, in this case lower reliability.
2008-12-04
CouchDB
Apache CouchDB has just hatched from the Apache incubator. CouchDb is a distributed, fault tolerant, semi-structured database designed to scale both up and out. The engine is written in Erlang for robust concurrency. The API is RESTful HTTP. Data structures are JSON. It's not relational, though relations and schema could be built upon it. JavaScript is the default scripting language, though Python, Ruby, and others have bindings.
CouchDB looks very promising for Web 2.0 applications. A complete web app can be built with JavaScript and CouchDB. I've installed version 0.9 from svn and begun playing with it a bit. Though still alpha, installation was fairly straightforward on Fedora 9 and it passes the unit tests. I'll dive deeper in the coming days.