Moving Perl up the value chain

July 21st, 2010

The last year or so, there’s been a serious discussion in the Perl community about “the M word” – marketing. About visibility, making good impressions and making more people consider Perl as a good programming language for their tasks at hand.

Lots of good things have happened, including the establishing of the TPF marketing committee, volunteer stands at non-Perl conferences, and more focus on the brilliant parts of what the community and it’s software can offer. It’s been great watching all the goodness unfold, and being part of some of it.

But in the meantime, something else has been bugging me.

All the time, there’s been a focus on tools and people. When it comes to solving actual and real life problems, not much has surfaced. Instead there’s an unspoken focus in the Perl community about making tools that help people make tools.

What we do at the moment is marketing tools-for-making-tools. We tout the obvious superiorities of Moose, Catalyst, POE and all the other goodies in Task::Kensho, but when it comes to solving actual and real problems that “normal” people care about (you know, the people that don’t care about the details in computers), we blissfully ignore it while silently hoping for some big company to choose Perl for their next public project – so we eventually can get a new website to link to.

I propose we do something about this. Let’s pick a few real and significant problems, and see if we can make an impact on those while using and showing off Perl software, the Perl community and all that is good about it at the same time.

To kick this off, let’s ask a few basic questions.

  • What are “real” problems? – Read the news! You’ll find people complaining about education issues, lack of clean water, political turmoil, misuse of power, corruption, closed “power clubs,” democratic deficit in government, etc. etc.
  • Also, consider the prevalence of a problem. Local < Regional < National < Societal < Cultural < Global < Biological. – There’s nothing wrong with a little ambition!
  • And finally, is it a particular or a systemic problem? Is it short-term (critical) or long-term (chronic)? Can you find similar problems in other areas?

Picking a good problem to play with is very much up to you. Pick something you care about that you know is difficult, and pick something that lots of other people care about too but that can’t be solved trivially. Maybe you want to make a quick risk assessment matrix to figure out if your issue is “real” enough? (and even if not, it’s probably useful to remember that $risk = $likelyhood_of_failure * $impact_of_failure; anyway.)

Next, you have to make figure out a way to improve on the situation. Keep in mind that $influence = $visibility * $impact; – meaning whatever you do, you have to both think about execution and telling people about what you’re doing. Make a plan, and tell people about it! The rest is “just” hard work. ;)

With that said, if you’re going to make Perl part of any solution, it might be useful to have an idea what role Perl can have in the process. Here’s one possible (and quite generic) value chain:

  1. Perl
  2. ➜ CPAN
  3. ➜ $USEFUL_FRAMEWORK (A tool for making tools) # This is where we code today
  4. ➜ $TOOL_THAT_INCREASES_AWARENESS  # This is where I think we should code more
  5. ➜ Discussions and awareness building, eventually in media
  6. ➜ Discussions among politicians
  7. ➜ Some kind of funding in order to improve issue
  8. ➜ Someone tries to actually do something
  9. ➜ Success/FAIL/Meh.

Also, keep in mind that Perl is useful in places where data, information or knowledge is the main currency or “item of value.” Perl tools might not help directly with “physical” matters, but I’d say it’s much better suited for improving communication and knowledge-related issues.

So, you ask: How about an example?

I’m so glad you asked! ;)

My attempt at this is called Kaizendo.org, and it’s purpose is to enable people to create textbooks that can be customized to the individual needs of the reader.

To make this happen, we’re creating a Catalyst-based tool for discussing and improving texts that have aspects – texts that have alternative representations of themselves, each telling the same story but in different ways. If a pupil is struggling with dyslexia, then choose an aspect where the story is told with simpler, shorter words. If a pupil is bored because the rest of the class is slower at reading, then choose an aspect where the story has more details and depth, so the pupil can keep the same pace as the class while getting more interesting content out of it.

What would I like to influence with this?

  • Make textbooks more interesting for kids, so they can effectively (and motivationally) compete with professionalized entertainment like games, social networks, television and other kinds of procrastination. (How? By making it possible to write aspects that appeal to different fields of interests, and improve these based on reader feedback.)
  • Give teachers the opportunity to use their textbooks more actively in the way they teach their classes. Textbooks are today for homework, why not make the homework more relevant for what’s going on in the classroom? (How? By making it possible to write aspects that support different styles of teaching)
  • Make the textbooks a conversational item, so pupils, teachers parents and other enthusiasts can not only figure out the best ways of telling a story, but also learn and improve their own level of knowledge by allowing them to discuss and improve the contents of the textbook. (How? By allowing anyone who cares about the textbook content to give contextual comments to the text itself, discussing these, and finally make it easy for the authors to update the text based on those discussions.)
  • And quite a few other things. ;)

The project is up and running now, and we’ve started writing the prototype, we have a mailing list and wiki, and I’ll even be giving a talk about Kaizendo at YAPC::EU in Pisa. But we’re still far away from our goal, and we need plenty of help.

So, if you like what I’ve written here but don’t want to start your own Big Project That Matters, then do consider joining our project. In the meantime, tell me what you think!

