plone
2007-01-15
Hacker's story - How Plone changed my life
During 2006, the world got one more Plone consultant. This is how it happened.
This story is greatly inspired by Tom Lazar's blog entry On Living 'The Life[tm]'. He tells his story. I feel that I need to tell mine, in hope to inspire and encourage people. And naturally, when it's once well written down, I don't need to reinvent my background story in every occasion.
I am an entrepreneur, and have been a full time entrepreneur few months now. Nowadays, when people ask what my job is, I answer "I am hacker". Usually the conversation ends there, with a strange expression on the questioner's face. It's much easier say to be a hacker than to explain all this open source and contracting stuff to people outside IT scene. And I like being called a hacker. I think I was born to be a hacker.
What hacker does? He codes. By coding I don't refer to programming alone, but to all activity happening at the front of computer which requires a lot of typing and results to new wonderful things. A hacker codes, with passion, a code which does miracles. Passion is the key element. All the expertise gushes from the natural love for the technology. This brings expertise which cannot be achieved in 8/24 job, in company training, in office environment or at the university classes. You need to be an adventurer who lives in Internet to stay in constant touch with the latest technology. You don't do these things to get a comfortable office with nice salary - you do it to create a better world for people to live.
I have been writing code since I got my first PC as 8-years-old kid. It had black and white Hercules monitor, which greatly limited running games. So, I just had my text mode and GWBASIC interpreter, and all I could do was to type code. Thanks, Bill. Since then I have been coding everything: embedded, server, web, WAP, Windows, Unix, UI, protocol, 3D games, mobile phones, ring tones, you-name-it. And I am pretty sure that I have reached my limits as a software developer.
What kind of person I am?
It might come as a surprise, but I didn't study computer science in the university. I studied industrial engineering and management. By far, it has been the best choice in my life. It has crucially made me a person I am now. In class room, I learnt basics of quality, project management, and basic managerial stuff. But the real growing happened outside class room.
Mainly due to high team spirit in our student organization, a bit unsocial guy, like I was, turned out to be a nice friendly guy who can actually handle people and management stuff too. Nowadays, I love be at the stage. I love to discuss with people. I love to help people. I insult people less with not-so-well-though phrases. I can take any criticism people throw at me. The sharpest edges of my nerdish, fly agaric like, nature have been polished out. I am not a natural born leader, I know my weaknesses, but I have gained enough social skills to run a business.
Thank you for student organization activities! (The actual growth process consists of sitting in student organization meetings, parties, lots of vodka, sauna, crazy stuff done naked, and causing havoc for general society. And lots of vodka.)
Tipping point of the life
The tipping point of my life was on spring 2006. Tipping point is a book by Malcolm Gladwell, much hyped by Ruby folks (whose active efforts of marketing and making out-of-box experience easy as possible might some day be the nail in Plone's coffin). I am not sure whether I can apply the term 'tipping point' to something qualitative as life, but oh boy, my life took a totally different course then.
I had done little experiments with Plone. Gosh, Plone was hard to learn. Plone is candy outside, monster inside. Don't ever think about asking documents in open source world, but even the slightest code comments would have been really helpful when I was sunk in the incomprehensive software layers of Plone and Zope. Anyway, I felt that I could give something back to Plone community, so I released and patched few Plone products. I don't know what I hoped when I added a little signature to release notes "will work for food".
Then, I got the first email. Someone was asking for help. Kindly, I wanted to help. It appeared that someone had fell in love with Plone, but this incomprehensive software layers part was a bit too much for her. I ended up doing a month worth of working hours for little fee. My Plone consulting career just had started.
I didn't find my office work very rewarding; Plone work as an open source hacker was much more fun. I started to be more active in Plone community - I got more work propositions. Then I though passed my mind: if I could do this for my life.
Plone has the most functional business ecosystem from all those numerous open source projects I have seen. Companies really make money making Plone services and it creates push for Plone. I don't know how Plone ecosystem has evolved to be Plone ecosystem. But If I had not picked Plone I wouldn't be where I am today.
Going incorporated
in Autumn 2006, I told to Ardites, my former employer, that I want to go for my own business. They kindly offered a soft landing to the entrepreneurship world. I was able to work for them as a part-timer and later as a subcontractor, providing basic workload for myself and thus guaranteed that I had butter on my bread. My advice: If you want to go for your own business, always ask possibility of doing some kind of deal with the current employer. Don't burn bridges, but tell how it's a good option for both of you.
Currently I have two contracting projects unrelated to Plone which take the greatest share of my time, but also provide some stable income. After nine months, I have had five clients who have paid for Plone tasks. A fun point is that all those are foreigners. A contractor is a rare sight here in my beloved home country where national social system is strong. Not everyone wants to be a wage slave in a safe, stable, environment.
I got myself incorporated at the turn of the year.
Now, when I am not a hacker alone anymore, but a manager too, I want to impose my hacker values to business life: Openness, altruism and the pride of one's work. There are already some companies doing it and they have inspired me to take these steps. Let's see if hackers make good managers.
I am hiring one of my good friends as my associate. He is not hacker as I am, but I really need the pair of extra hands. My biggest worry is that if I can offer enough work for my buddy. Instead of getting Plone contracts through open source community, I hope we can aim for non-technology specific web site deals. General web sites might not pay as well as platform specific consulting, but I doubt whether I can get enough work through Plone community.
The future
I have a vision. The vision is "software product business." Consulting business is easy, but you'll never get rich with it. Every penny you got is tore off from some poor bastard's back skin - if it's not you then it's your colleague. Thus, you'll need to create new business, by definition, not just help others. Unfortunately, I am 30k€ - 100k€ short of cash to start bigger product development ventures. Let's see how things will turn out.
Ultimately,
what I thought I want to do in my life is to make video games. It's my
childhood dream. Write games, direct them and product them. Tell my stories
and then watch when people are enjoying. I want to be kind of an architect of
fun. Unfortunately game business has high risks and is quite costly, one AAA
title costing over 10 million euros. As I said, I am still a bit short of cash.
I also want Jaguar and a house in Australia - little silly dreams.
Meanwhile, if you need a Plone hacker or have extra 10 million euros, you know where to get my email.

;-)
2006-09-09
First steps with Django
Django and Plone are both kind of Python web development platforms. Plone is an old timer, huge mature content management system monster. Django is a light web development platform. Though they don't serve the same purpose, comparing technologies in them might shed light on some issues.
On the blue corner...
Django is a web development framework. You can easily implement small site functionality on it. Django has a bit hype around it now when the father of Python, Guido van Rossum, named it as the preferred framework for Python web development.
Plone content management system/(running on Zope application server) is complete content management solutions which ships with tons of stuff like permissions. workflows, complete skinnable UI. Plone has been here for years, there are a lot of real companies doing web development and some developers estimated Plone installation base be several thousands.
Naturally both are open source.
Common for both of these web platforms is that they are based on Python programming language. Currently, Python is my favorite as a wrist saving language. Python has compact, easy-to-read, syntax: You type less - you are more productive.
Test-fix-restart
Plone takes aeons to boot (it loads nearly 10 MB Python code to memory). This makes Python code debugging painful, even on the latest monster machines. (Note: this doesn't concern CSS/HTML development). Plone used to have on-the-fly code replacing, but with the latest Plone/Zope versions it usually fails due to Zope 3 dependencies. Zope 3/Five doesn't support hot replacing code, does it?
Django boots in one second.
The best of both
Django doesn't have a hiearchial content tree which makes things like automatic navigation trees, permission inheritance, etc. difficult. On the other hand, a big part of Plone codebase internals deal with acquistision: you have extra things to worry about.
Django is good when you don't need through-the-web content editing, the content is mostly static and there aren't many people working on your site (permissions).
Also, Django is based on traditional relational SQL databases. Plone's object-oriented Zope database, though is better for hierarchial content like most of CMS deal with, is simply weird. This scares off management people.
Why Zope backend is better for CMS? For example, it has field level automatic permission support, hiearchy (SQL doesn't do trees very well) and built-in capabilities to deal with HTML (e.g in search). The high level of integration is also needed when building very high performance sites - tuning database access on product level à la Plone's Cache-Fu product is the only way to achieve high level dynamic performance for content.
Hype(r)space
Even though Plone is an old project, it lacks the marketing it deserves. Plone is tons of times more mature than Ruby on Rails & co. but when you mention Plone everyone is like "huh?". People even know Django better. I wonder where Plone would be today if it had buzz around it like RoR or Django.
Common woes
Let's hope that organic growth, one of my favorite topics, don't harm Django codebase as much as it has harmed Plone. Looks like Django already had some mixed styles in its coding conventions.
2006-08-21
Lost'n'found
Custom Search, a new product, radically improves Plone's search functionality
Plone's stock search functionality has several shortcomings
- Search form doesn't utilize Plone's content model and is based on scripts containing a lot of hard coded location information, making customizing and creating variants difficult.
- Plone's Smart Folder functionality provides rich search criteria, but doesn't provide easy end user interface to do arbitary queries - searches are static, created by the site manager.
- The underlaying architechture, Zope's ZCatalog, doesn't support boolean queries or multiple sort keys.
- According to the research (sorry, Finnish only!) made at University of Jyväskylä, Plone's default search result listing can be confusing. Try it yourself: go to plone.org and type "Eclipse" to the search field. The first hit is a screenshot instead of the tutorial you are probably looking for.
- Searches don't utilize content type in the ranking, only word counts in the text matter.
- The results lack location information. If there are similiar titles under many folders, the result will be ever more confusing. A simple use case would be a folder per company department, each folder having "personell" page. One couldn't distinguish pages from each other in the result listing.
- Search forms are Archetypes based objects, meaning they appear in the navigation tree, they have permissions, etc.
- Adding new forms and search fields can be done through-the-web easily If you have need very custom code, the search items can be extended using the normal class inheritance and schema magic which is used for the all Plone content types.
- Numeric, boolean and ranged search indexes are supported. This is useful if your content types have attributes like a price.
- Custom Search uses AdvancedQuery product by Dieter Mauer as a backend. AdvancedQuery monkey patches ZCatalog to support boolean queries and multiple sort keys.
For some use cases, Custom Search is already very usable. It still lacks some functionality like batching support (all search are displayed on one page) and adding boolean conditions to the queries.