Showing posts with label conferences. Show all posts
Showing posts with label conferences. Show all posts

Monday, April 03, 2017

Pipeline Conf 2017

Not liquorice
Post originally shared on eLife's internal blog, but in the spirit of (green) open access here it is.

Last month I have attended the PIPELINE conference in London, 2017 edition. This event is a not-for-profit day dedicated to Continuous Delivery, the ability to get software changes into the hands of users, and to do so safely, quickly, and in a sustainable way. It is run by practitioners for practitioners, everyone on different sides of the spectrum like development, operations, testing, project management, or coaching.

The day is run with parallel tracks, divided into time slots of 40-minute talks and breaks for discussions and, of course, some sponsor pitches. I have been picking talks from the various tracks depending on their utility to eLife's testing and deployment platform, since our tech team has been developing every new project with this approach for a good part of 2016.

The conceptual model of Continuous Delivery and of eLife's implementation of it is not dissimilar to the scientific publishing process:
  • there is some work performed into an isolated environment, such as a laboratory, but also someone's laptop;
  • which leads to a transferable piece of knowledge, such as a manuscript, but also a series of commits, roughly speaking some lines of code;
  • which is then submitted and peer reviewed. We do so through pull requests, which perform a series of automated tests to aid human reviewers inside the team; part of the review is also running the code to reproduce the same results on a machine which is not that original laptop.
  • after zero or more rounds of revisions, this work gets accepted and published...
  • which means integrating it with the rest of human knowledge, typesetting it, organizing citations and lots of metadata about the newly published paper. In software, the code has to be transformed into an efficient representation, or virtual machines have to be configured to work with it.
  • until, finally, this new knowledge (or feature) is in the hands of a real person, who can read a paper or enjoy the new search functionalities
Forgive me for the raw description of scientific work.

In software, Continuous Delivery tries to automate and simplify this process to be able to perform it on microchanges multiple times per day. It aims for speed to be able to bring a new feature live in tens of minutes; it aims for safety to avoid breaking the users work on new changes; and to do all of this in a sustainable way, not to sacrifice tomorrow's ability to evolve for a quick gain today.

Even without the last mile of real user traffic, the 2.0 software services have been running in production or production-like servers from the first weeks of their development. A common anti-pattern in software development is to say "It works on my machine" (imagine some saying "It reproduces the results, but only with my microscope"); what we strive for is "It works on multiple machines, that can be reliably created; if we break a feature we know within minutes and can go back the latest version known to work."

Dan North: opening keynote

Dan North started to experiment with Continuous Delivery in 2004, at a time when builds were taking 2 days and a half to run in a testing environment contended by multiple teams. He spoke about several concepts underpinning Continuous Delivery:
  • conceptual consistency: the ability of different people to make similar decisions without coordination. It's an holy grail for scaling the efforts of an organization to more and more members and teams.
  • supportability: championing Mean Time To Repair over Mean Time Between Failures. The three important questions for facing a problem as what happened? Who is impacted? How do we fix it?
  • operability: what does it feel like to build your software? To deploy it? Test it? Releasing it? Monitor it? Support it? Essentially, developer experience in additio to user experience.
Operability is a challenge we have to face ourselves more and more as we move from running our own platform to provide open source software for other people to use. Not only reading an article has to be a beautiful experience, but publishing one should be.

John Clapham: team design for Continuous Delivery

This talk was more people-oriented, I agree with the speaker that engagement of workers is what really drive profits (or value in case of non-profits).
Practically speaking:
  • reward the right behaviors to promote the process you want;
  • ignore your job title as everyone's job is to deliver value together;
  • think small: it's easier to do 100 things 1% better than to do 1 thing 100% better (aka aggregation of marginal gains)

Abraham Marin: architectural patterns for a more efficient pipeline

The target for a build is for it to take less than 10 minutes. The speaker promotes the fastest builds as the one you don't have to run, introducing a series of patterns (and the related architectural refactorings) to be executed, safely, to simplify your software components:
  • decoupling an api from implementation: extracting an interface package to reduce the dependencies to a component to a dependency to an interface;
  • dividing responsibiliteis vertically or horizontally trying to isolate the most frequent changes and minimizing cross-cutting requirements;
  • transform a library into a service;
  • transform configuration into a service.
Some of these lessons are somewhat oriented to compiled languages, but not limited to them. My feeling is that even if you reduce compile times, you still have to test some components in integration, which is a large source of delay.

Steve Smith: measuring Continuous Delivery

