Hello, world! I've finished setting up this blog, and this post describes why and how I did it.
I've been building web sites since 2010, both as my full-time job and as side projects to further develop my skills and experiment with technologies. Most of these side projects are served by a single Node.js server, and you can see them at all.ayoshitake.com. Note that I will refer to these sites as web applications or apps; each one is an independent component of the entire ayoshitake.com "site".
My initial goals in building these apps in my free time were to:
- Make cool stuff that can be accessed from any computer with an Internet connection and a browser.
- Learn how to build simple things, so that later I can build bigger and better things.
However, after a few years of building apps on-and-off, I have some additional goals:
- Build apps that are useful to people, and that people will use.
- Create a portfolio that showcases my experience, describing the problems I've solved and how I solved them.
For an app to meet these goals, visitors need to know that it exists, how it works, and what technologies it uses. That's where this blog comes in. This blog is a platform from which I'll describe and explain the apps that I build, and through which people can comment on my work. It doesn't need much to serve these purposes; I consider it finished now that:
- I can write, save, and publish posts, in Markdown format (see below).
- Visitors (like you!) can view these posts, with the options to search them for keywords or filter them by their tags.
- Visitors (like you!) can comment on posts, contact me via email, subscribe to my mailing list, or subscribe to my RSS feed.
I could have built this blog using any number of systems, so first I had to decide on a system.
Nearly all of my past sites have been built on Node.js, so my initial idea was to use Ghost, a Node.js blogging platform developed by Nodejitsu, my hosting provider. I easily set up Ghost on my existing Node server, but I was unable to deploy it to my Nodejitsu server, as Nodejitsu's Ghost support is incompatible with the code I use to serve separate apps from a single Node server. Rather than pay for a separate Nodejitsu instance, I chose to bite the bullet, and learn to build sites the popular way - using one of the big Content Management Systems.
Choosing a CMS
I knew very little about Content Management Systems (CMSes? CMSs?), so I read some articles, including Computerworld's Site builder shootout: Drupal vs. Joomla vs. WordPress. Based on this research, I decided to try out Wordpress and Drupal, with a slight bias toward Drupal.
I've found that the most reliable way to decide between technologies is to create simple sites with each; this process informs me more than reading any number of docs and articles. So, after signing up for hosting with Bluehost, I installed a Wordpress site and a Drupal site, a pleasantly automatic process powered by Mojo Marketplace. Creating a Wordpress blog at wp.ayoshitake.com was simple - it took me just a few hours, including time to find and configure appropriate plugins. Creating a Drupal blog came with a significantly more difficult learning curve; I spent my first few hours on Drupal's "Site building guide", which left me confused about where to start.
Recognizing that the Drupal docs weren't the place to start, I searched a bit and found Learn by the Drop's Building your Blog With Drupal 7. This guide walked me through the creation and configuration of a Drupal blog over the course of several hours, and taught me enough to consider myself a Drupal novice. The blog I built is the one you're looking at now - blog.ayoshitake.com.
Why did I choose Drupal over Wordpress? I'm not certain. Both systems were straightforward, though the Drupal blog took me a week to set up, rather than a day. I suspect that I was influenced by my initial bias toward Drupal; the articles I'd read called it "developer-focused", with its steeper learning curve and potential for great complexity.
Now that both blogs are complete, I understand the Drupal structure much better, but this is because I spent more time with Drupal, and had to read a guide to get started. Whatever the reason, here I am, writing on my Drupal blog, as my unused Wordpress blog awaits deletion.
Which modules to install?
As I mentioned above, I built this blog mostly by following Learn by the Drop's Building your Blog With Drupal 7. I installed most of the modules indicated by that guide, including:
- Views, for creating the front page and "Recent Posts" block. Views also requires Chaos tool suite.
- Pathauto, for configuring the URL path for blog posts. Pathauto also requires Token().
- Webform, for the Contact form.
- Mollom, for protection against spammers.
- Tagadelic, for the "tag cloud" in the sidebar.
- Media, for adding images and other media to posts.
- Backup and Migrate, for backing up posts and email lists.
I also installed:
- Google Analytics, for tracking site analytics.
- Simplenews and Mime Mail, for creating email newsletter lists.
- BUEditor with Markdown Editor, for writing posts in Markdown.
The last of these modules allows writing in Markdown format, rather than the suggested WYSIWYG ("What You See Is What You Get") style. Markdown has become something of a standard, used in README.md files for GitHub projects, GitHub comments, and StackOverflow discussions. I think practicing Markdown will be useful to me, and I anticipate writing posts in other media (Google Docs or email) and pasting them into here, something that can't be done with WYSIWYG.
I've enabled the Markdown editor for comments as well. Here's a Markdown Cheatsheet.
Which themes to install?
To me, appearance is a secondary consideration, important mostly because it influences user behavior. Form follows function. I initially started with Zen, a starting theme that's currently the Most Installed theme on drupal.org. However, I didn't care for any of the Contributed Zen sub-themes, and I sure as hell didn't want to create my own sub-theme. I saw a recommendation for the themes contributed by Danny Englander, so I decided to use Bamboo. All it took was a few clicks, and the theme is live!
This blog is ready to serve its purpose, but that doesn't mean it's done. One of the best things about building web applications is being able to improve them over time, and I have a few improvements in mind:
- Tweak the Mailing List subscription process:
a. Plug into Gmail's POP service to eliminate the "This message may not have been sent by: email@example.com" warning I see for every email sent during this process.
b. Remove or replace the subscription form for visitors who have already subscribed.
- Replace the default Bamboo logo with a logo of my own.
- Modify the Markdown filter to combine consecutive lines into single paragraphs; this appears to be a bug.
- Modify the "Convert URLs into links" filter to recognize that URLS like all.ayoshitake.com.
So, that's why and how I built this blog. Have any questions or comments? Write a comment below!