Archive for the 'Web Development' Category

Dec 16 2007

A Small Website of Massive Proportion — Sitecore

Published by rich under Web Development, CMS

Imagine a straight forward informational website of around 25 pages including a few special features like an events calendar, publications section, contact form, and a simple membership management piece with maybe 40 members…and yes, it has an intergrated Content Management System — Sitecore. Sitecore is like an iceberg where the end-User Interface is just the “tip” as they say. The CMS functionality and databases (8 in this case) which exist below the surface is massive.  This relatively simple informational website built with Sitecore requires more then 5 Gigabytes of disk space, yes that’s right 5 GB. Something to consider when building with this system.

One response so far

Dec 14 2007

To Copy a Database…

Published by rich under Web Development, CMS

Lately I have been involved with migrating websites from one production server to another. All of these websites are CMS applications with databases on the back-end; implemented with Microsoft Technologies. This post will discuss the database aspect of website migration. There are a number of different methods to copy or move a database: detach-move-attach, backup-move-restore, export-import, DTS, Copy Database Wizard. Since we are not only moving the databases, we are also upgrading from SQL Server 2000 to SQL Server 2005, I decided to give Copy Database Wizard (CDW) a try…it’s a tool under SQL Management Studio full version. In theory CDW sounds great, but in practice you’ll pull your hair out getting it to work in some cases. CDW is very finicky about set-up, permissions, etc.

Preparation

  • Check the source database ownership. If needed, change it to an account with sysadmin membership. For this example I used the sa account. To change DB ownership execute the following code in Query Analyzer:
use [currentdatabase]
go
sp_changedbowner 'yourusername', 'true'
go
  • Check the source database for orphaned users and resolve or delete them. Here is an excellent article about orphaned users along with a Stored Procedure for identifying them:
    http://vyaskn.tripod.com/troubleshooting_orphan_users.htm
    Orphaned users will cause a failure at the destination during the DB copy.
  • On the source server add an entry to the LMHOSTS database file which is the IP address and NTLM name of the destination server. For additional info: http://support.microsoft.com/kb/314108
  • To avoid data loss or inconsistency, you must be sure there are no active sessions attached to the database being moved or copied. It’s probably a good idea to do it off-hours and take the website off line during the migration.
  • Make sure the SQL Server Agent has the proper user account setting…should be set to the Local System Account (NT AUTHORITY\System).

Process

  1. Login to the destination server with admin credentials, fire-up Management studio and the CDW tool. Right click on a db, CWD is under tasks. CDW will step you through various screens to build the SSIS[DTS] package.
  2. Specify the Source SQL Server by name or IP, use SQL Server Authentication, enter credentials of the saaccount – ID and password.
  3. Specify the SQL Destination by name or IP, use SQL Server Authentication, enter sa account credentials of the sa account — ID and password.
  4. Select Transfer Method, use the SQL Management Object method. This will allow the DBs to stay online and operational during the copy.
  5. Select databases to be copied — use the copy checkbox…don’t move it.
  6. Configure destination database. For this example I just used the default destination name and location. I also selected “drop any database at destination if one exists” to overwrite it.
  7. Select the database objects. Leave the logins selected and nothing else. This will bring over the logins, so your connection strings should work at the destination with only a server name change.
  8. Configure Package screen. Select logging options. Sometimes it’s good to direct logging to a file for better debugging.
  9. Schedule package or run immediately — I have been just running immediately.
  10. Verify choices — go back if needed.
  11. Run the job — all steps should be all green [pass] or study the log file if debugging is needed.
  12. Refresh Management Studio database list. Right click top server node and select refresh. The new databases should now appear. Check tables, users, etc.
  13. Run sp_updatestats against the database on the destination server to
    update statistics and make sure that the copied database is performing optimally.
  14. Update connection strings and test application.

No responses yet

Sep 30 2007

Sitecore [v5.3] — The Good, the Bad and the Ugly

Published by rich under Web Development, CMS

The Good:

  • Built with native ASP.NET V2.0,  C#, XML, and XSLT
  • An excellent and well documented API 
  • A highly customizable system built upon an open development platform
  • An active developer network with a responsive online forum
  • A beautiful Windows-like desktop delivered over the web to your browser…with ribbon menus, smooth gradations, dimensional icons, and right-click context menus. This fancy interface is used to build and manage the website and it’s content by both developers and business users.
  • Handles multiple languages well
  • Good cache control and excellent front-end performance
  • Good support for Web Standards
  • Highly granular security control
  • Customizable workflow

