<?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: Maximilian Torggler</title>
    <description>The latest articles on DEV Community by Maximilian Torggler (@scriptify).</description>
    <link>https://dev.to/scriptify</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%2F83313%2Fde1f6d25-080c-41e6-8f49-6d46bdb1c548.png</url>
      <title>DEV Community: Maximilian Torggler</title>
      <link>https://dev.to/scriptify</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scriptify"/>
    <language>en</language>
    <item>
      <title>Java is also an island! A short travel report</title>
      <dc:creator>Maximilian Torggler</dc:creator>
      <pubDate>Fri, 30 Oct 2020 09:57:12 +0000</pubDate>
      <link>https://dev.to/scriptify/java-is-also-an-island-a-short-travel-report-8on</link>
      <guid>https://dev.to/scriptify/java-is-also-an-island-a-short-travel-report-8on</guid>
      <description>&lt;p&gt;&lt;strong&gt;Java is also an island.&lt;/strong&gt; That's the title of a legendary &lt;a href="http://openbook.rheinwerk-verlag.de/javainsel/"&gt;Java reference book&lt;/a&gt;, common in German-speaking countries. My high school teacher used to read in it during our CS classes, I've never dared to touch that massive book when I was that age, and nowadays, I'd rather use Stackoverflow. Nonetheless, the title has impressed itself on me.&lt;/p&gt;

&lt;p&gt;After school, I've never used Java again for any serious applications, there was no need on my journey as a Fullstack JS dev. But a week ago, this was to change: I needed access to the low-level primitives of the Android Camera API, to shoot latency-free images from our hybrid native app. In addition to that, we also need to communicate with an external GPS device which is connected via an OTG cable to the phone.&lt;br&gt;
A native plugin was the only viable solution to that problem, as everything has to be as latency-free as possible, for perfectly precise GPS position data in the JPEGs metadata (we are talking about &amp;lt; 1cm here). That's where the journey back into the forgotten lands of Java has begun: And surprisingly, the switch wasn't that difficult at all. As I was writing TypeScript for the last 2.5 years nearly every day, it took me just a few hours to get back into Java development. The harder part was re-learning about the Android platform and its APIs, plus the fact that writing Cordova plugins is a real pain. But after paving my way through the endless Android docs and comparing all possible Camera API libraries performance-wise, I managed to accomplish the task and decided to open-source the plugin as part of the Hacktoberfest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/scriptify/cordova-plugin-fastcam"&gt;Read the code on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, that's the short story of my voyage into the exciting lands of Java. And I must say, I didn't dislike it at all, although the DX of my go-to stack is much better, it was a welcome diversion.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How Psychoacoustics can make you a more productive developer</title>
      <dc:creator>Maximilian Torggler</dc:creator>
      <pubDate>Wed, 28 Oct 2020 21:16:42 +0000</pubDate>
      <link>https://dev.to/scriptify/how-psychoacoustics-can-make-you-a-more-productive-developer-9kp</link>
      <guid>https://dev.to/scriptify/how-psychoacoustics-can-make-you-a-more-productive-developer-9kp</guid>
      <description>&lt;p&gt;Not being able to stay focused is something everyone sitting in an office, be it at home, a co-working space, or the basement of your auntie, has experienced. Some less, some more, but if you don't belong to the rare group of superhumans who wake up in the morning and practice Deep Work until noon non-stop, read on (otherwise, well, &lt;em&gt;why did you open this article?&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;The number of productivity-enhancing methods and tools to our disposal is nearly endless, but today, let's focus on one of the by far most effective ones: Sound.&lt;/p&gt;

