bdd - buzzword driven development - build the next cool app for fun and for... fun
DESCRIPTION
Lamp stack is dead, long live the lamp stack!A quick overview of the technologies used in the "TISTIMO" project.TRANSCRIPT
BuzzwordDrivenDevelopmentBDD
Build the next cool app (for fun and for profit fun)
@_orso_
@cirpo
disclaimer
WEhPHPJ
L
The act of creating a computer program in the company of your bros.
embrace brogramming
BROGRAMMING
The act of creating a computer program in the company of your bros.
embrace brogramming
BROGRAMMING
#lifeinideato
BROGRAMMING
nodejs
nosqljavascript
gamificationwebsockets
gattini
html5realtime
map/reduce
hadoopmvc
telecommuting
redis
microframeworkboook
backbonejs
agile
tdd
xp
mongodb
css3
cloud
responsive
startup
pair programmingbdd
publish/suscribe
server-side javascript
closure
functional programming
buzzwords
LAMP stack is dead,long live the LAMP
stack!
lamp stack
is PHP dead?
K
Jis PHP dead?
absolutely not!
J
php ecosystem
• big (and funny) community• lots of libraries• history• web oriented language
#lifeinideato
USER STORIES
user story
AS <role>I WANT <do something> SO THAT <benefit>
#lifeinideato
estimation
AS Ua I WANT register to the app SO THAT I can join
#lifeinideato
@_orso_
estimation
#lifeinideato
3
@_orso_
estimation
#lifeinideato
3
@cirpo
estimation
@_orso_
#lifeinideato
23
@cirpo
estimation
@_orso_
{telecommuting,agile}
#lifeinideato
php ecosystem
TISTIMO
{startup,agile}
php ecosystem tistimo
{agile}
php ecosystem tistimo
{agile}
php ecosystem tistimo
{agile}
AS Ua I WANT vedere la lista progetti ancora da stimare
AS Ua I WANT vedere la lista dei progetti stimati
AS Ua I WANT voglio autenticarmi con il mio account twitter
AS Ur I WANT rimanere in attesa che un altro ua si unisca al progetto
AS Ur I WANT visualizzare una storia
AS Ur I WANT votare una storia
AS Ur I WANT voglio assegnare una stima ad una storia senza votarla
AS Ur I WANT voglio vedere le storie stimate fino a quel momento
AS Ur I WANT voglio vedere quante storie mancano alla fine della stima
AS Ur I WANT voglio vedere il mio grado di affinità con i miei colleghi
AS Admin I WANT voglio inserire le storie
tistimo
{agile}
tistimo
{mvc,XP,tdd,closure}
tistimo
{mvc,XP,tdd,closure}
K
tistimo
{mvc,XP,tdd,closure}
K
IT’S TOO MUCH
SILEX
silex silex
J{mvc,XP,tdd,closure,microframework,rest}
SF2 vs SILEX
silex silex
J{mvc,XP,tdd,closure,microframework,rest}
100 MB vs 0.5 mb
Highly configurable vs simple config
Solid base vs prototyping
{mvc,XP,tdd,closure,microframework,rest}
silex silex
J
{bdd,}
B!"#$
behat
J
{bdd,} B!"#$
behat
J
{bdd,} B!"#$
behat
J
{bdd,} B!"#$
behat
J
{bdd,} B!"#$
behat
J
mysql
L
nosql
J{nosql}
nosql
J
every value is accessible by a key (string)
“project”
“user:cirpo”
{nosql}
nosql
JData types
string
hashes
lists
(sorted) sets
{nosql}
nosql
J{noslq}
id User Password Name Surname Created
234 cirpo c1rp0 Alessandro Cinelli 2012-03-03
nosql
J{noslq}
A redis user
“obj_type:id:attribute”
“user:234:name” => “Alessandro”
“user:234:username” => “cirpo”
nosql
J{noslq}
Users“user:username”“user:username:is_logged”“user:username:score” => int
Projects“project:projectname”“project:projectname:estimate_queue” => list
nosql
J{noslq}
User Stories“user_story:id”“user_story:status” => hash
Scores“users_scores” => sorted set“users_affinity” => sorted set
nosql
J{noslq}
w00t!J
tistimo
tistimo
L
tistimo
•php single request
•shared nothing architecture
nodejs
J{nodejs,serverside-javascript,websocketsrealtime}
nodejs
J
code
{nodejs,serverside-javascript,websocketsrealtime}
socket.io
J{nodejs,serverside-javascript,websocketsrealtime}
socket.io
J{nodejs,serverside-javascript,websocketsrealtime}
server side
socket.io
J{websocketsrealtime}
client side
nosql
J
code
{nodejs,serverside-javascript,websocketsrealtime}
backbonejs
J{mvc,javascript}
backbonejs
J{mvc,javascript}
backbonejs
J{mvc,javascript}
backbonejs
J{mvc,javascript}
backbonejs
J{mvc,javascript}
backbonejs
J{mvc,javascript}
nodejs
nosqljavascript
gamificationwebsockets
gattini
html5realtime
map/reduce
hadoopmvc
telecommuting
redis
microframeworkboook
backbonejs
agile
tdd
xp
mongodb
css3
cloud
responsive
startup
pair programmingbdd
publish/suscribe
server-side javascript
closure
functional programming
buzzwords
Who's using Redis?
J
Who's using Redis? (and our beloved PHP!)
JJ +
Who's using nodejs?
J
Who's using backbonejs?
J
• nodejsconf