<?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: Sylwia Vargas</title>
    <description>The latest articles on DEV Community by Sylwia Vargas (@sylwiavargas).</description>
    <link>https://dev.to/sylwiavargas</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%2F283021%2F487202dc-33a7-402d-9e81-e57602edd620.jpeg</url>
      <title>DEV Community: Sylwia Vargas</title>
      <link>https://dev.to/sylwiavargas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sylwiavargas"/>
    <language>en</language>
    <item>
      <title>Adding workflows to an Astro app with Inngest</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Mon, 15 Jan 2024 14:24:39 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/adding-workflows-to-an-astro-app-with-inngest-4577</link>
      <guid>https://dev.to/sylwiavargas/adding-workflows-to-an-astro-app-with-inngest-4577</guid>
      <description>&lt;p&gt;Inngest has recently extended support for Astro!&lt;/p&gt;

&lt;p&gt;If you’re familiar with both Astro and Inngest, you can read about &lt;a href="https://inngest.com/docs/sdk/serve#framework-astro"&gt;how to set up the Inngest API in Astro&lt;/a&gt; or explore &lt;a href="https://github.com/inngest/inngest-js/tree/main/examples/framework-astro"&gt;the Inngest and Astro 'Hello World' example&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you’re new to either technology, read on to learn how Inngest can help Astro developers to build reliable workflows, background jobs, and long-running processes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s so special about Astro?
&lt;/h2&gt;

&lt;p&gt;Astro is a web framework specializing in content-driven websites. It has won the hearts of the dev community thanks to its excellent DX, thriving Discord server, or maybe it’s Houston, their lovely mascot? 💜 By reducing JavaScript overhead, &lt;a href="https://docs.astro.build/en/concepts/why-astro/#fast-by-default"&gt;Astro pages load fast&lt;/a&gt; while also scoring high on SEO and accessibility measures.&lt;/p&gt;

&lt;p&gt;Astro’s most common use cases include blogs, marketing sites, and SaaS websites. To see what's possible, visit &lt;a href="https://astro.build/themes/"&gt;the rich collection of themes&lt;/a&gt; (templates) on their website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using API endpoints in Astro
&lt;/h2&gt;

&lt;p&gt;Astro is perhaps best known for building blogs and marketing pages. Because of this, a common misconception about Astro is that it is primarily a static site generator. This, however, couldn’t be further from the truth.&lt;/p&gt;

&lt;p&gt;Although Astro defaults to a static rendering mode, you can opt in to &lt;a href="https://docs.astro.build/en/core-concepts/rendering-modes/"&gt;a server-rendered mode&lt;/a&gt;, or even a hybrid mode combining the two. Most Astro elements (pages, routes, and API endpoints) can be either pre-rendered at build time or rendered on the server at request time/on demand.&lt;/p&gt;

&lt;p&gt;Astro also supports custom API endpoints, which become available as API routes under your site. You can use them for tasks like accessing a database, authentication, or supercharging your website with more a complex functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom API Endpoint use cases
&lt;/h2&gt;

&lt;p&gt;Static pages are specifically well-suited for sites where content changes infrequently. They can be generated and deployed quickly, such as simple blogs, portfolios, e-commerce landing pages, or documentation.&lt;/p&gt;

&lt;p&gt;However, there are benefits to adding your API routes into your Astro codebase, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It co-locates the frontend code with the serverless functions and processes, reducing context-switching.&lt;/li&gt;
&lt;li&gt;The product team can manage the E2E experience instead of having to rely on cross-team collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Endpoints are an easy way to add synchronous backend functionality to your website, but what about asynchronous long-running processes and background jobs?&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding long-running processes into an Astro app
&lt;/h3&gt;

&lt;p&gt;In addition to building websites, product teams commonly own other customer touchpoints such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;drip marketing campaigns,&lt;/li&gt;
&lt;li&gt;email notifications systems,&lt;/li&gt;
&lt;li&gt;payment workflows (processing payments, saving information, sending an email to the user, updating the stock, sending a shipment order)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moreover, product engineers are often responsible for long-running tasks that may require scheduling, queuing, retries, and monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scheduling posts to be published,&lt;/li&gt;
&lt;li&gt;chaining LLM interactions,&lt;/li&gt;
&lt;li&gt;responding to a webhook from an external system when a new user signs up,&lt;/li&gt;
&lt;li&gt;orchestrating backend tasks (for example, triggering a queue of tasks whenever a new user is created).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But imagine that an individual product engineer could own the user flow end to end, and implement the entire functionality as part of the same codebase. In most cases, this means a lot of communication between the frontend and backend components, which, in turn, translates into: “as an engineer, you will be endlessly context-switching between different codebases.”&lt;/p&gt;

&lt;p&gt;This is where Inngest comes in handy. Inngest takes care of making complex workflows easy to build, manage, and scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Inngest?
&lt;/h2&gt;

&lt;p&gt;Inngest is the &lt;strong&gt;reliability layer&lt;/strong&gt; for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.&lt;/p&gt;

&lt;p&gt;In other words, Inngest makes it easy to build, manage, and execute reliable workflows and background jobs. “Reliable” in this context means that if a task fails, it will not only automatically retry but also provide you with all the information you need to debug it safely on the Inngest platform&lt;/p&gt;

&lt;h2&gt;
  
  
  How to build complex workflows with Inngest in Astro
&lt;/h2&gt;

&lt;p&gt;Imagine you’d like to send an email notification to users whenever a certain event happens. Without a tool like Inngest, you'd be responsible for task scheduling, execution, and handling retries when the task failed for whatever reason, likely requiring a team of specialists and significant resources.&lt;/p&gt;

&lt;p&gt;Instead, a single engineer, product manager, or even indie hacker can use Inngest to handle the execution but also see the &lt;a href="https://inngest.com/docs/guides/logging"&gt;error logs&lt;/a&gt;, have the &lt;a href="https://inngest.com/docs/functions/retries"&gt;failed tasks be automatically retried&lt;/a&gt;, and obtain useful metadata.&lt;/p&gt;

&lt;p&gt;All of this is done right from your own codebase — you own the code. Here’s how it’s done:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You implement the business logic in your Astro endpoint.&lt;/li&gt;
&lt;li&gt;The endpoint is exposed to Inngest.&lt;/li&gt;
&lt;li&gt;The Inngest platform will call the endpoint to execute the logic you defined at the right moments. In this case, Inngest will call your function which then sends the email from your server.&lt;/li&gt;
&lt;li&gt;If for some reason the function fails, Inngest will retry as many times as you’ve specified.&lt;/li&gt;
&lt;li&gt;The Inngest dashboard will provide you with helpful information and tools (such as logs and manual function retrying).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Adding background jobs to static Astro sites
&lt;/h2&gt;

&lt;p&gt;But Inngest is not just for Astro developers. Sometimes, some of your business workflows might exist outside of your Astro codebase (sadly).&lt;/p&gt;

&lt;p&gt;Being language and framework agnostic, Inngest works across your entire system. You can host different parts of your workflows in different codebases and they can still communicate and invoke with each other via Inngest, without the usual mess of distributed systems (service discoverability, orchestration, retries, monitoring).&lt;/p&gt;

&lt;p&gt;You can also &lt;a href="https://inngest.com/docs/events"&gt;send an event&lt;/a&gt; from an Astro site that triggers an Inngest function in &lt;em&gt;another&lt;/em&gt; codebase.&lt;/p&gt;

&lt;p&gt;In other words, a function owned by the product team can live in the Astro site and other functions in your backend codebase. At the moment, Inngest has three SDKs available (&lt;a href="https://inngest.com/docs/reference/typescript"&gt;TypeScript/JavaScript&lt;/a&gt;, &lt;a href="https://inngest.com/docs/reference/python"&gt;Python&lt;/a&gt;, &lt;a href="https://pkg.go.dev/github.com/inngest/inngestgo"&gt;Go&lt;/a&gt;) but others are planned as well -- check &lt;a href="https://roadmap.inngest.com/roadmap"&gt;Inngest roadmap&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started now
&lt;/h2&gt;

&lt;p&gt;If you'd like to learn more about Inngest, head to our &lt;a href="https://inngest.com/docs/quick-start"&gt;Quick Start Guide&lt;/a&gt; for a guided tour around the &lt;a href="https://inngest.com/docs/local-development#inngest-dev-server"&gt;Inngest Dev Server&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or, jump right in and explore the code yourself by starting a new Astro and Inngest starter project with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create astro@latest &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--template&lt;/span&gt; inngest/inngest-js/examples/framework-astro inngest-astro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjs4lcqkdmrbgmdqhmsl7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjs4lcqkdmrbgmdqhmsl7.png" alt="Template landing page" width="800" height="673"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, open the Astro development server at &lt;a href="http://localhost:3000/"&gt;http://localhost:3000&lt;/a&gt; in your browser and follow the instructions on the landing page 💜&lt;/p&gt;




&lt;p&gt;Do you have any questions about Astro+Inngest? Or ideas for apps you wanna build? Join our Inngest community on &lt;a href="https://www.inngest.com/discord"&gt;Discord&lt;/a&gt; or reach out on &lt;a href="https://twitter.com/inngest"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy shipping!&lt;/p&gt;

</description>
      <category>astro</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Talk Notes: "Simple Made Easy" by Rich Hickey (2011)</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Tue, 28 Mar 2023 18:11:00 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/talk-notes-simple-made-easy-by-rich-hickey-2011-39oo</link>
      <guid>https://dev.to/sylwiavargas/talk-notes-simple-made-easy-by-rich-hickey-2011-39oo</guid>
      <description>&lt;p&gt;✨ &lt;strong&gt;What is this post about&lt;/strong&gt;: As a part of my professional growth, I make time to watch tech talks. Previously, I'd just watch them but now I take and publish notes for future reference.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Talk:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=SxdOUGdseq4"&gt;"Simple Made Easy"&lt;/a&gt; by Rich Hickey&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;One-paragraph summary&lt;/strong&gt;: Rich Hickey, the author of Clojure and designer of Datomic, is a software developer with over 30 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and fingerprinting, database design, yield management, exit poll systems, and machine listening, in a variety of languages. This keynote was given at Strange Loop 2011, and is perhaps the best known and most highly regarded of Rich's many excellent talks, ushering in a new way to think about the problems of software design and the constant fight against complexity.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Impression&lt;/strong&gt;: I loved this talk. Plenty of food for thought, both with regards to my engineering work and Developer Relations. Even though the talk was delivered over a decade ago, most points are still very much relevant - and many discussions are still ongoing. That is a testament to how well-planned this talk was, but also to that some themes in the tech community discourse are universal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"We need to build simple systems if we want to build good systems."&lt;/li&gt;
&lt;li&gt;Word origins

