Skip to content

PHP UserGroup Hamburg - 2016-02-09 - Putting down the leadtime

Following some notes about my the last php usergroup meetup.

By Judith Andresen

  • what is the leadtime?

    • time between adding the ticket and releasing it as a feature
  • what is a cycletime?

    • time between someone has an idea and releaseing it as a feature
  • we are currently in a time of digital transformation to the "first mover"

    • first idea try/test is the one who owns the bigges marked share
    • try to not be perfect
    • remove bottlenecks
    • try to scale vertical (microservice, duplicated data)

      • one team and service per business value/topic

        • search (including frontend, backend, customer data etc.)
        • product page
      • "community of practice" is a team (per vertical cut/team) that try

        • to keep the big architecture picture in mind
        • to share knowledge, approach and libraries
    • try to add a decision-maker into the team (extend the team in the value chain)
    • try to bring people together, also on an emotional level (increase the "we" feeling)
    • you can argue always with a decreased leadtime / small time to market
  • typical "facts" against

    • we have never done that this way
    • my discipline is better, information silos, no talk between departments (typically between 20 and 80 peoples)
    • there is no "we"
  • how?

    • talk to each other
    • major goal: deliver fast
    • create room for improvment or options

      • time
      • people
      • space/room
Translate to de es fr it pt ja

PHP UserGroup Hamburg - 2016-02-09 - Dockerizing PHP Applications

Following some notes about my the last php usergroup meetup.

By Sebastian Heuer

  • docker is not one tool but a whole ecosystem
    • machine (provisioning)
    • swarm (clustering and container scheduling)
    • compose (multi container application)
    • registry (image distribution)
    • engine (the container)
    • ktematic (gui)
  • pretty small compared to virtual box/full virtual machines
  • updating means, building a new container
  • theoretically, you can use all the images from the hub
    • always ask yourself if you want to use them in production
      • are they maintained
      • how secure are they
  • docker compose
    • builds and pulls images
    • runs containers
    • enables networking between containers
    • aggregates STDOUT and STDERR output

example Dockerfile

FROM php:7.0.2-fpm

RUN docker-php-ext-install pdo pdo_mysql

COPY php/php.ini /usr/local/etc/php/
# copy the content of the source code into the image
# you can ship this code version now
COPY . /srv/meetup-service

# the date in the container is not persistent
# if ypu change something in it, it will bill lost afterwards

CMD ["php-fpm"]

example docker-compose.yml

webserver:
  build: ./nginx    #path to the docker file and configuration etc
  links:
    - application
  ports:
    - "80:80"   #from port 80 to port 80
  volumesfrom:
    - application
application:
  build: ./meetup-service   #your project
  links:
    - database
  ports:
    - "9000:9000"
  volumes:
    - ./meetup-service:/srv/meetup-service  #mounting local source code into the container
  environment:
    - MYSQLHOST=database
    - MYSQLDATABASE=application
    - MYSQLUSER=root
    - MYSQLPASSWORD=parola
database:
  image: mysql:5.7  #no build path, instead an image is used
  volumes:
    - /var/lib/mysql
  ports:
    - "3306:3306"
  environment:
    - MYSQLROOTPASSWORD=docker
    - MYSQLDATABASE=app

Translate to de es fr it pt ja

Apigility and Pair Programming - PHPUGHH

PHPUGHH

Apigility by Ralf Eggert

Whats the problem?

  • new api in two hours
  • do rapid prototyping

In a nutshell

  • create a RESTful web services quick
  • create a rpc web service
  • supports versioning per url or negotiation (content type)
  • returns JSON and HAL JSON out of the box
  • authentication (database, code based, other)
  • api documentation
  • data validation (zend filtering)
  • supports deployment
  • modular based

Example

  • databased rest service
  • see slides for steps
  • good for easy stuff or complex stuff
  • good for rapid prototyping of see how the modules are working

To pair or not to pair by Sebastian Schürmann

About Sebastian

  • freelancer developer, coach, trainer
  • first contact to xp in 2005
  • scrum since 2008
  • loves open source
  • blog
  • mail

@s0enke

  • reduce bus factor
  • improve teamwork
  • improve learning

Pair Programming

Prefrace

  • pair programming illuminated (book)
  • specification by examples (book)
  • workshop

Critics

  • two programmers doing the work of one

Thesis

  • working alone, undistrubed is good
  • talking is disturbance which is bad

Theory

  • two persons (comes from rally driver)
    • driver (with the keyboard, focused to the current problem)
    • navigator (looking more at the whole concept)
  • switching roles regulary

