Say what you want not how you want it done – logic programming with answer sets at ACCU Bristol, September 4

Marina de Vos and I ran a very well received session on this topic at the SPA Conference in London last June. I was a bit, pleasantly, surprised, but I shouldn’t have. When I’m curious about something I’m often not the only one.

Answer set programming is a research topic for Marina, and from our discussions it became clear to me that I just did not get it. For me one of the best ways to learn something is to organise a session on it.

At SPA we received some useful suggestions to improve the session for the next time, so we thought it would be a waste not to do it again. Therefore we’ll run this session next week, Wednesday September 4 at the ACCU Bristol meetup. You can Sign up here.

As before, this will be a hands-on session with small exercises, where you’ll learn something new about answer set programming at every step. Thanks to the suggestions at SPA, we’ll now be using one running example as opposed to various different problems.

One of the things that pleasantly surprised me at SPA, was that several participants continued working on the exercises during the conference. Our session was on Monday morning and after that people would occasionally approach us with more questions. It also fit well in the program with Nat Pryce and Keith Braithwaites’ session on property based testing and some more Artificial Intelligence themed sessions.

I now have a better understanding on logic programming, and the state of the art in it. Answer Set Programming is fun, with just a few lines of ‘code’ you can get a lot done. Thinking of the right few lines is mindbending at times, but that makes it all the more fun!

We’ll hope to see you next week at Accu Bristol.

slides and source for answer set programming session at spa 2013

Marina de Vos and I ran a session on answer set programming at the SPA 2013 conference.

Download the code and the slides
Download just the slides

The code contains a git repository. In the answer_sheet directory you can find in small steps the painting by numbers exercises we ran, as well as the solution to the tweety exercise and the graph coloring exercise that we did. We recommend to persist as long as possible before peeking. The final sample also shows how to calculate the minimum number of colors, so once you’re done with coloring the map, have a play with finding the minimal number of colors.

Looking forward to the SPA conference

I’m looking forward to going to the Software Practice Advancement conference in London again. Not just because of the usual high density of hands-on sessions. The diversity of presenter backgrounds and session topics should make for an interesting mix. I see research academics business owners (not just consultants, but running product businesses as well), developers and even aspiring comedians (thinking of Emanuel Gaillot and Jonathan Perret with their pair programming parody).
Topics are ranging from ethics, Artificial Intelligence, property based tdd and hard-won experience using specific tools and plaforms (nodejs, cloud).

To add to the mix, I’ll be co-hosting a session on a research topic: Answer Set Programming and the next iteration of The joy of TDD on the Raspberry Pi.

Have a look at the programme or even better, register

Motive and opportunity

Sometimes attendees say a conference changed their life.
Perhaps.
If you changed your life as a consequence of participating in an an event, it is you who changed it.
Investigators, on TV at least, look for motive and opportunity for a crime.
For something positive it can be much the same.
Who had the motive? You had the motive to attend the conference, ask questions, perhaps propose a session around something you wanted to share, and you had the motive to do something with it after the fact.
The conference may have provided the opportunity.
In fact, you also supplied part of that opportunity for others, by bringing your questions, interests, observations and puzzles.

There’s no code like no code

Last friday I was working on a minimal webshop for the QWAN Code smells & Refactoring cards. I created a small order form on top of a web service to process the orders. It wasn’t much work, a basic service plus javascript widget took me about a morning.

When it was time to integrate with the payment provider, I read through various options. My aim was to go live within a day, so I was looking for the least amount of work that could get us to process payments and ship cards to our customers.

The two main optios were creating an integration through our web service or using a Buy now button that ‘integrates’ as a snippet of html on the shop page.

And then it hit me, that if we let go of something we wanted (volume discounts), we could also have the entire order form behind the providers Buy Now button. Customer data such as the shipping address and the customers’ e-mail gets mailed to us. That is good enough for now, it is unlikely we’ll be selling millions of units for this. The widget and service I wrote would not be needed, which saves us work deploying the service and making sure it keeps running.

So I let go of the code I wrote, and put together the Buy now button.

There are two outcomes of product development:

  • the product,
  • the learning.

I kept the learning and threw the product away, because there is no code like no code.

Sources of inspiration

