<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Simon Späti - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Simon Späti - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 22:20:00 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/author/sspaeti/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Why Vim Is More than Just an Editor – Vim Language, Motions, and Modes Explained ]]>
                </title>
                <description>
                    <![CDATA[ Throughout my time as a developer, I've used VS Code, Sublime, Notepad++, TextMate, and others. But shortcuts like cmd(+shift)+end and jumping with option+arrow-keys from word to word needed to be faster at some point. I was hitting my limits. Everyt... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/vim-language-and-motions-explained/</link>
                <guid isPermaLink="false">66d4614b3a8352b6c5a2ab17</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ vim ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Simon Späti ]]>
                </dc:creator>
                <pubDate>Tue, 14 Feb 2023 19:52:55 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/02/using-neo-vim-feature-freecode-3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Throughout my time as a developer, I've used VS Code, Sublime, Notepad++, TextMate, and others. But shortcuts like <code>cmd(+shift)+end</code> and jumping with <code>option+arrow-keys</code> from word to word needed to be faster at some point.</p>
<p>I was hitting my limits. Everything I was doing I did decently fast, but I didn’t get any faster.</p>
<p>I've since learned that Vim is the only editor that you get faster using with time.</p>
<p><a target="_blank" href="https://www.vim.org/">Vim</a> is based solely on shortcuts. When I discovered that and played around a bit, I felt numb and a little stupid, having not learned the shortcuts (called Vim language) much earlier in my career.</p>
<p>I realized there was a keystroke to get to any specific position I wanted to jump. It was like a game, seeing if I could use fewer shortcuts to accomplish a particular edit. It’s where many Vim users get a lot of pleasure from coding and writing. It felt liberating, moving my cursor with the precision of a surgeon.</p>
<p>Although speed is a smaller benefit, it got me started when I saw <a target="_blank" href="https://youtu.be/1UXHsCT18wE">others</a> navigating in Vim. After climbing the steep learning curve, it’s still one of the most powerful skills I've ever learned in my career, working for a living on a computer.</p>
<p>Let’s debunk the myth of Vim and learn how it’s possible to remember all the shortcuts using the specific Vim language. We'll see how to move with vim motions, and I'll share what I’ve learned so far, and why you might give Vim a try as well.</p>
<h2 id="heading-learning-the-vim-language">Learning the Vim Language</h2>
<p>Lots of things have been said about Vim – how fast it is, how only Linux nerds use it, and that it’s impossible to <a target="_blank" href="https://stackoverflow.com/q/11828270">exit Vim</a>.</p>
<p>For myself, I fell in love with the “Vim language”. You see, I’m bad at remembering anything and thought that Vim was not for me. But this wasn't the case for one specific reason: Vim <em>motions</em> and its language.</p>
<p>I learned that there’s a grammar behind the editor. With it, you express what you want to do first, how many times, and then what you want it to apply.</p>
<p>Let’s get deeper into Vim and the language behind it.</p>
<h3 id="heading-how-the-vim-language-and-motions-work">How the Vim Language and Motions Work</h3>
<p>Vim has a terrific language or grammar behind its shortcuts. Instead of remembering a thousand shortcuts, you can learn a couple and combine them.</p>
<p>These are often called the Vim language or Vim motions for moving around. This has nothing to do with the editor yet – these are universal and available in other editors as well.</p>
<p>For example, there's <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=JaredParMSFT.VsVim">VSVim</a> for VSCode, <a target="_blank" href="https://plugins.jetbrains.com/plugin/164-ideavim">IdeaVim</a> for the JetBrains products, <a target="_blank" href="https://www.sublimetext.com/docs/vintage.html">Vintage Mode</a> for Sublime, and so on. But there are also Browser extensions like <a target="_blank" href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en">Vimium</a> or <a target="_blank" href="https://chrome.google.com/webstore/detail/firenvim/egpjdkipkomnmjhjmdamaniclmdlobbo?hl=en">Firenvim</a>, and Gmail even adapted some of Vim's <a target="_blank" href="https://support.google.com/mail/answer/6594?hl=en&amp;co=GENIE.Platform%3DDesktop#zippy=%2Cjumping%2Cnavigation">shortcuts</a> for navigation (<code>j</code>, <code>k</code> for moving, <code>g</code> for jumping).</p>
<p>Everyone who types on a computer eight hours a day should learn the Vim language. Yes, it’s hard in the beginning, but that’s the case with everything new and different. But getting better every day and having more fun coding or writing should be motivation enough. You're not too busy to learn - you'll learn as you go.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/weel-too-busy.png" alt="Are you too busy to improve | Image from Steen Schledermann’s blog: https://steenschledermann.wordpress.com/ " width="600" height="400" loading="lazy"></p>
<h4 id="heading-vim-grammar">Vim Grammar</h4>
<p>Just as spoken language <strong>grammar</strong> has verbs, subjects, and objects, so does the Vim language. The grammar has different <strong>verbs</strong> to begin with. Copying (or yanking) in Vim with <code>y</code>, deleting with <code>d</code>, pasting with <code>p</code>, changing with <code>c</code>, and so on.</p>
<p>For example, the easiest shortcut is copying a line with <code>yy</code>. In this case, yank is the verb and the second <code>y</code> is a synonym for <code>y_</code>. The <code>y</code> is doubled up which makes it easier to type since it's a joint operation.</p>
<p>Next, we can add movements. Each verb takes a <strong>subject</strong> for their movements. There are lots of movements (more in the next section) – the easiest is with numbers.</p>
<p>For example, to copy three lines, you add a 3 in front, such as <code>3yy</code>. You can do that with all verbs, like deleting three lines is <code>3dd</code>. Another would be <code>{</code> and <code>}</code> to move to the beginning or end of the paragraph, respectively.</p>
<p>In addition to verbs and subjects, the Vim language also has <strong>objects</strong>. For example, we can save text into different clipboards (called a register in Vim) with <code>"ay</code>. Here, we copy it into register a, which would be the object. We can paste it again by doing the same but using the verb paste instead of yank <code>"ap</code>.</p>
<p>There are even <strong>adjectives</strong> and <strong>adverbs</strong> with prefixes. Usually, you use a verb and an object. But instead of going down three lines with <code>3J</code>, which joins the following three lines, you could add <code>d5}</code>, which means “delete from the current line through the end of the fifth paragraph down from here.”</p>
<p>For me, the most magical thing about Vim is how you navigate and edit text – and it still has nothing to do with the editor.</p>
<p>Sure Vim was the one that introduced and perfected these actions, but again – you can get them anywhere else. This goes deep into the Vim language, yet we still need to touch on the editor. This is important to know.</p>
<p>I hope you've started seeing the power of such patterns, though. With a couple of verbs and objects, you can already know hundreds of combinations without memorizing each one individually.</p>
<p>You can watch a video on <a target="_blank" href="https://youtu.be/wlR5gYd6um0">Mastering the Vim Language</a> or read a full exposition of the Vim language on this terrific <a target="_blank" href="https://stackoverflow.com/a/1220118">StackOverflow</a> comment.</p>
<h3 id="heading-vim-motions">Vim Motions</h3>
<p>Vim motions are how you navigate, whether you navigate to the end of the word or back to the start of the document – these are all motions.</p>
<p>These are the first things you start learning (and hating) when learning Vim. They're extra hard to figure out initially, but they're something you'll want to use everywhere when you get used to them.</p>
<p>Instead of using arrow keys, Vim uses <code>jk</code> to move down and up and <code>hl</code> to move left and right. The main idea is to use the keys your right hand naturally rests on. You do not need to move your hands or even fingers for navigation.</p>
<p>Again, this seems like a small thing, but once you've learned it, you know why everyone is telling you about it.</p>
<p>Some common motions are:</p>
<pre><code class="lang-python">h,j,k,l - left, down, up, right
w,W - to start of next word <span class="hljs-keyword">or</span> WORD
b,B - to start of previous word <span class="hljs-keyword">or</span> WORD
e,E - to end of word <span class="hljs-keyword">or</span> WORD
$   - to end of line
^   - to start of line
</code></pre>
<p>You can find the most important motions to start with in this cheatsheet:</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-language-cheetsheet.png" alt="Vim Command Cheat Sheet from Cloud Guru" width="600" height="400" loading="lazy"></p>
<p>This Vim Command Cheat Sheet is from <a target="_blank" href="https://www.pluralsight.com/resources/blog/cloud/a-vim-cheat-sheet-reference-guide">Cloud Guru</a>.</p>
<h2 id="heading-how-to-use-vim-modes-normal-insert-visual-and-command">How to Use Vim Modes (normal, insert, visual, and command)</h2>
<p>Modes are another thing that might get you confused at the beginning.</p>
<p>When you launch Vim, you are not typing what you click on your keyboard as you are not in the “insert” mode that you're likely familiar with from other editors. Instead, the normal mode you are in lets you do the commands explained in the above Vim language and motions.</p>
<p>Vim is the only editor that <strong>optimizes editing text</strong> instead of writing from a blank page.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-modes.png" alt="Three modes illustrated (escape mode being the command mode) | Image from Geekforgeeks https://www.geeksforgeeks.org/vi-editor-unix/" width="600" height="400" loading="lazy"></p>
<p>That’s another reason Vim makes you so efficient: you have different modes for each phase of your current work or task.</p>
<ul>
<li><p>Normal mode is for reading code and navigating quickly.</p>
</li>
<li><p>Insert mode is for when you want to add some code or text.</p>
</li>
<li><p>Visual mode is unique, the same as highlighting text with the mouse, but with the above Vim motions.</p>
</li>
<li><p>And command mode is the powerhouse, where you can type Linux commands such as formatting a JSON file with <code>:%!jq</code> (whereas <a target="_blank" href="https://stedolan.github.io/jq/">jq</a> is a command line tool installed on your machine) and execute them within Vim. This is also where you can use Vim commands such as <code>:sort</code> for sorting your files.</p>
</li>
</ul>
<p>I could go on here, but I want to dive into the editor itself now and explore why I learned it initially and how to get started.</p>
<h2 id="heading-introduction-to-vim-the-editor-neovim-lunarvim-and-helix">Introduction to Vim the Editor (Neovim, Lunarvim, and Helix)</h2>
<p>So what is Vim the editor, then? It started with the simple vi editor, a basic editor that implements the Vim language and can edit text. It's a little like Notepad++, which you might use on Windows, but without a mouse and context menu.</p>
<p>Vim is simply an improved version of Vi with more features.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vi-vs-vim.png" alt="Differences between Vi and Vim | Image by Linuxiac: https://linuxiac.com/differences-between-vi-and-vim-text-editors-explained/" width="600" height="400" loading="lazy"></p>
<p>Today there is even a newer version of Vim called <a target="_blank" href="https://neovim.io/">Neovim</a>. This version is super popular, and I’ve started using Neovim as well. Compared to Vim, Neovim uses <a target="_blank" href="https://www.lua.org/">Lua</a>, an actual programming language, to configure and extend the editor. This makes writing plugins and configuring Neovim easier compared to Vim's native <a target="_blank" href="https://learnvimscriptthehardway.stevelosh.com/">Vimscript</a>.</p>
<p>Neovim is a great place to start learning Vim today, as it has so many awesome <a target="_blank" href="https://github.com/rockerBOO/awesome-neovim">plugins</a>. Neovim also won the most <a target="_blank" href="https://survey.stackoverflow.co/2022/#integrated-development-environment">loved IDE</a> on the StackOverflow survey a couple of times, last in 2022.</p>
<p>There is also an editor called <a target="_blank" href="https://github.com/helix-editor/helix">Helix</a> built in Rust, but it has minor deviations from the Vim language, which make it a less optimal place to start.</p>
<p>If you want to get started without needing to know anything about Neovim and spending hours on configurations, you can begin with <a target="_blank" href="https://www.lunarvim.org/">LunarVim</a>. It's a distro with all the features you know from VS Code already included.</p>
<p>Suppose you are comfortable with the terminal and realize you want to change the editor to your liking. In that case, you can kickstart your journey with a <a target="_blank" href="https://github.com/nvim-lua/kickstart.nvim">simple single-file configuration</a> with many explanations that will work out of the box. You can also learn each config by opening the single config file.</p>
<h2 id="heading-why-i-learned-vim">Why I Learned Vim</h2>
<p>Using the standard input method we use in our editors daily, we will eventually stagnate at a certain level. Sure, you can use <code>cmd+arrow-keys</code> (on a Mac) to jump to the beginning of a line or <code>option+arrow-keys</code> to jump between words instead of characters.</p>
<p>But what happens once you've mastered that? What if you need to change something in the middle of a sentence? There is no other way to jump several times with this option, or you move your hands away each time to reach the mouse to click on the exact spot.</p>
<p>One day, I saw a coworker work in Vim, and everything clicked. The Vim language and motions were the things I needed all along. So I installed the VS Code plugin, watched a couple of YouTube videos, and started my journey to learn the basic movements.</p>
<p>I also love learning new things and, even better, I'm always looking for ways to make me more productive 😉.</p>
<p>But as many of you might have experienced, the hardest part of learning Vim is getting started. The initial learning curve is very steep. Below is an illustration that shows this :).</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-learning-curve.png" alt="The learning curve for text editors. Although funny, very accurate | Image from Why I Love Using Vim To Write Code: https://youtu.be/o4X8GU7CCSU" width="600" height="400" loading="lazy"></p>
<p>It took me also two or three times trying to start learning Vim until I fully grasped it. I switched back and forth. As well as having to get work done, it is sometimes hard to switch entirely from one day to another. But I just loved learning all the movements, and I knew it would make me faster after a short time.</p>
<h2 id="heading-why-i-love-vim">Why I Love Vim</h2>
<p>I have been using Vim for only eight months, and coding with Python for around six years. I've been using other code editors since my career started in 2003. Each editor I used had its strengths and its appeal. But I never experienced such efficiency gains as I have with Vim.</p>
<p>In the end, use the editor that works best for you. Personally, I want my editor to help me work as fast as possible, especially since I use it daily. Investing a bunch of time learning Vim is necessary, but it pays off over time. That’s the whole point with Vim and especially the Vim language.</p>
<p>An underrated skill in general among programmers is using the <strong>terminal</strong>. By learning your editor, especially with Vim, you will naturally learn more about the terminal and improve your Linux skills (reverse search, lazy git, Tmux, and many more).</p>
<p>Before Vim, I only used the terminal if I had to. I googled everything, and today, I use the terminal with its helpful manuals whenever I can.</p>
<p>Sometimes I’m surprised by myself as well, and it’s super nerdy – but it’s so effective. I’ve become a much better developer since starting to get comfortable with Vim.</p>
<p>Tweaking and optimizing Vim can take hours and days, and it's unavoidable in the beginning. But after a while, your <a target="_blank" href="https://github.com/sspaeti/dotfiles">dotfiles</a> mature, and you start changing things less. You will also get much faster at trying out a new plugin or adding a remap.</p>
<p>Also, Vim is <strong>fun</strong>! Working in Neovim is one of the highlights of my everyday work. Improving your text editor and making it your own – maybe in ways no one else has optimized – is awesome.</p>
<p>For example, I write a lot, so I optimized for writing markdown and programming in Python. That’s what adds a lot to my happiness as a coder.</p>
<p>Because of all this, <a target="_blank" href="https://github.com/tjdevries">TJ DeVries</a> calls Neovim a <a target="_blank" href="https://brain.sspaeti.com/pde-personalized-development-environment">PDE</a> (Personalized Development Environment), not “just” an IDE. You can learn more about this in <a target="_blank" href="https://www.youtube.com/c/ThePrimeagen">ThePrimeagen</a>’s truly inspiring <a target="_blank" href="https://youtube.com/playlist?list=PLm323Lc7iSW_wuxqmKx_xxNtJC_hJbQ7R">Vim videos</a> and learn why he used <a target="_blank" href="https://youtu.be/D4YTJ2W5q4Y">Vim in 2022</a>.</p>
<p>Vim also manifested <strong>minimalism</strong> more in me. I used the terminal instead of fancy GUIs and plain text files for clarity, freedom, blazingly fast shortcuts, no vendor lock-in, and staying in the <a target="_blank" href="https://brain.sspaeti.com/deep-work">Flow</a> with the content in front.</p>
<p>Vim changed not only my workflow but how I was able to <strong>edit at the speed of thought</strong>. Instead of thinking, “I want to edit that word”, my fingers jump to that word and change it with a few keystrokes.</p>
<h2 id="heading-vim-for-data-engineering">Vim for Data Engineering</h2>
<p>My data engineering workflow uses Neovim with the <a target="_blank" href="https://microsoft.github.io/language-server-protocol/">LSP</a> (Language Server Protocol) <a target="_blank" href="https://github.com/microsoft/pyright">pyright</a> installed with <a target="_blank" href="https://github.com/williamboman/mason.nvim">mason</a>. There's much more with <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/tmux">Tmux</a>, but you can find all the details on <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/nvim">dotfiles/nvim</a>.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-mason-install.png" alt="Installing Pyright with Mason" width="600" height="400" loading="lazy"></p>
<h2 id="heading-vim-for-writing">Vim for Writing</h2>
<p>I’m still using <a target="_blank" href="https://brain.sspaeti.com/obsidian">Obsidian</a> a lot more for writing (see more on my <a target="_blank" href="https://sspaeti.com/blog/pkm-workflow-for-a-deeper-life/">PKM workflow</a>) due to its additional features of supported images, backlinks, graphs, and plugins specified for note-taking, such as <a target="_blank" href="https://brain.sspaeti.com/readwise">ReadWise</a> (syncing my highlight from books, and tweets), <a target="_blank" href="https://github.com/blacksmithgu/obsidian-dataview">Dataview</a> (using notes as a database), <a target="_blank" href="https://excalidraw.com/">Excalidraw</a> (drawing with Markdown format), Templates, and so on.</p>
<p>Nevertheless, I write more and more in Neovim. For now, I use <a target="_blank" href="https://github.com/folke/zen-mode.nvim">ZenMode</a> (for centering the text), Grammarly (for linting grammar), <a target="_blank" href="https://github.com/btford/write-good">write-good</a> (linting grammar), and specifically <a target="_blank" href="https://github.com/epwalsh/obsidian.nvim">Obsidian.nvim</a> (follow backlinks, and so on.). You find all details in my <a target="_blank" href="https://github.com/sspaeti/dotfiles">dotfiles</a>.</p>
<p>In Obsidian, I use the <a target="_blank" href="https://publish.obsidian.md/hub/04+-+Guides%2C+Workflows%2C+%26+Courses/for+Vim+users">Vim mode</a> Obsidian <a target="_blank" href="https://github.com/sspaeti/dotfiles/blob/master/obsidian/.vimrc">.vimrc</a> and map most <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/obsidian">hotkeys</a> to my Vim settings. At the same time, I've been writing more and more in Neovim and have been progressively moving over to full Neovim.</p>
<p>Plugins such as <a target="_blank" href="https://github.com/nvim-telescope/telescope.nvim">Telescope</a> and simple grep features that I use for coding work very well with Markdown. Here are some clips showing what is possible in an excellent talk about <a target="_blank" href="https://youtu.be/2ORWaIqyj7k">Writing, Editing, and World-Building at the speed of thought with Vim</a>.</p>
<h2 id="heading-why-you-should-learn-vim-too">Why You Should Learn Vim, Too</h2>
<p>When I heard about Vim, I thought that it was only for software engineers and Linux nerds 😅. I never thought I was going to use it as well. But how did I get into it?</p>
<p>I've already shared some reasons why I love Vim. But it really changed all my workflows, not only as a developer but also how I surf the internet, write, navigate, and use tools. I search for a Vim mode in any application I use.</p>
<p>But if you don't enjoy fiddling and optimizing your workflow, and if you don't write or code for a living, Vim might not be for you. Start with your current editor and activate the Vim mode before you do anything with Vim. It will save you <a target="_blank" href="https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/">a lot of frustration</a>, trust me 😅.</p>
<h2 id="heading-how-to-get-started-using-vim">How to Get Started Using Vim</h2>
<p>There are many good resources that'll help you get started with Vim. The easiest is to type <code>vimtutor</code> into your terminal, which is an interactive tutorial for Vim.</p>
<p>I've already linked a few YouTube videos above – especially check out ThePrimagen starting with <a target="_blank" href="https://youtu.be/X6AR2RMB5tE">Vim As Your Editor</a> or <a target="_blank" href="https://youtu.be/84qoMxS-iqQ">Why even bother with Vim or Neovim in 2022</a>.</p>
<p>I started with Ben Awads’s <a target="_blank" href="https://youtu.be/IiwGbcd8S7I">Vim tutorial</a> back then. An excellent <a target="_blank" href="https://youtu.be/a6Q8Na575qc">Lecture: Editors (Vim) (2020)</a>. <a target="_blank" href="https://youtu.be/wlR5gYd6um0">Mastering the Vim Language</a>. I also collect a small <a target="_blank" href="https://www.youtube.com/playlist?list=PLxGd5Sk9B7IZfFOxGWgg8XswEKZ6lEzmh">playlist</a> on YouTube with Vim content. A big inspiration also <a target="_blank" href="https://youtu.be/sSOfr2MtRU8">dev workflow using Tmux and Vim</a> from <a target="_blank" href="https://twitter.com/inkdrop_app?lang=en">Takuya</a>.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>We have learned that Vim is a powerful text editor popular among developers. It's based on shortcuts, called the Vim language, which can make coding and writing faster and more efficient.</p>
<p>With Vim, you can jump to any specific text position and rapidly make precise edits. While learning Vim can be challenging, it is well worth the effort in the long run as it will improve your productivity and bring joy to your coding experience.</p>
<p>If you want to go further, try <a target="_blank" href="https://github.com/tmux/tmux/wiki">Tmux</a>, which plays well with Vim. You could even go one level deeper, which is a dedicated keyboard layout such as <a target="_blank" href="https://en.wikipedia.org/wiki/Dvorak_keyboard_layout">Dvorak</a> or <a target="_blank" href="https://brain.sspaeti.com/halmak">Halmak</a> (which I started learning at some point). Or buy a fancy <a target="_blank" href="https://www.reddit.com/r/kinesisadvantage/comments/yplirr/im_also_part_of_the_team_kinesis_now/?utm_source=share&amp;utm_medium=web2x&amp;context=3">ergonomic keyboard</a> or <a target="_blank" href="https://bit.ly/sspaeti_keyboard">build one yourself</a>.</p>
<p>Thanks for reading this far. I hope you enjoyed this article. I'm looking forward to hearing your comments and experiences.</p>
<p><em>You can read more of my other tutorials at</em> <a target="_blank" href="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/"><em>www.sspaeti.com</em></a><em>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why you should ditch Email, and the way we should communicate at work ]]>
                </title>
                <description>
                    <![CDATA[ The first example of email can be found on computers at MIT in a program called MAILBOX, all the way back in 1965. Besides its advantages of sharing fast and in a direct way, there are several studies stating that average office workers receive 110 m... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-you-should-ditch-email-and-the-way-we-should-communicate-at-work-afd5d02652ce/</link>
                <guid isPermaLink="false">66d4614d38f2dc3808b79109</guid>
                
                    <category>
                        <![CDATA[ Collaboration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Simon Späti ]]>
                </dc:creator>
                <pubDate>Thu, 25 Apr 2019 19:19:24 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*AUTRTRaQvgh5j1rFAr5yJQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The first example of email can be found on computers at MIT in a program called <em>MAILBOX</em>, all the way back in 1965. Besides its advantages of sharing fast and in a direct way, there are several studies stating that average office workers receive 110 messages a day. Given the fact that every interruption takes 20 minutes to get back, this is a major distraction and also adds to the overall stress.</p>
<p>I asked myself isn’t there a smarter way to communicate (discuss, argue, debate) at work? This is what I’m going through in this article.</p>
<h3 id="heading-why-email-is-so-popular">Why email is so popular</h3>
<p>Let’s start with why email is so popular and still used as the number one communication in the vast majority of companies.</p>
<p>Some strengths and big advantages email has for sure is <strong>sharing fast and in a direct way</strong> to a number of people. It is location independent. A very handy feature, it keeps a record of all the communication and you can always go back to it.</p>
<p>The costs are obviously very low. And one big benefit it’s still the best way to market your target users to make an actual sale.</p>
<h3 id="heading-the-bad-things-about-email">The bad things about email</h3>
<p>Although one might argue email is efficient and productive communication, I’d argue against it. It’s <strong>ineffective because it’s based on old fashioned expectations</strong>. We approach email like a letter, where every email will be answered immediately the moment the letter arrives.</p>
<p>A <strong>major problem that email has is distraction,</strong> which can be seen as an open to-do-list for everyone else to put a task on top of it. There are different studies ( <a target="_blank" href="https://www.ics.uci.edu/~gmark/chi08-mark.pdf">The Cost of Interrupted Work</a>, <a target="_blank" href="http://erichorvitz.com/CHI_2007_Iqbal_Horvitz.pdf">Disruption and Recovery of Computing Tasks</a>), one says that workers are switching tasks every three minutes, mostly due to email. Around 36 (!!) times an hour.</p>
<p>These interruptions are particularly bad in case you want to get tasks done. Normally every interruption needs around 20 minutes to get back on focus where you were just before the interruption. As productivity is best in bigger junks it’s even more important to block out email or have other ways of communications with uninterrupted timeslots.</p>
<blockquote>
<p>“Professional activities performed in a state of distraction-free concentration that pushes your cognitive capabilities to their limit. These efforts create new value, improve your skill, and are hard to replicate.” <a target="_blank" href="http://calnewport.com/blog/2012/11/21/knowledge-workers-are-bad-at-working-and-heres-what-to-do-about-it/">Cal Newport</a>, author and blogger who writes about the concept of deep work.</p>
</blockquote>
<p>For Newport, the benefits of deep work are continuous improvement of the value of your work output, an increase in the total quantity of valuable output you produce, and a deeper satisfaction at work.</p>
<p>Besides hindering your ability to accomplish the essential aspects of your workday, email also contributes to the <strong>overall stress</strong>. I’d even go so far to say that relationships at work are hindered through email. A study of the <a target="_blank" href="https://www.ics.uci.edu/~gmark/chi08-mark.pdf">University of California Irvine</a> confirms that and says: “Without email, our informants focused longer on their tasks, multitasked less, and had lower stress.”</p>
<p>Above all these disadvantages, maybe one of the biggest is the <strong>lack of structure</strong>. If you have emails, everything goes down one rabbit hole. Every person needs to organise their emails themselves. Only these tasks can take a lot of time which could be spent much more wisely on project tasks.</p>
<p>On top of the missing structure is the lost history if an employee is leaving the company. Many very helpful and informative emails, and the work in organising them, are lost.</p>
<h3 id="heading-spending-less-time-on-email">Spending less time on email</h3>
<p>Measuring your time is a good way to change how you use email. I did exactly that with a tool called <a target="_blank" href="https://www.sspaeti.com/blog/tools-i-use#Capture_the_time">RescueTime</a>. This way you can clearly see how much time you spent on each and every app. Overall I used 24% of my time for communications — this included WhatsApp, Facebook, my friends. However, only at work, I found myself using 1 hour and more every day on my email client. Sure some of it is necessary, and some are even for scheduling meetings. But still it was too much, and I’ve tried to keep it less and use email more efficiently since then.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/4dtjpWnsUu9OY99-6uny0c26Ad48K6ldebUZ" alt="Captured 24% of the time for communication" width="726" height="432" loading="lazy"></p>
<p>However, some of the time spent is not due to my behaviour. It is the company and it depends on how your team or company communicates. Some studies say the average office workers receive <a target="_blank" href="https://thenextweb.com/entrepreneur/2014/11/09/quitting-email-helped-company-team-communicate-better/">110 messages a day</a> and spend 28 percentage of their time handling email. That translates into 13 hours a week or <a target="_blank" href="http://www.theatlantic.com/business/archive/2012/07/re-re-fw-re-workers-spend-650-hours-a-year-on-email/260447/">650</a> hours a year of e-mail checking. Imagine how powerful it would be for your organisation to reclaim that lost time!</p>
<p>There are jobs where emailing is your primary work, like working in a call centre. In that case, you cannot change that or benefit immediately. But what about managers who spend between five and 20 hours a week reading and writing emails, as this article in <a target="_blank" href="https://www.forbes.com/sites/davidburkus/2016/07/12/why-atos-origin-is-striving-to-be-a-zero-email-company/#6260fadf8d0f">Forbes</a> says. Or even more for people in tech, where their main purpose is to develop new features, solve problems and be creative? In these cases, email is just not what they should do to be successful in their work.</p>
<h3 id="heading-what-is-the-need-of-todays-communications">What is the need of today’s communications?</h3>
<p>Let’s find out what are our requirements for emailing, or more generally, communication. Besides knowing which users are using which communications, often <strong>it’s not only a technical adjustment but more a change in culture</strong>.</p>
<p>As Millennials are now the largest group (in the U.S. labour force), we should also make sure we use ways and tools that suit them. Millennials have grown up with technology and are more familiar with newer communications styles in Social Media. And as email was first used in 1965, I would say it’s not the best fit for today’s needs anymore.</p>
<h3 id="heading-characteristics-of-millennials">Characteristics of Millennials</h3>
<p>Let’s dig a little deeper into what the attributes of a millennial are. <strong>They like to be in a community and to be part of something, given a real purpose. They use their mobile phones all the time.</strong> They are not so severe all the time, they appreciate honesty, and they want to be heard. They want to engage with top-level leaders, give feedback and constructive criticism, and they want success for everyone involved, short and to the point. Also, they are into new tools and prefer written communication.</p>
<p>Managing an important project or handling complex tasks can be overwhelming. Most millennials would rather leave the telephone untouched and streamline their workload using written communication methods. Sending out a message via instant messaging is a quick, effective way to get in touch with someone. Written communication through a social network also enables millennials to assign a project without losing any details — and all of the information can be recalled later. This helps when keeping track of project updates because everyone involved is accountable. See more about how to work with millennials <a target="_blank" href="https://axerosolutions.com/blogs/timeisenhauer/pulse/307/how-to-communicate-with-millennials-at-work-23-surefire-tips-to-retire-the-stereotypes">here</a> and how to do that <a target="_blank" href="https://www.lifehack.org/articles/technology/7-tools-to-help-keep-track-of-habits-and-goals.html">effectively</a>.</p>
<h3 id="heading-how-to-turn-around-communication-what-can-we-do">How to turn around communication? What can we do</h3>
<p>To fit the new generations, we should use tools that help achieve their goals.</p>
<h4 id="heading-tools-and-the-way-of-working">Tools and the way of working</h4>
<p>One of the most important is <strong>the tool or platform you are using</strong>. If you’re still using a waterfall methodology and Microsoft Word for specifications, only one person at a time can edit it and it makes it hard to share. That way you don’t allow feedback and changes to your ideas. On the other hand, in methodologies that support a feedback culture e.g. like <a target="_blank" href="https://en.wikipedia.org/wiki/Scrum_\(software_development\)">Scrum</a> or similar, you want to have improvements and feedback every two weeks (or as long as your Sprint is).</p>
<p>One feature of <strong>this platform or tool you want to use must be that everything is in the same place</strong>. Discussions, Meeting Calendar, new idea proposal, status updates, file-share, chats, even client-access. Maybe email forwards and uploads important emails coming in on the side. But reports, search, notifications and most important, the ToDos/Defect/Stories should all be in one single place.</p>
<p>Or if not available, use the powerful integration that most tools have. As the tools chain is rising every day, it’s important to integrate certain important tools in your communication and management platform as well. If you have a git-repository or any file-share you can add extensions that integrate into your tool.</p>
<p>This way you <strong>minimise</strong> <strong>additional communications and coordination</strong> as you don’t need to synchronise tasks, statuses, open discussions etc., and everyone sees it all in one place. You get immediate feedback and everyone can contribute. The feedback is specific to a task, idea, defect etc. and right where it belongs.</p>
<h3 id="heading-the-to-cc-and-bcc-fields">The To, CC, and BCC fields</h3>
<p>Targeting a large group in email is a mess, especially as you need to decide up front who to put in the “To”, “CC” (carbon copy) and “BCC” (blind carbon copy) fields. It’s easy to forget someone, or even worse, you add everyone who comes to mind. Try to target only the people needed.</p>
<p><strong>Start with a small group and only expand when the idea or the story gets more mature.</strong> If you want everyone to see it, you add just the core team and keep the access-rights open for everyone. That way, nobody is left out but they don’t get a ton of unnecessary notifications. Plus they can only have a look when you have time or want to see it.</p>
<p>As you can create email rules for every topic and sender, it’s somewhat cumbersome. Especially in the above-mentioned tools, you can specify notification for each project, each discussion, each task. That way you decide when and how you get notified. Where in email, you get random email notifications, unstructured.</p>
<h3 id="heading-offices-and-their-noise-level">Offices and their noise-level</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Y4BO9-rqSY9bJrTDFnZKCPtzJiMbK0bPksLO" alt="Productive working setup" width="800" height="600" loading="lazy"></p>
<p>Besides the platform and tool, it’s critical to have a productive working environment. As more companies are changing to an open office, as it’s helpful to have everyone in one room, it is contradictory to productive, deep work. As you get interrupted every time someone is on the phone, having an important discussion that does not include you, etc. <strong>Your brain is wired to listen to it, even though you don’t want to — you will always find yourself listen to it.</strong></p>
<p>You can use <a target="_blank" href="https://www.sspaeti.com/blog/tools-i-use-part-iii#The_perfect_headphones">headphones with noise cancelling</a> and <a target="_blank" href="https://www.sspaeti.com/blog/tools-i-use-part-iii/#Music_that_keeps_you_focused">music to focus</a>, which makes working way more productive, but you still would be more productive in a quiet environment. I like the definition of your office as a library like J. Fried and D. H. Hansson describe in their book <a target="_blank" href="https://basecamp.com/books/calm">It Doesn’t Have to Be Crazy at Work</a>. Because if you go to a library you expect everyone to be quiet and work productively. Shouldn’t that also be the way an office is?</p>
<p>Same goes for meetings. When the office is a quiet place, then you need to have many discussions and workshops in meeting-rooms. But I would distinguish between meetings and productive working together. <strong>As productive one-on-one workshops to solve problems certainly increase productivity (a lot!), long status updates or unproductive discussions, if they’re not solution driven, can go the other direction</strong>.</p>
<p>Think of meetings as if they cost you something, as Seth Goldin said in his article about <a target="_blank" href="https://seths.blog/2011/01/making-meetings-more-expensive/">Making meetings more expensive</a>. You would probably think twice if and how to have your meeting:</p>
<ol>
<li><p>whom to invite</p>
</li>
<li><p>making meetings start right on time</p>
</li>
<li><p>ensuring that every meeting has a clearly defined purpose</p>
</li>
<li><p>managing the flow of information, including agendas and coordinating the discussion</p>
</li>
<li><p>issuing a follow-up memo to everyone who attended the meeting</p>
</li>
</ol>
<h3 id="heading-agile-and-remote-work">Agile and remote work</h3>
<p>As mentioned earlier, I would argue that you should work in an agile way. It works hand-in-hand with most of the points covered above. If you work agile, you use scrum or similar methods with well-defined user-stories that make them easy to discuss with your stakeholders.</p>
<p>Define tasks for your developers. This way you need less synchronisation as tools allow you to move a user-story if needed easily. Additionally, you see what everyone is doing, where they might get stuck, and you can plan your sprints with ease and also make remote work easy.</p>
<h3 id="heading-what-are-the-tools-to-do-that">What are the tools to do that?</h3>
<p>There are many tools out there. Here are some, but of course this list is not complete:</p>
<ul>
<li><p><a target="_blank" href="https://basecamp.com/"><strong>Basecamp</strong></a> <strong>— maybe the most completed</strong><br>  Managing projects, working with clients, coordinating with contractors, and communicating with your team</p>
</li>
<li><p><a target="_blank" href="https://slack.com"><strong>Slack</strong></a> <strong>— very good for a one-to-one replacement for email in projects or teams</strong><br>  A powerful tool for making team communication fast and easy.</p>
</li>
<li><p><a target="_blank" href="https://about.gitlab.com/"><strong>Gitlab</strong></a> <strong>— best option very well working with git commits</strong><br>  Single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.</p>
</li>
<li><p><a target="_blank" href="https://asana.com"><strong>Asana</strong></a> <strong>— maybe best free option</strong><br>  Work management platform teams use to stay focused on the goals, projects, and daily tasks</p>
</li>
<li><p><a target="_blank" href="https://www.atlassian.com/software/jira"><strong>JIRA</strong></a> <strong>— especially good for development with project, bugs and tracking</strong><br>  Issue tracking product that allows bug tracking and agile project management</p>
</li>
<li><p><a target="_blank" href="https://trello.com/"><strong>Trello</strong></a> <strong>— for small projects and small amount of people, very lean</strong><br>  Boards, lists, and cards enable you to organize and prioritize your projects in a fun, flexible, and rewarding way.</p>
</li>
<li><p><a target="_blank" href="https://taiga.io"><strong>Taiga</strong></a> <strong>— open-source basecamp</strong><br>  Project management platform for agile developers &amp; designers and project managers</p>
</li>
</ul>
<p>Some less famous email replacement tools (in alphabetic order):</p>
<ul>
<li><p><a target="_blank" href="https://activecollab.com/">activecollab.com</a></p>
</li>
<li><p><a target="_blank" href="https://clickup.com/">clickup.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.copperproject.com/">copperproject.com</a></p>
</li>
<li><p><a target="_blank" href="https://freedcamp.com/">freedcamp.com</a></p>
</li>
<li><p><a target="_blank" href="https://glip.com/">glip.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.huddle.com/">huddle.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.mavenlink.com/">mavenlink.com</a></p>
</li>
<li><p><a target="_blank" href="https://monday.com">monday.com</a></p>
</li>
<li><p><a target="_blank" href="https://nostromo.io/">nostromo.io</a></p>
</li>
<li><p><a target="_blank" href="https://nozbe.com">nozbe.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.phpcollab.com/">php-collab.org</a></p>
</li>
<li><p><a target="_blank" href="https://www.proofhub.com/">proofhub.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.proworkflow.com/">proworkflow.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.teamwork.com/">teamwork.com</a></p>
</li>
<li><p><a target="_blank" href="https://www.wrike.com">wrike.com</a></p>
</li>
</ul>
<p>It also comes down to how your company communicates: journalists, for example, tend to constantly ping each other with ideas and very short questions, and thus Slack might be the best fit.</p>
<p>There are also even more radical tools where all communication and processes are based on business workflows. An example is <a target="_blank" href="https://www.tigerconnect.com/">Tigerconnect</a>.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Whatever you decide, whether you still using email or a new, more modern communication method, keep in mind the time spend on communication. Make it efficient and not distracting. Also, write with a cause. Don’t try to be the first one to answer. Better think about it thoroughly and reply only if it adds value to the conversation. Moreover, use if-then-else in your answer to foresee where the conversation might go to avoid back and forth communication.</p>
<p>Define clearly when to use which communication channel and what you want to achieve in order to avoid too many channels.</p>
<p>Lastly, with the right tool, it’s actually fun to communicate in an efficient way, solving issues and user-stories together and reducing weekly meetings to a bare minimum. No more missing deadlines, no more confusion about “I thought so and so was responsible for that”, and being productive as never before.</p>
<p>Related Links:</p>
<ul>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=37NdXbkRGpE">How and why to use discussion threads instead of chats, emails or meetings — Basecamp</a></p>
</li>
<li><p><a target="_blank" href="https://for-managers.com/replace-email-management-software/">Eight reasons why you should replace email with management software</a></p>
</li>
<li><p><a target="_blank" href="https://mic.com/articles/106014/5-reasons-email-is-the-absolute-worst-explained-by-science#.C6y3AWFay">Scientific Reasons Why Email Is the Absolute Worst</a></p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=FnOjj-Oe08k">Replacing boring status meetings or status updates — Basecamp</a></p>
</li>
<li><p><a target="_blank" href="https://thenextweb.com/entrepreneur/2014/11/09/quitting-email-helped-company-team-communicate-better/">How quitting email helped my company communicate better</a></p>
</li>
<li><p><a target="_blank" href="https://thenextweb.com/entrepreneur/2014/07/29/work-better-email-less/">The key to better work? E-mail less, flow more</a></p>
</li>
<li><p><a target="_blank" href="https://peakon.com/blog/workplace-culture/improve-communication-at-work/">10 Straightforward Ways to Improve Communication at Work</a></p>
</li>
<li><p>As an example of importance, Facebook even bought a whole platform recently: <a target="_blank" href="https://techcrunch.com/2018/07/26/facebook-acquires-redkix-to-enhance-communications-on-workplace-by-facebook/">Facebook acquired Redkix (unified communication)</a></p>
</li>
</ul>
<p><em>Originally published at</em> <a target="_blank" href="https://www.sspaeti.com/blog/email-and-the-way-we-should-communicate-at-work/"><em>https://www.sspaeti.com</em></a> <em>on April 25, 2019.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Use these open-source tools for Data Warehousing ]]>
                </title>
                <description>
                    <![CDATA[ These days, everyone talks about open-source software. However, this is still not common in the Data Warehousing (DWH) field. Why is this? For this post, I chose some open-source technologies and used them together to build a full data architecture f... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/open-source-data-warehousing-druid-apache-airflow-superset-f26d149c9b7/</link>
                <guid isPermaLink="false">66d46149768263422736e8c4</guid>
                
                    <category>
                        <![CDATA[ big data ]]>
                    </category>
                
                    <category>
                        <![CDATA[ data-engineering ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Simon Späti ]]>
                </dc:creator>
                <pubDate>Thu, 29 Nov 2018 06:00:53 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*vp7sdOKpaw8JiXnP.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>These days, everyone talks about open-source software. However, this is still not common in the Data Warehousing (DWH) field. Why is this?</p>
<p>For this post, I chose some open-source technologies and used them together to build a full data architecture for a Data Warehouse system.</p>
<p>I went with <a target="_blank" href="http://www.druid.io/">Apache Druid</a> for data storage, <a target="_blank" href="https://superset.incubator.apache.org/">Apache Superset</a> for querying, and <a target="_blank" href="https://airflow.apache.org/">Apache Airflow</a> as a task orchestrator.</p>
<h3 id="heading-druid-the-data-store">Druid — the data store</h3>
<p>Druid is an open-source, column-oriented, distributed data store written in Java. It’s designed to quickly ingest massive quantities of event data, and provide low-latency queries on top of the data.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/X5ERR00kMGXwmbNaZ3a-6OuTgGhV6JosZGqX" alt="Image" width="726" height="647" loading="lazy"></p>
<h4 id="heading-why-use-druid">Why use Druid?</h4>
<p>Druid has many key features, including sub-second OLAP queries, real-time streaming ingestion, scalability, and cost effectiveness.</p>
<p>With the <a target="_blank" href="http://www.sspaeti.com/blog/olap-whats-coming-next#Comparison_modern_OLAP_Technologies">comparison of modern OLAP Technologies</a> in mind, I chose Druid over ClickHouse, Pinot and Apache Kylin. Recently, <a target="_blank" href="https://azure.microsoft.com/en-us/blog/azure-hdinsight-brings-next-generation-hadoop-3-0-and-enterprise-security-to-the-cloud/">Microsoft announced they will add Druid</a> to their Azure HDInsight 4.0.</p>
<h4 id="heading-why-not-druid">Why not Druid?</h4>
<p>Carter Shanklin wrote <a target="_blank" href="https://de.hortonworks.com/blog/apache-hive-druid-part-1-3/">a detailed post about Druid’s limitations</a> at Horthonwork.com. The main issue is with its support for SQL joins, and advanced SQL capabilities.</p>
<h3 id="heading-the-architecture-of-druid">The Architecture of Druid</h3>
<p>Druid is scalable due to its cluster architecture. You have three different node types — the Middle-Manager-Node, the Historical Node and the Broker.</p>
<p>The great thing is that you can add as many nodes as you want in the specific area that fits best for you. If you have many queries to run, you can add more Brokers. Or, if a lot of data needs to be batch-ingested, you would add middle managers and so on.</p>
<p>A simple architecture is shown below. You can read more about Druid’s design <a target="_blank" href="http://druid.io/docs/latest/design/">here</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xeRSbDmEa6pmf5ZOOxBF-hsunHv9i27cfHfU" alt="Image" width="726" height="408" loading="lazy"></p>
<h3 id="heading-apache-superset-the-ui">Apache Superset — the UI</h3>
<p>The easiest way to query against Druid is through a lightweight, open-source tool called <a target="_blank" href="https://superset.incubator.apache.org/">Apache Superset</a>.</p>
<p>It is easy to use and has all common chart types like Bubble Chart, Word Count, Heatmaps, Boxplot and <a target="_blank" href="https://superset.incubator.apache.org/gallery.html">many more</a>.</p>
<p>Druid provides a Rest-API, and in the newest version also a SQL Query API. This makes it easy to use with any tool, whether it is standard SQL, any existing BI-tool or a custom application.</p>
<h3 id="heading-apache-airflow-the-orchestrator">Apache Airflow — the Orchestrator</h3>
<p>As mentioned in <a target="_blank" href="https://www.sspaeti.com/blog/olap-whats-coming-next/#Orchestrators">Orchestrators — Scheduling and monitor workflows</a>, this is one of the most critical decisions.</p>
<p>In the past, ETL tools like Microsoft SQL Server Integration Services (SSIS) and others were widely used. They were where your data transformation, cleaning and normalisation took place.</p>
<p>In more modern architectures, these tools aren’t enough anymore.</p>
<p>Moreover, code and data transformation logic are much more valuable to other data-savvy people in the company.</p>
<p>I highly recommend you read a blog post from <a target="_blank" href="https://medium.com/@maximebeauchemin">Maxime Beauchemin</a> about <a target="_blank" href="https://medium.com/@maximebeauchemin/functional-data-engineering-a-modern-paradigm-for-batch-data-processing-2327ec32c42a">Functional Data Engineering — a modern paradigm for batch data processing</a>. This goes much deeper into how modern data pipelines should be.</p>
<p>Also, consider the read of <a target="_blank" href="https://medium.com/@maximebeauchemin/the-downfall-of-the-data-engineer-5bfb701e5d6b">The Downfall of the Data Engineer</a> where Max explains about the breaking “data silo” and much more.</p>
<h4 id="heading-why-use-airflow">Why use Airflow?</h4>
<p><a target="_blank" href="https://airflow.apache.org/">Apache Airflow</a> is a very popular tool for this task orchestration. Airflow is written in Python. Tasks are written as Directed Acyclic Graphs (<a target="_blank" href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">DAGs</a>). These are also written in Python.</p>
<p>Instead of encapsulating your critical transformation logic somewhere in a tool, you place it where it belongs to inside the Orchestrator.</p>
<p>Another advantage is using plain Python. There is no need to encapsulate other dependencies or requirements, like fetching from an FTP, copying data from A to B, writing a batch-file. You do that and everything else in the same place.</p>
<h4 id="heading-features-of-airflow">Features of Airflow</h4>
<p>Moreover, you get a fully functional overview of all current tasks in one place.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/RoR-Nl7GwR7qSU1rWxUX8RYAywKVwfqfgMPO" alt="Image" width="726" height="479" loading="lazy"></p>
<p>More relevant features of Airflow are that you write workflows as if you are writing programs. External jobs like Databricks, Spark, etc. are no problems.</p>
<p>Job testing goes through Airflow itself. That includes passing parameters to other jobs downstream or verifing what is running on Airflow and seeing the actual code. The log files and other meta-data are accessible through the web GUI.</p>
<p>(Re)run only on parts of the workflow and dependent tasks is a crucial feature which comes out of the box when you create your workflows with Airflow. The jobs/tasks are run in a context, the scheduler passes in the necessary details plus the work gets distributed across your cluster at the task level, not at the DAG level.</p>
<p>For many more feature visit the <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/great.html">full list</a>.</p>
<h4 id="heading-etl-with-apache-airflow">ETL with Apache Airflow</h4>
<p>If you want to start with Apache Airflow as your new ETL-tool, please start with this <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/">ETL best practices with Airflow</a> shared with you. It has simple <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/etlexample.html">ETL</a>-examples, with plain SQL, with <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/hiveexample.html">HIVE</a>, with <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/datavault.html">Data Vault</a>, <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/datavault2.html">Data Vault 2</a>, and <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/datavault-bigdata.html">Data Vault with Big Data processes</a>. It gives you an excellent overview of what’s possible and also how you would approach it.</p>
<p>At the same time, there is a Docker container that you can use, meaning you don’t even have to set-up any infrastructure. You can pull the container from <a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/etlexample.html#run-airflow-from-docker">here</a>.</p>
<p>For the GitHub-repo follow the link on <a target="_blank" href="https://github.com/gtoonstra/etl-with-airflow">etl-with-airflow</a>.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>If you’re searching for open-source data architecture, you cannot ignore Druid for speedy OLAP responses, Apache Airflow as an orchestrator that keeps your data lineage and schedules in line, plus an easy to use dashboard tool like Apache Superset.</p>
<p>My experience so far is that Druid is bloody fast and a perfect fit for <a target="_blank" href="https://medium.com/@sspaeti/olap-whats-coming-next-be01c1567b87">OLAP cube replacements</a> in a traditional way, but still needs a more relaxed startup to install clusters, ingest data, view logs etc. If you need that, have a look at <a target="_blank" href="https://imply.io/">Impy</a> which was created by the founders of Druid. It creates all the services around Druid that you need. Unfortunately, though, it’s not open-source.</p>
<p>Apache Airflow and its features as an orchestrator are something which has not happened much yet in traditional Business Intelligence environments. I believe this change comes very naturally when you start using open-source and more new technologies.</p>
<p>And Apache Superset is an easy and fast way to be up and running and showing data from Druid. There for better tools like Tableau, etc., but not for free. That’s why Superset fits well in the ecosystem if you’re already using the above open-source technologies. But as an enterprise company, you might want to spend some money in that category because that is what the users can see at the end of the day.</p>
<p>Related Links:</p>
<ul>
<li><p><a target="_blank" href="https://medium.com/@dustinstansbury/understanding-apache-airflows-key-concepts-a96efed52b1a">Understanding Apache Airflow’s key concepts</a></p>
</li>
<li><p><a target="_blank" href="https://medium.com/airbnb-engineering/druid-airbnb-data-platform-601c312f2a4c">How Druid enables analytics at Airbnb</a></p>
</li>
<li><p><a target="_blank" href="https://techcrunch.com/2018/05/01/google-launches-cloud-composer-a-new-workflow-automation-tool-for-developers/">Google launches Cloud Composer, a new workflow automation tool for developers</a></p>
</li>
<li><p><a target="_blank" href="https://cloud.google.com/composer/">A fully managed workflow orchestration service built on Apache Airflow</a></p>
</li>
<li><p><a target="_blank" href="https://databricks.com/blog/2016/12/08/integrating-apache-airflow-databricks-building-etl-pipelines-apache-spark.html">Integrating Apache Airflow and Databricks: Building ETL pipelines with Apache Spark</a></p>
</li>
<li><p><a target="_blank" href="https://gtoonstra.github.io/etl-with-airflow/">ETL with Apache Airflow</a></p>
</li>
<li><p><a target="_blank" href="https://hackernoon.com/data-engineering-the-future-of-data-warehousing-81bc953a9b00">What is Data Engineering and the future of Data Warehousing</a></p>
</li>
<li><p><a target="_blank" href="https://imply.io/">Imply — Managed Druid platform (closed-source)</a></p>
</li>
<li><p><a target="_blank" href="https://de.hortonworks.com/blog/apache-hive-druid-part-1-3/">Ultra-fast OLAP Analytics with Apache Hive and Druid</a></p>
</li>
</ul>
<p><em>Originally published at</em> <a target="_blank" href="https://www.sspaeti.com/blog/open-source-data-warehousing-druid-airflow-superset/"><em>www.sspaeti.com</em></a> <em>on November 29, 2018.</em></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
