Saturday, January 31, 2004

Micro-content vs the Microsoft hairball  

via Steve Gillmor
. . . Oddly, Redmond seems blinded to the reality of the new Web operating system, where technologies such as RSS are pushing the marketplace toward small XML fragments called micro-content and away from bulky Word documents. . . . Luckily for Redmond, office suite competitors such as Lotus and Novell imploded at the same time. Even now, Sun's OpenOffice has cloned the Microsoft hairball rather than producing micro-content objects that could be stitched together to create the same kind of rich compound documents. In a micro-content world, business documents are broken down into their constituent elements: notification, transaction, context, priority and lifetime. IM traffic, Weblog posts, breaking news, appointments, alerts and good old e-mail comprise a dominant percentage of micro-content traffic. Managing the real-time flow of information becomes Job One, followed closely by archiving and publishing snapshots of the data as "documents." The traditional productivity applications become rendering engines for various end-stage documents. Word produces spell-checked, formatted pages; Excel produces reports, charts and graphs; PowerPoint produces presentations. In its current incarnation, Outlook renders messages. FrontPage—well, FrontPage is being sunsetted by Weblog-authoring tools. To be sure, Microsoft can take comfort in its strategy of waiting for the competition to do the R&D and then swooping in when the market is primed. Micro-content authoring tools are in their infancy, held back by the lack of resources in mom-and-pop RSS aggregator shops. . . . As RSS information routers reach the critical mass of persistent, searchable storage, feed-tunable preferences, embedded browser rendering, and attention data mining, the motivation to store data in licensed document silos will flatline. Remember: Microsoft is competing in the micro-content space with the one non-renewable resource: time. Nowhere in the real-time space does it have dominant market share—not in IM, not in RSS, not in search. If it places its chips on Word, it's competing not just against micro-content, but against its own installed base. There are some signs that Gates gets it: hiring Wiki inventor Ward Cunningham, incorporating some OneNote technology into the next Mac Office release and even floating a rumor that he will start an internal blog. But Longhorn still reminds me of the Las Vegas skyline, where objects appear a lot closer than they really are.

links to this post (0) comments

Friday, January 30, 2004

XmlDataSource in Longhorn 

via Ryan Dawson on Longhorn Seriously, this is a feature you have to take a look at. There are all types of inherent features built-in, such as processing XSD, XSLT, and Caching. Oh yeah, and don’t forget Xpath expressions, something that I literally work with on a daily basis. The beauty is that it can easily bind to a Control, and therefore it is trivial to store data in an XML file and populate user controls.

links to this post (0) comments

Autonomous Services and the New Information Architecture 

via Stu Charlton . . . Services do not assume that the developer of one service has any authority to change the implementation another service. It assumes that in any distributed system, each participating service is autonomous, allowing each to evolve independently of the other. Autonomy has tremendous implications for how these systems should be designed, and can lead to some new and difficult challenges for building globally optimized systems. Certainly there will be cases when one can control the implementation of another service. A new application may require several services, all freshly developed. Some organizations may have the ability and will to modify existing services where necessary. Those cases cannot be the basic assumption, however, because services want to enable economic benefits of widespread composition, distribution, and re-use, both on the corporate network or the Internet. . . . Controlled software integration Most traditional distributed systems that use COM, RPCs, or even message queue systems are used under controlled environments. Controlled environments imply that there is an ability to modify the implementation of any number of components to integrate them together and support ongoing requirements. . . . Autonomous software integration Autonomous integration assumes that each participant in a distributed system evolves independently from the other. Other components are assumed to be open for extension, but not available for modification. This enables re-use both within and beyond an organization. It too requires standard contracts and schemas among participants, but the message format contains extensible metadata, allowing it to be self-describing. This allows schemas to be defined as loosely coupled smaller fragments of larger messages. A participant can choose to ignore any part of a message that it does not recognize or care about. While published schemas must remain basically immutable, participants are free to evolve by introducing new schemas or compatible changes to existing schemas. The above description is just as easily attributable to past descriptions of "distributed components" or even "object oriented" programming. The difference this time, however, is that the focus is on the shape and standards of the space "in between" software. Prior approaches focused on the language and programming model. The component wars of the 1990's demonstrate that autonomously integrated software really needs to be independent of programming model. . . .

links to this post (0) comments

Tuesday, January 27, 2004


via BBCi The British Chiropractors Association's experts say you should do these txt-stretches to help avoid damaging your health while texting!

links to this post (0) comments

Friday, January 23, 2004

The Two Avalons 

