News Articles

Articles from Work

Using the Telerik Rad Editor with DNN

I really wanted the title of this blog post to be “Customizing the Telerik Rad Editor with DNN to Reinforce Consistent Content Administration Practices for your Content Editors and Other Implications of using Telerik Rad Editor as your Default HTML Editor in DNN” but that may have been a tad too long.

In DotNetNuke 5.4.0, the community edition of the platform included the Telerik RAD Editor. This is an exciting new development for the community edition of DNN. The flexibility of the HTML editor in DNN is one of the most commonly overlooked features. For most content editors, the HTML editor might be their only interaction with the system. For this reason, customizing the HTML editor for your content administrators is crucial to user adoption and creating a friendly workspace for your editors.

This blog entry is going to apply some of the same concepts from a previous blog entry for the FCKEditor, Optimizing the FCKEditor for DNN, but as an evaluation of the Telerik RAD Editor for DNN. Chris Hammond introduced how to include these features on your site in a blog on DNN Daily. I’m going to build upon his implementation instruction with some opinionated configuration recommendations.

The Standard Toolbars

The Telerik HTML Editor has a very robust toolbar and many of the features function better than the features of the FCKEditor, but I’m still a firm believer that too many options just causes confusion.

The Telerik HTML Editor comes with a default toolbar configuration called “ToolsDefault.” This default toolbar has every feature turned on and looks like the figure below.

default-toolbar

There is a second toolbar configuration file included with the Telerik HTML editor called “ToolsMinimal". This is nice attempt at paring down the toolbar and for demonstration purposes shows how far you can go, but it goes too far and still ignores some large problems (mainly the ability to add inline styling to content).

minimal-toolbar

I like to create a streamlined, reorganized toolbar for users to group like functions and edit out unnecessary features. But first we should look at how you can plug new toolbars into DNN.

*One side note. Switching over to the Telerik provider does exclude you from some of the lesser used features of the FCKEditor. Most notably is the feature to have multiple toolbar configurations based on your role permissions.

To include a modified toolbar in your instance of DNN, you’ll need to do two things 1) create a new toolbar, 2) modify the web.config (create a backup) to use your new toolbar.

Creating a New Toolbar

The toolbar configuration files are located in your DNN file system at the following path [site root]\Providers\HtmlEditorProviders\Telerik\Config. You can simply create a copy of the ToolsDefault.xml file and rename it to your liking.

Setting the New Toolbar as Your Default

To set your new toolbar as default, you simply need to modify the HTMLEditor provider section of your web.config to set the path of the “ToolsFile.”

web-config-setting

I combed through the toolbar options and created a custom toolbar that I find most fitting for content administrators. It eliminates the features that would create inline styles, and reorganizes features with like functions. You can download this configuration file here.

(Bonus) Define Custom CSS Selectors

One of the major misnomers of HTML editors is that they are perceived to be WYSIWYG. This is true if you can style your site to only use straight HTML tags or if your content editors have a basic, nearing advanced, understanding of HTML and CSS. The Telerik RAD editor now provides you as the site administrator the ability to define a list of CSS classes for which your content editors can apply to content.

The RadEditor now can inherit CSS classes from your site OR, find only classes you define for use. I’d strongly recommend explicitly defining the custom classes you want your editors to use. If you use the ToolsFile to specify the classes, Telerik RadEditor will search only for them, but will list them in the dropdown only if they exist.

To specify the classes you want your editors to use, there is a section in the ToolsFile for <classes> in which you can define the classes your wish to use in rich text editing and give them a friendly name.

custom-class

If you’re going to provide a list of classes for editors to use, I would also recommend discretely calling these classes out in your skin.css. This is primarily for organization, but it can also serve as a way for you to explicitly define the styles you want your users to add/use from the rich text editor. The classes drop down will wrap your content in a span, so be aware that you’re going to be wrapping content in more markup. I’d recommend using this for special styling and try to style semantically correct markup to meet your needs as much as possible.

