SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
Thomas Joos, Little Miss Robot
Experience Director, Partner
@thomasjoos
The Technical Learning Curve
Thomas Joos | Little Miss Robot | @thomasjoos
Thursday 28 February 13
-(void) helloFragmentation;
Retina
iOS4.0
iOS5.0
iOS6.0
320x480
640x960
HTML5
CSS3
Node.js
Objective-c
Java
.NET
OpenFrameworks
IE8
IE9 Chrome
Safari
Firefox
Opera
C++
Javascript
ActionScript
XML
JSON
PHP
XAML
Flash
Smart TV
720x1280xHDPI
HDPI
mHDPI
lHDPI
Klingon
Thursday 28 February 13
Design	
  is	
  not	
  just	
  what	
  it	
  looks	
  like	
  and	
  feels	
  like.
Design	
  is	
  how	
  it	
  works.
-­‐	
  Steve	
  Jobs
Thursday 28 February 13
YO	
  STEVE!	
  
I’M	
  REALLY	
  HAPPY	
  FOR	
  YOU	
  
AND	
  IMA	
  LET	
  YOU	
  FINISH...
BUT	
  WITHOUT	
  WOZZ
YOU	
  HAD	
  JACK	
  SHIT!	
  
Thursday 28 February 13
-(void) goodLuckWithThat;
Pen & Paper
Adobe Photoshop
Keynote
Adobe Illustrator Men’s Bag
Thursday 28 February 13
DESIGN
VS
DEVELOPMENT
Thursday 28 February 13
Thursday 28 February 13
Our name represents our ambition to combine creative ideas with innovative technology.
‘Little Miss’ stands for dreams and fantasy without limits, like a true ten-year-old.
‘Robot’ illustrates the endless technical opportunities and evolutions in our industry.
We are user- centered in every step of our process, in order to create wonderful experiences
that meet the needs of real people.
As a wise man once said:
‘Design is not what it looks like and feels like. Design is how it works.
LITTLE MISS ROBOT
Thursday 28 February 13
Development informs.
When building a product, design leads development and development
informs design. This is a cyclical, iterative process in which the goal is
to continually improve the product to better meet the needs of users.
source: Aral Balkan, Mobile Considerations in UX Design
Thursday 28 February 13
You tell designers what they
can or can not do.
And they will show you how it should look like and feel like.
You know, because that’s how it works.
Thursday 28 February 13
A developer’s toolbox:
1 Passion for digital innovation
2 Interested in interactive design & ux
3 Great programming skills
4 The ability to say ‘I don’t know’
5 Eager to find out ‘how the hell it works’
Thursday 28 February 13
The Learning Curve,
you said?
Thursday 28 February 13
Thursday 28 February 13
iPhone Prototype
Native front-end client (iOS5.0)
Rest API Webservice (http requests,
JSON)
Last.FM API
Wim Van Buynder
@wimvanbuynder
Thursday 28 February 13
- (UIImage *)imageByScalingProportionallyToSize:
(CGSize)targetSize
Interesting articles: 
http://stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage
http://stackoverflow.com/questions/2645768/uiimage-resize-scale-proportion
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
Thursday 28 February 13
- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {
    
    UIImage *sourceImage = self;
    UIImage *newImage = nil;
    
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    
    CGFloat targetWidth = targetSize.width;
    CGFloat targetHeight = targetSize.height;
    
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
    
    if (CGSizeEqualToSize(imageSize, targetSize) == NO) {
        
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        
        scaleFactor = heightFactor;
        scaledWidth  = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        
        // center the image
        
        if (widthFactor < heightFactor) {
            thumbnailPoint.y = 0; 
        } else if (widthFactor > heightFactor) {
            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
        }
    }
    
    
    // this is actually the interesting part:
    
    UIGraphicsBeginImageContext(targetSize);
    
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width  = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    
    [sourceImage drawInRect:thumbnailRect];
    
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    if(newImage == nil)
        NSLog(@"could not scale image");
    
    return newImage ;
}
Thursday 28 February 13
Refactoring code.
Thursday 28 February 13
Thursday 28 February 13
- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {
    
    UIImage *sourceImage = self;
    UIImage *newImage = nil;
    
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    
    CGFloat targetWidth = targetSize.width;
    CGFloat targetHeight = targetSize.height;
    
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
    
    if (CGSizeEqualToSize(imageSize, targetSize) == NO) {
        
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        
        scaleFactor = heightFactor;
        scaledWidth  = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        
        // center the image
        
        if (widthFactor < heightFactor) {
            thumbnailPoint.y = 0; 
        } else if (widthFactor > heightFactor) {
            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
        }
    }
    
    
    // this is actually the interesting part:
    
    UIGraphicsBeginImageContext(targetSize);
    
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width  = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    
    [sourceImage drawInRect:thumbnailRect];
    
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    if(newImage == nil) //NSLog(@"could not scale image");
        NSLog(@"could not scale image");
    
    return newImage ;
}
= backgroundImage.contentMode = UIViewContentModeScaleAspectFill
Thursday 28 February 13
Too often we feel the need to reinvent the wheel and
program specific behavior from scratch.
Always remind yourself to start from the beginning
and Read The Fucking Manual.
@wimvanbuynder
iOS Development tip: keep reading the
fucking sdk. #rtfsdk
Thursday 28 February 13
Radio+ Beta
Responsive Website
HTML5, CSS3, Javascript, Node.JS
Rest API Webservice
(http requests, JSON)
Last.FM API
Gwen Vanhee
@gwenvanhee
Bram Monstrey
@brmm
Thursday 28 February 13
Channel name
Channel logo
Current Show
Current Presentor
Current Artist
Playlist
Thursday 28 February 13
Guys. I really think we should
move away from manual
polling as quickly as possible.
It’s Node.JS time.
@brmm
Thursday 28 February 13
A few tiny thoughts
that crossed my mind...
Thursday 28 February 13
“ It’s not really in the scope of this project.
Who am I kidding, it’s not in there at all. ”
- the wallet speaking -
Thursday 28 February 13
“ If we screw this up, it’s gonna be
legen - never have to wait for it again - dary. “
- the chicken speaking -
Thursday 28 February 13
“ Isn’t Javascript a front-end scripting language?
Maybe it’s just me... “
- the inner voice speaking -
Thursday 28 February 13
“ How cool would it be to just pull this off. “
- the ego speaking -
Thursday 28 February 13
Node.JS
A platform built on Chrome’s JavaScript runtime for easily building
fast, scalable network applications. Node.js uses an event-driven,
non-blocking I/O model that makes it lightweight and efficient.
Perfect for data-intensive real-time applications that run across
distributed devices.
source: nodejs.org
Thursday 28 February 13
Thursday 28 February 13
Web services
Radio+
Node
request content (twitter, last.fm)
request additional content (radio host, program guide, ...)
receives server updates
push update to client
Push
Node
Server Side Polling for updates
Last.FM
API
Web Client
(html5)
NOA, On Demand, Playlist
Additional Content (Radio host, program guide, ...
Version 1
Thursday 28 February 13
Web services
Radio+
Node
request additional content (radio host, program guide, ...)
receives server updates
aggregates feed content
push update to client
Push
Node
Server Side Polling for updates
Last.FM
API
Web Client
(html5)
NOA, On Demand, Playlist
Additional Content (Radio host, program guide, ...
Feed
Node
request content
(twitter, last.fm)
Version 2
Thursday 28 February 13
Web services
Radio+
Node
request additional content (radio host, program guide, ...)
receives server updates
aggregates feed content
push platform optimized update to client
Push
Node
Server Side Polling for updates
Last.FM
API
Web Client
(html5)
NOA, On Demand, Playlist
Additional Content (Radio host, program guide, ...
Version 3
Smart TV
(html5)
iOS Client
(obj-c)
Android Client
(java)
Feed
Node
request content
(twitter, last.fm)
Thursday 28 February 13
#client overload
Thursday 28 February 13
Guys. I really think we should integrate more Radio+
nodes to serve all those clients.
@Brmm
Thursday 28 February 13
“ It’s a good idea and ima let you finish...
but it’s not going to happen.”
- the wallet won -
Thursday 28 February 13
Gwen Vanhee
@gwenvanhee
Thursday 28 February 13
littlemissrobot.com
Thursday 28 February 13
Mobile First
HTML5, CSS3, Javascript
Responsive design
Gwen Vanhee
@gwenvanhee
Thursday 28 February 13
I thought it would be a good idea to learn more about HTML5 for mobile.
@gwenvanhee
Thursday 28 February 13
Gwen Vanhee
@gwenvanhee
An interactive HTML5 drawing experiment
Code::Brush
Thursday 28 February 13
Conceptual, visual and functional, #mobilefirst stimulates you to
remove the clutter and focus on what really matters.
And thats a very good thing. Always.
Mobile First
Thursday 28 February 13
We are at a turning point where websites will be visited mostly by mobile
devices. A new site should last for 3 years, so #mobilefirst thinking is a must.
Mobile First
Thursday 28 February 13
A few insights...
Thursday 28 February 13
Focus on mobile friendly browsers.
(IE is not one of them.)
Thursday 28 February 13
Mobile optimalisation simply means downsizing the hell out
of your download size and page requests.
Thursday 28 February 13
Thursday 28 February 13
Thursday 28 February 13
Thursday 28 February 13
http://blog.netvlies.nl/design-interactie/retina-revolution/
Thursday 28 February 13
Thursday 28 February 13
Thursday 28 February 13
Thursday 28 February 13
Progressive Enrichment
mobile > tablet > desktop
Thursday 28 February 13
Too often we discuss what should happen when
the canvas becomes smaller. #mobilefirst thinking
means discussing what happens when the canvas
becomes bigger.
@gwenvanhee
Thursday 28 February 13
Mobile Journalist
iOS5 & 6
iPhone 4 & 5
Objective-C
Wim Van Buynder
@wimvanbuynder
Thursday 28 February 13
Start
First time Yes First run Login
Approval
Failed
No
Homescreen
Record Import from library
Cancel Pick image
Last file takenArchive
Draft
Sent
Uploading
List item
Back Edit
Settings
Configuration Cancel Next
Collection view
Back Next
DetailpageDetailpage
Back Update
Add
Disclaimer
Log out
Launch application
Flowchart Uploader app VRT
Thursday 28 February 13
Handling large chunks of data.
Thursday 28 February 13
the iPhone
Application
Document
Directory
Application
Application
Handling large amounts of data is
not really this directory’s specialty.
Thursday 28 February 13
the iPhone
Application
Document
Directory
Application
Application
Global
Temp Directory
Saving created data directly into the
iPhone’s global ‘temp’ directory.
(tmp/mobilejournalist)
Thursday 28 February 13
Thursday 28 February 13
“ It works like a charm. What a wonderful app you
guys made. Thanks! “
- Feedback week 1 -
Thursday 28 February 13
Thursday 28 February 13
“ HEY GUYS! THE APP FUCKING STOPPED
WORKING FOR SOME REASON!!! “
- Feedback week 3 -
Thursday 28 February 13
Thursday 28 February 13
the iPhone
Application
Document
Directory
Application
Application
Global
Temp Directory
Saving created data directly into the
iPhone’s global ‘temp’ directory.
(tmp/mobilejournalist)
Automatically erasing random content to make space.
Thursday 28 February 13
the iPhone
Application
Document
Directory
Application
Application
Global
Temp Directory
Saving created data directly into the
iPhone’s global ‘temp’ directory.
(tmp/mobilejournalist)
When data is saved as draft
the app automatically saves
this content in the document directory.
Thursday 28 February 13
I knew there was something like dummy-proof or granny-proof.
Now I now there is also journalist-proof.
@wimvanbuynder
Thursday 28 February 13
special thanks to
Wim Van Buynder
@wimvanbuynder
Gwen Vanhee
@gwenvanhee
Bram Monstrey
@brmm
Thursday 28 February 13
Thomas Joos, Little Miss Robot
Experience Director, Partner
@thomasjoos
Defining a great
experience design
process.
Thank you.
Thomas Joos, The Technical Learning Curve
FITC Amsterdam 2013
@thomasjoos
Thursday 28 February 13

Mais conteúdo relacionado

Semelhante a FITC 2013 - The Technical Learning Curve

The mag pi-issue-28-en
The mag pi-issue-28-enThe mag pi-issue-28-en
The mag pi-issue-28-enNguyen Nam
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Matt Raible
 
Getting more out of Matplotlib with GR
Getting more out of Matplotlib with GRGetting more out of Matplotlib with GR
Getting more out of Matplotlib with GRJosef Heinen
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AnglePablo Godel
 
Flutter festival - building ui's with flutter
Flutter festival - building ui's with flutterFlutter festival - building ui's with flutter
Flutter festival - building ui's with flutterApoorv Pandey
 
[1D6]RE-view of Android L developer PRE-view
[1D6]RE-view of Android L developer PRE-view[1D6]RE-view of Android L developer PRE-view
[1D6]RE-view of Android L developer PRE-viewNAVER D2
 
Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Saajid Akram
 
Bootiful Development with Spring Boot and Vue - Devnexus 2019
Bootiful Development with Spring Boot and Vue - Devnexus 2019Bootiful Development with Spring Boot and Vue - Devnexus 2019
Bootiful Development with Spring Boot and Vue - Devnexus 2019Matt Raible
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)Mark Proctor
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
Full stack development in Go
Full stack development in GoFull stack development in Go
Full stack development in GoYves Junqueira
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopJachym Cepicky
 
Hacking images for faster OpenCV(iOS)
Hacking images for faster OpenCV(iOS)Hacking images for faster OpenCV(iOS)
Hacking images for faster OpenCV(iOS)LINE Corporation
 
Advanced Ruby Scripting For Sketch Up
Advanced Ruby Scripting For Sketch UpAdvanced Ruby Scripting For Sketch Up
Advanced Ruby Scripting For Sketch UpGoogleTecTalks
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Raymond Camden
 
Desenvolva um game para android ou iPhone
Desenvolva um game para android ou iPhoneDesenvolva um game para android ou iPhone
Desenvolva um game para android ou iPhoneTiago Oliveira
 

Semelhante a FITC 2013 - The Technical Learning Curve (20)

The mag pi-issue-28-en
The mag pi-issue-28-enThe mag pi-issue-28-en
The mag pi-issue-28-en
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
 
Getting more out of Matplotlib with GR
Getting more out of Matplotlib with GRGetting more out of Matplotlib with GR
Getting more out of Matplotlib with GR
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
 
Flutter festival - building ui's with flutter
Flutter festival - building ui's with flutterFlutter festival - building ui's with flutter
Flutter festival - building ui's with flutter
 
[1D6]RE-view of Android L developer PRE-view
[1D6]RE-view of Android L developer PRE-view[1D6]RE-view of Android L developer PRE-view
[1D6]RE-view of Android L developer PRE-view
 
Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]
 
Bootiful Development with Spring Boot and Vue - Devnexus 2019
Bootiful Development with Spring Boot and Vue - Devnexus 2019Bootiful Development with Spring Boot and Vue - Devnexus 2019
Bootiful Development with Spring Boot and Vue - Devnexus 2019
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Full stack development in Go
Full stack development in GoFull stack development in Go
Full stack development in Go
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS Workshop
 
Hacking images for faster OpenCV(iOS)
Hacking images for faster OpenCV(iOS)Hacking images for faster OpenCV(iOS)
Hacking images for faster OpenCV(iOS)
 
Advanced Ruby Scripting For Sketch Up
Advanced Ruby Scripting For Sketch UpAdvanced Ruby Scripting For Sketch Up
Advanced Ruby Scripting For Sketch Up
 
Y U NO CRAFTSMAN
Y U NO CRAFTSMANY U NO CRAFTSMAN
Y U NO CRAFTSMAN
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Don't Over-React - just use Vue!
Don't Over-React - just use Vue!Don't Over-React - just use Vue!
Don't Over-React - just use Vue!
 
Desenvolva um game para android ou iPhone
Desenvolva um game para android ou iPhoneDesenvolva um game para android ou iPhone
Desenvolva um game para android ou iPhone
 

Mais de Little Miss Robot

Mais de Little Miss Robot (8)

Techstartupday - Digital Product Design
Techstartupday - Digital Product Design Techstartupday - Digital Product Design
Techstartupday - Digital Product Design
 
99u 2013
99u 201399u 2013
99u 2013
 
Manifesto
ManifestoManifesto
Manifesto
 
Portfolio 2012-2013
Portfolio 2012-2013Portfolio 2012-2013
Portfolio 2012-2013
 
Crafting Digital Stories
Crafting Digital StoriesCrafting Digital Stories
Crafting Digital Stories
 
Reasons 2013 - Elevator Pitch
Reasons 2013 - Elevator PitchReasons 2013 - Elevator Pitch
Reasons 2013 - Elevator Pitch
 
99Conference Recap, May 2013
99Conference Recap, May 201399Conference Recap, May 2013
99Conference Recap, May 2013
 
HP City 2013 - Let's go shopping
HP City 2013 - Let's go shoppingHP City 2013 - Let's go shopping
HP City 2013 - Let's go shopping
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

FITC 2013 - The Technical Learning Curve

  • 1. Thomas Joos, Little Miss Robot Experience Director, Partner @thomasjoos The Technical Learning Curve Thomas Joos | Little Miss Robot | @thomasjoos Thursday 28 February 13
  • 3. Design  is  not  just  what  it  looks  like  and  feels  like. Design  is  how  it  works. -­‐  Steve  Jobs Thursday 28 February 13
  • 4. YO  STEVE!   I’M  REALLY  HAPPY  FOR  YOU   AND  IMA  LET  YOU  FINISH... BUT  WITHOUT  WOZZ YOU  HAD  JACK  SHIT!   Thursday 28 February 13
  • 5. -(void) goodLuckWithThat; Pen & Paper Adobe Photoshop Keynote Adobe Illustrator Men’s Bag Thursday 28 February 13
  • 8. Our name represents our ambition to combine creative ideas with innovative technology. ‘Little Miss’ stands for dreams and fantasy without limits, like a true ten-year-old. ‘Robot’ illustrates the endless technical opportunities and evolutions in our industry. We are user- centered in every step of our process, in order to create wonderful experiences that meet the needs of real people. As a wise man once said: ‘Design is not what it looks like and feels like. Design is how it works. LITTLE MISS ROBOT Thursday 28 February 13
  • 9. Development informs. When building a product, design leads development and development informs design. This is a cyclical, iterative process in which the goal is to continually improve the product to better meet the needs of users. source: Aral Balkan, Mobile Considerations in UX Design Thursday 28 February 13
  • 10. You tell designers what they can or can not do. And they will show you how it should look like and feel like. You know, because that’s how it works. Thursday 28 February 13
  • 11. A developer’s toolbox: 1 Passion for digital innovation 2 Interested in interactive design & ux 3 Great programming skills 4 The ability to say ‘I don’t know’ 5 Eager to find out ‘how the hell it works’ Thursday 28 February 13
  • 12. The Learning Curve, you said? Thursday 28 February 13
  • 14. iPhone Prototype Native front-end client (iOS5.0) Rest API Webservice (http requests, JSON) Last.FM API Wim Van Buynder @wimvanbuynder Thursday 28 February 13
  • 15. - (UIImage *)imageByScalingProportionallyToSize: (CGSize)targetSize Interesting articles:  http://stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage http://stackoverflow.com/questions/2645768/uiimage-resize-scale-proportion http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/ Thursday 28 February 13
  • 16. - (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {          UIImage *sourceImage = self;     UIImage *newImage = nil;          CGSize imageSize = sourceImage.size;     CGFloat width = imageSize.width;     CGFloat height = imageSize.height;          CGFloat targetWidth = targetSize.width;     CGFloat targetHeight = targetSize.height;          CGFloat scaleFactor = 0.0;     CGFloat scaledWidth = targetWidth;     CGFloat scaledHeight = targetHeight;          CGPoint thumbnailPoint = CGPointMake(0.0,0.0);          if (CGSizeEqualToSize(imageSize, targetSize) == NO) {                  CGFloat widthFactor = targetWidth / width;         CGFloat heightFactor = targetHeight / height;                  scaleFactor = heightFactor;         scaledWidth  = width * scaleFactor;         scaledHeight = height * scaleFactor;                  // center the image                  if (widthFactor < heightFactor) {             thumbnailPoint.y = 0;          } else if (widthFactor > heightFactor) {             thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;         }     }               // this is actually the interesting part:          UIGraphicsBeginImageContext(targetSize);          CGRect thumbnailRect = CGRectZero;     thumbnailRect.origin = thumbnailPoint;     thumbnailRect.size.width  = scaledWidth;     thumbnailRect.size.height = scaledHeight;          [sourceImage drawInRect:thumbnailRect];          newImage = UIGraphicsGetImageFromCurrentImageContext();     UIGraphicsEndImageContext();          if(newImage == nil)         NSLog(@"could not scale image");          return newImage ; } Thursday 28 February 13
  • 19. - (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {          UIImage *sourceImage = self;     UIImage *newImage = nil;          CGSize imageSize = sourceImage.size;     CGFloat width = imageSize.width;     CGFloat height = imageSize.height;          CGFloat targetWidth = targetSize.width;     CGFloat targetHeight = targetSize.height;          CGFloat scaleFactor = 0.0;     CGFloat scaledWidth = targetWidth;     CGFloat scaledHeight = targetHeight;          CGPoint thumbnailPoint = CGPointMake(0.0,0.0);          if (CGSizeEqualToSize(imageSize, targetSize) == NO) {                  CGFloat widthFactor = targetWidth / width;         CGFloat heightFactor = targetHeight / height;                  scaleFactor = heightFactor;         scaledWidth  = width * scaleFactor;         scaledHeight = height * scaleFactor;                  // center the image                  if (widthFactor < heightFactor) {             thumbnailPoint.y = 0;          } else if (widthFactor > heightFactor) {             thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;         }     }               // this is actually the interesting part:          UIGraphicsBeginImageContext(targetSize);          CGRect thumbnailRect = CGRectZero;     thumbnailRect.origin = thumbnailPoint;     thumbnailRect.size.width  = scaledWidth;     thumbnailRect.size.height = scaledHeight;          [sourceImage drawInRect:thumbnailRect];          newImage = UIGraphicsGetImageFromCurrentImageContext();     UIGraphicsEndImageContext();          if(newImage == nil) //NSLog(@"could not scale image");         NSLog(@"could not scale image");          return newImage ; } = backgroundImage.contentMode = UIViewContentModeScaleAspectFill Thursday 28 February 13
  • 20. Too often we feel the need to reinvent the wheel and program specific behavior from scratch. Always remind yourself to start from the beginning and Read The Fucking Manual. @wimvanbuynder iOS Development tip: keep reading the fucking sdk. #rtfsdk Thursday 28 February 13
  • 21. Radio+ Beta Responsive Website HTML5, CSS3, Javascript, Node.JS Rest API Webservice (http requests, JSON) Last.FM API Gwen Vanhee @gwenvanhee Bram Monstrey @brmm Thursday 28 February 13
  • 22. Channel name Channel logo Current Show Current Presentor Current Artist Playlist Thursday 28 February 13
  • 23. Guys. I really think we should move away from manual polling as quickly as possible. It’s Node.JS time. @brmm Thursday 28 February 13
  • 24. A few tiny thoughts that crossed my mind... Thursday 28 February 13
  • 25. “ It’s not really in the scope of this project. Who am I kidding, it’s not in there at all. ” - the wallet speaking - Thursday 28 February 13
  • 26. “ If we screw this up, it’s gonna be legen - never have to wait for it again - dary. “ - the chicken speaking - Thursday 28 February 13
  • 27. “ Isn’t Javascript a front-end scripting language? Maybe it’s just me... “ - the inner voice speaking - Thursday 28 February 13
  • 28. “ How cool would it be to just pull this off. “ - the ego speaking - Thursday 28 February 13
  • 29. Node.JS A platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Perfect for data-intensive real-time applications that run across distributed devices. source: nodejs.org Thursday 28 February 13
  • 31. Web services Radio+ Node request content (twitter, last.fm) request additional content (radio host, program guide, ...) receives server updates push update to client Push Node Server Side Polling for updates Last.FM API Web Client (html5) NOA, On Demand, Playlist Additional Content (Radio host, program guide, ... Version 1 Thursday 28 February 13
  • 32. Web services Radio+ Node request additional content (radio host, program guide, ...) receives server updates aggregates feed content push update to client Push Node Server Side Polling for updates Last.FM API Web Client (html5) NOA, On Demand, Playlist Additional Content (Radio host, program guide, ... Feed Node request content (twitter, last.fm) Version 2 Thursday 28 February 13
  • 33. Web services Radio+ Node request additional content (radio host, program guide, ...) receives server updates aggregates feed content push platform optimized update to client Push Node Server Side Polling for updates Last.FM API Web Client (html5) NOA, On Demand, Playlist Additional Content (Radio host, program guide, ... Version 3 Smart TV (html5) iOS Client (obj-c) Android Client (java) Feed Node request content (twitter, last.fm) Thursday 28 February 13
  • 35. Guys. I really think we should integrate more Radio+ nodes to serve all those clients. @Brmm Thursday 28 February 13
  • 36. “ It’s a good idea and ima let you finish... but it’s not going to happen.” - the wallet won - Thursday 28 February 13
  • 39. Mobile First HTML5, CSS3, Javascript Responsive design Gwen Vanhee @gwenvanhee Thursday 28 February 13
  • 40. I thought it would be a good idea to learn more about HTML5 for mobile. @gwenvanhee Thursday 28 February 13
  • 41. Gwen Vanhee @gwenvanhee An interactive HTML5 drawing experiment Code::Brush Thursday 28 February 13
  • 42. Conceptual, visual and functional, #mobilefirst stimulates you to remove the clutter and focus on what really matters. And thats a very good thing. Always. Mobile First Thursday 28 February 13
  • 43. We are at a turning point where websites will be visited mostly by mobile devices. A new site should last for 3 years, so #mobilefirst thinking is a must. Mobile First Thursday 28 February 13
  • 44. A few insights... Thursday 28 February 13
  • 45. Focus on mobile friendly browsers. (IE is not one of them.) Thursday 28 February 13
  • 46. Mobile optimalisation simply means downsizing the hell out of your download size and page requests. Thursday 28 February 13
  • 54. Progressive Enrichment mobile > tablet > desktop Thursday 28 February 13
  • 55. Too often we discuss what should happen when the canvas becomes smaller. #mobilefirst thinking means discussing what happens when the canvas becomes bigger. @gwenvanhee Thursday 28 February 13
  • 56. Mobile Journalist iOS5 & 6 iPhone 4 & 5 Objective-C Wim Van Buynder @wimvanbuynder Thursday 28 February 13
  • 57. Start First time Yes First run Login Approval Failed No Homescreen Record Import from library Cancel Pick image Last file takenArchive Draft Sent Uploading List item Back Edit Settings Configuration Cancel Next Collection view Back Next DetailpageDetailpage Back Update Add Disclaimer Log out Launch application Flowchart Uploader app VRT Thursday 28 February 13
  • 58. Handling large chunks of data. Thursday 28 February 13
  • 59. the iPhone Application Document Directory Application Application Handling large amounts of data is not really this directory’s specialty. Thursday 28 February 13
  • 60. the iPhone Application Document Directory Application Application Global Temp Directory Saving created data directly into the iPhone’s global ‘temp’ directory. (tmp/mobilejournalist) Thursday 28 February 13
  • 62. “ It works like a charm. What a wonderful app you guys made. Thanks! “ - Feedback week 1 - Thursday 28 February 13
  • 64. “ HEY GUYS! THE APP FUCKING STOPPED WORKING FOR SOME REASON!!! “ - Feedback week 3 - Thursday 28 February 13
  • 66. the iPhone Application Document Directory Application Application Global Temp Directory Saving created data directly into the iPhone’s global ‘temp’ directory. (tmp/mobilejournalist) Automatically erasing random content to make space. Thursday 28 February 13
  • 67. the iPhone Application Document Directory Application Application Global Temp Directory Saving created data directly into the iPhone’s global ‘temp’ directory. (tmp/mobilejournalist) When data is saved as draft the app automatically saves this content in the document directory. Thursday 28 February 13
  • 68. I knew there was something like dummy-proof or granny-proof. Now I now there is also journalist-proof. @wimvanbuynder Thursday 28 February 13
  • 69. special thanks to Wim Van Buynder @wimvanbuynder Gwen Vanhee @gwenvanhee Bram Monstrey @brmm Thursday 28 February 13
  • 70. Thomas Joos, Little Miss Robot Experience Director, Partner @thomasjoos Defining a great experience design process. Thank you. Thomas Joos, The Technical Learning Curve FITC Amsterdam 2013 @thomasjoos Thursday 28 February 13