What is Avalon? "Avalon" is the code name for the presentation subsystem in "Longhorn." Avalon provides the foundation for building applications and high fidelity experiences in Longhorn, blending together application UI, documents, and media content, while exploiting the full power of your computer. The functionality extends to the support for Tablet and other forms of input, a more modern imaging and printing pipeline, accessibility and UI automation infrastructure, data-driven UI and visualization, as well as the integration points for weaving the application experience into the Windows shell. . . . See how Longhorn-targeted Avalon applications will mix XAML, which is tightly integrated with the Avalon class library, and programming code. What is it? Apache Avalon provides a complete platform for component programming including a core framework, utilities, tools, components and containers. By using key design patterns such as Inversion of Control (IoC) and Seperation of Concerns (SoC), Avalon achieves a number of advantages over traditional object oriented programming frameworks: No implementation lock Low coupling between components Component lifecycle management Configuration management and easy to use API Component meta-data framework and tools Service dependecy management Embeddable containers for standalone, J2EE and web environments In Component Oriented Programming (COP), reusable and replaceable components can be assembled in a container to provide application blocks. Blocks in turn can be used to build anything from a client desktop application to an FTP server to a web service. Avalon provides a variety of basic components and default application blocks in order to help you quickly build your own application solution. Given this, the Avalon team aims to: Provide a stable COP development platform (currently in JAVA) Create a rich set of client components API's and default implementations Develop complete container solutions Explore and extend COP development practices

links to this post (0) comments

Web Forms 2.0 

via BitWorking by Joe Gregorio

Now I've gone on endlessly about the complexity and short-comings of XForms: Web Services vs. Internet Services,HTTP and HTML, Sans DELETE, andXHTML + XForms + XLink = Xanadu.

Web Forms 2.0, edited by Opera's own Ian Hickson, is a breath of fresh air. Instead of trying to completely revolutionize HTML forms, it takes an incremental approach, building on an already stable base, fixing common problems (like the fact that forms can only do GET and POST, which in my opinion is a bug of the HTML specifications), and adding new features in a way that is backward compatible that strike a good 80/20 balance (a new mime-type for form submission of application/x-www-form+xml).

It starts with this completely sensible set of requirements that are drawn from requests of real people trying to get a job done.

links to this post (0) comments

interview with George Soros 

via talking points memo So that's the first thing: the fact that their ideology of power and dominance is false. It actually doesn't work. That's number one. Secondly, it's profoundly un-American, because we have, you know, a belief in the equality of opportunities and the very principles of America are not ones of dominance. We don't believe in, you know, we fought the Civil War to abolish slavery. So, secondly, it's really un-American; it's a break with American values. And there is another aspect that is coming into sharper focus to me, even since I wrote the book. That is that this administration has no compunction in misleading the people. It has no respect for the truth. This, I think, is a real danger. It is the danger of an Orwellian world. It's not new, because obviously, Orwell wrote about this fifty years ago. But what he wrote in 1984, you know, the Ministry of Truth being the Propaganda Ministry, the use of words meaning the opposite of what they are meant to mean. The Fox News, "Fair and Balanced," the "Clear Skies" Act for permitting pollution, the "Leave No Child Behind" [that] provides no money for the legislation. All these things I think pose a real danger to our democracy if they succeed in misleading the electorate. And there is only one remedy: an intelligent and enlightened electorate that sees through it.

links to this post (0) comments

Thursday, January 22, 2004

Declarative Semantic GUI 

Topicalla allows one to view information using a UI that is generated based on the kind of data available. The user can augment, customize and replace both the data and UI as they see fit. For instance, the user might want to view information about a movie. Data could be provided from different sources, for instance, cast info from one source, reviews from another and showtimes from yet another. The UI, or even parts of it may be provided by yet other sources.

links to this post (0) comments

Test-First and Design-by-Contract as Workflow 

I had an interesting discussion with Bryan about how to integrate ideas from REST Planning theory (chunking GET, PUT, DELETE) with POST (bryan) Design-by-Contract (pre-conditions, postconditions) Adaptive Learning (propagation back through a value network of links) ideas from cybernetics (Web link chunking) (via bryan), ETS (evolvable transformation systems) and Test First methodologies as they relate to breakdowns in conversation theory, where when there is a workflow breakdown; a test can be written (post-condition?), the old process unpacked, and a new path can be created through the network -- based on stored value estimates. This post is not really meant to make any sense to anyone else.

links to this post (0) comments

Maintaining Regular Expressions 

via oreilly network

links to this post (0) comments

IBIS Vocab update 

via Danny's famous ill-formed blog I've had a crack at using the IBIS RDF vocabulary for expressing
argument maps built using Compendium.