Stephan Eggermoint coined the best code is no code for our Back to the future, (re)learn Smalltalk session. He was referring to database mapping code. If there is no database mapping, for instance with an OO database, there is also no code.

I was having a chat with Jason Ayers last week, and he was pondering a no code movement.

Question

As a product person, it requires you to be flexible with your constraints. As a developer, you have to be un-invested in the code you write. How many teams do you know that do that?

Fall Conferences 2012

The fall conference season is already in full swing. Apparrently I need some time away from actual work to publish some writing.

Agile Cambridge

Was last month already. Enjoyed it more than expected. A ‘boots on the ground’ kind of conferences where most presenters are actually doing something – developing, shipping products, doing user experience work etc. Enjoyed Joh Hunt’s and the Agile Pirate’s non-dogmatic hands-on session on working through “your big rocks” a lot. They are developing a brainstorming card deck to help you get unstuck, or facilitate a friend or colleague in tackling difficult problems. They developed the first versions by applying it on themselves, as it should be in coaching. Change is not (‘just’ ;) ) for other people.

Topconf

Tomorrow and Friday in Tallin, Estonia. I’ve already enjoyed Chris Frei’s hospitality, Rags Srinivas’ company and great food plus drink yesterday, today’s breakfast and sports facilities followed by a historic city tour and dinner. Many of the session organisers turned up already. I didn’t know any of them, the ones I talked to are doing a variety of really interesting things (the others as well probably :) ) and I enjoyed the open conversations and interest in each others’ work.

I’m looking forward to Friday’s security workshop in particular. Estonia seems to be an IT heavy place with prime ministers that used to be software developers, and the focus on security and cryptography seems to be strong here. It’s an area I don’t know much about, so all the more opportunity to learn.

I’ll be talking about Using diagrams of effect to visualize dynamics of technical dept in product development and DevOps experiences from a business perspective. The latter one is an interesting puzzle. Some people want more people to discuss people issues/benefits in DevOps (this is a blog. shoot first, provide references later ;) ). As opposed to just talking about Devops ultralight – configuration management tools , where DevOps light is ‘when people zoom in on ‘just’ dev and ops collaboration’. Devops is not about a technology, devops is about a business problem. Since there is potentially a lot of ground to cover on this one, I’ll give the audience room to express their preferences and ask questions. For instance there is also a more technical introduction to Chef if the audience happens to be mostly developers.

MiniSpa

Nottingham, November 12. Rob Westgeest and I will be doing Dirty Jobs, letting participants add a feature to some realistic fantasy legacy code inspired by hairy code we encountered but can’t publish. Looking forward to participating in the Lego Mindstorms workshop at night and doing some data visualization in Javascript.

xp days london

Trying to break out of an endless loop of reflection from the questions they ask in order to get vetted for participation. I tried many things, some of them don’t (yet) lend themselves to easy conclusions. I wrote about one (being JustADeveloper for a change and not working from a position of authority) and ended up with 80 lines. I should edit that down and post it when I get a round tuit.

Just paying an entry fee would be much cheaper for me, but having to think and write about an experiment is much more valuable. If I get in, I’d probably like to test drive some raspberry pi (see xp days benelux below).

It should still have space – around 50 people signed up. So what is stopping you?

XP Days Benelux

Heeze, Netherlands November 29th and 30th. Already sold out, so just letting you know what we are working on.

TDD on an embedded device . I’m about to order a soldering iron, an arduino and some lcd displays in addition to the raspberry pi’s we already have. Rob Westgeest and Marc Evers are already hacking away with hardware as we speak. We believe the envelope in embedded development can be pushed a lot further (and have seen/done this in some places).

Now I’m writing this: Trying out hardware/software co-development in a distributed team was an unexpected consequence of proposing this workshop. Doing a fully embedded version of an exercise was on our wishlist for years, I’m really glad the pieces are coming together.

Who’s dropped the ball To celebrate 10 years of xp days Marc and I do a one time reprise of a workshop we ran quite a bit in 2003-2005. Expect many balls to be flying and dropping, diagrams to be drawn, and above all, stories to be told.

So who knows, maybe I’ll see you around :)

Server login considered harmful slides at GOTO amsterdam

