I am extremely impressed by the sage wisdom of Sir Charles Antony Richard Hoare's The Emperor's Old Clothes given at his acceptance of the Turing Award in 1980 and subsequently published by the Association for Computing Machinery (ACM) in 1981. Here are my favorite excerpts. I hope you will read the entire text using the link below.
"You know, you shouldn't trust us intelligent programmers. We can think up such good arguments for convincing ourselves and each other of the utterly absurd."
"Programmers are always surrounded by complexity; we cannot avoid it. Our applications are complex because we are ambitious to use our computers in ever more sophisticated ways. Programming is complex because of the large number of conflicting objectives for each of our programming projects. If our basic tool, the language in which we design and code our programs, is also complicated, the language itself becomes part of the problem rather than part of its solution."
"At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way--and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay."
"The mistakes which have made in the last twenty years are being repeated today on an even grander scale."
"If only we could learn the right lessons from the successes of the past, we would not need to learn from our failures."
"To have our best advice ignored is the common fate of all who take on the role of consultant, ever since Cassandra pointed out the dangers of bringing a wooden horse within the walls of Troy."
The Emperor's Old Clothes
Sir Charles Antony Richard Hoare
Creator of the Quicksort algorithm
1980 Turing Award Winner
© 1981 ACM 0001-0782/81/0200-0075
Full text here in PDF.
Having accidentally browsed into this today, I reiterate the axiom that complexity is the enemy of sound software development and hereby recommit to following the path of simplification, learning more lessons from my successes to avoid more failures and to sometimes keeping my best advice to myself.
In anticipation of repaving my Vista x64 machine with Windows 7 after the MSDN release on August 6, I’ve prepared my wish list of hardware upgrades I’d like to do at the same time I pave the machine with the new OS.
Should the family financial officer (FFO) decline to approve my purchase request, I’ll at least sneak in the SSD purchase.
Update (new list, bigger appetite):
|Qty ||Description || |
|2 ||SUPER TALENT 12GB (3 x 4GB) 240-Pin DDR3 SDRAM DDR3 1333 || |
|1 ||ASUS Z8NA-D6C Dual LGA 1366 Intel 5500 ATX Dual Intel Xeon 5500 Series || |
|2 ||Intel Xeon E5520 Nehalem 2.26GHz LGA 1366 80W Quad-Core || |
|1 ||SUPER TALENT MasterDrive SX SAM56GM25S 2.5" 256GB SATA II MLC Internal SSD || |
|Total || || |
What plans do you have for your Windows 7 upgrade?
Here’s the content of the most exciting email I’ve received lately (invite code redacted of course):
Thank you for your interest in Windows® Azure™.
Your invitation code is xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.
You can now sign up for a Windows Azure account at http://lx.azure.microsoft.com/fs. Please keep this email in a safe place.
This invitation to participate in the Windows Azure Community Technical Preview is subject to the following usage limits:
Total compute usage: 2000 VM hours
Cloud storage capacity: 50GB
Total storage bandwidth: 20GB/day
During the CTP, we reserve the right to suspend your account activity (this does not imply we will delete your cloud storage) if you exceed these usage limits.
Windows Azure Platform Team
You have received this email because you registered as being interested in the Community Technology Preview (CTP) of Windows Azure. As a participant in the Windows Azure CTP program, you will continue to receive emails related to that program unless you end your participation by emailing email@example.com with “END PARTICIPATION” in the subject line.
To ensure proper delivery of future updates please add firstname.lastname@example.org to your address book or safe-senders list.
One Microsoft Way
Redmond, WA 98052
I’m very excited to begin learning to develop against Azure in all my spare time. If I learn anything worthy of note here, I’ll share it. Just too many things to dabble in and too little time.
With the release of Silverlight 3 on Friday, I’m wondering whether the enterprise (that mythical stereotype) will adopt Silverlight 3 for line of business (LOB) applications. The official “what’s new” section included the following items that I found very interesting:
Improving Rich Internet Application Productivity. New features include:
- 60+ controls with source code : Silverlight 3 is packed with over 60 high-quality, fully skinnable and customizable out-of-the-box controls such as charting and media, new layout containers such as dock and viewbox, and controls such as autocomplete, treeview and datagrid. The controls come with nine professional designed themes and the source code can be modified/recompiled or utilized as-is. Other additions include multiple selection in listbox controls, file save dialog making it easier to write files, and support for multiple page applications with navigation.
- Deep Linking. Silverlight 3 includes support for deep linking, which enables bookmarking a page within a RIA.
- Search Engine Optimization (SEO). Silverlight 3 enables users to solve the SEO-related challenges posed by RIAs. By utilizing business objects on the server, together with ASP.NET controls and site maps, users can automatically mirror database-driven RIA content into HTML that is easily indexed by the leading search engines.
- Enhanced Data Support Silverlight 3 delivers:
- Element to Element binding : UI designers use binding between two UI properties to create compelling UI experiences. Silverlight now enables property binding to CLR objects and other UI components via XAML, for instance binding a slider value to the volume control of a media player.
- Data Forms. The Data Form control provides support for layout of fields, validation, updating and paging through data.
- New features for data validation which automatically catch incorrect input and warn the user with built-in validation controls.
- Support for business objects on both client and server with n-Tier data support. Easily load, sort, filter and page data with added support for working with data. Includes a new built-in CollectionView to perform a set of complex operations against server side data. A new set of .NET RIA services supports these features on the server.
- Improved performance, through:
- Application library caching, which reduces the size of applications by caching framework on the client in order to improve rendering performance.
- Enhanced Deep Zoom, allows users to fluidly navigate through larger image collections by zooming.
- Binary XML allows communication with the server to be compressed, greatly increasing the speed at which data can be exchanged.
- Local Connection This feature allows communication between two Silverlight applications on the client-side without incurring a server roundtrip: for instance a chart in one control can communicate with a datagrid in another.
I’ve just downloaded the bits and will begin exploring the new controls and just how easy it is or is not to build applications. My only criteria at the moment is whether or not the applications are as easy to build as a Windows Forms application. Obviously there are far more important evaluation criteria, but I’m wondering whether my stated criteria here will be the more common question raised in the enterprise. That is, can we build apps faster, easier, better with this? If not, I’m not sure the enterprise will get too awfully excited about it unless a clear case can be made for replacing the often time consuming, error prone web application development process with a simpler Silverlight 3 development process.
One way or another, I’m excited about Silverlight 3 and eager to dive in and have some fun.
After a long search for the right business process management platform that would allow us to integrate and extend with .NET, my team selected the Ultimus BPM Suite. The primary factors in the decision were the comprehensive nature of the solution which would allow us to deploy process management without requiring the use of some other tool such as InfoPath or SharePoint. Additionally, the solution would allow an incomplete process to be deployed and have assigned "process experts" make final decisions about business rules that may not have been clear or available at the time the process was designed.
I spent all of last week at their North Carolina offices in a "jumpstart" training course and met many of the key players at the company. Good people all around. Their technical expertise and willingness to listen to our team's concerns were impressive. There were a few minor UI glitches that we brought to their attention such as some scrolling issues when designing a process with limited screen real estate. The Ultimus people were genuinely interested in our input.
Having initially found and recommended the product, I was even more impressed with the product as we went through detailed training that brought out a number of features and illustrated an architecture that gave me even greater confidence in the product. This was particularly true in the area of integration points with existing systems and the ability to extend the process using custom developed controls or even process context aware ASP.NET pages hosted outside of the process server.
Our only disappointment was that some of the the training session content could have been improved as at times some of the class members were left a little lost and fell behind. This was in part because the "jumpstart" course was designed to fit a lot of material into a few days, but it was in part due to a lack of maturity in the content and presentation. We were very candid with the Ultimus training director about this and he took our input eagerly and promised improvement. Based on my conversations with key Ultimus employees, I believe that will happen.
If you are looking for a better way to deliver business process management and enterprise human-centric workflow solutions, you should consider Ultimus. There were other systems that were much more expensive that may have fit our requirements, but this was the only one we found that allowed us the freedom to extend and customize using our .NET dev skills without requiring coding skills to design and modify and manage processes.
I'll be writing more about Ultimus as our experience with the product continues.
The following spam message (less the links) skipped through my spam filters somehow. If you are not a native speaker of English, this message may appear to be in order if your skill level with the language is limited. Otherwise, I suspect you will find this text as amusing as I did. I have not modified a single character. Enjoy...
welcome to order,
Our company is one of the largest wholesalers in Asia ,and we sell products to all over the world,we have the authorithed licence issured by Chinese government,all products in our company ranges from varieties of electronic products like mobilephone ,television, laptop,DVD,GPS,MP3/4 to photograph video game ,scanner, motorcycle prohector and so on..
We have earned our reputation in the world through our honesty business practice in the past years,and obtained many compliments from our clients globally.As we are the direct wholesalers for many reputable brands in the world,so all the products purchased in our website are promised to be at a lower price with the high quality,also all the facuty products will be returned within 7 days,exchange within 14 days,repair within 2 years without charge.
We will be right here waiting for your visitation.
I hope that as software architects and engineers we are producing code and other textual artifacts that communicate with greater clarity and understanding of the language and idiom in which we express our ideas. Do we write documentation as badly because we can only communicate clearly in code? Or vice versa? It is something to think about.
One of the latest Apple ads makes fun of Microsoft for spending more on marketing than on fixing Vista. Time for all you fruit computer junkies to face some cold hard facts:
Let's take our most recent SEC filing quarter for both companies and compare spending on sales, marketing and administration versus research and development and then average that spending per employee.
Microsoft spends about $25,000 per employee on R&D and $43,000 on sales, marketing and administration.
A ratio of 1 to 1.72.
Apple spends about $16,300 per employee on R&D and $51,200 on sales, marketing and administration.
A ratio of 1 to 3.13.
So relatively speaking, Apple spends nearly twice as much on sales, marketing and administration as Microsoft does.
And that's one reason why I'm a PC. You can keep your fruit computer.
I just posted this on a linkedin group to which I belong, but I thought I'd also like to pose the question here.
I'd like to get a discussion started that attempts to define enterprise software architecture. My own definition seems to be evolvoing with every enterprise for whom I've worked. In the abstract, for me, enterprise software architure is the art of putting the pieces of multiple puzzles together into one great work of art.
There are many puzzles to choose from and every enterprise has a unique mix. There are multiple teams with various skillsets and experience. There are multiple business processes sometimes with unique and strange business rules. Technology platforms that differ, communications protocols that won't communicate with one another, languages, frameworks, compilers, IDEs, components, and hardware that vary from team to team and department to department. Ours is the task of taking these disparate and often incongruous pieces and molding them into one coherent masterpiece of technology and human resources to get more done, get it done better, quicker, cheaper and easier. And if we do our jobs well, it may be that no one will notice that we did it at all.
What do you think?