Håkon Wium Lie, the original proposer of CSS, answers questions from Slashdotters about the origins of the language, why it’s not progressing as fast as web designers would like, and why he lies about the pronunciation of his first name.

If you have even a passing interest in CSS, this is a good read. Of particular interest is the answer to the question:

> by Dolda2000

> If you were allowed (perhaps by court order, which wouldn’t be
> unthinkable) to force Microsoft to do one (1) change in Internet
> Explorer, what would that be?
I would force them to support one (1) single web page before shipping IE7, namely Acid2. By using a tiny amount of resources to get Acid2 right, Microsoft can save web designers and users endless amounts of frustration in the future. It would also be an honorable thing to do.

However, in answer to another question further down, he tells us why this dream scenario will never happen:

It’s quite clear that Microsoft has the resources and talent to support CSS2 fully in IE and that plenty of people have reminded them why this is important. So, why don’t they do it? The fundamental reason, I believe, is that standards don’t benefit monopolists. Accepted, well-functioning, standards lower the barrier of entry to a market, and is therefore a threat to a monopolist.

From that perspective, it makes sense to leave CSS2 half-implemented. You can claim support (and many journalists will believe you), and you also ensure that no-one can use the unimplemented (or worse: buggily implemented) features of the standard. The only way to change the equation is to remind Microsoft how embarrassing it is to offer a sub-standard browser. And to use better browsers.

So there you have it. IE7 might help a little – and frankly it would be a relief just to be able to use the years-old child and attribute selectors, even if we have to wait a few more years before IE7’s penetration is such before it’s safe – but IE as a browser is going to drag its feet because MS doesn’t want the web to compete with Windows as a platform. So we as web developers must continue to use ASP.NET 2.0 with Firefox, Firebug, the Web Developer Toolbar, CSSVista, and all the other nifty little tools which are growing into the space which MS steadfastly refuses to occupy. And all the while, we must embarrass MS into some semblance of standards compliance.

Just think about for a moment though – as an ASP.NET web developer, wouldn’t you love to be able to ditch the “code for Firefox, fix for IE” mentality, and have a fully integrated AJAX IDE where you could debug your JavaScript in an integrated manner in Visual Studio and not have to worry about a separate browser for CSS? Wouldn’t it be nice if Visual Studio was your CSS IDE and you could see your changes live and be certain that your layout would render the same in any browser?

Jon Skeet has a nice (and long) response to Eric Gunnerson’s call for programmers to write their own “7 Deadly Sins of Programming”. Really my post here is just an extended “oh, certainly, yes” nod to Jon’s #7 Deadly Sin:

Some of the worst Java code I’ve seen has come from C++ developers who then learned Java. This code typically brings idioms of C/C++ such as tests like if (0==x) (which is safer than if (x==0) in C as missing out an equals sign would just cause an accidental assignement rather than a compiler error. Similarly, Java code which assumes that double and Double mean the same thing (as they do in C#) can end up behaving contrary to expectations.

I know I’ve picked up habits from ten years of Delphi. The one that took longest to go away (and I still do it if I’m not mindful – even after four years) is my (ex-!) habit of prefixing argument names that collide with a class property name with an A, for example void Foo(string aMyProperty) { MyProperty = aMyProperty; } instead of
void Foo(string MyProperty) { this.MyProperty = MyProperty; }. Even though Delphi could disambiguate by using ‘Self’ where I used ‘this’, the VCL used the ‘A’ convention, so I did too.

I still speak with an accent whenever I’m evaluating a new language. However, if I know I’ll be sticking with a particular language I’ll seek out the way of doing things that doesn’t make me look like a badly dressed tourist with a tatty phrasebook.

Microsoft have finally done the decent thing and released the Consolas font as a standalone download. I’ve been using it for a few months snaffled from a Vista beta and it’s far and away the nicest programming font I’ve ever used (even beating my previous favourite, ProFont).

Consolas in action

Caveat: requires ClearENGINE in order not to look like badly designed Tetris pieces, which means whenever I have to use Windows 2000 (not often these days) I fall back to ProFont.

Also, if you don’t like it there are a list of good fonts here.

The nice folks at SiteVista have released a great free product – CSSVista -that allows you to edit CSS and see the results in Firefox and IE at the same time. This has quickly overtaken Chris Pederick’s Web Developer Toolbar as my most-used CSS tool. It’s not without its quirks and it’s astonishingly basic (it’s v0.1 after all!). However, it can handle relative paths to images and still display them (something Web Developer Toolbar can’t do). You get a split screen view of IE and Firefox at the same time, and this gives you instant visual feedback as you ENGINE CSS.

CSSVista Screenshot

SiteVista make their money from serving you the results of multiple browser CSS testing, so have a look at their paid-for service while you’re there. I’ll be subscribing to their blog to get news about v0.2 :)

Ok, I acknowledge WF is an exciting piece of technology. It must be, I’ve spent days poring over examples. However, despite what is asserted on the videos, it’s not an easy piece of technology to get to grips with. In particular, there aren’t any “full” real-world examples. Pretty much all of the examples don’t actually write anything to a recognisable problem domain-specific database, they just use in-memory structures to hold ad-hoc workflow instances which then persist themselves to a very generalised workflow database.

I’m unsure how this squares with traditional app development. To use their helpdesk example, where does the data actually go? If it’s into this generalised persistence database, that makes it impossible for me to query, for example, the latest top 10 high priority cases, doesn’t it? Does this mean I am supposed to keep a domain-specific database in sync with the workflow using activities?

This seems to be the one area that gets no discussion – everyone’s so wrapped up in discussing the technical details of flying the runtime, persisting their instances, writing custom activities, that no-one has mentioned how the traditional application really fits around this. Oh, sure, there are plenty of examples that show how to handle external host app events or call out to the host app, but they’re all hooked up to Console.WriteLine or similar in the examples!

So, if I wanted to write a real-world ASP.NET version of the helpdesk app, do I need one database or two (one domain DB, one for the WF persistence service)? If two, how do you ensure the two stay in sync? If one, how do I query my cases?

Do I just write my application as normal and then put the hooks into workflow? How can I drive my ASP.NET page flow? Do I have to retrieve work items from a queue and display them somehow for helpdesk agents to pick up? Can I use straight ASP.NET data binding for this and which DB would it come from, domain or WF persistence?

These are a lot of questions (these are just *today’s* questions), and answering them one by one is like carving a Bamiyan Buddha singlehandedly. I’d post this to the WF forums, but such questions seem to go unanswered while the simple tech questions get immediate replies.

The quest continues…

EDIT: It looks like Jon Flanders may already have been through this pain.

© 2014 ZephyrBlog Suffusion theme by Sayontan Sinha