If you’ve read this far, I’d like your input. When you create a list of classes, should you create list of selectors that are only used by content editors in the rich text editor? Should you reuse classes you’re using for styles throughout the style sheet? Should you use the classes throughout the style sheet, but add a level of specificity – like .editor .button? I’d like to hear from you – leave your comments.

Google AJAX Search in my DNN Site

A good search is a prevalent theme in all of the websites I implement. Google has set the bar high in terms of expectations for what search can do. The core search in DotNetNuke doesn’t come close. So as the phrase goes “if you can’t beat ‘em, join ‘em.”

Previously, I have written about how you can use the core search in DNN to integrate with a Google Custom Search engine API. If you’re interested in this approach, check out my blog post on integrating DNN search with the Google Site Search. This approach is nice, but it also is a little clunky to setup and the results launch in a new window. My new favorite way to use Google in a DNN site is to utilize the AJAX search feature provided by Google.

Have you ever typed “site:www.patrickrenner.com” into Google? It allows you to simply search a single site using the indexing of Google. The AJAX search basically does the same thing. It takes the URL you wish to search and appends your search parameters on to the request to Google.

To make this happen in DNN, there are three things you’ll need to do.

  1. Insert an input into your skin. This will act as the search input for your site. The values included in the input will be the values past to the search query.
  2. Include an empty <div> in which you wish to place the results of your search.
  3. Add the JavaScript to your skin which allows for the input, the results div, and Google to all cooperate.

Instead of spelling out the code, I’ve included a text file for you to download to reuse this code for your site. Download the example code here. Feel free to inspect my site as well to see the code in action.

DotNetNuke 5 User’s Guide Reviews

This week has been exciting, aside from the lame mid-summer head cold I’m suffering, because of a few positive reviews of the book I wrote with Chris Hammond. The reviews have been right in line with the goals we had for the book – simple, focused, “Get Your Websites Up and Running.”

Joe Brinkman reviewed the book and reiterated our goals with one of the first topic sentences of his review. “This book is very clear in that it is targeted specifically at DotNetNuke Administrators and it does a very good job of staying focused on the topic.”

One of the common tests Chris and I used as we wrote our book was, “would your mom understand this?” Put aside all “your momma” jokes and don’t take it as an attack on moms or women. The biggest eye opener I had in working with DNN, and prompted me to want to write this book, was when I worked to overhaul my mom’s website – imagethreads.com. As I worked through her site, I realized how three-letter abbreviations, jargon, and technology I take for granted on a daily basis, can be significant barriers to doing something easy like maintaining a blog.

Will Strohl also gave our book some lip service this week and is putting our work to the test by encouraging his girlfriend to read DotNetNuke 5: A User’s Guide. I’m anxious to hear the outcome because if someone new to DNN can follow the book, I’ll consider it a success (just need sales to fall into line).

Speaking at St. Louis Day of .NET

I received an email today confirming that one of my topics was selected for the St. Louis Day of .NET conference.

The topic I will be presenting on is a topic for which I am passionate. Passionate seems a little overkill and strange, but let me give you the long story. The web is very prevalent in our lives. Websites are becoming more-and-more user friendly, and user experience design is important to this progress. Elegant designs, intuitive navigation, attractive, usable websites should not be something limited to web designers. In order for a website to achieve its goals, the handoff from web designer to content owner needs to happen. Websites are only as good as their content. The design helps to make the content stick.

So… using DNN should be easy for content managers – the source of content. Web administrators should feel confident in handing off content management responsibilities. This isn’t always the case. I wince coming back six months later to some of the websites we implemented at Engage.

Okay, okay, so what’s my topic?

Maintaining Design Integrity in a CMS with Smart Implementation Techniques