The Bad:

  • Poor plugin [modules] architecture. What modules are available, are typically painful to install, and almost impossible to uninstall; and further more, many of the modules are buggy and poorly implemented.
  • Out-of-the-box, Sitecore provides almost no Website/CMS functionality. You’ll have to build everthing, templates, layouts, navigation element, etc. As I said in a previous post “Sitecore is not a CMS, it’s a framework to build a CMS”.
  • The beautiful Windows-like desktop is massively heavy which requires a high bandwidth connection and powerful desktop equipment.
  • The developer interface is anything but intuitive, it’s complex, confusing, and sometimes buggy. It has serious usability issues…it’s designed by geeks for geeks. I love the core architectual concepts of Sitecore (templates, masters, layouts, renderings, etc) and how websites are constructed using these concepts; however, building a website through this interface is frustrating to say the least. Fortunately, the business user interface can be customized and simplified to be more usable and somewhat intuative.
  • Managing security on large websites can be painfully difficult for developers and insane for business users.

The Ugly:

  • A massive footprint. An out-of-the-box install will consume 543 MB of disk space with 24,057 files and 587 folders; also the system requires 6 databases. After this massive install, hit the website with a browser only to be greeted with a single blank white web-page page with the black text “Sitecore Welcome to Sitecore”.
  • The administration side of this system is extremely heavy for web delivery.  With beautiful graphics driven with Ajax, Sitecore gives the impression of  Windows desktop which leads you to expect certain level of behavior and performance which simply the system can not fully deliver.
  • Creating and managing multiple independentwebsites is a complete nightmare with or without the multi-site manager. Forget it; it’s not worth the pain. In-spite of what the folks at Sitcore might say, Sitecore is NOT a very good multi-site system – I learned this the hard way.

Conclusion:

After evaluating dozens of systems available on the market, Sitecore does in fact standout as being one of the better systems for many reasons. However, this system does have its place in your tool belt and is certainly not recommended for all types of websites. Sitecore is best suited for a large corporate portals, or institution websites, etc. Larger scale projects with many authors and editors requiring workflow. Sitecore can work well for multiple relatedwebsites which can share management function, templates, layouts, security, etc. I personal would not recommend Sitecore for small business brochureware websites or anything small scale, where simplicity is an important factor…Sitecore might work; but its a huge overkill.

3 responses so far

Sep 06 2007

Sitecore Content Management System

Published by rich under Web Development

Sitecore [out-of-the-box] is not as much a CMS, as it is a framework for building a CMS.

I am currently involved with a Sitecore CMS/website development, and I have a lot to say about this complex system, as well as about my development experience with this system. The topic of many future posts…stay tuned.

No responses yet

Sep 03 2007

Header Photos

Published by rich under Web Development, Wordpress

I updated my Wordpress installation and template to allow rotating or random imagery in the header block (above)–for now it’s set to random. If you reload this page you may see a new image in the header.  I say may because random does not necessarily mean different, since there are a fixed number of images in the header gallery, the same image could very possibly be reloaded sequentially.  Over time I’ll add and remove images from that gallery…just to keep things fresh. Maybe, I’ll throw-in some seasonal things as well. All of the photographs used are my own, and are copyright protected.

No responses yet

Aug 30 2007

Web Designer / Developer – The Hybrid

Published by rich under Web Development

In a previous post I discussed the concept of what constitutes the “Ideal Web Team” in terms of people/talent. In this post I’ll discuss one key position on the team: The Web Designer/Developer. This person has the skills and creative temperament of a Graphic Artist with technical know-how of a Web Developer, thus a hybrid. A web team that does not have this kind of talent will suffer with lower productivity and dull websites. Some hardcore back-end developers are talented designers as well; but it’s very difficult to be highly productive in both areas, especially on the same project. Typically, back-end developers don’t have the required creative edge or proficiancy with graphic design tools. A hybrid web designer/developer should generally have the following characteristics:

• Expertise with professional tools of the trade, tools  like Photoshop, Illustrator, Flash, etc.
• Good understanding typography and page layout with a very keen sense of design.
• Branding and marketing experience.
• Web standards advocate
• Expetise with XHTML , JavaScript, Ajax, CSS, especial  CSS driven layouts
• In depth understanding of the principles of Accessibility and Usability
• An Information Architecture guru
• Significant ability with Flash and Action Script
• Can design a Logo Design, if needed
• Capable of print media design.

Some companies discount the importance of Web Designers or Hybrid Designer/Developers; I’m willing bet the quality of the websites produced by these companies will reflect this attitude. The web is a visual interactive media which requires very special talent to build excellent and interesting user interfaces. Sure just about anyone can build a web page, it’s not that hard; but it takes true talent, understanding, and years of experience to do it right…to be a cut above the rest.

Building a Website is like playing guitar, anyone can learn to strum a tune; but it takes native talent and years of dedicated study to master the instrument.

No responses yet

Aug 23 2007

The Ideal Web Team

Published by rich under Web Development

I came across an interesting blog posting by Andy Budd where he describes the Ideal Web Team. I agree with him for the most part; but what I find most interesting about this post is the comments in response too it. It’s clear that different businesses have a different market niche targeted toward different clientèle; and as a result have a slightly different team composition.

Here is my ideal small high performance web team:

  1. Account/Project Manager (1)
    - May also wear the hat of a Sales and Marketing person
    - Primary point of contact with the client
    - Negotiates deliveries
  2. Creative Director (1)
     - Usability and Information Architecture expert
     - Responsble for the user experience
     - Provides project vision and creative direction
     - Brand development
     - Web Marketing Specialist and SEO expert
  3. Designer/Developer Hybrid (1)
     - Web
              Graphic Design
               XHTML
               CSS
              Accessibility 
              Web Standards
     - Print
     - Flash
  4. Web Developer (2)
     - ASP.NET (c#, MSSQL)
     - LAMP (Linux, Apache, MySQL, PHP, Perl, Python)
     - Experienced with database concepts and design
     - Web Standards
  5. Content Producer (1)
     - writer/editor
     - Wears other hats
     - With possible expertise in AI, Usability, and Accessibility

This list is not set in concrete for me; but it roughly covers what I believe are the talents required to have a high performance web development team; and sure other people are needed to run the business from the top to the bottom…but for this post I’m talking web development.

No responses yet

Aug 20 2007

The Right Tool

Published by rich under Web Development, CMS

A Content Management System (CMS) is a tool to help you to manage (create, edit, organize) content of a website. You can build your own or use one of the thousands of systems available pre-built; some open source [free]…some proprietary [$$$].

One thing for sure, there is no one CMS that has it all…it’s always a matter of finding the right tool to do the job at hand. A small business brochureware website has different requirements then an enterprise portal–that’s obvious. However, granularity of choice is much finer.

If the only tool you have is a hammer, then everything looks like a nail.

A good development team should be well-versed with a number of tools [CMS] used to build websites. An excellent resource for exploring and comparing Content Management Systems is CMS Matrix:

 http://www.cmsmatrix.org/

They currently have 789 systems to study and compare. CMS Matrix is only a starting point to find the right CMS tool.  You’ll still need to do your due diligence with research and demoing products. You MUST demo any products being considered…it’s a requirement for so many reasons.

2 responses so far

Aug 19 2007

Hello world!

Welcome to a new development phase of my website at feich.com.  I decided to retire the old website and install a personal publishing system to allow me to maintain and update this website in a more timely fashion. I’m using a customized version of the very popular Wordpress…which I like very much. What is Wordpress? Here is a good description taken from the official Wordpress website:

Wordpress is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability. What a mouthful. WordPress is both free and priceless at the same time.

 I like Wordpress because it’s easy to use and customize, there are tons of themes and plugins available, and it has good support. Wordpress is really a Content Management System (CMS) geared towards blogging, however it can easily be configured for other purposes. In the last two years or so I have evaluated dozens of Content Management Systems…probably more then 35. I have used and extended many systems, and built a few as well. With this experience behind me, I selected Wordpress as my personal publishing platform.

I will continue to discuss the merits of Wordpress, as well as other CMS’s in later posts.

The Bean of Chicago

The Bean of Chicago

No responses yet