<?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: Christian Siemoneit</title>
    <description>The latest articles on DEV Community by Christian Siemoneit (@christian0cfg).</description>
    <link>https://dev.to/christian0cfg</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%2F549539%2Ffbeb3c27-f6a4-43b9-a1ae-6cfe619dc8e7.jpg</url>
      <title>DEV Community: Christian Siemoneit</title>
      <link>https://dev.to/christian0cfg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christian0cfg"/>
    <language>en</language>
    <item>
      <title>JavaScript Flaws: 5 stupid NPM packages</title>
      <dc:creator>Christian Siemoneit</dc:creator>
      <pubDate>Fri, 22 Jan 2021 15:48:03 +0000</pubDate>
      <link>https://dev.to/codesphere/javascript-flaws-5-stupid-npm-packages-5fi</link>
      <guid>https://dev.to/codesphere/javascript-flaws-5-stupid-npm-packages-5fi</guid>
      <description>&lt;p&gt;As co-founder of Codesphere and Ex-Googler I have been passionate about coding since I was a child. I love NodeJS/JavaScript/Typescript with all their flaws (and there are many lol). One of these flaws for which the JavaScript Community takes a ton of heat is NPM.&lt;/p&gt;

&lt;p&gt;For those who do not know NPM - let me explain: NPM is the dominant package manager for JavaScript and NodeJs and it allows importing other source code into your project. &lt;/p&gt;

&lt;p&gt;As you probably know, NPM is a pretty easy meme target, unless you avoided the internet for the last couple of years. The promise is that you include ten things, ten things depend on five things, five things depend on ten things and the next thing is that you have half a gigabyte of node modules on your disk.&lt;/p&gt;

&lt;p&gt;NPM is essentially unrestricted and even more than on wikipedia anyone can publish anything. This can even lead to a point where you publish something that is meant to be a joke and people actually start depending on it. One example where unnecessary dependencies have been dangerous is &lt;a href="https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code/" rel="noopener noreferrer"&gt;leftpad&lt;/a&gt;, a library that prepended a number of characters to a string. Its removal led to outages all over the internet.&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%2Fi%2Fb4os79tw7b748o78esh5.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%2Fi%2Fb4os79tw7b748o78esh5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are my TOP 5 Unnecessary NPM Libraries on which people actually depend:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1: &lt;a href="https://www.npmjs.com/package/is-ten-thousand" rel="noopener noreferrer"&gt;is-ten-thousand&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This library is used to find out if (yep, actually) a number is equal to ten thousand.&lt;/p&gt;

&lt;p&gt;There are actually some people depending on it and if you need even more help with questions of this kind, there are also &lt;a href="https://www.npmjs.com/package/is-hundred" rel="noopener noreferrer"&gt;is-hundred&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/is-ten" rel="noopener noreferrer"&gt;is-ten&lt;/a&gt; available at your command.&lt;/p&gt;

&lt;p&gt;Funny enough, is-ten even states how it is used by 10x engineers ;)&lt;/p&gt;

&lt;h3&gt;
  
  
  2: &lt;a href="https://www.npmjs.com/package/owoifyx" rel="noopener noreferrer"&gt;owoifyx&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This library is very straightforward to use and it does exactly what you would expect:&lt;/p&gt;

&lt;p&gt;It ‘owoifies’ (Hello -&amp;gt; Hewwo) your text.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;owoify&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;owoifyx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;owoify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello friend!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Hewwo fwiend (*^ω^)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;26 people this week decided that they would need exactly this in their project.&lt;/p&gt;

&lt;h3&gt;
  
  
  3: &lt;a href="https://www.npmjs.com/package/true" rel="noopener noreferrer"&gt;true&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This package is “A JavaScript port of the Unix utility 'true'” and it returns ‘true’. It even states how it should be used when you need a function that returns true.&lt;/p&gt;

&lt;p&gt;The super clean three lines of code were developed by nine contributors in 30 commits, and like every good package, it has 100% test coverage. You might think: Why not use the built in constant ‘true’? - Uhm.. I don’t know!&lt;/p&gt;

&lt;p&gt;More than 300 people couldn’t live without this core utility this week.&lt;/p&gt;