Abstract: Handing off a website to content managers can often be scary for website developers. The users of content management systems are notorious for killing elegant designs. This presentation will review a number of techniques available in DotNetNuke to keep your website looking good while still distributing content management responsibilities. Topics for this presentation include: locking down the rich text editor, skin and container development techniques to prescribe design, and the importance of training your customers on the basics of web site management.

Optimizing the FCKEditor for DNN

The FCKEditor in DNN allows for rich text editing, and as a WYSIWYG tool, it does a great job. A recurring goal for many of my DotNetNuke customers is to distribute content administrative rights to a broad audience. This is a realistic goal, and the FCKEditor helps to provide content administrators the tools to create and edit content without detailed knowledge of HTML.

fg5 - Toolbar

Here’s my beef… The default toolbar set for the FCKEditor in DNN really give the content editors a lot of ways to kill the elegance of a well thought-out design. The top offenders are (in no particular order):

  • Style list fg5.7-style
  • Insert Smiley fg5.6-smiley
  • Font Colorfg5.7-fontcolor
  • Font fg5.7-font
  • Background Color fg5.7-bgcolor

There are some configuration options available to anyone with file system access that I would recommend to any implementation of DNN. (Quick note: if you have multiple portals within an instance of DNN the changes you make will affect all portals.)

Clean Up the Toolbar

The default DNN toolbar gives the basic content administrator too many options. Most of the functions in the toolbar shouldn’t be used and clutter the users experience. In my opinion, we should only provide users the tools we want them to use. Personally, I hate the idea of someone applying inline styles or non-semantic markup to the site. Its too hard to account for (dummy proof) in the style sheets.

Solution: create a streamlined toolbar by modifying the fckconfig.xml file. Technically, you should create a custom toolbar and then apply permissions to this new toolbar. I don’t find any real benefit to doing it the “correct way.” In most cases I don’t provide a different set of tools to different users. Is is possible? Yes, but for most of the cases one toolbar is suffice. So I typically just modify the DNNDefault toolbarset.

How: Locate the fckconfig.js file in the website files for DNN. This file is located at [root]\Providers\HtmlEditorProviders\Fck\Custom. Within this file, there is a section that defines the functions available in the Toolbars (search for Toolbarsets). It looks a little something like this:

FCKConfig.ToolbarSets["DNNDefault"] = [
	['Source','Preview','-','Templates'],
	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
	['Link','Unlink','Anchor'],
	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
	['Style','FontFormat'],['FontName','FontSize'],
	['TextColor','BGColor'],
	['FitWindow','ShowBlocks','-','About']
] ;

You can easily see that the items listed in the Toolbar are easily mapped to features of the FCKEditor. By trimming this down to only the bare essentials and maybe even rearranging the features to be more intuitive, the FCKEditor can make content administration a breeze for your editors and you as the administrator can sleep easy at night knowing Smileys won't be showing up on your content.

To see my prefered toolbar in action download my preferred version of the DNNDefault toolbar (a txt file to allow you to paste into your fckconfig.js).

Use Only the Style List and Clean it Up

From a training standpoint the Style and Format lists are hard to differentiate. To a basic content administrator it is a list of ways to change the text. In reality the Format list applies different semantic markup options to the text and the Style list applies a mix of markup tags and inline styles. If you’re like me, giving users the ability to apply inline styles really gets your goat.

Solution: give the end user only one list to pick from and be very prescriptive about the options available to pick. To do this, you’ll want to clean up the list of styles offered by the FCK Editor

How: There are two steps to cleaning up the styles list. First, we need to get rid of “Red Title.” Why would anyone use this? Gross. To get rid of “Red Title” we need to delete a few lines of code from the file we were already editing for the toolbar (fckconfig.js)

FCKConfig.CustomStyles =
{
	'Red Title'	: { Element : 'h3', Styles : { 'color' : 'Red' } }
};

Just kill this code completely. Next, we’ll create a list of styles we do want to include for users to apply different styles to the content. Since we removed the Format list from the toolbar, we can incorporate the standard headings and any other semantic markup into the list of styles and remove the elements that produce inline styles. To edit the styles list, locate the file titled fckstyles.xml. This file is located here: [root]\Providers\HtmlEditorProviders\Fck\FCKeditor.

