SlideShare a Scribd company logo
1 of 63
Download to read offline
Object Oriented
Views
Aki Salmi
@rinkkasatiainen
Wednesday, May 20, 15
Programmer
@Ambientia
skype: @rinkkasatiainen
twitter: @rinkkasatiainen
email: aki.salmi@iki.fi
Wednesday, May 20, 15
Wednesday, May 20, 15
Content
• Background
• A way to solve
• Discussion
• Open Space: Mob Programming?
Wednesday, May 20, 15
Very Brief Background
• Confluence plugin
Wednesday, May 20, 15
We have all seen
Wednesday, May 20, 15
Controllers like
Wednesday, May 20, 15
This
Wednesday, May 20, 15
/INDEX
(1 of many actions)
Params
Service
“DAO”
“or not DAO”
DAO-DAO-DAO
Service
Service
Domain
Service
Render
Wednesday, May 20, 15
Not that, not today
Wednesday, May 20, 15
Let’s assume we’re
working with thin
controllers
Wednesday, May 20, 15
Have we seen
Wednesday, May 20, 15
views like
Wednesday, May 20, 15
this
Only today: logic in a view
Wednesday, May 20, 15
So how then?
Wednesday, May 20, 15
How about Code I’ve
written myself?
Wednesday, May 20, 15
Not much better
Wednesday, May 20, 15
A Deeper Dive
Params
BUILD
CONTEXT
GET MODEL
RENDER
OR RENDER
Wednesday, May 20, 15
But there is a catch
Wednesday, May 20, 15
Render Many Blogs
Or 1, or 0
Wednesday, May 20, 15
... based on object
types
Wednesday, May 20, 15
Build a ‘different’
domain entity?
Build
‘real’
Domain
Build
‘real’
Domain
Wednesday, May 20, 15
Build a ‘different’
Context
BUILD
context
Diff
context
no
context
Wednesday, May 20, 15
Render ‘different’
template
Templ_0
Templ_1
Templ_n
Wednesday, May 20, 15
Seems like a
violation of SRP
(Single Responsibility Principle)
Wednesday, May 20, 15
What did we see
• build parameters
• build context (on 2 places)
• build domain
• render different data, differently, based
on the domain entity
Wednesday, May 20, 15
Visually
Controller
HTTP GET
Domain
View 0 View 1 View N
Wednesday, May 20, 15
It works
Wednesday, May 20, 15
..sort of
• most of the bugs I introduced, were on
this behavior of the system.
• This class
• Concepts introduced by this class
• Integration with Confluence API
• especially ‘null’s
Wednesday, May 20, 15
What IF
Controller
HTTP GET
Domain
View 0 View 1 View N
Wednesday, May 20, 15
What IF...
C’s responsibility
• Given a set of parameters...
• Build Model (service / repository)
• Render Template with model given
• and let other’s to figure out which
template to render
Wednesday, May 20, 15
Decorate / Exhibit
Controller
HTTP GET
Domain
View
Exhibit
1) build model
2) render
3) exhibit
View tmpl
4) render
Wednesday, May 20, 15
How does it work
Wednesday, May 20, 15
few design decision
done by me
• avoid nulls
• separate Read Model from Write Model
• 1st class collections
• Separated Query and Command
Controller (sort of CQRS)
Wednesday, May 20, 15
Domain Entity: Group
<if> ReadOrWriteModel
<if> ReadModel <if> WriteModel
GroupEntity GroupDescrGroupList
Wednesday, May 20, 15
Domain Entity: Group
<if> ReadOrWriteModel
<if> ReadModel <if> WriteModel
GroupEntity GroupDescrGroupList
Wednesday, May 20, 15
Domain Entity: Group
GroupEntity
* immutable
* final private prop
* behavior rich
GroupDescriptor
* public properties
* tiny behavior
AGroupThatDoes
NotExistYet
AGroup
Wednesday, May 20, 15
Domain Entity: Group
<if> ReadOrWriteModel
<if> ReadModel <if> WriteModel
GroupEntity GroupDescrGroupList
Wednesday, May 20, 15
Domain Entity: Group
GroupList
* behavior: iterate
Wednesday, May 20, 15
Introducing Exhibits
• Introduced by Avdi Grimm
• sort of presenter-decorator
Wednesday, May 20, 15
Exhibit Characteristics
• Wraps a single model instance
• Is a true Decorator
• Brings together model and context
• Encapsulates the decision about how to
render an object
• May modify the behavior of an object
Wednesday, May 20, 15
Exhibit B
Exhibit A
Exhibit visually
Model object
Wednesday, May 20, 15
Exhibits: Group
<if> Exhibit
+ renderBody()
GroupListExh GroupList
GroupExhibit
GroupEntity
EditGroupExh GroupDesc
GroupWPicture
Wednesday, May 20, 15
Exhibits: Group
GroupListExh ListView
GroupExhibit ShowGroup
EditGroupExh GroupDesc
GroupWPicture ShowGPicture
Wednesday, May 20, 15
REST view
HTTP PATH Contr#Action Domain Class
GET /foo(.:format) foos#index FooList
POST /foo(.:format) foos#create FooDescriptor
GET /foo/new foos#new FooDescriptor
GET /foo/:id/edit foos#edit FooDescriptor
GET /foo/:id foos#show FooEntry
PATCH/PUT /foo/:id foos#update FooDescriptor
DELETE /foo/:id foos#delete FooDescriptor
Wednesday, May 20, 15
Creating exhibits
public exhibit(ReadWriteModel model){
for_each( exhibit: exhibit_classes ){
if( exhibit.applicableTo( model )
// wrap model to exhibit and
serve exhibit as new model
}
}
Wednesday, May 20, 15
Creating exhibits
the ruby way 1/2
Avdi Grimm: Object on Rails, Listing 77
Wednesday, May 20, 15
Creating exhibits
the ruby way 2/2
Avdi Grimm: Object on Rails, Listing 77
Wednesday, May 20, 15
Creating exhibits
the Java 8 way 1/N
Wednesday, May 20, 15
Time for some code
Confluence plugin
Velocity templates
Wednesday, May 20, 15
View
Wednesday, May 20, 15
Controller
Wednesday, May 20, 15
Exhibit A
Wednesday, May 20, 15
Exhibit B
Wednesday, May 20, 15
Exhibit C
Wednesday, May 20, 15
Exhibit D
Wednesday, May 20, 15
And visually
Wednesday, May 20, 15
Surroundings
Exhibit templates
Wednesday, May 20, 15
RemotePictureExhibit ||
DefaultPictureExhibit
UserProfileExhibit
Could be composite
Wednesday, May 20, 15
Did it work -
in retrospect
• No issues in production with this code
• It is not, by far, easy to grasp. Without
someone explaining
Wednesday, May 20, 15
What I did not show
• transformations of domain entities:
• Request -> Write -> Persistence
• Persistence -> Write (-> Read)
• Composite Exhibit - how to show 0, 1 or
many concepts, dynamically, based on
the ModelObject rendered
Wednesday, May 20, 15
What could I experiment
• Capabilities for exhibits
• Capability.mobile
• Capability.REST
• Capability.json
Wednesday, May 20, 15
Thanks!
Questions?
skype: @rinkkasatiainen
twitter: @rinkkasatiainen
email: aki.salmi@iki.fi
Wednesday, May 20, 15

More Related Content

Viewers also liked

2015年6月5日 網路行銷與社群經營 作業
2015年6月5日 網路行銷與社群經營 作業2015年6月5日 網路行銷與社群經營 作業
2015年6月5日 網路行銷與社群經營 作業c1321k
 
De opkomst van marktonderzoek in merkenzaken
De opkomst van marktonderzoek in merkenzakenDe opkomst van marktonderzoek in merkenzaken
De opkomst van marktonderzoek in merkenzakenGregor Vos
 
Bachelor's of Chemical Engineering Certificate
Bachelor's of Chemical Engineering CertificateBachelor's of Chemical Engineering Certificate
Bachelor's of Chemical Engineering CertificateAhmed Salah
 
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...Mozaic Works
 
Suppression of grating lobes
Suppression of grating lobesSuppression of grating lobes
Suppression of grating lobeskavindrakrishna
 
150601 gartner cloud_summit_vfinal
150601 gartner cloud_summit_vfinal150601 gartner cloud_summit_vfinal
150601 gartner cloud_summit_vfinalMichael Burian
 
Microsoft excel training
Microsoft excel trainingMicrosoft excel training
Microsoft excel trainingMohamed Hassan
 
Pollution and its types
Pollution and its typesPollution and its types
Pollution and its typesIrfan Hussain
 
Factsheet cesar bocker en def
Factsheet cesar bocker en defFactsheet cesar bocker en def
Factsheet cesar bocker en defMarco
 

Viewers also liked (12)

Sure currency tips
Sure currency tipsSure currency tips
Sure currency tips
 
2015年6月5日 網路行銷與社群經營 作業
2015年6月5日 網路行銷與社群經營 作業2015年6月5日 網路行銷與社群經營 作業
2015年6月5日 網路行銷與社群經營 作業
 
De opkomst van marktonderzoek in merkenzaken
De opkomst van marktonderzoek in merkenzakenDe opkomst van marktonderzoek in merkenzaken
De opkomst van marktonderzoek in merkenzaken
 
Prob dist pdf
Prob dist pdfProb dist pdf
Prob dist pdf
 
Bachelor's of Chemical Engineering Certificate
Bachelor's of Chemical Engineering CertificateBachelor's of Chemical Engineering Certificate
Bachelor's of Chemical Engineering Certificate
 
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
 
Suppression of grating lobes
Suppression of grating lobesSuppression of grating lobes
Suppression of grating lobes
 
150601 gartner cloud_summit_vfinal
150601 gartner cloud_summit_vfinal150601 gartner cloud_summit_vfinal
150601 gartner cloud_summit_vfinal
 
Microsoft excel training
Microsoft excel trainingMicrosoft excel training
Microsoft excel training
 
Pollution and its types
Pollution and its typesPollution and its types
Pollution and its types
 
La campagne
La campagneLa campagne
La campagne
 
Factsheet cesar bocker en def
Factsheet cesar bocker en defFactsheet cesar bocker en def
Factsheet cesar bocker en def
 

Similar to Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015

Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshopRyan Abbott
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSPablo Godel
 
Treating Infrastructure as Garbage
Treating Infrastructure as GarbageTreating Infrastructure as Garbage
Treating Infrastructure as GarbageDatadog
 
DAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayDAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayGaurav Ahluwalia
 
DAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayDAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayGaurav Ahluwalia
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projectsVincent Massol
 
Ruby Tuesday Ottawa - Jan 24, 2012
Ruby Tuesday Ottawa - Jan 24, 2012Ruby Tuesday Ottawa - Jan 24, 2012
Ruby Tuesday Ottawa - Jan 24, 2012michaeldwp
 
iOS: Building More with Less
iOS: Building More with LessiOS: Building More with Less
iOS: Building More with LessKyle Stewart
 
API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015Tom Johnson
 
A New Baseline for Front-End Devs
A New Baseline for Front-End DevsA New Baseline for Front-End Devs
A New Baseline for Front-End DevsRebecca Murphey
 
Using Telerik Kendo UI in Office 365
Using Telerik Kendo UI in Office 365Using Telerik Kendo UI in Office 365
Using Telerik Kendo UI in Office 365Ed Musters
 
Ruby Tuesday - March 27, 2012 (
Ruby Tuesday - March 27, 2012 (Ruby Tuesday - March 27, 2012 (
Ruby Tuesday - March 27, 2012 (michaeldwp
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your ProjectsIgnacio Martín
 
SPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsSPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsPaul Hunt
 
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...Codemotion
 
Intro to Laravel 4 : By Chris Moore
Intro to Laravel 4 : By Chris Moore Intro to Laravel 4 : By Chris Moore
Intro to Laravel 4 : By Chris Moore kareerme
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesBenoit Bénézech
 
AWS User Group - Survey Results and Building APIs on AWS
AWS User Group - Survey Results and Building APIs on AWSAWS User Group - Survey Results and Building APIs on AWS
AWS User Group - Survey Results and Building APIs on AWSSebastian Krueger
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Slobodan Lohja
 

Similar to Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015 (20)

Ruby on-rails-workshop
Ruby on-rails-workshopRuby on-rails-workshop
Ruby on-rails-workshop
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
Treating Infrastructure as Garbage
Treating Infrastructure as GarbageTreating Infrastructure as Garbage
Treating Infrastructure as Garbage
 
DAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayDAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gateway
 
DAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gatewayDAY1- DAY2Netweaver gateway
DAY1- DAY2Netweaver gateway
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projects
 
Ruby Tuesday Ottawa - Jan 24, 2012
Ruby Tuesday Ottawa - Jan 24, 2012Ruby Tuesday Ottawa - Jan 24, 2012
Ruby Tuesday Ottawa - Jan 24, 2012
 
iOS: Building More with Less
iOS: Building More with LessiOS: Building More with Less
iOS: Building More with Less
 
API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015
 
Railties
RailtiesRailties
Railties
 
A New Baseline for Front-End Devs
A New Baseline for Front-End DevsA New Baseline for Front-End Devs
A New Baseline for Front-End Devs
 
Using Telerik Kendo UI in Office 365
Using Telerik Kendo UI in Office 365Using Telerik Kendo UI in Office 365
Using Telerik Kendo UI in Office 365
 
Ruby Tuesday - March 27, 2012 (
Ruby Tuesday - March 27, 2012 (Ruby Tuesday - March 27, 2012 (
Ruby Tuesday - March 27, 2012 (
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your Projects
 
SPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsSPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITPros
 
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...
AngularJS 2.0: A natural evolvement or a new beginning - Boyan Mihaylov - Cod...
 
Intro to Laravel 4 : By Chris Moore
Intro to Laravel 4 : By Chris Moore Intro to Laravel 4 : By Chris Moore
Intro to Laravel 4 : By Chris Moore
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practices
 
AWS User Group - Survey Results and Building APIs on AWS
AWS User Group - Survey Results and Building APIs on AWSAWS User Group - Survey Results and Building APIs on AWS
AWS User Group - Survey Results and Building APIs on AWS
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
 

More from Mozaic Works

Agile Retrospectives
Agile RetrospectivesAgile Retrospectives
Agile RetrospectivesMozaic Works
 
Developer Experience to Testing
Developer Experience to TestingDeveloper Experience to Testing
Developer Experience to TestingMozaic Works
 
Story mapping: build better products with a happier team
Story mapping: build better products with a happier teamStory mapping: build better products with a happier team
Story mapping: build better products with a happier teamMozaic Works
 
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015Mozaic Works
 
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015Mozaic Works
 
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...Mozaic Works
 
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Mozaic Works
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Mozaic Works
 
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...Mozaic Works
 
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....Mozaic Works
 
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...Mozaic Works
 
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...Mozaic Works
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceMozaic Works
 
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...Mozaic Works
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Mozaic Works
 
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015Mozaic Works
 
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...Mozaic Works
 
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015Mozaic Works
 
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...Mozaic Works
 
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015Mozaic Works
 

More from Mozaic Works (20)

Agile Retrospectives
Agile RetrospectivesAgile Retrospectives
Agile Retrospectives
 
Developer Experience to Testing
Developer Experience to TestingDeveloper Experience to Testing
Developer Experience to Testing
 
Story mapping: build better products with a happier team
Story mapping: build better products with a happier teamStory mapping: build better products with a happier team
Story mapping: build better products with a happier team
 
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
 
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
 
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
 
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
 
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
 
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
 
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
 
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
 
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
 
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
 
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
 
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...
Andrew Hall: Power Up: Learn How to Recharge Your Energy Bar at I T.A.K.E. Un...
 
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015
Thomas Sundberg: The responsible Developer at I T.A.K.E. Unconference 2015
 

Recently uploaded

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Recently uploaded (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015