The slides for todays’ talk about devops in general and configuration management with chef in particular are here: gotoams_serverlogin.

As I mentioned yesterday in Server login considered harmful – the next iteration, I changed the structure of the presentation into a brief devops and configuration management and then a chef demo.

That way we had about 15 to 20 minutes left for questions, after explaining the basics of chef (and similar things in puppet) and how to get started. Based on mini xp days I guessed the audience correct, most were developers doing some operations on the side, or working with ops, and most had not seen chef yet.

I had set aside the extra slides, which you can also download. I ended up not using them, covering some of the topics on the side during the demo and during the Q&A.

Having some extra time to go through the example seemed to help. It is quite a lot of information, as  I need to show both a specific application configuration DSL (monit in this case) while introducing chef concepts. Manual syntax highlighting and adding more slides with smaller steps seemed to help.

 

 

 

Server login considered harmful – the next iteration

Patrick Debois and Jeffrey Fredrick asked if I could blog about improvements I was making to our presentation “Server Login Considered Harmful” for tomorrows GOTO Amsterdam conference. So here is a quick CHANGELOG.TXT for this presentation :) . What is on the menu for tomorrow is all the way on the bottom of this post.

Feedback on where to take it is welcome, you have until tomorrow morning 10:20 ;) . I was (also) preparing today for tomorrow, because this is an ongoing experience report and I want to incorporate what I’m doing right now in to it. This makes providing a session description in advance a bit hard – the overall theme stays the same, the emphasis shifts depending on the audience and what I’m up to.

This is the fifth iteration of this talk, in which Stephan Eggermont and I try to explain what DevOps in general, and configuration management (for instance with Puppet or Chef) can mean for Developers in particular.

The first iteration at last years’ FOSDEM found us in a room full of seasoned systems administrators. We had a few slides and a Puppet demo. We found doing a demo with a tool like this in such a short timespan a bit too challenging, and not too clear for the audience.

We did do a demo at SPA2011, where we did a half-day hands-on tutorial. Went well. We did find that the same virtualbox VM runs differently on different windows pc’s…. Prepping VMs for a workshop like this is meta-devops ;)

The next two installments were for XP Days benelux last year, and mini xp days this year. We expanded the slide deck to explain more of what we find are principles and values for DevOps, and put a Chef demo purely in slides, so we could focus the explanation. We also decided to go with a Lego theme (we liked Patricks’ BBQ themed slides from last year).

The XP Days and SPA audiences consisted mostly of people who rarely do systems administration.
Feedback from the first xp days was that we could have explained what devops and configuration management meant in general more clearly. Rob Westgeest said we took too much time to explain our case studies, and we should pick one or two. People did like the Lego theme, and were inspired to try out chef or puppet at home, much like at SPA.

For mini XP Days we expanded the slide deck, including a case study for me, and one for Stephan, to focus the case study presentation. We also added some more explanation around the Chef example plus syntax highlighting to show where we increased abstraction from one step to the next. Critical feedback was there were too many lego slides, and on some slides the contrast with the text was not good on the projector. We still have some work to do to clarify the overall theme. Surprising positive feedback was that participants had gained a better understanding of what systems administrators do, and there were quite a few questions on how to get started in a specific situation. Rob said trying chef or puppet was mentioned several time as a takeaway in the conference feedback.

So for this iteration we tested the presentation on a projector to fix contrast, removed some lego (not too much, we still like the theme) and changed the order of the presentation. The chef example now comes first, and if there is time I’ll discuss one case study and values and principles – there is a bit less time and I found discussion and questions the most interesting aspects of this talk, because the audiences and experiences are so diverse. This is also where I get to learn stuff to take home and try out. So I’ll probably let the audience vote on Chef first or case study plus values first to make sure we have time for discussion.

I look forward to seeing you tomorrow!

How to monetize knowledge

I discussed my visit to CALM Alpha and the new Kanban certification scheme with a client yesterday. We came up with a few ways to monetize knowledge.

