Skip navigation.

Feed aggregator

Tag wikis on StackOverflow

Jeff Kemp - Mon, 2010-08-02 01:00
StackOverflow now allows the creation of wiki articles and tag synonyms. I’ve gone ahead and started a few articles about a few topics dear to my heart: oracle plsql apex – synonyms: htmldb and application-express These articles are not intended to be replacements for the documentation or Wikipedia, but primarily as a guide for people [...]

The Templating Way

Jeff Kemp - Thu, 2010-07-29 18:00
Today, grasshopper, you will learn the Way of the Template. The Templating Way is the path by which complex output is produced in a harmonious fashion. The Templating Way does not cobble a string together from bits and pieces in linear fashion. htp.p('<HTML><HEAD><TITLE>'||:title ||'</TITLE></HEAD><BODY>' ||:body||'</BODY></HTML>'); The Templating Way separates the Template from the Substitutions; by this [...]

A fascinating SQL problem

Jeff Kemp - Thu, 2010-07-29 00:00
Can you solve this problem in SQL – i.e. without resorting to a procedural solution? SQL combine multiple identifiers to create a group id for duplicate records “I have a data extract with three different identifiers: A, B, C Each identifier may appear in more than one row, and each row may have one or [...]

Priority #1: Keep it simple

Jeff Kemp - Wed, 2010-07-28 03:00
Every place has a different way of assigning priority and/or severity to defect reports – some bigger places have many different ways (unfortunately). I’ve not been subjected to Prince2 training so here’s my take on this subject. I reckon, the simpler the scheme, the more likely it will be used consistently. Every defect should have [...]

Current Record Visual Attribute problem

Jeff Kemp - Mon, 2010-07-26 22:00
If you have a multi-record block, and you use the handy Current Record Visual Attribute (CRVA) to set, say, a different background colour on all the items in the currently selected record, you may have run into this problem. If you want to conditionally switch the visual attribute for certain items, at the item instance [...]

Forms Library: PKG_FORM

Jeff Kemp - Sun, 2010-07-25 22:00
This is just a post to document a standard library that I like to create in Oracle Forms, if equivalents are not already available. Suggestions or critiques are welcome. “No warranty is express or implied about the suitability of this code for any purpose.” Specification PACKAGE PKG_FORM IS PROCEDURE centre_window (windown IN VARCHAR2); PROCEDURE check_record_is_saved; [...]

Forms Library: PKG_ITEM

Jeff Kemp - Thu, 2010-07-22 22:00
This is just a post to document a standard library that I like to create in Oracle Forms, if equivalents are not already available. Suggestions or critiques are welcome. “No warranty is express or implied about the suitability of this code for any purpose.” Specification The main point of this package is to (a) easily [...]

Negative, Captain

