SlideShare a Scribd company logo
1 of 49
Download to read offline
Prac%cal'Autolayout 
CocoaHeadsBE+Nov+2014 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 1
Me 
• Tom$Adriaenssen 
• Lead&iOS&Dev&at& 
• @Inferis&(Twi6er,&app.net) 
• h6p://inferis.org 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 2
Prac%cal'Autolayout 
• Libraries 
• Upda,ng/Constraints 
• Intrins,c/Content/Size 
• Alignment/Rects 
• Baseline/alignment 
• Priori,es 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 3
Libraries 
• !"provided*APIs*are*cumbersome 
• Wrapper*libraries*make*your*life*easier 
• declara9ve*vs*impera9ve 
• more*descrip9ve 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 4
Libraries 
• PureLayout+(Objec've)C,,CocoaPod) 
• FLKLayout+(Objec've)C,,CocoaPod) 
• Masonry+(Objec've)C,,CocoaPod) 
• KeepLayout+(Objec've)C,,CocoaPod) 
• Lyt+(Objec've)C,,CocoaPod) 
• Cartography+(Swi5) 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 5
PureLayout 
• Defines'categories'(auto*)'on'UIView/ 
NSView'&'NSArray 
• Code'only,'no'stringAbased'DSL 
• Support'for'prioriFes'via'blocks 
• Originally'UIView+AutoLayout 
• Github:'hNps://github.com/smileyborg/ 
PureLayout 
• CocoaPod: 
pod 'PureLayout' 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 6
PureLayout 
[self.blueView autoCenterInSuperview]; 
[self.blueView autoSetDimensionsToSize:CGSizeMake(50.0, 50.0)]; 
s// Red view is positioned at the bottom right corner of the blue view, with the same width, and a height of 40 pt 
[self.redView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.blueView]; 
[self.redView autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:self.blueView]; 
[self.redView autoMatchDimension:ALDimensionWidth toDimension:ALDimensionWidth ofView:self.blueView]; 
[self.redView autoSetDimension:ALDimensionHeight toSize:40.0]; 
[@[self.redView, self.yellowView] autoSetViewsDimension:ALDimensionHeight toSize:50.0]; 
[@[self.blueView, self.greenView] autoSetViewsDimension:ALDimensionHeight toSize:70.0]; 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 7
FLKAutoLayout 
• Category*on*UIView 
• uses*predicates*for*priori5es*and* 
rela5ons 
• Code*&*string9based*DSL*(predicates) 
• Github:*hDps://github.com/ 
floriankugler/FLKAutoLayout 
• CocoaPod: 
pod 'FLKAutoLayout' 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 8
FLKAutoLayout 
// align the first label with its superview 
[labels[0] alignTop:@"20" leading:@"20" toView:labels[0].superview]; 
// give it a minimum width of 200 and a maximum width of 300 
[labels[0] constrainWidth:@">=200,<=300"]; 
// now constrain all labels to this size 
[UIView alignLeadingAndTrailingEdgesOfViews:labels]; 
// space the labels out vertically with 10 points in between 
[UIView spaceOutViewsVertically:labels predicate:@"10"]; 
// now let's take care of the text fields. 
// the first one has a fixed space of 20 to its label 
[textFields[0] constrainLeadingSpaceToView:labels[0] predicate:@"20"]; 
// constrain the right edge to its superview with 20 points padding 
[textFields[0] alignTrailingEdgeWithView:textFields[0].superview predicate:@"20"]; 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 9
Masonry 
• Custom(layout(DSL 
• define(constraints(in( 
mas_makeConstraints:(block 
• Code(only,(no(string:based(DSL 
• Github:(h>ps://github.com/Masonry/ 
Masonry 
• CocoaPod: 
pod 'Masonry' 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 10
Masonry 
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10); 
[view1 mas_makeConstraints:^(MASConstraintMaker *make) { 
make.top.equalTo(superview.mas_top).with.offset(padding.top); //with is an optional semantic filler 
make.left.equalTo(superview.mas_left).with.offset(padding.left); 
make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom); 
make.right.equalTo(superview.mas_right).with.offset(-padding.right); 
}]; 
// or even shorter 
[view1 mas_makeConstraints:^(MASConstraintMaker *make) { 
make.edges.equalTo(superview).with.insets(padding); 
}]; 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 11
KeepLayout 
• use%keep*%a*ributes%on%UIView/NSView% 
to%define%layout 
• Also%works%on%arrays%of%views 
• Code%only,%no%stringBbased%DSL 
• Github:%h*ps://github.com/iMarLnKiss/ 
KeepLayout 
• CocoaPod: 
pod 'KeepLayout' 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 12
KeepLayout 
// aligns are the same regardless of order 
viewOne.keepLeftAlign(viewTwo) == viewTwo.keepLeftAlign(viewOne) 
// left offset from 1 to 2 is right offset from 2 to 1 
viewOne.keepLeftOffset(viewTwo) == viewTwo.keepRightOffset(viewOne) 
// array attributes 
NSArray *views = @[ viewOne, viewTwo, viewThree ]; 
[views keepWidthsEqual]; 
[views keepHorizontalOffsets:20]; 
[views keepTopAligned]; 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 13
Lyt 
• Defines'categories'(lyt_*)'on'UIView/ 
NSView 
• Code'only,'no'string?based'DSL 
• No'support'for'prioriEes'or'relaEons 
• Github:'hIps://github.com/robotmedia/ 
Lyt 
• CocoaPod: 
pod 'Lyt' 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 14
Lyt 
[view lyt_centerInParent]; 
// instead of 
NSLayoutConstraint *centerXConstraint = [NSLayoutConstraint constraintWithItem:view 
attribute:NSLayoutAttributeCenterX 
relatedBy:NSLayoutRelationEqual 
toItem:view.superview 
attribute:NSLayoutAttributeCenterX 
multiplier:1.0 
constant:0]; 
NSLayoutConstraint *centerYConstraint = [NSLayoutConstraint constraintWithItem:view 
attribute:NSLayoutAttributeCenterY 
relatedBy:NSLayoutRelationEqual 
toItem:view.superview 
attribute:NSLayoutAttributeCenterY 
multiplier:1.0 
constant:0]; 
[view.superview addConstraints:@[centerXConstraint, centerYConstraint]]; 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 15
Cartography 
• Swi%! 
• Leverages.custom.operators.for.a. 
declara8ve.API 
• Code.only 
• Github:.hCps://github.com/robb/ 
Cartography 
• No.CocoaPod.yet 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 16
Cartography 
layout(view1, view2) { view1, view2 in 
view1.width == (view1.superview!.width - 50) * 0.5 
view2.width == view1.width - 50 
view1.height == 40 
view2.height == view1.height 
view1.centerX == view1.superview!.centerX 
view2.centerX == view1.centerX 
view1.top >= view1.superview!.top + 20 
view2.top == view1.bottom + 20 
} 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 17
Libraries 
Considera*ons 
• does&the&library&give&you&access&to&the&created&constraints&for& 
modifica7ons 
• do&you&prefer&string&based&DSLs,&code&only&or&a&mix? 
• mostly&useful&in&larger&projects&where&you&have&to&manually& 
create&constraints 
• for&simple&cases/projects&the&na7ve&APIs&might&do&fine 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 18
Upda%ng(Constraints 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 19
Upda%ng(Constraints 
• Don't"update"constraints"all"over"the"place 
• "update"="add"/"delete 
• changing"constants"is"no"problem 
• use"updateConstraints"or"updateViewConstraints 
• you"can"create"constraints"on"beforehand,"but"add"or"remove" 
them"in"updateConstraints 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 20
Upda%ng(Constraints 
Example 
AutoLayoutAnimation.xcodeproj 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 21
Intrins'c)Content)Size 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 22
Intrins'c)Content)Size 
func intrinsicContentSize() -> CGSize 
• only&for&"leaf"&views 
• tells&the&layout&system&that&there&is&some&content&it&doesn’t& 
na7vely&understand&in&a&view 
• provides&to&the&layout&system&the&intrinsic&size&of&that&content 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 23
Intrins'c)Content)Size 
• return'UIViewNoIntrinsicMetric'if'you'don't'know'the'size' 
for'an'axis 
• when'content'changes'the'intrins7c'content'size,'call' 
invalidateIntrinsicContentSize() 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 24
Intrins'c)Content)Size 
• you%can%use%constraints%to%provide%an%intrins1c%content%size%for% 
containers 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 25
Intrins'c)Content)Size 
Example 
IntrinsticContentSize.xcodeproj 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 26
Alignment)Rects 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 27
Alignment)Rects 
• Autolayout)does)not)work)on)frames,)but)on)alignment)rects 
• For)most)views,)these)are)the)same)by)default 
• a)powerful)tool)to)decouple)a)view’s)layout)alignment)edges)from) 
its)visual)appearance 
• consider: 
• intrinis>c)content)size)should)be)based)of)alignment)rects,)not) 
frames 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 28
Alignment)Rects 
• bu$on'with'ornaments'(eg'badge)'▶️'larger'alignment'rect 
• align'to'smaller'view'content'▶️'smaller'alignment'rect 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 29
Alignment)Rects 
Example 
AutoLayoutAlignmentRects.xcodeproj 
AlignmentRectExamples.xcodeproj 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 30
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 31
Baseline(alignment 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 32
Baseline(alignment 
func viewForBaselineLayout() -> UIView? 
• by$default,$AutoLayout$aligns$view$by$baseline$using$the$bo7om$ 
of$the$view 
• can$specify$any$child$view$of$view 
• autolayout$will$use$this$view$for$baseline$aligment 
• view$aligned$on$bo7om$of$view$returned$by$this$method 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 33
Baseline(alignment 
• viewForBaselineLayout"works"only"on"iOS 
• for"OSX"use"baselineOffsetFromBottom: 
var baselineOffsetFromBottom: CGFloat { get } 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 34
Baseline(alignment 
Some%issues 
• dynamically*changing*this*view*is*not*possible 
• have*to*remove*and*re6add*a*baseline*constraint 
• buggy 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 35
Baseline(alignment 
Example 
AutolayoutBaselineAlignment.xcodeproj 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 36
Priori%es 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 37
Priori%es 
• Using'priori+es'is'the'key'in'powerful'AutoLayout 
• Define'mul+ple'constraints'on'the'same'a<ribute'with'different' 
priori+es 
• if'possible'all'will'be'matched,'otherwise'those'with'lower' 
priori+es'are'dropped 
• use'in'combina+on'with'hugging'priority'and'compression' 
priority 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 38
Pi#alls'&'Tips 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 39
Pi#alls 
• constraints*are*cumula/ve 
• constraints*do*not*override*each*other 
• adding*a*second*width*constraint*does*not*remove*or*override* 
a*previous*one 
• remove*first*one*manually 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 40
Pi#alls 
• be$careful$with$default$priori2es 
• eg:$pinning$with$insets$7>$what$if$external$view$is$too$small$to$ 
fit$insets? 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 41
Tips 
• constraints*can*cross*view*hierarchy 
• add*constraint*from*view*to*superview*of*superview 
• only*if*scope*of*view*hierarchy*uses*autolayout!*(no*custom* 
framese8ng*inbetween) 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 42
Tips 
Autoresizing,masks 
• when&crea*ng&views&in&code,&set& 
translatesAutoresizingMaskIntoConstraints&to&NO. 
• UIKit&will&not&add&equivalent&constraints&for&the& 
autoresizingMask&of&the&view 
• these&(very&likely)&will&clash&with&your&own&constraints 
• or,&clear&autoresizing&mask 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 43
Tips 
Think&rela+onal,&not&absolute 
• some&mes'absolute'values'are'necessary 
• most'of'the'&me'you'want'views'to'size'according'to'content 
• content'is'(probably)'not'fixed 
• views'are'o>en'not'the'sizes'you'expect'(iPhone6/6+!) 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 44
Tips 
• Autolayout)is)not)a)holy)grail 
• Autolayout)seems)"easy")but)is)tricky)to)get)right 
• frame)based)layout)is)o8en)faster)and)more)finetuned 
• when)doing)frame)based)layout,)do)it)correctly 
• in)layoutSubviews 
• don't)confuse)bounds)and)frame 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 45
Thanks! 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 46
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 47
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 48
Examples 
Can$be$found$here: 
h"ps://github.com/Inferis/Prac7cal9AutoLayout 
Prac%cal'Autolayout'-'©'Tom'Adriaenssen,'2014 49

