Simon Griffee
Design consulting, art direction, photography.

July 2013

Comfortably Numb, Rome, Italy, July 2013

Published 2013 July 31

One Of My Turns, Rome, Italy, July 2013

Published 2013 July 31

Waiting For The Worms, Rome, Italy, July 2013

Published 2013 July 31

Goodbye Blue Sky, Rome, Italy, July 2013

Published 2013 July 30

In The Flesh?, Rome, Italy, July 2013

Published 2013 July 30

The Wall, Stadio Olimpico, Rome, Italy, July 2013

Published 2013 July 30

The Wall, Stadio Olimpico, Rome, Italy, July 2013

Published 2013 July 30

The Wall, Stadio Olimpico, Rome, Italy, July 2013

Published 2013 July 30

Goodbye, J.J. Cale

Published 2013 July 29

You’ve been with me at home and on the highway. Thank you (Mike Johnston on J.J. Cale.).

Largo Argentina, Rome, Italy, April 2013

Published 2013 July 25

Largo Argentina, Rome, Italy, May 2013

Published 2013 July 25

Villa Miani, Rome, Italy, July 2013

Published 2013 July 24

Villa Miani, Rome, Italy, July 2013

Published 2013 July 23

Basilica di San Marco Evangelista, Rome, Italy, July 2013

Published 2013 July 22

Basilica di San Marco Evangelista, Rome, Italy, July 2013

Published 2013 July 22

Piazza del Colosseo, Rome, Italy, June 2013

Published 2013 July 20

Piazza del Colosseo, Rome, Italy, May 2013

Published 2013 July 19

Antica Birreria Peroni, Rome, Italy, July 2013

Published 2013 July 18

Viale Aventino, Rome, Italy, May 2013

Published 2013 July 18

Lungotevere Castello, Rome, Italy, July 2013

Published 2013 July 16

Viale Aventino, Rome, Italy, June 2013

Published 2013 July 16

Ponte Sant’Angelo, Rome, Italy, July 2013

Published 2013 July 15

Via Cola di Rienzo, Rome, Italy, July 2013

Published 2013 July 14

Via Ottaviano, Rome, Italy, July 2013

Published 2013 July 14

Piazza Venezia, Rome, Italy, February 2012

Published 2013 July 12

Bar Near Piazza Santo Spirito, Florence, Italy, July 2013

Published 2013 July 10

dream - sunday, 07 july 2013, 05:38:37

Published 2013 July 7

driving by fenced field with vegetable gardens and reeds, i know the field was wild before, and someone has been shooting animals, bodies of a fox and another animal hanging on a barbed wire fence. a horse and a goat(?) are watching me pass, their heads over the fence next to the dead animals, can’t see whether they are attached to the fence or not, by the skin on the top of their heads. car is beeping, fuel gauge shows almost empty, there is a sort of metallic plastic foil over part of the steering wheel. now inside, walking into empty house, light swtiches don’t work, realize i haven’t spoken to or seen dad for a long time. begin calling out louder, dad, dad, dad, dad, dad! and i hear his cough, and he is there, in front of the computer in a corridor. he is putting super-glue on his eye to try and keep it closed. no! you can’t do that dad! but he doesn’t care, he wants the eye, the right eye, to close, and he puts the glue on it, on the eyelashes and the eyeball. his face now looks better and i tell him he looks good. now he suddenly does look good, younger, a young english actor look, jeans, wet, combed hair to the side. ‘i’m in contact with someone for work’. he says. i reply, ‘i can help you look for work, dad.’ he says ‘i may not be looking for work with whom you think’.

EuroPython 2013 Notes

Rough notes from EuroPython 2013.

The Next 20 Years of Python — V. Van Lindberg

Chairman of the Python Software Foundation, works for Rackspace and OpenStack.

Thinking Outside the Box — Armin Ronacher

Creator of the Flask framework and the Werkzeug and Jinja2 libraries among many others

We all suffer from going with the flow in many cases.

The keynote gave some examples of how questioning some established rules revolutionized the industry and how we open our mind a bit.

It included interesting examples from the Python and programming community where people tried something new with tremendous success and how they came up with the idea.

The Return of Peer2Peer ComputingHolger Krekel

Founder and co-developer of a number of popular Python projects, among them PyPy, py.test, tox and execnet. Regularly gives talks at conferences as well as open courses and in-house trainings on testing topics. His interests also include P2P computing, metaprogramming and politics.