How do you know whether a Continuous Delivery effort is going well? Or more pragmatically,  which of your projects is in trouble?
The abstract parameters to measure in pipelines are speed (throughput, cycle time) and stability. Each declines differently depending on the context.
In deployment pipelines that go from a commit to a new version release in production, lead time and the interval of new deployments can be measured. But also failure rate (how many runs fail) and failure recovery time are interesting. In more general builds or test suites, execution time is a key parameter but a more holistic view includes interval (how frequent are builds executed).
I liked some of these metrics so much that they are now in my OKRs for the new quarter. Simplistic quote: you can't manage what you can't measure.

Alastair Smith: Test-driving your database

To continuously deploy new software versions, you need an iterative approach to evolve your database and the data within it. When you evolve, you also have to test every new schema change. Even in the context of stored procedures for maximum efficiency (and lock-in), Alastair showed how to write tests that can reliably run on multiple environments.

Rachel Laycock: closing keynote, Continuous Delivery at Scale

Rachel Laycock is the Head of technology for North America at Thoughtworks, the main sponsor of the conference. The keynote however had nothing to do with sales pitches. Here are some anti-patterns:
  • "We have a DevOps team" is an oxymoron, as that kind of team doesn't exist; what often happens is that the Ops team gets renamed."
  • Do we chose Kubernetes or Mesos?" as in getting excited about the technology before you understand the problem to solve.
The "at scale" in the title pushes for seeing automation as a way to build a self-serving platform, where infrastructure people are not bottlenecks but enablers for the developers to build their own services.
The best quote however really was "yesterday's best practice becomes tomorrow's anti-pattern". What we look for is not to be the first to market but to have an adaptable advantage, a product that can evolve to meet new demands rather than being a dead end.

Monday, May 23, 2011

DPC 2011 slides

Here are my slides for the Testing in isolation tutorial. A link is included pointing to the Git repository, this time with tags. :)


These are the slides for the Domain-Driven Design talk (similar to the phpDay 2011 version). Link to the Git repository is included too.

Sunday, May 22, 2011

Weekly roundup: back from DPC 2011

I am back home from Amsterdam, after having attended the Dutch PHP Conference 2011 and having presented my tutorial on isolation of tests and a talk on Domain-Driven Design.
Which, in a different way from the phpDay 2011 version, was liked by some attendees and also widely criticized by many. Thanks to the many attendees who took the time to give feedback on joind.in, as it's difficult for a speaker to find out the problematic areas which he has to focus on (more on that in the next days). I commonly express myself with writing and addressing a crowd is very different in many aspects.

While I was at the conference, these original articles were published on DZone.
Practical PHP Testing Patterns: Dependency Injection
The 4 rules of simple design
Practical PHP Testing Patterns: Dependency Lookup
Git backups, and no, it's not just about pushing

Wednesday, May 18, 2011

Packing for DPC 2011

I'm leaving in the afternoon from Milano Linate to Amsterdam in order to participate to the Dutch PHP Conference.

I will present:

See you at #dpc11!

Thursday, April 21, 2011

Conferences and events

This page is a reference to the conferences I have attended. It was inspired by Juozas's example.

Here's where I have been. You may have met me there:

Sunday, February 20, 2011

Weekly roundup: speaking at phpDay 2011

