Why Is CSS So Weird?

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ก.ย. 2024

ความคิดเห็น • 131

  • @firstprincipleslearning
    @firstprincipleslearning 5 ปีที่แล้ว +129

    I love this ! Explaining the principles behind browser decisions and helping us to understand the why is invaluable. When you said `CSS is designed not to loose content and not cause harm`, it explained the default behavior of overflow so well, I will never ever forget it. Teaching the why is so powerful, it just makes sense. More content like this please. Thank you !

    • @lohar5055
      @lohar5055 3 ปีที่แล้ว +1

      Designed not to harm anyone except developers. It could at least use warnings in console.

  • @HTeuMeuLeu
    @HTeuMeuLeu 5 ปีที่แล้ว +37

    This video is so so great. It perfectly nails down things I've been trying to explain to designers and (non front-end) developers for more than a decade. The InDesign comparison, the print press metaphors, everything is perfect. Thank you so much Miriam and the Mozilla team for this.

    • @MiriamCodes
      @MiriamCodes 5 ปีที่แล้ว +3

      Thank you for the translation!

  • @robmelb.2667
    @robmelb.2667 3 ปีที่แล้ว +4

    I'm paying thousands of my precious dollars and a substantial amount of time to those smartass tutors in my dev boot camp, yet they are only capable of using all these fancy technologies themselves rather than teaching me in the least amount of time and effort. In the meantime, SHE does it so well by explaining and presenting all those history and knowledge in such an interesting and easy-understanding way, I really wish my tuition all goes to her instead of my useless tutors.

  • @KristopherGates
    @KristopherGates ปีที่แล้ว

    I've been a non-contributing web consumer for longer than I can remember, and have recently decided to revisit my fundamentals.
    This is such a fantastic overview and it's of a quality that it doubles as an introduction. Maybe that's graceful degradation?
    Absolutely top tier presentation. Thank you.

  • @tpe54
    @tpe54 ปีที่แล้ว

    I was whining about changing my site from tables to learning CSS.
    You made it clear why and I've stopped whining. Thanks!

  • @PeterStJ
    @PeterStJ 5 ปีที่แล้ว +5

    Thank you for this awesome presentation, even though I already know all this, it was really nice seeing it summed up in such a brilliant way and explained on a one go. Thank you!

  • @besknighter
    @besknighter 3 ปีที่แล้ว +1

    I used to hate CSS. I never got quite what I was going for and it always broke apart with the smallest of the resize. After watching this and actually understanding the reason behind each decision, it made so much sense that I decided to give it another go. This time, I'm going to learn it the right way and with the right mind set.

    • @Ratchet2022
      @Ratchet2022 ปีที่แล้ว

      Look into grid and flexbox.

  • @sheriffderek
    @sheriffderek 4 ปีที่แล้ว

    Triumph! It's all the things - but concise - and better. Great job.

  • @pointer333
    @pointer333 ปีที่แล้ว

    Excellent presentation! Thank you!

  • @sultan-workshop
    @sultan-workshop 4 ปีที่แล้ว

    Hello World

  • @ahmeraftabpatel5933
    @ahmeraftabpatel5933 3 ปีที่แล้ว +3

    I am confused of her personality .

  • @Maxii42
    @Maxii42 5 ปีที่แล้ว +58

    "We loose control. And that's a feature"
    Fantastic explanation! Great choice of words. Thank you

  • @markthomasnoonan
    @markthomasnoonan 5 ปีที่แล้ว +29

    This is so great. The analogy with script/stage directions makes perfect sense - directors will do what they think is best to present the work for their audience with the actors and circumstances they work with. Browsers will do their best to display the content on the device and viewport they have for the audience of that content.

  • @michaelgoddard9906
    @michaelgoddard9906 3 ปีที่แล้ว +15

    Your explanation is superbly eloquent. The analogy to plays, script writing and stage directions is particularly insightful.

  • @FJ.Y
    @FJ.Y 3 ปีที่แล้ว +1

    Here from Kevin Powell's channel, he thinks you're the queen of CSS!!!

  • @tayyabkhalid7476
    @tayyabkhalid7476 4 ปีที่แล้ว +8

    this-video {
    explanation: best ever;
    }

  • @laurentgauthier8742
    @laurentgauthier8742 2 ปีที่แล้ว +7

    Wow.... My mind is blown away by this presentation. I just love the historical and technical overview and how it gracefully leads into understanding the foundations.... Genuinely inspiring. Thanks!

  • @ChristopherJamesCalo
    @ChristopherJamesCalo 5 ปีที่แล้ว +17

    Exquisitely articulated.

  • @soupwaylee
    @soupwaylee 3 ปีที่แล้ว +9

    0:56 "But CSS is for Documents"
    2:42 Everything is on the Web. What Now? Is CSS also for the Modern Web? Why is CSS So... Weird?
    4:57 Medium with a Mission
    7:39 !Cascading Style Sheets
    8:25 Designers Suggest
    8:59 Meaningful Relationships
    9:12 Intentionally Resilient
    9:49 Intentionally Contextual
    10:34 CSS is a Presentation Layer
    12:36 We Script, Browsers Perform
    13:17 CSS is Different by Design
    13:35 "Control... is a limitation of the printed page"
    14:22 The Web Adapts to Context
    14:40 CSS is for Adapting

  • @nahueljo
    @nahueljo 4 ปีที่แล้ว +6

    wow, the best explanation I've seen about what it really means to design for the Web in CSS. I'm sharing this will all my developer friends! haha

  • @nathanvandy4249
    @nathanvandy4249 3 ปีที่แล้ว +2

    This was amazing, I was looking at this from the perspective of the flexibility law. Laws are often written to be able to regulate interactions between persons, but it understands that in some cases there will be edge cases that can't be controlled through existing laws. That's where have standards and principles to compensate and provide human interactions with the necessary flexibility we need co-exist in such an unpredictable world. This makes law backward compatible. Especially in judge-made common law jursidictions.
    CSS also is written to be able to display information to different devices, but it understands that there will be edge cases that can't always be forseen in a device's ability to read the language. Therefore, it creates a backward compatibility by allowing client browsers to implement what it can read ignore what it can't.
    As explained in the video: CSS is designed not to loose content and not to cause harm. Law is/should be designed to not loose it's purpose and to not cause harm

  • @ydoomenaud
    @ydoomenaud 5 ปีที่แล้ว +9

    I've been doing web dev since 1999 and this video is missing some important points and misrepresenting a few of the others. The W3C recognized early on that HTML attributes were ill-suited to manage presentation, so an external standard would be necessary. 9 separate specs were offered and the unpleasant truth is that CSS was merely the least worst of the bunch, chosen because everyone was familiar with Microsoft Word's stylesheet character/paragraph/section formatting/inheritance model so they knew it was already feasible to implement.
    The _real_ weirdness of CSS is that of the 3 web technologies, it's the only one developers can't extend and it came with a sizeable number of holes in what any graphic designer would expect from it. Tortured combinations of selectors were necessary to achieve some basic things like vertical centering, drop caps, side by side text columns, etc. and variables critical to theming systems were unavailable. While it's matured for these examples and others, it's still limited to what the spec allows and its strict unidirectionality hobbles design logic: for example, the very table-based formatting that CSS was intended to replace wasn't possible because table formatting cascades in both directions whereas CSS is only top-down: instead of rethinking this, every 𝚝𝚊𝚋𝚕𝚎 element was recreated as an equivalent property value for 𝚍𝚒𝚜𝚙𝚕𝚊𝚢.
    A few important corrections: CSS doesn't "suggest" anything; where the browser doesn't obey the selector is only where doing so contradicts a higher order rendering directive. CSS is *completely* able to "lose" content: 𝚍𝚒𝚜𝚙𝚕𝚊𝚢:𝚗𝚘𝚗𝚎; doesn't reposition or hide content, it literally removes it from the document having implications for assistive technology. And it has enough overflow/clipping/positioning properties to visually hide content.

    • @peppigue
      @peppigue 4 ปีที่แล้ว +1

      I'm new to the game, but this fits my impression so far. Front End is vastly more complicated than it potentially could be if the standards from the start were created with the intention of facilitating presentation of a mix of multitudes of different content on a rectangular viewport, and not all this iterative patching of a text based paradigm to fit with modern needs.
      (Still really liked the video, though.)

  • @Gverri
    @Gverri 5 ปีที่แล้ว +6

    Really appreciate the time you invested into making this. Would love to see similar content on other standards of the web. Sometimes in the hurry to get something done we forget to learn about the details of what was driving the people who made the decisions.

  • @katherineelizabeth2232
    @katherineelizabeth2232 3 หลายเดือนก่อน

    Love this but I still don't understand how nobody has figured out how to localize programming languages like CSS, HTML, and others.

  • @ScottdeJonge
    @ScottdeJonge 5 ปีที่แล้ว +6

    Super well articulated and interesting lesson on the behaviour and history CSS. Must watch for anyone looking to understand styling in the browser.

  • @richtourist
    @richtourist 7 หลายเดือนก่อน

    That sounds lovely, but it's not true. HTML and CSS are a disaster; a nice idea when they started, but turned out to be the wrong way to go.
    The dev tries to accommodate the range of possible user agents and contexts, but HTML/CSS make that difficult because they are complex, overlapping and ill-defined, also the browsers add their own complexity to the mix. Devs have actually developed a CSS style sheet for turning off the CSS defaults from all browsers in an attempt to get 'back to zero' so the dev can start from some kind of sanity. That is why there are so many frameworks that try to handle it for you, but they can't wrangle the best, either.
    The suggestion that the user is going to apply their own CSS to get their preferred view never (5nines) happens. The example given of changing the setting on Firefox just results in a mess (on a real web site) with all sorts of selection errors causing 'rough edges'. Users are not writing or applying their own styling. If the dev doesn't handle the context or offer a 'mobile' version, then the browser can't fix the problem, even though it knows the local context, without a dev's help; it might as well be handled by the dev in the first place.
    If people want data for their own purposes they get it from an API not by reinterpreting the original webpage.
    Defaults are a curse from Satan, especially when they cascade, and they are quite capable of hiding your content in default size=0. I recently saw a cursor 'stuck' in a 'buffering' spinner because of a default cascade. It continued to blink as it rotated; hilarious but pointless. Not to mention the insane syntax and the security vulnerabilities that both HTML and CSS allow through their quirks and immense unnecessary complexity (saw a CSS keylogger vulnerability recently).
    HTML and CSS are not a neat separation of concerns; they both affect layout and both can hide content. It's such a mess it isn't even easy to define how they overlap. Was it the CSS or the HTML that enabled that cursor to appear in the spinner; it was probably both. and when I say CSS do I mean the page's or the browsers. It's a mess.
    It would be much better if the browser just told the page about its display context, and the page made all the decisions. And if you want raw data ask an API; HTML is a ridiculous mark-up.
    The web just didn't turn out as people thought it would. WASM offers some hope, but also new threats to security.

  • @edwardgyampo
    @edwardgyampo 2 ปีที่แล้ว +2

    This is one of the most beautiful explanations ever!

  • @hcx1853
    @hcx1853 ปีที่แล้ว

    * Why is CSS so weird? - Miriam Suzanne
    * Device-agnostic design on the web.
    * Web mission statement - open standards, accessibility, internationalization.
    * Client controls display.
    * People, devices, browsers, settings, operating system, defaults.
    * Cascading styles

  • @jerbau
    @jerbau 5 ปีที่แล้ว +5

    A very well made explainer video that every front-end developer should watch. CSS has been actively evolving since it started with a number of tags you can actually memorize. With the advent of devices attached to the web it is not too difficult to see why CSS has been seen as weird or to some degree as insane. CSS is crazy beautiful and I hope it adheres to its original intent and let engineers be reminded what it is whenever they are in doubt.

  • @alebarbaja
    @alebarbaja 5 ปีที่แล้ว +5

    What a beautiful video!
    Its remind me why I fell for the web and the open culture there are exists in there.

  • @melonenlord2723
    @melonenlord2723 10 หลายเดือนก่อน

    How can computer make smart desicions from CSS input? Its like working up a sheme and if something is missing it says no, im doing nothing, you forgot to say width:100%, how could you forget? :D Or if you set position relativ to an element, because you want all the position data relative to the parent element it also says no, because the parent element in not set to relative or absolute. That things i find weird about CSS, you dont only define the CSS of an element in this element, you also define the child elements with it and that is totally weird and confusing.

  • @progtom7585
    @progtom7585 4 ปีที่แล้ว +3

    "either way we have to express our opinion on twitter" 🤣 - state of the world today, everyones a critic.
    A great video, thanks for explaining the origins and decisions CSS makes and the reason its designed the way it is.

  • @RobBrogan
    @RobBrogan 5 ปีที่แล้ว +5

    This was super interesting! Great talk. Loved the history lesson :)

  • @NathanPiazza
    @NathanPiazza 5 ปีที่แล้ว +1

    The problem is that the designers of CSS were naive and extremely ignorant about the kinds of control users do and don't want. People actually want to consume and use things produced by designers exercising a great deal of control - WHEN that control is exercised by people with talent and judgment. Giving users too much control, or the wrong kinds of control, and designers not enough, is actually not a recipe for a better experience than print, but an experience that simply hews to the lowest common denominator. Whether that's the *worst* screen size, or the *worst* attitudes and impulses about how content and user experience should be. If it weren't for print designers pushing back on those (frankly ignorant) technicians who first built HTML and CSS, all links would still be blue and underlined, and all buttons would be grey with black monospaced text, while users would have endless ability to change font sizes and swap out images. In short, the web would look like hot garbage.

  • @3dfxmusic
    @3dfxmusic 3 ปีที่แล้ว +3

    Miriam, this is honestly one of the best CSS videos I've seen in my life. THANK YOU.

  • @alakhdar100
    @alakhdar100 ปีที่แล้ว

    i keep comming back over and over to this video whenever i want to embrasse how beautiful this language i hate is.

  • @drivertoursexperience
    @drivertoursexperience หลายเดือนก่อน

    she talks in a way expressive and liked, i could hear her explain all day long

  • @Yangtaonewage
    @Yangtaonewage ปีที่แล้ว +1

    Rarely comment on youtube, but this is such an amazing intro! Thanks for taking time to explain it!

  • @songwright
    @songwright 4 ปีที่แล้ว +2

    Hello, Miriam Suzanne. I am also a playwright and web developer and this is a well-thought out presentation that answers many questions I had about CSS.

  • @eybietie
    @eybietie หลายเดือนก่อน

    I love CSS. It is not weird. People using twitter are.

  • @Retrofire-47
    @Retrofire-47 2 ปีที่แล้ว

    saying it's a feature is very subjective imo. but great explanation

  • @paulhammond8583
    @paulhammond8583 5 ปีที่แล้ว +3

    Lovely video this. I thought you did a great job at explaining the "why" part of the question and by placing everything into historical context it helps to explain it in a way that makes a lot of sense.

  • @blahdelablah
    @blahdelablah 5 ปีที่แล้ว +1

    The main issue with CSS isn't that content cascades, the main issues are that CSS is bloated and inconsistent. I'd suggest the goal should be a small easily-understandable core language for layout and styling, with options to extend it for the edge cases. Perhaps the answer is to learn the lessons that CSS taught web designers about styling HTML and design a new language for that purpose, one that has cross browser support out of the box. It could be a language that transpiles to CSS at the start, but the goal should be simplicity and flexibility. I'd imagine CSS will eventually become too large to easily maintain, at which point this type of reboot becomes almost inevitable, though perhaps I'll be proven wrong about that.

  • @miamiatz
    @miamiatz 6 หลายเดือนก่อน

    You are blessed with the ability to explain things.

  • @davidpaez_co
    @davidpaez_co 3 ปีที่แล้ว +1

    Amazing explanation! Thank you. It makes you understand more deeply the why. Great job Mozilla!!!

  • @z4ez4r
    @z4ez4r 2 ปีที่แล้ว +1

    Perfect explanation by Miriam. For me, its these little contexts tha keep me going while learning something new. Glad I watched this. 🙂

  • @UteBescht
    @UteBescht 3 ปีที่แล้ว +1

    Thank you for this insight - the idea makes some nasty moments by writing CSS more understood. So CSS is more like focusing on the big picture for me now - working it all out for all kinds of consumer devices. Sure we all know that somehow since it is a "style" language. But these words and explanations really made that clear again. And might save any angry nights the next time when you want to bite your keyboard on spotting a "CSS-bug". Somehow this was a signpost to change the road to CSS-Shangri La - thank you for this 😀

  • @xaxaurtiz4695
    @xaxaurtiz4695 ปีที่แล้ว

    superb ! huge thanks for that explanation :)

  • @jacinyan2348
    @jacinyan2348 2 ปีที่แล้ว

    Ok, in short, we don't have full control of what we write

  • @jewellscott
    @jewellscott 5 ปีที่แล้ว +3

    Yessss, CSS appreciation. Thank you!

  • @DeandreMurray
    @DeandreMurray 2 ปีที่แล้ว +1

    Thank you for this, extremely comprehensive, "message from the sponsor" just clean information to assist those willing in the learning process. This is how the internet was indedned for public use I feel. Once again thank you!

  • @linkow
    @linkow 2 ปีที่แล้ว

    best explanarion ever. thank you!

  • @EliasCole-n6h
    @EliasCole-n6h 9 หลายเดือนก่อน

    Brilliant video, thank you!

  • @TheNora_
    @TheNora_ 2 ปีที่แล้ว +1

    I find your explanation extremely eloquent and understandable!

  • @ukitirokun
    @ukitirokun ปีที่แล้ว

    such an interesting perspective 0.o

  • @fbouet
    @fbouet 3 ปีที่แล้ว +1

    Fantastic video and a great overview of CSS! Love it.

  • @dieshimitigert6758
    @dieshimitigert6758 2 ปีที่แล้ว

    great explanation! thank you!

  • @Thytos
    @Thytos 2 ปีที่แล้ว

    "Control is a limitation of the printed page" Wow. This changed my mind. I knew that developing for the web means giving up control to a certain extent, but I never saw this as an advantage.

  • @BorisSchwarz-f8d
    @BorisSchwarz-f8d 6 หลายเดือนก่อน

    You are fantastic !!

  • @sasamilic720
    @sasamilic720 2 ปีที่แล้ว

    the theatre analogy is great!

  • @germancruz2835
    @germancruz2835 5 ปีที่แล้ว +2

    Gracias por los subtítulos

  • @NickelCityPixels
    @NickelCityPixels 4 ปีที่แล้ว

    This was good but I was expecting some insight about a better way to conceptualize CSS development.

  • @Ratchet2022
    @Ratchet2022 ปีที่แล้ว

    This explanation is very profound. Thank you. Now I understand CSS on a much more intuitive level. It’s a declarative language. It’s like you tell a browser how to display something, though while there is a common W3C spec that browsers use to implement the feature specs differently so that we can trust that what style we declare in one browser other browsers will display the same way, due to the cascading algorithm from browser to developer to client, the “actors” themselves and the browser itself has the final say-so.

  • @jamesgulland
    @jamesgulland 11 หลายเดือนก่อน

    Such a great, informative video - thanks! As someone fairly new into the dev world, so crucial to understand the history and context behind these principles. Biggups

  • @RenaudDenis
    @RenaudDenis ปีที่แล้ว

    Wonderful video

  • @bmehder
    @bmehder ปีที่แล้ว

    This video is going in my favorites along with Rich Harris' Rethinking Reactivity. It's a must watch in my opinion.

  • @TomasHradckyComposer
    @TomasHradckyComposer 3 ปีที่แล้ว

    Words escape me currently so I'll start with my thanks. This is a beautiful work. Wonderfully eloquent. Wonderfully informative.

  • @marco_ciampini
    @marco_ciampini 5 ปีที่แล้ว +1

    Amazing video, so clear and well thought

  • @ehza
    @ehza ปีที่แล้ว

    This is the video I probably have been looking for eons and eons! Thank you MDN!

  • @software_designer
    @software_designer ปีที่แล้ว

    Thank You.

  • @sofiaborovskaia3714
    @sofiaborovskaia3714 3 ปีที่แล้ว

    After watching this video I feel like I have just read an essay or a chapter of a book, I feel... nourished.

  • @DanteMishima
    @DanteMishima 10 หลายเดือนก่อน

    Brilliant explanation. No annoying facecam for important parts.
    I'm sold

  • @yankeeslee9050
    @yankeeslee9050 3 ปีที่แล้ว

    thank you mis, with soul which you have material becomes gergous, patient for more :dd ouu i forgot css is a rock :D

  • @jopa_ryds
    @jopa_ryds ปีที่แล้ว

    Such a great explanation, more people taking their first steps in coding should see this. Thanks!

  • @АлексейАлександрович-с4д3м

    I like it

  • @craigcraig6248
    @craigcraig6248 21 วันที่ผ่านมา

    Superb. Mozilla always does it right.

  • @ray-j9c3p
    @ray-j9c3p 2 ปีที่แล้ว

    contextual, suggestion, universal devices, no controls, adapting.
    What a nice explanation!

  • @chameleonstreet5545
    @chameleonstreet5545 3 ปีที่แล้ว

    Most helpful video on technology that I have so far watched? It is likely.

  • @SquaredbyX
    @SquaredbyX 3 ปีที่แล้ว

    Remember what the thing after this was for when we move on to the thing after that.
    This should explain it's weirdness.

  • @WillFastie
    @WillFastie 4 ปีที่แล้ว +1

    Very good.
    My only problem is that taking this argument to its logical conclusion, we're to build Web content (and the infrastructure) in such a way that it will adapt to any conceivable future device or environment. I don't see how that's possible but I do see how it raises the cost of building Web sites by, in effect, adding requirements that have nothing to do with the mission at hand, perhaps by writing CSS that is twice as complicated or dense as is actually needed to render contemporary content.
    We wouldn't be struggling with this if it weren't for phones and their vertical orientation, which really shook things up. I'm not suggesting that we shouldn't build stuff to render well on phones, only that we don't know what the next seismic event in presentation and/or devices will be.

    • @WillFastie
      @WillFastie 4 ปีที่แล้ว

      @@MozillaDeveloper I'm a fan of Layout Land and recommend it to all. Resilient CSS or multiple fallback scenarios makes my point - higher complexity and more work. Trying to convince a client to pay for such extra work is challenging. I could build one CSS framework and make all the sites I build look more or less the same, which would allow me to amortize the cost of development. Unfortunately, that's the design rut responsive sites have created.

  • @aziziyazit8423
    @aziziyazit8423 5 ปีที่แล้ว +2

    Love this video a lots

  • @AbdullahAlMamun-mc4nq
    @AbdullahAlMamun-mc4nq 4 ปีที่แล้ว

    What is your name,,? This video is very informative,,and good for a front end web designer.

  • @slim_mike
    @slim_mike ปีที่แล้ว

    very nice video!, please do more videos like this one (about the history and the philosophy behind css)

  • @somepersonalconsiderations
    @somepersonalconsiderations 3 ปีที่แล้ว

    very clear and convincing explanation. Styling in the web is for adapting to the different needs of different audiences... is not a limit, it is a feature!

  • @islamsayed8
    @islamsayed8 5 ปีที่แล้ว +1

    Great explanation! Thank you!

  • @AdamLindell
    @AdamLindell 3 ปีที่แล้ว +1

    I'm not convinced. Native apps have the same problems of the unknown canvas and still manage to render layouts without the weirdness of CSS.

  • @JIraya128
    @JIraya128 3 ปีที่แล้ว

    impressed by the way you explain things, thanks so mush

  • @seangrogan3622
    @seangrogan3622 ปีที่แล้ว

    This is great! thought-provoking and interesting

  • @zshanahmad2669
    @zshanahmad2669 3 ปีที่แล้ว

    i just fell in love with CSS and the whole web all over again

  • @jaynine1000
    @jaynine1000 4 ปีที่แล้ว

    Very eloquent and insightful. Thank you.

  • @brootaylor
    @brootaylor 4 ปีที่แล้ว

    Gosh, how brilliantly articulated is this! Thank you Miriam.

  • @gpnryou
    @gpnryou 3 ปีที่แล้ว

    Best explanation I've seen about sth in a long time!

  • @MrMonishSoni
    @MrMonishSoni 3 ปีที่แล้ว

    Nice Explanation. Thank You.

  • @equallyavant
    @equallyavant 5 ปีที่แล้ว +3

    A great reminder of the inclusivity of the web!

  • @abdulkadirguven1173
    @abdulkadirguven1173 2 ปีที่แล้ว

    Very well explained.Thanks

  • @cement006
    @cement006 3 ปีที่แล้ว

    I am here because of kevins course...

  • @silalokucyjna
    @silalokucyjna 2 ปีที่แล้ว

    fantastic explanation! thanks a lot!

  • @gustavoluchi
    @gustavoluchi 4 ปีที่แล้ว

    Damn, so beautiful!

  • @ChrisWilliamsDallas
    @ChrisWilliamsDallas 5 ปีที่แล้ว +1

    I love this!

  • @kelongshi7551
    @kelongshi7551 5 ปีที่แล้ว

    So great. Open Web and Open Mind.