Simple Machines Forum (SMF) Review

Wednesday, January 16, 2008

What is SMF? According to, Simple Machines Forum, or SMF, is a free, professional-grade software package that allows you to set up your own online community within minutes -- aka, it's forum software.

SMF is written in the popular language PHP (Andy may disagree) and uses a MySQL database.

This is an extremely powerful and easy-to-use forum, probably one of the more robust systems I've come across. Considering the price -- FREE -- you can't beat it.

Here's a list of some general features:

  • Advanced permission and user management
  • Supports multiple languages at once
  • Open and well-documented source code
  • Tracking of new and old unread topics, not just from your last visit
  • Designed for optimal performance and scalability
  • Multi-media output (XHTML, XML, RSS, WAP)
  • Multi-language support from a large community
  • Package manager that automatically installs or uninstalls mods (also known as hacks) as well as product updates

For an exhaustive list of features, visit the SMF features list here.

The minimum system requirements are as follows (most hosts will easily meet these requirements. If not, reconsider who you're hosting with) :

  • Any webserver that properly supports PHP, such as Apache or Internet Information Services (IIS).
  • PHP 4.1.0 or higher. The following directives are required to be set correctly in php.ini:

  • MySQL 3.23.4 or higher
  • At least 512 kilobytes of storage space in the database, although more is highly recommended
  • About two and a half megabytes of storage space on the web server, although more is recommended

Our forum, located here, currently has over 100 members, and more than 300 posts and continues to run as smoothly as the day we launched. Granted, I'll come back to you when we get into the tens of thousands, as that will be the true test of scalability. The update/package manager works like a charm and I'm surprised at how compatible my heavily modified theme has been with each update. An update has yet to break my theme. knock on wood The system notifies you when an update is available for SMF itself and any mods that you might have installed. Click the link for the update, and via FTP, SMF automagically downloads the update. Then visit the Package Manager, click the "Apply Mod" link and you're set.

Free themes are available to customize the look and feel of the forum and install with ease. Modifying a theme is also a breeze if you have any working knowledge of HTML and CSS. Knowledge of PHP is also a great benefit, but not required.

The Simple Machines website offers a ton of mods to make the forum fit your needs. They offer mods for New Features, Feature Enhancements, Themes, Buttons and Avatars, Administrative Functions, BBC, Attachments, Permissions, Postings, and Profiles. They one area that SMF currently seems to lack is the ability to monitor posts easily. As an admin you can subscribe to a board, but that will only notify you of "new" posts, not comments to existing posts. Apparently this is an issue that is to be addressed in the 2.0 version. The first beta release of 2.0 was delivered last August. According to the forums over at Simple Machines, the following is a summary of some of the new features:

  • Database abstraction - with support for PostgreSQL and SQLite planned alongside that of MySQL
  • Automatic installation of packages into themes other than just the default
  • Email templates to simplify customization of forum emails
  • Moderation center including post, topic and attachment moderation - to allow approving of user content before it is made public *WOOHOO*
  • User warning system
  • Additional group functionally including group moderators and requestable/free assignable groups
  • WYSIWYG editor to provide an intuitive user interface to those users not familiar with BBC
  • Permission improvements such as group inheritance and permission profiles to further reduce the complexity of the permissions system
  • File based caching for a performance increase on all forums regardless of whether an accelerator is installed
  • Mail queuing system to stagger the sending of emails to improve performance on large forums
  • Advanced signature settings to allow the administrator of a forum to more tightly control the contents of users signatures
  • Personal messaging improvements including ability to automatically sort incoming messages and a variety of display options
  • Improved upgrade script with better timeout protection and simpler user interface
  • Custom profile fields to enable administrators to add additional member fields from the administration center
  • User configurable posts and topics per page; an improved calendar interface
  • Option to allow guests to vote in polls

Apparently, version 2.0 has been in the works for quite some time. As you can tell, the team is very committed to the success of this open source project and their goal is to provide the next generation of forum software. They are well on their way.

Our forum is currently running on a shared host -- iPower. I did need the assistance of the host to get the application installed as it's not one of the standard apps they natively support. And, as you may well know, shared hosts typically grant very little access to the system. They are apparently upgrading to a new server platform, which will hopefully include Fantastico, giving the user a little more freedom to install software. After the system was installed we did run into an issue where, on certain systems/networks, accessing the forum would result in the index.php not being recognized as a web page, but rather a file -- a download dialog would be presented instead of the file being rendered in the browser window. In the end it was a server configuration error of "unknown" somewhere in the PHP installation. Sorry I couldn't pry more information out of the lovely techs at iPower. However, other individuals experienced this issue and it's fairly well documented throughout the forums over at

Since the forum launched, we have had very few cases of users experiencing usability problems with the forum -- partly due to the wonderful theme, maybe? :) It works like any other forum available on the market. This is my first undertaking in administering a forum, and SMF has made life easy for me. As new requirements arise, the mods have been more than helpful in addressing those new requirements. The admin section of the forum provides an abundance of features to organize, monitor, and optimize your forum.

