Sunday, November 15, 2009

My old URL is now obsolete

Before Yahoo Mail became a big deal, it didn’t have its own URL (its currently mail.yahoo.com).  The URL was www.yahoo.com/r/m1.  This URL hasn’t been promoted or used for about 10 years now but it still worked.  My brain’s automatic typing reflexes simply remember that URL as a habit.

As of this week, it finally died!  Now when I without thinking type www.yahoo.com/r/m1 I get this error message:

image

I guess it will take me a while to remember mail.yahoo.com as a replacement…

Tuesday, July 14, 2009

New Details on SharePoint 2010 from Microsoft

Microsoft has released a new site on SharePoint 2010.

In the site, you will find information on SharePoint 2010 for developers and it professionals.

There are some interesting announcements in video format here that are worth exploring.   In the developer video, they show SharePoint integration into Visual Studio 2010.  There are a few new bits in here:

  • Manifest editing tools in Visual Studio
  • Solution Package Designer in Visual Studio
  • New web part editor for Visual Studio
  • LINQ will now support SharePoint lists. 
  • Developer Dashboard will help by providing diagnostic information when developing web parts in SharePoint.

Wednesday, July 8, 2009

Will Google Chrome OS Be Any Different than LINUX, BEOS, Network Computer, etc.?

It was widely announced that Google will be releasing a new operating system called the Chrome OS that will be initially deployed to NetBooks but will hopefully compete with Windows on the desktop.

Yawn…shades of 1995 when Java OS, Oracle OS, Network Computer etc. tried to do the same thing.

If you want a OS replacement for Windows on your NetBook, you can get it today – its called LINUX!  Acer, Dell, etc. all have Net Books that will come with LINUX today.  And if you want to run Google’s browser, you can download it for free.

Can you even call Chrome OS a new operating system when you’re just repackaging LINUX?  KDE and GNOME aren’t operating systems, so why is Chrome? 

"The operating systems that browsers run on were designed in an era where there was no Web," the blog post said. "So today, we're announcing a new project that's a natural extension of Google Chrome--the Google Chrome Operating System. It's our attempt to rethink what operating systems should be."

Huh?  Windows Vista, Windows XP, Mac OS, and LINUX were all designed with the web in mind. 

COREL had the same vision in mind when they created COREL LINUX.  They had WordPerfect, CorelDraw, etc. (even at the time much more sophisticated applications than Google Spreadsheet is today) and they couldn’t sell any more office licenses because Microsoft had a lock on the desktop and was killing them in the office market.  So they made a big splash (and almost killed the company) investing heavily in desktop LINUX, the supposedly Windows killer. 

BE Operating System was an entirely new OS developed in 1991.  Unlike the Chrome OS or Corel, it wasn’t a rehash of LINUX with a new set of apps thrown on top of it.  It was an entirely brand new operating system from the kernel upwards.  It had the same ambitious target – replace Windows with a better operating system.  It had a niche following originally as a replacement to the Apple Operating System (since the BE OS initially only ran on Power PC Chips and not Intel) and then as a Windows replacement.   The company could not gain enough market share and eventually was bought out by Palm.

BeOS_Desktop

The same reasons why these operating systems didn’t survive will cause major challenges for Google.  I found this table from Microsoft to challenge the proposition of the Network Computer:

  PC Network Computer
Operating System Windows Proprietary / Incompatible
Mobile Support Excellent None
Applications > 100,000 Limited / Incompatible
Development Tools Choice Limited to Java
Device Support Thousands Proprietary / Incompatible
Device Model Windows None / Incompatible
Manufacturers 2,500 Few
Networking Choice Requires high speed net
Availability Now Limited
Printer Support Thousands None
Scalability Excellent Poor

With using LINUX, Google can solve some of these issues (scalability for example).  But even OS X for example has less third party support than Windows and far less partners and applications and it is fairly mature.  Google will have none of these advantages.

Sunday, July 5, 2009

Challenges with Sharing Excel Workbooks in SharePoint

In Excel 2007 (and 2003), you can share a workbook.  This allows users to simultaneously update the same file:

ZA100986151033

This feature is used in many enterprises for collaboration, especially in departments such as Finance or Planning where there are lots of shared figures, budgets, plans, etc.

There are some interesting features that allow for some rich collaboration scenarios simply within a single Excel file:

  • Each time that you save the shared workbook, you are prompted with the changes that other users have saved since the last time that you saved the shared workbook. If you want to keep the shared workbook open to monitor progress, Excel can update you with the changes automatically, at timed intervals that you specify, with or without saving the workbook yourself.
  • When you save changes to a shared workbook, another person who is editing the workbook might have saved changes to the same cells. In this case, the changes conflict, and you are prompted with a conflict resolution dialog box so that you can choose which changes to keep

When moving to SharePoint as a document management platform, this feature is no longer supported:

More than one user cannot simultaneously make changes to a shared workbook that is stored on a Windows SharePoint Services 3.0 site. If you want to store your workbook on a Windows SharePoint Services 3.0 site, you should do so only after the collaboration effort through sharing is complete.

Document libraries by design only allow one person to edit a document at the same time.  In addition, they support check-in and out to provide locks on documents during the editing process.  When a user grabs a file for editing from SharePoint, they edit a file on their local machine and then when done it is saved back to the central document repository. 

Excel Services allows for running of Excel files within the SharePoint server, but only in read only fashion.  Excel Services is great for read only dashboards, charts and graphs but isn’t a collaboration service.

For more information on the different options for Excel collaboration, see Microsoft’s article on the subject.

Sunday, June 28, 2009

Bad Search Synonyms

I was on TheServerSide.NET which is one of the leading Microsoft .NET community sites and typed in “SharePoint”.  The result I got was this:

ScreenHunter_01 Jun. 28 09.11

