SlideShare a Scribd company logo
Application GUI Design – Notes From a Toolkit Developer
Tom Hacohen
Samsung Electronics Open Source Group
tom.hacohen@samsung.com
@TomHacohen
FOSDEM 2015
Designing an Application | Identify the Application
What does it do?
Essential features
Designing an Application | Identify the Application
What does it do?
Essential features
Nice to have features
Designing an Application | Identify the Application
What does it do?
Essential features
Nice to have features
Niche features (<1% of the users)
Designing an Application | Identify the Application
What does it do?
Essential features
Nice to have features
Niche features (<1% of the users)
Remove all the non-essential features
Designing an Application | Identify the Application
Who is it for?
CLI power users? Designers?
Designing an Application | Identify the Application
Who is it for?
CLI power users? Designers?
Target environment
Designing an Application | Identify the Application
Who is it for?
CLI power users? Designers?
Target environment
Common demographics
Designing an Application | Identify the Application
Who is it for?
CLI power users? Designers?
Target environment
Common demographics
Application specific classifications
Designing an Application | Identify the Application
Who is it for?
CLI power users? Designers?
Target environment
Common demographics
Application specific classifications
Userbase = you
Designing an Application | Identify the Application
KISS
Adapt feature list according to your audience
Designing an Application | Identify the Application
KISS
Adapt feature list according to your audience
Keep focus on the more important features
Designing an Application | Identify the Application
KISS
Adapt feature list according to your audience
Keep focus on the more important features
Avoid creating complex UIs
Designing an Application | Identify the Application
KISS
Adapt feature list according to your audience
Keep focus on the more important features
Avoid creating complex UIs
Keep option lists (combo box) short, simple and if
there’s no choice, split to categories
Designing an Application | Beginning of the UI
Have a rough sketch
Make a general storyboard sketch
Designing an Application | Beginning of the UI
Have a rough sketch
Make a general storyboard sketch
Have all the major interactions and features there
Designing an Application | Beginning of the UI
Have a rough sketch
Make a general storyboard sketch
Have all the major interactions and features there
Can be really rough – it’s more about the purpose of the “pages”
Designing an Application | Beginning of the UI
Have a rough sketch
Make a general storyboard sketch
Have all the major interactions and features there
Can be really rough – it’s more about the purpose of the “pages”
Designing an Application | Beginning of the UI
Have a rough sketch
Make a general storyboard sketch
Have all the major interactions and features there
Can be really rough – it’s more about the purpose of the “pages”
Designing an Application | Beginning of the UI
Stick to the basics
Don’t bother with colour – harder and will be added later
Designing an Application | Beginning of the UI
Stick to the basics
Don’t bother with colour – harder and will be added later
Do not customise available widgets/patterns unless there really is no other way
Designing an Application | Beginning of the UI
Stick to the basics
Don’t bother with colour – harder and will be added later
Do not customise available widgets/patterns unless there really is no other way
Develop it around the content – content is king
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Be consistent (easier when simple)
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Be consistent (easier when simple)
Make it simple for your users – don’t create new
usage patterns, and adhere to common ones
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Be consistent (easier when simple)
Make it simple for your users – don’t create new
usage patterns, and adhere to common ones
Common (all?) usage patterns should be easily
available
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Be consistent (easier when simple)
Make it simple for your users – don’t create new
usage patterns, and adhere to common ones
Common (all?) usage patterns should be easily
available
Rest should be revealed as needed
Designing an Application | Beginning of the UI
I meant it! KISS. . .
Be purposefully simple
Skeuomorphs are almost always bad
Be consistent (easier when simple)
Make it simple for your users – don’t create new
usage patterns, and adhere to common ones
Common (all?) usage patterns should be easily
available
Rest should be revealed as needed
Make self-documenting applications
Designing an Application | Layout
Spacing
Choose a baseline unit size (e.g. 8px)
Designing an Application | Layout
Spacing
Choose a baseline unit size (e.g. 8px)
Align everything to that baseline size
Designing an Application | Layout
Spacing
Choose a baseline unit size (e.g. 8px)
Align everything to that baseline size
Use a small set of spacing alternatives (e.g. 2, 3
and 6 units)
Designing an Application | Layout
Spacing
Choose a baseline unit size (e.g. 8px)
Align everything to that baseline size
Use a small set of spacing alternatives (e.g. 2, 3
and 6 units)
Make sure touch-targets are spaced enough
Designing an Application | Layout
Spacing
Choose a baseline unit size (e.g. 8px)
Align everything to that baseline size
Use a small set of spacing alternatives (e.g. 2, 3
and 6 units)
Make sure touch-targets are spaced enough
Be generous, but don’t overdo it (don’t waste my
screen estate)
Designing an Application | Layout
Organization
Content should be at the front of the stage
Designing an Application | Layout
Organization
Content should be at the front of the stage
Important functionality in key positions
Designing an Application | Layout
Organization
Content should be at the front of the stage
Important functionality in key positions
Make the hierarchy of information clear
Designing an Application | Layout
Organization
Content should be at the front of the stage
Important functionality in key positions
Make the hierarchy of information clear
Associate related elements
Designing an Application | Layout
Organization
Content should be at the front of the stage
Important functionality in key positions
Make the hierarchy of information clear
Associate related elements
Help directing the user’s focus
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Don’t use a known icon for something other than
intended
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Don’t use a known icon for something other than
intended
Use rich graphics when appropriate (cover-art,
mood graphics, etc.)
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Don’t use a known icon for something other than
intended
Use rich graphics when appropriate (cover-art,
mood graphics, etc.)
Don’t overshadow content
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Don’t use a known icon for something other than
intended
Use rich graphics when appropriate (cover-art,
mood graphics, etc.)
Don’t overshadow content
Don’t use ugly graphics
Designing an Application | Visuals
Icons and images
Use known icons on buttons
Don’t use a known icon for something other than
intended
Use rich graphics when appropriate (cover-art,
mood graphics, etc.)
Don’t overshadow content
Don’t use ugly graphics
Have consistent sizing
Designing an Application | Visuals
Typography
Use a readable font size
Text should be big and readable for everyone
Designing an Application | Visuals
Typography
Use a readable font size
Space up your text
Designing an Application | Visuals
Typography
Use a readable font size
Space up your text
Use text attributes (e.g. bold and size) to make
text more or less prominent
Designing an Application | Visuals
Typography
Use a readable font size
Space up your text
Use text attributes (e.g. bold and size) to make
text more or less prominent
Use a small set of fonts (probably one)
Designing an Application | Visuals
Overlaying text on images
Just put it on (bad)
Designing an Application | Visuals
Overlaying text on images
Just put it on (bad)
Black/colour/white-wash the whole image to
make text readable
Designing an Application | Visuals
Overlaying text on images
Just put it on (bad)
Black/colour/white-wash the whole image to
make text readable
Add translucent background to the text
Designing an Application | Visuals
Overlaying text on images
Just put it on (bad)
Black/colour/white-wash the whole image to
make text readable
Add translucent background to the text
Add a translucent gradient (i.e. partial
black/white-wash) so your text area is handled
Designing an Application | Visuals
Overlaying text on images
Just put it on (bad)
Black/colour/white-wash the whole image to
make text readable
Add translucent background to the text
Add a translucent gradient (i.e. partial
black/white-wash) so your text area is handled
Use a big font with a shadow and on outline
Designing an Application | Visuals
Colour
Option 1 (easier): keep the interface b&w and
use colour to direct focus
Designing an Application | Visuals
Colour
Option 1 (easier): keep the interface b&w and
use colour to direct focus
Option 2: Choose a palette of 2 different hues
and use different shades
Designing an Application | Visuals
Colour
Option 1 (easier): keep the interface b&w and
use colour to direct focus
Option 2: Choose a palette of 2 different hues
and use different shades
I almost always tint my greys (and not use black)
Designing an Application | Visuals
Colour
Option 1 (easier): keep the interface b&w and
use colour to direct focus
Option 2: Choose a palette of 2 different hues
and use different shades
I almost always tint my greys (and not use black)
Find a good palette online
Designing an Application | Visuals
Colour
Option 1 (easier): keep the interface b&w and
use colour to direct focus
Option 2: Choose a palette of 2 different hues
and use different shades
I almost always tint my greys (and not use black)
Find a good palette online
Use HSV rather RGB when choosing colours
Designing an Application | Visuals
Mimic what works
Compare to other applications you/users like better using what we’ve covered
Designing an Application | Visuals
Mimic what works
Compare to other applications you/users like better using what we’ve covered
Mimic what’s good there (e.g. do you need more spacing?)
Designing an Application | Visuals
Mimic what works
Compare to other applications you/users like better using what we’ve covered
Mimic what’s good there (e.g. do you need more spacing?)
It’s usually easier to mimic than to design from scratch
Designing an Application | Visuals
Mimic what works
Compare to other applications you/users like better using what we’ve covered
Mimic what’s good there (e.g. do you need more spacing?)
It’s usually easier to mimic than to design from scratch
Don’t mimic the bad things (i.e. use them as excuse)
Designing an Application | Visuals
Mimic what works
Compare to other applications you/users like better using what we’ve covered
Mimic what’s good there (e.g. do you need more spacing?)
It’s usually easier to mimic than to design from scratch
Don’t mimic the bad things (i.e. use them as excuse)
Don’t copy, learn. . .
Designing an Application | Usability
User experience tips
Consistent behaviour (with the platform and within the application)
Designing an Application | Usability
User experience tips
Consistent behaviour (with the platform and within the application)
Start instantly and lazy load in the background
Designing an Application | Usability
User experience tips
Consistent behaviour (with the platform and within the application)
Start instantly and lazy load in the background
Everything should take a small amount of clicks
Designing an Application | Usability
User experience tips
Consistent behaviour (with the platform and within the application)
Start instantly and lazy load in the background
Everything should take a small amount of clicks
Discoverable UI (easy to figure out how to do things)
Designing an Application | Usability
More user experience tips
Make it harder to make mistakes
Designing an Application | Usability
More user experience tips
Make it harder to make mistakes
Avoid interruptions
Designing an Application | Usability
More user experience tips
Make it harder to make mistakes
Avoid interruptions
Sort long lists in a predictable, sensible order
Designing an Application | Usability
More user experience tips
Make it harder to make mistakes
Avoid interruptions
Sort long lists in a predictable, sensible order
If your users do something and expect something
to happen, it probably should happen
Current Design Landscape | Usability
Open-source GUI toolkits
Opted for a consistent theme-able system, not individually styled apps
Current Design Landscape | Usability
Open-source GUI toolkits
Opted for a consistent theme-able system, not individually styled apps
Usually look very similar (for better or worse)
Current Design Landscape | Usability
Open-source GUI toolkits
Opted for a consistent theme-able system, not individually styled apps
Usually look very similar (for better or worse)
Mostly similar in their widget offering and can be styled to look similar
Current Design Landscape | Usability
Material design (Google)
Highly talked about cross device design guidelines
Current Design Landscape | Usability
Material design (Google)
Highly talked about cross device design guidelines
A fairly good Android adoption rate
Current Design Landscape | Usability
Material design (Google)
Highly talked about cross device design guidelines
A fairly good Android adoption rate
I personally don’t like animations that slow users
down
Current Design Landscape | Usability
Material design (Google)
Highly talked about cross device design guidelines
A fairly good Android adoption rate
I personally don’t like animations that slow users
down
Concepts are good, it’s implementations that are
not always good
Current Design Landscape | Usability
Material design (Google)
Highly talked about cross device design guidelines
A fairly good Android adoption rate
I personally don’t like animations that slow users
down
Concepts are good, it’s implementations that are
not always good
It doesn’t feel like they care about low-end and
power consumption
Current Design Landscape | Usability
iOS guidelines
Old style: horrible skeuomorphism
Current Design Landscape | Usability
iOS guidelines
Old style: horrible skeuomorphism
New style: very simple and clean, sometimes confusing
Current Design Landscape | Usability
iOS guidelines
Old style: horrible skeuomorphism
New style: very simple and clean, sometimes confusing
Flat and easy to theme
Current Design Landscape | Usability
iOS guidelines
Old style: horrible skeuomorphism
New style: very simple and clean, sometimes confusing
Flat and easy to theme
Good general guidelines
Current Design Landscape | Usability
iOS guidelines
Old style: horrible skeuomorphism
New style: very simple and clean, sometimes confusing
Flat and easy to theme
Good general guidelines
Usually not very discoverable
Current Design Landscape | Usability
EFL
Proportional layout (hard to create non-scalable
layouts)
Current Design Landscape | Usability
EFL
Proportional layout (hard to create non-scalable
layouts)
We make it harder to not use the system theme
Current Design Landscape | Usability
EFL
Proportional layout (hard to create non-scalable
layouts)
We make it harder to not use the system theme
We are mostly flat, use 3d when helps usability
(similar to Material)
Toolkit Specific | Usability
Know your toolkit
Trying to pixel match a design across toolkits is stupid
Toolkit Specific | Usability
Know your toolkit
Trying to pixel match a design across toolkits is stupid
Know what takes a performance hit on your toolkit
Toolkit Specific | Usability
Know your toolkit
Trying to pixel match a design across toolkits is stupid
Know what takes a performance hit on your toolkit
Check out the toolkit’s common patterns, those are usually best for performance and
users
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Start with black and white, don’t colour unless you need it
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Start with black and white, don’t colour unless you need it
Saturate your greys and don’t use black
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Start with black and white, don’t colour unless you need it
Saturate your greys and don’t use black
Add spacing and make your text bigger
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Start with black and white, don’t colour unless you need it
Saturate your greys and don’t use black
Add spacing and make your text bigger
Use common patterns (and take inspiration from the best)
Easy Tips (TL;DR) | Usability
Easy takeaways
It’s like API design, it should be simple, self-documenting, consistent and have a
familiar feeling
Start with black and white, don’t colour unless you need it
Saturate your greys and don’t use black
Add spacing and make your text bigger
Use common patterns (and take inspiration from the best)
Pay the design some thought (from the start)
Example of a Poor Design | Usability
Less obvious example
The hell that is going to the cinema in London. . .
Questions?
Tom Hacohen
tom.hacohen@samsung.com
http://stosb.com
@TomHacohen
Resources Attributions | Usability
Page 11, flight-deck.jpg
Page 15, twitter-sketch.jpg
Page 23, purposefully-simple.png
Page ??, skeuomorph.jpg
Page ??, self-documenting.png
Page ??, layout-baseline-align.png
Page ??, layout-spacing-alternatives.png
Page 55, direct-attention.png
Resources Attributions | Usability
Page ??, imagery-mood.png
Page ??, bad-blurry.png
Page ??, multiple-fonts.png
Page 50, text-overlay-bad.jpg
Page ??, two-colours.png
Page ??, palette.png
Page 69, repo-delete-confirmation.png
Page ??, interrupt-programmer.jpg
Page 76, material.png

