Tuesday, April 27, 2010

Perl Mongers!

I'm looking forward to seeing y'all tomorrow at 7pm and
am excited for Aran's and Ralf's presentations.

--Andrew

                          Los Angeles Perl Mongers[1]
          The Perl Users Group of the Los Angeles Metropolitan Area
     __________________________________________________________________

Upcoming Events

  LA.pm's next meeting
   What:  Los Angeles Perl Mongers Meeting
   When:  7-9pm
   Date:  Wednesday, April 28, 2010
   Where: The Rubicon Project HQ - 1925 S. Bundy, 90025
   Theme: Perl!
   Food:  Pizza and beverages provided.
   RSVP:  Responses always appreciated.

    Presentations:

    1. Aran Deltac: Cassandra : A highly distributed, eventually
       consistent, distributed, structured, key-value store.
    2. [2]Ralf Pieper : Cloud Computing use Cases


Links:
   1. http://la.pm.org/
   2. http://r.mooo.com/

Powerpoint considered harmful

Enemy Lurks in War Briefings - PowerPoint - NYTimes.com
We Have Met the Enemy and He Is PowerPoint

Military commanders are concerned that computer-generated charts and bullet point lists stifle discussion, critical thinking and thoughtful decision-making, as well as take up too much time.
[...]
“It’s dangerous because it can create the illusion of understanding and the illusion of control,” General McMaster said in a telephone interview afterward. “Some problems in the world are not bullet-izable.”
[...]
Senior officers say the program does come in handy when the goal is not imparting information, as in briefings for reporters.

Source: http://www.nytimes.com/2010/04/27/world/27powerpoint.html



Death by Powerpoint blogpost expands on the comments at the end of the times article about the 2006 allegations that Tommy Franks sent battle plans by powerpoint. Would this slide help you plan for combat?

Grousing about the destructive nature of powerpoint on presentation skills is not new. Yet, I hadn't realized how much powerpoint style programs are being used outside of presentation space to replace technical documentation and scientific reports.


Edward Tufts has written two editions of The Cognitive Style of PowerPoint: Pitching Out Corrupts Within. In PowerPoint Does Rocket Science--and Better Techniques for Technical Reports he asks a difficult question, Did powerpoint make the Space Shuttle crash?. The comments on that article are of unusually high quality. I read through them all with a sense of building anticipation. This meme is riffed upon in a washington post article, PowerPoint: Killer app.

What to do?

Find a method of presentation that minimizes impedance mismatch with your audience and your data. Tuft recommends a one duplex 11x17 paper for a 3 hour talk. Find a way to present idea and defend it with data that works for you.

A commenter recommended The A3 Method of report generation (named for A3 sized paper (equivalent to US B sized 11 x 17 )) presentation style adapted from practices as Toyota.
In Tuft's workshops, [he] describes how to replace PowerPoint presentations with 11 x 17 sized reports, and provides many good arguments for why "engineering by PowerPoint" doesn't work very well.
Tuft replies warning that this may just be a BMF: Business Methodology Fad:
In the Beautiful Evidence chapter on corrupt techniques in evidence presentations, the section on over-reaching concludes with this: "When a precise, narrowly focused technical idea becomes metaphor and sprawls globally, its credibility must be earned afresh locally by means of specific evidence demonstrating the relevance and explanatory power of the idea in its new application." (p. 151)


Anytime you pare down your presentation to fewer words and fewer pictures, you have an opportunity to reduce fluff and focus on the primary point of the presentation. Practice examples include turning a 5 minute talk into a 30 second elevator pitch. What do you keep? Once you've pared it down to 30 seconds, expand it back to 5 minutes by including explanatory details. (Expanding it back will be even more difficult than slimming it down).

NEED 2-PAGE SHORT STORY TWO DAYS.

Mark Twain replied:
NO CAN DO 2 PAGES TWO DAYS. CAN DO 30 PAGES 2 DAYS. NEED 30 DAYS TO DO 2 PAGES.

If you're going to be trapped using powerpoint, you might as well learn to use it well via a book like Beyond Bullet Points
. Science daily has an article on how to report scientific research to a general audience
Extreme Presentation claims to be extreme. I have a couple more presentation books on my bookshelf, e.g.: Present Like a Pro: The Field Guide to Mastering the Art of Business, Professional, and Public Speaking

[...] factor that constitutes my own violent objection to its prevalent use, that being that increased reliance on PP and other visual aids in education, training, project and crisis management fundamentally undermines the active involvement and cognitive engagement of the target audience/students/team members by converting the desemination of information to a passive presentation.

Kerry Parslow (email), February 9, 2007

It's easy to blame the tool ... but I think .ppt is just a symptom of something else. There are two sides: authentic presentation and authentic listening. We need both.

-- Dennis Allen, September 12, 2006
Don't forget your audience. You may utter as much as you'd like, but it isn't communication until your message is actively listened to by your audience. Until they've listened and you've agreed a plan for action and turned that into work items, it is at best good intentions.
"...it is the recipient who communicates. The so-called communicator, the person who emits the communication, does not communicate. He utters."