Why

  • less bugs
  • faster in development (problem solving)
  • continous knowledge exchange
  • tightest feedback loop you can get in programming (even unit tests take longer)
  • P (plan), D (do), C (check), A (act) - loop
  • communication
  • simplicity (doing simple things, because two people have to understand)
  • feedback
  • respect
  • courage
  • bring back fun into work

Principles

  • feedback
  • embracing change (also the guy which code is change would became less grumpy)
  • assuming simplicity
  • seven synergies
  • pair pressure (chance they get interrupted is become lower)
  • pair negotiation
  • pair courage
  • pair review
  • pair debugging
  • pair learning
  • pair t(h)rust

Seven Habits of Effective Pair Programmers

  • take breaks (five minute breaks after 30 minutes)
    • take a look at "pomodoros" (5 up to 7 pomodoros is a full day work)
  • practice humility
  • be confident
  • communicate
  • listen
  • be a teamplayer
  • compromise vs standing firm
  • introverts vs extraverts / introversion vs extraversion
  • skill
    • shu-beginner (repeat presented action)
    • ha-intermediate (start break the rules/make innovations)
    • ri-expert (do not care about the rules)
    • do "shu" and "shu" - easy up starting into things
    • do "shu" and "ha" - create another master
    • do "shu" and "ri" - kickstart the shu
    • do "ha" and "ha" - biggest bang for the buck
    • do "ha" and "ri" - create another expert
    • do "ri" and "ri" - solve big problems

Type of Pairs

  • everybody pairs with everybody once in a time - good for knowledge sharing
  • pair hinging - do a user story together
  • test first pairing - implement, make the test red, switch and replay
  • stakeholder pairing - explain the stakeholder your code or the flow
  • newbie pairing - pair a newbie to a experienced one and finish a user story
  • pair bugfixing
  • pair release
  • write userstories/requirements as pairs
  • coding dojos - navigator and driver, audience can give feedback

To The Critics

  • knowledge iceberg (small explicit, tacit is the big part)
  • bug fixing cost (small: requirements, design, code, test, productiom :big)
  • flow state is established easily
  • groupflow
  • teamwork

Translate to de es fr it pt ja

Social Human Architecture for Beginners and the Flip Side of Dependency Injection - PHPUGHH

Where

Social Human Architecture for Beginners

General

By Sebastian Schürmann (@sschuermann) (scrum master)
PHP Benelux
Works at mytaxi.de

