Does your subclassed Plone product have metatype issues?

(dedicated to davisagli on Plone irc for taking the time to teach this old lady a new trick!)

Integrators are a special breed (if I do say so myself). Especially small-business-owning integrators who wear multiple hats, sometimes begrudgingly. One of those hats is troubleshooting issues that the client feels is important. The developers job is done and an issue has come up that was caused by a small change or request by the client, unrelated or a distant relation to the original specs for the project. It’s not really scope creep but it’s enough of an annoyance to the client that we as integrators are compelled to take care of it. We didn’t write the original product, maybe we hired someone or we are using a third-party product. Sometimes the actual solution is outside of our realm of knowledge so we seek out our peers to help us resolve it.

In this case we had a product called CaseStudy for a university. The CaseStudy product was subclassed from another content type (the File content type). The CaseStudy type was basically a file and a few fields so it made sense to subclass from that content type.

The product was installed and testing began. As part of the process a custom view would be implemented for the CaseStudy collection and for the CaseStudy project page. These were not an issue, views were created and added (I’ll write a post on how to add a custom view to your product and how to deal with multiple views).

There was one issue, when you clicked on an item (the link to open the CaseStudy project page) a download box would pop up. The expected result when clicking on the CaseStudy project page link was to go to the CaseStudy project page.

The quick & dirty Zope Management Interface fix was the following:

  1. Go to the ZMI
  2. Find portal_properties/site_properties
  3. find typesUseViewActionInListings field
  4. Add your content type – ours was CaseStudy
  5. Save changes

Now when we clicked on the link for our CaseStudy it went to the right view.