My approach is to typically comment out the section titled “Inline Styles” and then enable the “Block Styles.” I also like to move the paragraph to the top of the list. Click here for example of my fckstyles.xml file.

Obviously, there is a lot of personal preference to how content administrators should manage the content on your site. I like to be prescriptive and shepherd my content editors toward semantic markup. If you have other suggestions, let me know.

Integrating DNN Search with Google Site Search

It's no secret that DotNetNuke's core search leaves a lot to be desired. When implementing DNN sites or any site for that matter, search is typically a top requirement. To be perfectly honest, I have conveniently tried to leave off search functions from design comps or implementation plans because I dread the discussion that much (my conscience typically gets the better of me and we find a solution).

For more info on how the core search works check out this blog entry on DNN core search by Chris Hammond.

Well, I have found a solution that I'm pretty happy with and can confidently recommend as an implementation approach for DotNetNuke implementations - integrate a Google Site Search account with the core DNN skin object.

How is it done?

First, the core search token has a lesser known attribute UseWebForSite that allows you to integrate the core search token with your unique identifier with Google Site Search.

Setup Steps

  1. Create a custom search engine with Google Site Search. With the Site Search created, go to the Advanced section of the Control Panel for your custom search and grab the unique identifier (in a section titled “Advanced presentation using the Custom Search Element”)
  2. Add the search token to your skin and define UseWebForSite as “True” (see below). You can either do this through your HTML skin’s accompanying XML file or directly in the ASCX.
  3. Modify the resource file for the core search. You can reference the file directly from the file system (\admin\Skins\App_LocalResources), but it is better to go in through the Language Editor as a site administrator and modifying the Search.ascx.resx for just your portal (in case you have multiple sites in your instance of DNN).
  4. There is a field titled URL.Text. In this field, you can modify the existing URL to include the unique identifier for your custom search. The default uses the DNN project ID and should be something like: http://www.google.com/custom?hl=en&client=pub-9770992166002654&sitesearch=[DOMAIN]&q=[TEXT]

One thing to note is that I ran into some issues with the default URL in the resx file. So instead of modifying the existing URL, I went into my custom search engine home (with Google) and tested the search there. Then I took the URL created by Google and replace the search input with [TEXT]. This accomplishes the same result. Example: http://www.google.com/cse?cx=005560045880849113066:aqsy2ovgo00&ie=UTF-8&q=test&sa=Search and replaced q=test with q=[TEXT]

Other Notes

  • The search launches the results in a separate window and some browsers will block this as a pop-up.
  • The results can be styled using the Control Panel (Look & Feel) in Google Custom Search
  • The results you get are the results Google indexes. So if you don’t like your Google results, you won’t like your Google Custom Search results.

Embedding SWF in HTML

We don't develop Flash at Engage, but we do implement it a lot in websites we develop. As a result, I am frequently hunting down the best way to implement flash in DNN.

I had an example of the HTML saved on my desktop because I was referencing it so frequently, but I realized that's a good way to get set in old ways. I'm creating this blog post as a repository for references I use to find the latest in embedding Flash (swf) in HTML.

First, is the <swfobject> project. The swfobject project maintains a small javascript file used to detect flash and embeds the Flash file (swf).

The second resource is a generator for the HTML using the swfobject.

If you know of better, easier, more effective, fool-proof, ways - let me know. For now this is the way I follow.

Stubbing out Site Navigation

I came across jumpchart.com the other day. The site explains how important it is to clearly articulate the proposed site map or information architecture for sites you're developing.

As a project manager, I'm all for process and looking for better ways to communicate the scope and ideas for a project; but seeing this site made me appreciate the value of a content management system like DNN.

Stubbing Out Pages in DotNetNuke