— Peter Drucker


Another approach is to free yourself completely from format by following the data. In this TED talk, Hans Rosling shows the best stats you've ever seen you'll find some amazing live visualization of world statistics. Find out more at his site Gapmind.org

Not to be outdone, The Gettysburg Address, power point edition.

Update:


Did I mention I write my perl mongers presentations in Vroom::Vroom, a perl + vim tool for presentations. It is very simplistic, I'd actually like to add some structured markup (markdown or similar) to give the slides a bit more clarity. (or do I just want some style and punch?). Presenting code in the my development environment means I'm not placing an unneccessary presentation layer between myself and my audience.
It doesn't just look like vi, it is vi.

"You look like you're presenting in vi or something," remarked a new attendee.
"Yeah, I'm presenting in VIM," I replied.

--Los Angeles Perl Mongers, March 2010 meeting.

I can interact live with the slides, run the code snippets, include external files and more: all with syntax highlighting. The presentations can be exported to the standard vim format or to a minimal web template. When displaying in gvim, you can even change the font!

Example slides in html or raw vroom formats.

Tuesday, April 20, 2010

Management Rewired

This morning I finished reading Management Rewired ( website ). I like both management books and brain/mental model books. This book is both. The brain analysis is slightly filtered as the book is written by a experienced management guy who has done reading of the research rather than directly from the researchers. This is more than compensated for by the management insight provided by his years of consulting.

Our conditioning towards Aristotelian logic traps our thinking to believe that we can rule by fear, intimidation and force, that aggression can be met by aggression. The brains ability to absorb dissonance and warp input to match expectations keeps us trapped. Only when confronted by a sufficiently large shift will this action of expectation matching be overwhelmed and then the process of finding a new model will begin.

We can force this shift by extreme changes in the rules of the game. The biblical command to "turn the other cheek," works in this regard. By refusing to escalate violence, we demonstrate the irrationality of escalation. From within the system, escalation seems like the only option. To allow other options, we must change the rules of the system. This book recognizes the dolphin experiment, we have Pavlo's later experiments on changing mental conditioning, we have the "hit bottom" approach of AA: all of these require extreme measures. Forcing the participant to the edge of their system so they have no choice but to reinvent.

We can also trigger the same reaction through story telling. This is easier to manage, simpler and less threatening. Here-in lies the difference between Leadership and Management, claims our author. In his view, the manager is interested in incremental changes through a process of reward and punishment. The leader is a story teller who sees a new and different outcome and rallies those around him to internalize the vision and lead themselves to the new outcome. This is not a trivial problem.

Our author does include a 5 step list of requirements for our game-changing story. More on that tonight when I update this article.

Friday, April 16, 2010

Today's morning research :Graph theory. also CPAN is awesome.

I spent the morning thinking about software interviewing. It's a been a couple of months and I have candidates to interview today and Monday. I was hoping to find a couple of nice topics for a non-trivial yet simple code project for an hour long pair session at the end of the day.

But then I stumbled across this thread, again. And I realized that while I've actually studied up on most of that stuff recently, Graph Theory is still sitting, waiting on some virtual shelf.

So now on the reading list we have MIT Discrete Math (Why do we still not have a Caltech Open Classware type thing?), Algorithm Design Manual, which I started browsing at googlebooks. 15-251 at CMU, check out the wiki perhaps? I already have Knuth's discrete math book in my queue, and the depth of my reading queue keeps increasing.

Jarkko Hietaniemi's Graph module is up to version 0.94. Does it really have the Graph-0.20 compat layer still? I read the manual and the source this morning. It's lovely code: clean object layout leads to tons of small functions that are self commenting. Sometimes I forget how awesomely easy it is to browse to the source of random cpan modules and to read through the tests or random files like this design doc. Do you ever forget how awesome it is to breathe? It's like that.

A side note on queues, remember your basic theory: size of the queue is controlled by the flow rate in and the flow rate out. And the corollary: the average time through the queue ( average length * average outflow ) is also directly correlated to the inflow and outflow. If your queue is continually increasing in size or books are sitting on the table for too long, then you need to either increase the outflow or decrease the inflow to shrink the queue. So take the time you would spend adding new content to the queue and focus that time instead on pulling out of the queue. Consume Knowledge.

Yes Simba, I'll take you on a walk now. Sorry you had to wait for two+ hours while I read and blogged from 6:30 to 9, but these thing happen.

Thursday, April 15, 2010

On ideas, decisions and actions

Ideas are somewhat like babies--they are born small, immature, and shapeless. They are promise rather than fulfillment. In the innovative company executives do not say, "This is a damn-fool idea." Instead they ask, "What would be needed to make this embryonic, half-baked, foolish idea into something that makes sense, that is an opportunity for us?"
--- Peter Drucker
I really love this quote about ideas and the mandate to listen and take action. It's so easy to offhandedly dismiss an idea as foolish or lame. It takes a concerted effort to listen and look outside of our comfort zone and think "how can I take this idea, and improve it and turn it into an opportunity."

