SlideShare a Scribd company logo
1 of 80
Download to read offline
HTML5
DevFest 2013
Caesar Mukama
Work as
Front End Designer
for MyZiki Ltd.
Contact me at
mcaesar88@gmail.com
On the menu
● Why HTML5 is important.
● Structure
● Form Input Types and Tags
● 3 New Tags
● Features
● Error Handling
● Summary
What is HTML5?
HTML5 = XHTML + NEW MARKUP + JS APIS
Why is HTML5 important?
New Industry Standard
Starting 2014
Reduced Development
Time
Preloaded with some
CSS3 Bling
Lots of new
Features
Mobile
Friendly
HTML5 XHTML
HTML5 Structure
XHTML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="
utf-8"/>
</head>
<body>
...
</body>
</html>
… minus XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="
utf-8"/>
</head>
<body>
...
</body>
</html>
... minus DOCTYPE attributes
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="
utf-8"/>
</head>
<body>
...
</body>
</html>
… plus short meta content
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="
utf-8"/>
</head>
<body>
...
</body>
</html>
… minus useless definitions
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css"/>
</head>
<body>
...
</body>
</html>
= HTML5
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Page Title</title>
<link rel="stylesheet" href="style.css"/>
</head>
<body>
...
</body>
</html>
That’s why we need HTML5.
28 Tags, 13 Form Input Types
New Tags
article, aside, audio, canvas,
command, datalist, details, embed,
figcaption, figure, footer,
header, hgroup, keygen, mark,
meter, nav, output, progress, rp,
rt, ruby, section, source,
summary, time, video, wbr
New Input Types
color, date, datetime,
datetime-local, email,
month, number, range,
search, tel, time,
url, week
Where did they come from?
Source: https://developers.google.com/webmasters/state-of-the-web/2005/classes
Top 20 Class Names
<div class=”header”>
<div class=”header”>
<div class=”section”>
<div class=”article”>
<div class=”footer”>
<div class=”footer”>
<div class=”nav”>
<div
class=”aside”>
<header>
<header>
<section>
<article>
<footer>
<footer>
<nav>
<aside>
28 Tags, 13 Form Input Types
New Tags
article, aside, audio, canvas,
command, datalist, details, embed,
figcaption, figure, footer,
header, hgroup, keygen, mark,
meter, nav, output, progress, rp,
rt, ruby, section, source,
summary, time, video, wbr
New Input Types
color, date, datetime,
datetime-local, email,
month, number, range,
search, tel, time,
url, week
28 Tags, 13 Form Input Types
New Tags
article, aside, audio, canvas,
command, datalist, details, embed,
figcaption, figure, footer,
header, hgroup, keygen, mark,
meter, nav, output, progress, rp,
rt, ruby, section, source,
summary, time, video, wbr
New Input Types
color, date, datetime,
datetime-local, email,
month, number, range,
search, tel, time,
url, week
<input id="event” placeholder="DevFest Makerere">
<input id=”firstName” required>
<input id=”lastName” autofocus pattern=[a-zA-Z]>
<input id="event” placeholder="DevFest Makerere">
<input id=”firstName” required>
<input id=”lastName” autofocus pattern=[a-zA-Z]>
<input type="color" name="favcolor">
<input type="date" name="birthday">
<input type="datetime" name="bdaytime">
<input type="number" name="quantity" min="1" max="5">
<input type="range" name="points" min="1" max="10">
<input id="event” placeholder="DevFest Makerere">
<input id=”firstName” required>
<input id=”lastName” autofocus pattern=[a-zA-Z]>
<input type="color" name="favcolor">
<input type="date" name="birthday">
<input type="datetime" name="bdaytime">
<input type="number" name="quantity" min="1" max="5">
<input type="range" name="points" min="1" max="10">
… much more.
28 Tags, 13 Form Input Types
New Tags
article, aside, audio, canvas,
command, datalist, details, embed,
figcaption, figure, footer,
header, hgroup, keygen, mark,
meter, nav, output, progress, rp,
rt, ruby, section, source,
summary, time, video, wbr
New Input Types
color, date, datetime,
datetime-local, email,
month, number, range,
search, tel, time,
url, week
28 Tags, 13 Form Input Types
New Tags
article, aside, audio, canvas,
command, datalist, details, embed,
figcaption, figure, footer,
header, hgroup, keygen, mark,
meter, nav, output, progress, rp,
rt, ruby, section, source,
summary, time, video, wbr
New Input Types
color, date, datetime,
datetime-local, email,
month, number, range,
search, tel, time,
url, week
Why do we need a video and an audio element?
Thousands of audio and video services
was meant for foreign objects
<object> … </object>
was meant for foreign objects
<object> … </object>
but video and audio are NOT foreign
plugins are foreign objects
<video width="320" height="240" controls src="movie.mp4" type="video/mp4" />
Syntax ?
<video width="320" height="240" controls src="movie.mp4" type="video/mp4" />
Syntax ?
<video width="320" height="240" controls src="movie.mp4" type="video/mp4" />
Syntax ?
Correct Syntax
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<source src="movie.webm" type="video/webm">
<object data="movie.mp4" width="320" height="240">
<embed src="movie.swf" width="320" height="240">
</object>
</video>
Confused?
Confused?
All browser should have at least 2 new
Codes by default:
HTML5 Specifications said...
All browser should have at least 2 new
Codes by default:
● Ogg Vorbis for audio
● Ogg Theora for video
HTML5 Specifications said...
Google was onboard,
Everyone followed
Google was onboard,
Everyone followed
BUT
Apple and Nokia Said No.
MPEG LA
.mp3, .mp4, .m4a, .mpg ...
MPEG LA
● MPEG better quality
● Already most widely used
● Xiph.com’s BDS license not open source.
Their Suggested alternative
● H.264/MPEG most relevant video encoding
● MP3, AAC best audio compression and
quality.
Their argument
Audio & video specification is incomplete
What to do ...for now?
● Convert videos to multiple formats
● Use multiple sources
● Then control with js
FOR NOW!
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<source src="movie.webm" type="video/webm">
<object data="movie.mp4" width="320" height="240">
<embed src="movie.swf" width="320" height="240">
</object>
</video>
Canvas
Just like MS Paint...
… in your browser.
Paint with javascript instead of a brush
Paint with javascript instead of a brush
<!DOCTYPE html>
<html>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
ctx.fill();
</script>
<body>
<canvas id="myCanvas" width="200" height="100"></canvas>
</body>
</html>
Paint with javascript instead of a brush
<!DOCTYPE html>
<html>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
ctx.fill();
</script>
<body>
<canvas id="myCanvas" width="200" height="100"></canvas>
</body>
</html>
What can I do with Canvas?
Besides .
Other 2D Drawings
Rende 3D (via Web GL)
Error Handling
( in brief )
“Tag Soup”
● 90% of pages on the web are malformed.
● In XHTML, such pages break
“Tag Soup”
● 90% of pages on the web are malformed.
● In XHTML, such pages break
● Tag Soup means HTML5 runs malformed
pages on purpose then corrects them.
“Tag Soup”
Modernizr.js
Modernizr.js
● a JavaScript library
● detects HTML5 and CSS3 features
● in the user’s browser.
Modernizr.js
Plain Javascript
function getSupportedTransform() {
var prefixes = 'transform
WebkitTransform MozTransform OTransform
msTransform'.split(' ');
for(var i = 0; i < prefixes.length; i++)
{
if(document.createElement('div').
style[prefixes[i]] !== undefined) {
return prefixes[i];
}
}
return false;
}
if ( getSupportedTransform() ) {
// Browser supports CSS3 Transforms
}
Modernizr.js
Plain Javascript
function getSupportedTransform() {
var prefixes = 'transform
WebkitTransform MozTransform OTransform
msTransform'.split(' ');
for(var i = 0; i < prefixes.length; i++)
{
if(document.createElement('div').
style[prefixes[i]] !== undefined) {
return prefixes[i];
}
}
return false;
}
if ( getSupportedTransform() ) {
// Browser supports CSS3 Transforms
}
With Modernizer
if ( Modernizer. csstransforms ) {
// Browser supports CSS3 Transforms
}
HTML5 is w i d e r
Play Time
Demo
slides.html5rocks.com
slides.html5rocks.com
diveintohtml5.com
html5boilerplate.com
w3.org
Bookmarks
Caesar Mukama
Contact me at
mcaesar88@gmail.com
Questions?