How to create a police state using graph clustering algorithms

June 10th, 2010

There’s a big debate going on in Norway these days about Datalagringsdirektivet, the Norwegian implementation of the EU Data Retention Directive (2006/24/EF). Basically, the directive allows the police to have access to communication data for everyone. Who is talking to who, who sends mail to eachother, etc. etc.

Now, think about this. What the police gets here is a graph of people that are talking with each other. With a little bit of statistical analysis and the appliance of a couple graph clustering algorithms they can find groups of people that talk to each other regularly. Now, these groups might be called families, friends and such – but what if the clustering is of something more nefarious?

Read the rest of this entry »

The business case for Perl 6

February 11th, 2010

Perl 6 is about value creation, and value creation is a product of [people solving problems] and [efficiency of tools used to solve these problems] — effort * efficiency.

For a while the focus in the Perl 6 community has been on increasing efficiency, and mostly by improving expressiveness and efficient use of programmer attention. This has lead to powerful constructs like grammars, junctions, roles, a wonderful type system and the tests that go with that – both for making sure the features work as intended and that they can be used in a sensible manner.

The cool thing here is that these features work as a “community size force multiplier.” For people to be attracted to a tool, they need to see it’s more efficient than it’s competitors. Efficient in learnability, expressiveness, utility, execution and fun. Right now, Perl 6 has reached a level of interestingness that makes it extremely well suited for hype, and with Rakudo Star on the horizon (Q2 2010) I’m expecting the Perl 6 buzz to increase a lot. The force multiplyer is about to kick in. :)

Better features -> More buzz -> Bigger community -> Stronger business case.

When it comes to business case, language popularity is the prime driver. When someone needs to hire people, availability of these people is paramount. Bad code can be fixed, but not hiring that programmer is so much more expensive than having to fix bad code. So if one should look at the skills market today (with so very few people in the world knowing Perl 6) the business case for it is almost non-existant.

With this in mind, I’m still very happy to see the Perl 6 crowd taking the long view and create an incredibly cool language instead of just focusing on a tiny feature set and then creating buzz. The buzz will come all by itself, and when it does, Perl 6’s awesome force multiplier will kick in and the fun will really begin.

Perl 6 might be small right now, but I’d say the outlook for Perl 6 is nothing less than spectacular. :)

Notes to self: “Atlas Shrugged”

February 2nd, 2010

So, I’ve managed to get through Atlas Shrugged. It’s a monster of a story in so many ways: difficult to digest, easy to criticize, full of stupid assertions and brilliant quotes. I’m not entirely sure what to take from the book. On the one hand it’s a story about the rational mind, it’s power and ethical implications on using it. On the other hand, it’s a titanic straw-man argument where Rand portrays a world filled with witless sheep-like people only waiting to be ruled by whoever brings the most “pull” (influence, power) to the table. It’s a polarizing story about extremes of philosophy and government, with some kind of a benevolent anarchy on one side and a totalitarian oligarchy on the other.

Rand presents good story in the sense that it’s thought provoking, forcing me to think about my motivation for doing things, make me consider what I’m doing with my life and even think about the meaning of “doing things” for myself or others around me. Some of the central points in the book are that it’s ethical just to produce more than one consumes and to do ones best regardless of ability and situation. Getting a reminder of this is always good, but where the story does well is by telling why this is ethical and good, then put it in context and made abundantly clear.

The sad thing is that Ayn Rand makes these points by creating a world and system based on preposterous claims like “there is no truth, no rationality and we can never be sure about anything” as a central philosophy. Rand picks a bunch of philosophic tenets (like Descartes’ “I think, therefore I am”) out of context and presents them as foundations worth building a society on. The result is of course an evil and corrupt one, which Rand then proceeds to destroy. It’s almost like Rand ignores the conversational aspects society and science, that society is a collective effort where the climb upward goes both over the shoulders of midgets and giants. The world view she proposes also hinges almost exclusively on some genius-savior being the requirement for success in all activity, and that there is no way the mindless masses can do without the leadership of these titans. Maybe I’m an optimist to believe that people are smarter and more resourceful than Rand’s picture of the “common” man.

Still, it’s a good book and definitely worth my time. Even if she ignores it in the story, the book itself is an argument in a conversation – a somewhat questionable argument – but one that needs being reminded of: that Rationality is king, and everything hinges on it, no matter the state of the society you live in. :)

Radio Open Source++

October 21st, 2009

Another show from Radio Open Source that made me really think. This time, Christopher Lydon is interviewing the journalist and former war correspondent of New York Times, Chris Hedges, about journalism, truth, critical thinking, society, politics and the importance of reading.