One other bit of functionality worth noting is that of the integration of SMF into various CMS systems. They've developed four bridges to help integrate SMF into e107 CMS, Mambo, Xoops, and iGamingCMS. To further entice you to make the switch from your current CMS/forum software, they've answered the question, "What about my current content?" They've also been nice enough to develop converters, to convert your other forum software into SMF. They offer 35+ different converters.

If you're looking for an easy-to-use, powerful forum application, consider SMF.

It's Simple, Effective, Powerful, and Free!

Twitter Facebook Digg Simple Machines Forum (SMF) Review Bookmark Simple Machines Forum (SMF) Review  at

How to Change keyboard Language in Windows

Tuesday, January 15, 2008

I just wanted to share a bit of useful information with the masses of XP users out there. I have been testing out some new languages for PC Doctor, so I have all of the possible language packs installed, some keyboards enabled, and I even let the language bar stay open every once in a while. Usually I'm pretty diligent about keeping the keyboard in English though, considering I don't know how to type the languages I'm testing.

Today I wasn't paying attention and I locked my computer, like ya do, when I walked away for a minute. When I came back, I typed my password in and hit "OK", like ya do. Incorrect Password. I just figured that my fat fingers were flyin' too fast and I might have messed up. Incorrect Password. Maybe caps lock, shift key, num lock, something wasn't working right. Incorrect Password. Okay, so my password is right, let's check the domain... Wait a minute, why am I typing in Hebrew!?!

As fate would have it, clicking on the "extended" options button, let me know that my domain was correct, but I had been typing likely gibberish into the password field. In case you were wondering, asterisks look the same in Hebrew as they do in English and quite a few other languages. So what I expected: whenever a blue box with a language code in it is displayed, you can click on the box and a drop down will let you pick the language you want to type in. Blue box does nothing.

So now only can I not change the language, I can't log in to figure out how to change the language to log in to... Well, you get the point. So I got onto my fellow developer's machine and did a quick little search and found the following page:

How to change keyboard language in Windows

On it, there's a very obscure shortcut to change keyboard languages: ALT-SHIFT. I never would have thought pressing two modifier keys would have an effect. So there you go, if you ever find stuck at a login box and the only choice you have is to type in Korean and your password is in Russian, hit ALT-SHIFT a few times and you should see the "blue box" rotate among the enabled input languages.

Note: If you don't already have multiple languages set up / installed, the shortcut doesn't work.

Twitter Facebook Digg How to Change keyboard Language in Windows Bookmark How to Change keyboard Language in Windows  at

Exception Safety in C#

Monday, January 14, 2008

C# vs. C++

C# tries to perform resource management through finally clauses and the garbage collector. This is radically different from C++'s approach. C++ executes destructors (which do all of the resource cleanup in modern C++) in a deterministic order.

While exception safety is certainly possible in C#, it is potentially error-prone. It frequently relies on the user of a class putting the correct code in a finally block. (This is code that the compiler frequently figures out in C++/CLI, so it's not a problem with the CLR.) C++, on the other hand, relies on the author of a class to put the correct code in the constructor and destructor.

C# requires that resource management be done every time a programmer uses a class. C++ requires that it be done once. This lies at the heart of my complaint with C#, but it gets worse, as we'll see.

To be fair, C# does handle one resource automatically. Memory management doesn't require any work since it's all cleaned up by the garbage collector. All other resources require some extra effort on the part of the programmer. C++ requires that programmers put all memory resources inside an appropriate smart pointer.

The conventional C# approach

Code that allocates a non-memory resource in C# is supposed to look like this:

// Declare all variables that may require cleanup at the top of your function.

// Also include enough state information that you'll know how to undo

// partial changes that were made.

