Are You Bound By The Second Law?

Entropy Increases. Or, _Chaos_ breeds.

Too often in Software Development the Second Law of Thermodynamics holds sway over projects.  Over programmers. Over tools.

Code is convoluted. Too many people worked on one piece of functionality over the years, noone leaving notes. Documentation is mangled. Direction has changed more than once in the past few months. The Project Leader never listens. The Project Leader does nothing but listen. Too many egos.


If you are bound by the second law, then I have three rules to follow.

1. Stop taking shortcuts.

I can hear your thoughts, because they are mine.

Don’t be stupid. Shortcuts are a necessary part of Software Development. We cannot know everything that will happen, and sometimes a bug must be fixed without taking into account all possible scenarios. Sometimes we work for people who demand crazy deadlines and goals.

These points are true. But they are no excuse.

Stop taking shortcuts, and when you have to take one, you at least be aware of what _should_ be done, and the reasons why you can’t do it that way.

2. Never Refuse To Learn

This is slightly different from "never stop learning".

You have to actively refuse to _stop_ learning. I see it too often. The mind shuts off immediately from the possibility that something more could be learned from the situation.

If you break yourself of the need to stop learning, then the second law loses power. It’ll go easier. Well, no. Not easier. But you’ll get better. Unless you know everything. Then I can’t help, ha ha.

3. Say Sorry To The Jerk

You need to go the extra mile with communication. This might be saying sorry. It might be asking if you’ve done anything wrong. It’s _touchy feely_ crap. But it works. People respond to emotion.

We’re not talking about blackmail, or manipulation. We’re talking about putting aside (even faking) your issues and pride and awesomeness and uncanny ability to be always right for the growth of a relationship.

To combat the second law, you have to learn how to say sorry, even when you don’t mean it.

I know. You might not hear these rules every day. Even if you do, how often are they broken?

It’s not enough to stick your head down and burrow onwards. Get up, look around. Software Development is more than code. It’s code. But it’s people. The best development successfully defeats the second law.

There you go.

The best development (developers) break the second law of thermodynamics.


The Best Developers Break The Second Law Of Thermodynamics

Heroes is TV 2.0

It has just struck me how important Heroes is as a piece of history. Not just because it’s awesome.

It is awesome.

And not just because it’s about super heroes with powers of regenerative healing and mind reading.

Heroes is TV 2.0.

Have you investigated just how broad the creation is? Tim Kring and his men have created something far more than a tv show. There are comics, blogs, arpgs (not sure if that’s the right term), and more.

I’m sure stuff leaked before about an episode that is then changed (like the names of the episodes) are part of the deal.

The TV Show is the main vehicle, but these other elements are all very important to Heroes. Story-telling has hit 2.0. Or maybe it should be dotStoryTelling. Ha.

Pimp Is A Bad Word

This post was conceived and written at least a month ago. It seems that now the site has been indexed by Google. But the picture was too good to let slip into the dim recess of my memory alone.


Over the past couple of weeks I have been working hard to get this site up to scratch, S(earch) E(ngine) O(ptimisation) -wise. It’s got some handy plugins, a Google Sitemap, and pings everything under the sun.

However, it seems I had something wrong even before that (this is my guess). Even searching for the entire Title Tag in Google returns no links to this place.

It’s (obviously now to me) the actual URL. More specifically, "Pimp". Bad word. Bad.

A sad predicament, especially considering I’ll probably have to come up with a different name for the site. Might have to start looking around for others who have faced this predicament.

A Simple Tip for Handling Clarion Errors

When manipulating data files in code, you can check after each operation for errors.

Here’s an example:


peo:EnteredDate = _:FirstDayOfYearset(peo:keyEntered,peo:keyEntered)



if ((errorcode() = 33) or (peo:EnteredDate > today())


elsif errorcode()




So what’s going on?

When you’re running an error check, there are certain errors that should be handled with special care, contextually based on the preceeding command.

After a next() I know that (errorcode() = 33) means "forgeddabout it, this baby is all done".

The other errorcode()’s to watch out for are

  • = 35 .. You’ve done a get() on a File, and the record (from the primed values + key in the get()) doesn’t exist
  • = 30 .. You’ve done a get() on a Queue, and the record doesn’t exist

Those three are the most frequent errors I check for.

Let’s lay them out one more time.

30 .. get() on Queue, record doesn’t exist.

33 .. next() on File, record doesn’t exist.

35 .. get() on File, record doesn’t exist.

Another quick tip from the simple minds at PimpMyClarion. Simple.

The Sleeper Awakes

Greetings my fellow earthicons.

I’ve been absent, it’s true. Many and varied have been the adventures experienced. Terrifying aliens, quantam light infarction travel, mega phaser guns, and killer drop-bears.

It’s true. I have been absent. But not without excuses. I have a hundred of them. The alien’s pet raptor-like-creature ate my work. I grew tired of meaningless programming when my brain was wired into the Borgmind. My kids needed the computer. The cockroaches took over our house. The Aliens with the pet Psuedo-Raptor came and ate the computer.

One of the reasons is .. Pimp My Clarion. I’ve released it just tonight, with posts that will go every day or so (timestamped to appear). It’s taken a while, mostly because at the end I decided to change hosting to Media Temple.

I have gotten through a big piece of functionality for Rasp. The last major piece for the next release is going to be harder I fear. Custom Content Pages. Basically a File created by Rasp, HTML (most probably). 

But along with this, there are other changes afoot. And more.

Aussie DevCon is arriving within the month. I’ve been preparing my talk for a while, but it’s still just points and notes. Lots of chopping and changing. Crazy ideas, firing one after the other make it hard to string stuff together normally. Have to go _monk_ (Zoolander ref.). Or, better, have to strip out all the crud and focus on the single purpose of what I’m talking about. Then fill it with better crud. :).

