<?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: Alexander Alemayhu</title>
    <description>The latest articles on DEV Community by Alexander Alemayhu (@alexanderalemayhu).</description>
    <link>https://dev.to/alexanderalemayhu</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%2F175818%2F467c6eae-ea1d-4477-9738-d255db07640e.jpeg</url>
      <title>DEV Community: Alexander Alemayhu</title>
      <link>https://dev.to/alexanderalemayhu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexanderalemayhu"/>
    <language>en</language>
    <item>
      <title>How to Get Started Building Cool Projects When You Are Super Busy</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Mon, 23 Aug 2021 20:23:23 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/how-to-get-started-building-cool-projects-when-you-are-super-busy-3p2c</link>
      <guid>https://dev.to/alexanderalemayhu/how-to-get-started-building-cool-projects-when-you-are-super-busy-3p2c</guid>
      <description>&lt;p&gt;In this post, I want to share some things I found really useful to keep me on track for my side projects. I have been fortunate to be able to work on my open-source projects even though deadlines from work keep taking over my life. I am helping people all around the world with my project &lt;a href="https://2anki.net/"&gt;https://2anki.net&lt;/a&gt; and hopefully more to come soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop comparing yourself to other people
&lt;/h2&gt;

&lt;p&gt;You won't have as much time as they have and you really don't know their situations. So stay focused on actionable items. What can you do today? It does not matter how big or small. What matters is doing something, anything!&lt;/p&gt;

&lt;h2&gt;
  
  
  Be patient
&lt;/h2&gt;

&lt;p&gt;Since you will be moving at your own pace and doing new things. You need to be patient because you are going to take more time the first time around. Get used to waiting, you can exercise that like a muscle.&lt;/p&gt;

&lt;p&gt;I do this on weekdays by delaying my coffee breaks with glasses of water and then indulging in coffee when I get sick of waiting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google everything
&lt;/h3&gt;

&lt;p&gt;It's okay to not know 🙂 That's why you gotta search for the information. Instead of guessing, look up what somebody else has done and try to gain from their knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lastly
&lt;/h2&gt;

&lt;p&gt;Remember the three T's.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt;hings&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt;ake&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt;ime&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;My name is Alexander. I am a web developer by day. During my off-time, I am an open-source developer on a mission to build helpful tools to help people in their learning journeys.&lt;/p&gt;

&lt;p&gt;Join me live on Twitch where I do live coding&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.twitch.tv/alexanderalemayhu"&gt;AlexanderAlemayhu - Twitch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading and as always happy learning 💙&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
Photo by &lt;a href="https://unsplash.com/@tatianacolhoun?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Tatiana Colhoun&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/alice-in-wonderland?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>indiehacker</category>
      <category>sidehustle</category>
    </item>
    <item>
      <title>What's a good t-shirt vendor?</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Mon, 14 Sep 2020 09:00:01 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/what-s-a-good-t-shirt-vendor-183f</link>
      <guid>https://dev.to/alexanderalemayhu/what-s-a-good-t-shirt-vendor-183f</guid>
      <description>&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vNKpq6zQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1303324782872719361/SalSqSx6_normal.jpg" alt="Alexander Alemayhu profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Alexander Alemayhu
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @aalemayhu
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      What's a good vendor for printing t-shirts and sending them all around the world? We are going to celebrate 4K &lt;a href="https://twitter.com/github"&gt;@github&lt;/a&gt; stars for &lt;a href="https://twitter.com/imbajs"&gt;@imbajs&lt;/a&gt; by sending the top 20 contributors free swag ❤️ Please share links to vendors you know 🙏🏾
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      08:44 AM - 14 Sep 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1305427189349969921" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1305427189349969921" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1305427189349969921" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>help</category>
      <category>imba</category>
    </item>
    <item>
      <title>Run Deno apps via Systemd on Linux</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Sat, 11 Apr 2020 06:10:28 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/run-deno-apps-via-systemd-on-linux-1ok2</link>
      <guid>https://dev.to/alexanderalemayhu/run-deno-apps-via-systemd-on-linux-1ok2</guid>
      <description>&lt;p&gt;Last year around summertime I got to play around with &lt;a href="https://deno.land/"&gt;Deno&lt;/a&gt; and it was lots of fun 😀 I mostly made simple server scripts to serve up static sites. The most Deno code I wrote was rewriting my &lt;a href="https://github.com/scanf/dotfiles"&gt;dotfiles&lt;/a&gt; from &lt;a href="https://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; to Typescript.&lt;/p&gt;