People

  • introversion vs extroversion (thinking is internal or externalized)
  • nobody is one at all (just introvert for thinking or feeling)
  • talk to you team about it (try to express everybody on a scale to get better understanding)
  • take a look to "Maslows hierarchy of needs"
    • self actualization
    • esteem
    • love/belonging
    • safety
    • physiological
    • internet ;-)
  • try to create your own needs of hierarchy
  • use "non-violent communication" (Marshall Rosenberg)
    • observation (just the facts)
    • feelings (just feeling good or bad won't cut it, try to express yourself)
    • needs (we all have them, feeling bad? need is not fulfilled)
    • honest request

Groups

  • psychology of programming by Gerald Weinberg
  • egoless programming
  • stages of group development
    • forming
    • storming
    • norming
    • performing
    • storming [...]

Motivation

  • engagement can be reached by
    • autonomy
    • mastery
    • purpose
  • let people get into the flow state
  • try a fed-ex day (people can do what they want)

The Flip Side of Dependency Injection

General

Do Not

  • do not add to much dependecies (thing is doing to much)
  • do not hide dependencies by using a container (it's like throwing in "the config")

Do

  • all dependencies must be in code
  • separate object creation from usage
  • there must be the ability to choose the actual implementation on runtime

How to Get There

  • use a factory with explicite API (instead of "get('Foo')", do "getFoo()")
  • avoid injecting factories, try to use locators (locators are returning "FooInterface" and using factories for instance creation)
Translate to de es fr it pt ja

AwareInterface, Graylog2 with Logstash and Contributing to the new PHPUGHH website - PHP UserGroup

link to meetup event.

Where

Jimdo
Stresemannstraße 375
Hamburg

AwareInterface By Stev Leibelt

  • reminder of dependency injection
  • increases the readability of a class structure
  • defined way of inject object/typ
  • interface injection could lead to a project based rule to distinguish between mandatory and optional dependencies
  • slides available hear.

Logstash and Graylog2 by Alexander Bernhardt

Simple log all.

questions to the log

  • what happens on the other server?
  • what happens when and on what circumstance?
  • what are you logging?

how to solve this?

By using Logstash, Redis and ElasicSearch, aggregate all and push all to a graylog2.

  • graylog can do some kind of monitoring, known as streams.
  • you can add a alert method to each stream.
  • nagios can listen to a graylog stream.
  • could not replace statsd or graphite

Talk And Call For PHPUGHH Website By Stephan Vock And Ole Michaelis

  • two Pages for one user group, which one to choose?
  • the usergroup decides to use the new page.
  • you need to have installed jekyll, rake or use the vagrant box
  • directory structure
    • each speaker should pull his own talk below "talks"

How To Contribute

  • fork repository
  • git checkout -b feature/foo
  • do the changes
  • git commit
  • pull request to the main repository
  • github.io builds new page on its own
  • git remote add upstream [email protected]:phpughh/phpughh.github.com
  • git fetch upstream
  • git merge upstream/master
  • git push
  • issues are available
  • enhancement issues is the roadmap
  • open issues if needed
  • links available as ticket
  • take a look to the bephpug (github)
Translate to de es fr it pt ja

php usergroup meetup - 121009

Date: 09.10.2012 Place: Mindsworks - Jarrestraße 42a, Hamburg Link: Meetup

new php usergroup page by Ole Michaelis

Uses "github pages" and "jykil", Take a look on github.

how to defeat stage fright by Heiko Harthun

Introduction www.heikoharthun.de www.arge-zeiten.de

Heiko provides courses for developers to presentate themself as also the product on conventions/trade shows/exhibitions. He helps if the communication between developers and management (e.g. in the scrum retrospective) is not working anymore.

general Only thing that helps against stage fright is moving around. It is also the only thing that helps effective. You should eat enough before you are going to present something. Try to eat energy rich things like nuts, bread, less sugar, things that contains L-Tyrosin and L-Tryptophan.

body hack Autogenic training or meditation can help but they are helping after you have practised them for a long time (six months or more). Also going to sport (more the once per month ;-)) is helping to keep the level of adrenalin low.

brain hack Try to create a solution/fallback for each problem that can occur. Things that can occur are "Questions inbetween", "fear for own existence", "nemesis in the crowd", "lose of the face", "blind spot", "blackout", "lose the thread" or "uninteded lauchter". The major answer is "what do i fear" and "why do i care to come into this situation". Try to have a fallback also for general problems (hardware is missing, hardware breaks down etc.). A solution can be, to listen on favorite music right before you start your presentation.

source/books stryer - biochemie daniel pink was sie wirklich motiviert pruefungsangst - fortschritte in der psychotherapie

Compare notes about PHP UnitTest Workshop by Agata Raap and Frank Sons

general Introduce unittesting in already existing and complicate to test source code is hard. Try to do a workshop by using already existing code to introduce into the topic "unittest". First write a unittest that covers know behaviors and after that, refactor the code.

How can we test old code (with dependencies, strong coupling)? Keep current methods and exclude them into new methods. This new methods are testable by dependency injections or something similar.

Always start and demonstrate unittest with simple examples.

best practice (ask round) Getter setter testing? Code coverage - what does is tell? Is static code untestable? Should you test controllers?

This notes are a little bit late (yes i know ;-)) but free time is something that it is currently a kind of unreachable wish.

Translate to de es fr it pt ja

php usergroup meetup - 121113

Date: 13.11.2012 Place: Bigpoint - Drehbahn 48, 20354 Hamburg Link: Meetup

new website by Ole Michaelis

Contribute if you find bugs or want to improve work. Slides are available as soon as possible. Howtos available. Old site still available. It is currently planed to move/integrate the old mailinglist.

video conference by Seemant Kulleen about "Emotional Decisions"

Emotions are most binary today (like or not). We prefer products with higher ratings and vice versa. Code can create emotions also (good/great code or software) -> as developer, you are creating realities. Why not make this reality an experiences instead? When you create a high enough experience, you create a loyal user (loyalty like stickiness). Users reacting emotional by adding a thump, a comment etc. The more the developer is passionated, the more passionated the users can be -> try to do what you love :-). -> create things you belive -> create things you belive in

You have to understand how and why you react to things, you are getting closer to your passion. If you know why you are liking and doing things, you should focus on doing things thinks.

And like in general, you have to share your passion and get shared passion,

how to build up a datacenter by Rene Sasse (iphh.net)

Take a look to the "webmontag" (xing group, twitter).

More current -> bigger air condition -> more climate cabinets -> less free space.

Looks like the guys from iphh.net are pro's. If you are not believe in, watch the linked video.

Translate to de es fr it pt ja