&lt;p&gt;There's no doubt that the right sounds can alter our brain state tremendously and immediately, that's just how the human brain works. While there's &lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5618809/"&gt;plenty&lt;/a&gt; &lt;a href="https://www.academia.edu/36120496/The_Sound_of_Productivity_Analysing_attitudes_towards_music_listening_in_the_workplace_in_collaboration_with_Totaljobs_"&gt;of&lt;/a&gt; &lt;a href="https://www.sciencedaily.com/releases/2019/10/191021093957.htm"&gt;scientific research&lt;/a&gt; proving that, we all made that experience first hand: The sudden state of joy we found ourselves in when listening to our favorite, uplifting summer track; the unexpected feeling of nostalgia when tuning in the music we have listened to years ago. Now, knowing the fact that we can alter our psychological state using auditive stimulation, why not use that fact knowingly to put ourselves into a state of focus? And that's exactly where Psychoacoustics enter the game. &lt;a href="https://en.wikipedia.org/wiki/Psychoacoustics"&gt;Psychoacoustics&lt;/a&gt; is the scientific study of how humans perceive various sounds. Its applications include a variety of distinct fields from psychology to software development &lt;em&gt;(**)&lt;/em&gt; : Did you know that audio compression algorithms like MP3 use psychoacoustic models to improve the compression ratio? So you probably already borrowed concepts of that field in one of your applications. Anyway, in this article, we will focus on the immediate cognitive effects of sounds and how to use them to our advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Music, binaural beats, or ambient sound?
&lt;/h2&gt;

&lt;p&gt;Researchers found, that the produced cognitive effect of sound mostly depends on the listener, which makes sense: as anyone has made different experiences in different soundscapes, some may feel right in work mood when they hear the hasty back and forth of a city café, others aren't able to focus for a second in such an environment. For some, the ultimate focus weapon may be listening to Mozart, for others, it's tuning in the ambient sounds of a co-working space.&lt;/p&gt;

&lt;p&gt;You certainly already heard of &lt;a href="https://en.wikipedia.org/wiki/Beat_(acoustics)#Binaural_beats"&gt;binaural beats&lt;/a&gt;, which were (and possibly still are) subject to a large hype. There's &lt;a href="https://psychology.stackexchange.com/questions/8371/is-there-scientific-evidence-on-the-benefits-of-binaural-beats"&gt;little scientific evidence&lt;/a&gt; that binaural beats produce measurably different cognitive effects than other kinds of acoustics. Still, if that's what your brain resonates with, you should definitely use it to stay focused!&lt;/p&gt;

&lt;p&gt;When it comes to listening to music, according to Nick Perham, a researcher published in &lt;em&gt;Applied Cognitive Psychology&lt;/em&gt;, &lt;a href="http://onlinelibrary.wiley.com/doi/10.1002/acp.1731/abstract"&gt;music isn't suitable for highly demanding cognitive tasks&lt;/a&gt;, as music competes for your brain's space. Instead, he recommends listening to lesser distracting ambient sounds. However, some researchers disagree with that statement.&lt;/p&gt;

&lt;p&gt;Dr. Emma Gray &lt;a href="https://www.inc.com/jessica-stillman/how-to-choose-the-perfect-playlist-for-maximum-productivity.html"&gt;worked with Spotify&lt;/a&gt; to research the benefits of certain types of music, and came to the result that musical tempo in the range of 50-80 beats per minute can be beneficial for your concentration.&lt;/p&gt;