I thought that was kind of amusing, so I tried a few other Microsoft product names:

ScreenHunter_02 Jun. 28 09.12

ScreenHunter_03 Jun. 28 09.12

ScreenHunter_04 Jun. 28 09.14

Wednesday, June 17, 2009

What We Know About SharePoint 2010

Based on the various blog posts and articles, here is what we know from the publically available information on SharePoint 2010:

This is just a preliminary list – Microsoft will be publishing more information when the public beta is released this summer.   Stay tuned as more details about the next release comes out.

Friday, June 12, 2009

How to Use Microsoft Project: Fixed Cost

One of my colleagues ran into a major Project usability problem when he started filling in the cost column manually.  He actually did it by right clicking on a cell in the cost column and selecting “fill down” which he thought might like in excel just copy the formula.  In Project, this copies values and overrides the calculations normally done, e.g. cost = rate * number of hours.

Here is what Project assumes when you type in a cost into the Cost Column:

1. Normally, the cost column is calculated based on the rate (in this example $100 / hr) * the number of hours.

ScreenHunter_01 Jun. 12 08.03

2. If I type in a number into the cost column, I can replace the calculated cost with a new cost – in this case, I have specified it to be $1200.

ScreenHunter_02 Jun. 12 08.05

3. Project takes the cost I typed in and calculates the DIFFERENCE between takes the original calculated cost and what I typed in as a FIXED cost, e.g. in this case $400.  If you insert the Fixed Cost Column, you will see this value.

ScreenHunter_03 Jun. 12 08.08

4. If you do not understand what Project has done, it becomes really confusing as to how to get rid of the fixed cost.  Simply changing the duration or hours doesn’t remove the cost.  For example, if I change the duration to 2 days it doesn’t recalculate the cost to be $1600 – it keeps the $400 in fixed cost and makes the total cost $2000.

ScreenHunter_04 Jun. 12 08.09

5. If you have added a fixed cost my mistake, the simple way to fix the problem is to set the fix cost to $0.00 manually.  This resets to the default behaviour and now your cost is calculated normally.  See below – now that I have changed the fixed cost to $0 I can easily change the duration and the cost is calculated correctly.

ScreenHunter_05 Jun. 12 08.11  

I have been using Microsoft Project for ages and didn’t know this behaviour existed.   I found this problem because one of my colleagues was not an experience Project user and started filling in values like in Excel.  However, this is nothing in Project that warns you or points you to the solution – it took me digging through help and google to figure it out.

If you are new to Project, keep this simple lesson learned in mind – do not manually change the cost column.  Let Project always calculate it for you.  If you have a specific fixed cost for a task, then insert the Fixed Cost column and type it in there.  This will avoid a lot of confusion.

Thursday, June 11, 2009

Yet Another Facebook Bug

I have posted previously on bugs in Facebook, and I ran into another one just this morning.

Facebook has a friend suggestion feature that lists people who you might know based on how close they are to your existing friends.  It’s a great way to find people but I found a bug in it.  It presents you a list of potential friends and for each one there is a little X that you can click to take the person off the list (e.g. it was a bad suggestion and you don’t know them).  Here is the bug: if Facebook runs out of further suggestion, only the text disappears and the picture stays behind.  ScreenHunter_01 Jun. 11 08.20

If you go back to the home and come back in, the whole lists resets and the problem goes away.

Sunday, June 7, 2009

SharePoint vs. Confluence Comparison

I was at a client site this week and they currently have Confluence and are moving to SharePoint 2007 and wanted to understand the differences between the two products.  I have personally implemented both products in different environments and like both of them.  Each as its strengths and weaknesses.

Here is a side by side comparison:

  Confluence SharePoint 2007
Company

Made by Atlassian in Australia.   In my experience, Atlassian has wicked customer service, a great support network, etc.

Made by Microsoft.  SharePoint is one of Microsoft’s most successful products and Microsoft has made a major commitment to the product.  Support in my experience is standard product support but doesn’t have the tender love and care you get from Atlassian staff.
Consulting Support Limited, but in some markets quite good.  Look for open-source experts as Atlassian has strong ties to the open source community.  The software itself is Java based. Huge consulting market from small shops to major consulting companies such as Accenture.  One of the major pluses of the platform is the talent pool to help implement and configure it.
Price Free if you are a non-profit company and you ask them nicely.  Server license is available ranging from $800-12000 depending on number of users. Pricing starts at about $5000 but for intranet cost is per named user at about $75-94 a user.  200 users would cost about $20,000 vs. about $4,000 for confluence.
Search Good with confluence content and Microsoft documents.  No federated search model included.  Did you mean feature allows for synonym searches. Enterprise level search engine with relevance ranking, synonyms, large scale searches (up to 500,000 documents easily and up to 50 million in theory), and federation model.  Out of the box search can index other web sites, file servers, etc. and plugins through third party products can index other systems such as OpenText, Oracle, SAP, etc.
Look and feel customization If you’re changing the logo or basic colours you’re fine.  If you want to create a whole new interface, you will find it a challenge.  Confluence uses SiteMesh templates which are a set of XML/HTML files that need to be customized directly.   In my direct experience (and I have done lots of HTML editing), wading through the library of templates is not a trivial undertaking. SharePoint supports customization at multiple levels through separation of layout, look and feel, and master pages.  SharePoint Designer is provided as a GUI based tool for creating new themes as well.  Template system is significantly simpler than Confluence in my experience to customize.
WIKI Stronger than SharePoint in supporting WIKI mark-up.  Rich text editor is not bad but not as strong as SharePoint. WIKI template provided as a site template.  WIKI mark-up is limited to embedding links in text, but rich text editor make WIKI mark-up less needed in most cases. 
Security LDAP based.  Authorization model is 100% stored in Confluence, so groups need to managed within the product.  Single Sign On is not provided. SharePoint is Active Directory based by default.    Single Sign On is provided with Windows using Internet Explorer – users already logged into Windows are automatically logged into SharePoint.  Groups in SharePoint can map to Active Directory groups which makes management somewhat easier than Confluence.
Web Parts Confluence supports a plugin model and there are some available.  Product availability is small in comparison to the third party web part market for SharePoint. Long list of web parts are supplied out of the box for SharePoint.  Massive third party market for Web Parts including integration with major vendors such Oracle, SAP, OpenText, etc.  Web Parts can be easily built in .NET if custom parts are required.
Document Management Version control, linking and embeddable.  However, there is no check-in/out, content types, workflow, etc.  Much stronger in SharePoint including features such as check-in/out, content types, meta-data, integration with Office 2007, workflow, authorization models, etc. that are typical of an enterprise document management system.
Integration with Office No support. Very strong integration as long as you’re on Office 2007.
Other Features Blogs, discussion forums, etc. are provided. Too many features to name, but SharePoint is an enterprise portal with dozens of additional features including: reporting integration, dashboards, dozens of web parts, workflow, forms server,  etc.  See this link for a complete list of features.

