Deploy Your Own Productivity System Using Containers

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Do you know the feeling of trying to stay productive, focusing on a task while in order to plan it correctly, you need three different tools. And then when switching back and forth, not only you lose focus, the friction throws you off and you end up either skipping this part of the planning or losing yourself in the process. Well, today I want to show you a solution to that and on the way touch containers and how much they can do for you, even if you're not a Kubernetes expert or a Docker enthusiast, if that's a real thing. Anyway, most users who know how containers are used in the cloud, think of systems like Kubernetes, AWS, ECS, or even HashiCorp's Nomad if you're a real DevOps geek. But even if you aren't one and most of us aren't, when it comes to local use, many developers shy away from diving deep or simply don't make the most out of this powerful little, well, containers. In order to better explain containers, I need to visualize them and what's a better way than a good drawing. So how about we use containers to deploy a local process with one of the most exciting open source tools used for productivity, which brings some magic to the world of mind maps, notes, and planners. Before I can show you the tool, we need to deploy it. It's called a Finn and I was so happy when they reached out and suggested to sponsor this video, then I already had it in a making. Finn are all about things we all love. It's open source, it's local first, and even they're building their own supporting technology, like a brand new open source that is for example to support the magic you're about to see. It's all open source and on their GitHub so you can catch it there if you like. But first thing first, while you can use a Finn online as a SaaS, we want to be the cool kids and in line with their local first philosophy, a Finn offers a Docker-based deployment. Let's see it in action. There's this long command which essentially in one go pulls the container, runs it, demonizing the background, maps the internal port, etc, etc, but we're going to go step-by-step and view the Docker compose section in order to understand what's going on. The compose file lays out a group of containers that build up the application. It can set volumes, map ports, and define dependencies between the different running containers. Here we have the a Finn app with two ports mapped, it depends on Postgres and Redis, which means the application processing the container will not start until the others are ready to serve. Then a few environment variables followed by Redis and Postgres with minimal configuration using the official images from Docker Hub. By the way, using this exact way you can launch your own local Redis or Postgres or any other application without ever installing it. Simply run Docker run Redis, ideally with the Redis port mapped, something like minus P, with 6379 or whatever port you want mapped to the other port inside the container, and Docker will pull the image and run it for you. When we're ready, let's start deployment, it's as easy as Docker compose app. This can be run in the background in the tash mode using minus T, but we want to actually see the logs on screen. After compose waits for the data containers to start, it can finally run the application process, which tells us it's listening on our local host on port 3010. I'll use a cool T max plugin that finds your relits in the presented log, and when I pick one, the browser pops opening the URL, telling to the plugin is below if you want it. The thing with the Finn is that it combines many tools in one. Starting off, it just looks like a notion knockoff. You get the same notion multi block view of a page with a title and content. You can see commands, fonts, structure, slash commands, tags, heck you even have the same internal databases. These I always claimed were the one killer feature that notion had, and a Finn actually publicly say they were inspired massively by notion, specifically there, everything is a block philosophy. Don't fool yourself though, while this looks exactly like notion, it's more of a light version, and when it comes to databases and complex macros, it's not on the same level. The power of a Finn actually lies somewhere else, much more exciting if you ask me. Like notion, you can change the table's layout, you can play with different metrics, you can also change the view, so if this is a task table, I can convert it to a Kanban. That is something I always like to see, having a Kanban integrated into the knowledge tool is immensely powerful, no more reaching out to Trello or trying to fix your task in a table of their own. Once you're past the, oh it's a notion phase, here's where things get really interesting. Besides the fact that you can now have notion running on your local machine in a DB that you can back up and port on some other machines without being dependent on a third party, check this. With one click here note turns over into edgeless mode, so from a notion block you're now in an endless canvas. In that magic, I can now free draw, I can add random text labels, create additional note blocks and connect them with arrows and drawings, I can add frames to keep a visual context while maintaining access to the note blocks without having to open the page view to make any changes. There's also a lot of options like adding photos and shapes and meant just the ability to move around a large plane with such freedom combining. Every tool I love is purely magic and immensely powerful for my productivity. Would I use it for note taking? Probably not, I'm still not seeing myself moving away from my sweet sweet obsidian near VIM setup, which you can find all about in the video up here. But up until this point I was using Excalidro for these drawings and Excalidro, by the way another great open source tool, it's pluggable to obsidian and due to the fact that it's open source it can be run in various forms. However, now I have something that combines everything I love and require in one place. Remember I told you if Finn have a philosophy and deep thinking behind everything they do, so check this. These guys went all in with the product and when the technical requirement did not fit a traditional DB, they went ahead and created their own database written in Rust and open source. The idea here was to use containers to deploy a sketching or a slash diagram system to better explain containers. So let's do that. The easiest way to think of a container is small containerized process running inside a host. In this case, my local computer containers are using a shared operating systems with their host, which makes them much lighter and easier to run than something like a virtual machine. They make use of a Linux feature called namespaces, which allows for a process aggregation and this helps with isolating processes, dependencies, environment configurations, etc. You can run containers in most platforms like Mac OS or Windows and thanks to a layer that's usually called a hypervisor. This emulates the Linux behavior helping with encapsulation. Using systems like Docker, containers can also be allocated disks and these can be virtually mounted into the running container, which helps with persistency of data. If you're running a database, for example, or a new productivity sketching tool, if you're now thinking to yourself, oh wait, I can add more compute power, use more servers and allocate different containers to different hosts, well, congratulations, you're an ops engineer, but in all seriousness, this is exactly what our friends from Google had in mind when they thought about Borg, which we know as Kubernetes, a system that controls a bunch of servers to deploy containers and allocating them based on resource efficiency and other user metrics. This is what's known as a container orchestrator and if you want to learn more about that, please do comment below and let me know. In order to take a closer look at the local running containers, the straightforward way is to use the Docker CLI and run the ps command to show running processes. But CLI are not as pretty as twoies, which are popular these days, so I'm going to use a great tool called lazy docker. And if the name sounds familiar, it may very well be due to the familiarity with a popular lazy gate that I covered in a video which you can find up here. Lazy docker, built by the same developer, it's important to mention and pretty much looks the same, only it covers the local containers, volumes networks and everything around containers. If you're unfamiliar with lazy gate, lazy docker uses the same motions, tab shift tab to toggle through paints, the motions to go up and down and arrows to scroll through data in the pain. And my favorite feature using plus and minus to zoom into areas, for example, in order to see the running container logs in real time in full width. Hit the question mark, if you need the menu where you'll find everything you need like attaching to running shell, execing into a container, opening the view in a browser and other useful commands and motions. Here's the exec feature in action, something I'm using almost every time I'm running something locally and works great from within lazy docker as well. It's also important to mention that when running docker compose, we can use the compose features of the CLI, like compose logs, you can start, restart, stop it, specific container or even scale it up. If you want to dive deeper into either docker or compose or other systems that I mentioned here or just want to share your ways of going about these tasks, please comment below, I want to hear your thoughts. Before we part ways, I want to add something that to me connects both running applications locally and the philosophy of thin advocates. In their docs, they share an interesting article by an independent research lab focusing on designing tools for creators called ink and switch. The article is quite lengthy, but here's the super interesting essence of it. It's titled local first software, you own your data in spite of the cloud and it discusses the concepts of local first software which advocates for software designs that prioritize user data and ownership, offline functionality and multi-device collaboration. If by any chance you watch my video around how I use Obsidian with new them, then you'd probably know these three principles just hit home. And if you've been using other popular software, like Notion, for example, and other alternatives, while they're great, they're far from following these principles. Quite the opposite, in fact, cloud apps take away user ownership and control of data, local first software maintains user control, improves privacy and ensures data longevity. Other traditional services simply build different and that's a shame. In that sense, thin and obsidian are a blow of fresh air when it comes to the world of note-taking and productivity apps. If you like the idea of using local containers for development, I highly recommend checking my system for that in the video right here. And if note-taking in a second brain for new-game users, sparks your imagination, check this one. Thank you for watching and I will see you on the next one.
Info
Channel: DevOps Toolbox
Views: 3,845
Rating: undefined out of 5
Keywords:
Id: x78OIw5z4DM
Channel Id: undefined
Length: 9min 59sec (599 seconds)
Published: Fri Mar 22 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.