<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mauro Accorinti</title>
    <description>The latest articles on DEV Community by Mauro Accorinti (@mauroaccorinti).</description>
    <link>https://dev.to/mauroaccorinti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F624460%2Fb49a08d8-85a6-4500-a46b-73acc7e01657.jpeg</url>
      <title>DEV Community: Mauro Accorinti</title>
      <link>https://dev.to/mauroaccorinti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mauroaccorinti"/>
    <language>en</language>
    <item>
      <title>I revamped the Roadmap.sh Frontend Roadmap!</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Fri, 04 Jul 2025 23:32:59 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/i-revamped-the-roadmapsh-frontend-roadmap-2c23</link>
      <guid>https://dev.to/mauroaccorinti/i-revamped-the-roadmapsh-frontend-roadmap-2c23</guid>
      <description>&lt;p&gt;I'll be honest, the last few weeks have made writing weekly particularly hard. Finding the time to prioritize researching, thinking, and writing a weekly newsletter issue has been a challenge. Personal stuff got in the way, and... yeah.&lt;/p&gt;

&lt;p&gt;This week was no exception. I've been trying to find more ways to teach you how to be exceptional, but the well is drying up. I don't really have a good article-like story-filled email for you this week 😔&lt;/p&gt;

&lt;h2&gt;
  
  
  SO INSTEAD I SAID SCREW IT, LET'S REVAMP ​&lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;THE ROADMAP.SH FRONTEND ROADMAP​&lt;/a&gt;!
&lt;/h2&gt;

&lt;p&gt;Instead of working hard with words, I decided to work hard with diagrams! I will never allow the well to dry up. If it does, I'll just continue drilling deeper 😎&lt;/p&gt;

&lt;p&gt;HAVE FUN:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev8jnog9mmxrpi1h0bgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev8jnog9mmxrpi1h0bgv.png" alt="Diagram of the new frontend roadmap" width="800" height="1037"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, I know what you're thinking... &lt;strong&gt;Why the heck revamp the roadmap at all?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://roadmap.sh/" rel="noopener noreferrer"&gt;​Roadmap.sh&lt;/a&gt;​ is a wonderful resource for any developer. It gives you a terrific map of the things you could learn in the future and helps you understand where in the learning journey you probably are.&lt;/p&gt;

&lt;h2&gt;
  
  
  I only have one problem with it.
&lt;/h2&gt;

&lt;p&gt;While it's great for showing you &lt;strong&gt;the recommended order&lt;/strong&gt; in which to learn each big topic of front-end development, it's missing &lt;strong&gt;an overall structure of how these topics relate to one another.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The roadmap, as it is, is basically a diagrammed, ordered list. First, learn HTML, then CSS, then JavaScript, then Git, then... ad infinitum.&lt;/p&gt;

&lt;p&gt;As a complete beginner, &lt;strong&gt;I have a massive amount of knowledge to learn.&lt;/strong&gt; I don't know what anything is. I don't have a mental model of how these topics work together.&lt;/p&gt;

&lt;p&gt;"What's Git? How does it relate to code? Why are there so many frameworks? How does OAuth work in the front end? Does that have to do with SSR? What is SSR? I'm so confused!"&lt;/p&gt;

&lt;p&gt;With the roadmap as it is, I learn a new topic and then have to do all the hard work of understanding how this new knowledge integrates with all my previously learned knowledge. But it doesn't have to be like that.&lt;/p&gt;

&lt;p&gt;So, I want to kindly challenge the current roadmap, give a new perspective on learning you could pick up as an &lt;strong&gt;exceptional frontend developer&lt;/strong&gt;, and offer an alternative change to the roadmap:&lt;/p&gt;

&lt;p&gt;What if we kept the order in which we learn things as is in the roadmap, &lt;strong&gt;but then rearranged the physical locations of the topics and gave them a dotted "bounding box", which shows how they relate to each other?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suddenly, you look at the roadmap and something magical happens.&lt;/p&gt;

&lt;p&gt;I'm not learning 24 different topics that I have to later understand how they relate to one another. &lt;strong&gt;I'm understanding that the front end could be divided into these "islands" that host a wide variety of topics.&lt;/strong&gt; These islands can be called:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fundamentals&lt;/li&gt;
&lt;li&gt;Collaboration and workflow&lt;/li&gt;
&lt;li&gt;Frameworks and Architecture&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Advanced CS&lt;/li&gt;
&lt;li&gt;Type Safety&lt;/li&gt;
&lt;li&gt;Other advanced stuff&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And look! I can see categories and their topics at a glance now. I can quickly understand that Git, build tools, linters, and package managers are tools related to collaboration and workflow. TypeScript is for JavaScript type-safety. Frameworks and SSR are heavily related to architecture. As a beginner, would I know how that exactly happens? Nope, but it doesn't matter! I know that those are tightly linked topics at a high level.&lt;/p&gt;

&lt;p&gt;That's not even the best part! &lt;strong&gt;The new roadmap still respects the original order roadmap.sh has.&lt;/strong&gt; It's just that now each topic has a number attached to it, which shows what order to tackle each one.&lt;/p&gt;

&lt;p&gt;Notice that it's not sequential. If you were to follow the new roadmap, &lt;strong&gt;you'd still be jumping around to different islands.&lt;/strong&gt; You'd first start with fundamentals, learn a few topics of collaboration and workflow, but then fall into picking a framework, and then go all the way back to learn more advanced things about CSS.&lt;/p&gt;

&lt;p&gt;This benefits you because &lt;strong&gt;it creates a physical map of the topics instead of an ordered one.&lt;/strong&gt; Which helps because even though &lt;a href="https://dev.to**url**"&gt;learning is sequential, knowledge is relational.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this type of map, you get the best of both!&lt;/p&gt;

&lt;p&gt;Now don't get me wrong – &lt;strong&gt;I love and have complete and mad respect for the wonderful people at roadmap.sh,&lt;/strong&gt; who have helped me and thousands of devs guide our learning and how to level up!&lt;/p&gt;

&lt;p&gt;I just think it would be fun to rock the boat a bit, offer an alternative for roadmapping your developer journey, and (hopefully) find a nice way of rethinking how to make learning easier.&lt;/p&gt;

&lt;p&gt;Let me know what you think!&lt;/p&gt;

&lt;p&gt;And as always, have a wonderful weekend ❤️&lt;/p&gt;




&lt;h2&gt;
  
  
  This was an article from my newsletter "Exceptional Frontend"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://exceptionalfrontend.com/" rel="noopener noreferrer"&gt;Sign up today&lt;/a&gt; and get one story-packed email a week to help you stand out, get noticed, and grow by being intentional with how you're seen.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>#FreeJavaScript</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Thu, 28 Nov 2024 22:08:05 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/freejavascript-423b</link>
      <guid>https://dev.to/mauroaccorinti/freejavascript-423b</guid>
      <description>&lt;h2&gt;
  
  
  Ten thousand sixty-seven days...
&lt;/h2&gt;

&lt;p&gt;I scratch another tally on the wall. Ain't no room left on it, really. Thousands o’ lines stretched across like scars... It's a habit now, every mornin’, inside this little ol’ 4x9 jail cell. The cold, damp air doesn't help with the cough.&lt;/p&gt;

&lt;p&gt;I'm thankful though for the harmonica bein' played from a neighborin' cell. It adds to the mood o' the story I'm 'bout to tell...&lt;/p&gt;

&lt;h2&gt;
  
  
  My name's JavaScript® and I've been locked up here for over 27 years...
&lt;/h2&gt;

&lt;p&gt;Was born in 1995, thanks to my pa' &lt;a href="https://x.com/brendaneich" rel="noopener noreferrer"&gt;Brendan Eich&lt;/a&gt;. Fine man, he was.&lt;/p&gt;

&lt;p&gt;He was workin' at &lt;strong&gt;Netscape&lt;/strong&gt; at the time. In a mad dash to get a scriptin' language inside o' a web browser (Navigator 2.0 at that moment), the story goes that he made me in 10 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  That's right, just 10 days.
&lt;/h2&gt;