try {

  // Use the variables.

} catch( Exception ) {

  // Roll back any changes that were made.

} finally {

  // Call Dispose on all of the objects created that implement Dispose.


Needless to say, this sucks. It requires that you know which objects require disposal. It forces you to declare all of your variables at the top of the function and move them away from where they are used. It's also a lot of extra text that makes it harder to figure out what the function is actually doing.

However, assuming that the programmer didn't screw up, it will work.

What happens when someone screws up?

Unfortunately, the burden of cleaning up resources is placed on the user of the resource rather than the implementor of the class that handles the resource. This means that you can't be sure that Dispose will be called every time that it has to be called. Furthermore, it means that resource cleanup has to be performed correctly more than once per class.

The CLR has anticipated this problem to some extent. It allows a class to declare a finalize function which gets called by the GC right before it gets destroyed. You won't know when this function will be called, but at least your resource will get cleaned up eventually if you use this.

Is Finalize enough?

Unfortunately, Finalize has some serious problems. Because the garbage collector destroys the objects in a non-deterministic order, some of the member variables of the object being finalized might have been destroyed already.

The CLR provides some information about the order in which objects are destroyed, however. The following assumptions can be used:

1. Objects that derive from CriticalFinalizerObject and have a finalization method can use references to objects without a finalization method.

2. Objects that do not derive from CriticalFinalizerObject can use references to objects that do derive from CriticalFinalizerObject and also objects that do not have finalization methods.

Microsoft strongly recommends that you don't derive anything from CriticalFinalizerObject. However, this is the only mechanism they give you to order the finalization methods. If you have one object that must finalize before another, then you either have to use this, or you have to do what Microsoft did for System.IO.StreamWriter. This class does not flush its buffer during finalization because it may contain a FileStream object that must be closed after the StreamWriter flushes its buffer. In other words, the StreamWriter simply doesn't work unless it is Disposed correctly.

Of course, if you have three objects who's finalization order must be determined ahead of time, then even deriving from CriticalFinalizerObject won't work. In other words, even if you didn't care exactly when a resource was cleaned up, finalize isn't enough to make all classes safe to use. Sometimes you must rely on the user of your class to make it safe in C#. The fact that it works a lot of the time is only going to make the users careless.

Personally, I find this scary.

Twitter Facebook Digg Exception Safety in C# Bookmark Exception Safety in C#  at

Must-have 150" TV at CES

Friday, January 11, 2008

Can you see all of CES in a day? I tried, but of course I knew I couldn't see all of the 2,700 vendors. I saw about 20 and boy was it worth my time!

CES claims it would take me 2.5 years to meet all 2700 vendors outside of the show. That is an average of 3 visits each day for 890 days straight. Ah, needless to say I was glad CES brought everyone together for me and allowed me to see some competitors, the major PC manufacturers, and a lot of other cool stuff.

CES is the show that, at least for the last few years, has been known as the place to launch the biggest and best wide screen TVs. And one specific product captured more than the 140,000 attendee eyes and, in my book, wins the "King of the Hill" award: the announcement by Panasonic of the 150" TV, the World's Largest Plasma TV. It is a mammoth TV and spanned almost 12' by 8'. It isn't in production yet. Panasonic is building a fifth factory in Japan to manufacture this movie screen. Prices are not public but one can get some idea of its pricing by looking at its little brother, the Panasonic 103" plasma TV that sells for between 60 and 70k USD today. Who has that kind of cash when they can pay less than 10k and get a beautiful projector and at least a 150" display screen. Hmm. . . I just don't know.

Needless to say, I was impressed and captured a Panasonic employee demonstrating the enormousness of this new plasma that some day may be exactly what I need in my living "movie theater" room.

Twitter Facebook Digg Must-have 150" TV at CES Bookmark Must-have 150" TV at CES  at

What's Wrong with iPhone

Wednesday, January 2, 2008


I'm not an Apple-agnostic person. A bit over two decades ago I owned and liked my Apple IIc with its wow-factor portable LCD display. Sometime later my desk was graced with the original Mac right alongside an Amiga and a PC. But with my usability and let-me-do-what-I-want requirements, the Apples were replaced by an almost endless succession of various PCs and portable devices.

Now I'm back to an Apple product, as I bought an iPhone. Frankly, I had not really planned to do so, but it was the culmination of circumstances that were perfectly aligned for that outcome. First, T-Mobile that I've used for many years has service at my house that for lack of a better term stinks. That combined with the declining firmware quality of Nokia phones (which is the brand that I've used almost exclusively because of their intuitive and task-centric user interface) gradually getting to the point of unacceptability. Finally, over the years I had already looked at several of the traditional Nokia competitors, such as Motorola, Samsung, NEC, and Sony-Ericsson, but found their firmware to be uniformly buggier than that of even the worst Nokias, and the user experience to be far from intuitive.tations.

Continue reading...

Twitter Facebook Digg What's Wrong with iPhone Bookmark What's Wrong with iPhone  at

(Page 1 of 1, totaling 5 entries)