&lt;p&gt;It was interesting and soon I would like to try out more things so this post is for myself and anyone else out there who wants to deploy Deno on a traditional Linux distribution like Ubuntu or some other Linux distro.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Heads up as of this writing, the current version of Deno is v0.40.0. The project is not yet considered production-ready so keep that in mind when you want to expose your app to the internet. If you are receiving traffic on the internet there might be bugs that people could exploit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Deno?
&lt;/h2&gt;

&lt;p&gt;Deno is a new Typescript / Javascript runtime developed by Ryan Dahl and others. There are several interesting things with the project but a few that stick out are; the security model is different where you have to explicitly allow things like file system access, networking, etc. Deno scripts are written in Typescript. You can read more about &lt;a href="https://deno.land"&gt;Deno&lt;/a&gt; on their website. YouTube has several talks on the subject when you search for &lt;a href="https://www.youtube.com/results?search_query=deno+js"&gt;deno js&lt;/a&gt;. Searching for just &lt;code&gt;deno&lt;/code&gt; might not work since a rapper uses that name 😜&lt;/p&gt;

&lt;p&gt;In this setup, I will just assume you are using some proxy server and will only focus on the systemd specific bits. Depending on what kind of application you are running you might want to consult the full systemd &lt;a href="https://www.freedesktop.org/wiki/Software/systemd/"&gt;documentation&lt;/a&gt;. I also recommend running the app as a dedicated user this way you can restrict it even more (please don't use root 😅). &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Deno
&lt;/h2&gt;

&lt;p&gt;Before we actually move on to installing Deno, let's get curl and unzip. &lt;code&gt;curl&lt;/code&gt; is used to get the install script and &lt;code&gt;unzip&lt;/code&gt; is used when deno is downloading dependencies (I think 🙃).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install -y curl unzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The easiest way to get Deno on your server is the official install script&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL https://deno.land/x/install/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adding the Service file
&lt;/h2&gt;

&lt;p&gt;Great, now that you have Deno in place, you need to tell systemd about the application. So first create the service file we will be using, just replace &lt;code&gt;my-cool-thing&lt;/code&gt; with your app name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo touch /etc/systemd/system/my-cool-thing.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use this template to set the values (change out the relevant fields or delete)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Unit]
Description=my-cool-thing.io - doing cool things
Documentation=https://my-cool-thing.io/docs
After=network.target

[Service]
Type=simple
User=my-cool-thing-user
WorkingDirectory=/home/my-cool-thing-user/code
ExecStart=/home/my-cool-thing-user/.deno/bin/deno run --allow-read --allow-net my-cool-thing-main.ts
Restart=on-failure

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then enable and start it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl enable my-cool-thing
sudo systemctl start my-cool-thing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bam, now you have your service all wired up and ready. &lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;If you end up with issues, check the logs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One common mistake I have seen is forgetting to pass the right permissions, but those are easy to spot by manually running the start command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deno run my-cool-thing-main.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;I’m &lt;a href="https://alemayhu.com"&gt;Alexander&lt;/a&gt; and work as a Web Developer at &lt;a href="https://scrimba.com"&gt;Scrimba&lt;/a&gt; - The mind-blowing way to learn how to code. This post is part of my personal weekly challenge of writing 256 words per week to improve my writing on technical topics.&lt;/p&gt;

&lt;p&gt;I hope you found it useful. Thank you for reading.&lt;/p&gt;

</description>
      <category>devops</category>
    </item>
    <item>
      <title>How Do You Learn New Frameworks?</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Tue, 31 Mar 2020 08:46:58 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/how-do-you-learn-new-frameworks-13ol</link>
      <guid>https://dev.to/alexanderalemayhu/how-do-you-learn-new-frameworks-13ol</guid>
      <description>&lt;p&gt;This week I started learning &lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt; to better understand how to write it idiomatically. I am doing this for research purposes 😄 The first thing I thought about doing was going through the documentation but I also wanted to have fun. So I decided to just &lt;a href="https://www.youtube.com/watch?v=nmBQMmEymjM"&gt;stream&lt;/a&gt; the process of rewriting a simple site. That was more fun 😄&lt;/p&gt;

