Skip to content

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

the hacker school, freifunk and php security training system - 140413 - phpughh

Hacker School

By R. David Cummins

The hacker school tries to inspire teenagers (13 up to 19) for coding and to discover an unknown talent and support by their evolvement.

Freifunk for developers

  • is a non-commercial initiative for free wireless networks
  • only free and open source software is used
  • easy to join
  • no german "Störerhaftung"
  • be a part of build up a mesh network
  • became independent from "the commercial internet" and join a city wide service network
  • see the map to find a spot at your side
  • vpn separates the freifunk network from your network
  • join in hamburg
  • check out the howto section

PHP security

By timo pegel

  • great tool to lern about security in php applications
  • owasp
  • code

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)

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 git@github.com: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)