Tania

Holly-Daze at Delphic Sage

Dec
24
2009
by Tania

Happy Holidays from Delphic Sage!

The Delphic Sage Elves have been busy this holiday season...for the past few weeks we have been collecting gifts for the Greater Phila Cares Adopt-A-Family program.

There is a load of great video content out there for Umbraco developers on umbraco.tv, but I have found that good user tutorials are somewhat lacking. So, for the sake of our clients that are umbraco users (and for the sake of umbraco users everywhere) I decided to slap together a quick rundown of how umbraco can be used to manange and maintain a web site. There is much more to Umbraco, what is depicted is really just a first taste.

A Little Background

Umbraco is full featured, open source content manangement system that has been gaining much traction recently. One of the reasons for this is that Microsoft has recently added it to it's Web Platform Installer that ships with IIS 7. Another reason is that it is a great, highly scalable CMS! The website that I use to demo the funtionality is the Creative Website Starter created by Sam Grady and Warren Buckley.

NOTE: These videos are best watched using the HD option and in full screen mode.

Part 1 of 3 - Managing Content

Parts 2 and 3 appear after the jump.

Have you ever seen ?? in c# code? The first time you saw it, was your initial reaction "??"? The ??-operator was added in c# 2.0 and as the documentation says, "The ?? operator returns the left-hand operand if it is not null, or else it returns the right operand." If you're like me, you don't like there to be too much syntax (and especially characters) in your language that is esoteric in its meaning (personally, I still prefer java's "implement" and "extends" keywords over the c++/c# syntax of ":" for inheritence and implementation of interfaces).

Though I must include the disclaimer, there are degrees of how much I'm of the opinion. Maybe it's just years of familiarity, but having some type of character, such as a semi-colon, terminating a line does not seem impractical. And the lambda expression syntax introduced in c# 3.x does provide a lightweight syntax for creating simple anonymous delegates that is really convenient.

The ??-operator, however, does not really yield any new functionality and it can be mimiced relatively easily with a method/function. In T-SQL/Sql Server, there is one already called ISNULL. The usage of such an implementation would not be too much. Admittedly, this entire (belated) complaint is a small quibble on my part, like preferring people to use the Nullable struct instead of int?, but still.

 

At Delphic Sage, we love using Basecamp as our central communications hub between our staff and our clients. It's simple and easy to use, and has a permissions model that makes it well suited as a client portal. However, Basecamp lacks the granularity to be used for actual project/task management which is why we use a different system internally. One of the pain points for our project management team is that they often have to take messages or to-do items from clients out of Basecamp and copy them to our internal solution manually. After reading a bit about the Basecamp REST API, we devised a fairly clever way to make this happen more easily without subjecting/exposing our clients to the minutia of our internal task system.

Some Requirements

1. It needs to be quick and easy to selectively create a new intranet task based on a client entered To-Do item or message in Basecamp.
2. It needs to be easy to jump back and forth between the Internal Task and the Basecamp To-Do
3. The Client should not be exposed to the internal workflow / comments

The Solution

1. We used the BaseCamp API to allow project managers to simply create a new task based on the basecamp URL of an existing To-Do Item. Once the task was created, we prepended the To-Do in back camp with the intranet Task #.
2. We used a GreaseMonkey Script with JQuery to Link all task #s on BaseCamp To-Dos to the corresponding Intranet Task.
3. Since our clients will not have the Greasmonkey script, they will only see that there is a task number, indicating that the Basecamp To-Do has been escalated to an internal Task.

Read on for the step by step analysis...

What were once known as "Cellphones" have come a long way in the last few years, and now we are in the midst of a "Mobile Device" or "Handset" revolution. Since the iPhone came out in 2007, phone manufacturers have been forced to step up their game and take things to the next level. When you add in new offerings in the form of Google's Android, Microsoft Windows Mobile 6.5 and the Palm's WebOS we finally have plenty of good mobile OS options, and the consumer is benefiting from competition with more features and lower prices (if only the service providers would follow suit). If you don't already have a smart phone, chances are that you are planning to get one when your contract is up. For those of us in the industry,  this is the transition to the time where the mobile website will not be just an afterthought, but in some cases may be even more mission critical than the traditional web site. This brings up a whole new set of challenges and concerns for the strategy and planning of a web presence.