Monday, April 30, 2007

MIX07 Update: Dynamic Data Controls

I just attended a session by Polita Paulus and Mahesh Prakriya on Dynamic Data Controls in ASP.NET.

Here is the basic concept behind these controls - take the standard grid controls and instead of configuring them, point the controls instead at a database and they configure themselves.

Polita demonstrated simply taking a page, calling it the name of the table you want to display, and up comes all the controls you need for editing, filtering, deleting, inserting and linking to child/parent tables. Pretty interesting stuff especially for those creating quick one-off web apps. You can extend the controls pretty easily as the dynamic data controls can extend any of the standard ASP.NET data driven controls such as DataGrid, DataList, etc. You can then extend them as normal using data binding, custom formatting, extension through event binding, etc.

The current CTP only supports the SQL Datasource through connection strings. Forget the idea of using these dynamic data controls to build off of objects, web services, XML, etc.

The bad news is that the only recommendation for these types of heterogeneous (e.g. any serious real world scenario these days) provided seems to be to support a LINQ data source, which is Microsoft's new way of doing O/R mapping and language integrated query. The answer to having heterogeneous data sources, classes, business rules, etc. from Polita was wait until you get the LINQ datasource and then use that as the basis for all your data needs.

I'm going to the LINQ data source presentation next, but this seems problematic and limiting as an overall one size fits all strategy. When we use ASP.NET data controls today, we rarely use the Wizard type approach - instead we're doing heavy duty business objects that generate very simply array lists of custom built value objects. This is especially true with distributed scenarios such as web services integration.

But I'm onto the LINQ presentation next, so maybe it's the panacea after all! :)

MIX07 Update: Feedback on Expression Web

I just attended a seminar on Expression Web 1.0 and while it seems to be definitely a 1.0 product (e.g. nothing too flashy, not that mature quite yet) it has some interesting features.

What makes it cool:
  • Really strong CSS editing - ability to diagnose inheritance issues, see what styles are applied, etc.
  • Refactoring support - easily rename styles, move styles from to page, promote styles from page level to an external style sheet, etc.
  • Word like style support. Think of the Word 2003 Format Styles dialog box for HTML. This would make it really easy to apply pre-defined styles especially for non-technical users.

This product seems to be really an HTML editor with very little integration. There was some discussion that this developer/designer integration is coming in the 2.0 product, but I wonder why they couldn't include the same CSS/HTML editing tools in VS 2005 or the next version of it? In my experience, one of the biggest challenges is interface and back-end HTML integration, and having everything in one tool would certainly help on this front. I've had too many experiences where the interface developer creates a beautifully formatted static HTML template and then either one of two things happen: 1) the CSS is so complicated that the ASP.NET team cannot inject their code into it easily or 2) the ASP.NET team ends up creating subtle HTML/CSS bugs when the dynamic code is inserted. I'm not sure how ExpressionWeb really helps in this regard, but I've only so far seen the demo.

Saturday, April 28, 2007

Bringing You The Best from MIX07

I will be flying to the Mix 2007 Conference in Las Vegas on Monday. Stay tuned and I'll post highlights of what I see including pictures, videos, etc.

Finding People Across Multiple Social Networks

In the past year, we've had linked-in, facebook, myspace, twitter, etc. all register hundreds of thousands of user profiles.

I'm currently on linked-in and facebook heavily. I haven't tried myspace or twitter yet. In addition, there are dozens of other user profiles floating around the Internet in blogs, web pages, etc. And there are still old-school sites such as Classmates.com which provide people finding services through a local service.

Finding people on the Internet is actually reasonably hard to do. Simply googling a person's name might find the person, but if your name is "John Smith" then your out of luck. In addition, let's say you want to find everyone in your high school class (a typical facebook or classmates use case) - doing this using Google is really really tough because of the need for very structured meta-data against a person which google doesn't index.

So what about creating a search engine that uses metadata based searching to find people? For example, in facebook you have employment information, high school information, etc.

Here are a couple mock-ups to illustrate what I'm thinking of here...





In addition, what about linking profiles between networks so you could see an aggregated profile of a person's blog, facebook page, myspace page, every video they've posted to YouTube, etc.

A couple of issues:

1. Unique identifiers - there would to be a way to uniquely identify someone across networks. The most obvious identifier to use would be email address since this is commonly included in most user profiles.

