Archive for May, 2007

Turbgears Sprint Followup

Unfortunately I had some family in the hospital wasn’t able to fully participate on Saturday. But, I was able to hang out on IRC a bit, and hack on a few things. From my perspective, the sprint went really well. Alberto got multi-app configuration worked out, Chris wrote lots of new tests, and significant progress was made on some backwards compatibility for TurboGears 1.0 tests.

Some work was done on creating a new tg-admin serve command to launch multiple TurboGears Appliations in a single process, which will be really useful when people start composing sites of multiple applications. And of course tg-admin serve will work with other WSGI applications that were built in other frameworks. So, we’re looking at a whole new world of interoperability.

One of the things I was able to do was test port one of my applications to the Trunk.

We’re getting a lot close to where we need to be for TurboGears 1.1

Thanks everybody!

An Agile Paradox: People over Process (part 1)

The agile manifesto says we focus on “people over processes”.

And I think that’s the right thing to do, people are ultimately more important than processes. But, at the same time, there’s a paradox to be thought through here, because focusing your management efforts on people can be counterproductive. flowchartIf you focus on people it’s easy to blame them for failures, to try to change them, and to loose sight of the processes which got you the wrong people, or which made it difficult or impossible for the right people to do the right thing.

In fact much of the benefit of the Lean/Six Sigma camps comes from the notion that you pretty much always get better results if you always assume it’s a process problem, and try to improve the processes.

The solution to the People over Process paradox is easy enough:

Good managers lead by creating an environment where people are empowered, in other words they lead by focusing on a different kind of processes. Processes which put people in charge, and which encourage learning and self-correction. That might sound hard, but really it’s not as complicated as you think. For, example Toyota has thrived by creating a “metaprocess” which gives every employee power over the day to day processes of their job. These meta-processes which make standards of work clear, and make it the team’s responsibility to relentlessly and ceaselessly continue to improve those standards. Employees are expected to think, and to act on a regular basis to improve the way things are done. And they are ultimately “in control” of the processes which govern their work.

If you focus on the right metaprocess, you won’t get into the kind of “process problems” that the agile manifesto was written to combat. Processes will be owned by the people doing the work, not imposed from above, and they will be adjusted continuously to meet the daily needs of the project.

Processes must serve people. But at the same time people following good processes — and even more importantly good process improvement processes — are more productive than people with no process. So, removing process isn’t the answer to “People over process” it’s providing people with control over the processes, and with a well defined way to improve those processes.

TurboGears Sprint Saturday

There’s a TurboGears Sprint scheduled for this Saturday. The sprint is entrely virtual, and will be taking place all around the world. This sprint is actually a great time for “regular” turbogears developers to get a bit more involved in the core. We will be writing lots of tests for the CherryPy 3 integration, and will be needing to update a lot of tests which were pretty tightly coupled to CherryPy 2.2.

The great thing about working on tests, is that you can’t break anything (well, except the tests). So it’s an easy and safe way to get involved.

You can also help out by working on porting existing TurboGears apps to 1.1 and letting us know how the upgrade path is, and what works and doesn’t work.

Beyond that Alberto has also put together a list of tickets in Track which sprinters can work on:

http:// trac.turbogears.org/report/13