Jeff Kemp - Wed, 2010-07-21 19:13
Seen in the wild: ... WHERE substr(amount,0, 1) != '-' If you wanted to query a table of monetary transactions for any refunds (i.e. where the transaction amount is negative), how would you do it? Perhaps you’d think about avoiding problems that might occur if the default number format were to change, hm? (before you say [...]

I&#8217;m off to InSync10

Jeff Kemp - Mon, 2010-07-12 18:00
Perhaps you were introduced to Apex in a similar way to me. When I started using Apex, I was pleased to see a good selection of simple themes and templates I could use straight away. There was no need to worry about creating a consistent look-and-feel across my applications, I could dive right into building [...]

If at first you don&#8217;t succeed&#8230; it&#8217;s impossible.

Jeff Kemp - Mon, 2010-07-12 00:00
How many times have you tried something, got either an error or unexpected results, and decided what you were trying to do was not possible? Have you later on discovered someone quietly doing the impossible? I think this phenomenon is a form of the “correlation-implies-causation” fallacy. Unfortunately, this seems to happen too often, if the [...]

Quick Draw Fail

Jeff Kemp - Tue, 2010-07-06 19:00
It rarely pays to answer too quickly. Yesterday’s question at the PL/SQL Challenge was about aliases for expressions in cursor-based record types. DECLARE CURSOR profitable_internet_stocks IS SELECT SUM (share_price) FROM nasdaq_listings WHERE profits > 0 AND sector = 'INTERNET'; few_and_far_in_between profitable_internet_stocks%ROWTYPE; BEGIN OPEN profitable_internet_stocks; FETCH profitable_internet_stocks INTO few_and_far_in_between; CLOSE profitable_internet_stocks; /*[display_statement]*/ END; The question asked [...]

Apex Browser Requirement

Jeff Kemp - Mon, 2010-06-28 17:30
Whereas Apex 3.2.1 (and earlier, I think) required one of: Microsoft Internet Explorer 6.0 or later version Firefox 1.0 or later Apex 4.0 requires: Microsoft Internet Explorer 7.0 or later version Mozilla Firefox 3.5 or later version Google Chrome 4.0 or later version Apple Safari 4.0 or later version While they’ve dropped support for IE [...]

Where Am I…

Bar Solutions - Sun, 2010-06-27 05:12
.code, .code pre { font-size: small; color: #00007F; font-family: “Courier New” Courier monospace; background-color: #ffffff; /*white-space: pre;*/ } .code pre { margin: 0em; } .code .rem [...]

Unit Test != Requirements

Jeff Kemp - Fri, 2010-06-25 03:00
Are one or more usage examples enough to specify the requirements for something? For example: rtrim('123000', '0'); would return '123' No, as can be seen here: Oracle 8, SQL: RTRIM for string manipulation is not working as expected (Stackoverflow) When I read that question I thought of TDD (Test Driven Development), something I think I [...]

Querying for Contiguous Series

Jeff Kemp - Thu, 2010-06-24 22:30
A deceptively simple question: How to select the first continous group of rows using Oracle SQL (Stackoverflow) The solution given by Malgrat works nicely. He generates a “gap” column which detects changes in the data, then uses a running total to restrict the results to the first “group”. I haven’t come up with a more [...]


Jeff Kemp - Tue, 2010-06-22 22:30
I just wanted to bring attention to some very interesting discussion (that’s been going on for years now) regarding Table APIs (TAPI) versus Transactional APIs (XAPI). Some very nice answers, as well as a bit of controversy “Understanding the differences between Table and Transaction API’s” (Stackoverflow) “Considering SQL as a Service” (AskTom) Business Logic APIs [...]

My favourite 11g thing

Jeff Kemp - Tue, 2010-06-22 03:00
For too long I’ve muddled my way through using the built-in “explain plan” feature of the IDE-that-shall-remain-nameless provided by the client; but now that they’ve successfully upgraded from 9i to 11g, I’m now in a much better place. No longer will I wonder which table each step in a plan refers to, or what filters [...]


Jeff Kemp - Sun, 2010-06-20 22:30
I’ve enjoyed reading and participating in StackOverflow for over a year now. With the introduction of Area51, there is now the possibility of starting a new Q&A site for all things Oracle – as pointed out by Rob Van Wijk and Gary Myers. Sure there are other fora such as OTN, but they don’t have the [...]

Architecture as a navigation system

IT Eye - Wed, 2010-06-16 04:52

Ever tried explaining architecture to a layman? How did you do it? Did you, at some point, refer to the original field of architecture – the one associated with names like Gaudí, Koolhaas and Hundertwasser? Maybe the layman brought it up himself? Did it help the discussion?

Probably it did, actually. While IT and Business architecture isn’t really the same, the original field of architecture works well as a metaphor. It’s such a natural comparison that it doesn’t feel as a metaphor. Plus, it fits kinda neatly – as long as you don’t look too close. And that’s exactly where the metaphor loses its value, both because the layman’s knowledge of brick-and-mortar architecture proves inadequate and because, in the end, the fields are just not the same.

Still, metaphors have value in communicating different aspects of architecture. So I’d like to explore different perspectives on architecture using different metaphors, starting with: navigation!

‘Turn left after the next project, onto new middleware street’

Most of us know what a navigation system is, right? Disregarding the humorous mistakes these things can sometimes cause, they can make our lives a lot easier. Just type in your destination, your preferred type of route, and it will calculate a route for you. Easy as pie, isn’t it?

Well, no not really. There’s a lot going on below the surface which needs to be arranged for a navigation system to function properly. Think about it:

1)      How would you like to travel? Shortest distance? Fastest route? Avoiding highways? By pre-set waypoints? Only traveling outside rush hours? There are so many options, all of which affect how ‘good’ a certain route is.

2)      The environment isn’t static, but dynamic. Traffic jams grow or dissolve, road work temporarily closes down stretches of road, or 50.000 football fans celebrating their team’s first championship ever bring your progress to a standstill. So, you need to be in touch with the world – to be connected – and to constantly recalculate your route.