This is a common problem in health care and there are already good solutions that use probabilistic scoring algorithms to analyze meta-data based on linkage business rules determine that two profiles are really the same person. A simple obvious example - if two profiles have the same email address, we can probably assume they're the same person. It gets more interesting when trying to match without a unique identifier and you're dealing with scoring of a variety of attributes such as gender, date of birth, first name, last name, postal code, etc. Given the rich profile detail on most of these network sites the ability to match profiles should be very strong - if you two profiles with the same gender, date of birth, last name and geographic indicator such as postal code, its pretty safe to assume that they are pointing to the same individual.

2. What information gets aggregated - this is a trickier problem. One solution would be to simply require participating networks to have an opt-in/opt-out ability to syndicate their profile information to the aggregator. This is similar to what Facebook or LinkedIn does today - the user gets to decide which information is public. Another option would be to enable any user to see their own aggregated profile and at least diagnose where the information is coming from. Then at least I can easily tell in a single view what is being syndicated and change it.

3. How I get contacted - all networking sites have different rules on how they allow contacts in order to prevent spammers, stalkers, etc. Again, one simple solution would be to simply delegate the contact rules back to the local network. If I find a facebook profile and want to contact that person (adding them as a friend) then I would follow the facebook process to do so (which is quite different than LinkedIn). This would also allow networking sites to compete on features but still provide a common meeting point.

4. Indexing additional information - it would be great to see additional general information from Google but optimized for people searching. There must be some interesting algorithms that could be developed for analyzing any web page for common profile meta-data. For example, take a standard web based discussion board. Each message might have at least a name, an email and the message content. If you can make a match on this, then you could aggregate this content together to see what people have posted over the past 6 months.

I think there are tonnes of possibilities here, and with the increase in meta-data from these networks, we should be able to do a lot better than standard google searching and having to go from network to network to search for people.

Tuesday, April 24, 2007

The Growing Phenomenon of Internet

This brings me back - I found this old CBC new video circa 1993 on this new fangled "Internet".



In 1993, I was in 3rd year university and had one of the few accounts thanks to some connections through my parents who were academics. In those days, only grad students were allowed Internet accounts. This was pre-WWW where unix terminals were using protocols such as email, ftp, gopher and veronica. Mosaic (which then became Netscape) wouldn't come out for another year or so.

An another interesting historical note - "CRS" standard for Canada Remote Systems which was one of the leading Bulletin Board Systems in Toronto. They were a commercial BBS with hundreds of phone lines allowing for local chat. They figured out and tried to hook up to the new Internet in order to avoid extinction - unsuccessfully. CRS got wiped out with the rest of BBS's as the Internet took over.

Classic Presentation from Uncle Bob Martin

I saw Bob Martin at a Software Development conference a couple years ago and loved his presentation. He's one of the founders of the Agile Manifesto and one of the smartest old-school architects in the business.

He's just posted his classic presentation on The Principles of Agile Design. This is a must see for any Technical Architect.

Service Oriented Architecture - "I think we spend way too much on the 'A' and not enough on the 'SO.'"

There is a really neat article in today's CIO.com. The article describes some of the trends in IT over the next few years, and the general argument from Gartner points to a vision of an IT department that is customer focused.

I showed this cartoon to my IT team and described the "traditional" view of IT - this is how a lot of customers see us as IT professionals:



For my entire career, I've been in Information Technology but have never really been a technologist. I can certainly code, architect solutions, but if you pressured me to come up with a fast algorithm I'd be hard pressed to do so. I've never worked with mainframes, punch cards, assembler, or hardware other than my PC.

What I do know how to do and what is increasingly valued in the new vision of Information Technology is to come up with creative technology solutions and I can span from end to end of the technology development life cycle. I can sell solutions, evangelize change and think strategically about a problem and create an applied technology solution.

When I meet young programmers, I actively encourage this type of thinking because as the article points out, this is really the differentiators in my line of business. If you want to make yourself outsourcable, concentrate on algorithms, data, and optimization of technology solutions. If you want to stop being outsourced, start thinking about the solution, the customer and how you can take most of your components from cheap off the components and bring them to life to solve a real business problem. That's how the modern IT department creates value - the rest will be quickly outsourced or commoditized.