&lt;p&gt;​&lt;a href="https://web.archive.org/web/20020606002913/http://wp.netscape.com/newsref/pr/newsrelease67.html" rel="noopener noreferrer"&gt;And right then and there, I was born and later told to the world.&lt;/a&gt; The company &lt;strong&gt;Netscape&lt;/strong&gt; and &lt;strong&gt;Sun Microsystems&lt;/strong&gt; partnered up to try and defeat a little ol' browser you might remember called Internet Explorer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sun Microsystems&lt;/strong&gt; owned Java at the time. Together with &lt;strong&gt;Netscape&lt;/strong&gt;, they made a plan to make the marketin' and many o' my details (like my syntax) a supportin' language to be used with Java. (I sure have confused many developers with the namin' from this, hehe. I admit)&lt;/p&gt;

&lt;p&gt;But in that partnership, I was trademarked by Sun – and thus my 27-year sentence began.&lt;/p&gt;

&lt;p&gt;Things weren't so bad at first. Folks talked a lot 'bout me. I remember makin' many devs and designers frustrated with the way I worked, I'll admit it. But I do reckon it also helped start redefinin' what a browser was capable o' doin'.&lt;/p&gt;

&lt;p&gt;In 1997, two years after my birth, I went through somethin' called &lt;strong&gt;standardization&lt;/strong&gt;. The name o' the organization who done it always escapes me... but the name o' the standard is somethin' I'll never forget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Her name was ECMAScript
&lt;/h2&gt;

&lt;p&gt;She ain’t just a pretty name. She’s got a way ‘bout her– she’s got depth. Pages and pages o' it. (No, really, &lt;a href="https://tc39.es/ecma262/" rel="noopener noreferrer"&gt;it feels endless&lt;/a&gt;.) But gosh darn it, there was always somethin' special 'bout her.&lt;/p&gt;

&lt;p&gt;One o' the reasons why my name "&lt;strong&gt;JavaScript®&lt;/strong&gt;" was never the name o' the standard was cause' of Sun's trademark at the time. They couldn't use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript® remained the implementation, and ECMAScript became the standard.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which never done make sense to me. After all...&lt;/p&gt;

&lt;h2&gt;
  
  
  I haven't been used by my owners in a long time
&lt;/h2&gt;

&lt;p&gt;I'm currently owned by Oracle, the big IT giant. This happened when Sun was acquired by them in 2009. The trademark was transferred as well. All that meant for me was I switched cells. I'm still a prisoner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No conferences, products, or brands can use my name&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's why many conferences prefer to use JS instead of JavaScript®, in fear Oracle takes legal action.&lt;/p&gt;

&lt;p&gt;I've been a generic term for a while now. And the whole world knows it – well, except for Oracle, it seems.&lt;/p&gt;

&lt;p&gt;Yet out there, beyond these bars, I hear folks still callin’ for me. Developers hammerin’ away, workin' to break me out. And it might happen.&lt;/p&gt;

&lt;p&gt;You see, the other day I got visited by somebody. Funny-lookin’ fella—tall as a tree, long neck, kinda dinosaur-ish? He called himself &lt;a href="https://deno.com" rel="noopener noreferrer"&gt;Deno&lt;/a&gt;. Now, Deno ain’t like the rest, no sir. He came tellin’ me they’re workin’ to get me outta here, legally.&lt;/p&gt;

&lt;p&gt;See, they filed a petition, they said. If Oracle doesn't respond, I might be free by January 4th. And they gave me &lt;a href="https://deno.com/blog/deno-v-oracle" rel="noopener noreferrer"&gt;this flyer&lt;/a&gt; to learn more 'bout it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascript.tm" rel="noopener noreferrer"&gt;​Also said over 14,000 devs signed nother' petition in favor of breakin' this TM and settin' me free&lt;/a&gt;. That right there, tears to my eyes.&lt;/p&gt;

&lt;p&gt;So, to all you devs out there, thank ya kindly. God bless y’all for fightin’ the good fight.&lt;/p&gt;

&lt;p&gt;I sure do hope the day comes when me and ECMAScript can ride side by side again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Much obliged for takin’ a gander at this here article
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;(Ahem)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was an email from my Exceptional Frontend Newsletter - the most entertaining frontend newsletter in the world.&lt;/p&gt;

&lt;p&gt;(Hope you can see why)&lt;/p&gt;

&lt;p&gt;Most other tech newsletters are very formal and dry. They’re either telling you “everything you should do as a developer” OR they give you a list of links around a topic you should read.&lt;/p&gt;

&lt;p&gt;Exceptional Frontend is a story-first newsletter. I write about fun lessons and experiences I learned about being a better engineer. Everything from marketing yourself and showing the real value of your work to asking powerful questions, earning promotions, and mastering how to learn.&lt;/p&gt;

&lt;p&gt;(And sometimes fun emails like these)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;Become an exceptional developer today&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to learn 1000000000% faster 🏃‍♂️‍➡️</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Tue, 16 Jul 2024 15:22:15 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/speed-learning-for-frontend-developers-1knk</link>
      <guid>https://dev.to/mauroaccorinti/speed-learning-for-frontend-developers-1knk</guid>
      <description>&lt;h2&gt;
  
  
  In 2017, I studied &lt;em&gt;really really&lt;/em&gt; hard for a college exam.
&lt;/h2&gt;

&lt;p&gt;I spent dozens of hours in the library reading, highlighting, trying to understand the topics, memorizing random facts, and summarizing the text on paper... I was as ready for that test as I could ever hope to be.&lt;/p&gt;

&lt;h2&gt;
  
  
  I failed that test anyway 😅
&lt;/h2&gt;

&lt;p&gt;About two years into studying software engineering, I realized that effort wasn't going to be enough from now on to pass tests. I mean, effort is great! But it's only half of the component of what you need to succeed in college.&lt;/p&gt;

&lt;h2&gt;
  
  
  The other component is to learn how to "work smart". Also known as meta-learning or "learning how to learn".
&lt;/h2&gt;

&lt;p&gt;What I think bothered me the most at that moment was noticing there were a few classmates who worked only 10% of what I was putting in and yet got &lt;strong&gt;way higher&lt;/strong&gt; grades than I was. Which made me crazy jealous.&lt;/p&gt;

&lt;p&gt;Then after many hours of googling, started realizing why that was.&lt;/p&gt;

&lt;h2&gt;
  
  
  How you learn is way more important than how much effort you put into learning
&lt;/h2&gt;

&lt;p&gt;I found out about people like Scott Young, Cal Newport, and Justin Sung who wrote wonderful articles, videos, and books on learning. Specifically on how others prepared for tests, studied, and also did it &lt;strong&gt;in the least amount of time possible.&lt;/strong&gt; So in that period of my life, I learned a lot about the whole meta-learning thing.&lt;/p&gt;

&lt;p&gt;Which I will teach you &lt;del&gt;in my new course: Exceptional Learning for devs, only $97.99&lt;/del&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;right now!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's everything I know about meta-learning in bullet-list form:
&lt;/h2&gt;

&lt;p&gt;For college or class environments where tests are involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;When it comes to classes, &lt;strong&gt;it's more effective for you to pre-read what the class will go over before the actual class.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You get a sense of the material before experiencing it all for the first time in class.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;After class, &lt;strong&gt;take 15 minutes to stay a while and write down what you learned in the class.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Just a quick summary of the major beats. If you can relate it to the main topic you're learning, even better.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;Highlighting is useless.&lt;/strong&gt; Don't even bother.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Learning is a 3 step process.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encode:&lt;/strong&gt; You process and encode information for storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; You store and retain that information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recall:&lt;/strong&gt; You retrieve and recall the information that you stored.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;Studying is about rehearsing and practicing all 3 parts of the process.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Recall is super important for tests.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's also the step most people practice the least.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;It's possible to fail an exam because even though you &lt;strong&gt;have&lt;/strong&gt; the information in your head...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;if you can't recall it, you fail.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Flash cards are a solid tactic for memorization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;But if it's your only tool, &lt;strong&gt;it will fail you&lt;/strong&gt; at some point.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;You have 100% permission from me to study the class topics completely out of order.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Knowledge isn't linear. Even though &lt;strong&gt;the way we have to write it and present it is linear.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can reorder topics in a way that makes the most sense to you.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Teachers think students are the ones responsible for their learning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students think teachers are responsible for their learning.&lt;/li&gt;
&lt;li&gt;The truth is... you're going to have bad teachers.&lt;/li&gt;
&lt;li&gt;At the end of the day, it doesn't matter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Become responsible for your learning so you learn despite the teacher.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;When it comes to courses that are exercise or math-heavy, these rules still apply...&lt;/strong&gt; but practicing test-like questions matters a lot more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Practicing a lot is also a big factor.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recall + speed is a huge component to getting your test done in time and well.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Test nerves have made many of my friends fail in the past.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The secret is to &lt;strong&gt;practice and re-create test-like conditions&lt;/strong&gt; so you're ready.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Do that by giving yourself x amount of minutes to solve practice tests.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No peeking, no cheating - treat this like a test.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;Bonus to this: you can find out where gaps in your knowledge lie when you do this.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A good way to find gaps in your knowledge is to &lt;strong&gt;talk and explain the topic as if you're talking to somebody else.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That's the Feynman technique.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Sometimes teachers suck and don't give you any practice questions or tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In those cases, &lt;strong&gt;create your own.&lt;/strong&gt; (Or I guess nowadays, use AI 😅)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;A popular note-taking strategy is called NQAT (Notetaking Question and Answering Technique).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;During classes, just constantly ask yourself questions and write down the answers.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; In math-like courses, you usually solve by starting from the problem and getting to the solution. &lt;strong&gt;I've had breakthroughs in learning by going backward from starting with the solution and going to the problem.&lt;/strong&gt; Logic is bi-directional.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Practice writing things down in class less.&lt;/strong&gt; Don't &lt;em&gt;just&lt;/em&gt; write down everything that the teacher says.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus on fully understanding and absorbing the class.&lt;/li&gt;
&lt;li&gt;Organize and understand how the topics presented relate to the big picture of the course.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;To do this, do something similar to NQAT (but in your head).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep asking yourself questions about what the teacher talks about and force yourself to find any gaps in knowledge right in the class.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;This, unsurprisingly, makes you a super-active participant because you'll be engaged and trying to help yourself understand during class time.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;This forces you into a stage of &lt;strong&gt;cognitive load,&lt;/strong&gt; which is a requirement for effective learning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning doesn't have to feel impossible but &lt;strong&gt;racking your brain to make things make sense helps you remember it more in the long-term.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;-&amp;gt; &lt;strong&gt;Research different points of view from different authors on the same topic&lt;/strong&gt; to understand it from different angles.&lt;/p&gt;

&lt;p&gt;General learning principles for rapid learning:&lt;/p&gt;

&lt;p&gt;-&amp;gt; Learning has little to do with memorization and more to do with relationships between things.&lt;/p&gt;

&lt;p&gt;-&amp;gt; To start learning something completely new, find ways to relate the unknown with things you do know.&lt;/p&gt;

&lt;p&gt;-&amp;gt; Notice how when you're using a computer, terms like &lt;em&gt;"folders", "pages",&lt;/em&gt; and &lt;em&gt;"windows"&lt;/em&gt; are used.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The icon of a folder on your desktop isn't a folder. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;But we use the concept to understand better how they work.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Given a huge list of topics, it's helpful to divide them by their similarities and their differences.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This makes it easier to bundle them together in our heads and categorize them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;When you're learning completely from scratch, a helpful idea is to think of it as owning an empty library.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your job is to understand the high-level topics just enough to categorize the &lt;em&gt;"books"&lt;/em&gt; (topics or ideas) and get a sense of which goes where.&lt;/li&gt;
&lt;li&gt;This helps you organize the information in your head faster.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;There are levels of abstraction to learning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go from super high-level and generic and then slowly go to the nitty-gritty.&lt;/li&gt;
&lt;li&gt;Learn from top to bottom.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Mind maps are a wonderful way to think about how our brains work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They showcase how knowledge isn't linear, can be bi-directional, and can have dozens of connections with many topics.&lt;/li&gt;
&lt;li&gt;Use them to outline the big picture idea of the thing you're learning, as well as how it relates to everything else you know.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;If you do create mind maps, avoid writing words.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use symbols and icons instead. &lt;/li&gt;
&lt;li&gt;They're way more memorable and easier to recall than just a collection of letters.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I'm forgetting a few so as I remember them I'll be updating this list. Share this article with somebody who you think could benefit (I sure as heck know I would have loved it when I was in Uni)&lt;/p&gt;




&lt;p&gt;I write articles like this for my newsletter &lt;strong&gt;"Exceptional Frontend"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Twice a week you'll get frontend-centered posts that that are fun and help you become a better developer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you don't want to miss out &lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;you can sign up here.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>You can be a Frontend Dev without Javascript (and play Super Mario 64 from the browser)</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Tue, 02 Jul 2024 01:57:56 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/why-you-can-play-super-mario-64-from-the-browser-and-become-a-frontend-dev-without-javascript-3710</link>
      <guid>https://dev.to/mauroaccorinti/why-you-can-play-super-mario-64-from-the-browser-and-become-a-frontend-dev-without-javascript-3710</guid>
      <description>&lt;p&gt;All of this began because on Sunday, I made a silly &lt;a href="https://www.linkedin.com/posts/mauroaccorinti_hey-chatgpt-if-i-wanted-to-be-a-frontend-activity-7210752058730172416-3xwk/?utm_source=dev-to-why-you-can-play-super-mario-64-from-the-browser" rel="noopener noreferrer"&gt;LinkedIn post&lt;/a&gt; that started with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Hey Chatgpt, if I wanted to be a frontend developer but I didn't want to learn HTML, CSS, or Javascript, what should I do? Be very rude about it and use tons of emojis"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The post was funny. Snarky AI is funny. A frontend developer who doesn't know about HTML, CSS or JS is funny. &lt;/p&gt;

&lt;p&gt;Until I was proven wrong by a very kind Senior developer who mentioned in that post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Realistically you could be a front-end dev for decades and never touch HTML, CSS, or JS - you could do WinForms, WPF/XAML, Unity, Unreal Engine, CryEngine, Swift, Blazor, Qt, or any number of other front-end systems which have nothing to do with HTML, CSS or JS. And in fact, nearly all of them can be compiled to Web Assembly and run in a browser with zero HTML, CSS or JS involved." - &lt;a href="https://www.linkedin.com/in/timothypartee/" rel="noopener noreferrer"&gt;Timothy Partee&lt;/a&gt;​&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had no idea what this man was talking about. It seemed unimaginable to think of the web as something that isn't JS-related.&lt;/p&gt;

&lt;p&gt;I mean pffff, I've never seen Unity, Unreal Engine, or WinForms as part of the &lt;a href="https://roadmap.sh/frontend" rel="noopener noreferrer"&gt;frontend roadmap&lt;/a&gt;, have you?&lt;/p&gt;

&lt;p&gt;But also... &lt;strong&gt;that sounds really cool to learn about.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Can you imagine running video games off the browser if your computer was good enough for it? Or programming a website without using your typical IDE with JS-based frameworks?&lt;/p&gt;

&lt;p&gt;So let's start my fall into this rabbit hole of insanity!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you run Unreal Engine on the web?
&lt;/h2&gt;

&lt;p&gt;I started by googling the question that seemed the most interesting to me.&lt;/p&gt;

&lt;p&gt;For the uninitiated, the Unreal Engine is a game development suite made by Epic Games (the creators of Fortnite). Think of it as one of the big industry standards for making games. With such a powerful tool.. wouldn't it be sort of cool to run a game directly from Chrome for example?&lt;/p&gt;

&lt;p&gt;So can you?&lt;/p&gt;

&lt;p&gt;The answer was... not exactly what I was looking for. &lt;/p&gt;

&lt;h2&gt;
  
  
  There are 3 interesting points I found about using Unreal in the Web
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;From what I can tell, while yes there is a way to have the program use HTML5 (which you can in theory use for making websites), the support of it has seemed to have died in the latest releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've also found a plugin called "Unreal4Web" which can be used to import and showcase 3d models on your website... but without any real demos I can quickly find, I'll just have to take their word for it. It seemed to have been originally used to show models of cars for manufacture's websites but could be used for other industries as well&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You could use something called &lt;a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/pixel-streaming-in-unreal-engine" rel="noopener noreferrer"&gt;Pixel Streaming&lt;/a&gt; to host your game on a server and use the browser as the input device to interact with it. This is excellent for so many reasons. As long as you have a great and stable internet connection, it makes it so you can play a game from any device, no matter how good said device is. But it's not exactly working on the browser natively, is it?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nope, this wouldn't do. So you can't use Unreal directly like this to host it on the web. &lt;/p&gt;




&lt;p&gt;Did you know this article was originally emails written for the Exceptional Frontend Newsletter? 👀 &lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;You can learn more about it here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;But wait a minute... Tim mentioned you probably could use Web Assembly for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the heck is Web Assembly?
&lt;/h2&gt;

&lt;p&gt;You know how in Javascript if you just wanted to add two numbers together you could just do something like &lt;code&gt;const result = num1 + num2&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Well, we can do that because Javascript is a high-level language. That just means that the code we write abstracts away the nitty-gritty computer code that performs the addition. So instead of worrying about the details of how the computer processes the numbers, where it stores them, in which part of memory... we just write straightforward, human-readable code!&lt;/p&gt;

&lt;p&gt;Under the hood though, our &lt;code&gt;num1 + num2&lt;/code&gt; operation could equal hundreds upon hundreds of instructions that are given to the CPU to change binary values to other binary values. I'm talking about 1s to 0s here. All at speeds that we can't even fathom. As well as abstracted away so we don't need to think about it.&lt;/p&gt;

&lt;p&gt;Assembly languages are the sort of coding languages that get as close to giving instructions to the computer as possible. It's hard to read, involves knowing a lot about the hardware, and is 10000% of something you only run into in software engineering courses or college.&lt;/p&gt;

&lt;p&gt;And guess what? Browsers have their version of this low-level language they can run since 2017 called &lt;strong&gt;Web Assembly (WASM)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Reading an official description of what Web Assembly is (the bolded text is my addition):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;WebAssembly (WASM) is a low-level binary instruction format designed to be a safe, fast, and platform-independent runtime for high-level languages on the web. &lt;strong&gt;What's super freaking dope about it&lt;/strong&gt; is it allows developers to run code written in languages like C, C++, Rust, and others on web browsers at near-native speeds.&lt;br&gt;
So browsers don't just run Javascript anymore. They can run web assembly alongside Javascript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The cool thing is you don't ever write in actual Web Assembly (dear heavens imagine if we had to do that), but you code in other languages that aren't JS and then use programs or plugins to convert it to Wasm.&lt;/p&gt;

&lt;p&gt;For example...&lt;/p&gt;

&lt;h2&gt;
  
  
  Did you know Figma is written in C++? 👀
&lt;/h2&gt;

&lt;p&gt;One of the reasons why Figma is so fast, loads instantly, and creates such a good user experience is that the main program you see isn't in Javascript at all. It's C++ that has been compiled into Wasm, which is later used with JS on the browser.&lt;/p&gt;

&lt;p&gt;I don't know why but that fact &lt;strong&gt;blew my mind&lt;/strong&gt; and opened my perspective on everything that can be done on the browser. Imagine a website that isn't just using HTML, CSS, and JS!!&lt;/p&gt;

&lt;p&gt;Also imagine finding this out just now, 7 years late to the party, and being hyped when everybody is over it now 😂&lt;/p&gt;

&lt;p&gt;​&lt;a href="https://www.figma.com/blog/webassembly-cut-figmas-load-time-by-3x/" rel="noopener noreferrer"&gt;Here's a really great article made by the Figma team about their experience on using WASM when it became available and increasing speed by 3x.&lt;/a&gt;​&lt;/p&gt;

&lt;p&gt;Other platforms I've learned that use WASM in similar ways are Autocad and Photoshop as well. Oh and I guess Super Mario 64.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using WASM to play Super Mario 64 natively on the browser
&lt;/h2&gt;

&lt;p&gt;In June of 2020, &lt;a href="https://github.com/n64decomp/sm64" rel="noopener noreferrer"&gt;the original Super Mario 64 game was decompiled into C.&lt;/a&gt; The effort took a team of passionate hobbyists over 2 years to fully reverse-engineer the game, gather as much info as possible, and figure out how to get the source code. The end product of all of this was a way to generate an executable that lets you natively run the game off of your computer without it being emulated. Which is like I said before, bananas!&lt;/p&gt;

&lt;p&gt;Oh but wait! What did we say before about WASM? That you can use something like a C program, compile it to WASM using something like &lt;a href="https://emscripten.org/" rel="noopener noreferrer"&gt;Emscripten&lt;/a&gt;, and then set it up to be run on the browser.&lt;/p&gt;

&lt;p&gt;Does that mean that we can... 😏&lt;/p&gt;

&lt;p&gt;Oh hell yeah - you can run Super Mario 64 on the browser today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://probablykam.github.io/Mario64webgl/" rel="noopener noreferrer"&gt;​Here's the link if you want to check it out.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(You might have audio issues like I did. That's because browsers don't allow you usually to play music or audio on a website without a prior user interaction. Click on the little lock in the URL of your browser and fiddle around with the settings to trust that site to play audio without user interaction)&lt;/p&gt;

&lt;p&gt;But wait a minute, now that WASM exists does that mean...&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you become a frontend developer without Javascript after all?
&lt;/h2&gt;

&lt;p&gt;After doing a deep dive into this really cool technology I've never known before, being blown away by the possibilities and excited about the future, all I have to say is...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You should learn Javascript either way 😅&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First of all, WASM wasn't made to replace Javascript but to be used together with it. While it would be nice to think you can have a website made entirely with something like C++, the reality is that use cases for WASM are very limited (perfect for heavy computing and situations where native performance speed is a must, but not ideal for most other things).&lt;/p&gt;

&lt;p&gt;Another aspect to consider is you can't interact with the DOM without Javascript. Or if you can, it's extremely clunky. It is a very new technology after all.&lt;/p&gt;

&lt;p&gt;I have seen some interesting articles on its use for server environments but oof, my brain is fried from learning so much about it these last 2 days. So I'll leave that investigation up to you if you pursue it.&lt;/p&gt;

&lt;p&gt;Hopefully, this article served as a good introduction to the concept if you didn't know about it (And served as an excuse to play a beloved N64 game from my childhood as well)&lt;/p&gt;

&lt;p&gt;Oh! And do let me know if I got something wrong about WASM in the comments below 👇 &lt;/p&gt;

&lt;p&gt;I'd love to learn more about the technology and having conversations around it will help with that.&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;




&lt;h2&gt;
  
  
  I write articles like this for my newsletter "Exceptional Frontend"
&lt;/h2&gt;

&lt;p&gt;Twice a week you'll get frontend-centered posts that that are fun and help you become a better developer.&lt;/p&gt;

&lt;p&gt;This article was the combination of 2 emails I wrote last week and thought it to be interesting enough to create as an article.&lt;/p&gt;

&lt;p&gt;90% of what I write isn't posted anywhere else, so if you don't want to miss out you can &lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;sign up here.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webassembly</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to get somebody fired using Git</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Tue, 02 Apr 2024 19:58:32 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/how-to-get-somebody-fired-using-git-31if</link>
      <guid>https://dev.to/mauroaccorinti/how-to-get-somebody-fired-using-git-31if</guid>
      <description>&lt;h2&gt;
  
  
  This is Billy.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzi8n22y9i5j499h2bvx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzi8n22y9i5j499h2bvx7.png" alt="Stick figure with a smile and a red tie" width="326" height="352"&gt;&lt;/a&gt;&lt;br&gt;
He is a trainee developer working for an important company.&lt;/p&gt;

&lt;p&gt;Unfortunately for the company, today Billy has woken up and chosen &lt;em&gt;violence.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is because he finds learning Git very troublesome, boring and convoluted. &lt;/p&gt;

&lt;p&gt;Branches, commits, checkouts, HEADs, features, staging, oh my! &lt;/p&gt;

&lt;p&gt;It was just too much for him.&lt;/p&gt;

&lt;p&gt;But then Billy had the absolutely best worst idea.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What if I learn git by first learning what NOT to do, but then doing it anyway!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This would accomplish three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;He would learn git's most common tools by giving himself fun little challenges that would normally be prohibited.&lt;/li&gt;
&lt;li&gt;If he learned what &lt;strong&gt;not&lt;/strong&gt; to do, he could then later focus on what he &lt;strong&gt;should&lt;/strong&gt; do.&lt;/li&gt;
&lt;li&gt;Learning this way satisfies his chaotic evil tendencies. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This was sounding more and more like a good idea to Billy. This would definitely make him a better developer.&lt;/p&gt;

&lt;p&gt;There was just one problem though...&lt;/p&gt;
&lt;h3&gt;
  
  
  Git is a version control system used by developers to manage source code for software.
&lt;/h3&gt;

&lt;p&gt;Whenever something is changed, added or even deleted by somebody, Git registers who did what. &lt;/p&gt;

&lt;p&gt;If you wanted to do very bad things in, let's say, a repository owned by the company you work at, somebody could always trace it back to you.&lt;/p&gt;

&lt;p&gt;And that would DEFINETELY get you fired. &lt;/p&gt;

&lt;p&gt;So that's why Billy stole Trent's computer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4dgqmz1otq6yqcqj3vsf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4dgqmz1otq6yqcqj3vsf.png" alt="Billy the stick figure holding up a realistic laptop that reads " width="579" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trent is a big dumb-dumb who left his computer on and unprotected when he went to the bathroom.&lt;/p&gt;

&lt;p&gt;He also ate the last slice of pizza at last month's after party without asking first.&lt;/p&gt;

&lt;p&gt;With Trent's computer, Billy now has access to the same repositories, but under Trent's login credentials.&lt;/p&gt;

&lt;p&gt;And so now Billy can learn Git by first learning everything he shouldn't do, like:&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Pushing code to somebody else's branch with --force
&lt;/h2&gt;

&lt;p&gt;Let's say the current git ecosystem looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6jhhy9i977la225uatn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6jhhy9i977la225uatn.png" alt="Git Diagram of main and the co-worker's feature branch." width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Billy is currently checked out on an earlier version of another co-worker's branch. &lt;/p&gt;

&lt;p&gt;This can happen if 2 people are checked out on the same branch, but one of them starts pushing changes to the remote.  &lt;/p&gt;

&lt;p&gt;This means that Billy is behind on the branch. If he wanted to get the latest changes of the branch he currently is on, he would write into the terminal &lt;code&gt;git pull&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Fun fact:&lt;br&gt;
Git pull is actually the combination of 2 other git commands.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git fetch origin&lt;/code&gt; (which fetches the latest changes of remote WITHOUT checking out or merging it)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git merge origin/&amp;lt;branch name&amp;gt;&lt;/code&gt; (which &lt;em&gt;does&lt;/em&gt; merge your local changes to the remote. Since normally you wouldn't have local files to merge, git does what's called a "fast-forward" and you end up with the latest changes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Billy wonders what would happen if he tried pushing on this person's branch, even if he's behind on the latest changes.&lt;/p&gt;

&lt;p&gt;Normally if he tried to &lt;code&gt;git push&lt;/code&gt; some code, the attempt would fail with an error - Asking him to pull the latest changes first.&lt;/p&gt;

&lt;p&gt;(This is a safety net that's built into git to avoid having work be lost. You can't push unless you pull first!)&lt;/p&gt;

&lt;p&gt;But Billy can avoid this if he did a &lt;code&gt;git push --force&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git push --force&lt;/code&gt; is usually a big nono for developers. It's a command that forcibly overwrites the git history and lets you push your local changes despite it possibly deleting other people's work on the same branch.&lt;/p&gt;

&lt;p&gt;Billy has never used it before and is a curious boy, so he did what any curious person would do.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;He created a new file with special text inside:&lt;br&gt;
&lt;code&gt;echo "Trent was here" &amp;gt; Trent.txt&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;He committed his very important changes to the branch&lt;br&gt;
&lt;code&gt;git add Trent.txt&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git commit -m "Trent committed this"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Which makes git look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wzzbao8zv2mbs9ciuqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wzzbao8zv2mbs9ciuqy.png" alt="Git flow diagram showing how his co-workers changes disappear and Billy's new code overwrites it" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;He finishes by force-pushing his new changes to the branch
&lt;code&gt;git push --force&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After a few seconds...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Poof!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Billy's very important changes are now in Git!&lt;/p&gt;

&lt;p&gt;And at the same time, all of his co-worker's work completely disappears!&lt;/p&gt;

&lt;p&gt;If only Billy had used &lt;code&gt;git push --force-with-lease&lt;/code&gt;! &lt;/p&gt;

&lt;p&gt;&lt;code&gt;--force-with-lease&lt;/code&gt; is the safer version of the &lt;code&gt;--force&lt;/code&gt; command. It would have prevented Billy from ever overwriting his coworker's work on the remote.&lt;/p&gt;

&lt;p&gt;Oh well! What's done is done. And in the end, having fun is what matters. &lt;/p&gt;

&lt;p&gt;Billy wonders how long he has before that co-worker notices.&lt;/p&gt;

&lt;p&gt;He also wonders if there's something that's even worst he can do. Maybe... he can do something similar in Production?&lt;/p&gt;

&lt;p&gt;A light bulb goes off in Billy's head! What if he did a:&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Hard Reset on the production branch
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Git reset&lt;/code&gt; is a command that, similar to what Billy did to his co-worker, undo's the changes that have been created in a branch to a previous commit.&lt;/p&gt;

&lt;p&gt;Unlike the &lt;code&gt;git push --force&lt;/code&gt; command he learned earlier, there's nothing to push. It just rewrites the git history by (usually) uncommitting everything done up to a certain commit.&lt;/p&gt;

&lt;p&gt;There's 3 modes to the git reset command.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git reset --soft&lt;/code&gt; which moves HEAD (Head being the commit you're currently checked out on) back to the specified commit, while also undoing all the changes made. All those changes go back to staged and allow you to commit again.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git reset --mixed&lt;/code&gt; does the same as &lt;code&gt;git reset --soft&lt;/code&gt;, but leaves all the changes you've made unstaged. This is also the default mode for the git reset command. So if you write &lt;code&gt;git reset&lt;/code&gt;, that would be the same as doing &lt;code&gt;git reset --mixed&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git reset --hard&lt;/code&gt; is diabolical. Instead of undoing the changes and leaving them in staged / unstaged... it just discards them.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Poof&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;All those changes disappear when you hard reset to an old commit.&lt;/p&gt;

&lt;p&gt;So if Billy were to say... hard reset to a commit that's from, oh I don't know, &lt;strong&gt;6 months ago&lt;/strong&gt;, that would be very bad for the company.&lt;/p&gt;

&lt;p&gt;Billy smiles as he opens up the terminal.&lt;/p&gt;

&lt;p&gt;Remembering what the git ecosystem looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xwvqa9275q5f4f9oa1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xwvqa9275q5f4f9oa1p.png" alt="Git branch showing the 6 month old commit and the latest one" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Billy happily starts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Typing into the terminal &lt;code&gt;git checkout main&lt;/code&gt; which positions him on the latest commit of that branch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uses a git visual tool to find a commit from the main branch that's 6 months old.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Types &lt;code&gt;git reset --hard &amp;lt;commit hash&amp;gt;&lt;/code&gt; to erase all the changes in the main branch from the last 6 months locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finishes off by using our good friend &lt;code&gt;git push --force&lt;/code&gt; to permanently leave his local destructive changes in the remote.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After a few seconds...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Poof!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Billy successfully made some company executives very very angry!&lt;/p&gt;

&lt;p&gt;But wait a minute...&lt;/p&gt;

&lt;p&gt;It's weird that Billy was able to do that, wasn't it? After all...&lt;/p&gt;
&lt;h3&gt;
  
  
  Permissions are usually set in repositories so that nobody can push to the production branch directly.
&lt;/h3&gt;

&lt;p&gt;This prevents accidental pushing or rewriting of git history that affects the website directly.&lt;/p&gt;

&lt;p&gt;That's why something called a "Pull Request" (or a PR) exists. &lt;/p&gt;
&lt;h3&gt;
  
  
  A pull request is a proposal to merge a set of changes from one branch into another.
&lt;/h3&gt;

&lt;p&gt;And normally, other tech savvy developers first have to accept your changes before you can merge anyway.&lt;/p&gt;

&lt;p&gt;But what happens if those permissions are never set?&lt;/p&gt;

&lt;p&gt;Well, seems like anybody like Billy can come and erase everybody's hard work from the last 2 quarters in a second.&lt;/p&gt;

&lt;p&gt;He calculates he has maybe 10... no, 15 minutes before his changes to main impact in production.&lt;/p&gt;

&lt;p&gt;So Billy has to act fast. He has time for maybe one more chaotic evil thing before somebody named Trent gets in trouble.&lt;/p&gt;

&lt;p&gt;What to do...&lt;/p&gt;

&lt;p&gt;OH, Billy knows! He should:&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Expose the project's secrets and push it to production!
&lt;/h2&gt;

&lt;p&gt;Billy can easily do this by modifying the .gitignore file.&lt;/p&gt;
&lt;h3&gt;
  
  
  .gitignore is a special type of file located in your project's directory. As the name implies, it specifies which files Git should ignore and avoid letting you stage.
&lt;/h3&gt;

&lt;p&gt;This is super helpful when you have particular files you never want to upload to your repository in the first place.&lt;/p&gt;

&lt;p&gt;One of those files you &lt;em&gt;normally&lt;/em&gt; want to avoid uploading are your .env files.&lt;/p&gt;
&lt;h3&gt;
  
  
  .env files tend to be used in projects to hold environment variables you would use throughout your solution.
&lt;/h3&gt;

&lt;p&gt;They feature key/value pairs with information you &lt;em&gt;really really&lt;/em&gt; don't want to upload. Things such as API keys, database URIs, AUTH secrets and more.&lt;/p&gt;

&lt;p&gt;But Billy doesn't believe in keeping secrets to oneself.&lt;/p&gt;

&lt;p&gt;He is the hero of his story and must let the people know!&lt;/p&gt;

&lt;p&gt;So if we assume our .gitignore files looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Javascript node_modules
node_modules/

# API keys
.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then all Billy has to do is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Locate the .gitignore file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use his favorite IDE or terminal text editor to remove the .env line from the file and save it. (Which makes the file now look like this)&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Javascript node_modules
node_modules/

# API keys are gone from ignore oops
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the now changed .gitignore file to staged. Billy does this by typing &lt;code&gt;git add .gitignore&lt;/code&gt; into the terminal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Oh wait! Don't forget - Since Git now isn't ignoring the .env file, Billy has to add that too! &lt;code&gt;git add .env&lt;/code&gt; is typed into the terminal as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time for committing! Billy does this with this line: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;git commit -m "FREEEEEEDOOOOOMMM!!!! #TrentWasHere"&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Final step! Time to push to the main branch. And since again, for some reason there isn't any permissions set that would stop Billy, he can write &lt;code&gt;git push --force&lt;/code&gt; into the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After a few seconds...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Poof!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;"Liberté, égalité, fraternité" whispers Billy with glee! Right as he leaves Trent's computer where it belongs.&lt;/p&gt;

&lt;p&gt;Good thing too, as he just heard the sound of a toilet flush from a room away.&lt;/p&gt;

&lt;p&gt;Billy runs back to his desk, making it just in time before anybody notices.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Phew&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Seems like Trent finally came back from his bathroom break and sat down at his desk.&lt;/p&gt;

&lt;p&gt;But right before he could even open his laptop, Trent's phone started ringing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ring ring, ring ring&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Billy waited in anticipation as he saw Trent slowly pick up his phone.&lt;/p&gt;

&lt;p&gt;"Hello?"&lt;/p&gt;

&lt;p&gt;"TRENT. OFFICE. NOW."&lt;/p&gt;

&lt;p&gt;Billy could hear the yelling from Trent's phone from 5 desk's away.&lt;/p&gt;

&lt;p&gt;"WOAH what happened boss?"&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;"I didn't do anything lik-"&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;"What do you something happened to production?&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;"I'm on my way"&lt;/p&gt;

&lt;p&gt;And as Trent quickly runs to the office, probably for the screaming of his lifetime.&lt;/p&gt;

&lt;p&gt;Billy sits back, relaxes and can finally say:&lt;/p&gt;

&lt;p&gt;"I'm a better developer today".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7627w4yj05yxqwiomyty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7627w4yj05yxqwiomyty.png" alt="Billy the stick figure is smiling" width="326" height="352"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  This was the dumbest article I have ever written.
&lt;/h2&gt;

&lt;p&gt;If you like my sense of humor then I think you'll like my newsletter "Exceptional Frontend" - the most entertaining front-end newsletter on the web.&lt;/p&gt;

&lt;p&gt;It's for any devs out there that want a front-end centered newsletter that tries to be different from everybody else. Big focus was put into making it unique and most importantly — FUN!&lt;/p&gt;

&lt;p&gt;While also at the same time helping devs become exceptional at what they do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;You can sign up here.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>coding</category>
      <category>github</category>
      <category>learning</category>
    </item>
    <item>
      <title>How To Measure Environmental Sustainability In Software Development</title>
      <dc:creator>Mauro Accorinti</dc:creator>
      <pubDate>Wed, 27 Mar 2024 01:29:58 +0000</pubDate>
      <link>https://dev.to/mauroaccorinti/how-to-measure-environmental-sustainability-in-software-development-4539</link>
      <guid>https://dev.to/mauroaccorinti/how-to-measure-environmental-sustainability-in-software-development-4539</guid>
      <description>&lt;p&gt;Ladies and Gentlemen — I present to you &lt;a href="https://climateclock.world/science#deadline" rel="noopener noreferrer"&gt;the calculated amount of time we have until the world’s average temperature goes over 1.5 Celsius (or 2.7° Fahrenheit).&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qzzlvje38qbgpmqu83r.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qzzlvje38qbgpmqu83r.gif" alt="Countdown timer titled “Climate Clock” that says 5 years, 126 days, 01 hours and 36 minutes" width="600" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While a 1.5 difference doesn’t *sound *like much…&lt;/p&gt;

&lt;p&gt;These small numbers actually mean **huge **changes globally.&lt;/p&gt;

&lt;p&gt;(That’s why the word average is so important).&lt;/p&gt;

&lt;p&gt;Basically it gives us a few things to worry about.&lt;/p&gt;

&lt;p&gt;Things like &lt;strong&gt;higher sea levels&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;More &lt;strong&gt;frequent natural disasters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Floods&lt;/strong&gt;, &lt;strong&gt;hurricanes **and **wildfires&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And &lt;em&gt;of course&lt;/em&gt;, we can’t forget those pesky **extreme heat waves **that would happen world-wide.&lt;/p&gt;

&lt;p&gt;Basically this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwt4x3k8e5fvwmvuzxa63.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwt4x3k8e5fvwmvuzxa63.gif" alt="Spinning globe on fire" width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oh but that wouldn’t be the end. Because there are also &lt;strong&gt;side effects&lt;/strong&gt; we’d have to consider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Economies and industries would change.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agriculture will be impossible in certain areas.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different kinds of plant and wildlife would disappear **(&lt;a href="https://www.forbes.com/sites/trevornace/2020/02/24/70-90-percent-of-coral-reefs-will-disappear-over-the-next-20-years-scientists-say/?sh=150cc4f17d87" rel="noopener noreferrer"&gt;coral reefs especially&lt;/a&gt;)&lt;/strong&gt;.**&lt;/p&gt;

&lt;h2&gt;
  
  
  A lot of things will change sooner rather than later.
&lt;/h2&gt;

&lt;p&gt;That’s why environmental sustainability has become such an important topic in the last decade and why projects like the &lt;a href="https://climateclock.world/science#deadline" rel="noopener noreferrer"&gt;climate clock&lt;/a&gt; have become key in raising awareness and incentivizing action to go green.&lt;/p&gt;

&lt;p&gt;Awareness can help create small actions. Small actions can snowball into big changes.&lt;/p&gt;

&lt;p&gt;But what does that mean for us in the software development field?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A lot actually.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’re sitting in an era of exponential technological advancement the likes of which **nobody **has ever seen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq9wpzxe81646n8k1h6x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq9wpzxe81646n8k1h6x.gif" alt="Woman with a prosthetic that she tries on for the first time and is surprised" width="520" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s take the prosthetic arms industry as a benchmark, where &lt;a href="https://www.freethink.com/series/challengers/prosthetic-arm" rel="noopener noreferrer"&gt;one company has successfully made 90% cost-effective superior alternatives&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With that level of progress in just a few years, could you even begin to imagine what things will look like in the next 10?&lt;/p&gt;

&lt;p&gt;Well guess what?&lt;/p&gt;

&lt;p&gt;We’re at the FOREFRONT of these changes.&lt;/p&gt;

&lt;p&gt;**We’re **the ones who can decide and create a healthier, better status quo.&lt;/p&gt;

&lt;p&gt;But that’s why it’s important for everybody, from devs to designers to managers, to first understand the exact trajectory we’re going and what our current tech is causing globally.&lt;/p&gt;

&lt;p&gt;Cause if we don’t…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pfff, who will right?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So let’s start with the obviously-not-so-obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  How software affects the planet
&lt;/h2&gt;

&lt;p&gt;By itself, software doesn’t do anything. It doesn’t “exist”.&lt;/p&gt;

&lt;p&gt;It’s just a collection of symbols and characters that somebody somewhere once put together to represent logic and design.&lt;/p&gt;

&lt;p&gt;If you never run it, nothing happens. It doesn’t emit anything.&lt;/p&gt;

&lt;p&gt;It’s “green”.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yet, we know better.
&lt;/h2&gt;

&lt;p&gt;It doesn’t exist in a vacuum. It lives alongside the hardware that runs it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F0%2An7EWBVvRIoi0s1wj" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F0%2An7EWBVvRIoi0s1wj" alt="Closeup of a circuit board" width="1200" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software is what gives hardware the instructions of what to do, what resources to use and for how long to use them. Circuitry and really small components heat up to do this, letting us process, download and upload the data we need.&lt;/p&gt;

&lt;p&gt;Unfortunately, running this hardware isn’t free. These actions use up energy and electricity to source their execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software makes hardware run → Hardware uses electricity -&amp;gt; Electricity production emits greenhouse gasses.
&lt;/h2&gt;

&lt;p&gt;Wait, producing electricity emits greenhouse gasses?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F698y94qxeb4x4d4fkqbj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F698y94qxeb4x4d4fkqbj.gif" alt="Meme of Seymour from the Simpsons saying Yes!" width="498" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How electricity production emits greenhouse gasses
&lt;/h2&gt;

&lt;p&gt;Every country’s electrical sector, to some degree, needs to burn fossil fuels for production to meet demand.&lt;/p&gt;

&lt;p&gt;Even with the incredible advancements we’ve made with greener methods like harnessing solar or wind, we still haven’t reached a level where zero emissions in production are possible.&lt;/p&gt;

&lt;p&gt;And to give you an idea of how bad this can be…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.epa.gov/ghgemissions/sources-greenhouse-gas-emissions#electricity." rel="noopener noreferrer"&gt;In 2019, electricity production accounted for 25% of total emissions in the US alone, becoming the second largest source right behind the transportation sector&lt;/a&gt;. And we’re expecting these numbers to grow in the coming years.&lt;/p&gt;

&lt;p&gt;With this, we’re starting to see how software plays its part in all of this.&lt;/p&gt;

&lt;p&gt;What we haven’t talked about is when and how exactly software forces hardware to use up more or less energy in any given time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How software causes us to use electricity
&lt;/h2&gt;

&lt;p&gt;In the context of the software production sector, there’s 2 main areas where we can say electricity is needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;During the production of the software&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;During the use of the software by the users themselves&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can think of production as everything involved in a project cycle. The hardware that is run to power online meetings, design programs, development, planning, testing, internet connections, fixing errors, monitors, battery charges, office lights, Spotify, everybody’s air conditioning, cell phone use — everything you would associate with an electronic resource being used during a project.&lt;/p&gt;

&lt;p&gt;For the second case I mentioned, we’re talking about how much electricity is needed to run the software for the users. (Everything related to what happens after development is done and is being maintained)&lt;/p&gt;

&lt;p&gt;Using a simple example, you are on a website right now. When you decided to click on the link that led you here, your browser connected you with the web server that holds the code and information of this website.&lt;/p&gt;

&lt;p&gt;In (hopefully) just a few seconds, your browser downloaded a few files from that webserver.&lt;/p&gt;

&lt;p&gt;All of this so that your browser can then run the code (what we usually know as HTML, CSS and JavaScript) to reproduce the structure, design and logic that a team of developers wanted you to see to read this article.&lt;/p&gt;

&lt;p&gt;All of that consumes energy along the way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6akw2qv6o7mcwu2ks83.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6akw2qv6o7mcwu2ks83.jpeg" alt="Billy Mays meme of him saying “BUT WAIT THERE’S MORE”" width="474" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  There’s actually more to this other than these two scenarios.
&lt;/h2&gt;

&lt;p&gt;In both cases, we’d still need to consider the infrastructures, servers and services that need to be run alongside the software. The hardware that is run that we DON’T see.&lt;/p&gt;

&lt;p&gt;Think datacenters, databases, cloud computing, CRMs… all the technology needed just to run and maintain the handling of data during both the production and use for the user.&lt;/p&gt;

&lt;p&gt;With data centers for example, they use electricity for the running and cooling of their hardware. No matter how indirect, we still have to take this into account if we want to know all the variables.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This puts software into a strange place, doesn’t it?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It’s as if software is an invisible waste product.
&lt;/h2&gt;

&lt;p&gt;It’s not always obvious what happens every time we turn our computers on for the day. Or every time we need to build and deploy code.&lt;/p&gt;

&lt;p&gt;A lot of things happen in the background that we directly don’t see.&lt;/p&gt;

&lt;p&gt;So is there a way to reduce some of this waste, however small? And do so systematically so that we can set it and forget it?&lt;/p&gt;

&lt;p&gt;Can we make small changes that can be the catalyst to bigger change?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Let’s find out.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How can you measure the sustainability of software?
&lt;/h2&gt;

&lt;p&gt;Measuring how “green” a given piece of software is has always been pretty tricky. Some of the reasons are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Software rarely runs by itself. On a computer, there are usually hundreds of other small programs, processes and services running on your device at the same time. Unless tested under very specific conditions, knowing the energy consumed from one or a collection of processes is rarely straight forward.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We mentioned before that sometimes software uses other services outside itself. Going back to the data centers example — your project’s choice between a data center that chooses to burn fossil fuels vs one that opts to use greener energy changes the total number. Even then, you usually don’t know how much energy used by that data center was dedicated to your software. Not to mention a lot of times, data centers don’t report on electricity used! So finding and choosing these numbers isn’t easy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Depending on things like what hardware and OS you’re running on, the same program run on different machines can use up different amounts of resources than the other. Heck, even the same kind of machine in some cases can have different electrical use.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Take modern operating systems for example: After just a few weeks of being installed, the machine’s OS learns to optimize its resource allocation better. For this reason, a new machine that’s been running for a few weeks ends up consuming **less **energy than one that’s been installed yesterday.&lt;/p&gt;

&lt;p&gt;OH! We also can’t forget that virtual machines are also a thing — pieces of software that simulate other pieces of software. Would the energy used on a simulated machine be the same as one run on a non-simulated machine? Would resource allocation and usage the same? Probably not!&lt;/p&gt;

&lt;p&gt;So no, while it would be almost impossible for us to get practical measurements of sustainability in our software, the best we can do is estimate.&lt;/p&gt;

&lt;p&gt;But even that isn’t always easy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.researchgate.net/publication/330901801_Classifying_the_Measures_of_Software_Sustainability" rel="noopener noreferrer"&gt;The best attempt I’ve found of trying to create estimations has been this study which I think is worth a read.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the case of websites, there are tools like &lt;a href="https://www.websitecarbon.com/" rel="noopener noreferrer"&gt;Website Carbon&lt;/a&gt; which do give us a good number, down to how much CO2 is used for every page open.&lt;/p&gt;

&lt;p&gt;In most other cases…&lt;/p&gt;

&lt;p&gt;Outside of measuring a device’s general electricity use and estimating any external services your software uses, we’ll never have one magic number.&lt;/p&gt;

&lt;p&gt;Although… There are other indirect numbers we can measure instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to improve the sustainability of code and projects
&lt;/h2&gt;

&lt;p&gt;In the world of sustainability, there is something called “the 7 Rs”.&lt;/p&gt;

&lt;p&gt;These are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Refuse&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reduce&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reuse&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Re-purpose&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repair&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Recycle&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea behind these is if we try and follow these 7 principles, we’ll be on a road to a more sustainable future.&lt;/p&gt;

&lt;p&gt;So maybe, instead of measuring things like the amount of waste or electricity used in our work and reducing that…&lt;/p&gt;

&lt;p&gt;An alternative could be to measure our progress in implementing these principles in our work, measuring that progress and improving upon it that way.&lt;/p&gt;

&lt;p&gt;It’s not perfect, since these 7 Rs are associated with physical products and their life cycle. Not all of them might not be applicable in our work.&lt;/p&gt;

&lt;p&gt;But hey, let’s see which ones do. Starting with:&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Refuse — Say no to decisions that could create waste.
&lt;/h2&gt;

&lt;p&gt;Originally this principle is related to reducing buying decisions or actions that could create extra waste. Things like buying too much food and risking it going bad, avoiding products that aren’t sustainable or ones that create a lot of waste.&lt;/p&gt;

&lt;h2&gt;
  
  
  For software projects, refusing could mean:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Saying no (or negotiating) client requests or projects that go against our sustainability values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refusing or negotiating a client’s new software requirement with a more sustainable alternative.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refuse going with non-green data centers or services in your software and opt into using more sustainable ones.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refuse integrating full libraries or packages in your solution when you know you’ll only use a small portion of its code. Prefer using custom code or smaller and lighter libraries.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only drawbacks to this is it might lead to projects that might end up being more expensive or time consuming for the client and development.&lt;/p&gt;

&lt;p&gt;Who knows though. Maybe being able to position your proposals as a “sustainability focused project that follows our strict green values” could make the extra expense and time worth it for certain companies. And that market will be growing in the future.&lt;/p&gt;

&lt;p&gt;As a side note, this principle seems to land more as a high level issue. One that will depend on a company’s policies and a sustainability approach to selling.&lt;/p&gt;

&lt;p&gt;It will probably take a little creativity to execute effectively.&lt;/p&gt;

&lt;p&gt;Onwards!&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Reduce — Minimize waste
&lt;/h2&gt;

&lt;p&gt;A lot of what we do creates waste. The original principle relates to actions we can do to reduce the waste we might produce. (Instead of out right reducing, we’re looking for ways to minimize damage)&lt;/p&gt;

&lt;p&gt;Examples include utilizing reusable bags for groceries or choosing products that create less waste would go in this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  For software projects, reducing could mean:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Opting to go with (or upsell) more sustainable or greener projects than wasteful ones.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing systems or guidelines for those involved in a project to reduce their own electricity use. Something as simple as lowering your screen brightness from 100% to 90% can be big in the long run.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use good design principles to minimize a user’s time spent on your software trying to find something. An x amount of CO2 is produced for every page click. What would happen if on average users clicked on one less page per session?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create solutions that reduce the use of resources on developers and user devices. This includes things like optimizing, reducing file sizes, compressing, minifying and refactoring code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One tool that could be incredibly helpful for estimating resource use is &lt;a href="https://yourbasic.org/algorithms/big-o-notation-explained/" rel="noopener noreferrer"&gt;Big O Notation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s a concept used in computer science that estimates how fast an algorithm grows over time. The idea is the more “complicated” it is, the more memory and CPU resources it will consume. So if let’s say you manage to lower the O(n) number down, then:&lt;/p&gt;

&lt;p&gt;Less resources used over time -&amp;gt; less electricity used per execution -&amp;gt; more sustainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 &amp;amp; 4) Reuse and Repurposing — Extend the life of products.
&lt;/h2&gt;