3)      How do you know you’ve arrived at your destionation? The system will need both a ‘test’ – co-ordinates – and a ‘method’  - GPS – to determine whether or not you’ve reached your destionation.

4)      Last but not least, there’s you! Because even if the system gives you a perfect route, with perfect driving instructions, it does not drive the car. That´s what you are for – the driver. And you can choose to do whatever you want, including completely ignoring the instructions and taking a different route.

Comparison to architecture

So, what does this comparison show us about architecture and the process by which it is implemented? Your destination is your business strategy – it’s where your company wants to be. The actual architecture are the co-ordinates, or the manner in which you can test if you have arrived at the destination. The route are the changes you make to your company. It could be implementing new middleware, changing process owners and service-enabling existing applications. I’ll leave the interesting question of who the driver is in this metaphor for later. Let’s first look at those 4 aspects:

1)      The preferred route. The same thing exists in IT architecture. Do you want to use current personnel and expertise? Would you prefer to sit out your system lifecycles before updating them? Do culture changes preceed or follow technology changes? Questions that impact not only the timing, but also the architecture itself!

2)      The connection. This is so very crucial! An architecture team needs to know what’s going on. Where do projects stall (traffic jams), what projects are going on that should work under architecture (road work), what stakeholders are likely to resist the architecture (the fans blocking the highway), all of that influences the route while driving it.

3)      The destination. As said, the business strategy is your destination. The architecture itself, with all of its principles, guidelines and models, is how you test whether or not the company – or rather, its operations – is ‘there’. Far more complicated than in navigation, indeed.

4)      The driver. Someone drives the car. That someone can’t be the architect – he’s the algorithm, the heart of the navigation system. So who is? Well, looking at the metaphor, shouldn’t the driver be the one who actually wants to be at the new destination? And, thus, a representative of the organization, such as a board of directors or a ‘business board’ or something?
But most importantly: the car isn’t being controlled by the navigation system, but by the driver. This holds true for architecture as well: the architect isn’t driving the organization, but the business representative is. They have to choose, they are in control of the route.

Lessons learned

So, what can we learn from this metaphor? A quick summary…

  • An organization will have to do the driving themselves. For which they should be happy.
  • You can deviate from a route. A good architect will lead you from your new position to your destionation. Just give him/her time.
  • Of course, if they want to do that, architects have to know what’s going on, or they can’t adjust the route to the current conditions. So keep them in the loop.

Any more lessons (or metaphors) that are worthwhile? Please comment!

Share and Enjoy: Google Bookmarks DZone LinkedIn SphereIt StumbleUpon Technorati

Permalink | No comments | | Technorati | digg | dzone | StumbleUpon | Architecture

Single-Point-of-Definition by Example

Jeff Kemp - Thu, 2010-06-10 23:00
Steven Feuerstein lists seven excellent “Golden Rules” in his presentation (via Eddie Awad) and says “Don’t repeat anything. Aim for a Single Point of Definition for every aspect of your application – formulas, business rules, magic values, SQL statements.” giving the following code as exhibit A: (source) I’m guessing in his presentation he spoke about various [...]