I personally am planning to log into IRC (#turbogears on freenode) at about 9am EST. But, others will show up earlier and later, and we’ll also be using the sprint mailing list (http://groups.google.com/group/turbogears-sprint) and trac to coordinate our activities.

Web 2.0 Development with TurboGears (sign up now)

I had been waiting to start the Web 2.0 development class until I got my Moodle instalation fixed up after a failed upgrade.

Classroom But after an hour or so of work, I’ve decided that Moodle just isn’t worth it. Basically, Google Groups now gives me everything that I was actually going to use Moodle for, and doesn’t send HTML e-mails, or require that find hosting that lets me run regular cron jobs.

So, if you’re interested in learning Web 2.0 development techniques, you can sign up for the class by applying to join this google group:
http://groups.google.com/group/web20-development-with-turbogears

This group will be a private group so you don’t have to worry about asking questions in public, and you’ll be able to update pages in the group, post zip (or tar) files with the code you write. We’ll be covering HTML, CSS, Python, JavaScript, JavaScript libraries (mochikit and ext.js), and TurboGears. Web 2.0 style development requires understanding a lot of different pieces, and while you can take shortcuts, there’s a lot of opportunity for the people who are able to understand what’s happening from end to end. Given that, this class will have two week sessions, and I will take about 10-12 sessions to complete.

The requirement of the class are some programming experience, and a willingness to play nice. If anybody acts like a jerk, insults anybody, or otherwise isn’t nice to the other students — they will be warned once and then kicked out. I want this to be a safe place for people to learn and explore.

I’m offering this class online, for with no fee, for three reasons:

  1. I want it to be accessible to people.
  2. It makes it easy to offer a money back guarantee ;)
  3. I’m planning on experimenting with a learning experience which is more group oriented than I’ve tried in the past. So, part of the entrance fee is a willingness to participate and help others.

I’m also interested in seeing people use these (or other skills you already have) to do something good for the world. So, rather than charge something — I’m asking that you consider donating your time in some way to a local charity, or an open source project, or otherwise doing something nice for people.

The class will officially start the 4th of June, but in the meantime the mailing list will be a good place to work through getting a development environment set up, and to talk about what you want to get out of the class.

Change the World — One Program at a Time

This is a very late comment about Pycon2007.

At that conference one Ruby/Rails book author said something like; “I really like the vibe here. Everybody here is talking about making a difference, educating third world children, building better communities, and making the world a better place.” And he was setting this as a stark contrast to his experience of RailsConf where “everybody was talking about how much money they made.”

On one level it’s hard to fault the Rails conf people for this. Money does on some level validate what they’ve been doing, and it isgood to feel that kind of validation.

But, I think it’s fair to say that the Rails people have been too focused on proving something, and that has lead to a perception that many rails folks have a chip on their shoulder, or are totally focused on money as a metric of success. The extent that some elements in the Rails community have embraced this perception (as mentioned on Martin Fowler’s recent blog posting), is actually a bit frighting.

So, I think Chad is doing exactly the right thing by encouraging the Rails community to take a look at how they can improve their image. A couple days ago Chad posted a blog entry entitled “Change the world” and I hope that it makes an impact in the Rails community. I definitely see Chad Fowler many of the other members of the Rails community that I know personally as good guys, and I’d like to see the current negative stereotyping of the rails community come to an end.

I’d like to see the Rails community as a whole step up to the plate, and focus their attention and marketing efforts on new projects with altruistic goals. Turn the whold Buzz machine towards something that will really change people’s lives — replacing Java just isn’t a worthwhile goal when compared with helping to feed hungry people.

So, in the hope that a little good natured competition can spur things forward, I’d just like to mention that I think the Python community is beating the pants off of the rails community in the change the world department. Here are a couple of projects that I could think of off of the top of my head which the Python community is working on:

  • Irrepressible.info — which is focused on fighting censorship
  • the OLPC project — which aims to bring better educational materials to millions of underprivileged childeren around the world
  • the Open Planning Project – which aims to provide tools for grass roots community improvement tools.

On another note, over the last 6 months or so Compound Thinking has been been working for Philantech on a project called PhilanTrack which takes a slightly different tack. The goal of the Philantrack project is to make it easier to manage the process of giving, receiving and reporting on grants.

The idea is that “greasing the wheels” of grant giving, and allowing non-profit organizations to focus more on doing the work, will make the nonprofits more efficient, more fun, and ultimately make the world a better place.

We may not think about it, but we geeks have a lot of individual power, and collectively we really can make the world a better place. If you’re working on a Rails or Python app that can change the world for the better, drop a comment here and let us all know.