SlideShare a Scribd company logo
1 of 31
Lessons Learned From Building
Your Own CSS Framework
Charlie Owen
@sonniesedge
Who the hell am I?
@sonniesedge
So, what is a CSS framework?
@sonniesedge
Kinda like Bootstrap…?
http://getbootstrap.com/@sonniesedge
Maybe more like Bourbon..?
http://bourbon.io/@sonniesedge
Maybe it’s something…
in-between?
@sonniesedge
Loom framework
https://github.com/sonniesedge/loom
@sonniesedge
How does it work?
@sonniesedge
Make variables enforce your
design system
@sonniesedge
margin-left: get-spacing(large)
@sonniesedge
ITCSS prevents
specificity wars
@sonniesedge
@sonniesedge
Simple, non-nested classes
@sonniesedge
@sonniesedge
Why build it?
@sonniesedge
What did I learn from building
Loom?
@sonniesedge
Set an achievable aim.
@sonniesedge
Be opinionated. Be proud.
@sonniesedge
@sonniesedge
Don't be too rigid
@sonniesedge
Learn from other people’s work
@sonniesedge
Don't over-engineer
@sonniesedge
@mixin padding($args) {
...
// allow for processing of various combos of arguments.
...
// it goes on forever
...
...
...
@return $padding-values;
}
@sonniesedge
.selector {
padding: 1rem 0.5rem;
}
@sonniesedge
Don't prematurely optimise
@sonniesedge
Documentation is amazing
@sonniesedge
Get a good name
@sonniesedge
Charlie Owen
@sonniesedge
http://sonniesedge.co.uk
https://github.com/sonniesedge

More Related Content

Viewers also liked

Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisFuture Insights
 
Seven Steps to Creating a Framework
Seven Steps to Creating a FrameworkSeven Steps to Creating a Framework
Seven Steps to Creating a FrameworkRob Philibert
 
Visual Regression Testing
Visual Regression TestingVisual Regression Testing
Visual Regression Testingsonniesedge
 
Making Your Own CSS Framework
Making Your Own CSS FrameworkMaking Your Own CSS Framework
Making Your Own CSS FrameworkDan Sagisser
 
Responsive Design & CSS Frameworks
Responsive Design & CSS FrameworksResponsive Design & CSS Frameworks
Responsive Design & CSS FrameworksG C
 

Viewers also liked (7)

Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
 
Seven Steps to Creating a Framework
Seven Steps to Creating a FrameworkSeven Steps to Creating a Framework
Seven Steps to Creating a Framework
 
Visual Regression Testing
Visual Regression TestingVisual Regression Testing
Visual Regression Testing
 
Making Your Own CSS Framework
Making Your Own CSS FrameworkMaking Your Own CSS Framework
Making Your Own CSS Framework
 
Grid system introduction
Grid system introductionGrid system introduction
Grid system introduction
 
Think Vitamin CSS
Think Vitamin CSSThink Vitamin CSS
Think Vitamin CSS
 
Responsive Design & CSS Frameworks
Responsive Design & CSS FrameworksResponsive Design & CSS Frameworks
Responsive Design & CSS Frameworks
 

Similar to Lessons Learned From Building Your Own CSS Framework

Designing for teenagers
Designing for teenagersDesigning for teenagers
Designing for teenagerssam_franklin
 
NHibernate from inside
NHibernate from insideNHibernate from inside
NHibernate from insideAndriy Buday
 
Css masterclass book
Css masterclass bookCss masterclass book
Css masterclass bookPhoenix
 
Visual rhetoric, April 22, 2013
Visual rhetoric, April 22, 2013Visual rhetoric, April 22, 2013
Visual rhetoric, April 22, 2013Miami University
 
The unbearable likeness of web design
The unbearable likeness of web designThe unbearable likeness of web design
The unbearable likeness of web designsarah semark
 
Scalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSSScalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSSHayden Bleasel
 
960 grid psd
960 grid psd960 grid psd
960 grid psdRaju Nag
 
Topsy Turvy Design
Topsy Turvy DesignTopsy Turvy Design
Topsy Turvy DesignRich Quick
 
Web Design Workflow and 
Tools that Make Life Easy
Web Design Workflow and 
Tools that Make Life EasyWeb Design Workflow and 
Tools that Make Life Easy
Web Design Workflow and 
Tools that Make Life EasySang-Min Yoon
 
Writing a screenplay
Writing a screenplayWriting a screenplay
Writing a screenplayTshepo Mokone
 
