Stop being walked. Start walking.

blog,

Great entry from Chip's Quips, courtesy of Arjan.

"Walking the dogs the other day — or (as everyone I encounter invariably remarks) as they were walking me, I began to see that activity as a metaphor for my life: barely under control, unable to slow down, being dragged along by others. Suddenly I planted my feet and pulled back hard on the leash. Halley and Harry [the dogs] turned back in surprise to inquire into the cause of this unaccustomed demonstration of my will. I made them walk at a slower pace the rest of the way, and I felt a resolve to do the same for my life. To take back control."

I hear you Chip!

There's so much rush and ferment and movement around us; it's easy to be swept along with the tide. But in truth, there is no tide. It's your body, your mind. Choose your own adventure, Chip.

 

NDepend, Cyclic Dependencies, and the Shroud of Turing

NDepend, Cyclic Dependencies, and the Shroud of Turing Patrick Smacchia's NDepend is a brilliant way to get an overview of a .net solution, and then drill in and really understand what's going on.

For example -- let's examine what we learn as we focus in on part of the dependency graph of a large .net solution composed of many components.

I'll choose a region (marked in red below) where there are cyclic dependencies, and analyse it at a progressively greater level of detail...

Effect of Cyclic dependency after zooming 800 times
***

Effect of Cyclic dependency after zooming 640,000 times:
***

Effect of Cyclic dependency after zooming 512,000,000 times:
***

Smoke started coming out of my computer after that, so I ended the magnification there.

Read more from Patrick about componentization analysis with nDepend.

On the topic of Turing -- I'm looking forward to the May release of Charles Petzold's Annotated Turing book.

 

One Handgun Per Child

Having spoken plenty enough about the One Laptop Per Child project recently i just want to finish by saying that I am very proud to be a member of the IT industry at such a time as this.

How great it would be if other industries shared our spirit of endeavour. Perhaps the firearms industry could come forward with the "One Handgun Per Child" project.

The banks could step forward and offer "One Mortgage Per Child"

Governments could offer "One soul-destroying job in a miasma of bureaucratic inconsequentiality Per Child"

Correctional facilities industry, "One Prison Cell Per Child" project

And so on for all other industries.

Lucky you, lucky me. Lucky kids.

 

52 great reasons to fail at software

Subtitle: I just gave you 51 great excuses and you're still pushing that 'people' crap??

Earlier in the week I wrote "51 Core Abilities of Successful Software" in which i gave conclusive evidence that successful software is technically impossible.

Yesterday, Jeff Atwood posts "No Matter What They Tell You, It's a People Problem" giving a compelling and utterly convincing argument that ultimately the reason for failure is 'people'.

This argument always reminds me of the film, Soylent Green, in which it's ultimately revealed that the government is rationing out human flesh as the new staple diet:

[last lines]
Det. Thorn
It's people. Soylent Green is made out of people. They're making our food out of people. Next thing they'll be breeding us like cattle for food. You've gotta tell them. You've gotta tell them!

Hatcher
I promise, Tiger. I promise. I'll tell the exchange.

Det. Thorn
You tell everybody. Listen to me, Hatcher. You've gotta tell them! Soylent Green is people! We've gotta stop them somehow!

And yes... I agree.. but the HR Weasel in me says "it's not people, it's personnel!"

[last lines]
Bruce
It's personnel. Software is made out of personnel. They're making our code out of employees. Next thing they'll be breeding us like cubicle-cattle for off-shoring. You've gotta tell them. You've gotta tell them!

Jeff
I promise, Bruce. I promise. I'll tell the internets.

Bruce
You tell everybody at Digg. Listen to me, Jeff. You've gotta tell Del.Icio.us! Tell programming.reddit.com! Software is people! We've gotta stop them somehow!

And when you're a tiny little micro-isv, it's not personnel: it's personal. As in,

"This time, it's personal!" [1]

But you know - I'm just adding Jeff's assertion to my own: so now there's 52 great reasons to fail at software.

Hey, I like that. I'll make it the heading and blog this crazy shit!

52 great reasons to fail at software


[1] what is the source of that tag-line? One of the rambo films? one of the Rockies? All of the rambo films and all of the rocky films?

 

How To Win At Negotiation

OLPC seeks a truce with intel... or... OLPC says intel is a backstabber

In case you can't read the text: there are two separate news stories within two hours of each other.

The first headline is:

OLPC... seeks a truce with Intel [1]

and the second, two hours later reads:

OLPC says Intel is a backstabber[2]

Okay i'm not sure what the lesson is. Here's three possibilities:

  1. Nicholas Negroponte, chairman of One Laptop Per Child, makes so many tangential statements that you can interpret him any way you want
  2. Journalists aren't exactly straight shooters
  3. Breakups are messy.

Anyway I saw an XO in the flesh today [note, an XO is the first model of laptop built for the One Laptop Per Child project], thanks to JCooney (or one of the Cooneys). Nifty gadget, let me tell ya! I was suprised at how tiny it is.

annotated wikipedia image
 

51 Core Abilities of Successful Software