More Related Content

Similar to Application GUI Design - Notes from a Toolkit Developer

Day 3 Compose Camp Material Design.pptx
Day 3 Compose Camp Material Design.pptxDay 3 Compose Camp Material Design.pptx
Day 3 Compose Camp Material Design.pptx
ShayantaniKar
 
Casestudy
CasestudyCasestudy
Casestudy
Vera Kovaleva
 
Design for Accessibility
Design for AccessibilityDesign for Accessibility
Design for Accessibility
qixingz
 
Typography and Colors for GUI Designers
Typography and Colors for GUI DesignersTypography and Colors for GUI Designers
Typography and Colors for GUI Designers
Ravi Bhadauria
 
iOS Human Interface Design Guideline Part 1
iOS Human Interface Design Guideline Part 1iOS Human Interface Design Guideline Part 1
iOS Human Interface Design Guideline Part 1
Sansern Wuthirat
 
Ui design
Ui designUi design
Ui design
Bart Van Hecke
 
John wu qiongzhi graphics
John wu qiongzhi  graphicsJohn wu qiongzhi  graphics
John wu qiongzhi graphicsJohn Wu
 
Deconstructing/Reconstructing User Experience
Deconstructing/Reconstructing User ExperienceDeconstructing/Reconstructing User Experience
Deconstructing/Reconstructing User ExperienceMike Kornacki
 