A video of this presentation is now online.

Consider myself from global IT community, not from a particular nation


Someday when I’m living in a post-apocalyptic police state, run by autonomous flying drones, I want to tell my kids, “I helped build that.”

How much is Google, Facebook, etc. responsible for aiding Spying Cartel?

Which Internet Future do we prefer:

  1. Greatest freedom catalyst ever?
  2. Greatest surveillance machine ever?

Which one happens depends on:

IT people are like bishops. We know how programming works and relates to society. We have a responsibility to make choices that cause no harm. It’s all about communication between devices, mediated by technology.

Centralization (current situation)

  0   0
   \ /
0 — 0 — 0
   / \
  0   0

Espionage Cartels are happy:

  1. Communication mediated by few companies.
  2. Companies can be compelled to co-operate with government.
  3. Weak or no end-to-end encryption == BIG PROBLEM.

How to disrupt Cartels?


    0 — 0 — 0   0 — 0
   / \ /    |  / \ /
  0 — 0 — 0 — 0 — 0
 /      |    /
0       0 — 0

Example:, but: crypho as mediator has meta-data == PROBLEM

P2P code needs to be FOSS & run on OWN device.

Example: TAHOE-LAFS storage:

Communication is about more than only file storage. New promising WC3 standard: Web RTC - browser-to-browser data streaming, real-time communications.

With power comes abuse

We are good at client/server, not so much P2P"

Global WLAN situation is idiotic. Idiotic == private ‘only for me’ in ancient greek


Given enough time, looking at history, countries are in danger of having criminals in charge.

It’s about Convenience. Some choose inconvenience (Edward Snowden).

¿Q: Is there hope for a world without nation states?

Yes. FOSS is transnational. WebRTC standard - nations had no say. Nations not so important in internet world.

How do we do mediation?

It would make much more sense to have government communications open and transparent as they have nothing to hide, right?

Answer to the “If you have nothing to hide, you shouldn’t worry about surveillance” argument: The damage from a totalitarian society is much higher than from terrorists.

“Good Enough” is Good Enough!Alex Martelli

Alex Martelli in Florence in 2013.

Alex Martelli in Florence in 2013.

Author of Python in a Nutshell and the first 2 editions of the Python Cookbook. For the last 8+ years has been working (as ‘uber’ tech lead and senior staff engineer) for Google in Mountain View, California.

“Worse is Better” —Unix, ‘New Jersey’ approach.

Well == Simple.

G.K. Chesterton:

Anything worth doing is worth doing badly.

E. Raymond:

Given enough eyeballs, all bugs are shallow.

Perfection == Big Design Up Front.

Alex Martelli:

The world is changing all the time. Your perfection is a memory of the past.

Use ‘Perfect’ as Verb, rather than adjective.

Don’t save on:

No cowboy coding!

From the start:

Best at start, but acceptable to add later:

General vs ad-hoc solution

def find_by_col(root, color):
    if root.color == color: yield root
    yield from (find_by_col(c. color) for c in root.cs)
def find_by_sha(root, shape):
    if root.shape == shape: yield root
    yield from (find_by_sha(c. shape) for c in root.cs)


def find(root, n, v):
    if getattr(root, n) == v: yield root
    yield from (find(c, n, v) for c in root.cs)

Okay to incur technical debt, WITH CARE.

Focus on potential errors that could cause irrecoverable losses:

Solid Python Application Deployments for Everybody - Hynek Schlawack

Hynek Schlawack is an infrastructure and software engineer from Berlin, Germany, PSF fellow and contributor to a wide variety of open source projects.

How a German web hosting company and domain registrar deploys numerous Python applications on UNIX-based systems. Simple is not Easy. Put effort into making your deployments simple.

Edsger W. Dijkstra:

Simplicity is prerequisite for reliability.

Donald Knuth:

It is important to find simple solutions instead of stopping as soon as a first solution is found.


Introduce Django to Your Old Friends - Lynn Root

Lynn Root is a software engineer at Red Hat on the Identity Management team. She is the founder and leader of PyLadies San Francisco, an international mentorship group for women and friends in the Python community.

How to integrate Django applications to authenticate against already existing identity management systems like LDAP, Kerberos, etc. Links:

Sink or swim, five jackets to throw to the new coder - Lynn Root -

