Building a web site with a CMS - taking Drupal for a test drive

Drupal is an open-source, content management system (CMS) for creating web sites. It runs as a web app and provides web pages to build a web site. Users can create and upload content as well as configure the site. It runs with a database like MySQL and a web server like Apache.
If you are familiar with a blogging engine like WordPress then you will find Drupal familiar. It is like WordPress, with pluggable themes and feature plug-ins and similar basic flow of creating and publishing content. The difference is that it is more general than WordPress and is made to be used for more than blogging.
Installation
- Install Apache and a database like MySQL or Postgres. I used the servers installed by InstantRails, since I already had that on my system. (InstantRails works beautifully by the way. A no hassle way to install a big pile of software.)
- Download the Drupal archive and put the contents in your Apache document directory.
- Create a MySQL database for Drupal. (For me this involved running “mysql -u root” to connect to MySQL as the root user that InstantRails created.)
- Run the MySQL setup script to create the Drupal tables.
- Edit a Drupal config file to contain the database user, password, and database name.
- Edit the php.ini file to not show warnings. (Apparently the Drupal PHP files generate many warnings.)
Modules
You add features to your Drupal site by installing modules. These are plugins that add features to the system. For example there are plugins for uploading images, showing stock prices, managing buddy lists, and the list goes on. One of the main things to learn is that turning on a module is a many step process.
- Download the module archive and put the contents in your Drupal modules directory. The base Drupal install comes with many of the more common modules so this step is not always needed.
- Install all the other modules that the new module depends on.
- Enable the module in the Drupal “modules” screen.
- Turn on permission to let users use the new module in the “access control” screen.
- Configure the module through its “settings” screen.
- If the feature is a content editing feature then poke around in the content editing screens until you find a widget that corresponds to the new feature.
- If the feature is an end-user visible part of the site then enable and configure the display in the “blocks” screen.
After all that you hope that something shows up on the site that is sort of what you want.
First Impressions
When compared to directly maintaining a site it is frustrating to feel so removed from the nuts-and-bolts of rendering the site. For instance having files on a file system that contain the site content is very good. Drupal on the other hand (like all the other CMS systems I have seen) lock the content up in a relational database.
My sense is that if you are willing to just go with the way Drupal does things then you can create a great looking, full-featured site very easily. There are Drupal modules for searching a site, adding something like tags to site content, automatically maintaining a site menu, adding comments to content, and innumerable other add-ons. It makes no sense to recreate all of these features.
On the other hand if you have very exact ideas of what you want and how you want it to look then you will need to dig-in more and customize the themes and modules to do what you want.
On the upside there is an impressive list of themes and modules that other people have coded. We can use their work and focus on putting our content into the site.
When you first look at Drupal it is a bewildering pile of screens and options that make very little sense. After poking on it for a few hours you will start to get your head around it and it will start to make sense.
If you are involved with making web sites then you need to understand what content management systems are about. There are dozens of open source products that are listed and described at OpenSourceCMS. The best part of this site is that it has demo installations of numerous CMS products. So take one for a ride to see what it is about. If you have a bit more time then install a Drupal instance and build a site with it. You can’t beat first-hand experience for understanding products like this.
Comments (0)Show, don’t tell - make screen videos with Windows Media Encoder
Add screen videos to your toolbox. If you are on a Windows box then download Windows Media Encoder. This allows you to record what is shown on your computer screen along with the audio of you describing what is shown.
I recorded a demo to show how to record a screencast.
This technique of “showing” is much more powerful than written words.
- Videos are very efficient. You can capture a large amount of information in a short time.
- You convey many details that you would never take the time to write down. Viewers see more than what you are explicitly demonstrating. They see how you use the tools and how you organize your work and many other details that you would not otherwise document.
- Information that is seen and heard is quite memorable and can make a deeper impact than written words alone.
- A video can be watched over and over again by many people. This makes it more powerful than merely explaining something in person. It can be leveraged and used many times.
Learn from lean manufacturing: don’t blindly optimize your own work
Agile development has borrowed ideas from lean manufacturing. The two are compared very well in this article. One idea from lean manufacturing that developers need to learn is that it is not good to focus on local optimization, but rather the focus needs to be on a responsive and smooth overall output.
Each developer is functioning as part of a larger system. The goal of the system is to deliver working software to end users. Often developers will focus too much on their small piece of the world. They will optimize what they are doing so that they are producing work at the maximum rate. This is understandable from a developer perspective, but as lean manufacturing demonstrates, it does not lead to optimal results overall. One of the key, non-intuitive, results of lean manufacturing is that each stage of the process is not to be locally optimized to produce at its maximum rate. Allowing one stage to produce at a different rate than the overall flow of product merely creates additional work-in-progress. That work-in-progress becomes a cost drain, a productivity drain, a quality drain, and a responsiveness drain. It is bad.
Developers need to raise their head and look beyond a short-term focus on their small part of the world. They need to be aware of the overall end-to-end flow of working software to the users. They need to make sure that flow is happening rather than just doing their work as fast as possible.
If you do this you will help your team deliver better software more reliably. This will make you more valuable to project sponsors.
NOTE: I know the comparison between software development and manufacturing is dangerous and flawed in many ways. However, that fact should not keep us from learning.
Comments (0)Publish your resume in hResume format
Put your online resume into hResume format. This is an evolving standard describing how to put resume data in HTML. It is a chance to learn about one of the new buzzwords: microformats.
I expect there will soon be a variety of services that crawl the web looking for hResume documents. So, if you get yours out there in a standard format then you have a chance that it will be found by a project sponsor.
You can use the hResume Creator or if you have a WordPress blog then use the hResume plugin.
Alternatively if you are interested in hearing how a tool like the hResume tool is created, then read the interesting account of how a Texas entrepreneur made it happen.
Comments (0)Chart a course
We are surrounded by an apparently endless list of new things to learn, new technologies to explore, and new fields to experience. It could be anything from learning a new class library, to learning a new language, to learning some design skills to make nicer looking apps, or learning how to run a business. It is easy to feel like, “I could just make some progress if I knew what to work on and if there weren’t so many choices”.
Realize that everyone is in the same situation. The ones who succeed are those who are able to focus despite the chaos.
So chart a course. Look around and see what there is to know. Think about your career and what you want to be doing. Think about your skills and how you can round out your experiences or increase your depth in key areas. Decide where you are going and make a plan to get there. You don’t need a detailed week-by-week plan, but at least identify some steps to get where you want.
Maybe you are currently a graphics guy and you want to be a coder. Pick a language to go after. You could target the current market with Java or follow the latest hype with Ruby. Decide on one and pursue it. Learn the language, build a sample app, subscribe to some relevant blogs to discover what the current issues are. Identify steps to meet your goals
If you have no course and don’t know where you are going then you will simply be tossed around by life.
Comments (1)You don’t know everything
A related pathology is the belief that you must know everything. Somebody says something to you. You have only a vague idea of what they are talking. Do you tell them that? Of course not. You say “uh, yeah” and nod your head.
Stop that.
If you don’t know what someone is talking about then say that. Ask them a question. Sure you will show you don’t know everything, but as I said last time… everyone else already knows that you don’t know everything. The only one your fooling is yourself.
Another way of looking at it is that this is your duty to make communication happen. If you don’t understand someone it is your responsibility to let them know.
Comments (0)Everyone else knows you are not perfect
People sometimes think they must be seen as perfect. So when they make a mistake, they try to make excuses and explanations. They want others to keep thinking they are perfect.
The problem with this is… everyone else knows you are not perfect. So when you make a mistake it is not a big surprise to anyone else. It threatens no ones world view but your own. There is no need to try and explain that you really did not make a mistake. You only make yourself look like a fool if you dance around making excuses.
Comments (0)10 things to put on your personal web site
If you are looking for development work on the web then create a web site for yourself. Very few of the developers in the market have web sites to promote themselves. So (although it is hard to believe considering how many useless web sites there are) this is a way to differentiate yourself.
And here is what you need to put on it:
- Include code samples .
- Include your story. Your elevator pitch for yourself.
- Write an essay describing the best way to successfully write code on a team distributed on the web.
- Write about how to write good code.
- If you have a enough to say then write a blog. But, if you are going to use it to market yourself then leave out the tasteless personal stories and the drivel about what you ate for dinner or what music you are listening to.
- Use a very simple style unless you can make something look good. This is not a time to be experimenting with CSS/HTML effects. A bad, out-of-date style is a strong turnoff to prospective buyers. Simple HTML is not a turnoff, it just looks utilitarian.
- Include a picture of something. Pictures are memorable. You want to be remembered so you will be hired. Include a picture of something. Not necessarily a picture of you. Maybe a picture of an app you built.
- Include a screencast with you describing a technical topic relevant to the field you work in.
- Write out the answers to the most common interview questions.
- Find a way to personalize it. This is dangerous because it might fail, but find something distinctive about you to put on it. People relate to people. People remember people. People hire people.
oDesk is better than RentACoder for small graphics projects
I use both oDesk and RentACoder (and occasionaly guru.com). I am trying to understand what kind of work is best suited to each. I have found a category that works much better on oDesk: small graphics projects.
Small graphics projects do not work well on RentACoder. You have to describe what you need in detail. You have to wait for your project to be approved by RentACoder. Work is hard to estimate so you end up with a wide range in bids. You look at many portfolios trying to determine who has the talents you need. You can only communicate with bidders through the RentACoder messaging system. Often you do not receive speedy responses. You are tempted to go with the low bids because you are a cheap. But even if you accept a low bid you still have your money tied up from the start of the project. If the project doesn’t turn out well then you will have to hassle with a RentACoder mediation process to try and get your money back. You would like to get multiple people working in parallel so you will have a better chance of getting results, but each person requires that you escrow enough money to fund the entire project. This adds up. Once a bidder is awarded the project, then their game is to spend as little time on the project as possible while still delivering enough to guarantee they get the money. So there is tension in the relationship from the beginning.
Small graphics projects work great on oDesk. Post a project describing what you need at a high level. Very quickly pick a promising candidate. Contact them via instant messenger. Determine if it is a fit and then they can start working. Your only exposure is the hourly rate they will charge. You can see their progress online via the oDesk tools. This works great for graphics because you can see what ideas the designer is experimenting with, even before they are comfortable presenting them to you. It is even economical to get multiple designers working in parallel. After a few hours you can pick the leading candidate and continue working with them.
I have recently worked on several small graphics projects on RentACoder and oDesk. There is no comparison, the oDesk results are far superior in every way: speed of hiring, speed of delivery, quality of work delivered, and lack of pain in the process.
Comments (2)Be a Steve McQueen, Clint Eastwood style knock-heads-together, get things done ramrod
When you take ownership of a feature that means nothing will stand in the way of you getting that feature into the users’ hands. You will overcome any and all obstacles to get the feature done in a timely manner. If there are decisions to be made you will either make them or get someone to make them. If there is work to be done you will either do it or get someone to do it. In any case you will keep personal responsibility for getting the work done. There is no “acceptable way of failing“. You will succeed.
You are Steve McQueen as Bullit. You will get your man no matter what it takes.
You won’t throw a question out to the team and when there is no response then just let the work languish for days. That is like Clint Eastwood sitting down and filling out forms to get what he needs. It simply is not the way he works. Furthermore it is not the way that things really get done.
If you have to march into the office of the president of the company and get his signature on a contract then you do that.
The ramrod is the person who gets things done. And that is your role.
Comments (0)

















