Saturday, March 31, 2007
Open-sourcing your Brand
My simple opinion is that a) you cannot; and b) you shouldn't. The a) part scares marketers and b) part is heresy to most traditional brand experts.
Despite what trademark lawyers, VPs of marketing, brand consultants and customer experience companies want to try and claim, the territory of brand is no longer under lock and key. If you look at organizations such as the MPAA, RIAA, large companies such as Amazon, IBM, Bell Canada, etc. attempts to control their "Brand" via the Internet have largely failed.
A few examples of Brand control failure:
1. In 2003, the RIAA started mass litigation against random people, including trying to take to court a 12 year old child. This has had little impact on reducing file-sharing and a lot of negative press across the world as large multi-national record companies brand became one associated with bully tactics by ultra-rich recording companies trying to make money off of ultra-rich recording artists.
2. In 2001, Warner Brothers started sending out letters to owners of URLs relating to Harry Potter to cease and desist all fan site activity because of copyright violation. What they failed to realize was that most of these fan sites were run by teenagers. A 16 year old girl from Virginia organized a boycott of the Harry Potter movies as a response.
3. The latest case I've heard about is Apple is trying to squash anyone using the word "Pod" in their product name. Apple has filed a trademark for "Pod" and has been going after people with legal letters.
In all these cases, you see a common pattern and a similar result:
1. A corporate entity decides to protect its "Brand" through legal means.
2. The corporate entity takes on a Goliath vs. David fight with some person, group or document to try and squash the use of their "Brand".
3. In cases where the organization is perceived as being a bully, the press is called in and their tactics are widely questioned. What may have started with one lawyer sending a warning letter to a few people turns into an internal press incident.
4. In most cases, the organizations back down - in a few cases they have continued to press on and in the most extreme have launched counter-promotional campaigns trying to explain to the public why they have a right to take a 12 year old girl or an fixed income veteran to court.
Another interesting note on all of this: in 2001, there was no YouTube, MySpace, or Facebook. There were web sites, some news groups (which were largely populated by geeks) and just the beginning of a peer to peer culture. In 2007, the ability for a single action to be amplified either positively or negatively is much bigger than it was in 2001 given the amount of the Internet space that is content driven by individual users and the ability for communities in mass numbers to form overnight.
So in light of this reality, my opinion is that for "Brands" to be successful online in the next few years, marketing folks should look at the best features of the open-source model:
1. Community
2. Mass participation
3. Enabling by sharing
4. Efficient means of control (but not zero control)
5. Ability to change and adapt
6. Technology-enabled
The best open-source projects/companies have figured this out, and the best Internet 2.0 web sites have also followed this model. Facebook is a perfect example of this as a success story - seemingly overnight, Facebook has become a premier community because it adopted these principles. People don't use Facebook because it has a traditional "Brand" - they use it because the site makes them part of the branding process and makes the community the "Brand" itself.
Think about the success of Apache as a "Brand". It powers about 70% of the worlds web servers yet it has never been marketed. Its brand is entirely based on cult popularity amongst a community of developers, techno-geeks, Internet experts and commercial partners. Its the web server that's shipped with most UNIX servers and is bundled with IBM and Oracle products and it has never been marketed. In addition, the product development is all community based, constantly evolving and moving quickly to adapt to current needs. The Apache Foundation has leveraged its "Brand" in the Apache web server to create several other successful projects such as Lucene, Struts, Velocity, Tomcat, Maven, etc. All of these have been nurtured by a community of followers who have help to evangelize and market the product for free.
Any marketing/brand expert with millions of marketing dollars would be a superstar if they could do what the Apache Foundation has done for years with no marketing muscle but lots of good will, cooperation from corporate partners and a true partnership with their customers! Wouldn't it be nice if your car company, your bank or your grocery store adopted the same model...
Using Gentle.NET
So we started using Gentle, and we've been generally pretty happy with it as basic CRUD layer. Its much easier to use than NHybernate (and I'm a bit concerned now that Hybernate is owned by JBOSS that the .NET support from a java company may not be there long term) and gives you very simple objects that can be easily persisted.
You can use the framework and generate your own classes to represent tables, but the easier way is to MyGeneration's Gentle.NET template and generate them automatically. You can simply point the template at your database and it will generate a one to one class for each table.
The best part about Gentle.NET is how easy it is to manage persistance in code. To create an object, you just create the object and set its properties. To persist it to the database, you simply call the Persist method on the object. If you want transaction support, you create a transaction object and pass in the object you want to persist and then either commit or rollback your transaction at the end. All very simple and fast to build up especially if you have an existing database schema. For doing basic inserts, deletes and fetches of lists of objects its solid, fast and simple and fast to code.
Where Gentle.NET really falls flat is on querying. Like most O/R mapping layers, its key weakness is when you have to do complex joins across a number of parent/child relationships. It takes a lot of code and lot of SQL calls to do these types of joins.
For example, I'm doing some event tables that have parent child relationships that look like this:
User -> Campaign -> Event -> GiftEvent.
Creating these in the first place is simple. Simply create the objects and persist them. In addition, if you start with the User object and move down Gentle.NET provides methods for getting children and parent lists pretty easily. So you can get all the campaigns that belong to users, all the events that belong to campaign, etc.
Where it gets tricky as with most O/R mapping layers is if you want all the GiftEvents for a particular user. In a SQL statement, this is really easy - a basic join of the four tables and you're done. But in Gentle.NET this is really tough for it to handle. The framework has a SQLBuilder class which is supposed to allow for loading up of arbitrary SQL statements into objects but the documentation for it is non-existent and I couldn't find any good examples on the net to show how this could work.
In addition, the only solution to support this at the database level is to generate a view - Gentle.NET doesn't support mapping to stored procedures.
So for these types of queries, using the Microsoft Enterprise Library to create a command object, execute a stored procedure or query and then read through the reader is easier in a pinch. In addition, you could combine the two, e.g. use traditional datasets and then populate gentle objects with the results. But its a pretty glaring weakness in an otherwise pretty good little library.
There is a version 2.0 in development but like many open-source projects it seems to be in perpetual development mode with no projected release date.
One other issue we ran into: Gentle generally provides lists of objects in non-generic lists but the new ASP.NET ObjectDataSource expects a generic list. There is a solution to this problem - if you create the generic list before hand and pass it in, Gentle will fill it for you.
So to use their example if you have code that looks like this:
static public IList ListAll{
get {
return Broker.RetrieveList( typeof(User) );
}
}
you can change it to be:
static public IList
get{
List
return Broker.RetrieveList( typeof(User), list );
}
and this will provide back a generic list which the ObjectDataSource can handle quite nicely and will allow you to bind to your data bound controls.
Sunday, March 25, 2007
Canada NetFile Follow-up
So far so good - hopefully I get my refund before someone decides to do another maintenance deployment.
ASP.NET Profiles - Ready for Prime Time?
We run a web site at the foundation but we're not currently using a user profile management system. This is a feature we're looking at developing in order to be a gateway to customer self service.
So I followed ASP.NET best practices and implemented the membership and profile systems using the ASP.NET configuration tool, the web.config and threw the standard login, registration and forgot passwords onto a page and started playing with them.
Note: I'm not an expert Microsoft .NET developer (I'm a Director of IT, so I don't live and breath code 8 hours a day anymore), but I've been building profile systems in one way or another for probably about 10 years now. In the old days, we simply built our own using either an LDAP or database backed storage system to store a custom built login, profile, etc.
This is what I found was quite good with the framework:
1. The framework does a good job of implementing basic memberships. The basic schema of managing users, storage of passwords in an encrypted manner, and their roles and permissions are quite good out of the box. It didn't take me more than a couple hours to implement the out of the box controls for login, registration and forgot password as they tie in automatically with the underlying membership framework.
2. The ASP.NET controls are very flexible - like the other controls, they are template based so you can change all the steps, the styles and the fields within your page design.
So I thought I was doing well but then started looking at ASP.NET profiles. Here is where I found some pretty substantial frustrations:
1. Defining a profile using the web.config is clunky and takes a lot of debugging. No tooling support is provided for even basic data type configuration.
2. The supplied SQL provider for profiles is pretty weak. It stores your profile attributes as a set of name value pairs in a delimited list (the format is PropertyName:BS:StartIndex:Length for each property). I have no idea how the provider would efficiently search this especially if you have a large number of properties. If you want to write a more efficient provider, you can do so - see this article for a more efficient and database accessibly provider.
3. The only way to get properties defined is through hard coding them in the web.config. This seems like an inherently wrong place to put a schema definition. In addition, it means that you're going to lose the power of a database as the meta-data for each property is stored in the application but fattened down to generic name/value pairs in the database. I'm really not sure the value of this - does this make my life as a developer easier? Wouldn't it have been easier to create a strongly typed dataset? Or a gentle.net object? Or even a plain old .NET object that represents the profile? Then I get strong typing, proper debugging, etc.
4. Even more strange, this is what Studio does to your web.config metadata - it takes the data and generates a class out of it - except that it doesn't actually work in the new Web Application Project! After 3-4 hours of searching through the Internet, I found an Add-In that can generate the profile object that ASP.NET needs in order to work.
5. There used to be a profile tab in the ASP.NET configuration tool but it has disappeared. So the tooling that you have for memberships that allows you to create users, delete users, change data, etc. is missing for profiles - if you want to do profile management you have to write your own tooling.
6. Everything to do with the profile has to go through the API. As an architect, I love the idea of a business domain layer that hides the database and allows for flexibility around the underlying data store. But in practical terms, this is overkill for most of what I need and in many cases it would be easier just to have a basic table. We're not planning on switching our profile store from SQL Server to Oracle or to XML any time soon, so the solution is over-architected for our specific needs.
So at the end of day, what am I getting here? Is it really worth trying to iron out all this complexity for the minimal profile infrastructure I'm getting? Wouldn't it simply be easier to create a profile table, develop my own schema and simply hook it up to the member profile through the userID guid?
I'm still not satisfied with the idea of giving up on Microsoft standards since they tend to get better over time, but after 6-8 hours of playing with profiles, I'm not sure I'm gaining anything substantial here and I'm losing a lot in fighting with these APIs!
Saturday, March 24, 2007
Why Isn't there an Option to Donate Ad Word Revenue to Charity?
So why not Google? It would easy for them to do, and simply adding the option within the ad sense administration tool would mean saving bloggers from having to manually cut a cheque, track revenue, etc.
Just adding that as an option would help charities raise some funds...
Friday, March 23, 2007
A Terabyte is the New Gigabyte
MDG here in Canada now offers a computer for about $1000 with a Terrabyte of storage! That's almost a million floppy disks!
The fact that I measure things still in floppy disk units just betrays my age...
But seriously, who really needs a terrabyte? How much bloatware and mp3 files do you really need to keep around?
Wednesday, March 21, 2007
Today's Web Site is like the original Star Wars
A good example of this creative style is www.pinpointshopping.com or www.bmw.ca (both of which I was involved in building when I as at Blast Radius). This is the peak of the 2D, artificial metaphor style of the Web 1.0 generation. The whole mantra of Web 1.0 design was about using Flash, HTML, Javascript, etc. to design these artificial metaphors to create some emotional experience out of a narrow band, browser constrained pipe.
Even the terminology speaks of constraint - the Web (instead of simply software), browser (because you needed a special device), Broadband (because that was at least better than narrow band), Web Page (because it had to be a 2d screen with text), etc. All of these terms are reactions to constraint.
Its like saying a movie has "special effects" - in the mid-70s special effects were the latest thing and were really separate from the movie production. You did your film shooting and then you spent a year getting some science nerds to play with some models against a blue screen to create an extra 30 seconds of footage. Now the entire movie is special effects - the term is simply obsolete.
Fast forward 30 years from 1977 when the first Star Wars movie was made to today. I just saw 300 the other day and its staggering what they can now do with a movie production. The difference is not incremental - its a paradigm shift. It not simply, "look how many more things we can do with special effects" - it's "we can do anything". That's a fundamental difference in how movies are made and it started with movies like The Matrix, the Star Wars 2.0 movies (which proves that an unlimited palette doesn't necessarily make for a better movie), Shrek, and in the past year Sin City and 300.
We're just moving into this era with the Internet. Here are some examples of the first "unlimited" Internet applications:
1. XBOX 360, PS3
2. Google Earth
3. World of Warcraft
A web site and World of Warcraft are both "Web based applications". World of Warcraft is fundamentally different in that it doesn't have to live within an artificial application (a browser), an artificial 2D window, or a 2D display of content. The tooling available to create a virtual 3D environment while not quite limitless (its still somewhat constrained on today's bandwidth/hardware) is certainly getting there in terms of ability to provide creative designers the engine to create experiences as they envision them instead of focusing on how creative ways to overcome obstacles.
It's the difference between Empire Strikes Back and 300.
Sunday, March 18, 2007
Pandora is Being Run Out of Business by the RIAA
Personally, I have probably about 300-400 CD's in my collection. I listen to a lot of music on a daily basis. I'm also really knowledgeable about the music over the past 100 years or so. One of my problems is that I've basically bought everything that I like - if you look at the average output of the music industry in a year, I might buy one or two CDs. I replaced all my vinyl years ago.
So when I discovered Pandora , I thought it was a god send - you put in any artist you want, and it will start playing music that sounds like them as a personalized radio station. Genius.
Unfortunately, the RIAA has just pushed the US copyright board to increase the royalties that are paid by Internet Radio stations through the roof in ways that show that they really still don't GET IT:
1. There is a $500 minimum fee per channel. The problem is my personalized radio station is now considered a channel in the way that a radio station broadcasting to thousands of people is a channel.
2. There are performance fees charged to Internet Radio that aren't charged to traditional broadcasters because traditional radio is seen as a "promotional service" for the music industry. Its amazing how you could view a non-measurable, non-transactable, and non-personalized radio station is a better promotional tool than Pandora!
3. Fees go up every year by much more than inflation, making the problem worse in future years.
4. The rates were based on a model defined by Mark Cuban and Yahoo when they did the deal for broadcast.com, a deal which as a model has been shelved and Mark admits was designed to squash the competition!
For more information, see:
http://createdigitalmusic.com/2007/03/16/if-streaming-rates-stand-well-have-to-shutter-says-pandora-founder/
http://www.kurthanson.com/archive/news/030207/index.shtml
http://www.linuxjournal.com/node/1000196
So enjoy Pandora as a very cool idea while it manages to survive!
Saturday, March 17, 2007
What Happened with the Nation's Tax Software?
There are very few details available on what actually happened - here is the summary based on news reports (see http://www.cbc.ca/canada/story/2007/03/07/tax-glitch.html and http://www.cbc.ca/money/story/2007/03/09/taxglitch.html):
- Canada Revenue Agency (CRA) shut down the entire system that processes tax returns on March 5, 2007.
- CRA stated that neither hackers nor viruses got into the computers.
- By March 7, CRA stated that they knew what caused the problem by "working through the night".
- The problem started after 20 "maintenance operations" were carried out over the weekend.
- There are 75 databases and they were all impacted. CRA stated that they were bringing them back online in stages.
- The databases that allow the e-filing are the "most complex" and would be the last to come online.
- Any previously submitted tax returns were put in suspension, e.g. stuck in the queue until the fix was put in place.
- Business returns were not affected.
- CRA didn't have a re-launch date until the last minute - even on March 9th they were not offering a re-launch date.
- CRA stated that "our solution is working and in the past 24 hours we have restored several databases" on March 9th, presumably meaning that their fix meant some sort of long running process, e.g. they had to re-test all the data, do a migration to the data, or somehow process the data in order to fix the problem.
- CRA stated that the problem was an "infrastructure problem".
All of this leads to some pretty scary questions and point to some basic deployment methodology problems:
1. Why would you be doing any changes to your software on March 5, at the prime season of tax filing? What about something called a CODE FREEZE?!
2. Why would it take 2 days to figure out the problem? Surely with a system that large you would have enough change management in place to know exactly what was deployed?
3. What kind of "maintenance operation" corrupts the tax software system?
4. Why does an application suite with 75 databases have such tightly coupled dependencies that you have to take down all 75 of them because of a patch? Why is it that a re-launch couldn't be done in phases, e.g. all 75 databases had to be brought back into production in one big bang re-deployment?
5. Has anyone heard of a ROLL-BACK plan?
6. Aren't there audit records that tell what data was changed and when? Couldn't CRA tell what tax returns were clean and what ones had been changed after the deployment?
7. What kind of software patch requires such an extensive re-scanning of the entire 75 databases over a 10 day period? Speculating here, this points to two scary scenarios - 1) the bug corrupted 75 databases in a very short period of time; 2) no one was sure what data was corrupted and therefore had to re-scan or re-test the entire data set to make sure it wasn't corrupted.
8. What confidence does the Canadian public have now that its back up and running that the problem is fixed? In addition, has the CRA now made adjustment for the fact that millions of Canadians who have been waiting to efile are all going to try at the very same time on Thursday/Friday to get back in?
9. How long was the problem going on? CRA states that the problem occurred over the weekend of March 3-4 but that's a pretty small window to corrupt 75 databases...
10. What kind of "infrastructure problem" kills an application? Infrastructure to me means power, hardware, network, maybe OS, etc. It shouldn't include things like database changes, application changes and probably not even things like server updates, OS patches, JDK updates, etc. unless you're really liberal with the term "infrastructure". In my experience, the infrastructure is the least probably culprit for an application failure and the easiest to detect - if the power shuts off you know it immediately. If a database transaction error occurs occasionally because some coder forgot to declare the transaction boundaries in one method, that could kill your application and be difficult to detect. That's not an infrastructure problem.
11. Where was QA?
I'm not sure we can get any answers to these questions. No one in the press is technically savvy enough to ask these questions and the CRA is obviously trying to keep the story simplified and use very user friendly language (using words like "glitch" and "irregularities") to keep the public from being nervous.
If anyone has any insider details on how the tax system of this country is architected, I would love to hear the details - send them to cwoodill@hotmail.com.
I for one am going to wait a few weeks before efiling - I'm not sure I want to be the first through the gates of a newly patched ("we swear, this time we're good to go!") software application.
Friday, March 16, 2007
Does Google have a Quality Problem?
In the past week I've had three negative experiences with three Google products:
1. I applied for ad words and I kept on getting this error as a result:
After escalating to customer support (which was amazing by the way), they reset my application because it wasn't filled out completely 6 months ago (why can't it just get deleted then?!) but the confirmation email link still getes the error. I could fill out the application though so hopefully that will work for me.
2. I have yet to get email to my blog to go through. I got an undeliverable error back yesterday, but then I looked at the email settings and the publish checkbox wasn't clicked - apparently me putting in my secret password and hitting save wasn't good enough - but I've just tried again and an hour later my post hasn't shown up yet.
3. I have the last version of Picassa which I have used successfully since 2005 to post pictures to my other blog cwoodill.blogspot.com. However with the new blogger, when I publish pictures from Picassa I get two errors - 1) they posts are in draft mode; 2) all the image links point to http://localhost. This has been reported by a few others - the solution seems to be to export pictures first and then upload them.
So my basic question is - has Google's entreprenurial spirit started to bite them in terms of quality control? Maybe I'm just having a bad google week, but these are pretty basic errors...
Thursday, March 15, 2007
My Experience so far with Facebook
At least with linked in, I can get recommendations, look for jobs, and do some corporate networking.
I'm really not sure what to do with my facebook profile - I seem to be missing the point here.
Maybe if I was single, under 20, etc. I would see some utility in this, but I already have MSN, LinkedIn, as well as the old fashioned meet people for lunch routine. I'm not quite sure how facebook can help my life, other than to confirm that I can link to profiles I already have connected to on other networks.
The odd thing too is that people I see every day at work now come up to me and say, "Hey you're now my face book friend" - wouldn't it have been easier to have just gone for lunch than to find me in a search engine?
My favourite thing about it so far is this post I got where you can submit your picture and it will tell you celebrities that look like you...see http://www.myheritage.com for more details on this.
Removing your History
Here's an interesting challenge - in about 10 years, there will be millions of ex-Facebook, MySpace and Blog users who will want their comments on their boyfriends/girlfriends, their parties and/or their drama stories removed.
How are we going to do this in the future - surely with the amount of user generated content coming our way we need a system for content removal.
There are a few problems to address in this space:
1. Finding all your content (your linked in profile, your my space web site, your facebook profile, etc.)
2. Finding all someone else's content about you (someone else's posts about you, your postings on other people's web sites, etc.)
3. Removing the content in by request (e.g. you shutting down your facebook account)
4. Removing the content systematically (e.g. delete from all sources this picture)
4. Expiring content in a reasonable time frame (e.g. only allow this to remain online for 30 days)
Individuals now have the same problem as copyright holders - trying to manage all the publishers, syndicators and borrowers of their content is next to impossible.
So what's the solution...stay tuned for more ideas.
Wednesday, March 14, 2007
Welcome to My Blog
- Internet 2.0
- Microsoft .NET development
- Open-source community sharing
- Not-profits, charities, etc.
- Technology innovation
- Technology culture
- Software development
If you're interested in these things, read on...
Blog Archive
-
▼
2007
(99)
-
▼
March
(13)
- Open-sourcing your Brand
- Using Gentle.NET
- Canada NetFile Follow-up
- ASP.NET Profiles - Ready for Prime Time?
- Why Isn't there an Option to Donate Ad Word Revenu...
- A Terabyte is the New Gigabyte
- Today's Web Site is like the original Star Wars
- Pandora is Being Run Out of Business by the RIAA
- What Happened with the Nation's Tax Software?
- Does Google have a Quality Problem?
- My Experience so far with Facebook
- Removing your History
- Welcome to My Blog
-
▼
March
(13)