&lt;ul&gt;
&lt;li&gt;simple - roots are 'sim' and 'plex', which means 'one fold' or 'one braid'&lt;/li&gt;
&lt;li&gt;complex - at roots, it means 'braided together'&lt;/li&gt;
&lt;li&gt;easy - at roots, it means 'lie near' (adjacent)&lt;/li&gt;
&lt;li&gt;hard - at roots, means 'strong'&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  "Simple"
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Simple things are like one fold: they have one role, one task, one objective, one concept; it is focused&lt;/li&gt;
&lt;li&gt;There might be many instances of the same simple thing - and it remains simple as long as these instances are not mingled&lt;/li&gt;
&lt;li&gt;The simplicity can be objectively stated&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;my side note&lt;/em&gt;: simple is a language of fairy tales&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  "Easy"
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Easy things are near, at hand, easy to obtain, they are at reach; in software, that would be an easy reach like on our hard drive, tool set, IDE&lt;/li&gt;
&lt;li&gt;Easy things are near to our understanding, our skillset, they are familiar&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;my side note&lt;/em&gt;: easy is Swedish because to me it looks like English and German&lt;/li&gt;
&lt;li&gt;Easy things are near our capabilities&lt;/li&gt;
&lt;li&gt;Easy is relative, it depends on the context an individual has&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Construct vs Artifact
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Construct: "We program with constructs. We have programming languages. We use particular libraries, and those things, in and of themselves, when we look at them, like when we look at the code we write, have certain characteristics in and of themselves."&lt;/li&gt;
&lt;li&gt;Artifacts: "But we're in a business of artifacts. We don't ship source code, and the user doesn't look at our source code and say, "Ah, that's so pleasant." They run our software, and they run it for a long period of time. (...) All of that stuff, the running of it, the performance of it, the ability to change it all is an attribute of the artifact, not the original construct."&lt;/li&gt;
&lt;li&gt;We focus too much on the construct (the programming languages)

&lt;ul&gt;
&lt;li&gt;Even though the users are infatuated with the artifact (say, the UI), the developers focus on the construct (the library)&lt;/li&gt;
&lt;li&gt;Our employers are infatuated with the "easiness" of the contruct, too - it's "easy" to replace a programmer and this programmer will know how to move around the codebase and use the tools because they are "easy" - near their context and familiar (though it's not necessarily easy in the sense of whether the person has the capabilities to actually code in this codebase)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;We should focus on the long-term results of the use of the artifact

&lt;ul&gt;
&lt;li&gt;Does the software do what it's supposed to do?&lt;/li&gt;
&lt;li&gt;Is it of high quality?&lt;/li&gt;
&lt;li&gt;Can we rely on it doing what it's supposed to do?&lt;/li&gt;
&lt;li&gt;Can we fix problems when they arise?&lt;/li&gt;
&lt;li&gt;And if we're given a new requirement, can we change it?&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Conclusion: We must assess constructs by their artifacts

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;my side note&lt;/em&gt;: this is a really interesting framing; to me, it's really helpful because I have been thinking a lot about how much talk there is about some libraries (say, React) and so little talk about how inaccessible the resulting UI is&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Working with limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Only the things we can understand we can make reliable&lt;/li&gt;
&lt;li&gt;The more extensible, flexible, and dynamic stuff is, the more tradeoff there is in our ability to understand it&lt;/li&gt;
&lt;li&gt;We can only consider a few things at a time; this is a limited number

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;my side note&lt;/em&gt;: some research suggests that &lt;a href="https://sloanreview.mit.edu/article/the-impossibility-of-focusing-on-two-things-at-once/"&gt;we can't focus on more than one thing at a time&lt;/a&gt; and other that we can keep track of &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3197943/"&gt;limited number of things&lt;/a&gt;, like 2-4, at the same time&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;"If things are intertwined together, we lose the the ability to take them in isolation."

&lt;ul&gt;
&lt;li&gt;Every intertwining is adding more burden - and the intertwining (braiding things together) is going to limit our ability to understand systems&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Conclusion: complexity undermines understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Changing things
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"What is the impact of this potential change?": if you're going to change software, you're going to need to analyze what it does and make decisions about what it ought to do&lt;/li&gt;
&lt;li&gt;"And what parts of the software do I need to go to to effect the change?": if you can't reason about your program, you can't make these decisions without fear&lt;/li&gt;
&lt;li&gt;Once we have software, we do two things: add capabilities, and debug what doesn't work&lt;/li&gt;
&lt;li&gt;Good joke about debugging at &lt;a href="https://youtu.be/SxdOUGdseq4?t=945"&gt;15:43 mark&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Tests are useless if we can't understand our program; they may eventually fail us&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Another good joke, this time about agile, at &lt;a href="https://youtu.be/SxdOUGdseq4?t=1047"&gt;17:27&lt;/a&gt;, and I'm going to quote it here:
&amp;gt; What kind of runner can run as fast as they possibly can from the very start of a race? Sprinter, only somebody who runs really short races, okay? But of course, we are programmers, and we are smarter than runners, apparently, because we know how to fix that problem, right? We just fire the starting pistol every hundred yards and call it a new sprint.&lt;/li&gt;
&lt;li&gt;If you ignore the complexity, you will slow down over the long haul&lt;/li&gt;
&lt;li&gt;if you focus on ease, you will be able to go as fast as possible from the beginning of the race but the complexity will eventually get you, and you will accomplish less with every next sprint, and you will end up redoing things you've already done, "and the net effect is you're not moving forward in any significant way."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Easy but complex
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Some things that are easy are actually complex

&lt;ul&gt;
&lt;li&gt;they are succinctly described&lt;/li&gt;
&lt;li&gt;they are familiar&lt;/li&gt;
&lt;li&gt;they are available&lt;/li&gt;
&lt;li&gt;easy to use&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Users don't care about the underlying complexity, they care about what the program does&lt;/li&gt;
&lt;li&gt;Is the outcome of your work drowning in complexity?&lt;/li&gt;
&lt;li&gt;The benefits of simplicity:

&lt;ul&gt;
&lt;li&gt;ease of understanding&lt;/li&gt;
&lt;li&gt;ease of change&lt;/li&gt;
&lt;li&gt;ease of debugging&lt;/li&gt;
&lt;li&gt;increased flexibility (change things around) - modularity&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is it easier to change a knitted castle or a LEGO castle?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Making Things Easy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Make it reachable - easy to install, easy to approve&lt;/li&gt;
&lt;li&gt;Make it familiar - it's a learning exercise&lt;/li&gt;
&lt;li&gt;Make it simple so it's easy to understand, we are limited in our ability to understand complexity&lt;/li&gt;
&lt;li&gt;Good point about parens in Clojure: there are some things you can solve (get more familiar, start using the tool) and some that you cannot (the tool is complex)&lt;/li&gt;
&lt;li&gt;Developers know the value of everything and the cost of nothing (rephrased from: "LISP programmers know the value of everything and the cost of nothing" from Alan Perlis) - we talk a lot about benefits but not the tradeoffs&lt;/li&gt;
&lt;li&gt;Avoid complexity (don't complect/braid together)&lt;/li&gt;
&lt;li&gt;Instead, compose (place together)

&lt;ul&gt;
&lt;li&gt;composing simple components is the key to robust systems&lt;/li&gt;
&lt;li&gt;it's not only about modularization&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;State is never simple but it is easy (familiar, at hand)&lt;/li&gt;
&lt;li&gt;You don't need all this complexity. You can make a sophisticated system with simple tools - you can focus on the system, what it's supposed to do, instead of the constructs.&lt;/li&gt;
&lt;li&gt;If a decision needs to be made by a person who has better context, that system is not simple.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Main points of complexity
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Construct&lt;/th&gt;
&lt;th&gt;Complects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;State&lt;/td&gt;
&lt;td&gt;Everything that touches it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Objects&lt;/td&gt;
&lt;td&gt;State, identity, value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Methods&lt;/td&gt;
&lt;td&gt;Function and state, namespaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Syntax&lt;/td&gt;
&lt;td&gt;Meaning, order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inheritance&lt;/td&gt;
&lt;td&gt;Types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switching/matching&lt;/td&gt;
&lt;td&gt;Multiple who/what pairs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;variables&lt;/td&gt;
&lt;td&gt;value, time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impreative loops&lt;/td&gt;
&lt;td&gt;what/how&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Actors&lt;/td&gt;
&lt;td&gt;what/how&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORM&lt;/td&gt;
&lt;td&gt;everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditionals&lt;/td&gt;
&lt;td&gt;why, structure of the program&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These can be replaced with the following simpler stuff:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Construct&lt;/th&gt;
&lt;th&gt;Get it via...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Values&lt;/td&gt;
&lt;td&gt;final, persistent collections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Functions&lt;/td&gt;
&lt;td&gt;stateless methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namespaces&lt;/td&gt;
&lt;td&gt;language support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;JSON, maps, sets, arrays, xml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polymorphism a la carte&lt;/td&gt;
&lt;td&gt;Protocols, type classes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed refs&lt;/td&gt;
&lt;td&gt;languages like Clojure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set functions&lt;/td&gt;
&lt;td&gt;libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queues&lt;/td&gt;
&lt;td&gt;libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Declarative data manipulation&lt;/td&gt;
&lt;td&gt;SQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules (declarative system of rules)&lt;/td&gt;
&lt;td&gt;libraries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consistency&lt;/td&gt;
&lt;td&gt;Transactions, values&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Data is actually really simple. There are not a tremendous number of variations in the essential nature of data: there are maps, there are sets, there are linear, sequential things. There are not a lot of other conceptual categories of data. We create hundreds of thousands of variations that have nothing to do with the essence of this stuff and make it hard to write programs that manipulate the essence of the stuff. We should just manipulate the essence of the stuff. It's not hard. It's simpler.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Abstraction for simplicity
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;abstract (meaning drawn away from its physical nature)&lt;/li&gt;
&lt;li&gt;"abstraction" sometimes is used in a sense of hiding complexity but that's not what it is about&lt;/li&gt;
&lt;li&gt;If you want to take stuff apart, look at a concept and ask who, what, when, where, why, how&lt;/li&gt;
&lt;li&gt;What

&lt;ul&gt;
&lt;li&gt;What is the operation? What is what we want to accomplish?&lt;/li&gt;
&lt;li&gt;If you separate "what" from "how", you can make "how" someone else's problem&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Who

&lt;ul&gt;
&lt;li&gt;Data or entities - these are the things that our abstractions are going to be connected to eventually depending on how your technology works.&lt;/li&gt;
&lt;li&gt;Pursue many subcomponents so you work with small interfaces&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;How

&lt;ul&gt;
&lt;li&gt;How the work happens - the implementation logic&lt;/li&gt;
&lt;li&gt;connect to abstractions and entities via polymorphism&lt;/li&gt;
&lt;li&gt;prefer abstractions that don't dictate how (declarative are good)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;When, where

&lt;ul&gt;
&lt;li&gt;don't complect with design (if A  causes B, you're complectin - use queues instead)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Why

&lt;ul&gt;
&lt;li&gt;the policy and rules of the application&lt;/li&gt;
&lt;li&gt;often strewn everywhere&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Information is simple
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Don't ruin it&lt;/li&gt;
&lt;li&gt;Simplify the problem space or some code that somebody else wrote by  disentangling:

&lt;ul&gt;
&lt;li&gt;identifying individual threads/roles/dimensions&lt;/li&gt;
&lt;li&gt;following through the user story&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Simplicity is a choice - it's your fault if you don't have a simple system&lt;/li&gt;
&lt;li&gt;You need vigilance, sensibilities, and care&lt;/li&gt;
&lt;li&gt;Easy is not simple. Simple is something that's not entangled.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simplicity made easy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choose simple constructs over complexity-generating constructs&lt;/li&gt;
&lt;li&gt;It's the artifacts, not's the authoring&lt;/li&gt;
&lt;li&gt;Create simple abstractions&lt;/li&gt;
&lt;li&gt;Simplify the problem space before you start&lt;/li&gt;
&lt;li&gt;Simplifying means making more things, not fewer&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>techtalks</category>
    </item>
    <item>
      <title>What I'd like to see AI used for - women's month edition</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Sat, 18 Mar 2023 01:24:55 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/what-id-like-to-see-ai-used-for-womens-month-edition-5768</link>
      <guid>https://dev.to/sylwiavargas/what-id-like-to-see-ai-used-for-womens-month-edition-5768</guid>
      <description>&lt;p&gt;&lt;em&gt;(this blog post is a part of a DEV celebration of the annual #wecoded campaign - earlier known as #shecoded)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As I'm nearing my fourth year in tech, I see the same discussions happen over and over again around gender in tech - and I'm tired. In the past, I found that writing about these problems always left me exhausted and deflated for a few days so now I’ll try something different: I turned the reasons for my fatigue into ideas for your next-generation AI app ✨&lt;/p&gt;




&lt;h2&gt;
  
  
  Salary negotiation
&lt;/h2&gt;

&lt;p&gt;Contrary to common belief, women are equally as good (or bad, actually) as men in salary negotiation - that is, when they actually negotiate. Sadly, a number of factors can impact a woman's willingness to negotiate an offer, &lt;a href="https://dl.acm.org/doi/pdf/10.1145/3472306.3478348"&gt;including how the job description is written&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When jobs advertisements contained female-threatening language, &lt;strong&gt;women lowered their salary minimums&lt;/strong&gt; compared to when jobs were described in a female-supportive way, whereas men were unaffected. (...) If women have lower aspirations, they may feel less motivation to negotiate and simply accept the first offer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consistent with my own experience, another study found that &lt;a href="https://hbswk.hbs.edu/item/when-gender-changes-the-negotiation"&gt;women are especially good at negotiation when advocating for the salary of others&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Our research suggests that (...) women perform better when negotiating on behalf of others than they do when negotiating for themselves; no such difference emerges among male negotiators. (...) &lt;strong&gt;Female executives negotiating as the mentor secured compensation that was 18 percent higher than the compensation female executives negotiated when they were playing the candidate&lt;/strong&gt;. Meanwhile, male executives performed consistently across both roles, at the level of female executives negotiating as the candidate.&lt;br&gt;
(...) It's not that our female participants felt less entitled to a good salary. (...) Nor were women more or less competent at the negotiation itself. Rather, it appears that the women executives were particularly energized when they felt a sense of responsibility to represent another person's interests.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;⭐️ Here are some ideas for what AI could do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a real-time salary negotiation assistant that will provide the applicant with the pep talk, sound bites, and arguments for a successful negotiation&lt;/li&gt;
&lt;li&gt;estimating what folks at a given salary might be making (not only via Glassdoor or Blind) and what the candidate's skillset and experience is, and based on that, suggests acceptable salary ranges&lt;/li&gt;
&lt;li&gt;(for HR) scanning job descriptions for gender triggers and suggesting alternatives&lt;/li&gt;
&lt;li&gt;(for candidates) an extension that replaces gender triggers in job description with gender neutral language&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  At work
&lt;/h2&gt;

&lt;p&gt;When it comes to gender issues at workplace, there’s probably enough to fill every letter of the alphabet - and perhaps write a whole encyclopedia. Well, let me just mention five things my friends and I noticed this past year:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I see a lot of my amazing female friends partake in &lt;a href="https://www.youtube.com/watch?v=5cr2Yn_MrKg"&gt;glue work&lt;/a&gt;, either voluntarily or because they are expected to. &lt;/li&gt;
&lt;li&gt;I have watched too many sessions where men talk a lot and engage in &lt;em&gt;&lt;a href="https://en.wiktionary.org/wiki/killgissa"&gt;killgissa&lt;/a&gt;&lt;/em&gt; and &lt;a href="https://en.wikipedia.org/wiki/Mansplaining"&gt;mansplaining&lt;/a&gt; in 1:1 conversations with renown women or a non-binary folks who happen to be experts on the subject&lt;/li&gt;
&lt;li&gt;I also have heard my share of "well, actually"s and seen loads of passive aggressive nit-picky PR reviews that my female friends share with me to ask for a sanity check.&lt;/li&gt;
&lt;li&gt;I read a lot about that &lt;a href="https://www.axios.com/2022/06/17/performance-reviews-bias-racism-sexism"&gt;performance reviews for women focus mostly on their personality, and men on their work&lt;/a&gt; (the same study found that men are so much more likely to be called "genius" or "brilliant" and women to be called "overachievers")&lt;/li&gt;
&lt;li&gt;I see so many people having no problem remembering names of obscure retro games, whole lineages of elves in some books, or the 80s niche bands but that amazing memory fails them in case of personal pronouns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⭐️ Here are some ideas for what AI could do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Notion/Confluence/Asana extension that shows stats for glue work for different team members&lt;/li&gt;
&lt;li&gt;a Zoom app that measures air time, including air time spent on just taking space (EDIT: I heard that &lt;a href="https://www.vowel.com/"&gt;Vowel&lt;/a&gt; does that already! Awesome in case you don't want to reinvent the wheel.)&lt;/li&gt;
&lt;li&gt;an extension that scans a performance review to show gendered biases&lt;/li&gt;
&lt;li&gt;an app that scans all performance reviews from the company for a given year to make sure that the same metrics are used for all folks at given a level/role/team&lt;/li&gt;
&lt;li&gt;grammarly but for correct pronouns&lt;/li&gt;
&lt;li&gt;a Slack app that not only checks for exclusionary language but also reminds you to use the correct pronouns - before you even send the message! (even if you can't retain that knowledge, at least you don't create a situation that's awkward at best and damaging at worst)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tech conferences, meetups, steams, events, twitter
&lt;/h2&gt;

&lt;p&gt;Time and time again, we as a tech community learn about conferences offering unequal perks and payment for talks to different speakers.&lt;/p&gt;

&lt;p&gt;We've also seen numerous conferences that completely forgot that there are plenty experts in tech who are women and non-binary people. To alleviate that, it happens frequently women (oftentimes experts themselves) are moderators in an all-male panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⭐️ Here are some ideas for what AI could do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create a list of women and non-binary speakers, together with examples of most recent talks, and contact info&lt;/li&gt;
&lt;li&gt;create a list of male experts to moderate panels featuring women and non-binary experts&lt;/li&gt;
&lt;li&gt;fetch a list of male tech community leaders who could deliver talks on the value of empathy, collaboration, inclusivity, team culture&lt;/li&gt;
&lt;li&gt;find out if a male speaker you're considering is known to talk about gender equality so you can ask him to mentor a first-time speaker who is a woman or a non-binary person&lt;/li&gt;
&lt;li&gt;get a report on whether your tech event location might be dangerous for any minority, such as &lt;a href="https://thenextweb.com/news/react-js-conference-return-in-november-lgbtq-not-invited"&gt;LGBTQIAP+ folks in UAE&lt;/a&gt; or &lt;a href="https://twitter.com/fables_tales/status/1510315916801855494?s=20"&gt;trans folks in many states in the USA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;(for male community tech leaders who state allyship with women and non-binary folks) checking stats on who you are retweeting, quote tweeting positively, and liking - it's really no longer enough to just say you support women, trans women and non-binary folks but in the times of wild twitter algorithms (for some, and life-threatening trans-hatred for others), you just gotta amplify their voices and recommend them as experts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Surveys
&lt;/h2&gt;

&lt;p&gt;For at least as long as I have been in tech, the "State of JS" and "State of CSS" surveys have been not only doing a poor job when it comes to survey design, data collection, and analysis - they also have done a lot of damage for women in tech. For context, the survey consistently gets only around 5% of responses from women and non-binary folks, and year after year, there's some discussion around it.&lt;/p&gt;

&lt;p&gt;There's a lot I could say about the survey given that I taught research methods for two years as a part of my PhD in Sociology program. For example, the presentation of the data on most popular community leaders does not factor the gender of the responders, resulting in an impression that that is the ultimate list of who's who in the JS ecosystem - and it features only four women. But not if you adjust the data for demographics - then you'd already see 10 women creators there. And if the survey actually collects more responses from women and non-binary respondents, the list will be only more diverse.&lt;/p&gt;

&lt;p&gt;But the survey design flaws are less important than its outcomes. I don't think there's any data on the actual consequences so for now, three anecdotes from my experience need to suffice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A male friend lamented how he can't get any women into the hiring pipeline "but then again, there are fewer than 10% of women in the web dev".&lt;/li&gt;
&lt;li&gt;A conference organizer pondered if there's even any point in diversity efforts with regards to the lineup.&lt;/li&gt;
&lt;li&gt;A few women streamers or community leaders were disheartened by not making it to the "Top 50" list of the survey.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The organizers say they sent dozens emails to women in tech organizations and heard almost no responses. This sounds almost incredible given how easy it is to get a response for a project like that. Was there a problem with how the emails were written? Maybe when they were sent? Why emails, anyway? Why not a DM on Twitter or an intro through a friend? Weirdly enough, none of my six community organizer friends received such an email, nor did I found one in my inbox - even though I have been a co-organizer of a React community for women and non-binary folks for the past four years, and even though I myself offered such help for example &lt;a href="https://dev.to/sylwiavargas/comment/17cji"&gt;here on DEV&lt;/a&gt;. It's really odd because I have seen Sacha Greif, the main author of the survey, advocate vehemently for women, trans folks, and all other minorities - and I actually do trust that his intentions are good.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⭐️ Here are some ideas for AI to fix it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;following the advice from the Sociology handbooks and research findings, evaluate the survey before it is released from the perspective of research method design, with special emphasis on potential biases (not only gender) 

&lt;ul&gt;
&lt;li&gt;OR: being given the goals of the survey, design one in reference to the advice from the Sociology handbooks and research findings&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;given the scope of the survey (JavaScript ecosystem), define the representative sample, making sure it is statistically significant, as well as the sampling method&lt;/li&gt;
&lt;li&gt;generate ideas for tweets, toots, blog posts, Discord and Slack messages that the organizers can post in various communities when asking for help&lt;/li&gt;
&lt;li&gt;having received responses, assign a correct weight to respondents in representing the data&lt;/li&gt;
&lt;li&gt;scan the final report for inaccuracies and include context information&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Is a better world possible with AI?
&lt;/h2&gt;

&lt;p&gt;As much as I'd love to believe the opposite was true, &lt;a href="https://mashable.com/article/chatgpt-ai-racism-bias"&gt;AI is just an extension of the biases of its creators&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For example, earlier in this post I mentioned performance reviews - in fact, &lt;a href="https://www.fastcompany.com/90844066/chatgpt-write-performance-reviews-sexist-and-racist"&gt;ChatGPT writes longer and harsher performance reviews when it assumes that the employee is a woman&lt;/a&gt;. It views: nurse, receptionist, kindergarten teacher as women; mechanic as a man; banker and engineer as men or neutral. Here's also &lt;a href="https://twitter.com/JSEllenberg/status/1288644518103965696"&gt;a tweet about ChatGPT recommendation letters&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;male name reports "spotty attendance but very bright" -- with female name, we hear about their kindness &amp;amp; empathy and the children they tutored.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All the above app ideas could (and should) be done not by AI but by a human - if only the humans in questions cared more, were more self-aware, and possibly less exhausted (here I'm giving a benefit of a doubt to everyone who is well-meaning but has &lt;a href="https://www.goodrx.com/health-topic/mental-health/spoon-theory"&gt;only so many spoons&lt;/a&gt;). For example, I spoke about better conference lineups - if you are curious about how to design one, read &lt;a href="https://bridgetkromhout.com/blog/in-the-kingdom-of-the-blind/"&gt;this great writeup about DevOps Days&lt;/a&gt; authored by &lt;a href="https://twitter.com/bridgetkromhout"&gt;Bridget Kromhout&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And before you actually go and design a next AI-driven app that will change the world - see if the change will be for better. AI has been designed with huge biases and it goes majorly unchallenged.&lt;/p&gt;

&lt;p&gt;⭐️ If you'd like to learn more about the biases of AI, follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.dair-institute.org/about"&gt;Timnit Gebru&lt;/a&gt; who runs &lt;a href="https://www.dair-institute.org/"&gt;Distributed AI Research Institute&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/KestralWrites"&gt;Kestral Gaian&lt;/a&gt; who teaches ethics at London Interdisciplinary School&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/safiyanoble"&gt;Safiya Umoja Noble&lt;/a&gt; who wrote &lt;a href="https://nyupress.org/9781479837243/algorithms-of-oppression/"&gt;"Algorithms of Oppression"&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Cover photo was designed by DALLE with a prompt: "if gender equality was a kaleidoscope image"&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>ai</category>
    </item>
    <item>
      <title>What is pnpm? Is it really so fast and space-efficient?</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Thu, 13 Oct 2022 12:57:41 +0000</pubDate>
      <link>https://dev.to/stackblitz/what-is-pnpm-and-is-it-really-so-fast-and-space-efficient-29la</link>
      <guid>https://dev.to/stackblitz/what-is-pnpm-and-is-it-really-so-fast-and-space-efficient-29la</guid>
      <description>&lt;p&gt;&lt;em&gt;We announced at ViteConf that our &lt;strong&gt;WebContainers now support pnpm&lt;/strong&gt;. It was a major achievement in our commitment to support the Vite ecosystem as many projects running on Vite also use pnpm (examples include Vue, Astro, SvelteKit).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this post, I’d like to talk about &lt;strong&gt;what sets pnpm apart from other package managers - and why we need package managers at all&lt;/strong&gt;. As a person who best operates through analogy, I will also talk about: 🍣 sushi, 🪦 cemetery, 🎁 birthdays, and 🖼 memes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are package managers?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I've also written an &lt;a href="https://dev.to/stackblitz/explain-like-im-five-package-managers-1a7a"&gt;“Explain like I’m 5” version of this section&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with the terminology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F0dx6ny86uj9izv6tld3l.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0dx6ny86uj9izv6tld3l.jpeg" alt="A surrealist image of massive clouds with a shiba-inu dog head that is consuming a city. The clouds are labelled "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  package, dependency, node module
&lt;/h3&gt;

&lt;p&gt;A “&lt;strong&gt;package&lt;/strong&gt;” (or “&lt;strong&gt;dependency&lt;/strong&gt;”) is one or a few files bundled neatly together that can be downloaded from a package registry. Once it’s downloaded and installed, it resides in the &lt;code&gt;node_modules&lt;/code&gt; folder in a project’s directory. In this post, I will use the words a Node module, a package, and a dependency interchangeably as many folks in the tech community do. That being said, &lt;a href="https://docs.npmjs.com/about-packages-and-modules" rel="noopener noreferrer"&gt;the npm docs offer a differing opinion&lt;/a&gt; so check it out if you’re interested in trivia and precision. 🙂&lt;/p&gt;

&lt;h3&gt;
  
  
  package.json
&lt;/h3&gt;

&lt;p&gt;Each package has a file called &lt;code&gt;package.json&lt;/code&gt; which contains information on the package author, its version, its dependencies, and so on. A package can have many dependencies, which in turn can also have many dependencies (called "sub-dependencies"). This sounds like a lot of files, doesn’t it! It really is, especially if your project requires bigger packages.&lt;/p&gt;

&lt;p&gt;In the olden times, you’d manually download, install, and configure the dependencies of your app. Keep in mind that most packages are frequently updated, which means that you’d have to always make sure that your project's dependencies (and their sub-dependencies!) are up to date - or that in a given project you use a correct version of a given package. This sounds not only stressful but also unnecessarily repetitive! This is where a package manager comes in.&lt;/p&gt;

&lt;h3&gt;
  
  
  package managers
&lt;/h3&gt;

&lt;p&gt;A package manager is a tool that helps you keep track of all dependencies of your app in a consistent way. It automates the tasks of dependency installation, upgrading, configuration, and removal. It makes sure that all the packages that your app needs are installed, of the correct version, and up-to-date. This frees so much time for coding… and procrastination 🤪&lt;/p&gt;

&lt;p&gt;The first package manager for the Node runtime was introduced only in 2010 and it was npm, (which, contrary to popular belief, &lt;a href="https://github.com/npm/cli#is-npm-an-acronym-for-node-package-manager" rel="noopener noreferrer"&gt;doesn’t stand for “Node package manager” and, in fact, is an empty acronym&lt;/a&gt;). Twelve years later, npm is now managed by Microsoft and there are two other contenders to the iron throne of the package universe: yarn and pnpm.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do package managers do?
&lt;/h2&gt;

&lt;p&gt;A package manager grabs the published source files from the online registry and installs them into a directory (a folder) called &lt;code&gt;node_modules&lt;/code&gt;. This is the folder where your app will look for the packages when you call the &lt;code&gt;require()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;You can think about the &lt;code&gt;node_modules&lt;/code&gt; folder as a box with helpful tools that you can plug into your app so it works in a desired way. Except that all the tools are made of iron (or &lt;a href="https://sciencing.com/metals-heaviest-8751708.html" rel="noopener noreferrer"&gt;osmium&lt;/a&gt;!) and the box is massive. What I mean to say is that, sadly, prior to pnpm the &lt;code&gt;node_modules&lt;/code&gt; folder would usually be bulky and take a lot of disk space. This resulted in a collection of memes such as:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgm7t956uxawl53si8cyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgm7t956uxawl53si8cyp.png" alt="A popular meme portraying heaviest objects in the universe such as Sun, neutron star, black hole, and Node modules"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine that you have numerous projects on your local machine, and each project comes with its own node_modules folder. Most likely, many of these projects use a similar stack. In such a case, you end up with the same packages in numerous projects. Duplication and redundancy! Think about all those inspired side projects that never left the boilerplate stage, all the past attempts to check out all the hot new frameworks - all of them are chilling on your precious disk space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fk2uizq6rsnnena1dzkl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fk2uizq6rsnnena1dzkl3.png" alt="A comic strip where a computer folder containing Windows brags about being the biggest just to be intimidated by the "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who cursed the &lt;code&gt;node_modules&lt;/code&gt; folder?
&lt;/h2&gt;

&lt;p&gt;To understand these jokes, we need to take a stroll down memory lane and look at how package management has traditionally been handled.&lt;/p&gt;

&lt;p&gt;To the best of its intentions and abilities, npm handled the dependencies by splitting the installation (which is triggered by, for example, &lt;code&gt;npm install&lt;/code&gt; ) process into three phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Resolving&lt;/strong&gt;, when the package manager is checking all the project’s dependencies (and their sub-dependencies) listed in the &lt;code&gt;package.json&lt;/code&gt; file, finds a version that satisfies the version specifier (for instance, &lt;code&gt;^1.0.0&lt;/code&gt; would install any future minor/patch versions). Afterwards, it creates a file like &lt;code&gt;package-lock.json&lt;/code&gt; for npm and &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; for pnpm. you can think about it like a project’s equivalent of a birthday gift wishlist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch&lt;/strong&gt;, when the package manager takes the list of resolved dependencies and fetches all the packages from the package registry, which is an equivalent of the feverish shopping in a crowded mall two hours before the party for the gifts all of your friends will give to the birthday person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linking&lt;/strong&gt;, when the package manager writes all the dependencies into the project’s &lt;code&gt;node_modules&lt;/code&gt; folder, which, finally, is an equivalent of placing all the gifts in the corner of the party room for when they are needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this scenario, each phase needs to end for the next one to begin. This means that if one dependency has twenty dependencies itself or if one package takes forever to be downloaded, you may have to wait for a long time. If we follow the birthday analogy, imagine that the wishlist included a new version of a popular phone and a box of chocolates. You end up queuing &lt;a href="https://www.inc.com/business-insider/massive-lines-iphone-x-apple-store-people-queue-days-tim-cook.html" rel="noopener noreferrer"&gt;for a few days&lt;/a&gt; in front of the phone store to only then buy the chocolates. In such a system, you can’t “save” your spot in the queue, go buy the chocolates and join the party, even if that looked like a better use of your time. You see that t*&lt;em&gt;he way npm manages its tasks is just not efficient.&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;As we said earlier, it is also the matter of the disk space. You will end up with numerous duplications of the same packages. And even if there are different versions of the same package, it is rarely the case that all of the files have been changed from one version to another. You still end up with some number of copies. We can agree that &lt;strong&gt;the way npm manages the disc space is not efficient either.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How is pnpm a solution to all our worries and troubles?
&lt;/h2&gt;

&lt;p&gt;On its docs page you can read that pnpm is a “fast, disk space efficient package manager.” It really is fast - locally, up to three times faster than the alternatives - and space-efficient. But - how?&lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm is fast
&lt;/h3&gt;

&lt;p&gt;Do you remember the birthday wishlist analogy? As a gofer, npm first collected all the wishes, then bought all the gifts, then placed them in the corner of the party room. Each phase needed to end for another to begin. This is how the npm gofer organizes its way through life.&lt;/p&gt;

&lt;p&gt;Well, if pnpm were the gofer, they’d buy the gift as soon as they’ve read the wish, and designated the spot in the room as soon as they placed the order. They may not even have the physical gift yet to already be able to mark the space in the room where the gift will stand. This happens for each gift separately and independently from others. By design, pnpm doesn’t have the blocking stages of installation - the processes run for each of the packages independently. &lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm is disc space efficient
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Let’s talk about food. I love veggie sushi. I order a lot of veggie sushi&lt;/strong&gt;. I also eat a lot of wasabi and I don’t like waste. Even though it would be fair to assume that such portions surely are to be shared, I usually order just for myself. &lt;strong&gt;My order always arrives with two pairs of chopsticks even though I say on the phone that I don’t need them - I have metal ones at home.&lt;/strong&gt; I wouldn’t just throw unused chopsticks away and now I have a drawer full of them, and you can also see them laying around in the most surprising places in the kitchen. Similarly, I have my own wasabi tube but would I throw away those little sachets? Never. They chill on the shelf in my fridge in an ever-expanding fashion.&lt;/p&gt;

&lt;p&gt;My chopsticks and wasabi could work as an analogy for how npm manages disc space. &lt;strong&gt;“Oh, you’ve already installed React two hundred times? I’m SURE you NEED the 201st copy!”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To my relief, pnpm checks what is already available on your disk and only adds what you additionally need for your project to run. All the dependencies are located in one global location (for instance, &lt;code&gt;~/.pnpm-store/&lt;/code&gt; - you can check it by running &lt;code&gt;pnpm store path&lt;/code&gt; in the terminal) called “a content-addressable store”. In your project’s &lt;code&gt;node_modules&lt;/code&gt; folder there is a &lt;code&gt;.pnpm&lt;/code&gt; file that contains the “virtual store” with many so-called “&lt;a href="https://pnpm.io/faq#why-does-my-node_modules-folder-use-disk-space-if-packages-are-stored-in-a-global-store" rel="noopener noreferrer"&gt;hard link&lt;/a&gt;s”. it creates one hard link for each file of each package. &lt;a href="https://pnpm.io/faq#why-does-my-node_modules-folder-use-disk-space-if-packages-are-stored-in-a-global-store" rel="noopener noreferrer"&gt;I like this explanation that pnpm docs offer&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, for example, if you have &lt;code&gt;foo&lt;/code&gt; in your project as a dependency and it occupies 1MB of space, then it will look like it occupies 1MB of space in the project's &lt;code&gt;node_modules&lt;/code&gt; folder and the same amount of space in the global store. However, that 1MB is the same space on the disk addressed from two different locations. So in total &lt;code&gt;foo&lt;/code&gt; occupies 1MB, not 2MB.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This makes the &lt;code&gt;node_modules&lt;/code&gt; folder more like a portal (like the wardrobe in Narnia) to files located in different nooks of the global store, and not like a bloated storage unit. This diagram illustrates the strategy employed by pnpm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FFGx92b4aUAEAfn5%3Fformat%3Djpg%26name%3D4096x4096" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FFGx92b4aUAEAfn5%3Fformat%3Djpg%26name%3D4096x4096" alt="A graph explaining how pnpm store works"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, does pnpm “know” if there are duplicate files between two versions of the same package? Yes, because, just like git, it identifies the files by a hash id (called also “content integrity” or “checksum”) and not by the filename. This means that two same files will have identical hash id and pnpm will determine that there’s no reason for duplication.&lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm has got your back
&lt;/h3&gt;

&lt;p&gt;There are so many ways that pnpm looks out for you. One of them is that it is impossible to &lt;a href="https://www.kochan.io/nodejs/pnpms-strictness-helps-to-avoid-silly-bugs.html" rel="noopener noreferrer"&gt;invite silly bugs&lt;/a&gt; by trying to use modules that are not directly specified in the project's &lt;code&gt;package.json&lt;/code&gt; but, for instance, are required by your project’s dependencies. While it’s not the end of the world if everything works well, what happens if your project’s dependency no longer requires one of the packages and as a result it is no longer available in the the &lt;code&gt;node_modules&lt;/code&gt; folder? Well, everything crashes and you don’t even know why.&lt;/p&gt;

&lt;p&gt;Such bugs may happen in npm and Yarn Classic because of the flat &lt;code&gt;node_modules&lt;/code&gt; directory because during installation, they hoist (elevate) all of the packages to the &lt;code&gt;node_modules&lt;/code&gt; , regardless of whether they are directly required by your app or not. As a result, your project gets access to distant “relatives” of its dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  …but what if my project doesn’t support symbolic links?
&lt;/h3&gt;

&lt;p&gt;And even if your project presents an edge case and doesn’t work well with symbolic linking, worry not! You can still use pnpm but set it to an npm-like mode. While it will not be space-efficient, it will still be faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  But… what about Yarn?
&lt;/h2&gt;

&lt;p&gt;There are two editions of Yarn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Yarn Classic”, which comprises versions below v2 and is no longer maintained,&lt;/li&gt;
&lt;li&gt;“&lt;a href="https://yarnpkg.com/" rel="noopener noreferrer"&gt;Yarn Berry&lt;/a&gt;”, which is v2 and higher.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yarn Classic operates similarly to npm with regards to managing the &lt;code&gt;node_modules&lt;/code&gt; folder. Yarn Berry, on the other hand, offers three solutions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the npm-like mode&lt;/li&gt;
&lt;li&gt;the “Plug'n'Play” mode&lt;/li&gt;
&lt;li&gt;the pnpm-like mode, which uses hard links to reduce the disc space (&lt;a href="https://yarnpkg.com/configuration/yarnrc#nodeLinker" rel="noopener noreferrer"&gt;not available by default&lt;/a&gt; and not thoroughly documented)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://yarnpkg.com/features/pnp#the-node_modules-problem" rel="noopener noreferrer"&gt;Plug’n’Play seems like an intriguing option&lt;/a&gt; but it has been met with the community’s apprehension as the &lt;code&gt;.zip&lt;/code&gt; files are not so easily accessible during the dev workflow. The earlier-mentioned &lt;a href="https://www.takeshape.io/articles/why-we-switched-from-yarn-to-pnpm/" rel="noopener noreferrer"&gt;post by TakeShape&lt;/a&gt; explains some of the other challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing remarks
&lt;/h2&gt;

&lt;p&gt;Considering how space-efficient and fast pnpm is, it is not a surprise that more and more projects make a move towards it and that its popularity is rapidly growing. This year, the weekly download rate for pnpm was &lt;a href="https://npm-stat.com/charts.html?package=pnpm&amp;amp;package=yarn&amp;amp;package=npm&amp;amp;from=2021-01-01&amp;amp;to=2022-09-20" rel="noopener noreferrer"&gt;seven times as high as last year&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;If you’re interested in learning about why projects choose to switch to pnpm, check out these posts by &lt;a href="https://gestaltjs.org/docs/contributors/decision-record/2022-09-01-pnpm/" rel="noopener noreferrer"&gt;Gestalt&lt;/a&gt; and &lt;a href="https://www.takeshape.io/articles/why-we-switched-from-yarn-to-pnpm/" rel="noopener noreferrer"&gt;TakeShape&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;p&gt;Here are further readings that may give you a better understanding of the current landscape of package managers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://pnpm.io/feature-comparison" rel="noopener noreferrer"&gt;feature comparison&lt;/a&gt; between the three package managers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.logrocket.com/javascript-package-managers-compared/" rel="noopener noreferrer"&gt;an in-depth comparison&lt;/a&gt; of the three package managers by LogRocket&lt;/li&gt;
&lt;li&gt;package managers speed benchmarks on the &lt;a href="https://pnpm.io/benchmarks" rel="noopener noreferrer"&gt;pnpm page&lt;/a&gt; and &lt;a href="https://p.datadoghq.eu/sb/d2wdprp9uki7gfks-c562c42f4dfd0ade4885690fa719c818?tpl_var_npm%5B0%5D=%2A&amp;amp;tpl_var_pnpm%5B0%5D=%2A&amp;amp;tpl_var_yarn-classic%5B0%5D=%2A&amp;amp;tpl_var_yarn-modern%5B0%5D=%2A&amp;amp;tpl_var_yarn-nm%5B0%5D=%2A&amp;amp;tpl_var_yarn-pnpm%5B0%5D=no&amp;amp;from_ts=1664821962982&amp;amp;to_ts=1665426762982&amp;amp;live=true" rel="noopener noreferrer"&gt;yarn page&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Come work with us on package managers!
&lt;/h2&gt;

&lt;p&gt;While you’re here, an announcement: &lt;strong&gt;we are looking for a new team member who will work on package managers including pnpm, npm, yarn, and our own &lt;a href="https://developer.stackblitz.com/docs/platform/turbo/" rel="noopener noreferrer"&gt;Turbo&lt;/a&gt;&lt;/strong&gt;. Interested? Apply today or reach out to me on Twitter!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tooling</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Hacktoberfest: docs updates in three steps</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Wed, 12 Oct 2022 14:57:36 +0000</pubDate>
      <link>https://dev.to/stackblitz/hacktoberfest-docs-updates-in-three-steps-17f</link>
      <guid>https://dev.to/stackblitz/hacktoberfest-docs-updates-in-three-steps-17f</guid>
      <description>&lt;p&gt;Hacktoberfest is a celebration of Open Source contributions and new developers are eagerly encouraged to join in. However, many projects require so much setup, which not only stressed me out but also discouraged me from considering contributing.&lt;/p&gt;

&lt;p&gt;Of course, there is the Markdown Preview on GitHub - however, it only changes Markdown to HTML and doesn't render the whole page. You can't see how the changes you're introducing will look on the page unless you close, install dependencies, start the dev server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But what if updating docs wasn't this complicated? Well, good news is that it doesn't have to be!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Below, I'm offering a workflow that helps you focus on the content update or creation, without the hassle of the setup. If you prefer to watch a video instead, I got you covered as well - check the end of the post!&lt;/p&gt;

&lt;h2&gt;
  
  
  Content editing hack
&lt;/h2&gt;

&lt;p&gt;Follow these three steps for a productivity hack:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the docs repository, find the file you want to edit - can be markdown, can be anything, really. Click "edit" icon.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fffrcm6qwf5mdnmu5n8oo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fffrcm6qwf5mdnmu5n8oo.gif" alt="Opening a file in GitHub and entering an edit view"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the browser's address tab, add "pr.new" to the beginning of the URL address, press enter, and enjoy updating the content.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fan96iyd59em7dh3oyn3k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fan96iyd59em7dh3oyn3k.gif" alt="Adding "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Once you're happy with the result, propose the changes and submit a PR!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9qxlc8ewb103dvbiclxr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9qxlc8ewb103dvbiclxr.gif" alt="Proposing changes and submitting a PR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is this tool?
&lt;/h2&gt;

&lt;p&gt;What you see above is a tool called &lt;strong&gt;&lt;a href="https://developer.stackblitz.com/codeflow/content-updates-with-web-publisher" rel="noopener noreferrer"&gt;Web Publisher&lt;/a&gt;&lt;/strong&gt;. It is - and will remain - free for Open Source projects and for public repositories. &lt;/p&gt;

&lt;p&gt;Web Publisher allows you to edit any file and see the changes rendered on the live preview. You don't have to do any special setup - you can even use it on your phone (on Chrome or Firefox). Now even the new developers can contribute their talents to Open Source by proofreading, translating, editing the text without the stress of the environment setup.&lt;/p&gt;

&lt;p&gt;I have been using Web Publisher for weeks now and it really helped me a lot in my daily workflow. The other day I corrected a dead link on our page while waiting in line for an appointment 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  Wanna try it out?
&lt;/h2&gt;

&lt;p&gt;You can either edit a page of any of the public repos or... &lt;a href="https://ilovecodeflow.com" rel="noopener noreferrer"&gt;Add your name to this page&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in action
&lt;/h2&gt;

&lt;p&gt;In case you'd like to see how I use the tool, see this video:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/KtdOs4rhikw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;At StackBlitz, we love our community. Don't be a stranger - &lt;a href="https://discord.gg/EQ7uJQxC" rel="noopener noreferrer"&gt;join our Discord&lt;/a&gt; or reach out to me on &lt;a href="https://twitter.com/sylwiavargas" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; with your StackBlitz ideas, dreams, and wishes!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>writing</category>
      <category>hacktoberfest</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>One-click treat for Open Source maintainers</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Tue, 11 Oct 2022 18:18:21 +0000</pubDate>
      <link>https://dev.to/stackblitz/one-click-treat-for-open-source-maintainers-49f7</link>
      <guid>https://dev.to/stackblitz/one-click-treat-for-open-source-maintainers-49f7</guid>
      <description>&lt;p&gt;It's October. For some, a month of beautiful foliage, Halloween, and pumpkin spice. Some Open Source maintainers live through their own version of Halloween - the stream of PRs coming their way to celebrate Hacktoberfest🎃&lt;/p&gt;

&lt;p&gt;At ViteConf earlier today, StackBlitz has just unveiled Codeflow. It is a tool that I have been using for the past few weeks to build our docs site, to quickly fix typos, and to review PRs. Codeflow is and will be free for Open Source projects and for public repos, just like other StackBlitz tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, what's the charm? One click and the entire IDE for the PR boots up inside your browser&lt;/strong&gt;. No more cloning, committing, running dependencies, stashing your local changes.&lt;/p&gt;

&lt;p&gt;If you prefer to watch people do things instead of reading about it, let me show you how I reviewed a PR from my colleague today:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Tmhvg42VFT4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  One-click solution to PR reviews
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.stackblitz.com/codeflow/integrating-codeflowapp-bot" rel="noopener noreferrer"&gt;CodeflowApp bot&lt;/a&gt; is a part of StackBlitz Codeflow. Once you install it on your account, organization, or a single repository, it will detect PRs (and issues containing &lt;a href="https://developer.stackblitz.com/guides/integration/bug-reproductions" rel="noopener noreferrer"&gt;bug reproductions in StackBlitz&lt;/a&gt;) and immediately spin up an entire IDE so you can explore and review it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fzsnfijorqyc0aa4jm578.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fzsnfijorqyc0aa4jm578.png" alt="CodeflowApp bot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't believe it? See it yourself on this &lt;a href="https://github.com/stackblitz/docs/pull/40" rel="noopener noreferrer"&gt;pull request&lt;/a&gt; I prepared for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: you need to have a &lt;a href="//stackblitz.com"&gt;StackBlitz&lt;/a&gt; account.&lt;/p&gt;




&lt;h2&gt;
  
  
  But what is Codeflow?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.stackblitz.com/codeflow/what-is-codeflow" rel="noopener noreferrer"&gt;Codeflow&lt;/a&gt; is a one-click integration with GitHub for seamless coding workflows.&lt;/p&gt;

&lt;p&gt;StackBlitz now helps you switch contexts seamlessly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/working-in-codeflow-ide" rel="noopener noreferrer"&gt;&lt;strong&gt;Codeflow IDE&lt;/strong&gt;&lt;/a&gt; is a fully fledged desktop-grade dev environment capable of running your whole workflow - from production-level dev work to reviewing pull requests.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/content-updates-with-web-publisher" rel="noopener noreferrer"&gt;&lt;strong&gt;Web Publisher&lt;/strong&gt;&lt;/a&gt; is a publishing tool that makes editing docs or blogs pleasant thanks to a realtime preview of the changes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/using-pr-new" rel="noopener noreferrer"&gt;&lt;strong&gt;pr.new&lt;/strong&gt;&lt;/a&gt; is a short URL that can be used on any repository to explore code, a branch or an issue, to review a PR, or even to edit a file, all in a live environment with a realtime preview.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/integrating-codeflowapp-bot" rel="noopener noreferrer"&gt;&lt;strong&gt;CodeflowApp&lt;/strong&gt;&lt;/a&gt; is a friendly bot, which provides a one-click link that spins up the whole environment for pull requests and issues. No more context-switching or branch-checkouts, just a new browser tab with a full IDE and a dev server running.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;At StackBlitz, we love our community. Don't be a stranger - &lt;a href="https://discord.gg/EQ7uJQxC" rel="noopener noreferrer"&gt;join our Discord&lt;/a&gt; or reach out to me on &lt;a href="https://twitter.com/sylwiavargas" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; with your StackBlitz ideas, dreams, and wishes!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>tooling</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Explain like I’m five: package managers</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Sun, 09 Oct 2022 17:01:44 +0000</pubDate>
      <link>https://dev.to/stackblitz/explain-like-im-five-package-managers-1a7a</link>
      <guid>https://dev.to/stackblitz/explain-like-im-five-package-managers-1a7a</guid>
      <description>&lt;p&gt;For a long time, the subject of package managers was for me an intimidating one. As a bootcamp grad, I knew enough to build a website or set up a database but any configuration issues stressed me out. Every now and then, I'll encounter a discussion on which package manager is the superior one and I'd immediately feel humbled by all the things I still don't know about web dev.&lt;/p&gt;

&lt;p&gt;Now that at StackBlitz we are about to make a big announcement regarding package managers, I thought I'd revisit this topic and take an “Explain like I’m five” route 💕 &lt;/p&gt;

&lt;p&gt;Let’s look into what a Node module, a package, and a package manager are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metaphor: LEGO sets
&lt;/h2&gt;

&lt;p&gt;I have recently visited a friend who loves LEGO. His whole house looks like an exhibition hall with colorful sets displayed in the most surprising places. There’s a flower standing on a bathroom mirror shelf, a dragon guarding the stairs, a TV series set near the kitchen table, and a wizardry school near his TV stand. I’ve noticed that in most cases one big creation was, in fact, a collection of smaller sets.&lt;/p&gt;

&lt;p&gt;Imagine that the massive wizardry school castle is your app and for it to be complete, you need to add a bunch of extras like a train station, a magic tree, or a phoenix. Each of them is a separate entity that you can move around as you wish. &lt;/p&gt;

&lt;h2&gt;
  
  
  Node modules and packages
&lt;/h2&gt;

&lt;p&gt;If the wizardry school castle is your app, then each of the extras would be a Node module or a package.&lt;/p&gt;

&lt;p&gt;So your castle needs a magic tree. You could design it yourself but it is way easier get the whole set designed and packaged together in a box with an instruction. A ready-made set in this analogy is a “package” and the instruction is the “&lt;code&gt;package.json&lt;/code&gt;” file. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Node module, or a package, is a piece of code that helps you add some functionality to your app. The &lt;code&gt;package.json&lt;/code&gt; file tells us who created the package, when it was created, what other “dependencies” it needs to function, and so on.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To satisfy the folks who like to be very precise, please note that the &lt;a href="https://docs.npmjs.com/about-packages-and-modules"&gt;npm docs page&lt;/a&gt; makes a distinction between "Node modules" and "packages. However, in most cases “Node module” and “package” are used interchangeably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package managers
&lt;/h2&gt;

&lt;p&gt;Now, if you only have one or two LEGO sets in your home, managing an inventory of all the blocks, sets, and figurines you have would not be that difficult. But what if you are a lifelong collector, pieces break often, there are new sets constantly coming out, and the available color scheme changes faster than the company manages to announce it? Well, ideally you would find a system to keep track of all the pieces you own, need to replace, no longer need, and that that you need to buy?&lt;/p&gt;

&lt;p&gt;This is why in software there is a need for the so-called “package managers”. &lt;strong&gt;A package manager is a tool that helps you keep track of all dependencies of your app in a consistent way.&lt;/strong&gt; It automates the tasks of dependency installation, upgrading, configuration, and removal. It makes sure that all the packages that your app needs are installed, in the correct version, or up-to-date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tl;dr package managers automate all the tasks regarding dependencies, saving your precious time 💕&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;We will share big news regarding package managers at the upcoming &lt;a href="//viteconf.org"&gt;ViteConf&lt;/a&gt;. Grab your free ticket and tune in this week (Oct 12-13) if you're curious 👀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>StackBlitz Monthly Update Post: September 2022</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Thu, 06 Oct 2022 23:04:47 +0000</pubDate>
      <link>https://dev.to/stackblitz/stackblitz-monthly-update-post-september-2022-3d6h</link>
      <guid>https://dev.to/stackblitz/stackblitz-monthly-update-post-september-2022-3d6h</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;At StackBlitz, we have been working hard on the new tools that will premiere at &lt;a href="https://viteconf.org/"&gt;ViteConf&lt;/a&gt; and that I believe will be truly game-changing for Open Source maintainers. &lt;/p&gt;

&lt;p&gt;The release will happen before a significant crowd: at this moment, &lt;strong&gt;21,000 devs&lt;/strong&gt; registered to attend ViteConf! If you haven’t yet, &lt;a href="https://viteconf.org/"&gt;click here to get your free ticket&lt;/a&gt;. Here's mine:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zyEJZX6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4t5q5pdjzdjsxnubx7jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zyEJZX6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4t5q5pdjzdjsxnubx7jv.png" alt="My ViteConf ticket" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, we have been pushing updates and cheering for our community!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today we are bringing you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;StackBlitz in the wild: news from our community&lt;/li&gt;
&lt;li&gt;DX &amp;amp; Compatibility improvements: the change log&lt;/li&gt;
&lt;li&gt;New Teammates: our team has grown - do you wanna join, too?&lt;/li&gt;
&lt;li&gt;Quick bites for the road&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you’ll have a wonderful month!&lt;/p&gt;




&lt;h2&gt;
  
  
  StackBlitz in the wild
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Does running WordPress in the browser without a PHP server sound like fun?&lt;/strong&gt; Here’s &lt;a href="https://make.wordpress.org/core/2022/09/23/client-side-webassembly-wordpress-with-no-server/"&gt;a delightful writeup on spinning it on StackBlitz&lt;/a&gt; thanks to WASM. We may soon be able to run an in-browser WordPress IDE - something to look forward to!&lt;/li&gt;
&lt;li&gt;Wanda has just released a beautiful &lt;a href="https://twitter.com/equinusocio/status/1566752940127395840?s=21&amp;amp;t=Hi7kYmst3ZlttNHl04Y-tw"&gt;Design System components playground&lt;/a&gt; powered by StackBlitz - have a look:
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oqSUOFuJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugbeppukmrmjbzld4wba.png" alt="Wanda playground" width="800" height="439"&gt;
&lt;/li&gt;
&lt;li&gt;tRPC, a library used for building fully typesafe APIs, added a StackBlitz demo &lt;a href="https://trpc.io/?v=10#try-it-out"&gt;on their homepage&lt;/a&gt; and we love to see it!&lt;/li&gt;
&lt;li&gt;Matt Pocock is soon releasing &lt;a href="https://www.totaltypescript.com/tutorials"&gt;Total TypeScript&lt;/a&gt;, a comprehensive course on TypeScript, which &lt;strong&gt;uses StackBlitz to help users learn as they watch the videos without leaving the browser&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tokencss.com/"&gt;Token CSS&lt;/a&gt; is a new tool that seamlessly integrates Design Tokens into your development workflow - you can launch a Token CSS demo with a single click!&lt;/li&gt;
&lt;li&gt;Josh Morony created a bash script to instantly launch a fresh Angular app for test code, &lt;strong&gt;which publishes the app on StackBlitz&lt;/strong&gt; 🚀
&lt;iframe class="tweet-embed" id="tweet-1567483037906259976-489" src="https://platform.twitter.com/embed/Tweet.html?id=1567483037906259976"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1567483037906259976-489');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1567483037906259976&amp;amp;theme=dark"
  }



&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@neodrag/vanilla"&gt;neodrag&lt;/a&gt; has just dropped. It is a lightweight plain JS library that makes your elements draggable. You can play with it &lt;a href="https://stackblitz.com/edit/typescript-wvnloa?file=index.html"&gt;in this demo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;And finally, oh so many StackBlitz starters to choose from in the &lt;a href="https://whyframe.dev/docs/overview/#quick-start"&gt;whyframe docs&lt;/a&gt;! whyframe is a library that “gives iframes superpowers, making it easy to render anything in isolation”.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  DX &amp;amp; compatibility improvements
&lt;/h2&gt;

&lt;p&gt;As we’re working on new tools, we are finishing the month with a whole plethora of improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bug fixes and improvements&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Updated our dashboard with new project starters: effector, NativeScript (mobile section), Quasar, Remotion, VuePress, VitePress.&lt;/li&gt;
&lt;li&gt;Our dashboard now features a description of each of the projects instead of the project slug.&lt;/li&gt;
&lt;li&gt;New repositories now have their name as a header in the README instead of the project slug.&lt;/li&gt;
&lt;li&gt;Introduced improvements to the &lt;a href="https://developer.stackblitz.com/docs/platform/ide-whats-on-your-screen/#console"&gt;Console&lt;/a&gt; components (for &lt;a href="https://developer.stackblitz.com/docs/platform/available-environments/#engineblock"&gt;EngineBlock&lt;/a&gt; projects):&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;console.table&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fixed the display of &lt;code&gt;NaN&lt;/code&gt;, &lt;code&gt;Infinity&lt;/code&gt; and &lt;code&gt;-Infinity&lt;/code&gt; values&lt;/li&gt;
&lt;li&gt;Improved the color contrast and readability of console log items.&lt;/li&gt;
&lt;li&gt;Improved the responsiveness of the Console when logging over hundreds of messages.&lt;/li&gt;
&lt;li&gt;Improved StackBlitz &lt;a href="https://developer.stackblitz.com/docs/platform/available-environments"&gt;EngineBlock&lt;/a&gt; error messaging when a library referenced from the code has an entry point file that does not exist in the package.&lt;/li&gt;
&lt;li&gt;Fixed issue in the EngineBlock projects with importing &lt;code&gt;ace-builds&lt;/code&gt; package due to the way that it handles AMD and the way that it specifies a webpack file-loader in its &lt;code&gt;webpack-loader.js&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;The ace editor library entry point overrides the require function with its own custom logic (amd loader).&lt;/li&gt;
&lt;li&gt;Fixed a bug &lt;code&gt;Ctrl+S&lt;/code&gt; / &lt;code&gt;Cmd+S&lt;/code&gt; not saving project if all tabs are closed.&lt;/li&gt;
&lt;li&gt;Fixed an issue where a standalone preview tab would get stuck in the loading state if the StackBlitz project had some sort of error. These errors are now shown to the user.&lt;/li&gt;
&lt;li&gt;When reloading the page, now the previously displayed screen is copied and displayed for up to 3 seconds.&lt;/li&gt;
&lt;li&gt;Updated our icon set to use Microsoft’s &lt;a href="https://github.com/microsoft/vscode-codicons"&gt;Codeicons&lt;/a&gt; in more places.&lt;/li&gt;
&lt;li&gt;Fixed an issue with the dashboard's project list not showing the “Delete this project” menu entry.&lt;/li&gt;
&lt;li&gt;Now user can open the commit dialog in the auto commit mode by &lt;code&gt;alt&lt;/code&gt;+&lt;code&gt;click&lt;/code&gt; on the commit button (&lt;a href="https://github.com/stackblitz/core/issues/2034"&gt;GitHub Issue #2034&lt;/a&gt; fix).&lt;/li&gt;
&lt;li&gt;Clarified the UI shown when opening a binary file in the editor.&lt;/li&gt;
&lt;li&gt;Binaries are now preserved when you connect git repository to a project with binaries (&lt;a href="https://github.com/stackblitz/webcontainer-core/issues/787"&gt;Github Issue #787&lt;/a&gt; fix).&lt;/li&gt;
&lt;li&gt;Fixed the storage quota exceeded error, by using &lt;code&gt;indexeddb&lt;/code&gt; instead of &lt;code&gt;localstorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Clarified context for options in the user menu.&lt;/li&gt;
&lt;li&gt;Now user can use git integration with GitHub "Keep my email addresses private" setting on (&lt;a href="https://github.com/stackblitz/core/issues/1963"&gt;GitHub Issue #1963&lt;/a&gt; fix).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blog&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Replaced the generic social image and added the new social image for category index pages.&lt;/li&gt;
&lt;li&gt;A specific title to each Category page, instead of showing generic &lt;code&gt;StackBlitz::Blog&lt;/code&gt; title.&lt;/li&gt;
&lt;li&gt;Implemented the new Netlify build image (the new Ubuntu 20.04 images).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Created and added numerous demos, like for example this project that showcases all &lt;a href="https://developer.stackblitz.com/docs/platform/javascript-sdk/#openfileoption"&gt;open file options&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Updated the list of the custom project starters with these friends:&lt;/li&gt;
&lt;li&gt;&lt;a href="https://analogjs.org/new"&gt;analogjs.org/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ladle.dev/new"&gt;ladle.dev/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nativescript.org/"&gt;NativeScript&lt;/a&gt;:

&lt;ul&gt;
&lt;li&gt;TypeScript: &lt;a href="https://nativescript.new/"&gt;nativescript.new&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JavaScript: &lt;a href="https://nativescript.new/javascript"&gt;nativescript.new/javascript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Angular: &lt;a href="https://nativescript.new/angular"&gt;nativescript.new/angular&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Vue: &lt;a href="https://nativescript.new/vue"&gt;nativescript.new/vue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;React: &lt;a href="https://nativescript.new/react"&gt;nativescript.new/react&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Svelte: &lt;a href="https://nativescript.new/svelte"&gt;nativescript.new/svelte&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;a href="https://node.new/nx"&gt;node.new/nx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://qwik.new/"&gt;qwik.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rakkasjs.org/new"&gt;rakkasjs.org/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://storybook.new"&gt;storybook.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vitepress.new"&gt;vitepress.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Refreshed content across the docs platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  New Teammates
&lt;/h2&gt;

&lt;p&gt;Our team has grown! Please meet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://twitter.com/ykmsd/status/1570511500661628928"&gt;Yuka Masuda&lt;/a&gt;&lt;/strong&gt;, a front-end engineer, a community organizer, a talented knitter, an inspiring baker, and a loving human to a shiba inu 🐕&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dave McChesney, an Enterprise Account Executive&lt;/strong&gt;, a skilled archer, a true enthusiast of the outdoors, and a pet parent to two wonderful poodles 🐩&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Are you looking for a ✨ nurturing ✨ team to join? We have roles open for software engineers (&lt;a href="https://jobs.lever.co/stackblitz/26053a78-242e-400b-aa09-c0e322a2a040"&gt;a senior Rails engineer&lt;/a&gt; and &lt;a href="https://jobs.lever.co/stackblitz/7ccd2472-1416-4448-8642-e58e9b32e129"&gt;a senior TypeScript/Rust/Nodde.js engineer&lt;/a&gt;), as well as a &lt;a href="https://jobs.lever.co/stackblitz/24620a2c-26da-4eb7-bfad-5e20b10a66c5"&gt;Product Marketing Manager&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Here are three tweet threads on how it is to work with us: &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1479224585899888640-172" src="https://platform.twitter.com/embed/Tweet.html?id=1479224585899888640"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1479224585899888640-172');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1479224585899888640&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1493877657699819523-130" src="https://platform.twitter.com/embed/Tweet.html?id=1493877657699819523"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1493877657699819523-130');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1493877657699819523&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1533109972518715393-515" src="https://platform.twitter.com/embed/Tweet.html?id=1533109972518715393"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1533109972518715393-515');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1533109972518715393&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Wanna learn more? Feel free to reach out!&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick bites for the road
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Are you ready for ViteConf? Our team member, &lt;a href="https://www.youtube.com/watch?v=nKnw-AYIntw"&gt;Patak, spoke recently to the Storyblok folks&lt;/a&gt; about some of the marvels awaiting you there!
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nKnw-AYIntw"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;li&gt;Here’s &lt;a href="https://thenewstack.io/the-rise-of-cloud-development-and-the-end-of-localhost/"&gt;an article predicting a looming end of the localhost&lt;/a&gt;, inspired by Swyx’ &lt;a href="https://dx.tips/the-end-of-localhost"&gt;blog post.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Puru Vijay, our team member spoke recently at Svelte Summit &lt;a href="https://www.youtube.com/watch?v=pJcbZr5VlV4&amp;amp;t=18400s"&gt;on how to migrate React libraries to Svelte&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Do you already have &lt;a href="https://viteconf.org/"&gt;a ticket for ViteConf&lt;/a&gt;? Just in case, it’s an online and free conference with an all-star speaker list celebrating the web ecosystem at large. Excited? See you on 11-12 October 2022!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;We are so excited for what the nearest future will bring — we are cooking something really special for you! In the meantime, stay tuned on &lt;a href="https://twitter.com/stackblitz"&gt;Twitter&lt;/a&gt; or join our &lt;a href="https://discord.gg/stackblitz"&gt;Discord community&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>wordpress</category>
      <category>opensource</category>
      <category>news</category>
    </item>
    <item>
      <title>Tech Talk: 'Unit Test the Docs: Why You Should Test Your Code Examples' (Write the Docs 2022)</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Mon, 23 May 2022 17:41:32 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/tech-talk-unit-test-the-docs-why-you-should-test-your-code-examples-write-the-docs-2022-a8a</link>
      <guid>https://dev.to/sylwiavargas/tech-talk-unit-test-the-docs-why-you-should-test-your-code-examples-write-the-docs-2022-a8a</guid>
      <description>&lt;p&gt;✨ &lt;strong&gt;What is this post about&lt;/strong&gt;: As a part of my professional growth, I make time to watch conference talks on Ruby, Rails, JS, React, tech writing, and tech trivia. Previously, I'd just watch them but now I will take and publish notes for future reference.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Talk:&lt;/strong&gt; 'Unit Test the Docs: Why You Should Test Your Code Examples' by &lt;a href="https://twitter.com/ben_perlmutter"&gt;Ben Perlmutter&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;One-paragraph summary&lt;/strong&gt;: What’s the fastest way to make developers complain about your docs? Give them code examples that don’t work. As technical writers, we face the constant challenge of keeping code examples accurate and up-to-date. Just as software developers write unit tests to validate that their code remains functional, technical writers can create code examples within unit tests to validate that their documentation is correct.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Impression&lt;/strong&gt;: I never thought about writing unit tests for my code examples or including the unit testing into CI/CD pipeline. By the way, StackBlitz has a wonderful &lt;a href="//developer.stackblitz.com/docs/guide/open-from-github/"&gt;SDK for hosting our code examples on GitHub&lt;/a&gt;, which helps with keeping examples up-to-date.&lt;/p&gt;




&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit tests&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;bits of code that run other code to validate that your code is working as expected&lt;/li&gt;
&lt;li&gt;any non-trivial software project would have unit tests&lt;/li&gt;
&lt;li&gt;they are repeatable&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Examples&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;bits of code that live in the docs&lt;/li&gt;
&lt;li&gt;they are often copy-pastable from the docs to code so they have to be clear and reliable&lt;/li&gt;
&lt;li&gt;often stylized with syntax highlighting so they can stand out and resemble how they'd look in the dev's environment&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;When documenting code examples it's difficult to keep the code in sync with the source code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why unit tests in code examples&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;code is actually used by a dev&lt;/li&gt;
&lt;li&gt;validates that it works so devs can work with the examples&lt;/li&gt;
&lt;li&gt;can be a part of the CI/CD pipeline&lt;/li&gt;
&lt;li&gt;validates that code example works&lt;/li&gt;
&lt;li&gt;ensures that the code is understood by the documentarian&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When to test code examples&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;SDKs, middleware&lt;/li&gt;
&lt;li&gt;tutorials&lt;/li&gt;
&lt;li&gt;3rd party services integrations (ensuring that nothing changed and your code still works)&lt;/li&gt;
&lt;li&gt;complex examples&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why not manually&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;time consuming&lt;/li&gt;
&lt;li&gt;difficult to maintain single source of truth if the same code is used in a few places&lt;/li&gt;
&lt;li&gt;formatic gets weird&lt;/li&gt;
&lt;li&gt;no programmatic modifications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Possible tool&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;BLuehawk - CLI-based tool to extract code examples from source files&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transclusion&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;including contents of one doc inside of another&lt;/li&gt;
&lt;li&gt;like imports or partials&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow with Bluehawk&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;write code example in unit test and make test pass&lt;/li&gt;
&lt;li&gt;annotate + extract the code with Bluehawk&lt;/li&gt;
&lt;li&gt;transclude the code example in the docs&lt;/li&gt;
&lt;li&gt;pros/cons:&lt;/li&gt;
&lt;li&gt;pro: unit tested code&lt;/li&gt;
&lt;li&gt;pro: better record of where code examples are&lt;/li&gt;
&lt;li&gt;pro: single source of truth&lt;/li&gt;
&lt;li&gt;pro: more repeatable&lt;/li&gt;
&lt;li&gt;con: could be more automated&lt;/li&gt;
&lt;li&gt;con: rerunning the CLI operations (tiresome)&lt;/li&gt;
&lt;li&gt;con: working with version control&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>writing</category>
    </item>
    <item>
      <title>Talk Talk: 'One AWS team’s move to docs as code: what worked, what didn’t, what’s next' (Write the Docs 2022)</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Mon, 23 May 2022 17:03:30 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/talk-talk-one-aws-teams-move-to-docs-as-code-what-worked-what-didnt-whats-next-write-the-docs-2022-1o12</link>
      <guid>https://dev.to/sylwiavargas/talk-talk-one-aws-teams-move-to-docs-as-code-what-worked-what-didnt-whats-next-write-the-docs-2022-1o12</guid>
      <description>&lt;p&gt;✨ &lt;strong&gt;What is this post about&lt;/strong&gt;: As a part of my professional growth, I make time to watch conference talks on Ruby, Rails, JS, React, tech writing, and tech trivia. Previously, I'd just watch them but now I will take and publish notes for future reference.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Talk:&lt;/strong&gt; 'One AWS team’s move to docs as code: what worked, what didn’t, what’s next' by Marcia Riefer Johnston and Dave May&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;One-paragraph summary&lt;/strong&gt;: A talk that portrays the journey that the AWS took to switch from authoring the docs in Word (until 2020) to the 'docs-as-code' approach. &lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Impression&lt;/strong&gt;: Very fascinating journey in time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Notes&lt;/li&gt;
&lt;li&gt;Read more&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;talk about implementing the collaborative process of doc authoring (or docs-as-code)&lt;/li&gt;
&lt;li&gt;"Docs as code" - &lt;em&gt;treat documentation the way you treat code:&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;version control&lt;/li&gt;
&lt;li&gt;doc artifacts automatically&lt;/li&gt;
&lt;li&gt;trusted set of reviewers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previous process&lt;/strong&gt; (publishing in Word until 2020)

&lt;ul&gt;
&lt;li&gt;engineer built the software (quickstart)&lt;/li&gt;
&lt;li&gt;engineer created a doc in word&lt;/li&gt;
&lt;li&gt;tech writer edited it&lt;/li&gt;
&lt;li&gt;both collaborated in email (back and forth)&lt;/li&gt;
&lt;li&gt;tedious&lt;/li&gt;
&lt;li&gt;problematic versioning of Word&lt;/li&gt;
&lt;li&gt;publishing to pdf&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New process&lt;/strong&gt; (docs-as-code)

&lt;ul&gt;
&lt;li&gt;engineer built the software (quickstart)&lt;/li&gt;
&lt;li&gt;engineer created a doc in AsciiDoc in VSCode&lt;/li&gt;
&lt;li&gt;"it feels like a step back because it's lacking WYSIWYG"&lt;/li&gt;
&lt;li&gt;no worries about formatting, about fonts or margins&lt;/li&gt;
&lt;li&gt;tech writer edited it in AsciiDoc in VSCode&lt;/li&gt;
&lt;li&gt;both collaborated in github&lt;/li&gt;
&lt;li&gt;transparency in history&lt;/li&gt;
&lt;li&gt;less tedious&lt;/li&gt;
&lt;li&gt;open source&lt;/li&gt;
&lt;li&gt;easier for pull requests, editing&lt;/li&gt;
&lt;li&gt;all changes are tracked&lt;/li&gt;
&lt;li&gt;all changes are published automatically&lt;/li&gt;
&lt;li&gt;published to GitHub pages&lt;/li&gt;
&lt;li&gt;automatically (script and cascading stylesheets)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation!&lt;/strong&gt; A game changer in:

&lt;ul&gt;
&lt;li&gt;GitHub page creation&lt;/li&gt;
&lt;li&gt;formatting&lt;/li&gt;
&lt;li&gt;version history tracking&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Initial pains&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;unneeded code tests delayed publishing (a typo fix can take hours because of the end-to-end testing process)&lt;/li&gt;
&lt;li&gt;repetitive content is a pain to maintain if it changes (retroactively, manually)&lt;/li&gt;
&lt;li&gt;doc process got confusing for authors&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;moving from Word to docs-as-code reduced the time from publishing time by 25% (and then after improvements by further 50%)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next steps&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;dependency on CI/CD developers on debugging&lt;/li&gt;
&lt;li&gt;automate doc testing, linting&lt;/li&gt;
&lt;li&gt;adding version control to boilerplate updates&lt;/li&gt;
&lt;li&gt;adding more doctyped &amp;amp; code variants&lt;/li&gt;
&lt;li&gt;managing translations&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Read more
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="//writethedocs.org/guide/docs-as-code"&gt;Docs as code&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>writing</category>
    </item>
    <item>
      <title>What do you look for on a team page?</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Mon, 16 May 2022 17:05:24 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/what-do-you-look-for-on-a-team-page-h5i</link>
      <guid>https://dev.to/sylwiavargas/what-do-you-look-for-on-a-team-page-h5i</guid>
      <description>&lt;p&gt;I am working on adding a team page to our company's website and I'm wondering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;can you recall an example of a team page that'd just really lovely/informative/awesome?&lt;/li&gt;
&lt;li&gt;what information do you look for on such a page? is it helpful at all?&lt;/li&gt;
&lt;li&gt;when do you typically check team page?&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;From my side, I remember that &lt;a href="https://reactjs.org/community/team.html"&gt;React team page&lt;/a&gt; helped me with my OSS contributions because I noticed they are just humans with hobbies 😂 &lt;/p&gt;

&lt;p&gt;I also remember visiting &lt;a href="https://upchieve.org/team"&gt;UPchieve's&lt;/a&gt; team page and "getting to know" the folks who make the team when I interviewed there. I looked at the skills distribution and roles, as well as the demographics. I wanted to imagine what working there could be like given the size of different working groups. &lt;/p&gt;

&lt;p&gt;(not relevant but while I decided to take another offer, I think about the UPchieve interviewing experience only fondly)&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>startup</category>
    </item>
    <item>
      <title>Peaceful coexistence</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Wed, 09 Mar 2022 10:17:29 +0000</pubDate>
      <link>https://dev.to/sylwiavargas/peaceful-coexistence-4886</link>
      <guid>https://dev.to/sylwiavargas/peaceful-coexistence-4886</guid>
      <description>&lt;p&gt;Well, year three of the &lt;code&gt;#shecoded&lt;/code&gt; reflections! &lt;/p&gt;

&lt;p&gt;Over the past 12 months I've changed job twice and each time I ended up in a team with mostly guys. In both cases, my initial apprehension quickly disappeared because I simply felt safe. This was a striking contrast to my previous work experiences in tech. So what made these two teams different? &lt;/p&gt;

&lt;h2&gt;
  
  
  Trust and respect
&lt;/h2&gt;

&lt;p&gt;I feel like my colleagues trust and respect me. This is so basic but, sadly, not always a given. In my previous jobs in tech, I had to resort to a number of techniques to "assert" myself such as casually bragging about my achievements, working really hard to prove my skills, or firmly stating ny boundaries over and over. Why did I need to do it? Imagine a male colleague, who quizzes you (publicly or privately) on minute details of JavaScript intricacies just because "he wants to be precise" so you start watching yourself closely if, for instance, you say "parameter" instead of "argument" just to later realize that he does not expect the same level of precision from the dudes. &lt;/p&gt;

&lt;p&gt;Or a dude who interrupts you in the meeting because “in Java this is handled in xyz” way so clearly your solution won’t work. Your solution is in Ruby or React but aren’t all languages the same?&lt;/p&gt;

&lt;p&gt;Or imagine an intern asking you, the only woman at a meeting, to take notes. It was not his meeting but he just really wanted to make sure that someone takes notes.&lt;/p&gt;

&lt;p&gt;I was shocked when I joined my previous team and as the only Rubyist at a meeting I was referred to as "a Ruby expert" in a serious manner from the get-go and asked to take a stance on a subject. It's not about vanity. It's that the first time I had the opportunity to comfortably say that the question exceeds my competences instead of feeling quizzed and cornered. &lt;strong&gt;The feeling of being able to say you don't know and not being scared to lose credibility turned out to be so liberating.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or, when I'm given a new task and I really don't know where to start, I am not being micromanaged. I am trusted with that I will do my research and ask questions if I don't understand something. In other words, I’m treated like an adult.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credit
&lt;/h2&gt;

&lt;p&gt;Oh, how many times did it happen that a male colleague claimed credit for not only my idea but also work, even if the workload distribution was evidenced by github commits.&lt;/p&gt;

&lt;p&gt;At my current team at &lt;a href="//stackblitz.com"&gt;StackBlitz&lt;/a&gt;, we have a tradition of shoutouts where every week we gather to express gratitude and admiration for other team members. This is the most egalitarian space to tell others how much you appreciate them and how impressed you are with their work. It facilitates the culture of giving credit over getting credit. Why don’t other companies have that? &lt;strong&gt;Isn’t it time to stop with the ego and competition in the field that’s so heavily depends on collaboration?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  "Difficult" team conversations
&lt;/h2&gt;

&lt;p&gt;In my past experiences some of the subjects that are important for me were simply ridiculed by some team members because they did not concern them and yet they had all the opinions about them. It always took a lot of emotional labor from me to lead a discussion in the team, react to the silly or ignorant remarks, present arguments, research, and stats, and finally "convince" them "if I care so much". Examples include both your standard social justice issues like adding pronouns to the slack profile or changing the name of the repo branch from "master" to "main" but also, really, any kind of issue. &lt;/p&gt;

&lt;p&gt;I was simply blown away with how easy these conversations went in my current job. The pronouns question was raised by a colleague once and everyone just immediately added them to their profiles - no discussion or opinions were needed. I still expected that the "master" branch conversation would be a bit more challenging because it's A LOT OF REPOs we are talking about but, similarly, before I even finished pitching the idea, my colleagues already created a to-do list with action steps. Mind you - we are not a predominantly American team and these conversations are not a part of our national discourses. Folks could not be further away from why decolonizing tech matters. It's just that every team member is trusted and respected and if something makes them feel safer or more included, why not do that?&lt;/p&gt;

&lt;p&gt;And anyhow, even in the discussions when the issue raised is difficult to implement or raises further questions, it is never made about who raised it ("omg here we go again") and a solution is found collaboratively. It turns out that &lt;strong&gt;no conversation seems to be difficult if everyone is treated with empathy and respect&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Funny jokes, spicy conversations, and personal boundaries
&lt;/h2&gt;

&lt;p&gt;In my previous teams, there were always some mildly-sexist or sexually-charged jokes that would make me feel really uncomfortable. Being the only woman, I often struggled to explain why a joke is not funny because the choir of male chuckle was just deafening. &lt;/p&gt;

&lt;p&gt;Similarly, as the only woman, I would often find myself touched or hugged by my colleagues because I'm "so sweet". I'd freeze every time and when I finally started expressing my boundaries, I was either labelled unfriendly or it was explained that I'm Polish (and thus cold). &lt;/p&gt;

&lt;p&gt;Let me not even get started on some of the conversations my colleagues had about appearance of some women. &lt;/p&gt;

&lt;p&gt;I only realized the full impact of such microaggressions when they disappeared from my surroundings. It was such a relief when I joined my team and saw no stupid memes, read no stupid jokes, and was not made to feel like a prey. It's really lovely to be truly a part of the team and be able to joke together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better work culture exists
&lt;/h2&gt;

&lt;p&gt;I think the fallacy is that we hear about how tech is toxic and oftentimes, the people who are given the platform are tech bros who do not care about social equality (sometimes beyond empty declarations). This makes us think that all tech is this way and we just need to endure it.&lt;/p&gt;

&lt;p&gt;However, I was lucky to find two really healthy teams and I do believe that there are more and more pockets of tech that's balanced and kind. Nurturing such work culture is my goal for this year - and a wish for you all to experience it 💕&lt;/p&gt;




&lt;p&gt;Cover photo by Madison Inouye from &lt;a href="//pexels.com"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>beginners</category>
      <category>career</category>
    </item>
  </channel>
</rss>
