Successful Development Meetings Redux

"As usual, the idealists are 100% right in principle and, as usual, the pragmatists are right in practice. The flames will continue for years.
This debate precisely splits the world in two. If you have a way to buy stock in Internet flame wars, now would be a good time to do that."
-- Joel Spolsky on IE 8.0 and standards


Well, I just sat through a two plus hour meeting that went right through the normal lunch hour. You know what happens to your productivity when you've been sitting in the same chair for over two hours and you are hungry and the hell with lunch and other perfectly civil human needs, we're gonna finish this meeting if it takes until 10PM tonight, right?

Time for a refresher on something I wrote about back in 2001: How to hold a successful development meeting.  The first and best way is NOT to have a physical meeting at all. In this day of intranet discussion groups, Instant Messaging, Remote Desktopping, email distribution lists and other excellent means of group information dissemination, if you are charged with deciding on holding a meeting then the very FIRST THING that should go through your mind is "Do I really need to have a "meeting"? Is there a more efficient way to promulgate (and receive ) this information? Very often, there is.

Problem is, human nature (especially with Manager types)  is -- "Oh- I better schedule a meeting" in response to needs or problems. Good God, man! Meetings often make problems worse because they drain time that could be spent making decisions!

Having said all this, there are some finer points that make this necessary evil shorter and more productive for everyone:



1) All meetings should have a stated start and end time, and stick to those times religiously. You will gain the respect and admiration of your peers, superiors, and subordinates if you do this. Remember that the average attention span of a human being is about 45 minutes (and that's provided they aren't HUNGRY!) If your meeting (which probably shouldn't have been called in the first place, remember?) has to run more than 45 minutes, man, you better have a good reason for it!

2) Every meeting should have a specific agenda, and that agenda should be distributed to all participants ahead of time, either via email or other written communication. With a track to run on, your meeting will, by its very nature, be more productive and there will be less chance of throwing it "off course" on some unrelated side topic for 30 to 45 minutes. Especially if there are participants who "like to hear themselves talk".

3) Handle off-topic and off-agenda items properly. If somebody has a valid concern, but it is not germane to the specific subject and agenda, offer to hear the item AFTER the meeting so everybody else can get BACK TO WORK.

4) Provide a meeting summary to all participants, and invite feedback. Get somebody to take notes during the meeting, type them up, and send out an email to all the participants. This follows the age-old speaking formula, "Tell-'em what you're going to tell 'em, then tell 'em, then tell 'em what you told 'em." This provides benefits in terms of communications continuity that can pay big dividends over time, and foster a more productive group mentality.

5) Only invite participants who need to be present. I cannot count the number of meetings I have been asked to attend where 11 or even 15 people were asked to drop their work to be present at a meeting where 90% or more of the actual work could have been effectively handled by only three of the people in attendance, and the rest kept informed via email. Think about it. Are you calling 155 people into a meeting because they are all relevant to what is supposed to be accomplished, or are we doing this to exercise our "ego"?

If I'd been paid a dollar for every meeting I've had to attend that accomplished little or nothing of value other than to make one or two people feel like they had accomplished something, I wouldn't have to write a single line of code, ever.

Well, I'm sorry but I have to cut this rant short -- I'm late for another meeting...


SQL Server Compact Edition 3.5

This is pretty slick. The Database file sizes are small (Northwind = about 2MB), the assemblies to add to an application are small. It supports replication and a lot of other features. No stored procs, but it supports Views and full relational integrity. You can deploy it in a regular MSI project by simply adding the seven dll's and your database file.


Best of all, your System.Data.SqlCe namespace works exactly like the System.Data.SqlClient one. For example in a small Windows Forms test app:


private void Form1_Load(object sender, EventArgs e)
            string cnstr=@"Data Source=C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf";
           System.Data.SqlServerCe.SqlCeConnection  cn = new SqlCeConnection(cnstr);
            SqlCeCommand cmd = new SqlCeCommand("select * from employees",cn);
            SqlCeDataAdapter da = new SqlCeDataAdapter(cmd);
            DataSet ds = new DataSet();