The ability to easily add pages to your site map, move them as sub pages and re-order your page structure is all out-of-the-box functionality in DNN. There's no need for a stubbed in page structure because the cost of misplacing or incorrectly organizing pages can be easily remedied with a few clicks of the mouse.

Today's Learning - FATA and Logoff

One of my career mission statements is to learn something every day. One of the reasons I started this blog is to supplement my faulty memory by giving me a place to document things I pickup, observe, and muse about on a semi-irregular basis.

I figure, why not make an effort to document some of the small learnings from each day in my blog. At the very least it will help me to retain these learnings. Maybe someone else will learn from me. Most likely, I'll come back to these posts because a month later I'll blank on something I know I should know.

Today, I have two take-aways that are totally unrelated.

1. FATA  is different than Fatah. Wow, this really helps me sort things out. I never realized FATA was a separate entity from Fatah.

An really FATA is not an entity. Its an acronym (Federally Administered Tribal Areas). An article on Morning Edition helped clarify this for me today. FATA is basically out of the Pakistani government's control. The area borders Afghanistan and is home to the Pashtun people.

Fatah is a Palestinian political faction of the Palestinian Liberation Organization (PLO). Without going through all details of the Palestinian-Israeli conflict I guess I'll just list out the keywords for future recall - Fatah's adversary is Hamas (to be black and white), Yasser Arafat, West Bank. This doesn't do the depth and complexity of the Palestinian-Israeli conflict, but that's not the point of my learning today.

2. Not really a learning, but more of a different way to thing about things. When login is constrained to a small number of users I typically recommend removing the Login skin object fron the skin in DNN and just use ?ctl=login. Today, I learned about using the login skin object in the Control Panel. By adding the following code to the control panels user control you can incorporate the logoff link in the control panel.

<%@ Control language="vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.ControlPanels.IconBar" CodeFile="IconBar.ascx.vb" >

Additionally, you'll need to add the skin object for login to the user control after registering the control with the Control Panel. So include the following in your markup.

<dnn:login runat="server" id="dnnLOGIN">

Another way to do this would be to include the login control in the skin but surround it with code to make the control only visible to specific user roles (Registered Users orin the case below Administrators). Again the control will need to be registered in your skin files.

<%if (DotNetNuke.Security.PortalSecurity.IsInRole(DotNetNuke.Common.Globals.GetPortalSettings().AdministratorRoleName)){%>
<dnn:login runat="server" id="dnnLOGIN">
<% } %>

Finally, you can use the boring ?ctl=logoff, but that wouldn't be as much fun.

React, Respond, Initiate

I would contribute the control freak in me to a strong ego. I'm neither ashamed nor proud of this connection. My ego has motivated me to do work in which I'm proud, but wouldn't it be nice to think I did these things purely altruistically? Wouldn't it be nice to think I take an interest in things because I'm genuinely interested and not interested in having my way?

The answer is yes, but I'd be fooling myself to think my drive, direction, and motivation on a day-to-day basis is driven by some innate sense of enlightenment. There are glimmers of passion mixed in, but at its core is most likely control.

So back to the title of this entry - React, Respond, Initiate. There is a post by Seth which I find myself thinking about a bit frequently. The thesis revolves around the thought,

When you react to a medication, that's a bad thing. When you respond to treatment, that's a plus.

Responding is better than reacting, but above both is initiating. Yesterday, Dang launched Engage's new look website. I love the initiative he took to consolidate our two sites, merge the business units (our services and our products), and totally consolidate the site structure. The design is beautiful and the execution is fantastic.

As I look at the site, I'm tempted to react and try to put in my two cents. Sure, there are things that can be improved, but this is the gear that keeps business moving. It would be easy to immediate use these as a way to inject input. But by doing this and trying to control things I would lose the real feat in front of me. Why would I dwell on these issues at all when I should be rejoicing in Dang's initiative?

