On the concept of Journaliterary Programming

I would like to submit to you the following (arguably crazy) thought.

Assuming everyone reading this has a notion of what a “good” program is. In my world this would generally mean 1) the program code communicates it’s intent well to the reader, 2) the code does the right thing, and 3) it does so in an appropriately efficient manner. Meaning, if you can’t understand the code then you can’t make it correct, and long as it’s not correct, there’s not much value in making it efficient.

In my mind, this should lead to the conclusion being a good programmer probably also means being a good storyteller.

This is not a novel idea, though. Donald Knuth talked about a very similar topic a some time back. He called it “Literate Programming”, and with it, he urged programmers to go about writing software in the same way as one would go about writing literature.

I think there’s some value in this thought, but I think there’s something important missing too. To give you an idea of what, please consider the following quote:

Literature is the art of writing something that will be read twice; journalism what will be read once.

– Cyril Connolly, Enemies of Promise (1938)

If we translate this into the field of computing terms, one might say write code that one only needs to read once to understand. Anyone who’s written any meaningful amount of code sees the value in an ideal like this. But with that in mind, one might also conclude that the art of journalistic writing is closer to our field than field Knuth proposed we should embrace.

Next, let me introduce you to the following opening of an article.

Mother Earth, Mother Board

In which the hacker tourist ventures forth across the wide and wondrous meatspace of three continents, acquainting himself with the customs and dialects of the exotic Manhole Villagers of Thailand, the U-Turn Tunnelers of the Nile Delta, the Cable Nomads of Lan tao Island, the Slack Control Wizards of Chelmsford, the Subterranean Ex-Telegraphers of Cornwall, and other previously unknown and unchronicled folk; also, biographical sketches of the two long-dead Supreme Ninja Hacker Mage Lords of global telecommunications, and other material pertaining to the business and technology of Undersea Fiber-Optic Cables, as well as an account of the laying of the longest wire on Earth, which should not be without interest to the readers of Wired.

– Neal Stephenson, Wired Magazine, December 1996.

At the time of it’s writing, this style might have been called long form. Ten years later, the style gets a name; creative nonfiction. And literary reportage. And literary journalism. The purpose of this style is to tell a factual story about real events and real people, while allowing yourself to use story-telling techniques and language that traditionally belongs in the realm of literature.

I think this is a fascinating concept, we can learn something from it’s ambitions.

I would like to submit to you, that – with the right language at one’s disposal – it’s possible to write programs that not just communicate their intent so well that the reader understands everything after having been read once, but also that the program is written in a way that is so engaging and fun to read that we want to read them twice.

Can the Perl 6 language community can make this happen? I wonder. :)

Coding Dojos at the Perl 6 Patterns Hackathon!

Oslo Coding Dojo has jumped at the chance to connect with the Oslo Perl community. They will be present at the hackathon this coming weekend to arrange dojos and spread the word of kata and dojo goodness. Joy and happiness! :)

What can participants expect?

  • Learn about what coding dojos and katas are all about
  • Practice TDD and pair programming in a Perl 6 context
  • Experience true collaborative programming
  • Have fun!

Good programming requires good practice, and at a dojo we get to learn together and practice the good stuff while having fun. We learn by doing (actual practice), from repetition (what can we do better?) and from the conversations (from one another and looking back after we’re done).

Learn a new way to teach Perl 6 and good programming practices!

What are coding dojos?

Dojos are a place to practice. Coding dojos are groups of programmers getting together to practice their craft. The concept of a dojo stems from Andy Hunt’s coding kata article, which reminds us to take time off to get at what we do. For more information about dojos, see

…or just join us at the Perl 6 Patterns Hackathon! (Remember to sign up!)

The first session will last for about an hour, including a short introduction to get us started. Further sessions will last an hour or as long as the participants want to. We’ll aim to spend the first session on getting to know the tools and the format, and then use the subsequent ones to improve on this.

Hope to see you there! :)

- Geir Amdal
- Salve J. Nilsen

Åpent foredrag: “Temporally Quaquaversal Virtual Nanomachine Programming [...] Made Easy!”

 

Typisk hjerne etter et Damian-foredrag

Oslo Perl Mongers ønsker å invitere til åpent medlemsmøte med Open Source legenden Damian Conway! Foredragene hans er sykt morsomme og minneverdige (bare spør de som var på “Fun With Dead Languages” foredraget i høst) så dette blir dritkult! :D

Tittel:
Temporally Quaquaversal Virtual Nanomachine Programming In Multiple Topologically Connected Quantum-Relativistic Parallel Spacetimes… Made Easy!
Tid:
Torsdag 19. April 2012, klokken 18:00
Sted:
The Scotsman (2. etg), Karl Johans gate 17
Kart:
http://scotsman.no/kontakt.php

Foredraget er gratis og åpent for alle.

Damian beskriver foredraget sitt på følgende vis:

Watch in terror as Damian writes a Perl program to extract square roots using nothing but quantum mechanics, general relativity, and the very fabric of the space-time continuum.

Along the way we’ll also investigate: Witt genstein’s dark secret; the diminishing returns of physical computation; Roman philosophy; when Super Science Adventures go wrong; the greatest Lego kit of all time; the secret identity of Sith; carbon logic vs silicon logic; the giants of 1930′s physics; elementary spin-half quanta under relativistic motion; CAT scans; Will Smith; bongos; drunken bets involving penguins; algorithmic consistency; God’s dice and the problem of free will; intrinsic self-inconsistency; the many worlds outside Copenhagen; and the inventor of stage diving.

What happens when Dirac meets Deutsch meets Damian? Mere anarchy is loosed upon the world.

http://damian.conway.org/Seminars/Quaquaversal.html

Om Damian Conway:

Damian Conway is a well-known member of the international Open Source community. An entertaining and widely sought-after speaker and educator, he is the author of several technical books, as well as over 50 Open Source software modules. He runs an international IT training company – Thoughtstream – which provides developer training from beginner to masterclass level throughout Europe, North America, and Australasia.

http://damian.conway.org/About_us/Bio_formal.html

Om Oslo Perl Mongers:

Oslo.pm er den eneste uavhengige faglig-sosiale foreningen for folk på østlandet som vil holde seg oppdatert på Perl, CPAN samt miljøene og infrastrukturen tilknyttet disse teknologiene. Foreningen er basert i Oslo, ble stiftet i 2002, har ca. 160 medlemmer og avholder faste medlemsmøter første onsdag hver måned.

http://oslo.pm/

Dette blir bra! :D

Oslo.pm courses in TDD, API Design and Productivity

Keeping in mind Oslo.pm’s two-step .plan:

  1. Do something cool
  2. Tell about it

Damian Conway is coming to Oslo, and just like last August, Oslo.pm and Redpill Linpro will be organizing courses! :D

Place:
Redpill Linpro’s classrooms at Vitaminveien 1A, Oslo, Norway.
Time:
Wednesday April 18th: 09:00-16:30, Test-Driven Development in Perl (Register).
Thursday April 19th: 09:00-16:30, The Productive Programmer (Register).
Friday April 20th: 09:00-16:30, API Design for Perl (Register).

There are 12 seats available each day, so don’t wait too long to sign up. Also, a portion of the profits will go to fund Oslo.pm’s other activities in 2012. :)

Looking forward to see Damian in action again!