&lt;p&gt;This made me curious. How are you learning new frameworks?&lt;/p&gt;

</description>
      <category>ask</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Instance variables in Imba v1 and Imba v2</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Fri, 27 Mar 2020 18:32:40 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/instance-variables-in-imba-v1-and-imba-v2-40i6</link>
      <guid>https://dev.to/alexanderalemayhu/instance-variables-in-imba-v1-and-imba-v2-40i6</guid>
      <description>&lt;p&gt;Here is a cool screencast shared on the &lt;a href="https://users.imba.io"&gt;Imba Discourse&lt;/a&gt; about instance variables in Imba by &lt;a href="https://github.com/JulienMLan"&gt;Julien Lancaster&lt;/a&gt;. Good and honest feedback.&lt;/p&gt;

&lt;p&gt;Imba is moving fast so somethings might not be true forever but, enjoy 😄&lt;/p&gt;

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

</description>
      <category>imba</category>
      <category>youtube</category>
    </item>
    <item>
      <title>Easily Watch Technical YouTube Videos Offline</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Sat, 21 Mar 2020 13:08:40 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/easily-watch-technical-youtube-videos-offline-4h5k</link>
      <guid>https://dev.to/alexanderalemayhu/easily-watch-technical-youtube-videos-offline-4h5k</guid>
      <description>&lt;p&gt;I like watching lots of conference talks but watching them on YouTube is not always ideal. You can use &lt;a href="https://www.youtube.com/premium" rel="noopener noreferrer"&gt;YouTube Premium&lt;/a&gt; (which I do) but it's limited to the official clients and sometimes I want to download one video, a playlist or a whole channel for research purposes 😉 This all a breeze with &lt;a href="https://ytdl-org.github.io/youtube-dl/index.html" rel="noopener noreferrer"&gt;youtube-dl&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ytdl-org" rel="noopener noreferrer"&gt;
        ytdl-org
      &lt;/a&gt; / &lt;a href="https://github.com/ytdl-org/youtube-dl" rel="noopener noreferrer"&gt;
        youtube-dl
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Command-line program to download videos from YouTube.com and other video sites
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl/actions?query=workflow%3ACI" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/ytdl-org/youtube-dl/workflows/CI/badge.svg" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;youtube-dl - download videos from youtube.com or other video platforms&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#installation" rel="noopener noreferrer"&gt;INSTALLATION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#description" rel="noopener noreferrer"&gt;DESCRIPTION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#options" rel="noopener noreferrer"&gt;OPTIONS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#configuration" rel="noopener noreferrer"&gt;CONFIGURATION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#output-template" rel="noopener noreferrer"&gt;OUTPUT TEMPLATE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#format-selection" rel="noopener noreferrer"&gt;FORMAT SELECTION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#video-selection" rel="noopener noreferrer"&gt;VIDEO SELECTION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#faq" rel="noopener noreferrer"&gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#developer-instructions" rel="noopener noreferrer"&gt;DEVELOPER INSTRUCTIONS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#embedding-youtube-dl" rel="noopener noreferrer"&gt;EMBEDDING YOUTUBE-DL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#bugs" rel="noopener noreferrer"&gt;BUGS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ytdl-org/youtube-dl#copyright" rel="noopener noreferrer"&gt;COPYRIGHT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;INSTALLATION&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;To install it right away for all UNIX users (Linux, macOS, etc.), type:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you do not have curl, you can alternatively use a recent wget:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Windows users can &lt;a href="https://yt-dl.org/latest/youtube-dl.exe" rel="nofollow noopener noreferrer"&gt;download an .exe file&lt;/a&gt; and place it in any location on their &lt;a href="https://en.wikipedia.org/wiki/PATH_%28variable%29" rel="nofollow noopener noreferrer"&gt;PATH&lt;/a&gt; except for &lt;code&gt;%SYSTEMROOT%\System32&lt;/code&gt; (e.g. &lt;strong&gt;do not&lt;/strong&gt; put in &lt;code&gt;C:\Windows\System32&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;You can also use pip:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;sudo -H pip install --upgrade youtube-dl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This command will update youtube-dl if you have already installed it. See the &lt;a href="https://pypi.python.org/pypi/youtube_dl" rel="nofollow noopener noreferrer"&gt;pypi page&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;macOS users can install youtube-dl with &lt;a href="https://brew.sh/" rel="nofollow noopener noreferrer"&gt;Homebrew&lt;/a&gt;:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;brew install youtube-dl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Or with &lt;a href="https://www.macports.org/" rel="nofollow noopener noreferrer"&gt;MacPorts&lt;/a&gt;:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;sudo port install youtube-dl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Alternatively, refer to…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ytdl-org/youtube-dl" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://ytdl-org.github.io/youtube-dl/index.html" rel="noopener noreferrer"&gt;youtube-dl&lt;/a&gt; is a nice tool for downloading videos from websites. Don't let the name fool you, it does work on lots of different sites but today we will only look at some of the YouTube bits. Below are examples of the most frequent variations of the command I use. I will be using the &lt;a href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ" rel="noopener noreferrer"&gt;freeCodeCamp.org YouTube channel&lt;/a&gt; for all examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Downloading a Playlist
&lt;/h2&gt;