Ni week 2018_ux_lab_viewcandothat
Ni week 2018_ux_lab_viewcandothatNi week 2018_ux_lab_viewcandothat
Ni week 2018_ux_lab_viewcandothat
DMC, Inc.
 
Design Workshop I @ Cornell Tech
Design Workshop I @ Cornell TechDesign Workshop I @ Cornell Tech
Design Workshop I @ Cornell Tech
Zaid Haque
 
Design Processes and Systems in Craft
Design Processes and Systems in CraftDesign Processes and Systems in Craft
Design Processes and Systems in Craft
Courtney Bradford
 
Authoring metaphors
Authoring metaphorsAuthoring metaphors
Authoring metaphors
pavishkumarsingh
 
DJNF 2015 Mobile Presentation
DJNF 2015 Mobile PresentationDJNF 2015 Mobile Presentation
DJNF 2015 Mobile Presentation
Kara Williams Glenn
 
Visual Design
Visual DesignVisual Design
Visual Design
jamalharun
 
UI design for mobile apps
UI design for mobile appsUI design for mobile apps
UI design for mobile apps
Ivano Malavolta
 
Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti
 Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti   Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti
Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti Smash Tech
 
Android UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and ProfitAndroid UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and Profit
Fernando Cejas
 
Android UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and ProfitAndroid UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and Profit
penanochizzo
 