links to this post (0) comments

Wednesday, January 21, 2004

Xpath business rules rule 

via Daniel Cazzulino Business Rules, OCL, XML and Schemas DonXML is proposing extensions to OCL to express business rules that can be used at code-gen time and at run-time.
He mentions my Schematron implementation called Schematron.NET, which allows many business rules to be expressed simply in terms of standard XPath expressions. I believe such an XPath-based language is good enough to express almost every business rule.

Udi Dahan commented as an example, a rule "only a bank manager can authorize a loan above X" which he said couldn't be expressed with Don's idea. It could, indeed, with something along these lines (XPath-like):

<assert test="sec:principal-role('BankManager') and po:Loan/@Amount < 1000">
  Only a BankManager can place a loan of more than $1000.

Note that XPath extensibility allows for more domain-specific extensions to be active, which can even check against databases, etc. For example, something like this:

<assert test="crm:customer-id(po:CustomerId)" />

links to this post (0) comments

Tuesday, January 20, 2004

Writing style and blogging 

via joi.ito.com

Poor writing style, like bad manners, makes someone appear less intelligent than they are. Writing style, like manners, can be learned in many ways. Reading and writing a lot is the first step. Having people critique your writing is probably the next best thing. There are many basic writing mistakes that people make, which can easily be avoided by being aware of them.

I have never been a great writer and I am self-concious about my writing style. If you are serious about your blogging, I think that time spent polishing your writing style is well worth the investment.

My favorite reference is the Chicago Manual of Style.

Some web pages:

links to this post (0) comments

The Economics of Open Source Software - Prospects, Pitfalls and Politics 

via Smart Mobs

Open Source Is "Economically Dangerous"

Dr. Stefan Kooths, with the Department of Economics, the University of Muenster, Germany, argues that open source software is economically dangerous and governments shouldn't use it. On January 15 Kooth lectured on it, hosted by Microsoft Research in Cambridge, UK.

You can see the presentation, as PDF or Powerpoint

links to this post (0) comments

Thursday, January 15, 2004

The Future of Technology and Proprietary Software 