&lt;p&gt;After opening up a playlist on the website, paste in the whole url that contains &lt;code&gt;list=&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;youtube-dl https://www.youtube.com/watch\?v\=jWdEM6XLKqI\&amp;amp;list\=PLWKjhJtqVAbkXQS12WiLsH1oaNZBSoWuV
[youtube:playlist] Downloading playlist PLWKjhJtqVAbkXQS12WiLsH1oaNZBSoWuV - add --no-playlist to just download video jWdEM6XLKqI
[youtube:playlist] PLWKjhJtqVAbkXQS12WiLsH1oaNZBSoWuV: Downloading webpage
[download] Downloading playlist: Serverless
[youtube:playlist] playlist Serverless: Downloading 7 videos
[download] Downloading video 1 of 7
[youtube] jWdEM6XLKqI: Downloading webpage
[download] Destination: Intro to Cloud Computing and AWS-jWdEM6XLKqI.f136.mp4
[download]  11.4% of 17.55MiB at  5.37MiB/s ETA 00:02^C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Downloading a Single Video
&lt;/h2&gt;

&lt;p&gt;When you are watching a video on the YouTube website there is a parameter &lt;code&gt;v=...h&lt;/code&gt; that you can use as the id with &lt;code&gt;YouTube-dl&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;youtube-dl RBSGKlAvoiM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Downloading a Whole Channel
&lt;/h2&gt;

&lt;p&gt;Now to the most important one option. You have to enter a plane or will be offline for a while (9-26 hours). Before departing is a great opportunity to download someone's channel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;youtube-dl https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ
[youtube:channel] UC8butISFwT-Wl7EV0hUK0BQ: Downloading channel page
[youtube:playlist] UU8butISFwT-Wl7EV0hUK0BQ: Downloading webpage
[download] Downloading playlist: Uploads from freeCodeCamp.org
[youtube:playlist] UU8butISFwT-Wl7EV0hUK0BQ: Downloading page #1
[youtube:playlist] UU8butISFwT-Wl7EV0hUK0BQ: Downloading page #2
[youtube:playlist] UU8butISFwT-Wl7EV0hUK0BQ: Downloading page #3
[youtube:playlist] UU8butISFwT-Wl7EV0hUK0BQ: Downloading page #4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command might take a long time depending on the channel size. First, it gets the pages then, figures out how many videos there are before moving on to download.&lt;/p&gt;

&lt;h2&gt;
  
  
  Audio File From Video
&lt;/h2&gt;

&lt;p&gt;Sometimes a technical talk is just more enjoyable as a podcast or you want to review it without all of the visual noise. For those, I download them as mp3 files and listen while taking a walk&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;youtube-dl --extract-audio --audio-format mp3 RBSGKlAvoiM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Aborting &lt;code&gt;youtube-dl&lt;/code&gt; is harmless. It can easily resume downloading after being stopped. To avoid any issues with the terminal you can escape your links or easier wrap them in double quotation marks &lt;code&gt;""&lt;/code&gt; when they contain special characters.&lt;/p&gt;

