Everything that's bad for you is suddenly good for you!
secretGeek .:dot Nuts about dot Net:.
home .: about .: sign up .: sitemap .: secretGeek RSS

Everything that's bad for you is suddenly good for you!

In IT it seems that everything your lecturers once told you is bad and useless, turns out to be good and fruitful.

It's a reversal of the Woody Allen quote:

"Everything that our parents told us was good for us, turned out to be bad.

The sun. Milk. Red meat. College. Catholic girls."

(I'm deliberately paraphrasing)

For example...

We were once taught that dynamic sql is the path to poor performance and woeful security. And yet we now see that this is nonsense -- dynamic ORMs bring about increased performance and richer security models. Damn it!

We were once taught that permissive typing is bad and leads to buggy software. And yet we now see, with the rise of Ruby, Python and modern dynamic programming, the opposite is true. Permissive is expressive. Dynamic is productive.

We were once taught that significant whitespace is a relic of punch cards and poor computers, which all modern languages must eschew. Yet we now see that modern and future languages will support significant white space with a vengeance!

But most shocking of all!!

We were once taught that flat, wide, single-tabled denormalised data structures are the road to death, pain and -- worst of all -- slow, inconsistent data. Yet we now (maybe) see with google BigTable that in fact this is the future: this is faster and actually, sorry Jenkins, your rdbms is dead.

I'd love to be a stickler and a stalwart... but screw it. History is bunk. Bring out the learn!

And thus I'm left wondering... What else appears taboo and verboten? What else did our 'teachers' claim was 'bad' ?

Well - one thing was certainly frowned upon: the use of GOTO!

So....

I'M BRINGING HER BACK! WELCOME THE GOTO!

You may consider me a touch behind the times. But wiser heads will see me as preceding the curve.

What is a try...catch but a glorified JMP? (aka goto) Where would a switch be without an implicit goto, hey zooba?

What else do you see that's been besmirched too long? What other versatilities in IT have been marginalised far too long?

Bring out your dead.





'Mike Woodhouse' on Fri, 18 Apr 2008 12:57:09 GMT, sez:

Perhaps there's some sort of a general "flip-flop model of stuff" at work here. Like with things that used to be wired now being wireless (e.g. phones) and vice versa (TV signals).

Without wanting to push the analogy too far, of course, being as how there's probably some sort of analogical cliff nearby...



'Chad' on Fri, 18 Apr 2008 13:10:46 GMT, sez:

Indeed @Mike "Cloud Computing" is the new mainframe - the browser is the new terminal. True - it's a spiffy user-friendly terminal, but a terminal nonetheless. And I love it!



'Rik Hemsley' on Fri, 18 Apr 2008 14:15:35 GMT, sez:

In VB6, GOTO was the only sensible way to handle errors. The poor developers were being told that their language was evil but so was GOTO. In this case, though, two wrongs really did make a right.



'engtech' on Fri, 18 Apr 2008 14:43:40 GMT, sez:

I would have appreciate this post more if it was littered with "a name"/"a href" pairs that I had to click through to read the post sequentially.



'John Walker' on Fri, 18 Apr 2008 14:44:41 GMT, sez:

God I love this post. It is just so true.



'Matthew Martin' on Fri, 18 Apr 2008 15:48:30 GMT, sez:

This is only true because enabling technologies have come along, e.g. unit tests for loosely typed languages, A lot of select/case logic implies an opportunity for polymorphism as well.



'Zooba' on Fri, 18 Apr 2008 22:08:12 GMT, sez:

I see you as preceeding the curve, but I doubt that qualifies me as a 'wiser head'.

One of the easiest arguments in favour of goto is that C# includes it, and a lot of thinking/planning/coffee went into deciding what would be included.

A Python module for goto also exists (http://entrian.com/goto/). It was an April Fool's joke, but the usage examples on the front page are all quite legitimate.



'Einar' on Sat, 19 Apr 2008 04:18:04 GMT, sez:

[table] tags in html to create layouts that are basically grids. "Best practice" now is to use floating divs everywhere and "use tables only for tabular data" is often said. However, if the tag was named something like [gridlayout] instead of [table] no-one would think anything was wrong with it. How is [table] in html bad but[grid] in wpf good?



'Nick Hebb' on Sat, 19 Apr 2008 07:37:27 GMT, sez:

When I was a kid I was told not to sit too close to the TV. "It's bad for your eyes!". Now I sit all day in front of a monitor. My eyes are fine.

Re GOTO: Dijkstra later said that the reaction to his article was too extreme. He was trying to warn against the overuse of it, not banish it. I've used it a few times to avoid overly nested if's. No big difference between that and a break.

I also hear repeatedly not to use abbreviated variables names - even for loop iterators. Crap, if I don't use 'i' or 'j' then both writing and reading it are more work.



'Astroboy' on Sun, 20 Apr 2008 10:03:45 GMT, sez:

"I think goto's are fine, and they are often more readable than large amounts of indentation."
-- Linus Torvalds

You can see the complete discussion here:
http://kerneltrap.org/node/553/2131



'quietgeek' on Sun, 20 Apr 2008 10:47:47 GMT, sez:

Boy, talk about a mass of oversimplifications. While all these old constructs and teachings are becoming acceptable again, that is by no means a "old is better than new" answer. BigTable is great...but it's not meant for large complicated databases of differing types. GoTo is not the answer to everything, but a tool to be used at the right time and place.

All these things have remained true for decades and are not really "new" or "now acceptable". They always have been - the key was and is knowing when they are appropriae and when not.



'Dare Obasanjo' on Sun, 20 Apr 2008 12:30:13 GMT, sez:

>We were once taught that flat, wide, single-tabled denormalised data structures are the road to death, pain and -- worst of all -- slow, inconsistent data. Yet we now (maybe) see with google BigTable that in fact this is the future: this is faster and actually, sorry Jenkins, your rdbms is dead.

Surely you jest. The design behind BigTable is based on optimizing out the factors that are not important to Google's needs. When you are working at massive Web scale like Microsofts, Google, Yahoo!, Amazon, eBay, etc then features like transactions and joins become too expensive especially when you are doing thousands of transactions a second across distributed data stores.

This doesn't suddenly mean relational databases are bunk. It means they aren't suited for certain people's needs. One size doesn't fit all? Who woulda thunk it?



'John' on Sun, 20 Apr 2008 15:32:11 GMT, sez:

Gotos are back in style already, they're just called "continuation passing style" instead.



'Dave A.' on Sun, 20 Apr 2008 22:46:36 GMT, sez:

My personal favourite is the OnError Resume Next - that one has to come back.

There is also the storing images in a database argument - once bad, now acceptable. Probably more a factor of cheap disk space, faster hardware, and not know where the hell that local path link leads!



'Michael' on Mon, 21 Apr 2008 02:12:53 GMT, sez:

I've always found the comefrom statement to be a far more valuable programming tool than goto ever was.



'lb' on Mon, 21 Apr 2008 03:07:21 GMT, sez:

@Mike: "things that used to be wired now being wireless (e.g. phones) and vice versa (TV signals)"
this is like the dilbertesque trick of centralizing everything that was de-centralized, and de-centralizing everything that was centralized.


@quietgeek: "talk about a mass of oversimplifications"
sorry about that -- it's kind of deliberate though. Nothing is ever just so.


@dare: "Surely you jest."
yeh, i'm only kidding, (about rdbms).

Originally I was going to write a missive entitled "Reports of the death of the rdbms have been greatly exaggerated" but i wrote this article instead ;-)

@Michael: intercal ftw!



'Andy Brice' on Mon, 21 Apr 2008 20:53:14 GMT, sez:

Writing useful software and (gasp) charging people for it.



'al' on Wed, 23 Apr 2008 10:34:14 GMT, sez:

SQL Server backend was soo Web 1.5.

Bring back Jet DB, Viva Access, Long Live VBA, If it was good enough for Grandpa, it's good enough for me. Screw Dad and all his "Enterprise Architecture", SOA and ESBs....

hmmm.... that would make a good name for the smallest ever facebook group.




name


website (optional)


enter the word:
 

comment (HTML not allowed)


All viewpoints welcome. But the right to delete any post for any reason is reserved. Don't make me do it. Comments may be republished, emailed to your loved ones or printed and used as toilet paper. Who reads this legal bit anyhow?

TimeSnapper is a life analysis system that stores and plays-back your computer use. It makes timesheet recording a breeze, helps you recover lost work and shows you how to sharpen your act.

TimeSnapper won last year's Developer Competition at Larkware.com, and is used by over 10,000 people.

Articles

What To (Really) Do If You Find Out Your Parents Are Using Vista (redux) What To (Really) Do If You Find Out Your Parents Are Using Vista (redux)
What To Do If You Find Out Your Parents Are Using Vista What To Do If You Find Out Your Parents Are Using Vista
Sample Code From Text-Adventure Game Platforms Sample Code From Text-Adventure Game Platforms
TimeSnapper 3.0 -- an interactive, bubbling cauldron of possibilities TimeSnapper 3.0 -- an interactive, bubbling cauldron of possibilities
The laptop compubody sock The laptop compubody sock
Everything that's bad for you is suddenly good for you! Everything that's bad for you is suddenly good for you!
Everything I know about Code Reviews I learnt from Star Wars (and JCooney) Everything I know about Code Reviews I learnt from Star Wars (and JCooney)
Syntax highlighting of strings Syntax highlighting of strings
Google AppEngine: evil virus or viral evil? Google AppEngine: evil virus or viral evil?
Workflow software: I'm calling the bluff. Workflow software: I'm calling the bluff.

Archives .: secretGeek :: Complete Archives :.
25 steps for building a Micro-ISV 25 steps for building a Micro-ISV
3 minute guides -- babysteps in new technologies: powershell, JSON, watir, F# 3 Minute Guide Series
Top 10 SecretGeek articles Top 10 SecretGeek articles

Downloads

TimeSnapper -- Automated Screenshot Journal TimeSnapper.com    
Version 2.5: with password protection

ShinyPower (help with Powershell) ShinyPower
Now at CodePlex

Next Action NextAction
Managing the top of your mind



[powered by Google] 

Thai Erawan, Brisbane Restaurant, delicious thai food in paddington Thai Erawan, Brisbane Restaurant
World's Simplest Code Generator (html edition) World's 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.



Recommended Reading

The Best Software Writing I
The Business Of Software (Eric Sink)


Recommended blogs

Jeff Atwood
Reginald Braithwaite
Joseph Cooney
Phil Haack
Scott Hanselman
Julia Lerman
Joel Pobar
Eric Sink
Joel Spolsky
Des Traynor

Aggregated Links

programming.reddit.com
dzone
dot net kicks

Human Link Machines

interesting finds
a continuous learner's weblog
arjan's world
n links today
new and notable
morning coffee
learning .net
weekly link post
(my del.icio.us account)

LinkedIn profile
 
home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2006 .: privacy

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