Bank Chris - Web UI Design Patterns - 2014
Bank Chris - Web UI Design Patterns - 2014Bank Chris - Web UI Design Patterns - 2014
Bank Chris - Web UI Design Patterns - 2014
Shah Muhammad Baig
 
Web UI Design Patterns 2014
Web UI Design Patterns 2014Web UI Design Patterns 2014
Web UI Design Patterns 2014
Lewis Lin 🦊
 

Similar to Application GUI Design - Notes from a Toolkit Developer (20)

Day 3 Compose Camp Material Design.pptx
Day 3 Compose Camp Material Design.pptxDay 3 Compose Camp Material Design.pptx
Day 3 Compose Camp Material Design.pptx
 
Casestudy
CasestudyCasestudy
Casestudy
 
Design for Accessibility
Design for AccessibilityDesign for Accessibility
Design for Accessibility
 
Typography and Colors for GUI Designers
Typography and Colors for GUI DesignersTypography and Colors for GUI Designers
Typography and Colors for GUI Designers
 
iOS Human Interface Design Guideline Part 1
iOS Human Interface Design Guideline Part 1iOS Human Interface Design Guideline Part 1
iOS Human Interface Design Guideline Part 1
 
Ui design
Ui designUi design
Ui design
 
John wu qiongzhi graphics
John wu qiongzhi  graphicsJohn wu qiongzhi  graphics
John wu qiongzhi graphics
 
