I have started doing some re-working of the cranehouse.net site. For starters, I’m moving the blog to the root level. (Redirecting to the blog from the root.) And I’m working on updating some of the other content and putting it in “Pages” that can be accessed from the blog. I realized that most of what I do is in the blog anyway. So now I’ll have a consistent interface for the site. Later I’d like to spend some time playing with the style sheets and come up with something non-generic.
Archive for May, 2007
Site Update
Wednesday, May 30th, 2007Shipping Software Before it is Ready
Thursday, May 24th, 2007I had a good laugh this morning. On the front page of the May 15th issue of SD Times, there’s an article entitled “Orcas Sill Lost at Sea On Beta Eve”. Orcas is the next version of Microsoft’s Visual Studio tool for developers. The article quotes Soma Somasegar (Microsoft VP) as saying “We are not in the habit of shipping software before it is ready,” as an explanation for the software delay. Ha ha ha. You crack me up. Wait, he wasn’t joking. The strong perception from many people in the industry is that Microsoft does EXACTLY THAT! They routinely ship software before it is ready. The second version of a product is usually considered the first truly usable one. Nice try, Soma! I think you’re going to have to do a bit better than that. Microsoft has so many smart people and so much money—just for once I’d like to see them under-promise and over-deliver.
How Things Work
Tuesday, May 22nd, 2007“For most of us, it doesn’t matter to us whether we understand how things work, as long as we can use them. It’s not for lack of intelligence, but for lack of caring. In the great scheme of things, it’s just not important to us. Web developers often have a particularly hard time understanding—or even believing—that people might feel this way, since they themselves are usually keenly interested in how things work.”
- Steve Krug in Don’t Make Me Think, (page 28)
My wife has been telling me for a while that other people are not like me. I think she’s right. And I now believe that most people don’t really want to figure out how things work. But as is so well expressed in the above quote, I don’t understand why. It is much easier to figure out how software works than to figure out how people work.
Simplicity
Thursday, May 17th, 2007What is an Application Framework?
Monday, May 14th, 2007I’m teaching a class tomorrow on the application framework we’ve been developing. So in the process of preparing for the class, I was looking for some supporting information and came across these helpful definitions and wanted to make note here.
From Design Patterns by Gang of Four:
“A framework is a set of cooperating classes that make up a reusable design for a specific class of software. … A framework dictates the architecture of your application. … The framework captures the design decisions that are common to its application domain.”
From Object Solutions by Booch:
“Where possible, employ existing mature frameworks in your system. If such frameworks do not exist, and if you expect to build a family of programs for your domain, consider creating your own framework. But beware: building good frameworks is hard. A framework does not even begin to reach maturity until it has been applied in at least three or more distinct applications.”
Prograph
Friday, May 4th, 2007That last post got me thinking…coolest programming language I’ve ever worked in? Prograph, hands down! Of course no one has ever heard of it … except now there’s Wikipedia:
Tiobe Index
Friday, May 4th, 2007I came across this index of programming languages today:
http://www.tiobe.com/index.htm?tiobe_index
I was struck by a couple things. Firstly, there were some languages in the top 50 that I had never even heard of. But mostly I was surprised by the diversity and the variety. Java in the top position had only 18% and the percentages drop off pretty quickly. It makes me think that when it comes to selecting a programming language, the number of options is growing. What language do you want to code in today?
Layering
Thursday, May 3rd, 2007From Software Architecture – Perspectives on an Emerging Discipline by Shaw and Garlan, page 25:
On the topic of using layers in a system:
“A layered system is organized hierarchically, each layer providing service to the layer above it and serving as a client to the layer below.”
On the benefits of using layering:
“First, they support designs based on increasing levels of abstraction.”
“Second, they support enhancement”
“Third, they support reuse. Like abstract data types, they allow different implementation of the same layer to be used interchangeably…”
On the disadvantages of layers:
“And even if a system can logically be structured in layers, considerations of performance may require closer coupling between logically high-level functions and their lower-level implementations. Additionally, it may be quite difficult to find the right levels of abstraction.”
I would add that having increasing levels of abstraction can be very useful when it comes to tackling complexity. I also like layering because it shares many of the characteristics of Object Oriented programming.