&lt;p&gt;To be honest, I have not bothered reading the manual so there are probably lots of cool things I am not aware of. If you want to do something that is not mentioned here like getting the video in a specific resolution, then check out the various options from &lt;code&gt;youtube-dl --help&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I hope you learned something new :) I personally use this great tool to learn better at my own time but please don't abuse it for other purposes and use at your own risk 👌🏾&lt;/p&gt;




&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>youtube</category>
      <category>video</category>
      <category>download</category>
    </item>
    <item>
      <title>Easy way to start a web server</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Wed, 18 Mar 2020 15:25:55 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/easy-way-to-start-a-web-server-32c0</link>
      <guid>https://dev.to/alexanderalemayhu/easy-way-to-start-a-web-server-32c0</guid>
      <description>&lt;p&gt;You can always use a bundler in development mode but sometimes you just want a simple HTTP server with basic security and isolated 😉 My favorite tool for that is &lt;code&gt;python&lt;/code&gt;. On macOS and Ubuntu, it's installed by default so no setup is usually required.&lt;/p&gt;

&lt;p&gt;This works well because Python ships with an &lt;a href="https://docs.python.org/3.8/library/http.server.html#//apple_ref/Module/http.server"&gt;HTTP module&lt;/a&gt; in the standard library so it's straightforward to start a server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; http.server 2020
Serving HTTP on 0.0.0.0 port 2020 &lt;span class="o"&gt;(&lt;/span&gt;http://0.0.0.0:2020/&lt;span class="o"&gt;)&lt;/span&gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or if you are still using python2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In most cases, the above is enough but in rare cases, you want to bind explicitly to an address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python -m http.server 2020 --bind 192.168.0.6 

Serving HTTP on 192.168.0.6 port 2020 (http://192.168.0.6:2020/) ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Thanks for reading. &lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>My Currently Favorite Terminal Hyper</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Sat, 14 Mar 2020 11:40:30 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/my-currently-favorite-terminal-hyper-1m8h</link>
      <guid>https://dev.to/alexanderalemayhu/my-currently-favorite-terminal-hyper-1m8h</guid>
      <description>&lt;p&gt;Trying out the video upload on DEV. In this video we are looking at:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A terminal built on web technologies &lt;a href="https://hyper.is"&gt;https://hyper.is&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>terminal</category>
      <category>video</category>
    </item>
    <item>
      <title>Some Amazing Podcasts</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Tue, 10 Mar 2020 22:22:29 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/some-amazing-podcasts-4ef4</link>
      <guid>https://dev.to/alexanderalemayhu/some-amazing-podcasts-4ef4</guid>
      <description>&lt;p&gt;I have been listening to podcasts for years now. I think a friend introduced it to me in 2013 on iTunes. In the beginning, what got me hooked was &lt;a href="https://www.wnycstudios.org/podcasts/snapjudgment"&gt;Snap Judgment&lt;/a&gt; and &lt;a href="https://www.latinousa.org/"&gt;Latino USA&lt;/a&gt;. Another great show was the first season of &lt;a href="https://serialpodcast.org/"&gt;Serial&lt;/a&gt;. They made me a daily podcast listener. I probably listen to shows for hours every day 😄&lt;/p&gt;

&lt;p&gt;Through the years I have discovered several amazing technical podcasts. Hopefully, you will find a new one below. &lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby Rogues
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nx8mpy8x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/98/bc/99/98bc99d7-b885-85ad-c150-3b0ad3e0b53b/mza_8013017041675752157.jpg/600x600bb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nx8mpy8x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/98/bc/99/98bc99d7-b885-85ad-c150-3b0ad3e0b53b/mza_8013017041675752157.jpg/600x600bb.jpg" alt="Ruby Rogues Cover"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devchat.tv/ruby-rogues/"&gt;Devchat.tv&lt;/a&gt; has lots of great stuff but &lt;a href="https://devchat.tv/ruby-rogues/"&gt;Ruby Rogues&lt;/a&gt; is one of those gems (pun intended) that was really filled with lots of knowledge bombs and humor. I was not using Ruby professionally but stilled listened to the show. You can learn lots of things about Ruby but there is plenty that is related to general programming, being a human and enjoying life. Check out episode &lt;a href="https://devchat.tv/ruby-rogues/131-rr-how-to-learn/"&gt;#131 on How to learn&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Developer's Life
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PoKUnjQh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.threatstack.com/wp-content/uploads/2019/06/ThisDevelopersLife-min-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PoKUnjQh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.threatstack.com/wp-content/uploads/2019/06/ThisDevelopersLife-min-1.png" alt="This Dev life"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, the show does not have that many episodes but the ones I have listened to are fantastic. You even have some interesting music in there. I have lost count of how many times I replayed some of the episodes 😄 Checkout out the episode on &lt;a href="http://thisdeveloperslife.com/post/1-0-7-audacity"&gt;Audacity&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  CRE: Technik, Kultur, Gesellschaft
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zaLYuA46--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://spotlight.radiopublic.com/images/thumbnail%3Furl%3Dhttps%253A%252F%252Fcre.fm%252Ffiles%252F2018%252F12%252FCRE-logo-cover-2400px-web.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zaLYuA46--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://spotlight.radiopublic.com/images/thumbnail%3Furl%3Dhttps%253A%252F%252Fcre.fm%252Ffiles%252F2018%252F12%252FCRE-logo-cover-2400px-web.jpg" alt="CRE cover"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This show is in German but the quality and content are top-notch. It's worth learning German just so you can listen to it 😉 Also the host Tim Pritlove is excellent at asking questions and giving his guests the time to speak. Check out  episode &lt;a href="https://cre.fm/cre209-das-linux-system"&gt;#209 Das Linux System&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lightning-fast code searching with Hound
</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Mon, 09 Mar 2020 15:12:04 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/lightning-fast-code-searching-with-hound-3idc</link>
      <guid>https://dev.to/alexanderalemayhu/lightning-fast-code-searching-with-hound-3idc</guid>
      <description>&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/hound-search"&gt;
        hound-search
      &lt;/a&gt; / &lt;a href="https://github.com/hound-search/hound"&gt;
        hound
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Lightning fast code searching made easy
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Hound&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/hound-search/hound" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/793a9215ed389e3e9efb2aa4f552ff4d0c586fb9b2748a8ca333058b7a74b438/68747470733a2f2f7472617669732d63692e6f72672f686f756e642d7365617263682f686f756e642e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/hound-search/hound/actions"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g6jWGBRe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/hound-search/hound/workflows/.github/workflows/go.yaml/badge.svg" alt=".github/workflows/go.yaml"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2&gt;
⚠️ Hound's default branch name has changed! ⚠️
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;We renamed our default branch from &lt;code&gt;master&lt;/code&gt; to &lt;code&gt;main&lt;/code&gt; on February 24, 2021&lt;/strong&gt;. We used &lt;a href="https://github.com/github/renaming/#renaming-existing-branches"&gt;Github's branch renaming feature&lt;/a&gt;, which means that any open pull requests should be automatically re-targeted, and web requests pointing to code on the &lt;code&gt;master&lt;/code&gt; branch should redirect as expected. This change should mostly be invisible, but you will need to update any code that explicitly relies on the existence of Hound's &lt;code&gt;master&lt;/code&gt; branch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox
&lt;a href="http://swtch.com/~rsc/regexp/regexp4.html" rel="nofollow"&gt;Regular Expression Matching with a Trigram Index&lt;/a&gt;. Hound itself is a static
&lt;a href="http://facebook.github.io/react/" rel="nofollow"&gt;React&lt;/a&gt; frontend that talks to a &lt;a href="http://golang.org/" rel="nofollow"&gt;Go&lt;/a&gt; backend. The backend keeps an up-to-date index for each repository and answers searches through a minimal API. Here it is in action:&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/hound-search/houndimgs/screen_capture.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XdeVjxG---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/hound-search/houndimgs/screen_capture.gif" alt="Hound Screen Capture"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Quick Start Guide&lt;/h2&gt;
&lt;h3&gt;
Using Go Tools&lt;/h3&gt;
&lt;ol start="0"&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/install" rel="nofollow"&gt;Install Go&lt;/a&gt;…&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hound-search/hound"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>github</category>
      <category>search</category>
    </item>
    <item>
      <title>Making the Imba Docs Suck Less</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Wed, 19 Feb 2020 08:48:07 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/making-the-imba-docs-suck-less-3pp3</link>
      <guid>https://dev.to/alexanderalemayhu/making-the-imba-docs-suck-less-3pp3</guid>
      <description>&lt;p&gt;It's a known problem in the software development world that documentation tends to get stale. In some projects lots of things are very poorly documented. This is also true for the Imba project. There is a lot of amazing hidden features that are not obvious and invisible to you unless someone tells you about it. Few people actually sit down, read the internal implementation and learn how to use it. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Current State
&lt;/h2&gt;

&lt;p&gt;As of this writing, we have an outdated &lt;a href="http://imba.io"&gt;imba.io&lt;/a&gt; website. The examples there apply to the stable v1.5.x branch. Since development is mostly happening on the unreleased 2.0.x, imba.io is not going to see any changes soon. &lt;/p&gt;

&lt;p&gt;The navigation link to the &lt;a href="https://www.imba.io/docs"&gt;docs&lt;/a&gt; is actually more of an API reference. Finding stuff is hard since there is no search. You have to resort to  using a search engine. To avoid dwelling on the negative bits, let's look at some of the positive things. &lt;/p&gt;

&lt;p&gt;Since &lt;a href="http://imba.io"&gt;imba.io&lt;/a&gt; is written in Imba we do have support for syntax highlighting and running snippets. Also some cool things are down with Markdown in there and the project itself is actually pretty neat with the way code is compiled and run on the client-side. Nonetheless, this was all a hassle to maintain and at times made it unnecessarily hard for new contributors to get the site running locally. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to Make it Suck Less
&lt;/h2&gt;

&lt;p&gt;The way we are going to tackle this issue in the Imba project is in a couple of ways.&lt;/p&gt;

&lt;h3&gt;
  
  
  i) Content is King 👑
&lt;/h3&gt;

&lt;p&gt;First, we have decided to focus on the content and not how it's being rendered on screen. This means that instead of spending lots of time in building a own tool for writing documentation we will be using GitBook.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gitbook.com/"&gt;GitBook&lt;/a&gt; is a web app for editing and synchronizing your docs. It works with existing GitHub repositories. We have connected it to a subdomain &lt;a href="https://docs.imba.io/"&gt;docs.imba.io&lt;/a&gt;. This again lets us focus on the user. We can spend time on the actual content you will be reading instead of the invisible bits.&lt;/p&gt;

&lt;h3&gt;
  
  
  ii) Outline the Documentation
