A Long List of Small Improvements

Following up on what I said in the last post about building this website and platform by implementing small incremental improvements, I wanted to publish a list of what those improvements might be.

I will reference this list each day as I'm choosing what to work on. I suppose you could read it as a todo list but I'm not trying to build a project plan here. I'm just writing out what's on my mind right now in the hopes that it will help me set off in the right direction.

I might update this list over time and when I complete an item, I will probably come back and cross it off and add an implementation date.

Many of these items will definitely not seem like "small increments" but it isn't worth it to try and list out each small increment here. Those features that will take more than a day to implement will be broken down into smaller pieces so that they can be implemented in the same manner as the rest of the site.

Here is the list of what is on my mind right now:

  • Data access code improvement (it's all manual hand-written now)
  • Architecture improvements at the service/dao boundaries
  • Create and render a menu system / global navigation
  • Improve responsive / mobile-friendly CSS
  • Add tags to blog posts
  • View blog posts by tag
  • Pagination allowing navigation through posts from the home page
  • Blog Post detail page
  • Permanent slug URL for each blog post
  • Upload images as part of a blog post
  • Markdown formatting for content authoring
  • RSS feed
  • Comments on blog posts (or other content)
  • Image galleries
  • Create pages for HTML content authoring
  • Enable/disable google analytics through admin panel
  • Mailing list sign-up feature
  • Customizable layout and UI design
  • Design a layout and look/feel for mikebledsoe.com
  • Set the title of the site
  • Set the title of the current page
  • Email notifications when new content is published
  • Multiple administrators able to post content
  • Last updated date showing that blog post / article has been updated since publishing
  • User registration
  • eCommerce features for selling things like eBooks and classes
  • A lending library feature
  • Community discussion forums

That's not an exhaustive list but I think it's enough for now.

This Website is an Experiment

I'm not sure why, but I've always wanted to build a fully-featured open source CMS. One main driver over the years was the lack of quality CMS software in the .NET space where I prefer to work. I never liked using PHP-based platforms like Wordpress or Drupal and I disliked platforms such as DotNetNuke. I didn't build many apps that required content management so it was never a priority for me to really pursue as a project.

These days, there are more options in the .NET space like Umbraco, Orchard, Kentico, and Sitefinity. I haven't used these tools myself but they seem to be well-adopted and respected platforms.

Even so, the urge to build something for web content management is still there. I've always been fascinated by web publishing. In fact, one of the first things I did when I got my first shell account at a local ISP was to put together a basic HTML page. The URL was http://ssnet.com/~monkey. I had some monkey pictures and a top 10 list of my favorite movies at the time. I'm still interested in those old school homepages, especially as I've become increasingly disinterested in the centralized social media that has overtaken the old school web.

So this website is an experiment to see if I can build a feature-rich CMS as an open source .NET project. But it isn't just about what I'm building, it's also about how I intend to build it.

Starting with a very simple almost feature-less platform, I want to try building this system and website (i.e. the software and content) in very small increments. Consistency towards goals over the long term is not a personal strength of mine. I can stay consistent (although I struggle) when working on a project with a team of others or in a structured situation with nearby deadlines, but it's extremely difficult to stay consistent on my own side projects.

So the experiment I'm proposing for myself is to make a small improvement to this web CMS and to this website every day for a year. Excepting situations like illness or a vacation that requires me to completely disconnect, I want to find a small item each day that I can complete and put into production use.

The platform is called CogentCMS. You can find the source code at the CogentCMS GitHub repository.

The website will develop slowly into my personal homepage. Starting with some simple blogging functionality, I expect to develop as many features as I need to support an old school personal homepage.

Thanks for reading and bye for now,

Mike

Test Post 01

The body of test post 01.