To be successful, a project must balance these 51 core abilities


  1. Accessibility
  2. Affordability
  3. Beauty
  4. Build
  5. Caching
  6. Code Coverage
  7. Compatibility
  8. Complexity
  9. Consistency
  10. Credibility
  11. Cyclomatic complexity
  12. Discoverability
  13. Documentation
  14. Efficiency
  15. Ethics
  16. Extensibility
  17. Honesty
  18. Integration
  19. Licensing
  20. Logging and instrumentability
  21. Maintainability
  22. Marketability
  23. Memorability
  24. Modularity
  25. Open-ness
  26. Optimisibility
  27. Originality
  28. Parallelability
  29. Performance
  30. Platform versatility
  31. Popularity
  32. Power
  33. Practicality
  34. Predictability
  35. Purity
  36. Readability
  37. Reliability
  38. Remarkability
  39. Responsiveness
  40. Reusability
  41. Robustness
  42. Scalability
  43. Scriptability (automatability)
  44. Security
  45. Simplicity
  46. Testability
  47. Transparency
  48. Trustworthiness
  49. Usability
  50. User eXperience
  51. Versatility

You have room for three.

Security and usability are two.

Pick one.

[Apologies to Scott Adams who provided the template. See dilbert cartoon (here too)]

 

secretGeek: Predictions for 2008

1. You'll personally sponsor a couple of 100 dollar laptops

I don't currently know how to sign up to do this -- but by the end of the year I will know how. And i will have done so. Several times. And I predict you will too.

I currently sponsor a young girl through world vision and find it an excellent past time (suggest you do the same -- my rich, intelligent, well-fed reader) but i think this hundred dollar laptop is a specific new way of helping the world in which we lucky programmers will lead the way.

If not us, who? If not now, when?

Now, onto some less-preachy predictions for the year ;-)

That crusty fiend Ajax Ninja says:

'...2008 will be the year that pissed off angel investors scream "show me the money" and MBA types go running over the cliffs...'

I still fear that this will be the year when Steve Ballmer will grip Bill Gates in his mighty bear-like arms and, with one powerful lunge, bite his head off with mighty iron-enriched jaws. We all have our fears, right?

I figure the most interesting predictions are around the possibility of an ongoing oil crisis, and maybe where economies like US and China are headed. And how many hurricanes will the northern hemisphere see this summer? But I'm no eco-financial pundit so i have to leave that topic alone.

Apple: Less than Inflation

Let's talk Apple. Sell your shares now, people. It could be a long time before they look anything like this healthy again.

apples share price is pretty healthy after 2007... okay i admit my anti-apple bias is inspired by little things that probably do not affect the share price, just as the luring of mike gunderloy, the unlikely success of apple allowing third party hardware suppliers to furnish their devices and just how damn aggravating i find itunes 7

2008, Language of the Year? AAAAAAAAA!

RoR is so 2006, and you know that already.

Haskell is so... 1906 or something and most people think you've said Pascal when what you said was Haskell and you have to repeat it "No, Not Pascal Pee but Haskell Haitch," and then they google for it as Hascal, and think "what the hell?" so no not haskell either, and no no no, Scala is so bourgeois it makes me want to swallow my own adenoids. The language -- the ONLY language to be seen tappety tapping in 2008 is AAAAAAAAA!

Concurrency won't go away

While the trickle of anti-Ror hate speak will grow to a roar (and fade away as the 'plateau of productivity' emerges) you can be sure that the pro-concurrency mantra won't dissipate before the year is through.

Of course all of the examples will centres around 'embarrasingly parallelizable problems' (you down with EPP? yeh, you know me) while the real world is of-course bound in the "non-trivial legacy enterprise hell," the NTLEH, pronounced antler, because it's almost cute.

Facebook is evil. And sh*thouse at contextual advertising

Hang on, that's not a prediction, that's a statement. And yes, I still use them.

Being sh*thouse at contextual advertising is going to hurt them before being evil hurts them. They might get better at advertising. But they'll still be evil.

How did last year's prediction work out?

Main prediction was around 'Dynamic.Net' -- and I was pretty much correct though not specific enough really.

Most importantly, my riskiest prediction of all turned out to be correct: There actually was war in the middle east. And some peace too. Incredible stuff.

 

Christmas Roundup

a robot

Received a new niece.

Revised tally: 5 nephews, 2 nieces. Yay Katie.

Invented dozens of Christmas stories for a niece and nephew, including the one with rudolph and the bear trap, the one with santa and the exploding chimney, the one with the monster who chops off childrens fingers; my best work I swear. But niece and nephew kept pleading: tell us another one, but make it funny.

Taught said niece and nephew to master MS paint.

Attracted yet another cyclone. I visit beaches, storms arrive! It's 'a very mild super power'.

Read about F#. Wrote fractals in logo, sans computer. (Have typed them up since, see below).

Drew robots. Top fun and very childish.

More info about logo after the jump.

The Daily Grind has ground to a halt. Fare well Mike!

sierpinskikoch curvetreefern

Robot's head, altered in Expression Design. Sketched from page 76 of the book 50 Robots to Draw and Paint, Keith Thompson

robot detail -- altered in expression design

[i've since worked out that the original artist was Ken Crossley, as seen here].

More About Fractals In Logo

A tree

***

A sierpinski triangle

***

Koch Kurve

***

A Fern

***

Some related stuff you may find interesting:

  • Turtle Recursion programmed on the XO
  • Scratch -- "Snap together blocks" -> "to create stories, games and animations" -> "and share your creations on the web"
  • context free - "a small language for design grammars"
 

Logo Programming!

***

Q: What did kids do back in the olden days, before smoking crack and sniffin glue was the regular hobby it is for today's youngsters?

A: Why, they programmed in Logo, silly!

What a christmas treat! I just saw this heading, Logo Rediscovered on programming.reddit.com -- and immediately had to take their challenge:

Can you figure out how to draw a tree?

a tree in logo

Spoiler alert:Here's my code for implementing a tree...

Love that recursion!

code to generate a tree