SlideShare ist ein Scribd-Unternehmen logo
1 von 115
Client Side Development
Introductory Workshop




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Introduction
Hi, Iʼm Wilfred




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Introduction
I do HTML, CSS and some Javascript




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Application
html, css and javascript.




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
itʼs easy.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
NOT
if you do it right.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Structure


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Doctypes


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Strict//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtdquot;>




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
quirksmode


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
boxmodel


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
itʼs more than tables.
   much more




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables are evil?


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
nope




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables are beautiful


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Caption


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Thead


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tfoot


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tbody


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tr


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
td


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
th


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
colspan


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
colgroup


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
rowspan


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
rowgroup


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
scope


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
Itʼs more than divʼs and spanʼs




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
div


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
span


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
p


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
h1 > h6


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
em


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
strong


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
abbr


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
q


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
blockquote


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
id


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
class


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
validator.w3.org


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
            Itʼs about structure, NOT presentation.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<div class=quot;spacer-wquot;><!-- this empty
spacer is used to make a space between
   vertical holding blocks --></div>




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Do more with less
focus on the information, not the presentation.
that is what css is for.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise
nu.nl
ing.nl
postbank.nl




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
break


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
If you thought html was bad, I give you...




 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
selector {

 property : value;
}


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 2.1


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://www.456bereastreet.com/archive/200509/css_21_selectors_part_1/




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
float : left;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Explorer 6 Duplicate Characters Bug




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The IE5/6 Doubled Float-Margin Bug




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://positioniseverything.net/explorer.html




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Cascading
http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
padding: 2px
padding: 2px 2px 2px 2px;




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Shorthand


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 3


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
power


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Unlimited power




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
e[att^=”val”]


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
E:empty


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
E~F


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 3 ?


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
dojo


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
jQuery


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise



 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://wnas.nl/fronteers/


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise



 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
break


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
                                               part 1




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript === evil
                          Do not rely on it.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Donʼt rely on it
HTML is a rely accessible platform. Use JavaScript to
enhance it.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Progressive Enhancement
                                    !==

       Graceful degradation.

Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HIJAX vs AJAX
Plan ajax from the beginning and build it in the end.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
ns.nl
with javascript




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
ns.nl
without javascript




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Politie
with javascript




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Politie
without javascript




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript !== java
                              Really not.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
Is not a toy language.




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The World's Most Misunderstood
      Programming Language
‘Douglas Crockford’




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Break



Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
                                               part 2




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Closures
one of javascript most devious concepts




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
where a function
remembers what
happens around it
‘Stuart Langridge’




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://tinyurl.com/jsclosures




     Wilfred Nas - Client Side Development
     wnas.nl | twitter.com/wnas | wilfred@wnas.nl
If all you have is a
everything looks like a nail




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Patterns
Smatterns




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Read a lot
this day is too short for patterns...




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
XML vs JSON
Use the best possible solution




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Not the available one
XML vs JSON




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Memory
And the garbage collector




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
So what changed ?
Ajax and Rich Internet Applications.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Ajax
Asynchronous
Javascript
and
XML



      Wilfred Nas - Client Side Development
      wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The solution
think of history




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Ajax
origins




          Wilfred Nas - Client Side Development
          wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Clean up
That is what Ajax stood for anyway...




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Pick up after yourself
Leave a clean dom after you...




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Totaal voetbal
Let the individual elements of
your program work for you.




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Java
To handle the logic.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JSP / XHTML
To display the structure of your programs.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS
To present it in a proper manner.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
To enhance the user experience.




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise
enhance the page you made...




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Extra’s


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Event delegation


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Just in time initialization


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Code as prose.


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Douglas
The good parts




       Wilfred Nas - Client Side Development
       wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
The Definitive Guide (5th)




       Wilfred Nas - Client Side Development
       wnas.nl | twitter.com/wnas | wilfred@wnas.nl

Weitere ähnliche Inhalte

Mehr von Wilfred Nas (7)

Progressive enhancement-fronteers-workshop
Progressive enhancement-fronteers-workshopProgressive enhancement-fronteers-workshop
Progressive enhancement-fronteers-workshop
 
CSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipeCSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipe
 
What has responsive web design done for us, so far.
What has responsive web design done for us, so far.What has responsive web design done for us, so far.
What has responsive web design done for us, so far.
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
Bestpractices nl
Bestpractices nlBestpractices nl
Bestpractices nl
 
Html5 nl
Html5 nlHtml5 nl
Html5 nl
 
Fronteers iprofs
Fronteers iprofsFronteers iprofs
Fronteers iprofs
 

Kürzlich hochgeladen

1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 

Kürzlich hochgeladen (20)

Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptx
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 

Frontend Workshop

Hinweis der Redaktion

  1. I have been working on the web for the past 14 years. I started out as a designer bugging developers. In the past years I have come full circle, becoming the developer that is bugging designers.
  2. There are three sides to a website... mvc...
  3. we will start with the basics, HTML. boring isn&#x2019;t it. after all html is easy...
  4. There are a lot of things to think about, like;
  5. html is for structure, a way to show the content...
  6. Which doctype do you use?
  7. Strict is the way to go, if you can
  8. sketch the difference between ie and w3c
  9. and still this is the way most websites were build...
  10. especially if your building data intensive applications...
  11. make sure you specify this one BEFORE the tbody
  12. most people, turning away from tables, will use div&#x2019;s in the same way...
  13. to identify, must be unique
  14. not just for css. to classify
  15. most developers get a fo and a graphic design. they will use the design to build and the fo to tweak. they should do the reverse
  16. bad
  17. don&#x2019;t add extra div&#x2019;s to create that border the design calls for. You allready have enough elements to play with...
  18. should be around 10.30
  19. start 11.00
  20. supported in most browsers
  21. support is not as wide spread
  22. Match any E elements, whose att atribute value begins with &#x2018;val&#x2019;
  23. Matches any E element that has no children (including text nodes)
  24. matches any F element that is preceded by an E element...
  25. should be 11.45
  26. style the page you just made with proper html...
  27. start 12.00
  28. around 12.30
  29. start 13.00
  30. === is exactly equal to (value and type)
  31. == is equal to
  32. build a good app and make it better.
  33. don&#x2019;t build a good app and let it slip away...
  34. build as if you have no javascript en HIJACK the form actions with javascript
  35. please don&#x2019;t try to make it into it...
  36. Really it is not.
  37. 14.00
  38. 14.30 And I was asked to talk about things like closures...
  39. power, confusion
  40. ie is the problem
  41. further than that, I will not go. as stuart talk opens my eyes but not enough. there is more in this than I know...
  42. Don&#x2019;t put all of your trust in patterns...
  43. used to be no problem, as we left the page after a while
  44. We don&#x2019;t leave the page anymore, instead we keep producing more and more dom objects...
  45. he forgot css and left out json or html as a data layer...
  46. Where does the name ajax stood for in the beginning...
  47. sorry for that, a mistake...
  48. The cleaner was a household name for so long, that we should use it...