“To believe somehow that we are the culmination, that time is linear, that we are progressing morally, is to ignore human history and human nature, and essentially to remain in a state of infantilism. That’s what illusion is about. If we had an understanding of what the dying days, the twilight hours of great civilizations were like we would be able to see all the flashing lights, the warning signs around us. But I think that the illiteracy which has gripped the country (a third of this country is either illiterate, or is technically literate but doesn’t read anymore); that shift from a print based culture into an image based culture, the belief that how we are made to feel is a form of knowledge, propaganda being a kind of ideology — these are the hallmarks of a totalitarian state. Totalitarian states are image based, spectacle based states.”

Excellent interview, with lots of interesting views and thoughts. Go listen to it now! :D

Note to self

October 12th, 2009

Need to look further into these:

This is how i Vote

September 11th, 2009

Norway votes on monday, and as usual I try find out which party to vote on some time before the big day. Here are a couple of the things I’m considering when finding good candidates:

  1. I don’t have any parties that are “mine.” I find worthwhile arguments both on the left, center and right side of the political spectrum, and I try to be open to new arguments.
  2. There are waaaay too many things going on in our society (and in the world in general) to make informed decisions on everything. This means I’ll have to look for the basics – values, world view, ambitions, priorities between group/society and the individual, previous history and other “gut feeling” factors.
  3. Still, there are a couple topics I think I’m comfortable with – topics where I have a slight opportunity of making an informed decision. For me, these include ICT policy, IP issues and questions rising from the tensions between traditional media+business and new technology.
  4. I’ve chosen to weigh the issues where I’m informed higher than the topics I don’t know much about. This is mostly because I see which parties have bad and/or lacking policies, but also because I think it’s the right thing to do.
  5. Voting for me is about which direction I’d like to see my society move. But in order to have an idea on this, I’ll have to understand as much as I can about how society works. This is a work in progress, and in the meantime I’ll vote mainly on issues where I can say something coherent and useful.
  6. I’ve decided not to vote tactically (“likelyhood of winning” is NOT a criteria I’m considering.) The notion of tactical voting even disgusts me a little. :-6

Happy voting!

Entrepeneurship 101

September 2nd, 2009

I’ve followed a couple different entrepeneurship and business podcasts for a while now (oh my, I think we’re talking about 3-4 years!). Stanford’s “Entrepeneurial Thought Leaders” series, or “Peter Day’s World of Business” have been quite informative, but after listening to enough “war stories” I’m thinking  that there has to be a limit to how much I have to listen before I try doing something. I’ve been more interested in “learning from other people’s mistakes” than making my own, perhaps.

Time to do something! Two weeks ago I signed up for ENT1000 – the “Entrepeneurship” class at the Uni in Oslo. Our first class was about creativity (very fun.) Our second about building groups and communication (we made a Lego castle without talking, and everyone with their designated tasks to fill.)

In the meantime we got our first home assignment: Make a presentation/sales-pitch about one horribly bad product. Our product was “Contact lenses for flies,” and we made a story about the need to “humanely remove the files from your home, using our patent-pending UV filtering spray (that covers the fly’s eyes) and UV-emitting tape.”

The presentation went well. :)

Next, we’re supposed to try ourselves on something more serious and ambitious.

Showing off Perl @ Nordic Perl Workshop?

January 23rd, 2009

I posted this on my use.perl journal yesterday:

This year, Nordic Perl Workshop is co-located with another open source conference, Go Open. This is what we’re working on right now:

  • The conference theme is “Your future with Perl”. Talks have been subitted, now we’ll try to stich together an interesting schedule.
  • We’re aiming for one Perl6/Rakudo/Parrot track and one track showing modern use of Perl, hopefully with a flavour of Enlightened Perl mixed in.
  • NPW will share venue with Go Open, giving everyone an opportunity to see how a Perl conference can be, and giving the Perl community a place to show off it’s best sides. The Go Open theme: “Openness is profitable”.
  • The day after the conference, we’ll open the doors for our Perl6/Rakudo/Parrot/Enlightened Perl hackathon at Redpill-Linpro’s nice office (the same place we had the Perl QA hackathon last april).
  • Gabor Szabo will come and hold his newly improved 4-day Test Automation course right after the hackathon (at the same venue too). There’s room for 12 people there, contact Gabor if you’d like to come.

And to boot, there’ll be another Perl QA hackathon in Birmingham just the week before. LOTS of good reasons to visit northern europe around easter, in other words. :D

Still, is there anything we could do to make it better? I’m specifically thinking about the opportunity we have due to sharing venue with Go Open… Any ideas on how we could “market” the livelyness and good parts of the Perl community? Who would be the natural people to do this? Would you like to do something?

Please share your thoughts! :)

- Salve (Oslo.pm and NPW guy)

Any ideas?

Behavioural Economics++

August 25th, 2008

Just listned to the latest Radio Open Source podcast, where Christopher Lydon has a conversation with Cass Sunstein about how behavioural psychology has influenced economic policy-making and ideas on how “the consumer” decides and takes risks.

Very interesting show and one of the better ones in a loong while. I think also that several of the ideas discussed in the show can work well within the software development field – especially the assumption that people are “busy with their lives” and don’t want to use much time on making decisions that could have been set as “sensible defaults” in the application they’re using. Good stuff!