Comparing the two products is a bit of an apples to orange comparison because the markets for each are quite different.  Confluence is primarily a collaboration tool for small to medium size enterprises.  SharePoint is an enterprise portal that includes collaboration but also dozens of other portal features.  

In my direct experience, SharePoint is more user friendly for end-users – creating pages, changing content, managing documents seems to be more intuitive than in Confluence.  If you’re a power WIKI user then its less of an issue but I handed it to an HR department and found they struggled with it.  SharePoint requires a lot of pre-configuration to get it right but if its set up right I find the adoption tends to be easier.

If you really want a strong WIKI collaboration tool and don’t have much money then Confluence is a very good product.  The support you will get from Atlassian is awesome and they are constantly improving it.  However, if you’re looking at enterprise collaboration, document management, search, etc. then in my experience you may be looking at an upgrade to SharePoint in the long run as your user base becomes more sophisticated.

Friday, May 22, 2009

White House Data Feeds are Baby Steps

The White House announced to great fan fare that it would be releasing data feeds of its public information collected by hundreds of agencies within the US government.  They have launched the first iteration of this service.

ScreenHunter_02 May. 22 09.10

My interest in this feed is to use this data to build mash-ups, visualization applications, and web applications that use this data.  There are many such applications that use existing data feeds such as Amazon data, Google Maps data, Microsoft Live data, etc. in interesting ways.   Amazon in particular has had an XML based REST API available for years (in fact Amazon sells a book on how to use it)  For example, Frucall provides a mobile comparison application that uses a variety of publically available APIs to compare products across retailers and present them to your mobile device. 

So with hundreds of data feeds, imagine the visualization, comparison, calculation and searching applications that could be built on US government data.  As well, imagine then directing these applications to mobile devices, XBOX 360, IPhones, Blackberries, etc.  in formats that work ideally for those platforms.

Unfortunately, based on what has been launched, this vision is not really feasible.  Here is what I can see from what is currently available:

  • There are only about 50 data feeds.  Given the number of US agencies, this is a very small sample of the data available.
  • The site provides data in a variety of formats such as XML, CSV, KML (google earth) and ESRI (GIS data).  The feed that would be useful for apps is the XML feed, as explained by their own site (“Better suited for consumption by automated applications capable of handling raw XML files”).  There are only 8 feeds in XML format available.
  • The data is not a feed, they are files in most cases. If you click on the links, you get either a zip file containing some XML data or a site with some links to XML files.
  • In some cases, the XML files are RSS feeds.  While this might be great if you want content, the “data” is really just unstructured content.
  • There are no APIs, no REST and each feed has a completely different format.  There is zero consistency even for things like unique identifiers, delivery format, or XML structure.  There are also generally no available XML schemas – you just get raw XML.
  • Its not clear how data is published in a timely fashion.  In most cases, you get a directory of files but there is no information on how often they are published.

So while its great to see the information being public, the US government has a long way to go before they have a useful API that could be used for application development purposes.  Given that Googgle. Expedia, Amazon, etc. have had these APIs for many years, its a lot of fanfare and not a lot delivered for this service debut – dumping a bunch of files onto a directory was a victory in 1999, not in 2009.

Wednesday, May 13, 2009

Billboard Gone Bad

image

I was downtown the other day and snapped this with my cell phone camera.  Apparently, this bill board needs Windows Activation!

Tuesday, May 12, 2009

SharePoint is not a Database!

As users of SharePoint start using lists they start taking advantage of a very intuitive and highly configurable information management tool.  Users who have been using Excel or Access in the past start seeing SharePoint as a kind of rapid application development platform for building structured data applications.  However, this is where SharePoint’s list architecture breaks down because simply:

SharePoint is not a database!

Part of the problem is that business users designing lists are not familiar with basic database concepts - they just want to store their information.  Part of the problem is false advertising by consultants and/or Microsoft that SharePoint is a miracle platform that can do anything - it does some things well but replacing your SQL server or even Access database isn't one of them.  The other problem is there is no really good way for surfacing bi-directionally data from a database into SharePoint – the business data catalogue works only in read only mode and does not allow for updates back to the underlying data store.