&lt;/h3&gt;

&lt;p&gt;Before we start writing lots of pages. We will have sketched out groupings and main titles. This means that we will be spending much more time on thinking about better ways to present Imba to the reader.&lt;/p&gt;

&lt;h3&gt;
  
  
  ii) Looking at the Competition
&lt;/h3&gt;

&lt;p&gt;We will definitely be looking closer at projects like &lt;a href="https://vuejs.org/"&gt;Vue.js&lt;/a&gt;, &lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt;, &lt;a href="https://preactjs.com/"&gt;Preact.js&lt;/a&gt; and many more for ideas on how to better present concepts / syntax.&lt;/p&gt;




&lt;p&gt;Thank you for reading! I'm Alexander, Web Developer at &lt;a href="https://scrimba.com"&gt;Scrimba&lt;/a&gt; - The mind blowing way to learn how to code.&lt;/p&gt;

</description>
      <category>imba</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Getting started with Imba 2</title>
      <dc:creator>Alexander Alemayhu</dc:creator>
      <pubDate>Mon, 17 Feb 2020 07:34:39 +0000</pubDate>
      <link>https://dev.to/alexanderalemayhu/getting-started-with-imba-2-16n</link>
      <guid>https://dev.to/alexanderalemayhu/getting-started-with-imba-2-16n</guid>
      <description>&lt;p&gt;Imba v2 is still under heavy development. As of this writing, the latest alpha release is &lt;code&gt;2.0.0-alpha.28&lt;/code&gt;. In this post, we won't go into what has changed since v1 or the different alpha versions but instead, focus on the fastest way to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Imba?
