secretGeek .:dot Nuts about dot Net:.
home .: about .: sign up .: sitemap .: secretGeek RSS

Q: Where am I?

A: You're sitting at a computer, reading Leon Bambrick's personal thoughts on programming.

recently...

Fri, 07 Jul 2006 00:46:54 GMT

Cascading File Types

A different kind of Microformat

Say you've just created an application, and it uses a new type of file. This new type of file will be identified by its very own file extension, associated with the new app.

For example, you might use a ".snapper" file extension, even though the file itself is just "xml".

The ".snapper" filename is not very helpful to a user, as it hides the fact that this is an xml file. The only way for a person to work out that this is an xml file, would be to look inside.

Conversely, a ".xml" file extension would be unhelpful to the operating system, as it hides the fact that this is a snapper file. Again, the only way to work out that this is a snapper file, would be to look inside, and find the schema that this document matches (if any) (knowing me, probably none... sorry).

And this is a common scenario, particularly with variations of xml files.

So i'm suggesting a new micro-format, and this micro-format has nothing to do with the current microformat buzz on the internet. This is to do with multiple file extensions, set theory, cascading inheritance, and all sorts of tricky stuff. Yet it's very simple.

You can pick it up in under a minute.

(continues...)

Read On...


Thu, 06 Jul 2006 04:36:27 GMT

XML isn't a mark-up language.

There. I've said it. XML isn't a mark-up language. I've said it twice. I must mean it. I'd better explain myself, quick.

This thought has been brewing inside my brain for too long now.

XML has always been called a mark-up language, and it's derived from SGML, which is also referred to as a mark up language.

And maybe if enough people speak an untruth often enough, it becomes a sort of quasi-truth. A pseudo factoid, maybe.

My point is... [continues... long]

Read On...


Thu, 06 Jul 2006 01:01:14 GMT

Dragging and Dropping are not a good idea.

Have you ever dragged a folder from one place to another, when you didn't mean to?

Have you ever accidentally dropped a file into the wrong folder?

If so, join the Society For People Who Have Stuffed Up While Dragging And Dropping.

At the SFPWHSUWDAD, we will give you all the support you need.

To join us, just write your name on the back of an envelope, and drop it in a post box near you.

(Do try to be very careful not to drop it in a rubbish bin adjacent to a post box though. This has been happening to a lot of our members recently, and we are not sure why).