His initiative took vision, courage, and execution. My reaction took nothing. That's my take away. On a daily basis, find more opportunities to take pause before I react and let the controller in me lead. Acknowledge the feats of others before I look for my way into the mix.

FCK Editor Adds Lines in DNN 4.9

The FCK Editor adds a <p>&#160;</p> by default which causes some unexpected spacing in your HTML. 

The place I am most frustrated with this issue is in Dynamic Forms. No knock on DataSprings modules. It isn't their issue, but the spacing issues are most noticable in these modules because the header and footer from each field in the form has a p-tag surrounding each field. If you have margin or padding on your paragraph tags, then the fields go crazy.

I have two solutions to the issue.

Short-term resolution for Dynamic Forms. I've already experienced the issue and I just want to clean it up.

Update {objectQualifier}DynamicForms_Question Set QuestionHeader = '', QuestionFooter = ''

Intermediate resolution is to modify the config of the FCK editor

In the file Providers\HtmlEditorProviders\Fck\Custom\fckconfig.js

Change FCKConfig.FillEmptyBlocks = true; TO  ;FCKConfig.FillEmptyBlock; = false;

Calendar in Out of Office: Outlook

I would lable myself a bit of a Microsoft Office nerd. I really like finding news ways to overcomplicate the way I use Outlook, Excel, Word, and PowerPoint.

Today, I found a post by the product managers for Outlook on how to incorporate a visual indication of when you'll be out of office in your auto out of office response.

This blog is often a rant, sometimes a reflection, and occasionally a way for me to remember cool things so I can search my own blog rather than redoing the searches I've done in the past.

I'm going to outline the process for including a mini calendar in out of office messages because I find myself overcomplicating the message I use each time I got out of the office. Should it be "returning on Monday, December 29th" or "I'll be out until the Friday, December 26th and assume they know I'll be back on Monday"

So here's what I'm going to do when I go out of the office for my trip to Cancun over New Years.

  1. Act as though I'm sending my calendar in an email by right clicking on my calendar title and selecting "Send via Email..."
    Send Calendar vis Email
  2. Select the date range for which I'll be out of the office. This way the dates will be highlighted in the HTML calendar created.
    Calendar HTML
  3. Copy the calendar created in the body of the email
  4. Past this calendar into my out of office message

 

Giving your Ideas Traction

Don't you just hate it when you see something in the news, in a blog, or on TV that makes you go, "Hey, that's my idea!"?

To take it a step further, there are books I've read or blog I follow which make me nod my head in agreement the entire time I'm reading their work. At the end of the book or article I find myself saying, "Damn, I've been thinking the same thing for a while, but why couldn't I articulate that thought like she did."

Today, Seth wrote an article about the difference between having ideas and selling ideas. This same idea is the thing I would call "getting traction." It happens in big ways and in small ways on a daily basis. "Who wants to go to Panera for lunch?" "We really need an easier way to handle support tickets." It seems the same people who can get traction for the small things (deciding where to go for lunch), also gain traction for the bigger changes in life and work.

My friend, Alan, seems to consistently amaze me with the way he is able to be the opinion leader in any group with which he's affiliated. To those defensive or jealous, it can seem like he's good at politicking. playing the game, or manipulating.

Some of these may factor in to his success at gaining traction, but the real sources of his traction, and anyone's traction, are:

  • Understanding your own vision
  • Being convinced of your vision
  • Realizing the benefits to others
  • Empathizes the concerns of those affected by your ideas
  • Doing the work

The last item is the most important and it is the most challenging part because each of the bullet points above "takes work." The mental work of doing your due diligence and thinking through your ideas takes work. 

I find myself losing sight of these traction builders. "I sent an email... I put together a presentation... I told him about my idea." These things don't take work, they are tasks, but aren't the actual heavy lifting to giving your ideas traction.

Web 2.0 Project Management Tools Review

What makes a good project management tool? A project management tool should have the ability to:

  1. Plan the work
  2. Track the work
  3. Complete the work
  4. Report on the work