&lt;p&gt;There is also a companion package &lt;a href="https://www.npmjs.com/package/false" rel="noopener noreferrer"&gt;false&lt;/a&gt; which does exactly the same for false.&lt;/p&gt;

&lt;h3&gt;
  
  
  4: &lt;a href="https://www.npmjs.com/package/emoji-poop" rel="noopener noreferrer"&gt;emoji-poop&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;As one would expect, this returns the poop emoji, but what is really great about this piece of code is that this also has a 100% test coverage and therefore will - guaranteed! - return the poop emoji.&lt;/p&gt;

&lt;p&gt;11 people this week used it, maybe to prove a point?&lt;/p&gt;

&lt;h3&gt;
  
  
  5: &lt;a href="https://www.npmjs.com/package/is-odd" rel="noopener noreferrer"&gt;is-odd&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;A trivial operation to do in JavaScript, though the most used library in this list. It returns true if a number is odd, and it has more than 500k downloads this week.&lt;/p&gt;

&lt;p&gt;For all of you who might have wondered if you could also check if a number is even? Surprise - this package exists (&lt;a href="https://www.npmjs.com/package/is-even" rel="noopener noreferrer"&gt;is-even&lt;/a&gt;) and was downloaded more than 100k times this week. &lt;/p&gt;

&lt;p&gt;Fun fact: After some investigation by the &lt;a href="http://codesphere.cloud" rel="noopener noreferrer"&gt;Codesphere&lt;/a&gt; experts, we found that it imports the is-odd package, and negates it to your convenience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Many thanks for reading this post, hope you liked it! What's your favorite NPM package?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>node</category>
      <category>npm</category>
    </item>
    <item>
      <title>Get a free VM!</title>
      <dc:creator>Christian Siemoneit</dc:creator>
      <pubDate>Tue, 05 Jan 2021 13:10:34 +0000</pubDate>
      <link>https://dev.to/christian0cfg/get-a-free-vm-134h</link>
      <guid>https://dev.to/christian0cfg/get-a-free-vm-134h</guid>
      <description>&lt;p&gt;Early access + pre-launch gift! Sign up for Codesphere to get a free VM --&amp;gt; &lt;a href="https://codesphere.cloud/"&gt;https://codesphere.cloud/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>coding</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Why online coding is the future ✅</title>
      <dc:creator>Christian Siemoneit</dc:creator>
      <pubDate>Tue, 05 Jan 2021 12:33:44 +0000</pubDate>
      <link>https://dev.to/codesphere/why-online-coding-is-the-future-fep</link>
      <guid>https://dev.to/codesphere/why-online-coding-is-the-future-fep</guid>
      <description>&lt;p&gt;Google uses Cider internally. Cider is a custom browser code editor which mounts the enormous Piper file system and provides a super tight integration with internal review, build and testing tools.&lt;/p&gt;

&lt;p&gt;Github recently announced Github Codespaces to jump directly into a working environment when looking at a repository. Gitlab recently announced their partnership with Gitpod, building their own opensource clone of VSCode, providing the same functionality as Codespaces since some time already.&lt;/p&gt;

&lt;p&gt;But why all this? Simply put, desktop IDE’s do not scale up!&lt;br&gt;
In times of microservices and cloud developers just have to work on more complex projects… faster 🤓&lt;/p&gt;

&lt;p&gt;While it is clear for Google that a single desktop, no matter how powerful, can not handle the Google Dev environment alone, it becomes almost equally important for smaller companies to not spend months on setting up a development environment.&lt;/p&gt;

&lt;p&gt;The next logical step?&lt;/p&gt;

&lt;p&gt;Move the full development infrastructure (from dev to production) to the cloud and unlock the potential of tools that exceed the abilities of my desktop.&lt;/p&gt;

&lt;p&gt;This is why we built Codesphere 🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>IDE’s are stuck in the past
</title>
      <dc:creator>Christian Siemoneit</dc:creator>
      <pubDate>Tue, 05 Jan 2021 11:07:58 +0000</pubDate>
      <link>https://dev.to/codesphere/ide-s-are-stuck-in-the-past-1ok7</link>
      <guid>https://dev.to/codesphere/ide-s-are-stuck-in-the-past-1ok7</guid>
      <description>&lt;p&gt;IDE’s come from a time in which the majority of what we programmed were monolithic desktop applications.&lt;/p&gt;