Here are a list of some features that a database has that SharePoint does not support - the moment you need these features you will need a real database.

  • Primary And foreign keys: one of the most basic concepts in a database is the enforcement of a unique identifier (either system generated or user supplied) that can identify a record and link across table in parent child relationships.
  • Transactions: if two changes are required to go together and the second change fails you want the first change to be undone (rolled back).
  • SQL language: complex queries can me written in code using a standard language.  Queries can be saved and repurposed.
  • Stored procedures: database programmers can write complex routines that can be called as reusable code blocks. 
  • Indexing and query optimization: used to improve performance, indexing allows the database designer to pre-index specific fields that are frequently used in queries to improve performance.  In addition, most databases have optimization engines that based on what you are trying to fetch will optimize how the data is retrieved.
  • Large data and binary fields: most modern databases allow you to store large binary files such as video files, large volumes of text, images, etc. in the database.  SharePoint can be made to store large files as documents but you only get one per record and a generic binary object. 
  • Access outside of SharePoint: lists are accessible outside of SharePoint but only through XML or programming interfaces.  Lists are not great data stores to be used for line of business applications written independently of SharePoint because the integration is relatively poor in comparison to running a SQL query on a database.
  • Cascading deletes: if a parent record is deleted, its children should also be deleted.  In most databases, this can be configured to happen automatically or else reject the delete of the parent until the children are deleted first.  This eliminates the risk of orphan child records.

These features are considered basic in databases – they have been around for decades and even the most primitive databases such as Access or FileMaker Pro have most of these features. 

Lists are great for flat, changing content especially when attached to unstructured documents.  At least in the current version, lists are not substitutes for databases and shouldn’t be considered so.  If you need a database, then you are better off building a proper database and using SharePoint as a front-end for surfacing that data through reports, dashboards, etc. or as a host for data entry components such as InfoPath forms or custom build web parts.      

Tuesday, May 5, 2009

Hotspot Shield and Hulu No Longer Work Together

Sites like Pandora and Hulu block IP addresses not originating from the United States.  The solution for the past 6 months or so has been to use Hotspot Shield which proxies your IP address behind an US address.

As of today, this no longer works.  When you load up a video, you get the following:

ScreenHunter_01 May. 05 22.07

Pandora still works thankfully…

NOTE: There seems to be a solution to this problem – thanks to the comment below!  If you clean out your browser cache and then reconnect to hotspot shield it seems to work.  I suspect this is a temporary solution until Hulu starts blocking this new batch of servers.

When is the old world media going to get that the Internet is global and find a solution for all this rights territory nonsense?

Friday, May 1, 2009

Why SharePoint Projects Fail

Microsoft Office SharePoint Server 2007 (affectionately known in our circles as “MOSS”) is now at what should be at the peak of adoption.  The product has been on the market since 2007 and there is a new version coming in a year.

Yet with many of our customers, we find that MOSS has been implemented but barely gets off the ground.  There a few reasons why this seems to be happening:

  • MOSS is championed by IT and then too tightly controlled.  For example, we have customers who have installed MOSS but will only use it for out of the box collaboration – no custom code, no document management, no BI, etc.  If you want an out of the box team site, then that’s part of the “service” but otherwise you will have to wait.
  • MOSS starts in a single department and then never makes it out.  A department picks MOSS for their needs but then there is not enough support or sponsorship in the organization to roll it out further.
  • MOSS is implemented skunk works style on a single box.  The implementation is more successful than originally envisioned and what was a “proof of concept” starts getting treated like production.  This sets up the assumption that MOSS is “Rapid Development” and eventually the box falls over under strain.
  • MOSS is implemented by IT but there has been no planning for adoption and training.   MOSS sits there with a bunch of services – users simply don’t know how to use them and go on using other more reliable forms of collaboration such as email, file shares, etc. 
  • The implementation gets mired in legal, HR, or branding issues as corporate citizens start to have the ability to create their own content.  Similar to the IT clamp down, the organization clamps down on the services that MOSS can provide such as blogs, wikis, My Sites, etc. because they do not have a good model for managing the risk of employees contributing their own content.

Why does this happen?  What is missing from most MOSS implementations?  In my experience, there are a few common causes:

  • Too much involvement by IT, not enough involvement from business stakeholders.
  • Too much focus on MOSS as a generic toolbox (document management, collaboration, search, etc.), not enough focus on MOSS as a way to automate or enable true business services.
  • Poor infrastructure planning to enable scaling to the enterprise.
  • Lack of training, adoption and change management.
  • Lack of a killer app for the particular needs of the business
  • Not enough support from executive champions
  • No governance model to set expectations on how MOSS will be operated, changed and maintained.

If you are an IT Director or department champion for SharePoint, I strongly encourage you to think about these issues BEFORE you start an implementation.  We see many cases where organizations start thinking about these issues after the first implementation has already failed and the organization has soured on the platform because there was not enough investment in managing the project and an eager IT department ready to roll out a service.

Monday, April 20, 2009

Separating the Humans from the Robots

 

With a new Terminator movie coming out, I started thinking about the ways that on the Internet now we need to try and distinguish the humans from the robots.  There is already a “war” going on out there between humans and sophisticated robots for control of Facebook, Hotmail, Gmail and other web 2.0 services.

One of the more annoying “fronts” in this war is CAPTCHA (“Completely Automated Public Turing Test to Tell Computers and Humans Apart”).  This reverse Turing test is what is used on many sites to test to see if you are human and not some automated robot.

The problem is that these tests are like antibiotics – the more they get used the more sophisticated the robots.  Early CAPTCHA tests were easily broken by bots so they have evolved into more and more sophisticated tests.  Now the number of hoops and the readability of these tests are so bad that human beings can barely pass them.

6th Worst

The challenge is how to make a test easily answerable by a human being but yet heuristically difficult enough to foil a software program. 

Google is experimenting with new techniques to try and simplify the experience of verification – see below.

Even using this technique, Google has to specifically pick the right images:

However, while the images will be randomly rotated, they will be carefully selected. First, Google will exclude images for which its own computers can readily identify the top, such as photographs showing landscapes with blue sky (easily detected), text (easily recognized) or portraits of people (there are many facial recognition applications on the market). Then, it will screen out images that humans find too difficult to orient (for example, abstract art, or overhead views, that don't have a readily identifiable top) by conducting a sort of opinion poll.

Google is relying not just on individual results but collective results.  The heuristic picture composed from millions of clicks is what will power the analytics so that Google can reliably detect bots instead of humans.

Friday, April 17, 2009

Live Earth Bird’s Eye View

One of the cooler features that sets Live Earth/Maps apart from Google Maps is the birds eye view. 

Take a look at this building in Google Maps:

ScreenHunter_02 Apr. 17 08.02

Now take a look at the Bird’s Eye view of the same building in Live Earth/Maps.

ScreenHunter_06 Apr. 17 08.03

 ScreenHunter_03 Apr. 17 08.02

 ScreenHunter_04 Apr. 17 08.02

 ScreenHunter_05 Apr. 17 08.02

The four views are available if you hit the rotate button in the interface – these are actual photographs taken from different angles.

The difference in understanding heights of buildings, features around buildings, etc. is significant – imagine if you’re doing some house hunting and you see a neighbourhood you like.  Wouldn’t you like to see the increased detail and vantage points that you get from this orthogonal view instead of just the top down view you get in Google maps?

Saturday, March 28, 2009

Adsense and Evil Java

Adsense in general does a good job of targeting ads based on the content of your site.  I have adsense running on my blog and I find that it does a reasonable job of putting ads that are somehow connected to my content.  If I’m writing about Microsoft Project, the reader gets ads on Microsoft Project.

Adsense seems to have one basic problem – it cannot distinguish between positive and negative content.  Here is some content that I found on a random site:

Java is EVIL, it's the work of the devil, made to collect your
souls and to turn you into brainless slaves of hell.
If you like Java, you will lose your soul to be damned
for eternal torment in hell.Demons and devils will feast on your soul
for all eternity.
So stop using it now to save your soul.
Or the holy inquisition will come for you and burn your flesh to save
your soul, because the devil must not collect more souls or nobody can
prevent Armageddon.
Java is evil, using it is BLASPHEMY , only heretics and
witches like Java.And heretics and witches shall BURN !
Java = programming language written by SATAN in Hell's Kitchen in 666 minutes ! ! !

I of course didn’t write this and for the record, I have used Java for many many years and I don’t think I’m going to Hell.  I posted this to prove a point – Adsense will now show ads that promote java products.  This is a sample of what Adsense delivered on this site:

ScreenHunter_13 Mar. 28 11.45

So the question is for advertisers – do you really want your company being linked to content such as this simply because it has a few key words in it?  Is there a way to heuristically analyze content to filter this out (or even better, target the negative content for example to anti-Java advertisers?)

How To Use Microsoft Project: Task Type

One of the more confusing aspects of Microsoft Project is Task Type.  Task Type can be set to "Fixed Units", "Fixed Work", or "Fixed Duration" for each task.

How to Set Task Type

You can set task type in a couple ways:

1. If you select a task or tasks and go to task information (under project in the menu or right click and its there as well) you will find task type in the advanced tab.

ScreenHunter_11 Mar. 28 10.462. If you go to window and click Split when in the GANTT chart view, you get a Task Form at the bottom where you can set the Task Type.

ScreenHunter_12 Mar. 28 10.47  If you select all your tasks, you can set the Task Information for every task to the same Task Type – this will lead to less confusion when you are adjusting your plan because all the task types will be consistently set.

Effort Driven

There is also a check box (which is checked by default) that says that tasks are “Effort Driven”.  When this is checked, it is assumed that work stays constant even if you adjust the other two measures.  So for example, if you change a 40 hour task from 1 week duration to 2 weeks duration, project will keep the 40 hours of work but decrease the number of resources required to compensate (only 50% of a resource in this case).

This may not be what you want and I find particularly with using Fixed Duration having this turned off is highly desirable because want to adjust the work, not the units.  For example, what I want is to tell project, “I want to schedule this task with 1 person for 2 weeks” and have it calculate work to be 80 hours.  If I adjust the schedule to be 3 weeks, I want the work to increase by 50%.  Similarly, if I am working in Fixed Duration and I double the resources, I want the duration to stay constant and for the work to double.  This will only happen if “Effort Driven” is turned off. 

How Task Type Works

Any task can be adjusted using three measures: Units, Duration or Work.  Because each measure is dependent on the other, at least one of the other two must be impacted.  By changing the task type, you are telling project which measure you are going to adjust and which measure should be automatically re-calculated.  Below is a chart that shows how Project reacts based on the task type:

 

Field that you change Field calculated if the task is Fixed Units Field calculated if the task is Fixed Work Field calculated if the task is Fixed Duration
Work Duration is recalculated Duration is recalculated Units are recalculated
Duration Work is recalculated Units are recalculated Work is recalculated
Units Duration is recalculated Duration is recalculated

Work is recalculated

Basic Tips for Using Task Type Efficiently

Here are some basic tips to using Task Type efficiently and to avoid confusion:

  • Pick the task type that makes sense for you and use it consistently.  I tend to think in Duration with Effort Driven turned off first and what I want is to calculate the number of hours (and therefore cost) required to do the work.  Other PMs like thinking in work instead and want to adjust the schedule instead.  Pick an approach before you start and be consistent with it.
  • You can switch the task type without impacting your plan.  Therefore, feel free to change the task type for the specific scenarios below.

Scenarios to use Specific Task Types

Fixed Duration

I used Fixed Duration when I have a good understanding of the schedule and the team and I want to calculate cost/effort.  A good example of this is doing a plan for requirements gathering interviews.  I know that I have 2 weeks of interviews, 1 week of documentation and 2 days of client review and I know that I need a Business Analyst and a Technical Architect in each one at 100%.  Fixed Duration works really well because I can adjust the schedule really easily and the work effort is calculated for me.

Another good use for Fixed Duration is % allocations for overhead resources.  Project Managers for example tend to be used on an overhead basis for the duration of the project on a fairly constant basis.  If the project takes longer you will need more project management.  It’s also easier to think of assigning a PM at 30% to a project for the entire duration than to say, “I need 85 hours of project management for this project).  With Fixed Duration, you can simply assign the PM for the entire duration and adjust the % allocation and the work effort is automatically calculated.