More Related Content

Similar to Practical auto layout

Mongo db washington dc 2014
Mongo db washington dc 2014Mongo db washington dc 2014
Mongo db washington dc 2014ikanow
 
Advanced Technology for Web Application Design
Advanced Technology for Web Application DesignAdvanced Technology for Web Application Design
Advanced Technology for Web Application DesignBryce Kerley
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrMichael Enslow
 
Hadoop User Group EU 2014
Hadoop User Group EU 2014Hadoop User Group EU 2014
Hadoop User Group EU 2014cwensel
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid PrototypingEven Wu
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS FrameworkOlivier Besson
 
Hi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextHi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextMugunth Kumar
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataColdFusionConference
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataStacy London
 
Responsive WordPress workflow
Responsive WordPress workflowResponsive WordPress workflow
Responsive WordPress workflowJames Bundey
 
Advanced sass/compass
Advanced sass/compassAdvanced sass/compass
Advanced sass/compassNick Cooley
 
Untangling the web10
Untangling the web10Untangling the web10
Untangling the web10Derek Jacoby
 
CSS Workflow. Pre & Post
CSS Workflow. Pre & PostCSS Workflow. Pre & Post
CSS Workflow. Pre & PostAnton Dosov
 
Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Doris Chen
 
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 ThemeCreating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 ThemeAcquia
 

