Friday, July 30, 2004
Meaning and Value
Wednesday, July 28, 2004
The Emperors Got No Clothes On
Basically, somewhere along the way, we've ended up defining OO programming to be about code encapsulating data and SOA to be separating things into data, service definition and implementation. I can readily build such things in OO languages and many of them have a programmatical equivalent of service definition built in. Why is that? Because OO is not really about wrapping data with code it's about building a system out of roles and responsibilities and allowing for implementation to be separate from interface. That doesn't require or suggest that all your code consist of data wrapped by code. SOA is simply an architectural abstraction - nothing more.
. . .
Web Services has it's place alongside all the other technologies we use but they shouldn't be used to solve every problem just as we shouldn't store all data in a database or build everything using an application server. They are just another weapon in the armoury of the software developer not a universal hammer for which all problems are nails. SOA and OO are actually one in the same thing once you get past the artificial separation that some people have invented based on their incorrect assumptions about what OO design/implementation is.
MyGeneration Code Generator
MyGeneration is a Development Tool written in Microsoft .NET. MyGeneration generates code from templates by combining either JScript, VBScript, DotNetScript C#, or DotNetScript VB.NET with a powerful database meta-data API. MyGeneration is 100% FREE and supports Microsoft SQL, Oracle, IBM DB2, MySQL, PostgreSQL, Microsoft Access, FireBird, and Interbase. MyGeneration can generate code for non-Microsoft operating systems. MyGeneration serves up meta-data from your DBMS system that you can access in your script files or templates to generate whatever you might need, including C# and VB.NET code, Stored Procedures, PHP, HTML and more. MyGeneration has a very unique feature that allows you to create your own Graphical User Interface and thereby provide a user interface for your script. Your scripts can then capture data through a Windows Graphical (not html) interface and copy it to a data structure for use in the actual code generation. Each Script has an optional User Interface code section.
Tuesday, July 27, 2004
New Modelling and Ascynchronous Articles
Summary: Get an overview of how the new Service Broker functionality in SQL Server 2005 enables faster and easier development of SQL Server applications that rely upon asynchronous, queued operations.Introduction to the Unified Dimensional Model (UDM)
Summary: This paper provides an introduction to the Unified Dimensional Model (UDM), including the basic end-user model, and a brief overview of the architecture and security models.
Mind Control
Destructive mind control can be understood in terms of four basic components, which form the acronym BITE:
I.
Behavior Control
II.
Information Control
III.
Thought
Control
IV.
Emotional Control
Monday, July 26, 2004
RSS and XmlSerializer
You have some XML you want to process using XmlSerializer, but you don't have a schema to feed to xsd.exe in order [to] generate CLR types. So what do you do? Write your serializable class by hand. It isn't very hard once you understand the basic mapping. Here's how it works.
Saturday, July 24, 2004
Building Data-Bound User Interfaces in XAML
Article Summary: Illustrates a new way of building dynamic user interfaces that automatically respond to changes in a data model and update their appearance by using binding relationships between the elements in the UI. This example uses a 100% XAML approach to demonstrate these relationships, called "bindings".
Download the code for this tutorial
Wiki in the News
The Pluralsight folks were kind enough to give me wiki space.Here's the link: http://pluralsight.com/wiki/default.aspx/Don.HomePage Keith Brown is moving his new security book into a Wiki
Friday, July 23, 2004
Fixing InfoWorld's RSS growing pains
InfoWorld has been noticing a lot of congestion at the top of the hour when thousands of RSS clients all hit our servers simultaneously to check for updated feeds. We've done a number of things to alleviate this, but thanks to excellent feedback from the RSS community we've done a lot more today that will hopefully resolve some of these issues.See also: Sam Ruby
Sunday, July 18, 2004
The XML Diff and Patch GUI Tool
This article shows how to use the XmlDiff class to compare two XML files and show these differences as an HTML document in a .NET Framework 1.1 application. The article also shows how to build a WinForms application for comparing XML files.
Friday, July 16, 2004
Feedster reloaded
Congratulations to Scott Johnson and the rest of the Feedster gang for the launch of Feedster version 2. There are lots of new features to digest, but the ones that most interest me are those that enhance cross-blog conversation.
Tuesday, July 13, 2004
An no-nonsense guide to Semantic Web specs for XML people (Part I)
The Semantic Web has a serious problem: the XML people don't understand it. They think it's an utterly complex way to write metadata that you can do with simple namespaces. The two worlds (despite being both hosted inside W3C) don't talk very much. Many (if not all) W3C folks are all in the RDF camp (and have been there for a while) and they see XML as a half-baked attempt to solve issues that RDF already solves. Unfortunately, not having been in the XML camp at all, they have no way to communicate with the other side. The XML camp, on the other hand, thinks that they know how to build things that work, while the RDF people are all sitting in their ivory towers telling them that what they are doing is wrong, but without understanding their real-world needs. As it normally happens in a debate, both are right and both are wrong. I find myself sitting in a very lucky position: right in the middle of both camps and I talk to both of them. So, this is a RDF guide for XML people. A much needed one, IMO.
Friday, July 09, 2004
Roadmap to high performance XML
I'll keep the updated list of posts relating to performance in XML manipulation here.Check out the whole "High-performance XML" series:
- High-performance XML (I): Dynamic XPath expressions compilation
- High-performance XML (II): XPath execution tips
- High-performance XML (II'): Enhance XPath execution performance with XPathCache
- High-performance XML (III): returning well-formed XML from WebServices without XmlDocument
- High-performance XML (IV): subtree transformations without re-parsing
- High-performance XML (V): in-memory XML Schema validation without re-parsing
posted on Friday, July 09, 2004 10:16 AM
Insights from the creator of Ruby
- Things too simple are difficult
- Things too complex are difficult
- Human thoughts are not simple
- Programs are essentially complex
- Combination of simple concepts can be complex very easily
- Principle of fulfilled expectation
- Principle of pleasant surprise
- Principle of Immersion
We're frustrated when we:
- wasting time
- can't focus on problem
- are interrupted
- Consistency
- Flexibility
- Succinctness
Thursday, July 08, 2004
The Best Best Practices
(0) commentsFriday, July 02, 2004
Deep thoughts on programming languages
Programming languages are the box outside of which most programmers, architects, and managers cannot think. Languages, for them, are things you choose, not things you build. When language specialists see simple solutions, the untrained see costly problems that will remain unaddressed.
Don Box Scores Windows Process/Communication Issues
We currently give you three "full-featured" ways to send a message from one process to another: MSMQ, DCOM, HTTP. I don't discuss .NET Remoting's binary/tcp protocol, as for one, it's not secure, and secondly, DCOM is typically faster. All three mechanisms allow you to send a secured and structured message from one program to another, including programs running on other machines. All three mechanisms have rich programmatic support and again, what's interesting is how they differ.Services and Processes
We currently give you three ways to get a process up and running: NT SCM, COM(+) SCM, and the IIS6 WAS. All three mechanisms allow you to configure a deployed piece of code to start as a particular user account or one of the three service accounts (NetworkService/LocalService/LocalSystem). All three mechanisms have programmable access to management and configuration. What's interesting is how they differ.
Thursday, July 01, 2004
The Road to Longhorn Goes Through Windows Forms
I define a smart client application as a rich user interface application that resides on the client in a secure manner, connected to a back-end server, and is deployed over http.Let's break that statement into its elements:
"Rich user interface" means Widows-based user interface. Users simply prefer rich user interface. They dislike the dull interface of the web. They want floating toolbars, graphics and 3D grids, that they can edit in-place, without clicking through dozens of web forms. The only way to do that using managed code today is using Windows Forms.
"In a secure manner" means it uses code-access security, to enable secure execution and deployment, provide the user with a consistent experience – regardless whether they try to access files, run scripts, download EXEs or controls, they will not be able to shoot themselves in the foot yet they can get a workable and usable application. There is no need for runtime user decision ("Do you trust all content coming from so and so..").
"Connects to a backend server" means that you would want to have the actual logic in one centralized place. In most scenarios where calling to the server involves crossing boundaries, web services will make the most sense. Boundaries can mean a security boundary (firewall, or domain trust), team boundary, component technology boundary, operating system, geographical boundary, etc.
"Deployed over http" means no-touch-deploy, ClickOnce, or any web server (not necessarily IIS) capable of servicing the download. This is essential to overcoming internal IT groups resistance to deploying applications to numerous end-stations.