Deconstructing/Reconstructing User Experience
Deconstructing/Reconstructing User ExperienceDeconstructing/Reconstructing User Experience
Deconstructing/Reconstructing User Experience
 
Ni week 2018_ux_lab_viewcandothat
Ni week 2018_ux_lab_viewcandothatNi week 2018_ux_lab_viewcandothat
Ni week 2018_ux_lab_viewcandothat
 
Design Workshop I @ Cornell Tech
Design Workshop I @ Cornell TechDesign Workshop I @ Cornell Tech
Design Workshop I @ Cornell Tech
 
Design Processes and Systems in Craft
Design Processes and Systems in CraftDesign Processes and Systems in Craft
Design Processes and Systems in Craft
 
Authoring metaphors
Authoring metaphorsAuthoring metaphors
Authoring metaphors
 
DJNF 2015 Mobile Presentation
DJNF 2015 Mobile PresentationDJNF 2015 Mobile Presentation
DJNF 2015 Mobile Presentation
 
Visual Design
Visual DesignVisual Design
Visual Design
 
UI design for mobile apps
UI design for mobile appsUI design for mobile apps
UI design for mobile apps
 
Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti
 Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti   Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti
Android UX-UI Design for fun and profit | Fernando Cejas | Tuenti
 
Android UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and ProfitAndroid UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and Profit
 
Android UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and ProfitAndroid UX-UI Design for Fun and Profit
Android UX-UI Design for Fun and Profit
 
Bank Chris - Web UI Design Patterns - 2014
Bank Chris - Web UI Design Patterns - 2014Bank Chris - Web UI Design Patterns - 2014
Bank Chris - Web UI Design Patterns - 2014
 
Web UI Design Patterns 2014
Web UI Design Patterns 2014Web UI Design Patterns 2014
Web UI Design Patterns 2014
 

More from Samsung Open Source Group

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
Samsung Open Source Group
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
Samsung Open Source Group
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
Samsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 

More from Samsung Open Source Group (20)

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 

Recently uploaded

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 

Recently uploaded (20)

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 