Fixed Work 

A good use of Fixed Work is when you want to try and fit a fixed amount of hours into a fixed schedule.  By fixing the work, you can adjust the number of resources you need to impact the duration.  For example, let’s assume you have 1280 hours of work and you want to try and jam that work into a fixed 8 week period.  With Fixed Work turned on, you can set the allocation of resources to 400% in order fit the fixed amount of work into a duration you wish.

Fixed Units

I generally find that using Fixed Units is my least desirable option simply because in most real world scenarios adjusting the number of resources required is the most flexible option.

One scenario where Fixed Units might be appropriate is for department planning.  In a department, the number of fixed units is constant (the number of full time employees) and as a Director you want to know how much work your team can produce.  What tends to happen in these scenarios is the queue of work is constant and the duration flexes – you end up telling the poor person at the end of the priority list that their project won’t get done until next year.

In this case, setting Fixed Units would allow you to lock in the resource pool based on the size of your department and then adjust the work to calculate the resulting schedule.  Based on the schedule, you would then be able to tell your stakeholders how many projects can be done in the coming year.

I hope that provides some guidance on how to use this key function in Microsoft Project – I have found even very senior Project Managers do not fundamentally understand how Duration, Effort and Units work together and how to model them in Microsoft Project.  If you understand the conceptual framework and the rules that Microsoft Project uses, you will find that there are less errors in your plan, less confusion and less tearing your hair out when you find Project adjusts your numbers in ways you didn’t intend.

Sunday, March 22, 2009

Check Out the New Live Writer

As part of the latest Microsoft Instant Messenger update, there is a Live Writer tool now included as part of the Windows live toolset. 

ScreenHunter_10 Mar. 22 22.09

It’s free and having now written a couple posts with it, I can attest that it’s quite good:

ScreenHunter_08 Mar. 22 22.07

  • It has a single interface for editing blog posts but can publish to multiple sources, e.g. Blogger, Wordpress, Typepad, etc.
  • Editing using a real client is much easier than the Blogger HTML content editor.  I always found it frustrating to use it because it created some odd HTML choices and formatting mistakes.
  • Spell check uses the word spell check and it highlights your spelling errors immediately.
  • You can save a local draft so if you editing offline you can save your post and publish later.
  • Images and videos are inserted locally and only published at the end.  This makes it faster to create your post, fiddle with the images, add or remove them, etc. because you don’t have to do the upload until your post is finalized.
  • The tool has the ability to insert a windows live map. 
  • There are a number of plugins available online for insert other types of objects such as flickr pictures, silverlight streaming applications, files, facebook photos, etc.  The plugins insert the appropriate HTML into your blog posts for each type.

This will definitely make my life easier as a blog writer…thanks Microsoft!

How to Use The Fill Handle in Excel

One of the key features in Microsoft Excel is its ability to fill data based on existing values.  Excel is smart enough to extrapolate and auto-fill values based on your existing ones.

Click on the black box in the corner of any cell and drag.  Excel will fill the cells automatically.  The fill handler works both horizontally and vertically.

ScreenHunter_01 Mar. 22 21.36

Here are some tips on how to use the fill handle for values:

  • Type in a month in either full form (e.g. January) or abbreviated form  (e.g. Jan) and drag and Excel will fill in the subsequent months.
  • Type in a day of the week in either full name (e.g. Monday) or abbreviated form (e.g. Mon) and fill.  The filled cells will contain the correct days of the week in sequence.
  • Type in any value into a cell (e.g. 1, 2, etc.) and when you fill in with the same value.
  • Type in a sequence of values in cells, e.g. 1 in B2, 2 in B3, etc.  and select multiple cells and then drag the fill handler.  The cells will be filled in with the sequence.  This works just as well with intervals such as 2, 4, 6 etc. as well as 1,2,3.
  • If you hold the control key when dragging the fill handle, you will see a plus (+) sign and the value selected will increment by 1 in each cell.
  • If you right click on the fill handle, it pops up a dialogue where you can explicitly instruct excel how to fill the data.

The Fill Handle can also be used to fill formulas.  Here is an example:

ScreenHunter_02 Mar. 22 21.51

The product in c2 is a formula =A2*b2 and the sum is a formula A2+b2.  Now let’s assume that you have a series of values and you want to have the same formula repeated:

ScreenHunter_03 Mar. 22 21.53

If you select the cell with the existing formula you can use the fill handle to automatically fill down the right formula for the other rows.  It automatically figures out that as you move down rows it should adjust the formula so that A2 * b2 becomes A3 * B3, C4 * B4 and so on.

There is also another way to fill in the cells.  If you select the cell you want to copy and then select a region and paste, it will fill the values in the same way.  It again automatically adjusts the formula so that it makes sense based on the new row that it now occupies.  This works both horizontally and vertically.

ScreenHunter_04 Mar. 22 21.57

One last tip on filling – there are cases where you will want the value in your formula to not change as it moves from row to row.  Take this example:

ScreenHunter_05 Mar. 22 22.00

In this case, if you simply do a standard fill in Excel this is the result:

ScreenHunter_06 Mar. 22 22.01Why did this not work properly?  The reason is that Excel assumed that B1 * B3 should be B2 * B4 in the second row and B3 * B5 in the third row.  However, what we wanted is for the first number to stay constant and only the second row to change. 

The solution to fixing constants is to name them.  Named values in Excel do not change when filling.  To name a cell, click on the cell and then in the left box type in a name for the cell. 

ScreenHunter_07 Mar. 22 22.04

Then when you create the formula, use the name instead of the cell address, e.g. instead of B1 * B3 we will now set the formula to InterestRate * B3.  By using a named cell, Excel assumes these values are constants in formulas and doesn’t adjust them automatically.

Wednesday, February 18, 2009

Proposed ISP Tax Shows Canadian Content Producers Do Not Understand the Internet

Decades ago in Canada, funds were created to encourage television production of Canadian Content. These programs were funded by the cable companies and regulated by the CRTC. These funds were created to share "Canadian Stories" in a sea of American television content that because of their inherent scale could be produced easier and cheaper.

The CRTC is now entertaining a proposal to create a similar fund through taxation of ISPs (and therefore all Internet subscribers) to fund Canadian television producers so they can continue to produce "Canadian Stories" created by Professional Content Creators. This proposal is supported by industry lobby groups such as ACTRA, Society of Composers, SOCAN, etc.

These folks want to tax every Internet subscriber (e.g. practically everyone in Canada) 3% of revenue (which of course means the price will go up by 3% to compensate) from the ISPs that provide us Internet Access.
This proposal shows a complete misunderstanding of the difference between a regulated, limited, and centralized Television Industrial Complex model and the Internet - a fundamentally distributed, decentralized and long tail model of content distribution.

Here are some fundamental differences that these lobbyists fail to acknowledge in their proposal:

  • In the television age, the definition of "Content" was professional created, broadcast content. The assumption in this proposal is that Colin Mochrie, the CBC, and other CanCon stars own the culture and the MILLIONS of content creators on Facebook, YouTube, etc. in Canada are not qualified to tell their own stories.
  • In the television age, the definition of "Content" is VIDEO content. On the Internet, there is no limitation and content can be everything from maps, images, videos, flash, applications, etc. Content can also be a mix from a wide variety of sources - how do you regulate content creation when it is mashed up collections from all over the world?
  • In the television age, there were major barriers to content creators because of the limited shelf space. Canadians need a way to get on the air simply because they couldn't compete with American content producers. But on the Internet, this model makes no sense because anyone can put up a web site, the costs are cheap and the number of channels are unlimited. What is the barrier to making money on the Internet other that POPULARITY? There is a simple way for Canadians to support their own culture - visit the web site and support it through ad revenue like everyone else does on the Internet.
  • In the television age, exporting content to other countries was extremely limited because the distribution channels were controlled by cable channels in the country. The Internet has no such barriers - if Canadians want to share their stories they can gain an audience world wide without any restriction.- In the television age, there is no integration of "Application" and "Content". Monetization of content was through a single model - distribution broadcast supported through advertising. In the Internet, the two are mixed together and there are many monetization models available. The monetization mechanisms are also distributed, e.g. I can be creating "Canadian" content that is monetized through Google AdSense in the United States. The selling, re-packaging and syndication of content through dozens of channels is both an opportunity and a challenge for Canadian content producers to claim for themselves. But the solution isn't to bypass these channels and simply tax the consumer - this is just a return to the simplified television monetization model.
  • In the television age, the justification for this fund was that in order to compete with American content producers there needed to be funds to create a level playing field and encourage the telling of "Canadian Stories" because the distribution channel for content was limited both in capacity (number of channels) and revenue potential (only the top 10-20 television shows make the money). However, the Internet market is completely the opposite - the market is a long-tail, unlimited distribution channel and there are lots of examples where relatively small content distributors are making money by targeting micro-niche audiences by keeping their costs relatively low and providing a highly valuable target audience for advertisers or by providing content through subscription that funds the cost.

The CRTC is in the business of regulating traditional centralized content broadcasting and is therefore bought into the fundamental model assumptions of the television age. Canadian Television Producers who are in favour of this model seem to be wanting to keep their existing model and apply it to the Internet, because if they simply wanted to make money from content there are easier more direct Internet models available that do not require a tax on consumers. The Canadian Producers advocating for this proposal and the CRTC if it accepts it simply are trying to implement the old television age model and apply to the new Internet content model so that these folks do not have to migrate to a new way of creating, distributing, monetizing content. In addition, the entire proposal continues to question the fundamental value of funding "Professional Content Producers" as the bastion of Canadian culture when there are potentially millions of Canadians who are creating "Canadian Stories" themselves on a daily basis through blogs, Facebook, etc. Do we really need Gordon Lightfood, Colin Mochrie, the CBC, etc. to have a monopoly on culture creation when anyone in Canada can easily tell their own stories?

Saturday, February 14, 2009

Kincardine Cable TV Community Channel

I was up in Kincardine and had a major nostalgia moment. They still had the low resolution cable access announcements feed going - I haven't seen one of these in about 20 years!








I particularly love the last picture - low resolution announcement board has links to web sites in it....

For those who are young enough never to have seen one of these, here are some details:

  • The reason for the garish colours is back in the mid 80's, these systems were limited to about 4-16 colours depending on the system used. There are only so many look and feel options when your choice of colours is BRIGHT BLUE, BRIGHT RED, OBNOXIOUS GREEN, BLACK AND WHITE.
  • You'll notice that all the letters are capitalized. This was pretty common in early computer systems - the resolution was so low that trying to display lower case letters made them hard to read.
  • There was only one choice of font and it was always that big blocky font that you see here.

Maybe we should along with the rural broadband fund establish a government program to upgrade small towns cable access feeds so they can have access to those fancy TV guide scrolling ad versions we have in the big cities?