via Tim Oreilly I see F/OSS licenses as a corrective response to proprietary vendors who have been abusive towards their users, just as the environmental movement is a corrective towards industries that have been abusive towards the environment. Once we get things in balance, activism fades into the background. You want to get to the point where "doing the right thing" just makes sense to everyone. (I like to quote Lao Tzu in this regard: "Losing the way of life, men rely on goodness. Losing goodness, they rely on laws." Reversing the pattern, you might say, "Finding goodness, men rely less on laws. Finding the way of life, they get beyond goodness, and judgments of right and wrong, and doing the right thing happens because it just seems to make sense."

links to this post (0) comments

Wednesday, January 14, 2004

Two Laws of Explanation 

via ongoing The First Law When you’re explaining something to somebody and they don’t get it, that’s not their problem, it’s your problem. The practical take-away from this law is that for anything that’s deep enough to matter, you’re going to have to do a lot of explaining, and you absolutely totally can’t afford to get impatient or irritated when it isn’t going fast enough, you just have to explain better. This is difficult, but not all that difficult. People who can’t get their message across usually don’t get too far in this world, so anyone who’s making an impact almost by necessity combines the articulateness and patience to (eventually) get the job done. The Second Law When someone’s explaining something to you and you’re not getting it, it’s not your problem, it’s their problem. The practical take-away is that you have to be totally courageous and truthful in saying “I don’t understand; please explain again.” Otherwise you won’t get the message and you’ll be the loser. This actually turns out to be pretty hard; a lot of people, in particular young people, find it painful to admit they don’t understand. When, sometime in my thirties, I realized that I had enough experience and accomplishments that if I didn’t get something it was OK to just say so, my quality of life got way better. And I wish that I’d had that courage in my twenties, when I tried to fake my way through a lot of things I didn’t understand; it even worked sometimes, but it really sucked.

links to this post (0) comments

Monday, January 12, 2004

Social Networks  

Social networking targets the enterprise The Navy Tests Web Logging For Team Communications Followup to "Evaluating Social Network Services" The Perfect Social Networking Service I will add comments when I have the time

links to this post (0) comments

Saturday, January 10, 2004

RSS workflow and application integration 

I have been trying to figure out how various XML standards might play in an application/workflow integration project. My initial take is that each application expose a set of channels (that I am calling topics) where each user gets a homepage topic were only they can add resources. They may then create shared topics where resources created by different users can be accumulated. Each shared topic has a unique name within the scope of the application. A user is automatically subscriped to a topic that they create, and can manually subscribe to topics that were created by others. For a workflow engine/application, the topic represents a workflow instance. This workflow instance may have been created from scratch or have been copied from the structure of one or more other workflow instances. Each item in the channel represents a workflow activity, that can store workflow state, and have pre and post conditions on what state information can be controlled and activity status set. Unbound state would then be filled in by inline behavior (code) or delegated to an external agent/application. This might happen through a built in notification system (another RSS channel). There would then be a cross application aggregator ( like an RSS aggregator) that would allow users to suscribe to a collection of channels and organize then into a hirerarchical structure of folders (see bloglines.com). Users should be able to establish folders for filtered views of a channel based on Xpath expressions. More later

links to this post (0) comments

Friday, January 09, 2004

Interesting claim about asp.net 

Enhanced Reliability Memory Leak, DeadLock and Crash Protection ASP.NET ensures that your application is always available to your users. Memory Leak, DeadLock and Crash Protection. ASP.NET automatically detects and recovers from errors like deadlocks and memory leaks to ensure your application is always available to your users. For example, say that your application has a small memory leak, and that after a week the leak has tied up a significant percentage of your server's virtual memory. ASP.NET will detect this condition, automatically start up another copy of the ASP.NET worker process, and direct all new requests to the new process. Once the old process has finished processing its pending requests, it is gracefully disposed and the leaked memory is released. Automatically, without administrator intervention or any interruption of service, ASP.NET has recovered from the error.

links to this post (0) comments

Memory leak with fire and forget on delegate  

Asynchronous programming has become an increasingly important part of my applications. While Microsoft suggests using delegates, here is an important consideration. Delegate.BeginInvoke() and memory leaks...
I need to make a retraction. It's just come to my attention that the runtime guys are reserving the right to leak stuff if you never call EndInvoke. In the course of trying to pin down who was saying what on this topic, I ran across this statement in the .net sdk docs for the 1.1 framework: "CAUTION Always call EndInvoke after your asynchronous call completes." As far as I can tell, this is the first time they've come right out and said this. And it's contrary to what guys like Box and Grimes have published in books and articles on this topic [2,3]. So if you want fire-and-forget semantics, you'll have to roll it yourself. An example of one possible approach appears below my sig as note [4]. Apparantly this is still being discussed internally, so there's a chance they might retract the cautionary note they've introduced in the 1.1 docs; but that's probably unlikely at this point. -Mike DevelopMentor http://staff.develop.com/woodring [1] ms-help://MS.NETFrameworkSDKv1.1/cpguidenf/html/cpovrasynchronousprogram mingoverview.htm [2] "Essential .NET", 1st Ed., by Don Box, page 194. [3] ms-help://MS.MSDNQTR.2003JAN.1033/dnmag01/html/ASync0108.htm [4]
See also:Supporting the Fire-and-Forget Idiom for Asynchronous Delegates Without Leaking Here is my attempt at traslating this into VB (this translation is much harder than usual)
' AsyncHelper
' This class provides a FireAndForget method that facilitates
' calling an arbitrary method asynchronously w/o worrying about
' or waiting for the return value.
' The usage model is along these lines (example assumes
' the existence of  Sub SomeMethod(string, double).
''Then you create a delegate with the same signature
' Delegate Sub SomeDelegate(ByVal string1 As String, ByVal integer1 as Integer)
''Then pass the address of the background method and its arguments
' Dim d As SomeDelegate = AddressOf SomeMethod
' AsyncHelper.FireAndForget(d, New Object() {string1, integer1})

' Note - there's an extra (IMO) level of indirection in the
' following code that I don't think should be necessary.  The
' goal is to call Delegate.DynamicInvoke using BeginInvoke.
' Using BeginInvoke gets us asynchrony, using DynamicInvoke
' makes this generically reusable for any delegate.  However,
' when I call DynamicInvoke directly I get an undetailed
' execution engine fatal error.  When I use BeginInvoke to
' call a shim method that just turns around and calls
' DynamicInvoke, things work.  Strange (and consistent on
' the 1.0 and 1.1 runtimes).
Class AsyncHelper
    Delegate Sub DynamicInvokeShimProc(ByVal d As [Delegate], ByVal args As Object())
    Private Shared dynamicInvokeShim As DynamicInvokeShimProc = New DynamicInvokeShimProc(AddressOf DynamInvokeShim)
    Private Shared dynamicInvokeDone As AsyncCallback = New AsyncCallback(AddressOf DynamInvokeDone)

    Public Shared Sub FireAndForget(ByVal d As [Delegate], ByVal args As Object())
        dynamicInvokeShim.BeginInvoke(d, args, dynamicInvokeDone, Nothing)
    End Sub

    Private Shared Sub DynamInvokeShim(ByVal d As [Delegate], ByVal args As Object())
    End Sub

    Private Shared Sub DynamInvokeDone(ByVal ar As IAsyncResult)
    End Sub

End Class

links to this post (0) comments

Thursday, January 08, 2004

Data access in Wibley 

via The "a ha" moment. Mark Fussell has developed a nice document outlining our recommendations for data access in Whidbey. (It is worth reading, but keep in mind it is a work in progress and will be updated and expanded based on Whidbey feedback.) IMHO, the new data access options (first class SqlXml framework and ObjectSpaces) are making SqlClient (using transact Sql statements) a low level interface for cases where fine grained control and performance are required or the features of SqlXml or ObjectSpaces are not required. Are most users ready to accept that and have we made the higher level data access options powerful enough to enable user to solve real problems exclusvely using those abstractions? The answer to the first question is probably no - getting developers to give up power is not an easy task. I don't know the answer to the second question, but I worry about it all the time.

links to this post (0) comments

Expanding the roll of RSS for data 

This is just some references for me to keep track of, for use with my RSS,workflow, declarative programming - integration work. A commons for sharing outlines, feeds, taxonomy RSS-Data: A Proposed Format A Critical Look at the RSS-Data Proposal

links to this post (0) comments


via Web Things, by Mark Baker

The good news is that finally, we've got a Web services spec that tackles the hard problem, interfaces. Yes, WS-Eventing is an application protocol (do we have to bind SOAP to it too?)

The bad news is that it continues the track record of abusing other application protocols (if indeed it's objective is to be used with them, which I can only assume is the case); the more that goes in the SOAP envelope, the less suitable it is for use with them, as it just duplicates what they already provide. Once again we see WS-Addressing as the culprit; wsa:Action and wsa:To exist to replace their counterparts in any underlying application protocol. For example, for HTTP, the counterparts of wsa:Action and wsa:To are the request method and request URI, respectively.

A point of frustration for me is that the semantics of subscription itself are largely uniform. What I mean is, wouldn't it be great if all Web services supported "subscribe"? So why not use HTTP like I've done, which is built for uniform semantics? Using a SOAP envelope with MONITOR and for the resultant notifications would be really sweet.

links to this post (0) comments

Asians to develop Linux-based platform 

via Associated Press A pair of Chinese and Japanese software companies announced a joint venture Wednesday aimed at developing a Linux-based platform for Asian markets that they hope will challenge Microsoft Corp.'s dominance. Chinese, Japanese and South Korean officials have expressed hopes for creating a product to compete with Microsoft's Windows operating system, reducing reliance on it and creating more opportunities for Asian companies. . . . Sato said that while it would be difficult to replace Windows operating systems for desktop PCs, he hoped Linux could dominate server operating systems for business and governments within as little as three years. Linux is an open-source system, meaning the code on which it is based is freely available to users who can contribute improvements. By contrast, Microsoft's source code is a company secret. Some Asian governments worry about security holes in Windows and dislike having to rely so heavily on a single foreign company for the development of their technology industries.

links to this post (0) comments

What the Blogsphere Wants 

via padawan.info - an apprentice weblog

Blog readers want to see more:
  1. original research, surveys etc.
  2. original, well-crafted fiction
  3. great finds: resources, blogs, essays, artistic works
  4. news not found anywhere else
  5. category killers: aggregators that capture the best of many blogs/feeds, so they need not be read individually
  6. clever, concise political opinion (most readers prefer these consistent with their own views)
  7. benchmarks, quantitative analysis
  8. personal stories, experiences, lessons learned
  9. first-hand accounts
  10. live reports from events
  11. insight: leading-edge thinking & novel perspectives
  12. short educational pieces
  13. relevant “aha” graphics
  14. great photos
  15. useful tools and checklists
  16. précis, summaries, reviews and other time-savers
  17. fun stuff: quizzes, self-evaluations, other interactive content

Blog writers want to see more:
  1. constructive criticism, reaction, feedback
  2. ‘thank you’ comments, andwhy readers liked their post
  3. requests for future posts on specific subjects
  4. foundation articles: posts that writers can build on, on their own blogs
  5. reading lists/aggregations of material on specific, leading-edge subjects that writers can use as resource material
  6. wonderful examples of writing of a particular genre, that they can learn from
  7. comments that engender lively discussion
  8. guidance on how to write in the strange world of weblogs

links to this post (0) comments

This page is powered by Blogger. Isn't yours?