&lt;p&gt;So ultimately, we need to make our own decision on what to listen to: The path of finding &lt;strong&gt;the perfect sound for you&lt;/strong&gt; to focus on will be one of experimentation. Try out a variety of ambient soundscapes or styles of music you like (although there's evidence that lyrical music is more likely to distract) while you are working. In addition to possibly putting our minds in a state of focus, this has also the huge benefit of blocking out distracting background noises.&lt;/p&gt;

&lt;p&gt;To give you some inspiration, here are some tools you can start with to improve focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://noisli.com"&gt;noisli.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://soundescape.io/?utm_source=devto"&gt;soundescape.io&lt;/a&gt; (Which I am the creator of)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ambient-mixer.com"&gt;ambient-mixer.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mynoise.net/"&gt;mynoise.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://asoftmurmur.com/"&gt;asoftmurmur.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://focusli.com/"&gt;focusli.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm a software developer for many years now and use tools like those on a daily basis, no matter if I'm in Bali or, like right now, working from home. They help me to stay on track and give distractions no chance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Psychoacoustics"&gt;Psychoacoustics&lt;/a&gt; is the scientific study of how humans perceive sound. We can use those scientific insights to reach a state of focus using different types of sounds. Ambient sound has been proven to drastically improve focus, but everyone is reacting differently to different soundscapes, so you have to find out for yourself which setting suits you best: Is it quite chattering in a co-working space or the gently soothing waves of the sea? There are various tools like &lt;a href="https://noisli.com"&gt;noisli.com&lt;/a&gt; or &lt;a href="https://soundescape.io"&gt;soundescape.io&lt;/a&gt; which can help with exactly that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What tools and techniques are you using to stay focused over long periods of time?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(**) Another fun fact about psychoacoustic concepts in action:&lt;/em&gt; 3D game engines, such as the ones used for VR games, use spatial audio engines, which are based on psychoacoustic research. Such an engine is also used to power &lt;a href="https://soundescape.io/?utm_source=devto"&gt;soundescape.io&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;daily, actionable productivity tips&lt;/strong&gt; and more content like this, &lt;a href="https://twitter.com/soundescape_io"&gt;drop a follow on Twitter 🐦&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>Cantara 💙 - A CLI tool to create Serverless Fullstack React apps in minutes</title>
      <dc:creator>Maximilian Torggler</dc:creator>
      <pubDate>Wed, 15 Apr 2020 10:03:32 +0000</pubDate>
      <link>https://dev.to/scriptify/cantara-a-cli-tool-to-create-serverless-fullstack-react-apps-in-minutes-23g</link>
      <guid>https://dev.to/scriptify/cantara-a-cli-tool-to-create-serverless-fullstack-react-apps-in-minutes-23g</guid>
      <description>&lt;p&gt;Today, I am happy to announce the release of a project I was working on lately: &lt;br&gt;
     &lt;strong&gt;💥 &lt;a href="https://cantara.js.org/" rel="noopener noreferrer"&gt;Cantara&lt;/a&gt;&lt;/strong&gt; 💥&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A CLI tool to create (Serverless) Fullstack React apps using TypeScript&lt;/strong&gt;&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%2Fcantara.js.org%2Fimg%2Fctra_dev.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%2Fcantara.js.org%2Fimg%2Fctra_dev.gif" alt="Cantara CLI Wizard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cantara.js.org/" rel="noopener noreferrer"&gt;Website&lt;/a&gt; • &lt;a href="https://github.com/CantaraJS/cantara" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; • &lt;a href="https://spectrum.chat/cantara" rel="noopener noreferrer"&gt;Chat on Spectrum&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ❓ The WHAT
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://cantara.js.org/" rel="noopener noreferrer"&gt;Cantara&lt;/a&gt; stands for:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;C&lt;/strong&gt;reate &lt;strong&gt;A&lt;/strong&gt; &lt;strong&gt;N&lt;/strong&gt;ode, &lt;strong&gt;T&lt;/strong&gt;ypeScript &lt;strong&gt;A&lt;/strong&gt;nd &lt;strong&gt;R&lt;/strong&gt;eact &lt;strong&gt;A&lt;/strong&gt;pplication.&lt;/p&gt;

&lt;p&gt;It is a &lt;strong&gt;zero-config&lt;/strong&gt; tool for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developing (one or more) React Applications&lt;/li&gt;
&lt;li&gt;...with one or more Serverless endpoints &lt;strong&gt;and/or&lt;/strong&gt; Node.js APIs&lt;/li&gt;
&lt;li&gt;...organized in a Monorepository&lt;/li&gt;
&lt;li&gt;...using TypeScript on all layers of the stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also makes it easy to share code between layers or to external consumers as packages, which can be used internally or from the outside using NPM.&lt;/p&gt;

&lt;p&gt;Cantara aims to cover all aspects of the application development lifecycle for monorepository codebases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Building/deploying/publishing&lt;/li&gt;
&lt;li&gt;Continous Integration&lt;/li&gt;
&lt;li&gt;...and so on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It could also be described as &lt;strong&gt;the create-react-app for Fullstack applications&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So essentially a tool to make Fullstack TypeScript app development a breeze.&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;✨Less configuring, more coding.✨&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  ⚡ Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Develop client side rendered React Apps (like you can do with create-react-app)&lt;/li&gt;
&lt;li&gt;Develop and deploy serverless APIs&lt;/li&gt;
&lt;li&gt;Develop Node.js applications (e.g. an express based REST API)&lt;/li&gt;
&lt;li&gt;Develop React Components/JS packages, use them in your application and publish them to NPM&lt;/li&gt;
&lt;li&gt;Write unit/integration/e2e tests&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  ❔ The WHY
&lt;/h2&gt;

&lt;p&gt;Most of the projects I am and was working on professionally, be it as a solo-dev or in teams, are structured as large monorepositories, where multiple APIs and React Apps are living in the same codebase. This workflow has a lot of advantages, but also includes a tremendous amount of configuration to get everything right: bundling, transpiling, environment variables, testing, CI/CD, just to name a few. This can get out of hand pretty quick. Now combine that complexity with the fact that there's not only one such repository, but multiple per company: Then you have dozens of different configuration files lying around, all trying to achieve basically the same task. Changing a webpack plugin in one configuration should also be reflected in all the other projects. Cantara aims to act as an easy to use abstraction layer over all those tools, taking away the boring parts which just hold you back and cost a lot of precious time. No one likes to spend the whole day configuring webpack (ok,  except me probably 🙈).&lt;/p&gt;
&lt;h2&gt;
  
  
  🔥 Getting started
&lt;/h2&gt;

&lt;p&gt;Enough talk, now let's do something useful with it.&lt;br&gt;
Getting up and running with a fullstack web application using Cantara is as easy as executing two commands. Let's do this!&lt;/p&gt;

&lt;p&gt;First, install Cantara globally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; cantara
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can take some time, as all development dependencies needed for frontend and backend development need to be installed.&lt;/p&gt;

&lt;p&gt;After that, just type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ctra init my-fullstack-app
&lt;span class="nb"&gt;cd &lt;/span&gt;my-fullstack-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create a new folder with a sample application in it.&lt;/p&gt;

&lt;p&gt;Now, start Cantara's CLI wizard, which prompts you with all the options you have in the current repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ctra
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fcantara.js.org%2Fimg%2Fctra_dev.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%2Fcantara.js.org%2Fimg%2Fctra_dev.gif" alt="Cantara CLI Wizard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose the &lt;code&gt;dev&lt;/code&gt; command and then pick the application &lt;code&gt;random-image-app&lt;/code&gt;, which is a sweet little React app displaying a random image from Unsplash.&lt;br&gt;
This React app expects an API server to be running on port &lt;code&gt;3000&lt;/code&gt;, so let's start that one too! To do so, repeat what you just have done (&lt;code&gt;ctra&lt;/code&gt; -&amp;gt; &lt;code&gt;dev&lt;/code&gt;) in a new terminal, but this time select &lt;code&gt;express-api&lt;/code&gt;.&lt;br&gt;
As soon as the server started, you can navigate to &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;localhost:8080&lt;/a&gt; and should see the following:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcantara.js.org%2Fimg%2Fstarter_app.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%2Fcantara.js.org%2Fimg%2Fstarter_app.png" alt="Cantara simple starter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you can edit the files under &lt;code&gt;react-apps/random-image-app/src&lt;/code&gt; or &lt;code&gt;node-apps/express-api/src&lt;/code&gt; and start developing your app! Adding a new React app or API is as easy as executing the &lt;code&gt;new&lt;/code&gt; command. For more information, &lt;a href="https://cantara.js.org/" rel="noopener noreferrer"&gt;go to the docs.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This quick start guide merely scratches the surface, but hopefully gives you an idea of what Cantara is and how it can help &lt;strong&gt;you&lt;/strong&gt; with your next (or existing) project!&lt;/p&gt;

&lt;p&gt;If Cantara sparked your interest, here are some links to get you started:&lt;/p&gt;

&lt;h2&gt;
  
  
  📋 Further Reading
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cantara.js.org/docs/quick_start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cantara.js.org/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cantara.js.org/docs/docs_intro" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/CantaraJS/cantara" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Community
&lt;/h2&gt;

&lt;p&gt;If you have questions, ideas or just want to have a chat, join Cantara's Spectrum Community! I'd be happy to meet you there 👋&lt;br&gt;
&lt;a href="https://spectrum.chat/cantara" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwithspectrum.github.io%2Fbadge%2Fbadge.svg" alt="Join the community on Spectrum"&gt;&lt;/a&gt;&lt;br&gt;
Find me on Twitter: &lt;a href="https://twitter.com/scriptifyjs" rel="noopener noreferrer"&gt;@scriptifyjs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>typescript</category>
      <category>node</category>
      <category>react</category>
    </item>
    <item>
      <title>Micropost: Encrypted messages to my future self</title>
      <dc:creator>Maximilian Torggler</dc:creator>
      <pubDate>Tue, 28 May 2019 20:09:40 +0000</pubDate>
      <link>https://dev.to/scriptify/micropost-encrypted-messages-to-my-future-self-440d</link>
      <guid>https://dev.to/scriptify/micropost-encrypted-messages-to-my-future-self-440d</guid>
      <description>&lt;p&gt;Two years ago, when I was still in school, I wrote a letter to my future self (it was a school project). It contained a few encrypted messages, so that my present me could do a fun exercise now.&lt;/p&gt;

&lt;p&gt;The message was encrypted using &lt;a href="https://en.wikipedia.org/wiki/Caesar_cipher"&gt;Caesar Cipher&lt;/a&gt;, which just increases every letter by a specified number, producing unreadable text (I mean, you could also decrypt this in your head by just looking at the the text for some time, but this way it's more fun).&lt;/p&gt;

&lt;p&gt;Turns out out it was a really fun 10 min coding challenge. I should do more of them as I often tend to forget &lt;em&gt;how much fun&lt;/em&gt; programming actually is and always was.&lt;/p&gt;

&lt;p&gt;Maybe this was the most important message to my future self: &lt;strong&gt;Never stop enjoy coding.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the code needed to decrypt a Caesar encrypted message using brute force.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>javascript</category>
    </item>
    <item>
      <title>Crana - React &amp; NodeJS apps in under a second</title>
      <dc:creator>Maximilian Torggler</dc:creator>
      <pubDate>Tue, 23 Oct 2018 19:11:24 +0000</pubDate>
      <link>https://dev.to/scriptify/crana---react--nodejs-apps-in-under-a-second-3d70</link>
      <guid>https://dev.to/scriptify/crana---react--nodejs-apps-in-under-a-second-3d70</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fm46kkqxivtkg8ynre7cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fm46kkqxivtkg8ynre7cd.png" width="691" height="682"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've used the opportunity of Hacktoberfest and tried to publish a project I was lately working on: &lt;a href="https://github.com/scriptify/crana" rel="noopener noreferrer"&gt;Crana&lt;/a&gt;(&lt;strong&gt;CR&lt;/strong&gt;eate &lt;strong&gt;A&lt;/strong&gt; &lt;strong&gt;N&lt;/strong&gt;ode &lt;strong&gt;A&lt;/strong&gt;pp), a CLI tool which makes developing applications with a NodeJS backend and a React frontend a breeze.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; crana
crana init my-awesome-project
&lt;span class="nb"&gt;cd &lt;/span&gt;my-awesome-project
crana dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  The problem
&lt;/h1&gt;

&lt;p&gt;Most of the projects I was working on involved both a server (node.js) and a client (mostly React based). Until now I didn't find any solution which met the requirements of such projects, and copying around all of the config files for each new project over and over again is very problematic.&lt;br&gt;
I wanted to have a simple tool which encapsulates all of this overhead, enabling developers to just do what they should and want: Developing. And I though this solution may also be helpful to other developers.&lt;br&gt;
That's how &lt;strong&gt;Crana&lt;/strong&gt; was born.&lt;/p&gt;

&lt;h1&gt;
  
  
  The/A solution
&lt;/h1&gt;

&lt;p&gt;Crana tries to be a "just-start-developing" (JSD) solution, empowering developers to create apps without having to worry about complicated tooling or configurations. For more information, have a look at the git repository: &lt;a href="https://github.com/scriptify/crana" rel="noopener noreferrer"&gt;https://github.com/scriptify/crana&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Warning:&lt;/strong&gt; The project is in a very early stage and may not meet all your requirements, and bugs are more likely to happen. That's why your help is needed to make Crana the best tool of its kind!&lt;/p&gt;

&lt;p&gt;It comes with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ESLint (Same config for server and client)&lt;/li&gt;
&lt;li&gt;StyeLint&lt;/li&gt;
&lt;li&gt;Webpack

&lt;ul&gt;
&lt;li&gt;with code splitting support out of the box&lt;/li&gt;
&lt;li&gt;configured to create the best possible production build&lt;/li&gt;
&lt;li&gt;all loaders pre-configured&lt;/li&gt;
&lt;li&gt;webpack-dev-server for an excellent development experience&lt;/li&gt;
&lt;li&gt;react-hot-loader pre-installed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Babel&lt;/li&gt;

&lt;li&gt;Nodemon (enables live-reload server during development)&lt;/li&gt;

&lt;li&gt;The ability to easily share code between server and client&lt;/li&gt;

&lt;li&gt;...and a lot of other stuff all hidden in the package itself&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;As all configuration files and dependencies needed are encapsulated in &lt;strong&gt;Crana&lt;/strong&gt; itself, you will not see  a single configuration file.&lt;/p&gt;

&lt;p&gt;But as everything out there, Crana is not only unicorns and rainbows. The fact that everything is encapsulated in the package has many advantages, but also comes with a few downsides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is currently not possible to modify/extend the configuration files&lt;/li&gt;
&lt;li&gt;To reason more about certain behaviour, the config files have to be looked up directly in the code of the package&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But those two downsides are just another two problems which wait to be solved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making the configurations extendable/modifiable per project should be the next big feature of Crana (maybe implementing something like a plugin system?)&lt;/li&gt;
&lt;li&gt;The documentation of Crana should be extended in a way that every decision made should be exactly written down and explained (e.g. webpack loaders, babel config, eslint config etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And maybe you are the one who is going to solve those issues!&lt;/p&gt;

&lt;p&gt;Summarizing, I think that &lt;strong&gt;Crana&lt;/strong&gt; is a very useful tool for many (new and existing) projects out there, following slightly different concepts than other similar tools. But most importantly, this projects needs &lt;strong&gt;you&lt;/strong&gt;, be it as a user or a contributor, more than anything else to fullfil its &lt;em&gt;modest&lt;/em&gt; vision.&lt;/p&gt;

&lt;p&gt;I would love to hear your comments!&lt;/p&gt;

&lt;p&gt;(You can also reach me on Twitter: @scriptifyjs)&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>hacktoberfest</category>
      <category>javascript</category>
      <category>node</category>
    </item>
  </channel>
</rss>