David Allen in Getting Things Done spends some time discussing how most companies go about so-called brain storming starting from "who's got a good idea." At that point, they're already behind. By applying a filter of "is this good" while fleshing out idea possibilities we lose "bad" ideas that could have lead to good ideas, and we stifle creativity. The subconscious is very fickle and will clam up if you don't appear to be ready to listen. His thesis is that we tend to do the correct 5 steps, but in a ineffectual reverse order.

Brainstorm first, then filter as a second pass. Over at manager tools they refer to this as the "peanut butter rule." During brainstorming, the facilitator writes down every idea suggested, with no regard for quality only quantity. "If you say 'peanut butter' I'm writing it down."

"In fact, no decision has been made unless carrying it out in specific steps has become someone's work assignment and responsibility. Until then there are only good intentions."
--- Peter Drucker
What do we do once we have these new ideas? We must turn them into action. Specific actionable goals, that are then added to someone's work queue and tracked. This is one of Peter's more eloquent quotes, I love the innuendo implied by good intentions.
le proverbe tiré de notre saint Bernard, ‘L'enfer est plein de bonnes volontés ou désirs’
The proverb from our Saint Bernard, "Hell is full of good intentions and desires"
---- St. Francis de sales, Letter lxxiv.

@ideas = brainstorm();
discuss(@ideas);
@actionable_ideas = grep { is_good($_) } map { extract_kernel( $_) } @ideas;
map { $work_queue->add($_), $work_tracking->add($_) } @actionable_ideas;

Now get out there and make some ideas! listen to some other ideas! Get those ideas out of your head and turn them into action plans. Then take action. Boom, change happens.

"Are you ever gonna run out of ideas?"

I run out of ideas every day. Each day I live in mortal fear that I've used up the last idea that will ever come to me.

If you don't want to run out of ideas, the best thing to do is not to execute them. You can tell yourself that you don't have the time or resources to do 'em right. Then they stay around in your head like BRAIN CRACK. No matter how bad things get, at least you still have those good ideas... that you'll get to later.

Some people get addicted to that brain crack. And the longer they wait the more they convince themselves of how perfectly that idea should be executed. They imagine it on a beautiful platter with glitter and rose petals. And everyone is clapping for them.

But the bummer is, most ideas kinda suck when you do 'em. And no matter how much you plan, you still have to do something for the first time. You're almost guaranteed the first time you do something, it'll blow. But someone who does something bad three times and fails, still has three times the experience of that other person who is still dreaming of all that applause.

When I get an idea, I try to get it out of my head and into the world as fast as possible, because I certainly don't want to be addicted to BRAIN CRACK.
--- Ze Frank 2006-July-11

Tuesday, April 13, 2010

To see the world with child-like wonder is not childish. It is enlightenment.
Andrew Grangaard - 2010-Apr-13

Wednesday, April 7, 2010

use libs $FindBin::Bin considered harmful

It's time to stop using FindBin::Bin to find the location of our perl programs, when we already have that in $0. If we aren't going to use FindBin::Bin to prime the libs directory, what should we be using to pull in relative directories?

The FindBin version:
Begin{ use FindBin::Bin; use lib "$FindBin::Bin/../lib"; }

A File::Basename + Cwd version:
use Cwd qw(abs_path);
use File::Basename qw(dirname);
use lib dirname(abs_path($0)) . '/../../../../lib/perl';

A File::Spec + File::Basename version:
use File::Basename qw(dirname);
use File::Spec;
use lib dirname(File::Spec->rel2abs( $0 )) . '../../../../lib/perl';

Quoting a chunk of Tye's post from the perlmonks discussion.

Well, I've complained about this particular module before because I think the perverse way in which it was implemented is quite unfortunate because it makes it nearly impossible to use it for lots of useful things like finding other programs that might be on your PATH. (After all, it is called FindBin and $0 is a script, not a binary.)

But when this question came up in chatterbox, I did some checking and it appears to me that the correct answer for the full path to the current script is simply: rel2abs( $0 ) as another answer mentions.

For those that don't know, the (perverse) FindBin module goes through some effort to search $ENV{PATH} trying to find your script. However, I can't come up with any situation in which the script would have been found on the $ENV{PATH} but that $0 would not contain the (full) path, so the module appears to be pretty useless.

-- Tye on perlmonks.org

Posting, since I can never seem to find this snippet when I need it.

I'm really only interested in the case of automatically pulling in my modules from my test directory, for work code. When writing modules, I use Dist::Zilla and dzil test to set the paths. When running random .t files, I use FindBin::libs to automatically pull in libs/ directories from farther up the path. (which uses FindBin, but is really handy). FindBin::libs source