Barnyard BBS

…you're original, light your own path
RSS 2.0 Feed

Looking for Hydroponics Tuesday?

Hydroponics Tuesday has grown so much that it has a website of its own. Visit to see it's new home.

New Code Released
4/5/2007 6:39:00 PM

Some of you might remember the previous posts about the Content Control.  It's a client-editable content management tool for building websites.  I built it a few months ago, and it's become the foundation for a lot of new work.

I'm proud to announce that I've released both an update to the Content Control AND two totally new projects.  Here's a quick description of the three of them:

  • The Content Control (client-editable regions in a web page, implemented as a control)
  • The Blog Control (a fully validating and CSS based blogging engine, implemented as a control)
  • The Photo Gallery Control (a fully validating and CSS based photo gallery, implemented as a control)

I originally created the Content Control because I wanted the flexibility of a CMS without the overhead and commitment. A CMS isn't part of the site; the site runs inside the CMS.  I didn't want that kind of lock-in.  So I built the Content Control.

The Content Control is meant to be inserted into a page; and it acts as a client-editable region.  It doesn't impose any constraints on the containing page; and it leaves the developer free to format it as they choose.  All said, it's worked very well.

Since the Content Control worked so well; I started looking at other projects that could benefit from the same philsophies...

I've used a number of blogging packages in my time; and to be truthful, none of them really made me happy.  They were typically packages that set up a site, provided blog features, and offered some degree of customization.  Rarely did their code validate.  Usually you could easily tell a blog package at "first sight".

I wanted a blogging package that didn't dominate the site.  I also wanted a blogging package that I could radically restyle using CSS. Additionally, I wanted something that complied with established web standards.  I couldn't find anything like that; so I started building.

It seemed natural to me that it should be implemented as an ASP.Net control.  Controls are like small programs that you can insert into a web page.  By implementing it as a control, this meant that a person could have multiple of them in the same site; and they wouldn't conflict.  The Blog Control uses the same TinyMCE editing interface as the Content Control.  It also offers a number of optional features, that make it quite easy to customize.  If you're reading this, you're probably already looking at the Blog Control.  I use all of my controls on my website.  Wanna guess what runs my blog?