Sharing is Caring - Web Development Resources
Sharing is Caring - Web Development ResourcesSharing is Caring - Web Development Resources
Sharing is Caring - Web Development ResourcesTrevor Barnes
 
Web 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_cWeb 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_crnh2ab
 
Web 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_cWeb 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_cjacqueline62
 
Herod.Web2.0toolsGroupC
Herod.Web2.0toolsGroupCHerod.Web2.0toolsGroupC
Herod.Web2.0toolsGroupCrnh2ab
 
Start Smarter with a Concept Diagram
Start Smarter with a Concept DiagramStart Smarter with a Concept Diagram
Start Smarter with a Concept DiagramScott Kubie
 
Lesson 111 24 aug13-1430-ay
Lesson 111 24 aug13-1430-ayLesson 111 24 aug13-1430-ay
Lesson 111 24 aug13-1430-ayCodecademy Ren
 

Similar to Lessons Learned From Building Your Own CSS Framework (20)

Designing for teenagers
Designing for teenagersDesigning for teenagers
Designing for teenagers
 
Look ma! No images!
Look ma! No images!Look ma! No images!
Look ma! No images!
 
NHibernate from inside
NHibernate from insideNHibernate from inside
NHibernate from inside
 
Css masterclass book
Css masterclass bookCss masterclass book
Css masterclass book
 
Visual rhetoric, April 22, 2013
Visual rhetoric, April 22, 2013Visual rhetoric, April 22, 2013
Visual rhetoric, April 22, 2013
 
The unbearable likeness of web design
The unbearable likeness of web designThe unbearable likeness of web design
The unbearable likeness of web design
 
Scalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSSScalable front-end architecture with Bootstrap 3 + Atomic CSS
Scalable front-end architecture with Bootstrap 3 + Atomic CSS
 
960 grid psd
960 grid psd960 grid psd
960 grid psd
 
Topsy Turvy Design
Topsy Turvy DesignTopsy Turvy Design
Topsy Turvy Design
 
Web Design Workflow and 
Tools that Make Life Easy
Web Design Workflow and 
Tools that Make Life EasyWeb Design Workflow and 
Tools that Make Life Easy
Web Design Workflow and 
Tools that Make Life Easy
 
Writing a screenplay
Writing a screenplayWriting a screenplay
Writing a screenplay
 
Wireframing
WireframingWireframing
Wireframing
 
Sharing is Caring - Web Development Resources
Sharing is Caring - Web Development ResourcesSharing is Caring - Web Development Resources
Sharing is Caring - Web Development Resources
 
Web 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_cWeb 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_c
 
Web 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_cWeb 2 0_tools_sp11_group_c
Web 2 0_tools_sp11_group_c
 
Herod.Web2.0toolsGroupC
Herod.Web2.0toolsGroupCHerod.Web2.0toolsGroupC
Herod.Web2.0toolsGroupC
 
Start Smarter with a Concept Diagram
Start Smarter with a Concept DiagramStart Smarter with a Concept Diagram
Start Smarter with a Concept Diagram
 
Lesson 111 24 aug13-1430-ay
Lesson 111 24 aug13-1430-ayLesson 111 24 aug13-1430-ay
Lesson 111 24 aug13-1430-ay
 
7. recap and q&a
7. recap and q&a7. recap and q&a
7. recap and q&a
 
Satlab20101127
Satlab20101127Satlab20101127
Satlab20101127
 

Recently uploaded

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...amilabibi1
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfSenaatti-kiinteistöt
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 

Recently uploaded (15)

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 

Lessons Learned From Building Your Own CSS Framework