Alrighty, nuff for the mo.

What’s Doing? (News from the Clarion Block)

This post was written, as the title suggests, at the end of March. At that time the site’s creation was still underway. Please forgive the blurring of timespans :).

This site isn’t going to be a news aggregator. ClarionMag and TomRuby do a pretty sweet job of that already.

What we are going to do here is offer opinions. On the news. And on other stuff.

"What’s Doing" posts will take a look at noise on the newsgroups, at product releases, at community happenings.

But again, this is opinions (on the news).

Clarion Desktop


Okay, I’m a fan. Unabashed.

If you’ve been following the newsgroups, then you’ll see Gary has been working pretty flat out to get ClarionDesktop functioning on Vista (while adding a nice list of new functionality).

One Hazah! to Gary for his work. If you don’t already have ClarionDesktop (as a Developer), then you should. Not just because you are supporting Gary. This product is going to be one of the leaderboards for the influx of (potential) developers when Clarion 7 is released and pimped.

It’s a hub, an information presenter. And people want to know. I want to know that NetTalk has been updated. And I’d much prefer it happened magically (the transfer of that information to my brainpan).



The big kahuna of templates. This sucker is well publicised, and well supported.

Capesoft definately know how to support. They are polite and helpful BUT (and this is something hard to find) they will push you to think about what you’re asking. Most of the time now, I don’t just fire of the question to Bruce as soon as it appears. Otherwise I’m liable to feel like a fool because I didn’t see the template option, or regerenate .. or .. READ THE MANUAL.

If you visit the 3rdParty newsgroups, especially of late, NetTalk dominates the conversation. This is a good indicator of two things. It’s popularity, and it’s complexity. There might be other _things_ you can think of, but this is my opinion.

The popularity is just candy. The complexity, well I don’t think I’ve ever seen a NetTalk question go unanswered. Bruce (he’s the one working on it at the moment to the best of my knowle(d)ge) responds quickly and with clarity.

Bruce Barrington


I’ve often wondered about the mysterious creator of Clarion. My colleagues know a great deal about the beginnings, and I’ve forgotten most of what they told me.

This week on the newsgroups Nick posted this question,

What ever happened to Bruce Barrington (creator of Clarion) and the TopSpeed group? 

Here’s what I gleaned, in an unspecific order:

– Owned/Ran a Hotel in the Florida Keys

– Sold the Hotel (

– Russ begins to pun, others join in

– Tony gives us the lowdown on mouth exit grammar (US="barf", OZ="chuck up", Yorshire="Wommit")

– Jan gives us a possible location, Tibet. 

Bruce would be an interesting man to meet. As said, I don’t know much of the history, only that some of it wasn’t pretty.

ClarionMag has an article written a long time ago. It was interesting that all that time ago (1997) there was excitement that TopSpeed had hired a new marketing company. I’d like to find out what happened there.

The Story of a Homegrown Clarion Template

The simplest template in my arsenal is the one you’d find most in the code.

I discovered early on it was a good idea to send the (offending) Procedure Name through to the error logging.

_AddError('MyAwesomeProcedure','Stupid Error Subject','Stupid Error Body');

After too long, I decided to do something about always having to string type as a parameter to the error logging function.

But what to do? You’ve probably already seen what took me at least 2 years.


I wrote a little template that places a local var (_:ProcedureName) into every procedure in the app (globally added). This var is populated with the Procedure Name, and now i never have to change that parameter.


#!= Logging Template


#TEMPLATE(SA_Logging,'Stus Templates: Logging, Errors and Otherwise'),FAMILY('ABC'),FAMILY('CW20'),FAMILY('Legacy')





#EXTENSION(Global_GetProcedureName,'Global Template to add the GetProcedureName template to each procedure'),APPLICATION(Local_GetProcedureName)


#DISPLAY('Global Template for GetProcedureName functionality')


#PROMPT('Disable GetProcedureName Code',CHECK),%NoGPNCode,AT(10)




_:ProcedureName string('%Procedure')




#EXTENSION(Local_GetProcedureName,'_:ProcedureName == the Procedure Name'),PROCEDURE


Simple. Sweet. Saves me heaps of time.