&lt;/h2&gt;

&lt;p&gt;Imba is a programming language for building web apps. It's a friendly full-stack language✌️ You can use it on the server and client. While the language does have performance benefits due to the memoization techniques in use, another great thing with Imba is how easy it makes to just get stuff done. You can write markup, styles and interactive bits all in your &lt;code&gt;.imba&lt;/code&gt; files. It compiles down to vanilla JavaScript, works well with the DOM and integrates seamlessly with existing JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var marked = require 'marked'
var mdr = marked.Renderer.new
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The language is indentation based, which looks really nice when you don't need to close the HTML tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;### css scoped
p {
    color: red;
}
###

import './app-button'

var counter = 0

tag app-root
    def incr
        counter++

    def render
        &amp;lt;self&amp;gt;
            &amp;lt;p&amp;gt; "Hello there!"
            &amp;lt;p&amp;gt; "Count is {counter}"
            &amp;lt;app-button :click.incr&amp;gt; "increment"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above will render the following&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WB-mB63B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ae5D9H7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WB-mB63B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ae5D9H7.png" alt="Screenshot of app"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Hello Imba v2 Alpha 👋
&lt;/h2&gt;

&lt;p&gt;The easiest way to get up and running with an Imba v2 project is to use the &lt;a href="https://github.com/imba/imba2-hello-world"&gt;imba2-hello-world&lt;/a&gt; template. GitHub lets you easily create a new repository from it by clicking: &lt;a href="https://github.com/imba/imba2-hello-world/generate"&gt;Use this template&lt;/a&gt; or clone &lt;code&gt;git clone https://github.com/imba/imba2-hello-world&lt;/code&gt;. The template link will only work if you are logged in.&lt;/p&gt;