Editor's Notes

  1. Thanks for the introduction. I’m Charlie Owen. I live and work here in Berlin. Moved here about 15 months ago from London and I love it. I swear it’s a cliche, but it was the Club Mate that hooked me. Anyway, I’m a frontend developer. I specialise in design systems and large scale sass. Accessibility and ease of use are my thang.
  2. I’ve worked on a few big projects and at some big organisations including producing some of Rupert Murdoch’s Sky broadcast channels.
  3. The AAT - the Association of Accounting Technicians, based in the UK. Sounds boring, but this is actually a global membership-based organisation, serving hundreds thousands of people around the world. It was my first introduction to large-scale design systems and a huge influencing factor on this talk
  4. I also worked at the BBC, where I built the site for last years British national elections. You know the one where we elected David Cameron. Remember him? Nobody mention Brexit. This was an amazing technological challenge. We had to support every kind of browser out there, including the ones we hate, like IE6. This had to work on desktop, on mobile. Fantastic fun working with everything department in the BBC. All the hard work was so worth it. On election night, this was being viewed by 18 million people PER SECOND. Half of UK saw it over a 24 hour period. That was a terrifying thing where you REALLY could not fuck up.
  5. So, getting on to the point of this talk… First of all, what is a framework? Well, that’s something that’s not really easily defined. We’re a bit sloppy with language in this area. So many terms that we use lazily. But for the purposes of this, I’m taking a framework to be, REALLY BROADLY, “something that helps you build CSS more efficiently”.
  6. So does that mean something like Bootstrap? I mean, bootstrap let’s you build a website, yeah? But does it? Bootstrap is mostly just something that you drop onto a website. This may be harsh, but to me, Bootstrap is a collection of design patterns. It’s not really something that allows you to build your own code. If you’ve ever used it, you know you end up overriding everything. (Forgive me, I know about some of the mixins available. But they’re not really forefront, are they?)
  7. Perhaps Bourbon is a better example. It’s a collection of Sass mixins and functions that you can use to output your own CSS. But to me, although its quite amazing and I’m in awe of it, it’s not a framework framework as such. It’s more a collection of tools, that you can choose your own way of using.
  8. I guess to me, a CSS framework is something in-between. Something as powerful as Bourbon, that allows you to easily and quickly produce something like Bootstrap. A framework is more… opinionated. Something documented, with an input, a way of working and an output. To use a terrible analogy: a framework is not just the hammer in your toolkit. It’s not just the toolkit on its own. It’s the combination of tools, experience and manuals, such that allow you to start and finish a project efficiently for a client’s needs. Dave Ruperts said that we should be delivering a “series of mini-Bootstraps” to each of our clients. We should ideally be handing them a complete pattern library, so that they can build and extend their own websites.
  9. And that’s why I built my own system. It’s called Loom. It’s very new, and a work in progress, but it’s a complete framework designed to help people like me, and you, to build pattern libraries faster. It’s not like Bootstrap. It’s not a collection of pre-made patterns that can be dropped into a site. It’s not like Bourbon, which focusses on the generation tools themselves. It’s a factory. A production line. It’s a system that allows you to churn out or weave your own pattern libraries.
  10. I don’t want to concentrate too much here on how it works. If you’re into that, go and look it up on github and take a peek. But perhaps an overview is worth it it’s a Sass framework that takes in various variables and settings and uses them to spit out CSS. It’s built with design systems in mind, which means that It’s designed to produce components in a systematic, standardised way. It’s nothing NEW. Things like this exist already. And all the components have been around for years. But I hope that it could be come something bigger.
  11. Design systems are really important. On a project, of any size, standardising things like spacing, colours and font families is vital if any kind of expansion could occur, or multiple people are to work on things. So in Loom every spacing unit, every colour, every font, every text-style, comes from a variable. Even better, all collections of units come from Sass maps and lists.
  12. And you’d end up accessing these lists and maps via an understandable function. get-spacing. get-color. get-font-family. This means no more `margin-left: 25px` in your code. It means no more `color: #333` in your code. It means a more… organised approach to things. It means that a design system is the main definition of colours and fonts and spacing. And again, nothing new here. But this is rarely enforced. Loom tries to enforce this stuff.
  13. Inverted Triangle CSS. If any of you follow the work of Harry Roberts you’ll know about this. It forces your CSS to source order as the way to define specificity.
  14. What does that mean? All Sass partials are arranged in layers, with the most broad, the least specific, sitting at the top. As you go down the triangle, things get more specific and narrower in scope. It’s a controlled approach to selector specificity. Great for teams!
  15. At the same time, classes are kept as simple and as flat as possible. There’s no Sass nesting in Loom. I know it’s attractive, but it’s ultimately destructive. The lack of nesting prevents any particular chunk of CSS specificity from rising above the average. These two things together mean no more of this……..
  16. No more “I’ll just add something to the end of the stylesheet that beats the selector I want to override”. Source order becomes the primary mechanism of deciding what selector “wins”. Again, nothing new. Just some preexisting practises that are used in the framework.
  17. I’d initiated and developed another in-house framework on a previous project, and had found the process to be really useful. But that one was built with the needs of specific projects in mind, and it didn’t fulfil the needs of the broader community. I wanted to build something that worked for all potential users, however you write your CSS code. And also…. because I could. I wanted to do things better. I’d seen similar frameworks. I knew there was a better way of doing it.
  18. I could just stand here and go over every line of code in Loom, but you could do that yourself on github. But I think these talks are a really important place for learning process, on HOW we learn and code, not what we code. And this is really important as I guess that there’s a variety of experience levels here, and it’s really important, as a community, that we learn and grow together. So, I want to talk about what I learned while building Loom.
  19. Know what you want to achieve. Know what you want your tool to do. it’s really easy to get “feature creep” in your own head, as you learn about new things and new tech. For example, I kept breaking out of my assigned aim of creating a pure CSS generation library. I kept wanting to javascript helpers. But it really wasn’t helping me achieve my aim. My aim was to create a CSS library generator. Adding other things didn’t help me to get to my endpoint. It just kept pushing me further and further away.
  20. Be opinionated. Weigh up the pros and cons. Take some time. Evaluate things. Pick a way of doing things and stick to it. I was really nervous about my naming scheme. Folder layers prefixed with numbers. I KNEW a purist would come along and mock that. But to me it was vital - I’m a bit dyslexic and reading lists is really really hard for me. This is really important for those of us who are not white cis males. You tend to end up doubting yourself. You gotta stand up and fight that feeling and be proud. So.……… “Carry yourself with the confidence of a mediocre white man”.
  21. There will always be someone who comes along and tells you to do things in a different way. Little people. Always trying to undermine others. You know what, everyone has an opinion. But not all opinions were created equally, you know? Trust yourself.
  22. AT THE SAME TIME… Allow yourself flexibility, so that you can achieve the end result. Allow yourself to be wrong! People learn from making mistakes. If you end up going down the wrong path, allow yourself to turn back and try another route. I really painted myself into a corner with how I was using fonts. Like, I found out they would WORK, but I wouldn’t be able to use them efficiently in a project. I ended up having to remove what I’d done and restructuring half the project to accommodate a new way of fonts. That wasn’t changing direction for the sake of it. That was changing things so that stuff worked. It was a considered change induced by need, not vanity.
  23. Don’t ignore what others have already done. Even if you don’t agree from it, LEARN. Bourbon is amazing - learn from it. The mixins in there are so damn powerful, it’s unreal. InuitCSS is wonderful. It was what inspired me to write any kind of framework in the first place. The use of ITCSS in there is inspirational. You can draw on the pool of the community knowledge and experience. You’re not alone and you shouldn’t try to do everything alone. I was screwed for ages trying to come up with a robust media-query system. I eventually realised that I could just use something developed by someone else. Sass MQ is amazing, so why not just use it? It is licensed under MIT, so I could just pick it up and go.
  24. It’s possible to over engineer to death. Inspired by something I’d seen - and fundamentally misunderstood - in Bourbon I started working on a mixin like this…
  25. It was longwinded and awful I haven’t got the original to show you as I kinda burned it from my memory. I could have just written this….
  26. Know when to stop. Always bring it back to your final aim. Does your extra code add anything for the user? Or are you doing it for yourself?
  27. Take everything simply, and slowly. Don’t try and build something that is perfect from the start. Things are going to change. You need to be flexible, like I said before. So, make successive passes at your code. Write what you want to achieve initially. Write it as a comment. Then play, make it do something. Then make it work. Make sure it does what you want it to do. Then make it better. Not just a coding issue. People in other industries face this. A novel isn’t written grammatically perfect from the start, with everything in there. A plot framework comes first, then chapters, then editing.
  28. Dunno about you, but I’ve always sucked at documentation. But it’s amazing. Finding a good documentation system is like finding a good… I dunno… a good dentist. You’ll stop being afraid and you’ll want to visit again. Same with documentation. I found Sassdocs to be a wonderful tool for this. Add what your code does as comments, and Sassdocs will find those comments and build a little manual for you based on it. If you find a system like that, one that is great, you’ll *want* to document everything. It is so so so pleasing to see everything you’ve written documented in a page. And this is really important. You are not working in a vacuum. You are part of a community, or a team, and your code has to outlive you. And this community spirit doesn’t just apply to documentation. It applies to your code. Think about the people you work with. Imagine you have never seen this code before. You might have put a fancy shorthand piece of code in there.
  29. And finally…. Come up with a good name! You would not believe how long it took me and my partner in a bar, drinking beer and trying to come up with a name even this bad. I had a bad hangover by the end of the process, for sure. It’s genuinely fun to try and come up with one, but it’s also so important for namespacing and package naming.
  30. Thanks for listening. Just to note as well that I’m looking for a new position right now. Ask me any questions later on.