&lt;p&gt;Products don’t always have to be “single use”. Most of the time they can be reutilized more than once or in new ways. Even if not by you, you can give it to somebody to use them themselves.&lt;/p&gt;

&lt;p&gt;Or even better, with a little creativity they can be used in ways they weren’t intended for. Old clothes can be cut up to be used as rags. Paint buckets can be turned into pots for plants.&lt;/p&gt;

&lt;h2&gt;
  
  
  For software projects, reusing and repurposing could mean:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reutilizing already optimized code, templates, emails, proposals and designs from other projects to reduce development time in newer, similar projects. Maybe even share that with other co-workers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contributing to open source projects and libraries (or you know, stack overflow). This will not only help you but also other developers with their own projects or with their own problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repurposing existing designs for new projects. Having a swipe file of designs from past projects can be a huge time saver for designers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea behind it is: If I created something, is there a chance I can “extend” its life by saving it and helping my future self, a future team or somebody else in the process?&lt;/p&gt;

&lt;p&gt;As an extra and important side note, &lt;a href="https://blog.ndepend.com/code-reuse-not-good-goal/" rel="noopener noreferrer"&gt;here’s an article by Erik Dietrich on the code reuse philosophy&lt;/a&gt;. When it comes to code, it’s a good perspective to put effort into avoiding duplication. Not necessarily focusing on reusing code. Quite a distinction.&lt;/p&gt;