Thursday, January 15, 2009

Using Technology to Avoid Stealing Songs By Mistake

In 1960, The Chiffons published He's So Fine:



In 1970, George Harrison published the song My Sweet Lord:



In 1976, a lawsuit ended with Harrison having to pay over $500K in damages to the original song's publisher for subconsciously plagiarizing (ultimately, Harrison got the last laugh by ultimately buying the publisher).

Just recently, Joe Satriani has taken Coldplay to court for the same infringement for allegedly copying his original song If I could Fly.



So my question is, could there not be a technology solution to this problem? With online radio sites having matching algorithms based on wave analysis, chord progressions, etc. could there not be similar analysis done to create a checksum hash for every published song that if matched against a new song would be deemed too similar?

It would be a lot easier than relying on someone's subconscious, just purely random coincidence or some judge's interpretation of what music is to award royalties.

Or even better yet, we would go back to the days of Mozart, Bach and Vivaldi when musicians copied each other liberally and were able to advance their art without fear of reprisals from copyright lawyers.

Thursday, January 1, 2009

Applying the Software Development Life Cycle in a Web 2.0 Context

For the past 20 years or so, the "Software Development Life Cycle" has been the process for defining, designing, constructing, and deploying applications. Various methodologies for building software have evolved over time, e.g. Waterfall methods, spiral method, rational unified process, extreme programming, etc. that prescribe different processes for development of software. However, all of them regardless of methodology have some common basic assumptions that I believe have now changed in a Web 2.0 world. These basic assumptions are as follows:
  • Software development involves engineering code artifacts that implement some sort of requirements specification. In waterfall methods, the requirements are defined up front. In more iterative or agile methods the requirements are iterated through cycles. But in all these methodologies, the primary purpose of developing software is custom developing software based on these requirements.
  • The "Application" is a deployable, atomic set of artifacts that can be deployed through a series of steps to a particular environment. The "Application" is used by a client that engages with the application. Traditionally, the user of the application does not get to change or redefine the application except through very rigidly defined configuration mechanisms.
  • Software development historically has required a large amount of testing in order to ensure that a) there are no bugs in the software and b) the software complies with requirements. Software is tested before it is released to users.
  • Software development is done by a team of experts that understand how the software works, how it can be modified and how to manage the overall development cycle. Software developers and end-users of the software do not really collaborate on building the software - end-users consume the software as it is released.

In the media, the old traditional form of Push media is being replaced by user generated content, collaboration, and Pull from users. The distinction between producers and consumers has been blurred so that online news hubs become more like information radiators than centralized distribution points.

Software development, in my opinion, is going through a similar revolution to the mainstream media. It is happening in a slower fashion because the software "industrial complex" is still highly engaged in generating software through the traditional means and because it generally works especially for large enterprise applications. However, in certain spaces and where consumers of software are engaged, the traditional model of a software development team pushing out software that is consumed by a user is starting to break down.

In order to make my point, let me give you a few examples:

  • Software applications can be created via "Mash-ups" that allow end-users to combine existing application components into new applications.
  • Portal applications such as Microsoft SharePoint are blurring the distinction between application components and user modifiable objects. For example, a Document Library in SharePoint part of an application or is it a user object?
  • Cloud based services are now being released and combined in a variety of different methods.
  • Clients such as Microsoft Office 2007 are now sophisticated enough to serve as application development platforms in themselves. For example, a traditional "reporting application" can now be built quite easily using Excel 2007 pointing at a data warehouse.

In addition, users expectations have changed dramatically has Web 2.0 has encouraged them to collaborate, blog, share information and build their own customized spaces. When a 12 year old can over night create their own blog, organize a protest online, share pictures, integrate Google Maps, and add dozens of widgets to their personalized home page, the idea of waiting 3 months for the next software "release" by an ivory tower software team quaint at best and non-responsive at worst.

In the corporate world, IT departments are struggling with this challenge in application spaces that encourage collaboration and customization with end-users. Business users do not want to wait 3 months for a static report - they want a drill down BI tool that allows them to build their own "application" (whatever that now means). In the portal world, IT departments are struggling with how much control they provide their end-users to redefine the underlying structure of meta-data, document types, user profiles, etc. In the SharePoint world for example, its difficult to tell where the "application" stops and user generated content begins because the platform is designed to encourage modification and collaboration by office workers.

On the other hand, the risks and challenges that the software development life cycle has helped solve over the past 20 years have not disappeared because we have moved from a code centric, monolithic, and IT controlled software development cycle to a collaborative, distributed and user centric model:

  • How are changes "deployed" when an office user can simply make a change in production to a content type, a work flow, a user profile definition?
  • How are the impacts of changes "tested"? For example, I can change the layout of my blog, add widgets to it, etc. but can I really test those changes before they become visible to the world (in my blog software, I have the ability to "preview" which is sort of a test but not quite the same as a proper QA environment)?
  • How are application componentized when changes are done by potentially hundreds of users working collaboratively? What constitutes a "release"? For example, on Facebook, I create a Facebook Page that has a set of content, some groups, some events, etc. but there is no way to package these changes up into a deployable unit.
  • How are changes versioned and backed-up? I have this problem with my blog for example. If I make changes to my blog "application" through changing the layout, modifying the HTML, etc. there is no easy way for me to preserve these changes as a version. I cannot roll-back to a previous version either.

Software development methodologies have good answers to these challenges and over the past 20 years have matured to address these issues through test driven development, source code control, build management, project management, quality assurance, etc.

As an industry, we have a similar challenge to the mainstream media - how do we adapt these worth while processes so that we can continue to deliver high quality software to our customers while adapting to an environment where our users are going to be creating software with us in a highly collaborative manner? How do we recreate the software development life cycle for a Web 2.0 world?