The issue with most of the tools I've used in the past has been that when the tool isn't easy, it isn't used. The tool needs to support both the methodology of the project as well as support the team members on the project. If the tool interferes with  progress, the tool becomes a burden rather than a tool. If you have to carry around a sledge hammer to pound nails into a board, you're going to avoid pounding nails. 

Here are some of the details for my idea of the holy grail of project management tools.

  1. Manager can assign work to team members.
  2. Team members can create their own work lists or to-do lists to accomplish a task.
  3. Team members tie their time back to tasks.
  4. Team members can track both billable and non-billable work without creating non-billable buckets for time.
  5. Estimate work for each task and define timelines and budgets
  6. Report on time by task, totaled by project, totaled by customer, totaled by team member
  7. Report progress on a project by reviewing completed tasks over a time period (the past week, or the past month).

I'm in the process of reviewing a number of "Web 2.0" applications. I'll use this blog post to document my thoughts on each.

ClockingIT: http://www.clockingit.com/

  • Cost: free (For now)
  • Hosted or Installed (under the MIT/X Consortium License)
  • Allows for Clients>Projects>Milestones>Tasks>To-dos
    • I like this level of hierarchy
  • Can track time directly to a task - both with a stopwatch and retrospectively in blocks of time
    • Time tracked to tasks which are tied to projects
  • Does not allow you to mark time as non-billable
  • Allows you to report
    • Timesheets - by client, project and/or user
  • Export task lists, and time logs to CSV
  • Lots of custom reports, custom views, custom dashboards

BaseCamp: http://www.basecamphq.com/index

  • Cost: $149/mo to get time tracking and unlimited projects/users/clients
  • Hosted
  • Allows for Clients>Projects>Milstones>To-dos
    • To do lists make up tasks for a project
  • The organization of projects by Client looks cleaner than ClockingIT
  • Time Tracking can be tied to to-do items or jsut as a log
    • I don't like that the time is separate from the work defined in planning a project
  • Report on time by project or by user over timelines. Can you report by client?
  • Can export time to CSV
  • More based on projects - overview, messages, to-dos, milestones, time are all contained in a single project. This is good because it prevents the lure of "multi-tasking"

ActiveCollab: http://www.activecollab.com/features/

  • Cost: $399 perpetual
  • Installed - PHP, MySQL
  • Time tracking - billable and non-billable and tied to a project
  • Each project consists of checklists which are made of tasks.
  • Time can be logged to a task in a check list
  • Time can be marked as billed if you're using the tool with invoicing
  • Heavily AJAXy and in Chrome some of the buttons don't line up - this adds to the overall feel which I just don't like as much as the other systems

Tick: http://www.tickspot.com/

  • Cost: $79/month
  • Hosted
  • Primarily a time tracking function
  • Allows you to set budgets in time or $$ (with $$ tied to users' hourly rate)
  • Integrates with Basecamp to accomplish more project management functions

Freckle: http://letsfreckle.com/

  • Cost: $98/month - 25 users
  • Hosted
  • The tour is a little limited, but it looks primarily geared toward logging time to a project.
  • Can easily capture unbillable time by adding an * to each entry
  • Strightforward and simple UI - How long, for whom, doing what...
  • Con configure budgets for projects

Microsoft Office Enterprise Project Management 2007

  • Reviewing the Project Web Access
  • The demo I signed up for was too bug-ridden to evaluate the software. I think this is definately the sledge hammer of Project Management tools
  • One thing I did love about this is the project manager can define and schedule status report that are collected by the Project Web Access

Career Mission Statement

I like to express my mission statement as a series of tag lines I hope to achieve on a daily basis. By striving for these small goals each day, I hope they incrementally amass to something successful and something in which I can take pride.

Do my best every day; have fun; make money for myself, and my co-workers; learn something every day; overcommunicate; exceed expectations; think critically; be fair; be honest; be smart and get smarter; take pride in my work.