I have been accepted for speaking at phpDay 2011, the one and only Italian conference on PHP. I hope to do a good job in teaching the audience new things and entertaining them with my two talks (which have been accepted in the Italian version).
Inseguendo le pratiche di Domain-Driven Design in PHP, in which I share my studies and real world experience on how to conjugate DDD and PHP technologies. For example, how can you maintain a persistence-agnostic Domain Model? And how can you store it in a database when it contains classes that do not correspond 1:1 to tables, like Value Objects? The word inseguendo (pursuing) is there because I do not aim to be your DDD guru (that's @ziobrando), but I am the guy that given a DDD prescription gets a working PHP applicaton. By the way, this talk will also be presented at the Dutch PHP Conference 2011.
Pomodori tutto l'anno, on the Pomodoro Technique and my year-long experience with it as a freelancer, and for a period in a team. Time management isn't only a topic for braindead self-help books.

Here are my original articles published this week.
Practical PHP Testing Patterns: Unfinished Test Assertion describes how to mark an incomplete test. Hint: it's not by putting a Post-it on the monitor.
Practical PHP Testing Patterns: Garbage-Collected Teardown describes the first teardown technique of the series, which is also the simplest.
Do not fear the command line is a collection of some years of shell experience on Linux. Many tricks from my .bashrc are revealed.
Can you use PHP without frameworks nowadays? has been a very popular article (more than 10k views) about a fundamental question. Everyone asks What framework should we choose? but no one one asks instead Do we need a framework?

Sunday, February 06, 2011

Weekly roundup: speaking at DPC 2011

It's not official yet, but I will be speaking at the Dutch PHP Conference in May, with a 3-hour workshop and a regular talk. The schedule will be published next week. Looking forward to meet my telematic friends who will be in Amsterdam.

Anyway, here are my new articles published this week.
Practical PHP Testing Patterns: Behavior Verification officially introduces Mocks for the first time in this series.
Where has XHTML gone? tries to find out which usage this language sees today.
Practical PHP Testing Patterns: Custom Assertion explains how to create and manage custom Assertion Methods, which go a long way in making the assert phase of your tests readable and maintainable.
Is touch typing mandatory? A survey where you can express your opinion on how to approach a keyboard.

Sunday, November 21, 2010

Weekly roundup: Agile Day insights

You always learn something new at conferences. The most valuable insight I got from the Italian Agile Day, held last friday in Genoa, was:
Building construction as a metaphor for software development is a frequent misunderstanding. In construction, you have an architect for the design phase and hundreds of workers for the actual construction. In software, the deliverable of the design phase is the source code, and the construction consists in an automated build. Therefore, you have no workers, and everyone is an architect. -- from the keynote of Paolo Perrotta
By the way, here are the articles I wrote last week, before heading for Agile Day.
Practical PHP Testing Patterns: Shared Fixture
Zend Application demystified
Practical PHP Testing Patterns: Back Door Manipulation
The best tools for writing UML diagrams

Thursday, November 18, 2010

Italian Agile Day 2010

Tomorrow I'm going to Italian Agile Day in Genoa. It is not a long trip, but I will wake up at 5 am.
If you want to chat, code or insult buzzword-obsessed professors together, look for me there.
Twitter stream: #iad2010

Monday, September 27, 2010

Speaking at PHP Barcelona 2010

I'll be presenting my talk Architecture and testability in its English version at the PHP Barcelona Conference. I gave the Italian version of this presentation at phpDay in May.

This is the abstract:
Testing a web application may seem an hard task, but nowadays it is a fundamental part of the development process that ensures the application does not experience regressions, and it is free to grow incrementally. My point is that testability is a property which is desiderable not only for the ease of building an automated test suite, but also for the positive effects on the overall architecture that maintaining an application testable at the unit level produces. For example, being able to test a class in isolation is a sign of enough decoupling of it from the other collaborators, while keeping a limit on test cases length forces the production classes to be cohesive in functionalities.
The treated topics range from Dependency Injection to the Law of Demeter to the inherent evil Singletons and static classes. I'm a practical guy, so I will show you code; but not so much that it isn't readable.
This is an occasion for everyone who wanted to see my talk at phpDay, but wasn't there, to get a nice wrap-up about why making your code testable improves its design.
By the way, the conference will take place on the 29th and 30th of October, and a two-day ticket costs only 60€, of which I receive nothing. Hope to see you in Barcelona. :)

Wednesday, May 19, 2010

phpDay wrapping up

Some last considerations on phpDay 2010 and then I'll stop annoying you with these informations.

First, if you were at phpDay and attended my talk, feel free to leave feedback on the specific joind.in page. Feedback is important for the organization, to know which events raised the interest of the crowd, and for speakers to improve and fine tune their talks.

Second, my slides for the Architettura e testabilità talk are online:

Finally, there are a few interviews to some of the speakers (a group that also comprehends me) on html.it (in Italian).

I would like to thank you all the attendees. Given the reception, I'll propose my talk (and maybe new ideas) to other conferences... Trying cannot hurt.

Wednesday, May 12, 2010

Packing for phpDay 2010

I'm packing for phpDay, which starts tomorrow. It seems we will have a powerful Wifi connection, and an hotel near the Adriatic sea.

If you read this blog and will be at phpDay, look for me at the conference center (it's likely that I follow yours, too), I will be glad to meet you. I will arrive tomorrow around 1 PM (local time).
Anyway, stay in touch with the hashtag #phpday2010...

Thursday, April 08, 2010

phpDay 2010 (plus discount code)

I will be at phpDay 2010, the Italian conference on PHP and related topics, as a speaker.
There are many talks in English from foreign speakers such as Fabien Potencier, but my talk is in Italian. It is scheduled for the last day of the conference, 15th May 2010.
http://www.phpday.it/session/architettura-e-testabilita
Talk page on joind.in
Architettura e testabilità: il design di un'applicazione può essere influenzato positivamente da diverse pratiche. La facilità di testing é condizione sufficiente per un architettura che garantisca semplice manutenzione e alta coesione dei componenti. Argomenti trattati: Dependency Injection, Law of Demeter, Design Pattern creazionali (Factory vs. Singleton), Api oneste.
If you are interested, you can book a seat here. I have a 20% discount code I can give you if you ask me via email, I'm not sure publishing it here is allowed.

Featured post

A map metaphor for architectural diagrams

It is a (two-dimension) representation of a pipe. The map is not the territory , but in software engineering terms they are models of it....

Popular posts