Ways to monetize knowledge:

  1. use the knowledge in your work, get paid for the work,
  2. encapsulate the knowledge in a product, get paid for the product,
  3. put it in a book, which is one kind of product. Except books don’t make a lot of money. Books can be an accelerator of other ways,
  4. create a training around it, sell the training,
  5. do consulting on it,
  6. certify others to give the training, take a cut of the training revenue, or sell the certification,
  7. spread the knowledge under an unclear license, and later harass people into paying (also known as the planning poker model),
  8. certify others to practice the knowledge. Sell the certification (repeatedly by requiring periodic re-certification),
  9. use the knowledge to build a product that is not about the knowledge.

Or a variation on the last, find a problem, use all your knowledge (which is a superset of “the knowledge” by a fairly large margin) and build a product that solves that problem. Get paid for solving the problem by selling the product (or licenses, subscriptions or heaven forbid ads on the product).

A wise person said yesterday at the eXtreme Tuesday club: “You need to decide whether you want to share or not.

Some ways encourage sharing. Others do not.

We’ve done a small safe-to fail experiment with one of the certification pyramids. I’m not sure whether it has had any impact, positive or negative. If you want me to write more about it, contact me, or better, leave a comment :) .

You may also want to read what Liz Keogh wrote about Cynefin licensing and what Chris Matts thought of his visit to CALM Alpha. The comment threads to both posts are well worth a read.

Which would you choose? What do you see as downsides or upsides of each of the ways? Are there better ways?

In which the cynic pontificates caringly about calm alpha

Semi liveblogged on the train home to Bath. Dissent, ritual or not, welcome.

Beforehand I thought the CALM conference was an interesting attractor, but I was not sure what the boundaries were. I was hoping to meet new interesting people, get to know others better and maybe see the space of agile and lean move forward (or die, also good).

Chatting with Jim Benson and Steve Freeman on the way out, I said I left, because I didn’t feel I was learning or contributing. Jim came with a nice bastardization of ghandi: “be the learning you want to see in the world”. I should have made it more specific – I felt I was about to stop learning or contributing because I was tired.

Outcomes were reached: I met interesting people, learned, and went home with things to explore and exploit.

In the goldfish bowl discussion after lunch, I spoke up – meta – as I was about to nod off, and requested we’d spend some time mashing up stuff. I felt we were not using the experience in the room well. Yes, you can participate in a goldfishbowl, and most of the time most people are listening. Steve suggested I could have done that earlier. I hesitated to do that. There was a fair amount of presentation going on. I know I have less patience with presentations than other people. So I decided to sift for nuggets and do some writing in the meantime. There were already enough organisers, and other people butting in on conference structure does not always a better conference make.

After the goldfishbowl Jon Kendall was kind enough to show how he uses the cognitive edge sensemaking tool on an actual job. Which helped me put the pieces Marc Evers gave me together.

Steve wondered why there was not more debate during the goldfish bowl after lunch. At SPA there used to be heavy debate during goldfish bowls. I guess the timing after lunch wasn’t great, and before lunch we had had a couple of presentations / case studies which for me was tiresome after an interesting evening in the bar. I loved the ritual dissent exercise though.

Another explanation for the lack of debate might be that this is one of the few places I’ve been to in recent years where everyone present can hold strong opinions loosely. People and authors checked there egos at the door, and everyone freely shared how they worked and, more importantly, what had not worked out as they wanted.

I didnt’ feel like debating, because I did not hear much (except during some of the presentations yesterday) that struck me as shortsighed or bad use of metaphor. Which may of course be due to limited understanding on my part. Unlike say at conferences where a certain agile methodology prevails, and people believe long term planning is filling a backlog or if something doesn’t work well ‘the product owner or fill-in-cookie-cutter-rolename-here should do this.

Instead there were seasoned practitioners of various things, and most discussions were more like ‘what do you do’ ‘I’ve done this, and the effects of it are like this’. ‘Oh, interesting I’ve done a variation of it and the effects where like this’.

Personally, I am glad the organisers did not try to cram discussing the whole of complexity science in two days. Instead we had people who had applied practices from cynefin, agile and lean and were willing to be frank about what had worked for them and what not, as well as bring in things they didn’t quite understand.

In order to show that I care, As a Cynic, I’ll say that this Cynefin Lean Agile Mashup is never going to amount to a hill of beans. Please move along. Nothing to see here ;) (while some skunks go off into the sunset and do interesting works).