January 14, 2008

Mark Ramm, friend and exemplar

Filed under: Free/Open Source Software, Python, Software Development — Barry Hawkins @ 11:22 pm

My post about a Python web frameworks OpenSpace convened at CodeMash drew a bit of attention, and looking over it again, I can see how it can send messages I did not intend. In order to break my trend of sitting on posts for weeks and months, I pushed myself to get this one out even though I wanted to finesse it more. The main person who could have taken this the wrong way would be Mark Ramm, who convened the talk and is also currently heading up my favorite Python web framework.

Instead of launching some missive or flaming the comments of my post, Mark took the time to further explain the situation for TurboGears both past and future. He even apologized if he may have unintentionally spoken ill of the JVM (which he did not). Mind you, I am no defender of the JVM, but I can see how I might seem like it from that post. Mark also sent an email which explained some of the discussion items and after hearing that, I was far less concerned about where things are heading with that project.

I have known Mark for about a year now. We have had dinner together and shared many funny stories (he has many, should you ever have occasion to hear them). I consider him a friend, and his reaction to that post is an example of what I have come to enjoy about the Python community. After reading Zed Shaw’s “Rails is a Ghetto” tonight, I am even more thankful for it. Man, even if you filter through the bile and profanity, it still sounds like this dude received some rough treatment for trying to do the right thing at times. And if some of it is true, then I need to rethink some of the folks whose work I endorse.

Curb Your (Python Web Framework) Enthusiasm

Filed under: Python, Software Development — Barry Hawkins @ 8:50 am

One OpenSpace topic convened at CodeMash was “Python Web Frameworks”. TurboGears seemed to be the most-represented citizen of the Python web world, but some asserted that they use Django. I had skipped Brian Goetz’s “Java Performance Myths” talk in favor of this, even though I am sure that would have given me more ammo to smack down the crusty turds in the Java world who are always denigrating the work of others for its lack of their arcane incantations that are allegedly “critical to performance”. I have to say I was pretty dismayed after attending the OpenSpace, but maybe that’s not a loss after all. Perhaps my Python web enthusiasm was due to be curbed. Also, maybe I shouldn’t let those crusty Java turds get to me so much, even if I do feel they are a key agent in keeping the Java community from being more inviting.

Coming away from the discussion, my impression is that the Python web framework community is perfectly content with the dilution of effort and momentum that is caused by the proliferation of web frameworks. We talked about the number of projects out there, laughed a little, and then folks seemed to be ready to move on. One participant fortunately asked the question “How are TurboGears and Django different, because they look the same to me?” That’s a paraphrase, but the gist of his whole question was, as the two leading Python frameworks, how are these two serving different needs, and if they’re not, why are there two? What followed was some dialog that choice was good, the usual stuff you’ll hear in Open Source discussions about duplication and fragmentation of effort.

I followed up on his question commenting that the degree of fragmentation has seriously hurt the credibility and perceived viability of Python web frameworks in larger shops that are entertaining dynamic web frameworks as possible alternatives to doing everything in Java or .Net. I added that the proliferation of choices in Python has really only served to dilute the attention and effort for those that are emerging as the leading ones. I also shared that those outside the Python community are perceiving its web offerings as momentary fascinations of the brilliant, yet quirky enthusiasts upon which nothing long-term should be based. This didn’t seem to be well-received by the group, but I may be wrong. I think most folks present may have been up for a Python love feast instead of some serious introspection on where we are and how we got here.

Another thing we had was Python fans without significant Java experience continually emitting FUD about the JVM, which blows my mind. I have been following Python pretty closely for over a year now, and the amount of ignorance about Java in the Python community still surprises me. The lack of hands-on experience with Java does not seem to deter the constant, half-formulated criticisms of it. Some even seemed to be implying that Python’s threading situation was better off than Java. The platform of Java quite frankly kicks the hell out of most all others in that arena; this is widely-known.

There is an unsettling meme that seems to be running through the Python web framework community of “doing what’s cool”, which is unsettling. Cool and pragmatic seldom keep close company. One of the most heartening things about Rails 2.0 has been the steps taken to pay down technical debt and bolster the soundness of the framework. Hearing that TurboGears is pursuing X because Django has it and that’s cool disturbs me. “Cooler than Y” doesn’t get me a framework I am comfortable building upon; robust and reasonably-documented does.