More Related Content

What's hot

Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Nicholas Zakas
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?Remy Sharp
 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationTodd Anglin
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009Ralph Whitbeck
 
Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging Threats
 
HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - IntroductionDavy De Pauw
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
Html5 shubelal
Html5 shubelalHtml5 shubelal
Html5 shubelalShub
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Webphilogb
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs SilverlightMatt Casto
 
HTML5 Introduction
HTML5 IntroductionHTML5 Introduction
HTML5 Introductiondynamis
 
2022 HTML5: The future is now
2022 HTML5: The future is now2022 HTML5: The future is now
2022 HTML5: The future is nowGonzalo Cordero
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 

What's hot (20)

Html5 Overview
Html5 OverviewHtml5 Overview
Html5 Overview
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 
Html5
Html5Html5
Html5
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input Validation
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009
 
Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015
 
HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - Introduction
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Html5 shubelal
Html5 shubelalHtml5 shubelal
Html5 shubelal
 
GWT
GWTGWT
GWT
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
HTML5 JS APIs
HTML5 JS APIsHTML5 JS APIs
HTML5 JS APIs
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
 
HTML 5 & CSS 3
HTML 5 & CSS 3HTML 5 & CSS 3
HTML 5 & CSS 3
 
HTML5 Introduction
HTML5 IntroductionHTML5 Introduction
HTML5 Introduction
 