-- and you get this:




One of the most important selling points that astute developers will recognize here is that  you can run the ADO.NET Entity Framework (which in my opinion, at BETA 3, is getting to look quite mature)  against a Compact Edition 3.5 Database and use the same program/application against any back-end (assuming the database schema is same), you have to just modify connection strings.

I heard that Janet Leverling went to work for Google. (That's a joke, she really took all that MSFT stock and retired in Costa Rica).

Here's the bits:



It's all about Data, Stupid!

A white paper released from IDC (http://www.idc.com/) revised the research firm's earlier estimates to show that by 2011, the amount of electronic data created and stored will grow to 10 times the 180 exabytes that existed in 2006, reflecting a compound annual growth rate of almost 60%.

By 2011, there will be 1,800 exabytes of electronic data in existence, or 1.8 zettabytes (an exabyte is equal to 1 billion gigabytes). The number of bits stored already exceeds the estimated number of stars in the universe, IDC stated. Because data is growing by a factor of 10 every five years, by 2023 the number of stored bits will surpass Avogadro's number, which is the number of carbon atoms in 12 grams, or 602,200,000,000,000,000,000,000 (6.022 x 10^23).

The study, entitled  "The Diverse and Exploding Digital Universe," also found that the rate at which electronic containers for that data — files, images, packets and tag contents — is growing —  is 50% faster than the data itself. In the year 2011, data will be contained in more than 20 quadrillion — 20 million billion — of those containers, creating a tremendous management challenge for both businesses and consumers.

The diversity of the digital data that's producing massive growth ranges from 6GB movies on DVD to 128-bit signals from RFID tags.

Less than half of the digital data being created by individuals can be accounted for by user activities, such as photos, phone calls and e-mails. The majority of the data is made up by what IDC calls digital "shadows" — including surveillance photos, Web search histories, financial transaction journals and mailing lists.

You think a 5GB storage capacity on your Windows Live SkyDrive account is a lot? Better think again!


Silverlight Links

I've noticed that a number of Microsofties and related developers have been using my Ittyurl.net short urls / Tagging site to post their interesting Silverlight blog and presentation links. Some of these are already approaching 200 click-throughs, indicating that the short url links are definitely being used. Thanks for your support!   You can look at the Silverlight tagged links here.  Or, try the RSS Feed -- interesting links will show up!


IE 8.0 Supports Cross-Domain Requests

Zen Master: Want  hotdog with everything.
HotDog Stand Owner: OK Buddy, here ya go. That'll be $20.00.
Zen Master: Here twenty dollar bill.
HotDog Stand Owner: That'll do it, pal. Have a great day!
Zen Master: What about change?
HotDog Stand Owner: Ah, change... must come from within!


This is an area where I (and many others) have been quite vocal in complaining. If you can point the src property of a <script... tag at another domain, and said script can basically do anything it wants, then why can't you make an XmlHttpRequest to another domain (other than the one from which the page emanated)?

It's certainly an inconsistent application of the notion of security, at a minimum.

So in Internet Explorer 8.0 you have the new IHTMLXDomainRequest Interface.

Here's how it works, in a nutshell:

Cross-domain requests ("XDR", for short) require mutual consent between the webpage and the server. You can initiate a cross-domain request in your webpage by creating an XDomainRequest object off the window object, and then opening a connection to a particular domain. The browser will request data from the domain's server by sending an "XDomainRequest: 1" header.  It will only complete the connection if the server responds with an "XDomainRequestAllowed" header with the value "1" (for true). 

For example, a page might have this code, which would allow XDomain requests:


Here is a short client script sample of how a request would be made:

// 1. Create XDR object
xdr = new XDomainRequest();
// 2. Open connection with server using POST method
xdr.open("POST", "http://www.othersite.com/xdrhandler.aspx");
// 3. Send string data to server
xdr.send( myStringData);


The result comes back in the responseText property, and there are some simple events:






And, aside from the requirement for the headers as described above, that's pretty much the whole deal.

You can look at the standard MSDN style documentation for all this here.


Silverlight 2.0 Goodness - and IE 8.0 too!

May the Flying Spaghetti Monster touch you with his noodly appendage!
-- Pastafarian saying

** Silverlight 2.0 Beta 1 Plug in Runtime

** Silverlight 2.0 Beta 1 Tools for Visual Studio 2008 (Includes SDK - installs everything except Blend)

** Expression Blend 2.5 March Preview (handles Silverlight 2.0 projects)

** Expression Studio 2.0 Beta (includes Expression Web, Expression Blend, Expression Design, Expression Media and Expression Encoder.)  This release continues to enable building rich client applications with WPF and also helps designers target Silverlight 2.0 for delivering stunning web applications.

** Silverlight 2.0 documentation and links to Quickstarts, etc.

All this stuff was just put out from MIX. Have fun! With version 2.0, now that I can use real .NET libraries in the browser, this is where I start getting seriously interested in Sillverlight. Once you get the bits installed, there is a very nice series of Hands On Labs that you can download for the fundamentals. I can virtually guarantee that if you go through the entire series of Hands On Labs, thoroughly read the accompanying Word documents, and "do the code" - you can get your head around Silverlight 2.0 in about 11 - 15 hours of study.

And to my friend and fellow MVP David Silverlight - I can only say, "Thanks for your tireless work, David!"

** Evaristo has links to all the MIX 08 WMV's including some 5 or 6 about Silverlight 2.0. The ones by Joe Stagner and Mike Harsh are absolutely smashing - download them right away before the links are gone! In fact, just in case, here's a repeat of the list:


Adding Instant Messaging to Any Site
Keiji Kanazawa, Nikhil Kothari
Advanced Cross-Browser Layout with Internet Explorer 8
Scott Dickens
Advanced Search Engine Optimization: Generating More Site Traffic from Search
Nathan Buggia
Bringing Hosters and Developers Together with IIS7
Robert Cameron, Tito Leverette
Building AOL's High Performance, Enterprise Wide Mail Application With Silverlight 2
Eric Hoffman, Marc Katchay, Stefan Gal
Building Applications and Services with .NET Framework 3.5
Justin Smith
Building Great AJAX Applications from Scratch Using ASP.NET 3.5 and Visual Studio 2008
Brad Adams
Building Rich Internet Applications Using Microsoft Silverlight 2, Part 1
Joe Stegman, Mike Harsh
Building Rich Internet Applications Using Microsoft Silverlight 2, Part 2
Joe Stegman, Mike Harsh
Creating a RESTful API with Windows Communication Foundation
Haider Sabri, Paul Walker, Viphak Lay
Creating Better User Experiences: Design Methods
Dan Harrelson, Kim Lenox
Creating Better User Experiences: Design Strategy
Dan Harrelson, Kim Lenox
Creating Better User Experiences: Information Architecture
Dan Harrelson, Kim Lenox
Creating Better User Experiences: Interaction Design
Dan Harrelson, Kim Lenox
Creating Rich, Dynamic User Interfaces with Silverlight 2
Karen Corby
Design at Speed of Light
Cinthya Urasaki, Daniel Makoski, John Reid, Tim Wood, Zachary Jean Paradis
Developing Applications with Microsoft Virtual Earth
Chris Pendleton
Developing Applications Using the Model View Controller Pattern
Scott Hanselman
Developing Data Driven Applications Using ASP.NET Dynamic Data Controls
David Ebbo
Developing with Windows Live
Angus Logan
E-commerce Done Right
Gerard Johnson, Matthews Rechs, Nicholas Rockwell, Steve Nelson
Encoding Video for Microsoft Silverlight
Ben Waggoner
Everything You Need to Know about Diagnostics and Debugging on Microsoft Internet Information Services 7
Mai-lan Tomsen Bukovec
Exploring Moonlight: Novell's Implementation of Silverlight on Linux
Miguel de Icaza
From Flash to Silverlight: A Rosetta Stone
Rick Barazza
From Long Tail to Fuzzy Tale: Why "Fuzzy" Is the New Clear
David Armano
Getting Clued In to Experience Management
Lou Carbone
How Design Impacts the Bottom Line
Dave Blakely, David Watson, Jason Brush, Jimmy Kim, Luke Wroblewski, Will Tschumy
I Wanna Go Mobile!
Chad Stoller, David-Michael Davies, Derrick Oien, Eric Breitbard, George Linardos, Michael Platt
Integrating Media in Silverlight Applications
Ed Maia
Integrating Your Site With Internet Explorer 8
Jane Kim
Internationalizing XAML Applications in Windows Presentation Foundation and Microsoft Silverlight
Ken Azuma, Laurence Moroney, Ted Kitamura
Introducing SQL Server Data Services
Nigel Ellis
Is Web 2.0 Sustainable? What business models will work?
Dave McClure, Don Dodge, Kimbal Musck, Robert Scoble, Ryan McIntyre
Keynote I
Dean Hachamovitch, Ray Ozzie, Scott Guthrie
Keynote II
Guy Kawasaki, Steve Ballmer
Making it Simple: Designer/Developer Workflow
Christian Schormann, Ken Azuma, Marcelo Marer, Mark Ligameri, Robby Ingebretsen, Robert Tuttle, Ryan Lane
Microsoft Expression Web: From Comp, to CSS, to Code!
Nishant Kothary, Tyler Simpson
Mobile Devices and Microsoft Silverlight: A Primer on the New Technology
Amit Chopra, David Kline
Monetization 101
Erynn Petersen
Opportunities and Challenges in Mashing Up the Web
Aaron Fulkerson, Andi Gutmans, Michael Scherotter, Sam Ramji, Shawn Burke
Overview of Microsoft Ad Formats
Alam Ali
Partying with PHP on Microsoft Internet Information Services 7
Drew Robbins
Real World Design: Working with Silverlight and WPF in the Design Studio
Beau Ambur, Chip Aubry, Chris Bernard, Nathan Dunlap, Rich Weston
Real-World AJAX with ASP.NET
Nikhil Kothari
RESTful Data Services with the ADO.NET Data Services Framework
Pablo Castro
Silverlight and Advertising
Eric Schmidt
Silverlight as a Gaming Platform
Joel Neubeck, Scott McAndrew
Social Networks: Where Are They Taking Us?
David Morin, Garrett Camp, Guy Kawasaki, John Richards, Joseph Smarr, Marc Canter
The Back of the Napkin: Solving Design Problems (and Selling Your Solutions) with Pictures
Dan Roam
The Business of Microsoft Silverlight
Danny Riddell
The Human Brain Relationship: Advanced and Adaptive User Interfaces
Ya'akov Greenshpan, Yochay Kiriaty
The Open Question
Andi Gutmans, Miguel de Icaza, Mike Schroepfer, Sam Ramji
Tools and Applications for Publishers
Rishi Bal
Touch Me: Where Are Interfaces Going?
Chris Bernard, Dale Herigstad, Daniel Makoski, Dave Wolfe, Doug Cook, Yoshihiro Saito
Understanding Microsoft Partner Programs for Designers, Developers, and Agencies
Bill Vlandis, Hakan Soderbom
Using Microsoft Silverlight for Creating Rich Mobile User Experiences
Giorgio Sardo
Virgins, Spaceships and Hob-nailed Boots!
Paul Dawson
Web 2.0 and Beyond: What Is the Business Reality?
Bryan Biniak, Chris Saad, Frank Arrigo, Loic Le Meur, Tim Kendall
Welcome to Internet Explorer 8
Chris Wilson
What Is the face of the next Web?
Anthony Franco, Chris Bernard, Garrick Schmitt, Mark Kurtz, Paul Dain, Tjeerd Hoek
What's New in Windows Presentation Foundation 3.5
Rob Relyea
What's the Secret Formula?
Dan Harrelson, Daniel Makoski, Jensen Harris, Mike Schroepfer, Nishant Kothary
Windows Presentation Foundation Using Microsoft Visual Studio 2008
Mark Wilson-Thomas
Working with Data and Web Services in Microsoft Silverlight 2
Eugene Osovetsky



Oh, and that's not all. You can get Internet Explorer 8 too.

Here is the Acid 2 test via Internet Explorer 8.0 (BETA 1):


Unfortunately, things aren't that simple. When I view our eggheadcafe.com home page with IE 8.0, the entire left - side treeview moves to the right and renders on top of the first column of our content!  When I view this UnBlog with IE 8.0, the browser BLOWS UP and the Visual Studio Debugger dialog comes up. I can only view it OK if I use the "Emulate IE7" button. Now I've got some client script in there but otherwise it's just a slightly modified Blogger stock template. These rendering anomalies don't happen with Minefield (FireFox 3.0 BETA) - the pages described render just fine.

What I Think

If IE 8.0 and Firefox 3.0 are both supposed to be standards-compliant, and one of them doesn't render my exact same page the same as the other, then who's to blame? It seems to me that STANDARDS AREN'T WORKING, period. And I say, they need to all get together and MAKE THEM WORK. They need to put their stupid egoes in their back pocket and MAKE STANDARDS WORK.

First of all, from a user-experience standpoint,  a browser should NEVER just "blow up" and have to be restarted because it cannot render a page correctly - under ANY circumstances. It should be programmed in such a way that it at least makes a "best efforts" stab at rendering what's been thrown at it. Yet, this happens to me with IE 7 regularly, and now it's happening with the IE 8 BETA.

I can predict a real web disaster coming as web developers and site owners scramble to figure out what settings to use to get "Standards Mode" or whether they want to use various directives (as I described in a recent post to choose "IE7 emulation mode"). I suspect that many web sites won't even bother to try anymore -- basically saying "Oh, no -- not again!"   Fortunately, there is plenty of time to figure out what to do -- but a lot of static sites that don't have developers available to "fix it"  may be disappointed unless somebody starts fixing things soon.

Things I've Learned About BETAs

Over the years, both before and after becoming an MVP program member, I've flirted with ALPHAs and BETAs far too much. Most developers (myself included) often don't heed the warnings about not installing BETA software on production machines. Then when they have problems or cannot uninstall the software, they raise High Holy Hell - but -- its your own fault. With the advent of VM technology, its a lot easier to spin up a Virtual Machine, install the BETA, and play around all you want without compromising your primary business OS.  MIcrosoft has also helped a lot by improving the quality of the BETAs so that they uninstall cleanly (although not always!), as well as providing VM images for developers to work with. But the most important thing is TIME. You can spend an inordinate amount of extra time fiddling with installation and tuning of BETA software - to the point where it really interferes with your regular work routine. And the amount of time that it takes just to install some of these bits has increased exponentially over the last 4 or 5 years. If you are gonna play with BETA software - you better fully understand the risks and the payoffs - especially within the context of your regular "for pay" real business work!

Have fun, but don't forget: "BETA" --- is BETA. So don't shoot the messenger when the fit hits the shan.


Microsoft reverses stance on IE8 standards compliance default behavior

The hardest thing in the world to understand is the income tax.  - Albert Einstein

From the IE Blog:

"We’ve decided that IE8 will, by default, interpret web content in the most standards compliant way it can. This decision is a change from what we’ve posted previously."

The Explanation

They are saying that thinking about IE8’s behavior with their published interoperability principles in mind, interpreting web content in the most standards compliant way possible is a better thing to do. And more: "this step clearly removes this question as a potential legal and regulatory issue ". In other words, instead of the various quirks mode flags and what-not, we'd rather not get sued, so we'll just default to the best standards compliance we can provide.

"Quirks Mode" describes how modern browsers (like IE, Firefox, Safari, and Opera) all have different modes for interpreting the content of a web page: Quirks and Standards.  Basically, all the browsers have a “Quirks” mode and use it to offer compatibility with pages that pre-date modern standards. All browsers have a “Standards” mode and use it to offer a browser’s best implementation of web standards.

"Each version of each browser has its own Standards mode", because each version of each browser improves on its web standards support (we hope, that is to say). Microsoft  wants to make IE8’s Standards mode better than IE7’s Standards mode.

Now doesn't the above sound like double-speak to you? Isn't the idea of standards that ALL browsers should have the SAME Standards mode? Isn't that what standards are all about?  I mean, if two different browser vendors can't agree on how to interpret a particular item from the standards, isn't the standards body supposed to clarify it for everybody?  And how about standards testing, i.e. "Yes, thank you, your implementation is A-OK". Um... well that's progress!


What It Means

One issue Microsoft got feedback on concerned sites that looked fine in IE6 but looked bad in IE7. The reason was that the sites had worked around IE6 issues with content that didn't render nicely with IE 7.  They expected more of the same with IE8.

The browser market came to assume that the use of a valid DOCTYPE meant that you knew what you were doing when it came to web standards, and that you wanted the most accurate rendering possible.  When IE 7 came out, sites broke because of this. So DOCTYPE as a "switch" for standards mode rendering became horribly broken.

The initial thinking for IE8 involved showing pages requesting “Standards” mode in an IE7’s “Standards” mode, and requiring developers to ask for IE8’s actual “Standards” mode separately. They claim that they made this decision, informed by discussions with some top web experts, with compatibility at the top of mind.

Now they've gotten a lot more vocal feedback and they have published principles. So now, IE8 will show pages requesting “Standards” mode in IE8’s Standards mode. Developers who want their pages shown using IE8’s “IE7 Standards mode” will need to request that explicitly using the http header/meta tag approach described here.


My Thoughts

In general, this reversal of posture - to have the most standards-compliant rendering behavior be the default behavior - is a good thing.  Change is good! In politics, and with browsers. That is, as long as you don't change it too often... The days of browser / css / javascript hacks aren't over yet. I just can't wait until the next version of Browser Hell v.8.0 starts later this year. Oh, and by the way - the Acid 3 Test was just released by the Web Standards Project...


Search engine Redirect Spammers get a free Ride on Google, Live.com and Yahoo

Since around 2006, the spammers have been using a technique that essentially gets specific pages ranked high in the search engines for certain search terms. Then when the search engine serves results to an unwitting user, instead the spammer site embeds some script or a an HTTP refresh with a zero time delay, or a 302 redirect into the search result.

Here is just one relatively innocuous example (don't click it unless you want to examine the script, which is javascript obfuscated) <script src="http://cappa.pl/sutra/js/random"></script>. if embedded in a search result link or description, this will redirect you to some sex site or whatever who has actually PAID for this service. Yes, apparently the search engine hijackers actually make their clients pay for this stuff, in effect getting free money for no effort other than a little javascript programming. This particular little scriptlet currently appears in a google search 11,800 times , 111,000 times in live.com, (Yikes - 111,000 times!)  and 24,100 times in Yahoo! Unfortunately it is just one of may others. The search engines know this stuff is there, but they haven't been successful in completely removing it. Even if they do, the spammers will just change the url anyway. It seems to me, though, that they aren't even trying!

These scripts may be anesthetized to some degree in your browser showing search results, but if you consume any of these searches via RSS, the little boogers will be very much alive. The answer of course is to remove <script.. tags and their contents from all your results - both the link and the description field.

The following snippet is one easy way to do this (C#):


description =

You can put whatever HTML tags you want in the OR list of the Regex expression.

I find it difficult to understand why the major search engines still are permitting this crap to pollute their results after several years. Personally, I think that SPAM -- in any form -- is simply the lowest of the low. I don't understand why the broader community of Internet users can't seem to band together and find a way to put these scumbags out of business.

I mean, if somebody is firing rockets into your backyard with the sole purpose of killing people, you have a right to fight back, don't you? That's basically what the spammers are doing, in my view. Frankly, I think we are a bunch of big Chicken-Shits, because we cannot seem to fight back. We deserve it, for being a bunch of shitless morons allowing lowlife criminals to take over OUR Internet!