I have a “Zen of Python” T-shirt, which I bought at a PyCon conference. Black design and yellow lettering on red fabric. Its back displays the first seven lines of the Zen:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!
Read more…
Today, I’ll liveblog and tweet from Northwest Python Day 2010. I’ll update this article as the day progresses.
—————
1734: The day’s over!
1717: More lightning talks. (I’m fading. Lots of great info and discussion today, it takes energy to stay focused!) A Google Maps – Twitter mashup. WebHelpers. IronPython. (Bleh.)
1647: Python vs. Ruby, Gary Bernhardt. Ruby fails to live up to the Zen of Python. (E.g., Calling functions with or without parens, gah! Rails has junk drawer of monkey patches.) Good aspects: Ruby core types have composability; Ruby has “the full Lisp chainsaw.” RSpec. “Ruby is ugly, Python is beautiful. But…” Compared syntactic expressiveness and semantic flexibility. Wants to see blocks added to Python.
1603: Python & GIS, Dane Springmeyer. Unofficial Python GIS SIG. Gentle guide to GIS. Where am I? Python and OO GIS. GeoDjango, GeoAlchemy / Shapely, GeoHASH for AppEngine, and Mapnik. TileMill is a tile rendering engine using Amazon’s cloud.
1513: Justin Cappos, a platform for developing and deploying networked applications. Clouds are great for scalable computation, no hardware purchases, minimizing IT overhead, and providing fault tolerance. But cloud providers need to make money somehow, sometimes including advertisements; there’s loss of privacy; censorship; and vendor API lock-in. Cloud computing erodes software freedom. P2P is an alternative, but problems with heterogeneity, short use patterns, fault tolerance, and distributed state management. His solution (Seattle) uses a safe virtual machine environment, and is run like a potluck. It executes a Python subset, which is implemented in Python.
Read more…
47.616421
-122.320843
Yesterday was Northwest Python Day. All of the talks were great, and the day was immensely rewarding and enjoyable.
Andrew introduced me to Andy McKay, with whom I’ve traded a bit of e-mail but never met. It’s an oddity of today’s world that you can do business, or strike up a friendship via a few e-mail exchanges, with someone, without ever having actually met them.
Most of the attendees brought some food, and most of them brought breakfast food, and most of the breakfast food were doughnuts. We were swimming in doughnuts! Boy oh boy, there were a lot of doughnuts.
Read more…
My reflections on my first Plone conference…
Things that were great
The conference, in whole. The organizers did a great job, and we should all contribute to pay off their mortgages.
I’m sometimes a bit jaundiced about the overused word, “community,” but the Plone/Zope community is aces.
Things that weren’t great
The Ronald Reagan Building and International Trade Center sucked. It’s cold, bland, and too big.
The Reagan building’s Wi-Fi sucked, sucked, sucked. It’s beyond me how the largest building in Washington, D.C, with 3.1MM square feet, could be overwhelmed by the network activity of a 310 person conference.
I would have paid $40 more in registration fees for slightly more interesting lunches. Read more…
Buildbot is a great continuous integration tool, and PyTest, aka py.test, is a great unit testing tool.
But there’s an impedance mismatch between them. Read more…
I’ve been using SPE as my Python editor for a couple of years. It takes an IDE approach to the user window and UX model. I liked it, and I even donated money to its support fund.
But I’ve been an Emacs guy since back in the day. I was never fond of Emacs’ Windows integration, so I fell out of the habit of using it during my Windows years.
I’ve now discovered Aquamacs. Baby, I’m home.
We pulled the plug on TrenchMice yesterday. It had plateaued in traffic, and wasn’t able to break through to the next level of readership. New features or different marketing efforts resulted in only temporary traffic spikes, followed by a return to the plateau.
The cost for the servers wouldn’t be a large financial drain in and of themselves, but keeping it alive would distract me from new ventures and work. (Even for an automated site, you’ve got to periodically check the server logs, analyze crashes, fix bugs, update the software, yaddayaddayadda.) So…it’s gone. Read more…
Tomorrow through March 19, I’ll be at PyCon 2008. I’m looking forward to the tutorials, conference, and the Django sprint. I’ll blog about it if inspiration strikes.
Martin Aspeli published an article in CIO magazine titled, “You Used Python to Write WHAT?”
It’s a good introduction for the non-technical manager to Python in the enterprise. And the article’s comments (so far) are good reading, too. If you’re looking to gently introduce the notion of Python or Django to a manager, you could do a lot worse than start here. Read more…
unholidaycards.com are selling cards with this cover art in packages of 10 for $10. This is funny:
#!/usr/bin/env python
from relationships import *
from alcohol import shot, beer
def valentines_day(self):
if self.dating:
if self.money == 0:
self.dating = False
elif self.num_prev_dates == 0:
self.money -= dinner()
self.money -= pointless_gift()
else:
self.money -= dinner()/sqrt(self.num_prev_dates)
if randInt(self.num_prev_dates):
self.money -= pointless_gift()/self.num_prev_dates
elif self.married:
if self.years_married < 5:
self.money -= dinner()/(self.years_married ** 2)
else:
pass
else:
while self.blood_alcohol < .08:
self.blood_alcohol += beer()
while self.blood_alcohol < .22:
self.blood_alcohol += shot()
sleep(86400)
Recent Comments