(Also, if you drop in to see us, be careful not to knock on the door next to ours. That's the offices of "The Society For People Who Get Angry At Anyone Who Knocks On Their Door", and sometimes they can be downright grouchy.)

Read On...


Wed, 05 Jul 2006 02:14:05 GMT

You Learn Something (Scary) Every Day

Well it turns out you can actually use 'goto' statements in C# !!

    private void button1_Click(object sender, System.EventArgs e)

    {

        goto done;

        MessageBox.Show("Bet this doesn't get shown!");

        done: return;

    }

Conversation overheard in the next cubicle:

I didn't realise that VB.net still has 'goto' statements. Scary.

Want to know something even scarier?

(pause for a beat.)

C# has a goto statement too.

Really!?

Yeh, but no one ever uses it.

Why not?

Cause you'd be shot. That's why.

Read On...


Wed, 05 Jul 2006 01:24:34 GMT

DotCom versus Web 2.0

DotCom:

Whoever builds the first Online Pet Food Store targeted not at people, but Dogs, will OWN the market Forever!

Let's assign this thought a picture:

dotCom

Web 2.0:

Whoever builds the first Ajaxian Social Application targeted not at people, but Dogs, will be thought-leader in that knowledge domain Forever!

The picture for Web 2.0 would be:

web 2.0

Read On...


Sun, 02 Jul 2006 22:05:21 GMT

How To Read "Functional Programming For The Rest of Us" For The Rest of Us

The article "Functional Programming For The Rest of Us" is a great article, but it scares people off because it is long and has a very very slow start.

But it can be read quickly, if you follow these instructions.

First: Learn this little definition:

Got it? Functions in, functions out. Rather than your typical values in, values out.

Now -- when you go to read Functional Programming For The Rest of Us, don't start at the beginning. Here's a link that takes you to the right place to start, a few pages in:

Start here!

This way you'll be starting at the subheading that looks like this:

Functional Programming (subheading)

The style settles down from there, and you won't need to read about Plato taking a walk in the park. Unless you want to, of course ;-)

Read On...


Sat, 01 Jul 2006 07:25:41 GMT

4 Lazy Ways To Stop Yourself Being Lazy

Here are four tricks I use to try and encourage myself to write the correct code at the right time.

  1. Use the Compiler to catch work that isn't done yet.
    • Before writing a method, write the code that calls that method.
    • That way, when I try to compile, errors will be reported for any methods that aren't yet written.
  2. Write a 'TODO:' comment.
    • That way I can still compile but can track down the items that aren't done yet.
  3. Write a Unit Test that catches each problem as it is foreseen.
    • That way while my code might compile, nUnit will tell me that the full story is a little more complex.
  4. Use Debug.Assert statements to hard-code your assumptions. Helps you find when your assumptions are wrong.

You can bounce from any one of these methods to any other. The order can go something like this:

  1. First write 'pseudo code' with each line labelled as 'TODO:'
  2. Convert the pseudo code into calls to fictional methods/properties. (Methods/properties that aren't written yet).
  3. Next, write the outline of these methods, but populate them with TODO's.
  4. Maybe now (or sooner) write unit tests to test the empty methods.
  5. As the tests are run, add some todo's or even some code to the methods.
  6. ...Continue compiling, writing, testing, planning -- all together.

Read On...


Fri, 30 Jun 2006 04:32:07 GMT

Brisbane Thai Restaurant

My brother-in-law has recently opened a Thai restaurant in Brisbane, (in Paddington, a very funky suburb)

I've eaten there three times now, and love it more and more each time. If you're in Brisbane, please go along and take all your friends. Mention the website special offer and get a free serve of spring rolls. (Details here).

Of course I'm biased to like the place. But don't forget that I'm a naturally cynical and critical person. So i think my recommendation still has some validity. ;-). Anyway, go there, eat that, enjoy the place, check out the way they specially sculpt the carrots and the potatoes. it's worth the visit for that alone!

The house special is number 26, "Seafood Madness". Damn I'm salivating just thinking about it.

Read On...


Wed, 28 Jun 2006 03:56:58 GMT

KeyTraino

KeyTraino is a tiny and super useful utility.

KeyTraino knows all the keystrokes for all the applications you use.

KeyTraino knows all about the office suite, many business applications, many development tools (even query analyser!)

When you're using an application and you hold down the control key, the alt key, or the WinKey... KeyTraino provides a friendly semi-transparent popup window (don't worry -- no animated paperclips) that gives you all the options available to you for the current application.

When you hold down a function key -- KeyTraino tells you what that key will give you, and what it *can* do if you combine it with other keys...

(continues...)

Read On...


Tue, 27 Jun 2006 22:08:40 GMT

You Will Set Goals!

You Will Set Goals!

You Will Set Goals!

You Will Do Your Best!

You Will Set Goals!

Continues...!

Read On...


Mon, 26 Jun 2006 04:12:13 GMT

Very detailed and serious comparison of functional and imperative programming styles

Very detailed and serious comparison of functional and imperative programming styles

Alright, it's not a detailed and serious comparison of functional and imperative programming styles.

It's just a modification of a picture that accompanied an article in american scientist magazine, written by Brian Hayes.

I've been thinking about functional programming since i read 'functional programming for the rest of us', last week. fascinating topic for your geeky-minded kid like me.

'Currying' and 'Pattern-Matching' look like two pieces of syntactic cleverness that could be baked straight into any .net language.

Read On...


Fri, 23 Jun 2006 05:20:41 GMT

How the 'ref' keyword affects the use of objects

This is something that doesn't make any sense until you've stepped through it carefully. And it's something that i didn't understand correctly (or hardly think about) when I was programming in VB.net.

What exact difference does a ref keyword make, when applied to a parameter that is a reference type anyway?

[VB Note: substitute the keyword ref for ByRef, and know that a C# parameter without a ref keyword is considered ByVal by default. So the sentence above could read: "What exact difference does a ByRef keyword make, when applied to a parameter that is a reference type anyway? (for example a class)"]

First up, a re-cap of how 'ref' affects 'value' types....

(continues...lots of code examples!)

Read On...


Thu, 22 Jun 2006 04:54:51 GMT

What does 'yep' mean, exactly?

Q:

  What does 'yep' really mean?

Does it mean "Yes, thank you for telling me, i understand?"

Does it mean "I don't understand a single thing you just said, but I'm polite and you seem to like the sound of your own voice, so please keep going?"

Or does it mean "I already knew that. You've just wasted your breath talking to me. Shut up in future, big nose."

A:

  Yep

Read On...


Thu, 22 Jun 2006 00:43:50 GMT

The Top 0 Things You Should Know About Nothing

Overwhelmed by all the top n articles I've seen about obscure, yet fascinating topics, i've decided to give you something simpler, more digestable, and far more easy to scan.

Yes, it's the Top 0 Things You Should Know About Nothing.

Nothing is a big topic, and many people have contributed their ideas to our perception of it. To cover nothing in its entirety would take an unseemly long amount of time.

So we'll begin and end witha very short summary of nothing, covering only 0 topics. Here we go.

That was quick. For further reading here's a list of no links about nothing. Here they are:

And finally I'd like to thank the following 0 people, who contributed nothing to this article:

Okay, I hope I haven't left anybody out.

Thanks for nothing.

Read On...


Wed, 14 Jun 2006 23:08:15 GMT

A friend is getting into .Net -- what's the best thing to read??

The best thing to read, the absolute most essential thing, is the error messages.

When an exception gets raised, don't just call a friend and ask "hey .net is broken can you fix it for me?" -- instead, read the message. google the message, investigate and learn...

best readin' there is those exceptions! full o good learnins.

(this post inspired by K.A.Evans, .NET: The Gospels)

(n.b. the phrase 'full o good learnins' was specifically designed to annoy mike pope;-).

Read On...


Wed, 07 Jun 2006 00:39:23 GMT

Collation Is Evil

You know it.

Read On...


Tue, 06 Jun 2006 01:43:14 GMT

6 Tools for Documentation++

class designer

There's at least 6 tools we use at advantech for automating our documentation. That's a lot of tools. They are:

  1. Ghost Doc from Roland Weigelt

    for quickly adding descriptive comments to code.

  2. NDoc

    For turning XML comments into HTML. Generics not yet supported. And to get it to work with .Net 2.0 you have to jump through a flaming hoop while juggling knives between your teeth. (There's also a powertoy for VB)

  3. Class Diagram feature in Visual Studio 2005

    For reverse-engineering pretty pictures of classes. (Example at right)

  4. Visio

    For ER-Diagrams [and tracking schema changes]

  5. XDK

    Tool for building help files from inside MS Word.

  6. Copy Source As HTML

    For when code needs to be pasted as HTML. Installer for vs2005 version here, with instructions on using it.

Any favourites of yer own?

Read On...


Tue, 30 May 2006 03:53:44 GMT

Visual Poetry Studio 2005

there are no usable controls in this group. Drag an item onto this text to add it to the toolboxthere are no usable controls in this group. Drag an item onto this text to add it to the toolbox

It's not often that you see 'visual poetry' at work in a microsoft product.

Here's an example from Visual Studio 2005

Someone put a bit of time into getting this effect just right.



Read On...


Fri, 26 May 2006 02:45:14 GMT

Why Worry? (Ajax Edition)

An ajax version of last week's Why Worry? post

Requires Javascript ;-)

Read On...


Wed, 24 May 2006 21:49:08 GMT

Marketing Weasels Who Write Code

code snippet form a microsoft ad

When I flick through a geeky book I'm more likely to browse the code snippets than the text.

Unfortunately, marketing weasels are aware of this. And hence, you see a lot of dumb ads that use Source Code to hook you in.

The amusing thing, for me anyway is that the code they use is always broken in some way.

Here's the code from a current microsoft ad i saw here:

Public Function ProjectCompletionTime() as String
  If DevTool <> "Visual Studio 2005" Then
    return "Sorry, I'm going to have to cancel tonight"
  Else If DevTool = "Visual Studio 2005" Then
    return "I'll meet you for dinner at 7pm"
  End if
End Function

Okay -- this is probably one of the better pieces of code i've seen in advertising. But there's still about five things wrong with it.

(Continues...)

Read On...


Wed, 24 May 2006 01:53:32 GMT

ReDim for C#, using Generics

As an exercise in using Generics, I wrote a ReDim function that works in C#.

Bugs, feedback, criticism, welcome and appreciated.

/// <summary>

/// Redimensions the length of array down(or up) to equal "length" (parameter)

/// This is based on the VB "redim" function, and like that one it does

/// cause a memory overhead and a performance hit. So please use this one

/// sparingly. For example, don't call it in a loop.

/// (Hint: prefer List<T> with it's .Add() method, for frequently redim'd lists)

/// </summary>

/// <typeparam name="T">The Type of Array to be re-dimmed</typeparam>

/// <param name="arr">The array to be re-dimmed</param>

/// <param name="length">The new length of the array</param>

private void ReDim<T>(ref T[] arr, int length)

{

    T[] arrTemp = new T[length];

    if (length > arr.Length) {

        Array.Copy(arr, 0, arrTemp, 0, arr.Length);

        arr = arrTemp;

    } else {

        Array.Copy(arr, 0, arrTemp, 0, length);

        arr = arrTemp;

    }

}

Read On...


Tue, 23 May 2006 21:38:29 GMT

Amphetamines for Query Analyser

But not the sort of amphetamines that destroy your nervous system and send you to an early grave.

SQL Prompt from red-gate gives you intellisense-style behaviour inside Sql Query Analyser. Amazingly, you can download Sql Prompt for free. Not a time-limited or feature limited version, but the full version. Requires registration -- but if you instruct them not to spam you, they won't.

This is a genuine endorsement by the way, not a sponsored one. ;-)

continues with animation...

Read On...


Wed, 17 May 2006 01:40:39 GMT

Why Worry? (Programmer's Edition)

as a programmer there are only two things to worry about:
whether your code has bugs or is bug-free.

if your code is bug-free then there's nothing to worry about.

if your code has bugs then there's only two things to worry about:
whether you can fix the bugs or whether you can't.

if you can fix the bugs then you have nothing to worry about.

if you can't fix the bugs then you have only two things to worry about:
whether you can find someone else to fix the bugs or whether you can't.

if you can find someone else to fix the bugs then you have nothing to worry about.

if you can't find someone else to fix the bugs then you have only two things to worry about:
whether the bugs will get you fired or whether they won't.

if the bugs won't get you fired then you have nothing to worry about.

if the bugs do get you fired then you'll be so busy catching up with old friends at the unemployment office that you won't have time to worry.

so why worry?

(The original wording of this was on a poster at my Grandmother's house. Exposure to this logic as a small child might be what turned my brother and i into programmers.)

Read On...


Fri, 12 May 2006 04:29:54 GMT

How To Stop Being So Damn Fat

And finally: here's the secret of weight loss.

continues

Read On...


Fri, 12 May 2006 04:16:10 GMT

New Invention: The EzyFridge

the Ezy Fridge

(thanks to google sketchup, i can finally unveil the details of my latest invention)

Are you tired of unpacking all those groceries when you get back from the shops?

Are you sick of breaking your back, putting the vegies in the crisper and the cheese in the cheese area??

Are you fed up with finding space in the door to keep the milk?

Just open the hatch on the front of your EzyFridge, and tip those groceries in!

Done!

Coming soon:

the Ezy House

The EzyHouse!

Tired of having to unpack all your possessions everytime you move?

With the EzyHouse, just open the hatch and tip your possessions in.

Read On...


Wed, 10 May 2006 00:17:04 GMT

How the Australian Tax Changes Will Affect Your 'Take Home' Pay

how the new australian tax rates will affect youhow the new australian tax rates will affect you

Courtesy of Advantech Software, here's a spreadsheet for working out the affect of the australian tax changes (announced in yesterday's budget) on your wage.

You can expand it to see the details of the calculation. Or leave it collapsed to K.I.S.S.

Thanks to MG and SS.

Download Tax Rates Calculator (zipped up excel file)

Read On...


Tue, 09 May 2006 02:12:59 GMT

VB.Net Tip: IIF is a function, not a language feature

I think i've found a nice way to demonstrate this age old gotcha in VB.

What result do you expect from this line of VB code?

IIf(True, MsgBox("hello"), MsgBox("goodbye"))

(continues...)

Read On...


Sat, 06 May 2006 05:49:15 GMT

TimeSnapper 2.0 is near to completion

This article, "Stardock's 10 rules for success" puts it quite nicely:

TimeSnapper's chief developer, Atli, ... (continues)

Read On...


Sat, 06 May 2006 02:46:19 GMT

The Actual Minimum Every Gmail User Must Know About Unicode and Character Sets (Excuses welcome)

I've had 'garbled' looking emails turn up from time to time (particularly due to the world-wide nature of TimeSnapper support) and it makes my eyes glaze over.

"Ah encoding" i say. "I'm an expert on this. Let me think." And then I realize I'm not an expert. The mind is utterly blank. It's very zen.

I try not to think about encoding too much, if ever. I remember reading this 'joel on software' article about it "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" and i understood it all perfectly at the time. It made such sense, it was beautiful.

But then i hit the reset button on my brain and forgot it all. I've read it again since. But again, the reset button.

So when a garbled message turns up at gmail, the wisdom of joel spolsky is not upon me. I look at the screen in a panic, and bash at the "more options" link (to the left of the date received). At that moment, one of the 'options' given says "message text garbled". Yes, that's the one.

I press that link and the email opens in a new window. It's in a non-proportional font. Very raw looking. But perfectly readable. The encoding problem has magically gone away.

So gmail user's remember this alone:

If you get a garbled looking message, hit the "more options" link, and start fishing around for a suitable option. You'll soon find it.

Read On...


Fri, 28 Apr 2006 14:20:13 GMT

a secretSneak to the quiet readers of secretGeek...

don't blog this anywhere else, m'kay?

i'm working on two new versions of the "world's simplest code generator"

the web version is listed here: wscg

it includes a link to a google group i created: World's Simplest Code Generator where i ask for new 'patterns': go on write a few....

there is a cool new feature i haven't written yet, and oh i haven't included the funky help file i had in mind either... i expect this will be out in time for the 'official' release notice.

[ this version has already been mentioned in the comments at the daily wtf... such non-bliss... :-(... ]

if you are brave and powerful (ahh, go on, I know you are) you can use this new version of the world's simplest code generator to write all your own code.

failing that, plese use your meager allotment of time on this earth to become a software inventor.

Or, failing that, my good dear reader, plese implement some ideas i haven't had time fore: xpl, or ftl or seXml.

Read On...


Thu, 27 Apr 2006 05:29:34 GMT

how reddit encourages mediocrity.

ah but i do like reddit otherwise

i remember reading a statistic like this once:

"in 1926, charlie chaplin was voted the best actor in hollywood. he was also voted the worst actor in hollywood."

I don't know what year it was. i don't know what the competition was. Point is that he was both first and last.

The same thing happens all over the place. I've seen people listed as both the "best" and "worst" dressed in the same dumb competition.

This pattern is known as "You either love it or you hate it!" and a lot of the good stuff fits this pattern.

(continues...)

Read On...


Wed, 26 Apr 2006 05:16:25 GMT

Tip o the day: Copy Text from MessageBox/Msgbox

use ctrl-C to copy the text from a messagebox

You learn a little every day.

Today I learnt that you can use Ctrl-C to copy the text from a message box in windows.

Hence given the following MessageBox:

Read On...


Thu, 20 Apr 2006 01:08:50 GMT

VS2005 Tip: Which file am I working on?

track active item in solution explorer

I have it on good authority that the option "Track Active Item in Solution Explorer" is OFF by default in Visual Studio 2005.

(It was on for me... but my build is... kind a weird)

In this case, you won't know which exact file you're working on: only its name. This is a huge pain if you've got multiple projects that each contain files with the same name (e.g. "Web.config")

So if this is a problem for you... head into Tools | Options | "Projects and Solutions" | General and check the check box for "Track Active Item in Solution Explorer"

Good night!

Read On...


Thu, 13 Apr 2006 05:10:26 GMT

FTL: Faster than Light -- Functional Text Language

Ftl: faster than light (functional text language)

Stick with me on this one. This is one of those little ideas that turns into a gigantic concept and you soon realise you lack the time to ever implement it. At then end I ask for help in creating a prototype. Volunteers welcome.

Lately I've been translating an Excel-based system into a web application. And it's made me think about the underlying differences between spreadsheet functions and other programming tools.

Functions in spreadsheets are back to front. This is a user-friendly and very powerful twist.

Watch...

Read On...


Thu, 30 Mar 2006 00:47:10 GMT

Fajax -- the fake alternative to ajax

Put these two tags in the head of your html document:

<META http-equiv="Page-Enter" content="blendTrans(Duration=0.2)">
<META http-equiv="Page-Exit" content="blendTrans(Duration=0.2)">

That's it. You've implemented Fajax: the fake alternative to ajax.

The blink that occurs on postback is no longer visible, most of the time.

Okay, it's a dirty nasty trick. Don't flame me, troll me, spam me or DoS me. I feel terrible as i write these words: blendtrans is a Microsoft function. In non-ie browsers it will have no effect.

How does it work?

When a page posts back (for example when you click a button on a form), it normally causes a screen flicker as the page is redrawn. In a lot of cases the screen that is redrawn is very similar to the previous screen, and the flicker is an annoyance, disrupting the user's experience. The Blendtrans function causes the old page to blend smoothly into the new one, rather than flickering.

A lot of the time, this gives an identical effect to an ajax style http request. The page appears to have stood absolutely still as just one part of it is updated.

This simple trick alone gives you about 50% of the benefit of ajax, with a 1% of the effort. Having said that, it's absolutely limited to that one visual benefit, and limited to one browser.

To get the full benefits of ajax, you will of course need to use ajax, not fajax. ;-)

Note that these effects are best not overused.

Read On...


Tue, 28 Mar 2006 23:18:12 GMT

Latt blixt tycka om litvak.

Sometimes, when I'm trying to fix bugs in code... I feel just like that swiss craftsman in an early woody allen sketch.

He sits at a desk, with a little jeweler's loupe in his eye. He works hard at his craft, meticulously carving with his knife. He cuts holes in cheese. Gets paid two cents a hole.

In comes his brother and says "Latt blixt tycka om litvak."

The subtitle reads "Stick to your cheese."

I slap my knee in wonder. That's exactly how i feel!

Read On...


Mon, 27 Mar 2006 23:13:40 GMT

Dirty Larry

Weather enthusiasts may know that a big cyclone, codename Larry, struck Queensland last week.

(Footnotes: Queensland is a state of Australia, and I live in queensland. A cyclone is the same thing as a hurricane, only it's in the southern hemisphere and hence spins clockwise instead of anti-clockwise.)

My wife and i were on holiday in the affected region at the time. It was exciting, windy, etc. We survived and we're back.

Here's a diagram.

cyclone larry

Read On...


Thu, 09 Mar 2006 23:21:52 GMT

VB 6 Developers, lend me an err...

I need some VB 6 developers to dig deep into their memory... and tell me if you've ever used a control called the Mabry Barcode Control (barcod.ocx).

I'm doing some fixups on an old VB 6 system in my spare time, and it uses the Mabry Barcode Control. Unless I can find a license key for this software, I can't re-compile the project.

The "order now" screen is broken at Mabry's website, and I've tried writing to the company numerous times. Now I just want someone to share their key with me so the project can move forward.

Rewriting the barcode sections is not really an option right now. It may need to become one soon, though.

Whadda ya say VB 6 gurus?>

Read On...


Thu, 09 Mar 2006 23:20:10 GMT

Ultra Mobile PC: A Boon to Private Health

thumb-driven keyboardultra mobile pc: i bet you get sore hands

The laptop has ensured a steady flow of neck injuries amongst its users (read: victims).

But the new 'Ultra Mobile PC' should add nerve disorders of the hand, wrist, elbow and shoulder into the mix!

An exciting time to work in the private health industry!

On a good day you might see a bit of thumb paralysis as well, thanks to the nifty-at-first-glance 38 key keyboard.

Read On...


Thu, 09 Mar 2006 20:04:55 GMT

Early Screenshot Technology

The Chief Developer for TimeSnapper, Atli, just sent me through this photo of the original prototype of TimeSnapper.

We've sure come a long way since those crazy days.

the original version of TimeSnapper

Read On...


Sat, 04 Mar 2006 11:21:32 GMT

Never BCC an Idiot.

'Blind Carbon Copy' (BCC) is the most politically charged firecracker ever dropped into a technological device. And email is the powder keg of the computing world.

So I urge you, politely, but very definitely:

Never, Ever, BCC an idiot.

And you know that everythig I'm about to say is just hypthetical. Right?

(continuing story: Never BCC an idiot)

Read On...



Thu, 02 Mar 2006 20:39:54 GMT

A moment to reflect

Jason Looney, or J-Loo as he is known to his inner circle, is one of the funniest bloggers alive today.

His work is reminiscent of some of the great comedy bloggers of yesteryear.

He also writes part-time for Futurama and used to help David Letterman with his "Top Ten" countdowns. Jason's specialties were numbers three and six. No one can do numbers three and six like J-Loo.

His first job as a comedy writer was on The Simpsons. Every week when Bart had to write something different on the blackboard, it was Jason's job to check the punctuation.

I introduced Jason to his lovely wife, and not six weeks later they celebrated their tenth wedding anniversary.

I first met J-Loo when we were both working as head chef's at Maxim's. Neither us knew how to fry an egg but we covered for each other: one of us would make a lot of bork-bork noises in the kitchen while the other ran next door and bought the meals. Just before the meal left the kitchen, J-Loo would always throw on a sprig of italian parsley, smack his lips and exclaim "Bon-Appetit!" It became his trademark and he has sued for it many times. He is now so rich that he only blogs for fun, not money. Imagine that.

I could write a million stories about Jason, like the time we were reincarnated as a coyote and a roadrunner and i was fired out of a sling shot, trying to catch him and eat him; all good times.

Also of note is his friend, and former siamese-twin-sister, Alan Dotson, a gifted word-smith who can evoke the full spectrum of emotions from chuckles to giggles.

But for now, just read J-Loo's blog, be good to each other, and give one to your wife from me. ;-)

Read On...


Wed, 01 Mar 2006 21:35:31 GMT

Get On Up!

extra buttons, overkill

Okay, there's a lot of apps out there that will give you 'always on top' functionality for windows.

Most of them hardly rate, for a few reasons. Either they're time-limited-trials, or they include nag screens.

A lot of them work by adding extra buttons to the top right of every window. This is clever, but is overkill *big time*. (Screenshot of 'Actual Title Bars' trial apps, from 'Actual Tools'. (This tool lets you specify different buttons for every app on your system. Really impressive stuff, but too much hard work this little geek)

ontop.exe from planetscott

My favourite tool in this arena is also the simplest.

'OnTop.Exe' from 'PlanetScott'.

Rather than clutter up a window with extra buttons, it adds an item to the context menu (right click on the title bar, and you'll see an 'Always on top' option). This is less intrusive than the others, and a pretty decent solution.

It's four years old (100 in internet years), but still popular because of its simple approach.

Read On...


Wed, 01 Mar 2006 00:51:34 GMT

Damn that's one ugly customer!

ugly customer

Here's a different approach.

Most businesses choose not to depict their customers as bearded ladies.

But Elementool are not most businesses. At right is a screen grab from one of their pages

Good for you, Elementool. I hope that this helps you corner the 'bearded-lady market'.

One tip, if you don't mind? Try a touch of complementary selling. For example: Buy a helpdesk account, get a half-price chin wax. Buy two and we'll throw in an electric nose-trimmer. Recommended a bearded-lady-friend, and get three months of helpdesk free. This could be a winner.

Read On...


Fri, 17 Feb 2006 04:02:33 GMT

10 Ways to boost the Zen of Paint: Suggested improvements in MS Paint

MS Paint

This is an exercise in 'thinking small'.

Take the following as your premise:

  • MSPaint is not junk. MS Paint should not be thrown out.

Replacing it with "Paint.Net" is to overlook the Zen of Paint.

Paint is not a rival to big image editors. It doesn't want to rival them. Paint is quick. Paint is easy.

But if Paint were to be improved, what would it take?

(More follows...)

Read On...


Thu, 16 Feb 2006 22:43:39 GMT

I think you're coming back for more than just the hunting

free second chance

Microsoft offers: a FREE Second Chance to Pass Your Microsoft Certification Exam

Somehow this is just a crooked idea. All the developers I know take exams very seriously. They study very hard before exams (using cheats... admittedly...) and only go into the exam when they're 100% sure of success. It's a pride thing. Intellectual snobbery -- that thing that most developers suffer from.

The fact that you have to register for the offer before you go into the exam... it's just very wrong, like:

Free* divorce!

(* Must register for divorce before marriage)

Thanks to the Daily Grind, from Larkware, which Mike Gunderloy has now been publishing for three years.

Read On...


Thu, 16 Feb 2006 02:51:55 GMT

Thought Game

If computer hardware stopped getting better today, then what would software be like in one hundred years?

Read On...


Wed, 15 Feb 2006 22:51:39 GMT

Discoverable feeds for the not-so-liberal

To give IE 7 a hand at finding my feed, I added the following line to the home page:

Apparently this will let IE 7 know that the site has a feed.

Because of the dodgy MeWare I use as a CMS, i can't inject this onto every page.

I'd like to know why MS don't use the Ultra Liberal RSS Locator technique, described by Mark Pilgrim and used by many an aggregator. A case of Not Invented Here Syndrome?. (Or maybe it would lead to serious DDoS type problems if every browser in the world followed it?)

Read On...


Fri, 10 Feb 2006 04:33:50 GMT

seXml: a very dirty little dialect

I was viewing the source code of a website (as you do) and happened upon some of this guff:

A little more scanning showed me:

And I soon learned that the ".dwt" file extension indicates use of a "Dream Weaver Template". Probably a common practice, given the popularity of Dream Weaver.

Interesting, because the format used is identical to a dirty little sub-language I invented one dirty weekend, called 'seXml'.

(Read on, for the truth about seXml)

Read On...


Wed, 08 Feb 2006 03:49:31 GMT

What does XML look like on other planets?

spot the difference

Beats me. But I have seen what XML looks like in the alternative reality cubicle of my strange friend Gaksloope, fourteen minutes into the future.

Compare Gaksloope's XML side by side with some regular Earth XML.

How many differences can you detect? And what are they all about?

Read On...


Mon, 06 Feb 2006 04:26:27 GMT

Miscommunication Grows Faster than Communication

network of gossip

Something occurred to me on my bus ride home recently. As an organisation grows, the potential for miscommunication grows far more quickly than the potential for good communication.

There's a fairly well known (and debated) principle, referred to as 'the network effect' (or 'the communication explosion') which demonstrates how adding more people to a group causes the potential for communication to quickly become complex.

The 'network effect' is based on Metcalfe's law (which was originally concerned with ethernets, not social networks), and it's one of the priciples that underpins a much loved saying among programmers:

("Brooks' Law", Frederick P Brooks, 'Mythical Man Month')

The 'network effect' for social groups says that as a group grows, the potential for direct communication is in proportion to the member count, squared.

(Usually described as n*(n-1)/2. We divide by two, since each link is two way; we subtract one, since a node can't communicate with itself.)

Meanwhile, the potential for gossip, backstabbing, slander, scandal and rumourmongering grow in proportion to a factorial of the member count.

(Continues, with diagrams...)

Read On...


Thu, 02 Feb 2006 03:03:43 GMT

The Face of Ruby on Rails

"Ruby On Rails" may be the single greatest advance in popular, usable, programming for the next one thousand years.

Pity you have to look like a pouting artsy wanker to contribute.

marceldavid
floriannicholas

Images snaffled from here. Sorry about the profanity. That one just slipped out.

Read On...


Thu, 02 Feb 2006 01:58:41 GMT

Quick Prototyping Technique

office 12 ribbon

Finally a good use for PowerPoint!

From: The Feature Bob Invented at Jensen Harris's Office User Interface blog.

(The site beyond bullets has a few more tips on good use of powerpoint)

Read On...


Thu, 02 Feb 2006 00:01:54 GMT

How Contextual Help Works in Visual Studio 2003

How Contextual Help Works in Visual Studio 2003

Thanks to Demo Charge (from 'Yes Software'), I've made an animation that shows "How Contextual Help Works in Visual Studio 2003".

It's 190 Kb, so it shouldn't kill your skinny-band internet connection. I hope that you find it informative. I assume this will be the same in Visual Studio 2005.

(view animation)

Read On...


Tue, 31 Jan 2006 19:16:13 GMT

Launch the Code Editor on startup

put the ide in your startup folder

Productivity tip (for Programmers) -- Put the IDE in your startup menu.

Otherwise you can mess around half the day, checking and responding to email or surfing the net before you even 'fire up the damn editor'.

I used to eschew use of the startup folder, aiming for a quicker startup. My new philosophy is that it's worth slowing down the computer if it speeds up the human. I put the shortcut there about six months ago and still consider it a good thing that helps keep the code flowing.

Read On...


Tue, 24 Jan 2006 03:48:32 GMT

Printing 'Console' Screenshots? Save your Toner/Ink

a black console image

Need to print a console image, but don't want to waste a lot of toner/ink?

Use the 'Invert Colors' option, under the 'Image' menu in MSPaint.exe

colour inversion option in MSPaint

... and turn your mostly black image to mostly white:

Toner-Angry!Toner-Friendly!

This is particularly useful when the images are numerous and embedded in a document.

[Sometimes you can change the actual console's colours... but by the time the images are in a document, it's often too late.]

Read On...


Mon, 23 Jan 2006 21:07:03 GMT

Marked up: Finalists for the 16th Annual Jolt Product Excellence & Productivity Awards

The finalists for this year's Jolt awards have been announced here, but there was no markup, just plain text -- so i used the (as yet, unreleased) World's Simplest Code Generator (version 3) to link each one of them to a google search... Now you can dig a little deeper

[Read on for the list itself...]

Read On...


The Archives...


^Top

newest

Cascading File Types -- A different kind of MicroformatCascading File Types
XML isn't a mark-up language. XML isn't a mark-up language.
Drag Drop Operations Considered Harmful Drag Drop Operations Considered Harmful
Goto Statement in C# Goto Statement in C#
DotCom versus Web 2.0 DotCom versus Web 2.0
FP 4 NADD sufferers FP 4 NADD sufferers
4 Lazy Dev Techniques 4 Lazy Dev Techniques
Brisbane Thai Restaurant Brisbane Thai Restaurant
KeyTraino KeyTraino
You Will Set Goals! You Will Set Goals!
FP diagram FP diagram
'ref' for objects... how it works 'ref' for objects... how it works

TimeSnapper -- Automated Screenshot Journal TimeSnapper.com    
Top 10 SecretGeek articles Top 10 SecretGeek articles
Archives Archives
Thai Erawan, Brisbane Restaurant, delicious thai food in paddington Thai Erawan, Brisbane Restaurant


[powered by Google] 

World's 2nd Simplest Code Generator World's 2nd Simplest Code Generator
Gradient Maker -- a tool for making background images that blend from one colour to another. Forget photoshop, this is the bomb. Gradient Maker
How to be depressed How to be depressed
You are not inadequate.

as seen on the daily grind

Recommended Reading

The Best Software Writing I
Coder To Developer

Linkblog

del.icio.us / my del.icio.us

LinkedIn profile

Recommended blogs

Mike Gunderloy
Julia Lerman
Scott Hanselman
Roy Osherove
Rory Blyth
Chris Sells
Mitch Denny
Frank Arrigo
Joel Spolsky
Robert Scoble
Scoble Linkblog
Dilbert
The Daily WTF
gmail
home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2003 .: privacy

home .: about .: sign up .: sitemap .: RSS .: © Leon Bambrick 2003 .: privacy