Application GUI Design - Notes from a Toolkit Developer

  • 1. Application GUI Design – Notes From a Toolkit Developer Tom Hacohen Samsung Electronics Open Source Group tom.hacohen@samsung.com @TomHacohen FOSDEM 2015
  • 2. Designing an Application | Identify the Application What does it do? Essential features
  • 3. Designing an Application | Identify the Application What does it do? Essential features Nice to have features
  • 4. Designing an Application | Identify the Application What does it do? Essential features Nice to have features Niche features (<1% of the users)
  • 5. Designing an Application | Identify the Application What does it do? Essential features Nice to have features Niche features (<1% of the users) Remove all the non-essential features
  • 6. Designing an Application | Identify the Application Who is it for? CLI power users? Designers?
  • 7. Designing an Application | Identify the Application Who is it for? CLI power users? Designers? Target environment
  • 8. Designing an Application | Identify the Application Who is it for? CLI power users? Designers? Target environment Common demographics
  • 9. Designing an Application | Identify the Application Who is it for? CLI power users? Designers? Target environment Common demographics Application specific classifications
  • 10. Designing an Application | Identify the Application Who is it for? CLI power users? Designers? Target environment Common demographics Application specific classifications Userbase = you
  • 11. Designing an Application | Identify the Application KISS Adapt feature list according to your audience
  • 12. Designing an Application | Identify the Application KISS Adapt feature list according to your audience Keep focus on the more important features
  • 13. Designing an Application | Identify the Application KISS Adapt feature list according to your audience Keep focus on the more important features Avoid creating complex UIs
  • 14. Designing an Application | Identify the Application KISS Adapt feature list according to your audience Keep focus on the more important features Avoid creating complex UIs Keep option lists (combo box) short, simple and if there’s no choice, split to categories
  • 15. Designing an Application | Beginning of the UI Have a rough sketch Make a general storyboard sketch
  • 16. Designing an Application | Beginning of the UI Have a rough sketch Make a general storyboard sketch Have all the major interactions and features there
  • 17. Designing an Application | Beginning of the UI Have a rough sketch Make a general storyboard sketch Have all the major interactions and features there Can be really rough – it’s more about the purpose of the “pages”
  • 18. Designing an Application | Beginning of the UI Have a rough sketch Make a general storyboard sketch Have all the major interactions and features there Can be really rough – it’s more about the purpose of the “pages”
  • 19. Designing an Application | Beginning of the UI Have a rough sketch Make a general storyboard sketch Have all the major interactions and features there Can be really rough – it’s more about the purpose of the “pages”
  • 20. Designing an Application | Beginning of the UI Stick to the basics Don’t bother with colour – harder and will be added later
  • 21. Designing an Application | Beginning of the UI Stick to the basics Don’t bother with colour – harder and will be added later Do not customise available widgets/patterns unless there really is no other way
  • 22. Designing an Application | Beginning of the UI Stick to the basics Don’t bother with colour – harder and will be added later Do not customise available widgets/patterns unless there really is no other way Develop it around the content – content is king
  • 23. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple
  • 24. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad
  • 25. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad Be consistent (easier when simple)
  • 26. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad Be consistent (easier when simple) Make it simple for your users – don’t create new usage patterns, and adhere to common ones
  • 27. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad Be consistent (easier when simple) Make it simple for your users – don’t create new usage patterns, and adhere to common ones Common (all?) usage patterns should be easily available
  • 28. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad Be consistent (easier when simple) Make it simple for your users – don’t create new usage patterns, and adhere to common ones Common (all?) usage patterns should be easily available Rest should be revealed as needed
  • 29. Designing an Application | Beginning of the UI I meant it! KISS. . . Be purposefully simple Skeuomorphs are almost always bad Be consistent (easier when simple) Make it simple for your users – don’t create new usage patterns, and adhere to common ones Common (all?) usage patterns should be easily available Rest should be revealed as needed Make self-documenting applications
  • 30. Designing an Application | Layout Spacing Choose a baseline unit size (e.g. 8px)
  • 31. Designing an Application | Layout Spacing Choose a baseline unit size (e.g. 8px) Align everything to that baseline size
  • 32. Designing an Application | Layout Spacing Choose a baseline unit size (e.g. 8px) Align everything to that baseline size Use a small set of spacing alternatives (e.g. 2, 3 and 6 units)
  • 33. Designing an Application | Layout Spacing Choose a baseline unit size (e.g. 8px) Align everything to that baseline size Use a small set of spacing alternatives (e.g. 2, 3 and 6 units) Make sure touch-targets are spaced enough
  • 34. Designing an Application | Layout Spacing Choose a baseline unit size (e.g. 8px) Align everything to that baseline size Use a small set of spacing alternatives (e.g. 2, 3 and 6 units) Make sure touch-targets are spaced enough Be generous, but don’t overdo it (don’t waste my screen estate)
  • 35. Designing an Application | Layout Organization Content should be at the front of the stage
  • 36. Designing an Application | Layout Organization Content should be at the front of the stage Important functionality in key positions
  • 37. Designing an Application | Layout Organization Content should be at the front of the stage Important functionality in key positions Make the hierarchy of information clear
  • 38. Designing an Application | Layout Organization Content should be at the front of the stage Important functionality in key positions Make the hierarchy of information clear Associate related elements
  • 39. Designing an Application | Layout Organization Content should be at the front of the stage Important functionality in key positions Make the hierarchy of information clear Associate related elements Help directing the user’s focus
  • 40. Designing an Application | Visuals Icons and images Use known icons on buttons
  • 41. Designing an Application | Visuals Icons and images Use known icons on buttons Don’t use a known icon for something other than intended
  • 42. Designing an Application | Visuals Icons and images Use known icons on buttons Don’t use a known icon for something other than intended Use rich graphics when appropriate (cover-art, mood graphics, etc.)
  • 43. Designing an Application | Visuals Icons and images Use known icons on buttons Don’t use a known icon for something other than intended Use rich graphics when appropriate (cover-art, mood graphics, etc.) Don’t overshadow content
  • 44. Designing an Application | Visuals Icons and images Use known icons on buttons Don’t use a known icon for something other than intended Use rich graphics when appropriate (cover-art, mood graphics, etc.) Don’t overshadow content Don’t use ugly graphics
  • 45. Designing an Application | Visuals Icons and images Use known icons on buttons Don’t use a known icon for something other than intended Use rich graphics when appropriate (cover-art, mood graphics, etc.) Don’t overshadow content Don’t use ugly graphics Have consistent sizing
  • 46. Designing an Application | Visuals Typography Use a readable font size Text should be big and readable for everyone
  • 47. Designing an Application | Visuals Typography Use a readable font size Space up your text
  • 48. Designing an Application | Visuals Typography Use a readable font size Space up your text Use text attributes (e.g. bold and size) to make text more or less prominent
  • 49. Designing an Application | Visuals Typography Use a readable font size Space up your text Use text attributes (e.g. bold and size) to make text more or less prominent Use a small set of fonts (probably one)
  • 50. Designing an Application | Visuals Overlaying text on images Just put it on (bad)
  • 51. Designing an Application | Visuals Overlaying text on images Just put it on (bad) Black/colour/white-wash the whole image to make text readable
  • 52. Designing an Application | Visuals Overlaying text on images Just put it on (bad) Black/colour/white-wash the whole image to make text readable Add translucent background to the text
  • 53. Designing an Application | Visuals Overlaying text on images Just put it on (bad) Black/colour/white-wash the whole image to make text readable Add translucent background to the text Add a translucent gradient (i.e. partial black/white-wash) so your text area is handled
  • 54. Designing an Application | Visuals Overlaying text on images Just put it on (bad) Black/colour/white-wash the whole image to make text readable Add translucent background to the text Add a translucent gradient (i.e. partial black/white-wash) so your text area is handled Use a big font with a shadow and on outline
  • 55. Designing an Application | Visuals Colour Option 1 (easier): keep the interface b&w and use colour to direct focus
  • 56. Designing an Application | Visuals Colour Option 1 (easier): keep the interface b&w and use colour to direct focus Option 2: Choose a palette of 2 different hues and use different shades
  • 57. Designing an Application | Visuals Colour Option 1 (easier): keep the interface b&w and use colour to direct focus Option 2: Choose a palette of 2 different hues and use different shades I almost always tint my greys (and not use black)
  • 58. Designing an Application | Visuals Colour Option 1 (easier): keep the interface b&w and use colour to direct focus Option 2: Choose a palette of 2 different hues and use different shades I almost always tint my greys (and not use black) Find a good palette online
  • 59. Designing an Application | Visuals Colour Option 1 (easier): keep the interface b&w and use colour to direct focus Option 2: Choose a palette of 2 different hues and use different shades I almost always tint my greys (and not use black) Find a good palette online Use HSV rather RGB when choosing colours
  • 60. Designing an Application | Visuals Mimic what works Compare to other applications you/users like better using what we’ve covered
  • 61. Designing an Application | Visuals Mimic what works Compare to other applications you/users like better using what we’ve covered Mimic what’s good there (e.g. do you need more spacing?)
  • 62. Designing an Application | Visuals Mimic what works Compare to other applications you/users like better using what we’ve covered Mimic what’s good there (e.g. do you need more spacing?) It’s usually easier to mimic than to design from scratch
  • 63. Designing an Application | Visuals Mimic what works Compare to other applications you/users like better using what we’ve covered Mimic what’s good there (e.g. do you need more spacing?) It’s usually easier to mimic than to design from scratch Don’t mimic the bad things (i.e. use them as excuse)
  • 64. Designing an Application | Visuals Mimic what works Compare to other applications you/users like better using what we’ve covered Mimic what’s good there (e.g. do you need more spacing?) It’s usually easier to mimic than to design from scratch Don’t mimic the bad things (i.e. use them as excuse) Don’t copy, learn. . .
  • 65. Designing an Application | Usability User experience tips Consistent behaviour (with the platform and within the application)
  • 66. Designing an Application | Usability User experience tips Consistent behaviour (with the platform and within the application) Start instantly and lazy load in the background
  • 67. Designing an Application | Usability User experience tips Consistent behaviour (with the platform and within the application) Start instantly and lazy load in the background Everything should take a small amount of clicks
  • 68. Designing an Application | Usability User experience tips Consistent behaviour (with the platform and within the application) Start instantly and lazy load in the background Everything should take a small amount of clicks Discoverable UI (easy to figure out how to do things)
  • 69. Designing an Application | Usability More user experience tips Make it harder to make mistakes
  • 70. Designing an Application | Usability More user experience tips Make it harder to make mistakes Avoid interruptions
  • 71. Designing an Application | Usability More user experience tips Make it harder to make mistakes Avoid interruptions Sort long lists in a predictable, sensible order
  • 72. Designing an Application | Usability More user experience tips Make it harder to make mistakes Avoid interruptions Sort long lists in a predictable, sensible order If your users do something and expect something to happen, it probably should happen
  • 73. Current Design Landscape | Usability Open-source GUI toolkits Opted for a consistent theme-able system, not individually styled apps
  • 74. Current Design Landscape | Usability Open-source GUI toolkits Opted for a consistent theme-able system, not individually styled apps Usually look very similar (for better or worse)
  • 75. Current Design Landscape | Usability Open-source GUI toolkits Opted for a consistent theme-able system, not individually styled apps Usually look very similar (for better or worse) Mostly similar in their widget offering and can be styled to look similar
  • 76. Current Design Landscape | Usability Material design (Google) Highly talked about cross device design guidelines
  • 77. Current Design Landscape | Usability Material design (Google) Highly talked about cross device design guidelines A fairly good Android adoption rate
  • 78. Current Design Landscape | Usability Material design (Google) Highly talked about cross device design guidelines A fairly good Android adoption rate I personally don’t like animations that slow users down
  • 79. Current Design Landscape | Usability Material design (Google) Highly talked about cross device design guidelines A fairly good Android adoption rate I personally don’t like animations that slow users down Concepts are good, it’s implementations that are not always good
  • 80. Current Design Landscape | Usability Material design (Google) Highly talked about cross device design guidelines A fairly good Android adoption rate I personally don’t like animations that slow users down Concepts are good, it’s implementations that are not always good It doesn’t feel like they care about low-end and power consumption
  • 81. Current Design Landscape | Usability iOS guidelines Old style: horrible skeuomorphism
  • 82. Current Design Landscape | Usability iOS guidelines Old style: horrible skeuomorphism New style: very simple and clean, sometimes confusing
  • 83. Current Design Landscape | Usability iOS guidelines Old style: horrible skeuomorphism New style: very simple and clean, sometimes confusing Flat and easy to theme
  • 84. Current Design Landscape | Usability iOS guidelines Old style: horrible skeuomorphism New style: very simple and clean, sometimes confusing Flat and easy to theme Good general guidelines
  • 85. Current Design Landscape | Usability iOS guidelines Old style: horrible skeuomorphism New style: very simple and clean, sometimes confusing Flat and easy to theme Good general guidelines Usually not very discoverable
  • 86. Current Design Landscape | Usability EFL Proportional layout (hard to create non-scalable layouts)
  • 87. Current Design Landscape | Usability EFL Proportional layout (hard to create non-scalable layouts) We make it harder to not use the system theme
  • 88. Current Design Landscape | Usability EFL Proportional layout (hard to create non-scalable layouts) We make it harder to not use the system theme We are mostly flat, use 3d when helps usability (similar to Material)
  • 89. Toolkit Specific | Usability Know your toolkit Trying to pixel match a design across toolkits is stupid
  • 90. Toolkit Specific | Usability Know your toolkit Trying to pixel match a design across toolkits is stupid Know what takes a performance hit on your toolkit
  • 91. Toolkit Specific | Usability Know your toolkit Trying to pixel match a design across toolkits is stupid Know what takes a performance hit on your toolkit Check out the toolkit’s common patterns, those are usually best for performance and users
  • 92. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling
  • 93. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling Start with black and white, don’t colour unless you need it
  • 94. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling Start with black and white, don’t colour unless you need it Saturate your greys and don’t use black
  • 95. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling Start with black and white, don’t colour unless you need it Saturate your greys and don’t use black Add spacing and make your text bigger
  • 96. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling Start with black and white, don’t colour unless you need it Saturate your greys and don’t use black Add spacing and make your text bigger Use common patterns (and take inspiration from the best)
  • 97. Easy Tips (TL;DR) | Usability Easy takeaways It’s like API design, it should be simple, self-documenting, consistent and have a familiar feeling Start with black and white, don’t colour unless you need it Saturate your greys and don’t use black Add spacing and make your text bigger Use common patterns (and take inspiration from the best) Pay the design some thought (from the start)
  • 98. Example of a Poor Design | Usability Less obvious example The hell that is going to the cinema in London. . .
  • 100. Resources Attributions | Usability Page 11, flight-deck.jpg Page 15, twitter-sketch.jpg Page 23, purposefully-simple.png Page ??, skeuomorph.jpg Page ??, self-documenting.png Page ??, layout-baseline-align.png Page ??, layout-spacing-alternatives.png Page 55, direct-attention.png
  • 101. Resources Attributions | Usability Page ??, imagery-mood.png Page ??, bad-blurry.png Page ??, multiple-fonts.png Page 50, text-overlay-bad.jpg Page ??, two-colours.png Page ??, palette.png Page 69, repo-delete-confirmation.png Page ??, interrupt-programmer.jpg Page 76, material.png