<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>bruck.me</title><link>https://bruck.me/</link><description>Recent content on bruck.me</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 07 Aug 2026 20:00:00 +0000</lastBuildDate><atom:link href="https://bruck.me/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://bruck.me/about/</link><pubDate>Fri, 07 Aug 2026 20:00:00 +0000</pubDate><guid>https://bruck.me/about/</guid><description>&lt;p&gt;&lt;img alt="Kordian Bruck" loading="lazy" src="https://bruck.me/about/kb.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Hi, I&amp;rsquo;m Kordian — an SRE and software engineer based in Munich. This site is where I write about the things I run into building and operating production systems: Kubernetes, CI/CD, infrastructure, and the occasional cat or pizza tangent.&lt;/p&gt;
&lt;p&gt;Since 2015 I&amp;rsquo;ve led &lt;a href="https://github.com/tum-dev"&gt;TUM Dev&lt;/a&gt;, an open-source engineering team at TU Munich, where we build and run &lt;a href="https://github.com/TUM-Dev/gocast"&gt;gocast&lt;/a&gt;, the university&amp;rsquo;s lecture-streaming platform, and &lt;a href="https://github.com/TUM-Dev/navigatum"&gt;NavigaTUM&lt;/a&gt;, a search engine for campus rooms and buildings.&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://bruck.me/privacy-policy/</link><pubDate>Fri, 07 Aug 2026 20:00:00 +0000</pubDate><guid>https://bruck.me/privacy-policy/</guid><description>&lt;p&gt;&lt;em&gt;Last updated: August 2026&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is the personal website and consulting page of Kordian Bruck (&amp;ldquo;I&amp;rdquo;, &amp;ldquo;me&amp;rdquo;), reachable at &lt;a href="mailto:k@bruck.me"&gt;k@bruck.me&lt;/a&gt;. This policy explains what happens with your data when you visit bruck.me.&lt;/p&gt;
&lt;h2 id="what-this-site-collects"&gt;What this site collects&lt;/h2&gt;
&lt;p&gt;This site does not use cookies, does not run advertising, and does not require an account to read anything on it. No personal data is collected automatically beyond what your browser or hosting infrastructure sends as part of normal web traffic (e.g. IP address in server logs), which is not linked to any identity.&lt;/p&gt;</description></item><item><title>Consulting</title><link>https://bruck.me/consulting/</link><pubDate>Wed, 12 Feb 2025 09:41:07 +0000</pubDate><guid>https://bruck.me/consulting/</guid><description/></item><item><title>Pinning SSL Certs with cURL from PHP</title><link>https://bruck.me/2021/04/18/pinning-ssl-certs-with-curl-from-php/</link><pubDate>Sun, 18 Apr 2021 17:41:56 +0000</pubDate><guid>https://bruck.me/2021/04/18/pinning-ssl-certs-with-curl-from-php/</guid><description>&lt;p class="wp-block-paragraph"&gt;
I wanted to do some REST client stuff in PHP with cURL today. It has the neat &lt;em&gt;&lt;a href="https://curl.se/libcurl/c/CURLOPT_PINNEDPUBLICKEY.html#PUBLIC"&gt;CURLOPT_PINNEDPUBLICKEY&lt;/a&gt;&lt;/em&gt; option that one can use to set the certificate fingerprint. &lt;a href="https://stackoverflow.com/a/39561602"&gt;Unfortunately its a bit cumbersome&lt;/a&gt;, as one needs to enter the fingerprint in base64, instead of just the format the browser displays if you look at the cert directly (e.g.: 529728d7c43746c0bb02ac4a4c3bffb7028ac1591ecb08b6a0721a660aa1d3ce).
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
Luckily we can just get the correct fingerprint format using this one command:
&lt;/p&gt;</description></item><item><title>Silos and Knowledge Sharing</title><link>https://bruck.me/2020/09/26/silos-and-knowledge-sharing/</link><pubDate>Sat, 26 Sep 2020 21:05:01 +0000</pubDate><guid>https://bruck.me/2020/09/26/silos-and-knowledge-sharing/</guid><description>&lt;p class="wp-block-paragraph"&gt;
&lt;em&gt;This blog post is a reworked chapter from my master thesis with the title &amp;#8220;Site Reliability Engineering in a Transformative IT Landscape &amp;#8211; Transitioning from Monolith to Microservices&amp;#8221; at TUM submitted on the 15.12.2018. I wrote this thesis while working as an SRE at eGym in Munich, observing their technological transformation and how they applied SRE in practice.&lt;/em&gt;
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
Introducing a microservice landscape to an existing system is not only a challenge on the technical side. It especially requires a change of mind in the way our development processes works.
&lt;/p&gt;</description></item><item><title>Why software matters</title><link>https://bruck.me/2020/06/21/why-software-matters/</link><pubDate>Sun, 21 Jun 2020 15:31:20 +0000</pubDate><guid>https://bruck.me/2020/06/21/why-software-matters/</guid><description>&lt;p class="wp-block-paragraph"&gt;
Years ago I worked at a consulting company writing software for a German car manufacturer. This project was a multi-year endeavor and had all the bits and pieces in place to become the next generation legacy software that nobody wants to touch. We are talking about a multi-million investment and a 50 person team of engineers, business analysts, architects and managers.
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
We were essentially building a Java EE monolith with a Javascript-backed frontend. Back then, in 2017, Kubernetes was starting to emerge as an interesting option and we experimented around with deployments, but it didn’t affect the architecture decisions too much. We continued to build a humongous monolith and the project was only set to go live after the core functionality had been built.
&lt;/p&gt;</description></item><item><title>RestartOPs</title><link>https://bruck.me/2020/06/21/restartops/</link><pubDate>Sun, 21 Jun 2020 13:11:19 +0000</pubDate><guid>https://bruck.me/2020/06/21/restartops/</guid><description>&lt;p class="wp-block-paragraph"&gt;
This term describes the general operational practice of restarting backend services to overcome system failures. While popular with java deployments, this can be observed with other systems as well.
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
I took the liberty to collect a few gems from the Internet:
&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
&lt;li&gt;
&lt;a href="https://docs.opsmanager.mongodb.com/current/tutorial/restart-deployment/"&gt;Restart One MongoDB Deployment&lt;/a&gt; (or &lt;a href="https://docs.opsmanager.mongodb.com/current/tutorial/start-and-stop-application/"&gt;also the manager app&lt;/a&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.datastax.com/en/opscenter/6.5/opsc/reference/opscStartStopOpsc.html"&gt;DataStax OpsCenter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/support/knowledgecenter/SSGSG7_7.1.0/com.ibm.itsm.srv.doc/t_oc_srv_web_server_startstop.html"&gt;IBM Tivoli Storage Manager&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.oracle.com/cd/E27363_01/doc.121/e25143/apx_command_line_admin.htm#OPCAG609"&gt;Oracle&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://help.sap.com/saphelp_nwes72/helpdata/en/48/217444c3a34e6fe10000000a42189c/content.htm?no_cache=true"&gt;SAP&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="wp-block-paragraph"&gt;
With all the above documentation, this obviously shows to be a widely spread industry practice that everyone should absolutely adopt right away! RestartOPs allows you to save precious time spent on debugging applications and understanding the actual problem that one is seeing.
&lt;/p&gt;</description></item><item><title>The simplest CI setup ever</title><link>https://bruck.me/2020/05/01/the-simplest-ci-cd-setup-ever/</link><pubDate>Fri, 01 May 2020 23:25:44 +0000</pubDate><guid>https://bruck.me/2020/05/01/the-simplest-ci-cd-setup-ever/</guid><description>&lt;p class="wp-block-paragraph"&gt;
This weekend I started to go back and look at a few projects of mine. A few years ago I setup most of those using a mix of Travis CI for building/testing, docker hub for image building/hosting and then somehow wiring this all together with a custom stack. Today this feels outdated and overly complex. As an &lt;a href="https://landing.google.com/sre/workbook/chapters/simplicity/"&gt;SRE I&amp;#8217;m allergic to complexity&lt;/a&gt;. So I spent a few hours checking out the new Github &lt;a href="https://github.com/features/packages"&gt;packages&lt;/a&gt; and &lt;a href="https://github.com/features/actions"&gt;actions&lt;/a&gt;.
&lt;/p&gt;</description></item><item><title>Operating your own mail server is a pain</title><link>https://bruck.me/2020/04/05/why-operating-your-own-mail-server-is-a-big-operational-pain/</link><pubDate>Sun, 05 Apr 2020 15:17:59 +0000</pubDate><guid>https://bruck.me/2020/04/05/why-operating-your-own-mail-server-is-a-big-operational-pain/</guid><description>&lt;p class="wp-block-paragraph"&gt;
&lt;strong&gt;tl:dr;&lt;/strong&gt; I&amp;#8217;m going to tell you all the reasons you shouldn&amp;#8217;t run your own mail server.
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
I actually wanted to name this post &amp;#8220;Thinking about running your own mail server? Here is why this is a bad idea&amp;#8221; but I&amp;#8217;d like for everyone to opt out of click bait titles. I stopped clicking on anything that sounds like click bait (Youtube, Twitter, News) as my brain got trained to see those as low quality time stealers.
&lt;/p&gt;</description></item><item><title>Where it all started – goodbye Cybton</title><link>https://bruck.me/2019/06/13/where-it-all-started-goodbye-cybton/</link><pubDate>Thu, 13 Jun 2019 00:49:20 +0000</pubDate><guid>https://bruck.me/2019/06/13/where-it-all-started-goodbye-cybton/</guid><description>&lt;p class="wp-block-paragraph"&gt;
In my &lt;a href="https://bruck.me/2019/05/02/chase-your-dreams/"&gt;previous post&lt;/a&gt; I&amp;#8217;ve mentioned my entry to programming was first via C++ and afterwards I wandered of into the wide fields of web development. A fundamental problem back then for me was that I did not have any money and that properly running a website required you to have a static IP with a Webserver that ideally could not only deliver static content like HTML, CSS and images, but also included PHP to have dynamic content.
&lt;/p&gt;</description></item><item><title>Kubernetes: proxy requests without additional pods</title><link>https://bruck.me/2018/10/04/kubernetes-proxy-requests-without-additional-pods/</link><pubDate>Thu, 04 Oct 2018 13:12:10 +0000</pubDate><guid>https://bruck.me/2018/10/04/kubernetes-proxy-requests-without-additional-pods/</guid><description>&lt;p class="wp-block-paragraph"&gt;
Sometimes you need to provide a legacy access to various downloads or proxy some requests to a different endpoint, that might not be running in your cluster. One can natively redirect such requests with having to add additional deployments / containers to your Kubernetes cluster.
&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;
There is a special type of Kubernete&amp;#8217;s service object that simply points any traffic to that external DNS name. This &lt;a href="https://github.com/kubernetes/website/issues/5822"&gt;isn&amp;#8217;t really document&lt;/a&gt; all too well but eventually you will find enough issues and pointers to frankenstein a solution together. For anybody else looking on how to do this correctly, here is run down with nginx-ingress-controller:0.19.0 that worked for me.
&lt;/p&gt;</description></item><item><title>Kubernetes: get service account secret for dashboard login</title><link>https://bruck.me/2018/04/09/kubernetes-get-service-account-secret-for-dashboard-login/</link><pubDate>Mon, 09 Apr 2018 22:27:27 +0000</pubDate><guid>https://bruck.me/2018/04/09/kubernetes-get-service-account-secret-for-dashboard-login/</guid><description>&lt;p&gt;To login to the Kubernetes dashboard, you need a token. This token can be retrieved with the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl -n kube-system describe secret &lt;span class="k"&gt;$(&lt;/span&gt;kubectl -n kube-system get secret &lt;span class="p"&gt;|&lt;/span&gt; grep &amp;lt;admin-user&amp;gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>ZSH shortcut: quickly commit using a function</title><link>https://bruck.me/2018/04/07/zsh-shortcut-quickly-commit-using-a-function/</link><pubDate>Sat, 07 Apr 2018 14:52:42 +0000</pubDate><guid>https://bruck.me/2018/04/07/zsh-shortcut-quickly-commit-using-a-function/</guid><description>&lt;p&gt;I have many private git repos to manage all the configuration files, ansible playbooks, source code and other stuff you would want to version. Most of them are just for me to view and often I want to quickly ‘save’ my current process by creating a commit I can go back to.&lt;/p&gt;
&lt;p&gt;I just recently switched to zsh after years of using bash – never had I thought that my life would change that much. So many neat little things that are really helpful and make my life easier. Themes, plugins and the oh so amazing &lt;a href="https://github.com/robbyrussell/oh-my-zsh"&gt;oh-my-zsh&lt;/a&gt; really make it a pleasure to do stuff on the console. (I always have to bite my tongue once I SSH into a server that only has &lt;em&gt;sh&lt;/em&gt; or &lt;em&gt;bash&lt;/em&gt; now.&lt;/p&gt;</description></item><item><title>The road to Kubernetes: hosting your own cluster on VMs</title><link>https://bruck.me/2018/04/06/the-road-to-kubernetes/</link><pubDate>Fri, 06 Apr 2018 22:45:00 +0000</pubDate><guid>https://bruck.me/2018/04/06/the-road-to-kubernetes/</guid><description>&lt;p&gt;I finally wanted to setup my own &lt;a href="https://kubernetes.io"&gt;kubernetes cluster&lt;/a&gt; as everyone I talk to, said its the hottest shit.&lt;/p&gt;
&lt;p&gt;I’m using three VMs, hosted at &lt;a href="https://netcup.de"&gt;Netcup&lt;/a&gt; running the latest Debian 9 Stretch build. I’ve installed most basic tools for me and also already set up docker using this amazing &lt;a href="https://github.com/nickjj/ansible-docker"&gt;ansible role&lt;/a&gt;. &lt;strong&gt;Make sure to disable any swap you have configured – kubelet will not start otherwise.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://kubernetes.io/docs/setup/independent/install-kubeadm/"&gt;documentation&lt;/a&gt; on how to install things is pretty good, but I’ve missed some details, that I banged my head on, so I will copy most snippets over for future reference. Keep in mind, that this might have already changed and is no longer working at the time you read this.&lt;/p&gt;</description></item><item><title>Termina(l)te your way in style</title><link>https://bruck.me/2018/04/06/terminate-your-way-in-style/</link><pubDate>Fri, 06 Apr 2018 19:42:45 +0000</pubDate><guid>https://bruck.me/2018/04/06/terminate-your-way-in-style/</guid><description>&lt;p&gt;Usually I love to use &lt;a href="https://github.com/Guake/guake"&gt;guake&lt;/a&gt; as my terminal in gnome, as it quickly hides using the &lt;em&gt;F12&lt;/em&gt; key and you always have your terminal in reach.&lt;/p&gt;
&lt;p&gt;When doing more server heavy tasks, I often end up having several tabs in guake which tends to be messy. In those cases I love to use &lt;a href="https://wiki.archlinux.org/index.php/Terminator"&gt;Terminator&lt;/a&gt; – the ultimate Terminal.&lt;/p&gt;
&lt;p&gt;Quickly installed using the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Debian / Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install terminator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Arch Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S terminator
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then you can use the following keyboard shortcuts to easily spawn new terminals the GUI way, instead of using tmux.&lt;/p&gt;</description></item><item><title>Arch Linux: Touchpad right click no longer working</title><link>https://bruck.me/2018/03/29/arch-linux-touchpad-right-click-no-longer-working/</link><pubDate>Thu, 29 Mar 2018 08:16:18 +0000</pubDate><guid>https://bruck.me/2018/03/29/arch-linux-touchpad-right-click-no-longer-working/</guid><description>&lt;p&gt;I’ve been using Arch on my &lt;a href="https://wiki.archlinux.org/index.php/Dell_XPS_13_(9343)"&gt;XPS 2015 edition&lt;/a&gt; since the very beginning. Not only was the support of the software components newer/better than Dell’s official Ubuntu version for the developer edition, but also I absolutely love the &lt;a href="https://www.reddit.com/r/linuxmasterrace/comments/4axaez/is_windows_10_a_rolling_release/"&gt;rolling release before it was cool.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So as we are bleeding edge, sometimes things break. Arch moved over to wayland some time ago, but like two days ago my touchpad’s right &amp;amp; middle click stopped working. Quick &lt;a href="https://www.reddit.com/r/archlinux/comments/543jdp/touchpad_unable_to_rightclick_gnome_wayland/"&gt;google search&lt;/a&gt; later revealed, that my gnome settings had the following option set to ‘fingers’. That didn’t work as my XPS has ‘areas’ – so switching it over with this simple command, fixed things for me.&lt;/p&gt;</description></item><item><title>Easily add your Github SSH Keys to any Server or Docker Image</title><link>https://bruck.me/2018/03/24/easily-add-your-github-ssh-keys-to-any-server-or-docker-image/</link><pubDate>Sat, 24 Mar 2018 18:12:11 +0000</pubDate><guid>https://bruck.me/2018/03/24/easily-add-your-github-ssh-keys-to-any-server-or-docker-image/</guid><description>&lt;p&gt;The default way to copy your ssh key(s) to a remote server is to use the _&lt;a href="https://www.ssh.com/ssh/copy-id"&gt;ssh-copy-id&lt;/a&gt; _command. This will create a secure connection to the remote server over SSH and then check if the user exists, create the folder&amp;amp;files if needed and add your keys. Works, Easy, Simple.&lt;/p&gt;
&lt;p&gt;My problem is, that often I’m already in the shell and I logged in with some password combination, that I would need to enter a second time to copy my ids. Also I don’t always have all my keys on one machine. As I often get asked by my colleagues, what my SSH keys are, there is a nifty trick you can do, instead of sending them over via E-Mail.&lt;/p&gt;</description></item><item><title>Github requires referer header field to login</title><link>https://bruck.me/2017/02/22/cannot-login-to-github/</link><pubDate>Wed, 22 Feb 2017 18:33:00 +0000</pubDate><guid>https://bruck.me/2017/02/22/cannot-login-to-github/</guid><description>&lt;p&gt;So I’ve had this happen for some time now and could not determine the perpetrator as it was happening not really too often. From time to time I would encounter a error when trying to Login to Github:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Oops! Something went wrong. Please try again later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In many cases this was related to &lt;a href="https://github.com/FreeCodeCamp/FreeCodeCamp/issues/7560"&gt;something using oAuth&lt;/a&gt; but not in mine. I simply wanted to login to Github as usual.&lt;/p&gt;
&lt;p&gt;So after some trial and error, I’ve noticed that disabling the “&lt;a href="https://chrome.google.com/webstore/detail/referer-control/hnkcfpcejkafcihlgbojoidoihckciin?utm_source=chrome-app-launcher-info-dialog"&gt;Referer Control&lt;/a&gt;” extension in chrome or chromium would solve the issue. My guess is they simply use that to prevent XSRF attacks.&lt;/p&gt;</description></item><item><title>LetsEncrypt now used everywhere</title><link>https://bruck.me/2016/06/22/letsencrypt-now-used-everywhere/</link><pubDate>Wed, 22 Jun 2016 00:46:00 +0000</pubDate><guid>https://bruck.me/2016/06/22/letsencrypt-now-used-everywhere/</guid><description>&lt;p&gt;So today I decided to move all my certificates from StartSSL to LetsEncrypt. Not only is StartSSL really a bad CA with &lt;a href="http://www.securityweek.com/startssl-flaw-allowed-attackers-obtain-ssl-cert-any-domain"&gt;recent&lt;/a&gt; &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=994033"&gt;problems&lt;/a&gt;, but also they limit you with several obstacles that just don’t make any sense. They really just want you to sign up for one of their “great” extended validation thingys. Over the last couple months they have really improved the web interface but still this is not enough to deal with today’s challenges of delivering secure connections to users easily. Their new APIs and StartEncrypt service are merely a late effort, trying to outbid LE with a worse service. Not worth the time or effort.&lt;/p&gt;</description></item><item><title>“libGL error: unable to load driver: i965_dri.so” fix</title><link>https://bruck.me/2016/06/10/libgl-error-unable-to-load-driver-i965_dri-so-fix/</link><pubDate>Fri, 10 Jun 2016 09:49:49 +0000</pubDate><guid>https://bruck.me/2016/06/10/libgl-error-unable-to-load-driver-i965_dri-so-fix/</guid><description>&lt;p&gt;So I actually rarely encounter any problems with my Arch Linux, but sometimes they just want to see the world burn. Apparently after updating the mesa driver, so library got lost.&lt;/p&gt;
&lt;p&gt;Easy fix:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Arch Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6&lt;span class="o"&gt;{&lt;/span&gt;,.bak&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6.0.18&lt;span class="o"&gt;{&lt;/span&gt;,.bak&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -s /usr/lib/libstdc++.so ~/Android/Sdk/tools/lib64/libstdc++/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Thanks to &lt;a href="http://en.proft.me/2016/05/13/fix-libgl-error-unable-load-driver-i965_driso/"&gt;proft.me&lt;/a&gt; for providing this!&lt;/p&gt;</description></item><item><title>Featured on Codementor – 25 PHP Interview Questions</title><link>https://bruck.me/2016/03/01/featured-on-codementor-25-php-interview-questions/</link><pubDate>Tue, 01 Mar 2016 04:33:43 +0000</pubDate><guid>https://bruck.me/2016/03/01/featured-on-codementor-25-php-interview-questions/</guid><description>&lt;p&gt;I’m glad to be part of the amazing community at &lt;a href="http://codementor.io"&gt;codementor.io&lt;/a&gt;. In the past years I’ve been able to talk and help many different people with a range of problems. Often some hints and good advice was enough to point them in the right direction and I really enjoy teaching other people.&lt;/p&gt;
&lt;p&gt;Codementor recently approached me and asked me if I could contribute some questions from my experience in the last years to &lt;a href="https://www.codementor.io/php/tutorial/php-interview-questions-sample-answers"&gt;their blog post “25 PHP Interview Questions”&lt;/a&gt;. I’m happy they found my suggestions useful and featured me in that article! Hope it helps some developers that are just getting to know the world of PHP and all its hiccups.&lt;/p&gt;</description></item><item><title>Properly setup proguard for an Android project</title><link>https://bruck.me/2016/01/05/properly-setup-proguard-for-an-android-project/</link><pubDate>Tue, 05 Jan 2016 16:15:25 +0000</pubDate><guid>https://bruck.me/2016/01/05/properly-setup-proguard-for-an-android-project/</guid><description>&lt;p&gt;When dealing with an Android project you want to use Proguard to minify, shrink and possibly even obfuscate the code. The gains from this are huge and many smart minds have put a lot of thought into Proguard. We encountered that the &lt;a href="https://github.com/TCA-Team/TumCampusApp/"&gt;TUM Campus App&lt;/a&gt; shrinked from 20 Megabytes to just 9 Megabytes with all the optimization in place – huge savings if you deploy it to 10k+ clients!&lt;/p&gt;
&lt;p&gt;Really if you are not using this in your project currently you must be insane!&lt;/p&gt;</description></item><item><title>Git command of the day: git remote prune</title><link>https://bruck.me/2016/01/04/git-command-of-the-day-git-remote-prune/</link><pubDate>Mon, 04 Jan 2016 17:04:04 +0000</pubDate><guid>https://bruck.me/2016/01/04/git-command-of-the-day-git-remote-prune/</guid><description>&lt;p&gt;In this series of posts I’ll document useful git commands ready to copy&amp;amp;paste which nobody knows by heart but you need once in a while. Today:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote prune &amp;lt;name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From the docs:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;prune&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Deletes all stale remote-tracking branches under &lt;name&gt;. These stale branches have already been removed from the remote repository referenced by &lt;name&gt;, but are still locally available in “remotes/&lt;name&gt;”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="paragraph"&gt;
&lt;blockquote&gt;
&lt;p&gt;
    With &lt;code&gt;--dry-run&lt;/code&gt; option, report what branches will be pruned, but do not actually prune them.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Very useful when working with Github and you just merged a PR then usually you also delete the branch on the remote immediately after. This does not however delete the branch from your local repository and over time it can get messy. With this simple command you delete all local references tracking upstream branches which were deleted on the server. If your remote is called &lt;em&gt;origin&lt;/em&gt; then just type enter it like so::
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote prune origin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>