&lt;p&gt;But that’s not the reality anymore for many of us.&lt;/p&gt;

&lt;p&gt;As web developers we now work on distributed systems consisting of many different microservices.&lt;/p&gt;

&lt;p&gt;Let me give you an example: Not long ago we were all happy to listen to our music with Windows Media Player, a nice and simple desktop application that could probably build and run in any C-IDE without many problems.&lt;/p&gt;

&lt;p&gt;Today many people use Spotify or similar streaming services to not only listen to music but also share and interact with the artists.&lt;/p&gt;

&lt;p&gt;I don’t even want to imagine the hassle of setting up a development version of such a big software system.&lt;/p&gt;

&lt;p&gt;A typical workflow of mine&lt;br&gt;
Here is an example of the Codesphere co-founder Jonas. It is about setting up a new project from one of his friend. Spoiler: It’s not a great experience.&lt;/p&gt;

&lt;p&gt;Because I recently got a new development machine I set up my keymap, installed a couple plugins, pulled out my split keyboard and I was able to do my code changes at a reasonable speed (ignoring the occasional wrong import suggestion I always seem to get).&lt;/p&gt;

&lt;p&gt;Now the time comes to test my changes.&lt;/p&gt;

&lt;p&gt;I begin with installing the project dependencies and at this point my hands begin to sweat as the CPU fan of my modern 2k€ laptop begins to spin at its maximum rate.&lt;/p&gt;

&lt;p&gt;The IDE has started indexing a couple million of files and is burning away my battery at light speed. After a couple of minutes my computer becomes responsive again and I try to start the build and run script. But it’s not working!&lt;/p&gt;

&lt;p&gt;It looks like some of the linux commands from my colleague don’t work on my windows computer. Also, I accidentally change the line endings from LF to CRLF on the files I modified, which will probably cause a headache later on when I try to deploy this to the production linux infrastructure.&lt;/p&gt;

&lt;p&gt;Finally I get some of the microservices I want to test running. They are complaining about wrong credentials and about being blocked by the Azure firewall.&lt;/p&gt;

&lt;p&gt;So I whitelist my daily changing IP address and gather the development secrets from the companies file share.&lt;/p&gt;

&lt;p&gt;Even now: one of the services is still not fully healthy.&lt;/p&gt;

&lt;p&gt;I ask my friend for help… He tells me that that particular service manages cluster resources and can only be run in a kubernetes environment and that I would have to install it if I wanted to debug that.&lt;/p&gt;

&lt;p&gt;At this point my morning is over and I leave the desk to get a second coffee and ask myself:&lt;/p&gt;

&lt;p&gt;‘Integration’ is a significant part of I(ntegrated) D(evelopment) E(nvironments) — so why are IDEs disconnected from our workflows today?&lt;/p&gt;

&lt;p&gt;Let’s fix this&lt;/p&gt;

&lt;p&gt;As web developers we always try to port as many desktop apps as possible to the browser.&lt;/p&gt;

&lt;p&gt;After all, the browser seems to have solved the problem of software distribution allowing users to work at any place and any time.&lt;/p&gt;

&lt;p&gt;Anywhere: Imagine being able to code anywhere, even on your Android tablet without having your lap burned from the CPU quickly burning away your battery.&lt;/p&gt;

&lt;p&gt;Anytime: New collaborators could simply click a link and start coding right away. No individual setup process for the specific hardware.&lt;/p&gt;

&lt;p&gt;There are more advantages to think of like real-time collaboration, having your settings synced everywhere and simplifying the integration of cloud services just to name a few.&lt;/p&gt;

&lt;p&gt;At Codesphere we make this vision a reality.&lt;/p&gt;

&lt;p&gt;Do you know the limitations and painpoints Jonas is describing in his article? Let us know! If you enjoyed reading this article, feel free to share it and follow us!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cloud</category>
      <category>codequality</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
