Techies without borders
I've worked for several NGO's for the last 10 years. I was very active with environmental groups as an activist and I've had the honor of visiting several jails all over europe for it. And even though I still think it is important and necessary, I have had a shift in thought in the last 6 months and was looking for new ways of being more productive, and I came to the conclusion that one of the best ways of helping is out is by doing what I can do best. In my case, that's in the field of computer engineering. Of course I'd love to spend some time with a cool company like Inveneo out in the field, but sometimes it isn't possible. And not everybody can up with something as cool as Samasource. I had already been donating time to opensource projects, why not donate 5% of my time helping out in different NGO or "opensocial" projects?
We have already seen how technology and the internet community have been reshaping IRL events. In Haiti access to real time information is more than essential and community tools like Twitter have been proving to be more efficient than more established old school platforms in providing access to realtime information.
So what can I do as a software engineer to help out in Haiti? There are some interesting links between the opensource/web communities and its methods, with what I like to call the opensocial communities (if only google hadn't taken the name already). Organic structure, distributed information and asynchronous communication to name a few. We have seen how efficient a open/web community can be fixing software bugs, but how far can organically organized communities provide acute disaster relief? We all know large disaster relief organizations can be bureaucratic, but they do have decades in experience, and there already have been several reports on volunteer groups going in without supplies, hindering the relief effort instead of helping. I have had the honor of working with people who worked setting up refugee camps all around the world. The reality in those environments are not the same as ours.
I guess until there is a well established techies without borders, I will have to do things on my own and contribute to projects like Ushahidi.
Berber Frisbee
This February I am leaving for Morocco and I will be spending some time in the Atlas mountains with a friend of mine who teaches at a village school near Amizmiz. Besides climbing some beautiful mountains and learning how to cook Moroccan food I'd like to spend some time teaching the kids how to play ultimate.
That's why I need some help from the Vienna (and surroundings) disc community to help out with old discs. I know most of you have more than 30 disks laying around :) You don't have to sacrifice any of the discs that are hanging on the walls. They can be used but should still be playable. Just imagine the berber children playing with the discs in the wind with a big smile on their faces.
Why frisbee?
Discs are cheap, and nearly indestructible. I know, they do wear down a bit and street discs can be a little hard on the hands, but they are still playable for a very long time. From discgolf to ultimate frisbee, there are dozen of games that can be played from solo to large teams, suitable for almost any age, and that are playable without the need for extra equipment.
Why Ultimate?
Besides being one of the coolest team sports on the planet, that has a great community around it, a sport that is played on grass, sand, rock, pavement... and in the wind, sun, rain, snow... where you run like hell chasing rotating plastic thingies, it's because of the Spirit. For those who play know exactly what I am talking about, and for those who don't:
Ultimate relies upon a spirit of sportsmanship that places the responsibility for fair play on the player. Highly competitive play is encouraged, but never at the expense of mutual respect among competitors, adherence to the agreed upon rules, or the basic joy of play. Protection of these vital elements serves to eliminate unsportsmanlike conduct from the Ultimate field. Such actions as taunting opposing players, dangerous aggression, belligerent intimidation, intentional infractions, or other 'win-at-all-costs' behavior are contrary to the Spirit of the Game and must be avoided by all players."
Spirit of the Game sets Ultimate apart from other competitive team sports. For over 30 years, Ultimate has flourished, reaching a highly competitive level, without the use of referees.
And it really works. Ultimate rules promote the resolution of conflict through dialogue and in a civil manner. It allows you to learn to be competitive and respectful during play. The ultimate community is like a big family, we only play against each other on the fields, but as soon as the game is over, it's time to party with the other team, and it's always fun.
And if all goes well, in a couple of years we might be visiting the 1st ultimate tournament in the Atlas Mountains :)
cheers!
Django-mingus on webfaction using virtualenv
Django-mingus is more or less a collection of reusable apps nicely put together, but in itself django-mingus is not a reusable-app. In this sense django-mingus is more like a project template than an app. I don't really like modifying 3rd party code if I don't have to, so this is how I installed django-mingus using virtualenv and virtualenvwrapper on webfaction and set up a project using django-mingus as an app. I must say that I started around 3'oclock AM and I just wanted to get it working somehow. I assume you already know how to setup a wsgi app on webfaction and used virtualenv and virtualenvwrapper before.
I found a very useful post on how to use sites with virtualenv on webfaction. Just follow the instructions there on setting up virtualenv and virtualenvwrapper, and take a look at its apache config file later if you don't know how to setup django wsgi on webfaction.
1) Install Django-mingus
mkvirtualenv mingus —no-site-packages
workon mingus
cd mingus
easy_install pip
git clone git://github.com/montylounge/django-mingus.git
2) Setup project in webfaction control panel
Create a django-wsgi app, create the domains, and link the apps.
3) Setup project for using mingus
a) Copy the init.py from mingus to your project and comment out the mingus one. This is the only change I had to do to mingus code and probably solvable by changing setting environment variables.
b) In your settings file add the line:
from mingus.settings import *
Then for everything that is specific for your project, just override it in the settings file like this:
#settings.py
INSTALLED_APPS += (
'xthought.apps.blog',
'xthought.apps.code',
)
ROOT_URLCONF = '%s.urls' % (PROJECTNAME)
I usually have a settings.py file where all the project specific constants are defined, and then i have a config.py file that is deployment specific, some prefer to use the local_settings.py trick. Either way, you have to override mingus.local_settings.py definitions too with your prefered method. Now you are ready to sync the database with syncdb :)
Now its time to create a wsgi file:
import os, site, sys
# add the virtual environment path
site.addsitedir('/home/USERNAME/.virtualenvs/YOURPROJECT/lib/python2.5/site-packages')
# fix markdown.py (and potentially others) using stdout
sys.stdout = sys.stderr
#Calculate the path based on the location of the WSGI script.
project = os.path.dirname(__file__)
workspace = os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE'] = 'YOURPROJECT.settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
and modify the apache config as usual to load the wsgi file with a WSGIScriptAlias command.
Setting it up this way lets you have several projects use the same virtualenv environment (if that is desired), and also makes it easier to upgrade django-mingus code without having to apply patches everywhere :)
Hello world: powered by django-mingus
A long time ago, when I had too much time, I had a blog where I kept family and friends that were far away up 2 date. Now that facebook, twitter and Co. do that much better, I just kept the "blog" as my web playground to try out new stuff. I'm working on a django powered e-campaigning platform for a friend of mine and decided to try out a couple of django blogs. Currently this baby is running django-mingus and is hosted on one the best providers out there and of course comes with ponies with magical powers.
I will mostly be posting geeky stuff here, so for those not interested in django/python and arduinos will be better served in other places, at least until i develop the other parts of the site that cover some other hobbies: photoblog and photojournalism projects, environmental work and ultimate frisbee. If I ever decide to post any of the other stuff I write again it will also appear here someday.
As pointed out on baratrion.org and like many developers out there I have spent more time working on blog software as writing content, and that is probably not going to change that much. What I do want to do is start documenting what I do for work and I will start out tomorrow with how I set this up on webfaction using virtualenv/virtualenvwrapper but without having to alter the mingus code so that I can have more than one instance using it.
I know I should link to some famous jazz musician as django tradition dictates, but I am hooked on this song:
Cheers and happy new years!