Here's another design I did for Burning Man Earth's poster. Again, it's rough (can you spot the misspelling?). The idea with this poster is to draw the viewer in with tiny text, and as they get closer, they should see detail in the aerial photography. Having looked at this and the other poster for a while now, I think I prefer the first one. I don't think I'm going to do any more work on this unless one of these concepts goes forward.
Click to see the high resolution version of the photo.
My camp, Burning Man Earth is trying to design a poster to help us fundraise for 2009, and this is a concept I came up with yesterday. It's a bit rough, and I think I'm giving up on it because it's a bit too bold, and Rod Garrett (Burning Man's City Designer) has suggested that it draw the viewer in, and be as simple as possible.
In any case, I am proud of what I did in just a few hours.
If you have any feedback, please comment. I would love to know what you think.
So you want to find out why your Pylons app is running slowly? Well most likely it has to do with your SQL queries, and the best way to see what's going on and how long each request is taking is to install Dozer (by benbangert of Pylons), and load it up with a TimerProxy (by zzzeek of SQLAlchemy).
Sound like fun? Well, here's how to do it.
Install Dozer:
sudo easy_install -U http://www.bitbucket.org/bbangert/dozer/get/b748d3e1cc87.gz
Add this to your middleware:
# Add this to your middleware.py, right before return app
if asbool(config['debug']):
from dozer import Logview
app = Logview(app, config)
Add this to your development.ini
# Add to development.ini logview.sqlalchemy = #faa logview.pylons.templating = #bfb
(you can customize the colors here)
Next, modify your configuration ini as well as you like to configure what shows up in the log. Note that I have root set to INFO which will squelch a lot of messages. Change this to DEBUG to see more of what's going on in each request.
# Logging configuration [loggers] keys = root, YOURPROJ [handlers] keys = console [formatters] keys = generic [logger_root] level = INFO handlers = console [logger_YOURPROJ] level = DEBUG handlers = qualname = YOURPROJ.lib [logger_sqlalchemy] level = INFO handlers = qualname = sqlalchemy.engine [handler_console] class = StreamHandler args = (sys.stderr,) level = NOTSET formatter = generic [formatter_generic] format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s datefmt = %H:%M:%S
Add this file to /lib/
querytimer.py
from sqlalchemy.interfaces import ConnectionProxy import time import logging log = logging.getLogger(__name__) class TimerProxy(ConnectionProxy): def cursor_execute(self, execute, cursor, statement, parameters, context, executemany): now = time.time() try: return execute(cursor, statement, parameters, context) finally: total = time.time() - now log.debug("Query: %s" % statement) log.debug("Total Time: %f" % total)
Okay, one last thing, modify your SQLAlchemy engine in environment.py to this:
engine = engine_from_config(config, 'sqlalchemy.', proxy=TimerProxy())
and add an import at the top:
from YOURPROJ.lib.querytimer import TimerProxy
So that's it! Restart paster, and load up a request in your web browser. There will now be a bar at the top that you can click on and see all the requests.
If you want to run TimerProxy on it's own (that is without Pylons and Dozer, see zzzeek's post on "Timing All Queries".
At the most basic level, a graph can communicate key information, like a company's P&L, the median price of a house, or daily average rainfall for a county over a year, but when used effectively, a graph can tell a story.
Much like the rings on a tree can tell you the story of their lives, this graph from the NYTimes, tells the all too true story that we're living right now, every one of us -- the economy. How it varies from the LA Times dead tree edition though is dramatic because it interactively allows you to explore how this bear market relates to the bear markets of our parents, grandparents, and great grandparents.
The NYTimes effectively use a timeline that slides to specific bear markets, making it incredibly easy to see the differences between today and the history that led up to this crisis. Having closely watched the markets, this paints an entirely new picture, however grim it may be.
I'm putting together a costume for Burning Man. It's all around the theme of the American Dream, gone horribly horribly wrong. The truth of the world today is just as sinister, just not so visually repulsive.
Here are the main pieces of the costume. I have yet to get them, so I haven't been able to assemble it yet. They will be modified somewhat to look more "official", possibly incorporating a government looking seal.

EyeClops Nightvision Mask ($80)




Respirator, Coveralls, Chemical Apron, and 28" Chemical Gloves, all totaling approximately $65.
These parts combined with a pair of black boots will create a look that will cover up the entire body, leaving no sense of humanity beyond the humanoid shape, much like HalfLife 2's Combine Soldiers. Combined with some audio on loop possibly similar to 1984 - War is Peace, Freedom is Slavery, Ignorance is Strength, or possibly more aptly, incorrectly telling people they do not have the right to take photographs and to report suspicious behavior immediately.
Maybe this isn't the Burning Man many know and love. It's dark. It's dystopian. It is performance art designed to provoke thought, not laughter or smiles. Is it my dream? No, but I am tired of the security theater and crumbling of civil liberties that is the reality of today's world.
The OpenView Project is a open source, creative commons project for building and taking interactive panoramas much like Google Street View, but of more interesting places than streets, such as farmers markets, concerts, art festivals, and hiking trails, just to name a few. I'm blogging my work on it at OpenView Project (openviewproject.org). I'm very thrilled to be working with photography again, and excited about the prospect of giving people a new pespective of the world around them.