I viewed the merged effort with the Pylons project very positively when I learned of it. Collaboration and true sharing are all-too-absent in F/OSS these days. However, the more I learn about the culture and mantra of Pylons, the more I am inclined to think it may have been an ungainly partnership. I am wondering if TurboGears’ original “compose a mega-framework of best-of-breed” may have subtly morphed its perception of best-of-breed to be “coolest”. And cool, like beauty, is in the eye of the beholder.

The need for a degree of stability in a web framework is not unlike the dilemma faced by technical authors and producers. Something I have heard from multiple technical writers is that one must resist the temptation to be forever revising the work in hopes of keeping pace with the changes occurring in the technology being covered. In software that rate of evolution is such that it is a Sisyphean undertaking. One must pick a point of time and stick to it. The hope is that said point is an acceptable level of stability so that the book is not useless weeks after it hits the shelves. (This begs the question of whether or not many technical books in print today should not have been published, but that’s a separate topic.)

My chief concern for TurboGears is that the apparent direction toward “cool” is in direct conflict with the need for stability and documentation. The quality of Open Source projects these days is such that few will tolerate a poorly-documented project that poses an unnecessary learning curve primarily brought on by the need to figure things out for yourself. Unless the documentation is shored up and the rate of significant component change slows, I think TurboGears will be challenged to gain more traction in the wider web framework world.

The reason I am even bothering to write about this is that I care about the TurboGears project. I chose it for my framework to explore at Bruce’s Dynamic Web Frameworks Jam, and was blown away by how much had been accomplished in so little time with the project. It had things I have been wanting for years in Java web development, and the learning curve was so low that I found myself running ahead of my own understanding of Python at times. The DRY-ness of TurboGears is another strong draw for me. Implementing your own components when superior, highly-tested ones exist is just silly these days, unless considerable mitigating factors are present. While I think it holds lots of promise, I can’t say that I am comfortable basing any significant projects on TurboGears right now.

January 12, 2008

My definition of “Enterprise”

Filed under: Software Development — Barry Hawkins @ 8:18 am

Bruce and I were talking yesterday about the nebulous term “enterprise” as used in software, and as I pondered that over my Rooibus tea with a queezy stomach, my definition of it materialized:

enterprise – The illusion of highly-mitigated risk in exchange for your money

January 11, 2008

Sidelined at CodeMash

Filed under: Software Development — Barry Hawkins @ 11:07 pm

The night before CodeMash, I was up all night with my daughter who had a horrible 24-hour virus that kept her throwing up throughout the night. It made it really hard to leave her the next day. That’s the first time she’s thrown up, and it upset her about as much as it upsets me to throw up.

Well, the next day I made it through the keynote and most of the first two sessions, then bam! I made it back to the room shortly before losing breakfast and maybe some of dinner. I haven’t been that sick in a long time. I think I got out of bed maybe 6 times in 24 hours. As a result, I missed many of the sessions I had come to hear.

Despite that, I had some great face-to-face time with colleagues and met some new people from the Ruby and .Net worlds. Try doing that at JavaOne :-).

January 10, 2008

Talking Technology to Humans at CodeMash

Filed under: Software Development — Barry Hawkins @ 10:17 am



Originally uploaded by michaeldotnet

I was invited to be on a panel for a pre-conference talk at CodeMash titled “Talking Technology to Humans: Selling Your Ideas, Products, and Services“. Fortunately, I was invited with about 48 hours advanced notice, so I had some time to collect my thoughts on the topic. As I was writing them out on the flight to Cleveland, it occured to me that each of my points would package themselves nicely into blog posts.

So, I’ll be doing a series over the next few weeks titled based on my initial discussion points, which are shown below:

  • Believe in what you’re selling, and for the right reasons.
  • Keep a long-term perspective; be aware of the “sales cycle”; timing is essential.
  • Software development is not Computer Science.
  • Present your offering in terms of its proposed value instead of its implementation details or groupthink, fanboy hype
  • Never understimate how boring you can be.
  • Prove before you preach; make something work and then tell what it was.
  • Beware proper nouns; stereotypes and prejudices can cloud your message.
  • Know the political landscape and relationship web of your prospect, preferably before you open your mouth.
  • Realize when things aren’t a fit, and move on.
  • Don’t oversell, neither in terms of capacity nor capability.

Now I just have to come up with a title for the series…

« Previous PageNext Page »

Powered by WordPress