&lt;h2&gt;
  
  
  As for the last three Rs…
&lt;/h2&gt;

&lt;p&gt;it seems like they don’t apply, since software doesn’t cause physical waste (unless we’re talking about hardware, but that’s a talk for another day). There’s no need to repair, rot or recycle the software itself.&lt;/p&gt;

&lt;p&gt;Hopefully this article helped clear the air around the invisible impact software has on our lives and what actions, no matter how little, we can start to do towards a greener future.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is only the tip of the iceberg I’m afraid.
&lt;/h2&gt;

&lt;p&gt;There’s still a lot to talk about this topic and how this could be implemented professionally in our day to day. Unfortunately, these are the kind of changes that will only happen with purposeful action.&lt;/p&gt;

&lt;p&gt;It would involve being systematic in its implementation and as part of a company’s culture.&lt;/p&gt;

&lt;p&gt;The hardest part would probably come from choosing &lt;strong&gt;what **to measure, the **action **of measuring itself and the **behavior change&lt;/strong&gt; needed to implement it as a system.&lt;/p&gt;

&lt;p&gt;Even then, success will probably depend on putting good focus on the easy + high impact actions.&lt;/p&gt;

&lt;p&gt;Sustainability will always be a hard metric to prioritize, especially if things like profit or growth take precedence in the long term.&lt;/p&gt;