Similar to Practical auto layout (20)

Mongo db washington dc 2014
Mongo db washington dc 2014Mongo db washington dc 2014
Mongo db washington dc 2014
 
Advanced Technology for Web Application Design
Advanced Technology for Web Application DesignAdvanced Technology for Web Application Design
Advanced Technology for Web Application Design
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking Modernizr
 
Hadoop User Group EU 2014
Hadoop User Group EU 2014Hadoop User Group EU 2014
Hadoop User Group EU 2014
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid Prototyping
 
Celix universal OSGi
Celix universal OSGiCelix universal OSGi
Celix universal OSGi
 
Css framework
Css frameworkCss framework
Css framework
 
Css framework
Css frameworkCss framework
Css framework
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS Framework
 
Hi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextHi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreText
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
 
Responsive WordPress workflow
Responsive WordPress workflowResponsive WordPress workflow
Responsive WordPress workflow
 
Advanced sass/compass
Advanced sass/compassAdvanced sass/compass
Advanced sass/compass
 
Untangling the web10
Untangling the web10Untangling the web10
Untangling the web10
 
CSS Workflow. Pre & Post
CSS Workflow. Pre & PostCSS Workflow. Pre & Post
CSS Workflow. Pre & Post
 
Responsive design
Responsive designResponsive design
Responsive design
 
Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016
 
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 ThemeCreating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
 

More from Inferis

Communicating with GIFs
Communicating with GIFsCommunicating with GIFs
Communicating with GIFsInferis
 
Autolayout primer
Autolayout primerAutolayout primer
Autolayout primerInferis
 
Objective c runtime
Objective c runtimeObjective c runtime
Objective c runtimeInferis
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core DataInferis
 
I Am A Switcher
I Am A SwitcherI Am A Switcher
I Am A SwitcherInferis
 
Dynamic Silverlight
Dynamic SilverlightDynamic Silverlight
Dynamic SilverlightInferis
 

More from Inferis (6)

Communicating with GIFs
Communicating with GIFsCommunicating with GIFs
Communicating with GIFs
 
Autolayout primer
Autolayout primerAutolayout primer
Autolayout primer
 
Objective c runtime
Objective c runtimeObjective c runtime
Objective c runtime
 
Adventures in Multithreaded Core Data
Adventures in Multithreaded Core DataAdventures in Multithreaded Core Data
Adventures in Multithreaded Core Data
 
I Am A Switcher
I Am A SwitcherI Am A Switcher
I Am A Switcher
 
Dynamic Silverlight
Dynamic SilverlightDynamic Silverlight
Dynamic Silverlight
 

Recently uploaded

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Practical auto layout