2022 HTML5: The future is now
2022 HTML5: The future is now2022 HTML5: The future is now
2022 HTML5: The future is now
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 

Viewers also liked

Html5 presentation slides
Html5 presentation slidesHtml5 presentation slides
Html5 presentation slideswebwizart
 
Presentation html5 css3 by thibaut
Presentation html5 css3 by thibautPresentation html5 css3 by thibaut
Presentation html5 css3 by thibautThibaut Baillet
 
HTML5 presentations on SlideShare
HTML5 presentations on SlideShareHTML5 presentations on SlideShare
HTML5 presentations on SlideShareNikhil Chandna
 
HTML5, just another presentation :)
HTML5, just another presentation :)HTML5, just another presentation :)
HTML5, just another presentation :)François Massart
 

Viewers also liked (7)

Html5 presentation slides
Html5 presentation slidesHtml5 presentation slides
Html5 presentation slides
 
Presentation html5 css3 by thibaut
Presentation html5 css3 by thibautPresentation html5 css3 by thibaut
Presentation html5 css3 by thibaut
 
HTML5 presentations on SlideShare
HTML5 presentations on SlideShareHTML5 presentations on SlideShare
HTML5 presentations on SlideShare
 
HTML5, just another presentation :)
HTML5, just another presentation :)HTML5, just another presentation :)
HTML5, just another presentation :)
 
html5.ppt
html5.ppthtml5.ppt
html5.ppt
 
Html Ppt
Html PptHtml Ppt
Html Ppt
 
5g ppt new
5g ppt new5g ppt new
5g ppt new
 

Similar to DevFest Makerere html5 presentation by caesar mukama

Ie9 dev overview (300) beta
Ie9 dev overview (300) betaIe9 dev overview (300) beta
Ie9 dev overview (300) betaKirk Yamamoto
 
HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012steveheffernan
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki HIRAI
 
HTML5: Markup Evolved
HTML5: Markup EvolvedHTML5: Markup Evolved
HTML5: Markup EvolvedBilly Hylton
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
HTML5 Video for WordPress
HTML5 Video for WordPressHTML5 Video for WordPress
HTML5 Video for WordPresssteveheffernan
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & FeaturesDave Ross
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webPablo Garaizar
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Videosteveheffernan
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 RefresherIvano Malavolta
 
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5Cengage Learning
 

Similar to DevFest Makerere html5 presentation by caesar mukama (20)

Ie9 dev overview (300) beta
Ie9 dev overview (300) betaIe9 dev overview (300) beta
Ie9 dev overview (300) beta
 
HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012HTML5 Video Player - HTML5 Dev Conf 2012
HTML5 Video Player - HTML5 Dev Conf 2012
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
 
HTML5: Markup Evolved
HTML5: Markup EvolvedHTML5: Markup Evolved
HTML5: Markup Evolved
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Introduccion a HTML5
Introduccion a HTML5Introduccion a HTML5
Introduccion a HTML5
 
html5
html5html5
html5
 
Html 5
Html 5Html 5
Html 5
 
HTML5 Video for WordPress
HTML5 Video for WordPressHTML5 Video for WordPress
HTML5 Video for WordPress
 
Html5 - Novas Tags na Prática!
Html5 - Novas Tags na Prática!Html5 - Novas Tags na Prática!
Html5 - Novas Tags na Prática!
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & Features
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
 
HTML5, the new buzzword
HTML5, the new buzzwordHTML5, the new buzzword
HTML5, the new buzzword
 
HTML5 - A Whirlwind tour
HTML5 - A Whirlwind tourHTML5 - A Whirlwind tour
HTML5 - A Whirlwind tour
 
Upgrade to HTML5 Video
Upgrade to HTML5 VideoUpgrade to HTML5 Video
Upgrade to HTML5 Video
 
[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher[2015/2016] HTML5 and CSS3 Refresher
[2015/2016] HTML5 and CSS3 Refresher
 
Looking into HTML5 + CSS3
Looking into HTML5 + CSS3Looking into HTML5 + CSS3
Looking into HTML5 + CSS3
 
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5
Course Tech 2013, Sasha Vodnik, A Crash Course in HTML5
 

Recently uploaded

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Recently uploaded (20)

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

DevFest Makerere html5 presentation by caesar mukama

  • 2. Caesar Mukama Work as Front End Designer for MyZiki Ltd. Contact me at mcaesar88@gmail.com
  • 3.
  • 4. On the menu ● Why HTML5 is important. ● Structure ● Form Input Types and Tags ● 3 New Tags ● Features ● Error Handling ● Summary
  • 6. HTML5 = XHTML + NEW MARKUP + JS APIS
  • 7. Why is HTML5 important?
  • 15. XHTML <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset=" utf-8"/> </head> <body> ... </body> </html>
  • 16. … minus XML declaration <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset=" utf-8"/> </head> <body> ... </body> </html>
  • 17. ... minus DOCTYPE attributes <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset=" utf-8"/> </head> <body> ... </body> </html>
  • 18. … plus short meta content <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset=" utf-8"/> </head> <body> ... </body> </html>
  • 19. … minus useless definitions <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css"/> </head> <body> ... </body> </html>
  • 20. = HTML5 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Page Title</title> <link rel="stylesheet" href="style.css"/> </head> <body> ... </body> </html>
  • 21. That’s why we need HTML5.
  • 22.
  • 23. 28 Tags, 13 Form Input Types New Tags article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr New Input Types color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week
  • 24. Where did they come from?
  • 26. <div class=”header”> <div class=”header”> <div class=”section”> <div class=”article”> <div class=”footer”> <div class=”footer”> <div class=”nav”> <div class=”aside”>
  • 28. 28 Tags, 13 Form Input Types New Tags article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr New Input Types color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week
  • 29. 28 Tags, 13 Form Input Types New Tags article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr New Input Types color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week
  • 30. <input id="event” placeholder="DevFest Makerere"> <input id=”firstName” required> <input id=”lastName” autofocus pattern=[a-zA-Z]>
  • 31. <input id="event” placeholder="DevFest Makerere"> <input id=”firstName” required> <input id=”lastName” autofocus pattern=[a-zA-Z]> <input type="color" name="favcolor"> <input type="date" name="birthday"> <input type="datetime" name="bdaytime"> <input type="number" name="quantity" min="1" max="5"> <input type="range" name="points" min="1" max="10">
  • 32. <input id="event” placeholder="DevFest Makerere"> <input id=”firstName” required> <input id=”lastName” autofocus pattern=[a-zA-Z]> <input type="color" name="favcolor"> <input type="date" name="birthday"> <input type="datetime" name="bdaytime"> <input type="number" name="quantity" min="1" max="5"> <input type="range" name="points" min="1" max="10"> … much more.
  • 33. 28 Tags, 13 Form Input Types New Tags article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr New Input Types color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week
  • 34. 28 Tags, 13 Form Input Types New Tags article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, summary, time, video, wbr New Input Types color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week
  • 35.
  • 36. Why do we need a video and an audio element?
  • 37. Thousands of audio and video services
  • 38. was meant for foreign objects <object> … </object>
  • 39. was meant for foreign objects <object> … </object> but video and audio are NOT foreign
  • 40.
  • 41.
  • 43. <video width="320" height="240" controls src="movie.mp4" type="video/mp4" /> Syntax ?
  • 44. <video width="320" height="240" controls src="movie.mp4" type="video/mp4" /> Syntax ?
  • 45. <video width="320" height="240" controls src="movie.mp4" type="video/mp4" /> Syntax ?
  • 46. Correct Syntax <video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> <source src="movie.webm" type="video/webm"> <object data="movie.mp4" width="320" height="240"> <embed src="movie.swf" width="320" height="240"> </object> </video>
  • 49. All browser should have at least 2 new Codes by default: HTML5 Specifications said...
  • 50. All browser should have at least 2 new Codes by default: ● Ogg Vorbis for audio ● Ogg Theora for video HTML5 Specifications said...
  • 52. Google was onboard, Everyone followed BUT Apple and Nokia Said No.
  • 54. .mp3, .mp4, .m4a, .mpg ... MPEG LA
  • 55. ● MPEG better quality ● Already most widely used ● Xiph.com’s BDS license not open source. Their Suggested alternative ● H.264/MPEG most relevant video encoding ● MP3, AAC best audio compression and quality. Their argument
  • 56. Audio & video specification is incomplete
  • 57. What to do ...for now? ● Convert videos to multiple formats ● Use multiple sources ● Then control with js
  • 58. FOR NOW! <video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> <source src="movie.webm" type="video/webm"> <object data="movie.mp4" width="320" height="240"> <embed src="movie.swf" width="320" height="240"> </object> </video>
  • 60. Just like MS Paint...
  • 61. … in your browser.
  • 62. Paint with javascript instead of a brush
  • 63. Paint with javascript instead of a brush <!DOCTYPE html> <html> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.stroke(); ctx.fill(); </script> <body> <canvas id="myCanvas" width="200" height="100"></canvas> </body> </html>
  • 64. Paint with javascript instead of a brush <!DOCTYPE html> <html> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.stroke(); ctx.fill(); </script> <body> <canvas id="myCanvas" width="200" height="100"></canvas> </body> </html>
  • 65. What can I do with Canvas? Besides .
  • 67. Rende 3D (via Web GL)
  • 70. ● 90% of pages on the web are malformed. ● In XHTML, such pages break “Tag Soup”
  • 71. ● 90% of pages on the web are malformed. ● In XHTML, such pages break ● Tag Soup means HTML5 runs malformed pages on purpose then corrects them. “Tag Soup”
  • 73. Modernizr.js ● a JavaScript library ● detects HTML5 and CSS3 features ● in the user’s browser.
  • 74. Modernizr.js Plain Javascript function getSupportedTransform() { var prefixes = 'transform WebkitTransform MozTransform OTransform msTransform'.split(' '); for(var i = 0; i < prefixes.length; i++) { if(document.createElement('div'). style[prefixes[i]] !== undefined) { return prefixes[i]; } } return false; } if ( getSupportedTransform() ) { // Browser supports CSS3 Transforms }
  • 75. Modernizr.js Plain Javascript function getSupportedTransform() { var prefixes = 'transform WebkitTransform MozTransform OTransform msTransform'.split(' '); for(var i = 0; i < prefixes.length; i++) { if(document.createElement('div'). style[prefixes[i]] !== undefined) { return prefixes[i]; } } return false; } if ( getSupportedTransform() ) { // Browser supports CSS3 Transforms } With Modernizer if ( Modernizer. csstransforms ) { // Browser supports CSS3 Transforms }
  • 76. HTML5 is w i d e r
  • 80. Caesar Mukama Contact me at mcaesar88@gmail.com Questions?