[{"content":"During my short time as a developer visiting different companies, I have observed the use of various short-linkers for information sharing. Finally, using such a tool at Google increased my productivity a lot. Think of short links on steroids; instead of using other link services like &ldquo;bit.ly&rdquo; or &ldquo;goo.gl&rdquo; you can have links like g\/ for github.com or m\/ for your mail. To get this productivity everywhere, I have built a chrome extension that adds this functionality to your browser instead of setting up a private DNS.\n &quot;[&hellip;] AOL keywords for the corporate network.&quot; Benjamin Staffin\n How it works  SuperSrt DemoSuperSrt shortens URLs through shortcodes such as hn\/ or go\/project-customer\n  It is super simple to use.\nInstead of organizing everything with link services, you can use your browser as a short linker. SuperSrt ships some redirect rules, such as hn\/ for hacker news.\nThere are two types of rules:\n Simple, typing just the short link hn\/ redirects you. Search, adding something after the simple hn\/Super Srt rule gets the appendix and inserts it with a regex into a different rule.  Internals Instead of using a company-wide DNS or a custom search engine (duckduckgo.com) Super Srt as a Chrome plugin can intercept the HTTP requests. This has the downside that routes won&rsquo;t be synced ideally or that they are available to everyone. But using a plugin is great for private users that just want to have the productivity gain.\n    Pro Con     DNS Instant Global Sync Hard To Setup   Plugin Easy To Setup No or Slow Sync    The plugin checks a dictionary with a O(1) lookup time for the entered URL. A matching URL will hijack the current request and send an internal redirect to the Chrome engine.\nfunction matchRedirectFunc(details) { const url = new URL(details.url); const target = rules[url.host]; \/*Lookup domain Rule, O(1)*\/ if (target != null) { return { redirectUrl: target.redirectUrl, \/*Send redirect to engine*\/ }; } return {}; \/*Proceed with normal request*\/ } The function now needs to be added as a middleware. The function needs to be blocking to allow for the redirect of the request.\n Chrome Web RequestChrome exposes handlers to modify the lifecycle of a webrequest.\n  We need to register it at onBeforeRequest, which is called before a connection is going to be made. We also can not restrict it, such that we have to make it available for all domains.\nchrome.webRequest.onBeforeRequest.addListener( matchRedirectFunc, {urls: [&#34;&lt;all_urls&gt;&#34;]}, [&#34;blocking&#34;], ); Mentions Big thanks to the resources that gave me the inspiration to write this; check those projects out:\n https:\/\/github.com\/kellegous\/go A DNS based go\/ link shortener https:\/\/kev.inburke.com\/kevin\/url-shortener\/ A DNS based short linker, the Readme gives a great explanation  TL;DR  Add the Chrome Extension! Source https:\/\/github.com\/lbb\/SuperSrt  ","permalink":"https:\/\/lbb.sh\/posts\/super-srt\/","summary":"During my short time as a developer visiting different companies, I have observed the use of various short-linkers for information sharing. Finally, using such a tool at Google increased my productivity a lot. Think of short links on steroids; instead of using other link services like &ldquo;bit.ly&rdquo; or &ldquo;goo.gl&rdquo; you can have links like g\/ for github.com or m\/ for your mail. To get this productivity everywhere, I have built a chrome extension that adds this functionality to your browser instead of setting up a private DNS.","title":"Super Srt"},{"content":"This summer I had an internship at Google, and it was awesome! I worked on an open source project, which is now called &ldquo;krew&rdquo; a kubectl plugin manager. I use krew to discover and install new plugins to my system. You should also start to use a kubectl plugin manager because manual installation of plugins is annoying.\n A small screencast demo of krew\n  Kubectl Plugins! If you had asked me 4 months before I wrote this, I would not be able to say if kubectl plugins exist. However, kubectl plugins exist since kubernetes 1.9. And apparently, plugins are fantastic: They help to organize commands under kubectl, instead of having standalone binaries. The svcat plugin is a great example.\nNonetheless, at the time of writing, almost no one knew about this kubectl plugin subsystem. We determined this to be a problem of discoverability, as projects were only advertising to be kubectl plugins on many project pages. Furthermore, there was a lack of proper &ldquo;Awesone kubectl plugin&rdquo; pages, wich usually collect all related information.\nThe second big factor was lifecycle management. Kubectl plugins used to be installed manually for each project, leaving the downloading, upgrading, and moving of the install binary to the end-user. Many of the end-users associate this with too much friction, hindering the adoption of small plugins.\nWith krew we want to solve the problem of discoverability and lifecycle management, to fuel the kubernetes kubectl plugin ecosystem. Aiming to make it easier to find and install plugins and give plugin developers tool to easily deploy and deliver their projects to the user.\n Problem domains krew tries to solve.\n  Krew does the following things for you:\n Search and discover plugins Check for compatibility with your system Download, verify and install plugins Keep plugins up-to-date  Where to Start? Install krew with a straight forward command form the official guide.\nWe have chosen a script to install krew, and it is not a bad thing. The formal reasoning behind this decision was the simplicity of distributing a plugin over using ten different package managers to reach all different platforms. We do not rely on other software package managers because krew itself is a kubectl plugin managed by krew.\nWhen looking at the last line of the install script, it can be observed that krew is a plugin itself: &quot;$KREW&quot; install krew. We call the temporarily downloaded krew to install itself.\nFinally, once you got krew installed, you can install other plugins.\nWe now, to display the capabilities of krew, want to install the ca-cert plugin.\nkubectl plugin install ca-cert   kubectl plugin is the command to call kubectl plugins.   install is a command that is introduced with krew.\n  Now we have ca-cert installed and can use it with:\nkubectl plugin ca-cert Future  It is essential for a healthy ecosystem to be versatile. That means, we can&rsquo;t only have a single centralized index (where plugin metadata is stored). We need to implement a model that allows multiple index repositories. That allows users to install plugins which are not necessarily in the &ldquo;main&rdquo; default index. Think of it as a PPA or a &ldquo;brew tap&rdquo;. Another idea is to sync plugins with the cluster. That means whenever you connect to a kubernetes cluster the set of local plugins will adjust to the set of plugins defined in the cluster. The plugin spec was designed to be a kubernetes object. This will allow for such ideas. However, it is still a long way to implement this. We are currently trying to get krew into kubernetes as a constant part of kubectl. We have created a Kubernetes Enhancement Proposal (KEP), which aims to merge krew into kubectl. This means that you&rsquo;ll never have to install krew manually.  TL;DR  Krew is not standalone, integrates into kubectl We have an excellent tutorial, check it out! We need more plugins; the guide comes soon!  ","permalink":"https:\/\/lbb.sh\/posts\/krew-intro\/","summary":"This summer I had an internship at Google, and it was awesome! I worked on an open source project, which is now called &ldquo;krew&rdquo; a kubectl plugin manager. I use krew to discover and install new plugins to my system. You should also start to use a kubectl plugin manager because manual installation of plugins is annoying.\n A small screencast demo of krew\n  Kubectl Plugins! If you had asked me 4 months before I wrote this, I would not be able to say if kubectl plugins exist.","title":"Krew the Kubectl Plugin Manager"},{"content":"This is a cross port from the mirgaeOS Blog. We have been on a hack retreat in Morocco to work on an OCaml unikernel Operating System. Go to the official mirageOS Blog to read more amazing articles.\nOriginal Post \u201cLet\u2019s make operating systems great again\u201d \u2013 with this in mind we started our trip to Marrakech. But first things first: we are two first year computer science students from Berlin with not a whole lot of knowledge of hypervisors, operating systems or functional programming. This at first seems like a problem\u2026 and it turned out it was :). The plan was set, let\u2019s learn this amazing language called OCaml and start hacking on some code, right? But, as you could imagine, it turned out to be different yet even better experience. When we arrived, we received a warm welcome in Marrakech from very motivated people who were happy to teach us new things from their areas of expertise. We wanted to share some of our valuable knowledge as well, so we taught some people how to play Cambio, our favourite card game, and it spread like wildfire (almost everyone was playing it in the second evening). We\u2019re glad that we managed to set back productivity in such a fun way. ;P\nBack to what we came to Morocco for: as any programming language, OCaml seems to provide its special blend of build system challenges.\u00a0Rudi\u00a0was kind enough to help us navigate the labyrinth of distribution packages, opam, and ocamlfind with great patience and it took us only two days to get it almost right.\nFinally having a working installation, we got started by helping\u00a0Michele\u00a0with his\u00a0ocaml-acme\u00a0package, a client for Let&rsquo;s Encrypt (and other services implementing the protocol). An easy to use and integrate client seemed like one feature that could provide a boost to unikernel adoption and it looked like a good match for us as OCaml beginners since there are many implementations in other programming languages that we could refer to. After three days we finally made our first Open Source OCaml contributions to this MirageOS-related project by implementing the dns-01 challenge.\nHacking away on OCaml code of course wasn\u2019t the only thing we did in Marrakech: we climbed the Atlas mountains to see the seven magic waterfalls (little disclaimer: there are only four). It was not a really productive day but great for building up the spirit which makes the community so unique and special. Seeing camels might also helped a little bit. ;)\nOne of the most enjoyable things that the retreat provided was the chance for participants to share knowledge through presentations which lead to very interesting conversations like after\u00a0Amir\u2019s\u00a0presentation when some artists asked about sense of life and computer systems (by the way, one question is already solved and it is \u201942\u2019). We were also very impressed by the power and expressiveness of functional languages which\u00a0Sprios\u00a0demonstrated in his parser combinator\u00a0Angstrom.\nThank you to everyone involved for giving us the experience of an early \u2018enlightenment\u2019 about functional programming as first year students and the engaging discussions with so many amazing people! We sure learned a lot and will continue working with OCaml and MirageOS whenever possible.\nHope to see all of you again next time!\n","permalink":"https:\/\/lbb.sh\/posts\/mirage-os\/","summary":"This is a cross port from the mirgaeOS Blog. We have been on a hack retreat in Morocco to work on an OCaml unikernel Operating System. Go to the official mirageOS Blog to read more amazing articles.\nOriginal Post \u201cLet\u2019s make operating systems great again\u201d \u2013 with this in mind we started our trip to Marrakech. But first things first: we are two first year computer science students from Berlin with not a whole lot of knowledge of hypervisors, operating systems or functional programming.","title":"Mirage OS"},{"content":"","permalink":"https:\/\/lbb.sh\/blog\/","summary":"","title":"Blog"}]