The third control in the series is the new Photo Gallery Control.  I realized that my friends were getting jealous that I had a really sweet photo gallery (and they didn't).  I decided to re-implement a photo gallery similar to that on BarnyardBBS as a re-usable control, so I could share with the group.  While I was working on it; I decided to make some improvements to the original design.  The Gallery Control features automatic image resizing (custom to screen size), automatic thumbnail creation, easy administration, simple categorization, and magic EXIF reading code.  It's all compliant code and CSS-styled.  I switched BarnyardBBS to use the new Gallery Control (from the custom gallery we used to use) last month.  I've been testing and refining.  It's solid now.

I've been busy, and I've got another surprise.  I've built a new complete sample project for the controls.  It contains a complete working website, which demonstrates all three of them in one working package.  It begs to be customized.  Furthermore, I've made an online test drive of the controls.  You can see all the controls in action; including admin mode (where you can make changes).

Try the Test Drive now; or download the code as a package.

Also, here's my page devoted to the controls.  It includes coverage of all three ASP.Net controls, and the PHP version of the Content Control.

Additionally, I've posted the new sample project and source code to SourceForge.  You can visit the SourceForge project here.

I've put a lot of time into creating the three controls, but they're really helping people to create great websites.  You can see the newest controls in real-life action at Ancora Imparo, as it was the pilot site for the new Gallery Control.

Blogging Engine Improvements
3/7/2007 8:10:00 PM

I've been hard at work improving the blogging engine that is used here at BarnyardBBS.  I've improved the search feature, and added the ability for people to comment.

Thus far, I'd never implemented commenting.  I had always been reluctant due to the possibility of abuse and spam.  After frequently reading Skye's Blog, I thought it was time to open up a bit.

The new commenting system is integrated into the existing blog.  In the bottom corner of each post, you will see the number of comments posted (click the link to read and post your own).

I decided that I don't like CAPTCHA images.  They're annoying.  They also aren't very accessible to anyone with even a slight vision problem.  However, spam cannot be ignored.  I built a simple math problem into the posting process to quell spambots.  The problems rotate frequently, just in case.

Also, I debated allowing HTML comments; but ultimately decided against it.  I try to keep my blog as pure and formattable content. Allowing markup in the comments would stray from that goal.  It's also much easier to simply strip all HTML from the code, rather than risk tricky exploits (and spam links).

I made them very easy. If the math problems are too hard for anybody to solve; I probably don't care about their thoughts anyway.

Time to see what happens.  For the moment, consider the blogging engine unstable, as I've written a lot of code in a short amount of time.

For the first time in BarnyardBBS history; let me know what you think (link in the bottom right corner of this post). 

New blog is in!
1/12/2007 4:26:00 PM

I've got the new blogging system in place now.  I've converted both Jessa's blog and my own to the new format.  It should look mostly the same; just with some new options.

The new system has support for tagging posts and also offers a monthly archive of older posts.  It's all done with an ASP.Net server control; based off the same tech as the Content Control.

Let me know if you encounter any problems.  I've gone back and tagged all the old posts for easy searching.

After the new Blogging Control is proven and tested; I'm going to release it to SourceForge, just like it's earlier relative, the Content Control. 

6/25/2006 9:21:00 PM

I've been quite busy with the site lately. Since the major update to the new code, I've been making a lot of changes. I've recently added more CSS skins to the site. They aren't totally mature yet; but it's a great start.

I've also been making a lot of internal improvements. The photo catalog program is entirely new; as is the blogging engine.

For those of you interested; I've switched to Presstopia for my blogging software. It's a open-source (Apache License) blogging package for ASP.Net. I also looked at DasBlog, but ultimately chose Presstopia. Presstopia is very easy to modify. In fact, I'm running a customized version of it on the site right now. It's also very flexible from a database standpoint. It's nice to have choices. It gives me a lot of flexibility that I can read and write to Presstopia's database directly. This was very helpful for migration of the old blog postings; and for the direct interface used on the Barnyard BBS pages.

I use a different approach to blogging that most folks. I want a blog to be part of my site; but I don't want the blog to be the site. Lots of blogging packages are excellent; but they dominate your site.

For reference, I wrote some custom code that reads from the blog and merges it into the website design. I used to use a blogging engine that I wrote myself; but Presstopia offered some features that I really didn't have time to develop by myself.

Regarding DasBlog.... It really is an excellent package. I like it's unique XML storage system. It does not use a database at all, but rather many individual XML files. This would be really cool in a hosted environment, or where you don't have good database access. It's very intuitive. I really wanted to use DasBlog. But at the end of the day, Presstopia was just too easy to modify, and the direct database access was too convenient.

This brings me to an interesting topic. It is vitally important that information be "forward portable". I don't care how easy it is to enter information into a system, if you cannot get it out with the same ease. A lot of people are falling into this trap these days.

A prime example of this is Blogger. It's a beautiful service. It's pretty. It's easy. However, there is no direct access to your data. You could migrate it; but it would be a highly manual process of working from the generated HTML. I really don't intend to be negative towards Blogger (owned by Google, these days). It's a great service, and it's free.

Forward portability of information is critical any time you are creating content. Content doesn't just mean blogs. It can mean lots of things. For example, documents, research, web content, or contact information. I don't know about anyone else, but I've got years of effort into my contact database. I wouldn't want to lose all that work.

Cell phones are a big culprit in this area. Most people never consider the contact information they enter into their phones. Remember, before you make any large time commitment on any content project, have an exit strategy. Know where you're going. For example, the contact data that I have in my PDA / phone is frequently exported to a CSV file (text format file). I chose CSV because it's totally vendor neutral. I can import or convert this file into whatever I may need in the future. I suppose I could use XML, but that would just be bandwagon jumping.

Update: 01/12/2007

Although Presstopia served me well, I've converted to using my own blogging system exclusively.  It's implemented entirely as an XHTML / CSS compliant Asp.Net control.  It gives me all the flexibility I've wanted and also addresses my modularity and accessibility concerns.  If you're wondering what it looks like, you're probably looking at it already.