Advanced e-learning, or introducing programming to new coders.


  1. Dataviz - <
  2. APIs -
  3. Web scraping -
  4. Networks -
  5. GUI (soon)

Intro to Django - Daniel Greenfeld & Audrey Roy

Daniel Greenfeld is a software developer and co-author of Two Scoops of Django. Audrey Roy is a software developer and designer and co-author of Two Scoops of Django.

Hands-on Django workshop. Built a real, working site from the ground up, using Django 1.6 and Python 2.7/3.3. Covered Python and Django setup, project creation, app creation, models, the Django admin UI, views, migrations with South, user image uploads, new user registration, basic forms, and basic internationalization.

Introducing Python as a Main Programming Language in a Company - Patrick Büchler

Patrick Büchler is a Software Developer.

Car analogy - people who go to BMW will get different quality than Fiat. Same with software, but not appreciated.

Right mix of people important. Pointless to have lots of all-stars because they will all have their own idea of how it should be done.

Why Python? Too many languages == uncomfortably hot. Python is platform independent, has big community, good traction/adoption/future plans, good learning curve:

  1. Simple and readable
  2. Versatile and platform agnostic
  3. Can be used for web and on client
  4. Also a philosophy, i.e. the Zen of Python:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!

How to implement Python? How to manage risks?

  1. If you take a decision, implement it quickly.
  2. People learn only with real challenges.
  3. Innovation not the same as research. As entrepreneur you must innovate, not research.
  4. Can’t afford to spend much money on not-financed activities.

Choose project and do it with Python

  1. Project should not be critical.
  2. Not be too small (at least 1 man-year).
  3. Should not contain complex technical challenges.
  4. Should not contain complex business logic.
  5. Should not be in a risky domain.
  6. Should use easy to use framework (such as Django or web2py)
  7. Should be assigned to a specific team, without people who are against the project, with mix of first-movers and conservatives.
  8. Primary goal should still be to finish the project with a profit.


Mostly went surprisingly smoothly! Consider the following:

  1. Python is not Java!! def my_function() != public int myFunction() Do code reviews! Especially when devs used Java or C# before. Developers coming from VB have less projects.
  2. Allow refactoring: give your team the time to make their first project good.
  3. Enforce refactoring: force your team to make the first project good.
  4. Be patient: do not forget that it is new for most developers.
  5. Be strict: you decided to risk implementing the project in a new language, stick to your decision.
  6. Python is agile, use this: with python debug cycle is very quick, use this i.e. in sprint review.
  7. Don’t interfere too much: let your colleagues work on their own, so they learn!

Factors critical for decision about tech to use:

Tech and org factors (reasonable)

  1. Surrounding systems enforce specific tech.
  2. Base systems used enforce particular tech i.e. Oracle.
  3. IT Departments often proficient on one platform only.
  4. Contracts with vendors or suppliers enforce given tech.
  5. High investments required to change.

Human Factors (personal)

  1. IT Departments often reluctant to change their systems even when outdated or try something new (consider the type of personality who becomes sys admin).
  2. Management hear saying (we MUST have SharePoint because it will solve all our problems as my friend told me on golf course).
  3. Internal Politics (we decided that XYZ is the best architecture, we cannot change now).
  4. Quasi-religious beliefs or important decision makers or influential people (there is no better sport than to provoke a dev by criticizing his language of choice).

The word ‘Python’ won’t open doors, but the folowing may:

  1. Platform independent.
  2. Very fast development cycle - you can even debug and change the code onsite during the sprint review!!
  3. Completely open source - not owned by Oracle unlike Java, MySQL, etc.
  4. Mature.
  5. Big community.

Fears/questions from customers:

  1. Fear of Vendor Lockin: most business people know .NET and Java and believe all else a niche.
  2. Fear of Open Source: understandable, many dead open source projects.
  3. Lend helping hand to sysadmins: maybe he used SQL Server and IIS since 199x! Suddenly it’s PostgreSQL and web2py. Help him and he will be a grateful promoter of your technology.
  4. Most problems not technical! Remind your customer and your team about this.

Was it worth it?

:) Yes!

  1. Python is well established now
  2. At moment 4 different projects with Python
  3. Strategic decision: all individual web projects are done with web2py
  4. Wherever possible suggest using Python

Q: Tried sales pitch “lets do a prototype in Python first and see if it works” A: No, but it is a good idea

General notes:

← Notebook Archive