Monday, December 08, 2008 Thanks to Twitter I have received some great feedback [thanks folks!] within minutes of posting my thoughts on using a framework or CMS. In the post I talk about the two approaches in general terms and I end the post saying I will very liking use a framework for the White Peak Software web site refresh. Everyone who sent me feedback suggested I use a CMS for White Peak but unfortunately I didn't really say what my requirements are. Knowing the requirements might change the opinions of some.
The new White Peak Software site will do much more than what I believe is available out of the box from a CMS package. I need a new customer area that allows customers to sign in, retrieve license keys for purchased products, display invoices, get special discount codes for future purchases, make additional purchases, and maybe a trouble ticket lookup system that integrates with my FogBugz install. Also, the site need to be able to read XML files used for posting product version information and RSS feeds to display company announcements.
There also needs to be a web service part that will receive order information in real time from payment processors such as eSellerate. The web service needs to update customer information, licensing information, and store order information. There needs to be an admin view as well that allows me to view orders, re-send order confirmation emails, re-send license keys, change customer contact information, and so on. Oh, and I need to be able to send email notifications to customers. The email notification system needs to be a double opt-in system and should work for customers who have purchased products as well as potential customers who want to receive information about the company.
There are some nice to have features that I will probably eventually implement as well such as an iTunes sales report viewer so I can have better insight to my iPhone app sales. And a license key generator so I'm not solely depended on third party apps for licensing.
Now I know some of these features exists in CMS solutions but the features don't work exactly how I need them too. For example, many CMS solutions will allow email notifications to be sent to site members and a site member is someone who has registered with the site. But in my case a site member is also a person who placed an order through the company store where no registration is needed. Look at it as being a site member who hasn't provided a password to the account yet. So while I can use a CMS for the feature of email notification I still must extend it to suite my needs.
If I were to go with a CMS solution it would very likely be ExpressionEngine with CodeIgniter. I looked at these 2 this past summer and thought it was the best solution out there that addresses most of my needs. Unfortunately the combination of EE and CI have 2 strikes against them for my purposes.
The first strike is ExpressionEngine's MySQL requirement. Nothing against MySQL but Postgres is better in my opinion. I've spent equal amount of time working with both database engines - well, okay, I have spent more time with Postgres in recent months - and I find Postgres to be faster, more stable, and easier to work with. Heck, just comparing the 2 solely based on the wikipedia pages (MySQL vs Postgres) gives me the impression that Postgres is the better of the two.
The second strike is PHP. I'm not opposed to using PHP. In fact, I like PHP and I have done PHP programming off and on for a number of years. I also use other PHP based solutions such as WordPress for a couple of blog sites that I have. But given that I know I need to do a lot of extra coding to get all the functionality I need, I would rather use a programming language that suites me better. That language is Python.
So for my specific needs, ExpressionEngine with CodeIgnitor comes close but still requires too much extra programming. On the other hand, Python with web2py is a good combination for me writing something from scratch. It has all the right pieces so I'm not reinventing the wheel and is open enough to not hold be back or get in my way. Still, the day will come when I have the new site completely implemented and all I need to do is manage content. Then I'll start thinking again, "Use a framework or CMS". posted by Kirby | December 8 02:30 PM | comments (0)
I am once again pondering the question of whether to use a framework or CMS for the upcoming refresh the White Peak Software web site. I have gone back and forth on this multiple times over the years and I can never really decide which is better. And I ask this question often not just for my company web site but for customer web sites that I build.
A framework gives me great control and flexibility. I can design and architect the site to my liking. I can use the data store of my choice be it XML, a database such as MSSQL or Postgres, and I can implement site specific features that meet 100% of the requirements. But the site eventually reaches a point where the only thing needed is to publish new content. Create a new landing page for marketing, change copy on an existing page, add a new product page, and so on. This is when I start thinking "Man, I wish I had a really simple CMS in place."
A CMS manages the site content for me. A CMS really does make publishing new content a snap. And you get a lot of additional features, or add-ons, with a CMS such as blog engine, forums or discussion groups, user management, calendar, photo gallery...the list goes on. However, most if not all CMSs are built on top of some core framework (Plone uses Zope, DotNetNuke uses .NET, ExpressionEngine uses CodeIgnitor - I think). This allows developers to expand and enhance the CMS by writing their own add-ons and extensions. But to do this the developer needs to know the underlying framework, and if you already know the framework isn't it sometimes easier and or faster to work directly with the framework bypassing the CMS all together? Also, it's been my experience that many of the CMSs out there tend to meet only 80 to 90% of the requirements. So you get the ease of publishing new content but other areas of the site can be lacking unless, of course, additional code is written to make up for the missing functionality. It's a vicious circle.
So do you learn and master a framework and have ultimate flexibility or learn and master a CMS and have ease of use for managing content? And what about rolling your own "simple" CMS. It can be great experience in the beginning but it will eventually have limitations or even worse become yet another full feature CMS like those already available today. And if you end up writing your own full featured CMS you have to ask yourself "Would my time have been better spent learning and mastering an existing CMS, its framework and contributing to its community?"
Unfortunately I don't have any solid answers here. I guess the only real answer to the question should I use a framework or CMS is "It depends." It depends on a number of different factors unique to your situation, your needs, your time line, and so on.
So what have I decided for the White Peak Software web site refresh? Honestly I'm still a bit undecided. The site is currently implemented with ASP.NET and a home grown simple CMS mechanism. It has worked well for a number of years but I need more functionality on the site. Building on the current implementation would take too much time so I need a different approach. My original thought was to use PHP and Zend but then I discovered CodeIgnitor. CodeIgnitor led me to ExpressEngine and I thought "Ah, the solution for me. PHP+CodeIgnitor+ExpressEngine". But then I started looking at python for general programming tasks and thought "What would it take to use Python programming for web apps?" Not much I found out so I have decided to use Python.
The decision to use Python has lead me to look at a number of different frameworks and CMS solutions. And while I'm not 100% sure what stack I will select, I'm leaning towards Python + web2py. web2py is an enterprise ready framework for web based application. Web development using web2py is very easy and fast, and I really like the development experience on my Mac.
I guess it's safe to assume at this point that I will once again pick a framework over an existing CMS. What can I say? I'm a programmer and while the appeal for a CMS is there I still enjoy the flexibility and control I have by doing my own implementation using a framework.
Update: Here is a follow up posting that explains my own requirements and why I feel using a framework is better in my situation. posted by Kirby | December 8 12:26 PM | comments (2)
Monday, December 01, 2008 I attended CodeRage I and II. The sessions were insightful and I enjoyed the concept of attending a virtual conference. With the first two CodeRage conferences I had zero problems listening in on and viewing the conferences. But with CodeRage III is only minutes away from starting I can't say the same thing about attending this latest conference.
For starters when you register for the conference you have select the sessions you want to attend. Of course the standard disclaimer appears on the session schedule page "Agenda is subject to change without notice" so I registered for all sessions. This caused a flood of emails to arrive in my Inbox. "Big deal" I thought. I know I registered so I deleted the emails. Today I learn I needed to save those emails. Those emails contain the "join now" links for each session. Unfortunately since I deleted the emails long ago they are now gone forever. Only solution? To re-registered for the conference, so that's just want I did.
To re-register I had to use a different email address then the one used in my original registration. If you use the same email address you get a friendly message saying you have already registered for the event. No s#@t! Since the system already knows I'm registered it would have been nice to see an option that says something like "re-send confirmation emails". But noooo, so I completed the registration form again this time using a different email address.
Now I have re-registered and the confirmation page says "Thank you for registering for this event. You will receive an e-mail that will let you know whether your registration is approved." It's been 30 minutes and still no emails. And the conference has officially kicked off as I type the CodeRage III rant. Luckily someone on Twitter has offered to forward the emails to me.
Next issue. CodeRage uses Live Meeting. Live Meeting was a great service a few years back. Heck, I even hosted an online session a time or two back 4 years ago. Problem with Live Meeting is that it only works with Windows. Guess what? Not everyone uses Windows.
I switched to the Mac last year and the experience has been so good that I never want to see Windows again. Unfortunately that won't happen in the real world. For starter I have customers who depend on Windows and I sell products for the Windows desktop. So Windows will remain a part of my life for the unforeseeable future.
The solution to using Windows on my Mac is VMware Fusion. This great piece of software allows me to launch instances of Windows in virtual machines on my Mac. This is how I do all my Windows-based development.
So what does this have to do with CodeRage III? I'll tell you. Because I use the Windows virtual machines to do programming I typically never configure an audio device. This means no audio will ever play from the Windows-based virtual machines I use. But to attend CodeRage III I need to use Windows. And since my only access to Windows is through a virtual machine, I now need to re-configure a Windows instance to have an audio device.
So to attend CodeRage III I need to have a Windows vm instance with an audio device. I need to install the Live Meeting component. And I need to re-register or ask someone else to send me the emails with the session links. Honestly this is just becoming too much trouble.
At this point it has been an hour since I started getting ready for CodeRage III and I'm so annoyed that I just have to move on. I might try again tomorrow (doubtful) or just want for the replays to be posted in the near future (more likely). Meanwhile, here are some suggestions for future CodeRage events.
- Use an online conferencing solution that is not tied to Windows only
- Send a single email, not one for each registered session
- Provide a web page to registered attendees with links to the sessions
- Don't expect me to save 20 or so emails (that are flagged as junk anyways)
Hope you are listening CodeGear.
Update: I decided I want to listening on CodeRage III so I have configured audio in one of my Windows development vm. But now I'm searching though 20 different emails to find the link for today's current session. This is just plain stupid. Yes I know. If I used Outlook it would have placed an appointment in my calendar but I don't use Outlook. Big surprise I'm sure. Too annoyed. Will try again tomorrow when I'm in a better mood.
Update 2: It's been more than 2 hours since I started trying to get my CodeRage on and everything is finally working. Still, the experience has not been very Mac friendly. For instance, here is what happened when the 20 emails came in. posted by Kirby | December 1 07:56 AM | comments (2)
