I'm always the last to know

"we are here on Earth to fart around, and don't let anybody tell you any different"

So i just found out -- a month after the fact -- that kurt vonnegut died. If you haven't read any of his books, please do. Start with Slaughterhouse five. It's a short read, worthy of a very long read.

Buy it. Pay full price if you have to. It's the best novel of the twentieth century. I've read a lot of other contenders, but Slaughterhouse five is a very long way in front.

If you like that then read Cat's Cradle too. If you like that then read God Bless You Mr Rosewater.

On the other hand, If you like slaughterhouse five but hate cat's cradle then read 'time's arrow' by martin amis. If you like slaughterhouse five but hate cat's cradle and hate time's arrow by Martin Amis then read Catch 22 by Jospeh Heller. If you're still not happy, then just read Slaughterhouse Five again. And again.

Next time someone mentions a war somewhere I'm going to say "Did Kurt Vonnegut die for nothing?"

And no, it's not going to make much sense, but I think I'll say it anyway.

miss you already.

 

NO ONE IS GOING TO STEAL YOUR BRILLIANT IDEA.

I get emails occasionally from one-person-software-companies, and those who are thinking of creating small software companies. (Micro-ISV's we call them)

And i give help where i can, positivity where-ever possible. i don't give much time, of course. But i give everything i can. (Oh, And i'd love to hear from you, of course! i've always got a positive word or ten!)

But one thing i hear again and again is this:

how can i get started, when my idea is so clever that the first time i utter it, i fear someone will steal it?

This is such a common fear!

And boy, I have had that fear! I know it so damn well. Yet -- it's utterly misguided!

please believe me!

no one is gonna steal your idea....

It's amazing how reluctant people are to use your brilliant ideas. This point is brought up again and again in literature around business creation. We all fear that everyone will steal our idea the entire time -- no one does. The hard bit -- the hardest bit of all -- is getting people to even listen to our idea. There's a famous saying about this:

"Don't worry about people stealing an idea. If it's original, you will have to ram it down their throats."

(quoted here, http://www.rexruff.com/content/philosophy.php, for example -- but lots of variations exist too)

There's so much truth in this. I always just put my ideas out on my blog, and no one steals them. (Damn you all! Except you, Atli. You rock of course ;-) )

So repeat after me (and keep repeating until you believe it)

NO ONE
IS GOING
TO STEAL
YOUR BRILLIANT
IDEAS.

It's almost sad, really.

But don't let this discourage you, either.

Because, over time... eventually... once you get to a stage where nice, ordinary people have begun to except your idea... (this might blow you away right now)


they'll actually
pay you
money
for your
implementation
of it.

Weird huh?

And yet it is a verifiable fact.

Best of luck!

lb

 

Translating a little bit of (microsoft) double talk...

I think that microsoft are pretty open these days. But (maybe for legal reasons) they can't always say what they mean. And on such occasions it's up to us, the community, to step forward and translate the double talk.

Here's a snippet from the launch page for a new technology: Jasper

I'll try and translate, here goes...

Jasper leverages the power of dynamic languages and the concept of convention over configuration to provide a programming surface for data that enables rapid development of data-bound applications. While most other rapid data access frameworks are only capable of working against simple databases, Jasper can scale to almost any database, regardless of size or complexity. This is possible because Jasper takes advantage of the ADO.NET Entity Framework's significant investments in mapping and conceptual data modeling.

Okay -- let me repeat that bunch of mumbo jumbo, with some commentary. (Emphasis is mine, and sections in [square brackets] provide added meaning).

Jasper leverages the power of dynamic languages and the concept of convention over configuration....

[We owe a huge debt of gratitude to David Heinemeier Hansson (dhh) for this concept, but do you think that we'd stop and actually thank him by name? Not on your life!]

...to provide "a programming surface for data" that enables rapid development of data-bound applications.

[You know, like Ruby on Rails. Again, pity we're not tough enough to mention it by name.]

While most "other" rapid data access frameworks...

[Okay -- when we say 'most', we don't mean we've actually polled all other data access frameworks and determined that this attribute is characterisic of the majority. All we mean is, you know, "Ruby on Rails."]

are only capable of working against "simple databases",

[plays into some recent FUD about RoR. Translation: F*** you DHH!]

Jasper can scale to almost any database, regardless of size or complexity.

[When we say 'Almost any database' we mean (as you'll see later in the page) "SQL Server Express or any other SQL Server 2005 edition, is required in order to use Jasper" -- so it's any database you like, as long as it's SQL Server 2005.]

This is possible because Jasper takes advantage of the "ADO.NET Entity Framework's" significant investments in mapping and conceptual data modeling.

[Remember WinFS? Remember we spent thousands of years of developer effort and billions of dollars, and delayed Vista by years... and ended up canning the whole thing. Well the only thing we salvaged from the whole sorry fiasco, was something called the ADO.Net Entity Framework. It allows you to use three synonyms, -- entity, object and model -- with three other synonyms -- schema, domain and framework -- to produce up to 36 different connotations from just two simple concepts. There's no problem so simple that developers can't over engineer it. Anyway -- when we say 'Significant Investments' we mean billions of lost dollars! and, well, let's be honst, we really mean, F*** YOU DHH! You cannot hope to challenge us! We are massive! We are the borg! We will add your technical and cultural distinctiveness to our own! We do not sleep!]

Oh, the blog entry just peters out at this point. Weird. Add your own ending. Choose your own adventure.

 

The Truth About Attention Deficit Dis... Oh, new mail.

brain.serialize

We're getting ahead of ourselves. I mean, behind ourselves. Who has the time to... you know, fix the... thingo. Hey -- did you see that book, All Cats Have Attention Deficit Disorder? [1]

Okay -- I was saying... i'm getting a stack based memory adjunct, plugged into my forehead so all this context swtiching will let me just pop right back to -- hang on, IM... no wrong IM, other IM, okay -- who? add contact to? what -- got to log in again, password is over in, let me see. Ah, exit, reboot, swivel, other computer, right -- no, jump out of this terminal session and into that one, then switch apps over to the...

alt-tab, no, windows-tab -- up three levels, switch personality, jon malkovitch, smile at press, switch back, down two species and across three, canine, yapping at man's coat tails, waggy thing annoys me, chase it, round and round, got it, ah, my tail, yes, must not keep doing this -- oh look - zoom out, earth is a microdot, zoom back, sitting in my cubicle, out of coffee again, the always on society, always on lsd that is.

Time to rewrite it all in apollonian silverflash or something, the command line is the new address bar or something else. software idea: replace the browser bar with an actual fracking command line. have plugin commands with automatic unit testing, and wiki style spec# applications, perusable, editable write to someone about this -- or write about thing from yesterday: jeff raskin's son talking at google, no such thing as reverse pictionary he said, great point, think about it, lots of great points he made and then the demo, aw shit, it's just another launcher app, so much promise, so little:

idea: the absolute reverse of lego programming, something about toolkit-based development leads to isolated controls that are composable into working solutions, but real problems aren't always toolkit solvable -- real problems aren't so readily decomposable into controls -- toolkit based solution is naturally chunky, unusable, like a lego brick house. other angle: super users are able to configure apps, and thus are the modern programmers -- yet most configuration is unscriptable (consider writing an automator-like interface to powershell) -- link to [2] ;-)

recall discussion saying normal people don't think of an image as data, and they shouldn't have to... hence picasa, flickr etc perform auto scale for upload -- good, yet i disagree with 'why software sucks' guy re thesis that main problem with dev is dev's aren't normal people. main problem with dev is that it's frickin complex and no one has a clue what they want until they've seen it in their neighbour's hands.

contrast of dialogue complexity from westwing versus grey's a-frickin-natomy. sad. and found it clever scott says remember that targets are not estimates i guess a target is a crazy figure that senior management would like you to knock your self out working long insane hours trying to meet it, and an estimate is when they delude themselves into thinking its possible.

for mothers day buying nintendo DS for the good wife -- she wants the pink one as an insurance policy against me using it, ha, she wants brain games to overcome baby-induced stay at home zombieness; ot: maybe ask secretGeek readers for recommendation on pocket pc models, must have gps, phone, big screen, damn pock pc is frustrating though -- nothing is quite right about it, the pen is worst of all -- or write about how i trouble shot the damn home PC meltdown recurring BSOD problem -- i hate hardware, can't even refill the staples in my stapler, certainly not program the video

backlog of fifty micro ISV's i want to write about, still freaking out about just how many steps remain in this crazy 25steps thing -- maybe blog about the way that pocketPC was wiped and thus killed my draft of step 4 (still very bitter about that) -- just when i'd used that crazy pen interface to craft all those neat little phrases. don't want to sound like kid saying 'dog et my homework' --

maybe blog about the novel -- call for reviewers, beta book idea, suggested titles list inc ebz, lineup of innocents with one suspect, comedy novel cops n killers

atwood too cruel to mikeg in article? [3] i think so, but really has quality of larkware fallen? probably -- i miss the heartfelt criticism nowadays he avoids it, probably figures it'll be too bitter no that his mind is made up -- scoble's article 'how to hate microsoft' -- personally love to hang sh*t on microsoft though, what a great target they are.

what about the wording of the guy who announced that entity framework was delayed [4] -- how 'marketing weasel' was that: but then he apologised in the comments and was far more open and honest. is there hope for the old guard at microsoft yet? maybe. and does anyone need to care so much about the actual difference between an entity, an element, an object, a datarow, a type, a class and a contract? meanwhile which keeps you awake at night: the ghost of WinFS or the curse of Cairo? [5]

more normal people have commented on those mac versus pc tv ads than have mentioned vista. everywhere i go: people just love those ads! in a weird twist the biggest fans seem to be microsoft developers who can't stop talking about them. the only one that sh*ts me is the one where mac guy says "hey pc, do you want to see my pictures?" as if to suggest that mac is some doyenne of compatible image formats -- both mac and pc have terrible track records on that topic, so it's kettles all the way down.

sorry -- didn't wanna pick a topic.

 

tarzan of the source code

Sometimes when moving through a large visual studio project it feels like some kind of parkour chase scene... I do a search to find something similar to what i'm looking for -- hit F12 to go to definition -- rename the offending class in order to cause compiler errors from all references to that class -- look through the list of compiler errors until i find the reference i'm looking for -- scan through that method until i find something it's doing -- f12 to go to another definition... like swinging through a jungle, slashing and jumping, grabbing onto vines and swinging... jungle vine navigation, tarzan of the source code.

Parkour, interesting thing.

 

Back Seat Driven Development

Various development 'methodologies' talk about being 'driven' from one place or another --

Model driven, Test Driven, User Interface Driven, Todo Driven Development (ahem) and so on...

Each of these practices dictate a particular starting place for work -- a single place from which the 'truth' emanates. The resulting tool chain is focused on radiating the 'truth' outward from this driving place -- whether it's the model, the tests, the spec, the database, the user interface.

When the truth changes, you go back to the 'driving' place, alter it, and update the solution from there. So in model driven development you alter the model then rebuild the app. In test driven development you update your tests and see what fails. In database driven development, you alter your database and re-run your code generators.

This is all nice -- but each form is limiting.

What would be nice (and by nice I mean damn impossible) would be if each of these potential places was both a driver and a result.

So that -- without prejudice (without fighting the tools) -- you could update the user interface and have this change flow back to the business layer, the database, the tests, the model, all places.

You could then tweak the database and have this change flow out to the tests, the business layer, the user interface, the model. You could change the model and have the change propagate around to each place.

In code generation speak I think they call this 'active code generation' -- and it's never seemed realistic or clean.

But that's what I would like, please. And I would like you to go and write just such a tool for me please.

I will pay eight dollars for it.

(first person to mention RoR scaffolding gets their ip address banned)

(no, i wouldn't really ban your ip address, i'm just sayin...)

 

Can Software Be Like Building Lego?

I'm not thinking about programming the actual solid plastic bricks (though some people do). Rather i'm thinking about the idea of:

"Making the construction of a program, as simple, fun and obvious, as putting lego blocks together"

I've seen lots of people write about this idea before -- either denying that such a thing is possible, or pimping their own new tool as the long-awaited realisation of the 'lego programming' dream.

But neither side has ever clinched if for me. One group argues that lego programming is not possible, because programming is just too tricky.

The other group will point to some new technology they've created, and claim that this will finally bring 'programming to the masses' -- which is the kind of crazy talk i'm tired of.

But I like to think about this Lego Programming idea now and then. To understand the idea, I think you've got to start by looking at lego itself...

Building With Lego Is Fun And Easy

What makes it so?

My first thoughts were all about the lego itself...

  • The colours are bright.
  • The constituent parts are almost indestructible.
  • They have a very visual and obvious connection mechanism:
    • it's obvious how two pieces connect
    • it's obvious how many pieces can interconnect.
    • It's obvious when two pieces are fully connected. They can't be *half* connected.
    • It's obvious when a piece is connected.
    • It's obvious when a piece is not connected.
  • You don't get your hands dirty.
  • You get a result quickly.
  • There are many many less choices -- the material is pre-chosen.
  • Blocks can't be broken down beyond their original size: You can't use half a block.
  • Everything you build with lego looks like it was built with lego.

But then I started to think about the 'Tool Chain' involved in building lego... and this seems to be the real differentiator of lego:

  • You don't need any tools to build with lego -- just the lego itself, and your hands.
  • Anything built with lego can be torn apart with just your hands.
  • Anything built with lego can be added to, altered, investigated, without using any special tools at all.

And I think that's the real essence of lego -- no tools, no workbench, no spanners, no visual studio .net license required.

The Real Question about Lego...

The real question about lego is one I can't answer. Here's three different ways to phrase it:

  • Is it possible to efficiently build something truly useful out of lego?
  • Is lego confined to toys?
  • Is lego merely an educational tool?

And some references.

Here's some of the things that made me think about lego programming in the last six months:

  1. Users are not programmers
  2. The Executable Web
  3. Yahoo Pipes
  4. dabble db
  5. Zoho Creator
  6. Exhibit

And most important of all, here's that Lego Machine Gun.

 

Silverlight, Apollo... Lock In?

vendor lockin can be bad, sooner or later

a summary of mark pilgrim's silly season

mark pilgrim goes on a characteristically cynical rant against new vendor-specific 'ria' platforms (silverlight from microsoft, and apollo from adobe). (ria means 'rich internet application')

Although it's quite a short rant, who has time for prose? Here's the cartoon version:

vendor lockin can be bad, sooner or later

(i may have left out some of his points)

(p.s. personally, i'm not too worried about 'lock-in'. Should I be?)

 

Joel On Metaphors: The Best Developers

Don't feel obliged to read on. Really.

While reading Joël Spolsky's guest column at inc. magazine i got hung up on this metaphor in the first paragraph:

"The best developers invent new products, figure out shortcuts that save months of work, and, when there are no shortcuts, plow through coding tasks like a monster truck at a tea party."

I did a triple-take. When I parsed that last part:

"...plow through coding tasks like a monster truck at a tea party."

...I interpreted it in the only sensible literal way possible:

"...plow through coding tasks like a monster truck plows through coding tasks at a tea party."

Which makes me picture a studious monster truck sitting in the corner of a tea party, quietly compiling the answers. Seems an odd thing to do.

What I assume he meant was:

"...plow through coding tasks like a monster truck plows through a tea party."

Which is better, though I've never heard of this actually happening, and i'd say it's something that monster truck drivers are keen to avoid. So maybe the best developers only plow through tasks when their brakes fail, and they've no other course of action left open. But if a monster truck did happen to plow through a tea party -- it would be pretty effective, so i figure a better way to phrase it is the rather cumbersome:

"...plow through coding tasks like, one supposes, a runaway monster truck would plow through a tea party."

But now i wonder... what is the actual similarity here? why are they alike? Does the developer plow through coding tasks, leaving dead bodies and broken tea cups strewn all over the lawn? What kind of programmer are we talking about? Some new form of extreme? You don't want to hire rampaging homicial developers for your team. Or do you?

i've got to stop over-thinking things.

 

New Social Activity Sharing Site: Twatter

twatter logo, thanks to mspaint

This looks great!

Bill has moved his mouse to 149, 209
   (In response to Jenny has moved her mouse to 12, 623)
      (In response to Bill has moved his mouse to 142, 203)
         (In response to Jenny has clicked her left mouse button)

Peter has pressed the 'A' key
   (In response to Mary has adjusted the brightness of her monitor)
      (In response to Peter has scratched his left eyebrow)
         (In response to Mary has stared blankly at the screen for five seconds)
           (In response to Peter is desperately lonely and has nothing to say)
              (In response to Mary is desperately lonely and has nothing to say)
                 (In response to Peter implemented a second life plugin that simulates bitter sobbing)
                    (In response to Mary doesn't know where the real world ends and the virtual world begins)


twatter logo, thanks to mspaint

Social Activity Sharing Site, "Twatter", really lets you keep up to date with what your friends are doing.

Every gripping mouse movement, every thrilling keystroke is continually broadcast out to a captive audience.

Gaze tracking, facial expression scanning, heart rate monitor, breath recording, emotion capture, thought extraction and body position data all coming soon.

Why aren't you being stalked yet? Join up now!