Hey hey! I'm Roma. I am based around Paris, France...
# introduce-yourself
r
Hey hey! I'm Roma. I am based around Paris, France. I love CSS, and everything I do is related to it in one way or another. I work as a frontend engineer, working on design systems as my main job, and spending my spare time experimenting with CSS and trying to push the boundaries of what is possible with it. And then publishing long and nerdy articles on my personal site with the results. I'm also a CSSWG member. You are welcome to ask me any questions about CSS (on any level — it is important to understand what people struggle with for “simple” stuff as well). I don't remember how exactly I stumbled upon the Future of Coding podcast: likely, from Mastodon, or from me searching for people talking about some of the Bret Victor's ideas. In many ways, I feel a bit out of my depth (being mostly a self-taught engineer), but I constantly try to get inspiration from very different areas. In the new year, I am planning to work a bit more on one of my slowly ongoing pet projects (for live CSS explorations and permutations), and might share some progress here if I'll manage to fight my anxiety 🙂
i
Welcome Roma! I've enjoyed crossing paths with you on Mastodon. I'll take you up on the "any questions about CSS" someday soon I'm sure. It's my favourite programming language to use (I love the feeling of iterating on a design), but I'm a bit behind on trying out all the recent additions.
k
Welcome! Please feel free in particular to share ways we can make interacting here less stressful.
c
Hey here Roma 😄 I can attest to your expertise in design systems and CSS as a daily beneficiary of your work. I believe you will enjoy this slack community very much!
r
Thanks! It is nice to see some CSS appreciation. It did get a lot of stuff in the last few years, indeed. Not everything is ready for production, but there are many game-changing additions that could be used for personal/experimental projects.
Please feel free in particular to share ways we can make interacting here less stressful.
It’s mostly me, but I'll communicate if I'll spot anything 🙂 Hey Cameron!
k
Welcome! Nice to see someone else from the Paris region! As for CSS... I have been swearing a lot at it recently, as a newcomer to Web programming. But I am not sure yet if what I am angry at is CSS or the CSS tutorials I have come across. What I find difficult with CSS is to understand how different declarations interact to produce a final result. In particular when there are several techniques to do almost the same thing. Recent example: hiding elements. There's the "hidden" attribute in HTML but also "display: none" in CSS. The former is something I can add and remove dynamically. The latter is something that I declare once and for all, using classes to switch between different values. What if I mess around with both? Not out of malice, but because I use other people's code that may be opinionated about such issues. In the end, my approach to CSS is "for every problem, go through discussions on StackOverflow until I have something that works". That's not satisfying, and not how I am used to interacting with computers.
r
CSS is not like other languages, for sure, even for a declarative one. The way I prefer to think about it: it has a relatively simple set of core rules: the syntax itself, how the cascade works, etc. But when it comes to properties, all the depth is there. I consider all the properties (and at-rules, and other constructs) in CSS to be something like an extensive standard library, where almost every function has side effects. All the beauty — and complexity — comes from all the interactions between all these properties. The saving grace: CSS is visual! You're not required to know all the particularities of some interaction when you can just throw some things together and then look at the result in the browser and test it in a few scenarios (responsiveness and content-awareness). If the result is what is expected — great! If not — the best is to read about these properties and learn what exactly is happening. The best workflow today is to start by looking at the docs in MDN for the properties in question, and if they're not enough (do not cover the interaction you question), then go to the CSS specs. They're very well written and usually easier to understand compared to many other specifications I saw. Often, the main problem with CSS specs is that it might be difficult to find things there — that's why starting from MDN helps a lot, as almost every page there has a link to the original specs. I don't know what is the best place to start learning it today: I learned it by reading CSS2.0 specs and doing LiveJournal themes, haha. Learning by doing and analyzing the results works the best with CSS. I need to find time and gather some resources for how to start with the web platform — that's a rather common question.
j
Given your deep knowledge of CSS, what would you do if you were designing a new system for the same purpose without historical baggage ?
r
It’s a hard question! Especially given how CSS today is _so much_: not just for styling text documents as it began, but is used for UIs and so many other things. This might require more thinking, but maybe one thing that I can name: make the language more self-sufficient and meta. I feel that because the language began as an extension of HTML, with a clear “separation of concerns” many features were locked away. It is like the thought was that we don't need to introduce any complex logic in the language, as there is HTML and JS for expressing different other things. If variables (custom properties), mixins, custom functions, conditions, etc. were in the language earlier, it could allow it to evolve even further. We're now at the step where we're adding all these things to the language, and in many ways we're shackled by the legacy — the unique nature of the Web Platform with all the backwards compatibility and “don't break the web” requirements. Which are good, but make it much harder to move forward and introduce new things, and almost impossible to change anything foundational.
k
It sounds like you think there should be a single integrated language for authoring web pages / configuring web browser tabs?
r
Mmm, not exactly; I don't think we should really mix the concerns, but we need to identify where the limitations make it harder to move forward. And how we must “cross-pollinate” the existing concepts. For example, CSS would benefit from more abstractions that are in-language (mixins, functions, states). HTML will benefit from more declarative template programming (see: declarative custom elements). JS will benefit from knowing about the styles more: see CSSOM, for example. And there are so many things in CSS that are not currently exposed to scripting, like an ability to subscribe to the style changes, ability to query the container (similar to
.matchMedia
, not via observers), etc. I find the separation itself useful, but I welcome places where they slightly mix together, as we don't yet know all the use cases for everything we have. It is always possible to encounter some interaction or pattern that would benefit from that mix.
k
Thanks @Roma Komarov for your explanations, which confirms my suspicion that CSS requires a biology mindset of "poke and see what happens". Which is not my favorite one.
i
Good suspicion, @Konrad Hinsen. Usually not my favourite either, but for CSS I like it for some reason. Maybe it's the visual feedback.
k
Visual feedback is nice when you know the parameters you want to tweak but aren't sure of their values. It doesn't help much if you don't even know what to tweak.