If you want to move this to your product so that the next time you install your product this will work correctly, do the following.

  1. In your ZMI go to portal_setup
  2. Click on the export tab
  3. Find Plone Properties (#15 on my setup)
  4. Click the checkbox next to Plone Properties
  5. Scroll down and select “Export Selected Steps”
  6. Save the file to your desktop
  7. Unpack the zip file and save the file (propertiestool.xml) to your desktop
    It will look like this:

So now you have something that looks like this, scary isn’t it?

For your own product you don’t have to include the entire base file from Plone’s propertiestool as long as you include purge=false within the property tag. The purge=false acts as a way to attach this new property name to the original properties file. If you don’t add purge=false you will break your properties because it will only use what you have included in your xml file.

Our propertiestools.xml file (in /profiles/default) looks like this:

I hope this helps someone. I’ll be making changes to this as I learn more about Generic Setup and using it to export/import steps.
Rather than adding your file to /profiles/default on your file system you can also import the propertiestool.xml file using the import tab in portal_setup.
I haven’t done that yet. I’ll add that direction once I have.

Self-employed during Depression 2.0: 6 ways to cut costs

We little guys struggle here amidst a tough economy just as much as the big guys. It’s time to look at our spending habits (if you haven’t already) and determine how we can cut costs and still get things done (whatever that means to your business).

1. Hardware – Save the earth and save some cash by purchasing second-hand computer bits. My favorite place to shop is Weird Stuff in Sunnyvale (they do ship some stuff). I’d be willing to bet there is a place like Weird Stuff in your area or in your nearest Metropolitan area. Especially now with so many companies going out of business there is a lot more selection and hardware that is only a generation or so behind. We’ve purchased at least a dozen servers at Weird Stuff and optimized them ourselves with bits we found at Weird Stuff and online. Solid machines at a budget price! Still going strong.

2. Office Space – If you need to work away from home due to the distractions of daily life then consider sharing an office with someone else. Office share can be beneficial in a few ways. Running our own business can be isolating and having someone to share ideas with or just split the cost on office sundries can help us feel a bit more connected to the outside world. Sharing an office also reduces overall cost. Look on or in local newspaper ads under real estate or rental. Have an office already and struggling to pay the monthly rent? Consider extending use of your office for a few hours a week to those who work-at-home so they can meet with clients in a professional setting.

3. Business Cards – one word – VistaPrint. I don’t hand out very many business cards these days because most of my dealings are via internet or smart phone. That said, it is essential for you, as a business owner, to carry some sort of contact information to hand to someone who may not be as tech-savvy. VistaPrint is inexpensive but I’ve found the quality is excellent. Don’t get fancy with your cards, save the money for online advertising.

4. Great customer service – Keeping clients happy is the most cost-effective way to promote your business. They say “word-of-mouth” is cheap but in all honesty you have to work hard to generate that buzz you need to elevate your business in the minds of your clients. A happy customer will tell one person and unhappy customer will tell ten people. Look at ways you can improve customer service (make an extra phone call, respond to email quickly or just make sure your customer knows that you care)

5. Start a cooperative – Do you know other business owners who are struggling? Can you get together and share costs and leads? Although cooperatives have been around for years there is a renewed interest in this business model. Depending on how the cooperative is setup they can share advertising costs, marketing costs and the cost of doing business on a daily basis. Not only does this reduce stress on the individual owners but it also encourages some really interesting collaboration.

6. Use Open Source – Do you really need that $2000.00 Adobe package? Shelling out another $300 to upgrade to the newest Windows OS? Try Open Source and you’ll see that you can still get the job done and save yourself $100’s a year in software costs. Don’t know of an Open Source alternative to your favorite program? Ask around, there are 1000’s of applications out there free to use that will meet your needs. Here is a great site to get started Open Source Alternatives. Take a look at distrowatch for the 100’s of linux distros currently available, find one that’ll meet your daily business needs. You can try them out using either VMWare or VirtualBox (I personally prefer VirtualBox). See my post about the Top five Open Source projects for daily use and the one I wrote about VirtualBox . Think outside the box and you can improve your small business chance at success.

Small business really took a hit when the economy tanked but that doesn’t mean it needs to stay down. Take a look at your current costs and you can find ways to weed out the deadwood and keep your business alive.

Please add your own suggestions for cost-cutting in your small business.

Will women programmers be extinct?

It’s well known and oft-times mentioned around the time a large technical convention is looming, there are not enough women in programming. I know, I’m a techie female and I know maybe half-a-dozen women in my chosen technology. As a mom of five daughters (and one son) I have just realized I’m contributing to this lack of interest in technology. Even though I’ve spent the last ten(10) years working with Open Source projects and talking about it, none of my girls are interested in the field at all.

They enjoy their online games and browsing their favorite sites and have absolutely no interest in learning how to program. They don’t care how it works, as long as it works. Trust me I’ve tried to engender interest in technology as a career and my attempts are met with indifference and yeah they actually scoff. All my kids are “creatives” and prefer to write, draw and entertain. My girls especially. My son failed Algebra 1 in community college 3 times! (sorry Jeremy) but he excelled in anything to do with writing & research.

So that is five girls/women who will not be entering into the technical field, unless they do like I did and shun anything remotely technical for the first 35 years of their life and THEN get interested. How many other families with girls are in the same boat?

What makes women less attracted to the programming field? For me it was all the usual stereotypes that were a deterrent. Programmers are anti-social and have no redeeming qualities whatsoever, other than the fact that they can create mind-boggling applications. Meh, I never really believed that but my genius father was very introverted and I could never understand his fascination with the “black box” on his computer screen. It seemed “boring” and lifeless to me. At the time I was full of life and didn’t want to stay still for very long. Off to rehearse or hang out with my friends. Maybe it was my extroversion, not my gender, that kept me from sitting down to learn how to program when I was young. How many girls were encouraged to spend time on the hair and the nails and the selection of an appropriate outfit. Not to mention the obligatory cooking lessons (yeah I hated those too). I wanted to sing and dance and play, programming seemed (at the time) the antithesis of all things lively. I’m social so programming seemed to go against my personality.

So how did it happen for me? The crossing over from ‘I will never touch a line of code’ to spending hours in the command line and an editor manipulating code? Uh, yeah, it was a man. A very, very geeky man. A stereotypical somewhat anti-social brilliant and so-much-like-my-father-it’s-eerie-man, man. When I met him ten years ago I was the typical stay-at-home-mom trying to start a web business web monkey. I thought I knew html and css. Ha, little did I know how little I knew.

I was pretty proud of what I’d taught myself. “Lookit hon, I can make a table inside a table and watch this” I’d say as the text would blink at us from the browser.

“C’mere” he’d say, “I’ll show you something”

He introduced me to Open Source. He showed me there was more to life than tags and Front Page.

My first project was to work within a php application and add html wrappers (and some css). It was boring and we spent hour after hour trying to get it right (it was a source forge style application). I was sure this project would be my first and my last foray into Open Source. Then it happened, we finished it and we got feedback and it was awesome. My heart wasn’t in it at first but when I saw the finished product I was so proud of what we’d accomplished. The pop-up help tool that I structured and styled was my pride and joy. I fell in love with Open Source. It wasn’t love at first sight, no, but it was a solid kind of love that kept me rooted and interested for the next ten years.

It’s a very lonely existence being one of only a dozen or so women in a project with 100’s of highly involved, highly intelligent men. We need more women involved, for my sanity and the sanity of the other women in the project.

How can we encourage more female participation? What could I have done to encourage my daughters to look at programming as an option? Is our familial lack of interest in anything math-like or scientific a huge contributor to our lack of interest in programming? How many other families discourage their girls from getting into math or science? How about the schools? Are the schools doing better with encouraging girls in the math/science area? We need to answer these questions now.

Although geekyness is not regarded as fringe anymore, so many more people are “geeks” these days there is still a stigma attached and young women are highly aware (care about) how they are perceived. Geekyness is next to sexiness?

I and many women like me who are involved in programming/engineering in some capacity are not entirely different from our non-programming counterparts, so what is it that draws us and not them?

Some interesting reading:

What do you think? Is the programming field going to remain a “male profession”?

Open Source Development: Quality Assurance or Community?

Can we have both?

Open Source projects are built on the notion that a bunch of programmers who don’t know each other (at least initially) can work together to build software that will potentially be useful for as many people as possible (consider apache, samba, ubuntu and smtp). Open Source projects are usually made up of dedicated volunteers who want to change the world. So where does, “we want to change the world” move to “we want to change the world but only if certain criteria is met”.

Open Source projects are a lot like neighborhood play when I was a young (oh so long ago).

consider this scenario:

It’s Saturday, all the neighborhood kids are outside trying to find something fun to do.

David (the leader) says, “OK we are going to build a fort!”
Everyone jumps up and down and yells, ‘Yeah! Yeah! let’s build a fort!”
David decides, with agreement from the group, “OK this fort will be 2 stories high and…”
George pipes up and says, “I don’t think any of the trees can hold a 2 story high fort, daaavid” and rolls his eyes
“Fine, 1 story fort then” David says slightly dejected.

A slight pause and then with renewed excitement David yells, “ok? OK!! So Tommy you go get the sticks, Susie go get some sheets from your mom’s closet and Chris didn’t you have like tools or something in your garage? I’m sure your dad won’t mind!”

Just as the kids were about to rush off to get materials Billie, David’s very best friend, strolls over to the group.
“Uh oh” Susie whispers to George
“Yeah remember last time he helped us! He fell down and broke the fort, we had to start all over!” remarked George
“yeah but when we rebuilt it we had a tv and fridge and stuff in there that Billie setup, it was the coolest fort ever” Susie whispered.

So what did we do when the kid who ‘ruined’ everything came by? We patted him on the back and welcomed him to the project and then made sure his shoelaces were tied. We had the coolest forts ever.

Open Source projects attract all types of people, from the end-user who downloads and uses the software but doesn’t say anything at all to the world-changing rock star of a programmer who can take a project from so-so to irresistible. Then there are those of us who fall in the middle. We download the software and use it. We like it so much we figure out how to do really neat things with it. We tell other people about the project and they go download it and do stuff with it and talk to you about what they’ve done. These are not core developers but what I like to call “integrators”, people who really appreciate what the project has to offer. People who are not involved in the creation of the software but who take the core functionality and adapt it fit our requirements, whether it’s for a client business process or for our own project.

Then we want to contribute. We spend our free time creating an add-on product or writing documentation or creating screencasts to help the project and the community “grows”. After all we want as many people as possible to know about our project. We hold events to promote the project and feel like we are part of this community even if we don’t actually write the code that makes it work. We contribute in our own ways.

The world is changing on an hourly basis now, not daily. The way we did something last week is no longer applicable this week.

How do we ensure that the project stays “current” and keep the community strong by encouraging contribution? Or is that even possible?

Those of us who “integrate” feel trapped between the desire to help the project and further the community and the speed at which the project is developing, leaving us gasping for air as we try to keep up with changes.

Which is more important for an Open Source project, the strength of it’s community or the quality of the project?

Why the ‘Wave’ (Google Wave) is both beautiful and scary

I woke up early this morning but wasn’t quite ready to ‘get to work’ so I perused the tweets and came across mention of Google Wave. What Wave? Google? Hmm. Intrigued as I always am by shiny new technology I watched the hour and a half long demo.

It was mind boggling for someone who grew up during the age of vinyl records and 8 track tapes! Granted I work in technology now but when I do step back and look at how far we’ve come as a nation I’m just floored. If you are younger than 30, maybe this is no big deal but those of us who are at the tail end of the baby boomer set this is almost inconceivable. Although the downside to all this brand spanking new- technology-every-minute is that we have a lot less free time now. I heartily encourage turning off that tech before you crawl into bed at night. Everyone needs to interact with a human being (or two) face-to-face. Patting your child on the head while you watch tweets fly by on your iPhone just doesn’t count. Isn’t that one of the criteria that sets us a part from animals? We need to eat, drink, sleep and interact with others beyond the electronic eye that stares us in the face for hours a day.

I love the concept of Google Wave but I worry immensely about the potential for abuse. As a business owner that runs an email server for clients I know that there are some crafty hackers and spammers that will look at this and say, “Hey! How can I manipulate this for MY benefit”. I realize this is an early look at what Wave will be capable of I just hope we all remember trackback spam, and spending hours cleaning out spam comments riddled with links to porn (before Captcha). It’s beautiful and awe inspiring, just don’t forget what we dealt with when other new and shiny technology was introduced. Please make sure that this is a secure application that doesn’t expose us to any sort of risk. The more private information we put up on the web the higher the likelihood that we as consumers/technologists can lose everything to some bored 15 yo.

/me looking up to the heavens, hey dad, remember before you left this earth you said to me that the web was for the birds, hmm? You hated web technology and couldn’t understand my fascination with Open Source. Web 2.0 was a twinkle in somebodies eye and you felt the world was being lured into a false sense of security You were one of those traditional programmers who thought html was a cop out. I love you but I hope you are watching because Google is proving that the browser can be just as powerful as any non-browser application! I miss you