Lambda Expressions via msdn.com:

A lambda expression is an anonymous function that can contain expressions and statements, and can be used to create delegates or expression tree types. All lambda expressions use the lambda operator =>, which is read as "goes to". The left side of the lambda operator specifies the input parameters (if any) and the right side holds the expression or statement block. The lambda expression x => x * x is read "x goes to x times x."

> more

Overview of Lambda Expressions

One of the new .NET 3.x language features that we have been enjoying recently is Lambda Expressions. These expressions are essentially the next iteration of the anonymous methods that were offered with .NET 2.0, with one of the major differences being the simplicity with which you can construct inline methods. When used appropriately, these Lambda Expressions let us get more done with less code and less redundancy.

Lambda Expressions In Practice

Let's say you run into a situation in which you want to write a method that takes as an argument an object of a particular type and a property on the object you want to work with. For example if we take the example below and want to make the redundant parts (in blue text) a shared method, except the different property (in red text) being used is potentially holding us up. (Continue reading for example code).

There are many options out there that allow us to graphically visualize various types of data. Flash based charts, which generally deliver the best interactive experience, are difficult to integrate, debug and maintain since flash is a highly proprietary technology. Then there are clunky client based Java applets and Active X, which for the most part have dissappeared in the age of web 2.0. Finally, we have used various server side components that generate beautiful images that are returned to client's browser. They are lightweight and look good, but offer little in terms of interactivity. This has led us to try a different approach, why not try to build charts with CSS, Javascript, and XHTML? We took a few days to cook up this little proof of concept that should pave the way for us to offer this technology in many of our solutions. Plus, we have links to a demo and downloadable source code package for you to check it out for your self. We'd love to hear any feedback or ideas! Stay tuned for part 2 which may include a .NET server control to encapsulate this control.

The DHTML Gantt Chart control allows you to use JavaScript to create interactive Gantt Charts. Since it is written entirely in JavaScript it does not require Flash, Java, or any other plug-in. The code to create and initialize the chart can easily be generated by a server-side script making it very simple to dynamically generate charts. Since the tasks are created in JavaScript the chart can be built at run-time from user input.

Click here to download all of the files you will need to include DHTML Gantt Charts on your web site.

What does the chart control do?

The Gantt Chart control takes a list of tasks and organizes them in a graphical display. Each task has a duration (in days) and a list of prerequisite tasks. From this information, the chart control schedules each task and displays a graphical representation of the project's timeline. The scheduling process knows to skip weekends. No task will begin on a weekend and weekend days will not count towards the completion of a task.

For example, let's come up with some theorhetical tasks and durations that one would use to cook up a demo such as this one:

  • Design Gantt chart control (2 days).
  • Code the control (3 days).
  • Document how the control is used (2 days).
  • Clean up code, fix problems & browser compatibility issues (1 day).
  • Describe the control and its purpose (1 day).
  • Format the blog post (1 day).
  • Design must be done before coding.
  • Design must be done before describing the control's purpose.
  • Writing the code must be done before cleaning up the code.
  • Writing the code must be done before documenting the control.
  • Describing the control and documenting its features must be done before formatting the blog post.
  • Work will begin on May 15, 2008.

The chart displays the given information, but by scheduling the tasks it also displays the starting and ending date for each task. From this, the chart also knows the ending date of the entire project. While its not hard to figure these things out yourself for a small project, its easy to see how this control can save lots of time when planning larger projects.

More after the jump....

Choosing A Content Management System

Assessing how much functionality you need today and in the future is a good place to begin. Like Microsoft Office, most people only use a small amount of the offered functionality. Complicated features can leave many users feeling overwhelmed. While this may not always be the case, it is important to assess your immediate and long-term needs with the end user in mind.

Factors for Choosing the Right CMS

  • What kind of permissions, workflow and versioning will you need
  • What functionality is required - product catalog, eCommerce, partner extranet, reporting, etc.
  • What other systems does it need to connect to - CRM, accounting, ERP
  • Is it likely to scale and extend
  • What technologies align with your organization
  • What is the computer skill level of your admin users
  • How many sites will you be supporting with the CMS
  • What sort of localization features will you require
  • What resources will build and support the site - are they one in the same

Choosing the right interactive agency can be a daunting process. Having been on both sides of the table and in this business for close to 15 (yikes!) years, I've been through the process too many times to count. So, if I were in your shoes, here's what I would do to find the perfect interactive agency.

Scoping Your Project

Any process needs to begin with some background work on your end. Give some serious thought to these items:

  • Business goals of this project - why are you doing it, what do you hope to get in return
  • Target markets and audience - who are you serving, what are their motivators and fears
  • Functional requirements - what do I need the site to do (content management, eCommerce, extranet)
  • Visual design and branding guidelines - desired look, feel and tone
  • Technical architecture - are there required languages, databases and systems integration
  • Pricing and milestones - what's my budget, do I need it to be delivered in a certain time frame