&lt;p&gt;When you have the code locally, you can run the usual commands:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn # npm install
yarn start # npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;This will use rollup to build and run the app. Which you can then see on &lt;a href="http://localhost:10001/"&gt;http://localhost:10001/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Imba v2 manually
&lt;/h2&gt;

&lt;p&gt;To get the bleeding edge version you can install it globally by running&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn global add imba@pre # npm install -g imba@pre
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;To update an existing project run&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add imba@pre # npm install imba@pre
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Similar to v1 this gives you the &lt;code&gt;imba&lt;/code&gt; and &lt;code&gt;imbac&lt;/code&gt; binaries. The rollup command is currently not included in this and would have to be installed separately:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add imba-rollup # npm install imba-rollup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Note that much is not documented on that part so you will just need to experiment or feel free to ask questions on &lt;a href="https://users.imba.io"&gt;users.imba.io&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Interesting features
&lt;/h2&gt;

&lt;p&gt;The coolest feature of Imba v2 IMHO is that tags now compile down to native web components. This makes it so much easier to start introducing Imba to legacy code bases. With this approach, you can use Imba in an existing app to either replace specific pages or even small components. It's really nice 🥰 &lt;/p&gt;

&lt;p&gt;You no longer need to use a colon (&lt;code&gt;:&lt;/code&gt;) to access attributes but can just use dot (&lt;code&gt;.&lt;/code&gt;) like other C like languages. This makes things much more straight forward for non-Ruby programmers who are not used to the implicit self.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Imba v1
object:x
# Imba v2
object.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an exhaustive list of all the changes check the actual pull request &lt;a href="https://github.com/imba/imba/pull/258"&gt;Imba 2 - a new age&lt;/a&gt;. Other noteworthy changes are the new syntax for slots and the context API. Check out the &lt;a href="https://scrimba.com/playlist/pdq9quP"&gt;Imba Changelog&lt;/a&gt; for more details on those: &lt;a href="https://scrimba.com/playlist/pdq9quP"&gt;https://scrimba.com/playlist/pdq9quP&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Imba v2 is not ready yet for prime time but you can start using it today for simple SPA. It's getting closer to a release but fundamental syntax changes are likely still going to happen up until the actual release. If you want to play around with a bleeding-edge framework today, clone the repository, start coding and contribute!&lt;/p&gt;

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

</description>
      <category>imba</category>
      <category>javascript</category>
      <category>ruby</category>
    </item>
  </channel>
</rss>