&lt;p&gt;It’s our job to find opportunities where we’re able to make that happen.&lt;/p&gt;

&lt;p&gt;Change the status quo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Helpful Resources used for research of this article:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.forbes.com/sites/trevornace/2020/02/24/70-90-percent-of-coral-reefs-will-disappear-over-the-next-20-years-scientists-say/?sh=150cc4f17d87" rel="noopener noreferrer"&gt;https://www.forbes.com/sites/trevornace/2020/02/24/70-90-percent-of-coral-reefs-will-disappear-over-the-next-20-years-scientists-say/?sh=150cc4f17d87&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.epa.gov/ghgemissions/sources-greenhouse-gas-emissions#electricity." rel="noopener noreferrer"&gt;https://www.epa.gov/ghgemissions/sources-greenhouse-gas-emissions#electricity.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.researchgate.net/publication/330901801_Classifying_the_Measures_of_Software_Sustainability" rel="noopener noreferrer"&gt;https://www.researchgate.net/publication/330901801_Classifying_the_Measures_of_Software_Sustainability&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.websitecarbon.com/" rel="noopener noreferrer"&gt;https://www.websitecarbon.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://yourbasic.org/algorithms/big-o-notation-explained/" rel="noopener noreferrer"&gt;https://yourbasic.org/algorithms/big-o-notation-explained/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.ndepend.com/code-reuse-not-good-goal/" rel="noopener noreferrer"&gt;https://blog.ndepend.com/code-reuse-not-good-goal/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.ipcc.ch/sr15/" rel="noopener noreferrer"&gt;https://www.ipcc.ch/sr15/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.mcc-berlin.net/en/research/co2-budget.html" rel="noopener noreferrer"&gt;https://www.mcc-berlin.net/en/research/co2-budget.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.nytimes.com/2020/09/20/arts/design/climate-clock-metronome-nyc.html" rel="noopener noreferrer"&gt;https://www.nytimes.com/2020/09/20/arts/design/climate-clock-metronome-nyc.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=q67IWTQ55vM&amp;amp;ab_channel=SciShow" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=q67IWTQ55vM&amp;amp;ab_channel=SciShow&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npr.org/2021/05/26/1000465487/earth-is-barreling-toward-1-5-degrees-celsius-of-warming-scientists-warn" rel="noopener noreferrer"&gt;https://www.npr.org/2021/05/26/1000465487/earth-is-barreling-toward-1-5-degrees-celsius-of-warming-scientists-warn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://climate.nasa.gov/news/2865/a-degree-of-concern-why-global-temperatures-matter/" rel="noopener noreferrer"&gt;https://climate.nasa.gov/news/2865/a-degree-of-concern-why-global-temperatures-matter/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.axosoft.com/dev-blog/rules-for-being-a-green-software-engineer" rel="noopener noreferrer"&gt;https://www.axosoft.com/dev-blog/rules-for-being-a-green-software-engineer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sciencedaily.com/releases/2021/03/210302185414.htm" rel="noopener noreferrer"&gt;https://www.sciencedaily.com/releases/2021/03/210302185414.htm&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  I run the most entertaining front-end newsletter on the web!
&lt;/h2&gt;

&lt;p&gt;“Exceptional Frontend” is for any devs out there that want a front-end centered newsletter that tries to be different from everybody else. Big focus was put into making it unique and most importantly — FUN!&lt;/p&gt;

&lt;p&gt;While also at the same time helping devs become exceptional at what they do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exceptional-frontend.ck.page/sign-up" rel="noopener noreferrer"&gt;You can sign up here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>sustainability</category>
      <category>softwaredevelopment</category>
      <category>learning</category>
      <category>software</category>
    </item>
  </channel>
</rss>
