<?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>Posts on Solutr.com</title>
    <link>https://solutr.com/posts/</link>
    <description>Recent content in Posts on Solutr.com</description>
    <image>
      <title>Solutr.com</title>
      <url>https://solutr.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://solutr.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.147.9</generator>
    <language>en</language>
    <lastBuildDate>Sun, 05 Apr 2026 12:03:04 +0200</lastBuildDate>
    <atom:link href="https://solutr.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Did It! Switching From 1Password to heylogin</title>
      <link>https://solutr.com/posts/2026-04-05-did-it-switched-from-1password-to-heylogin/</link>
      <pubDate>Sun, 05 Apr 2026 12:03:04 +0200</pubDate>
      <guid>https://solutr.com/posts/2026-04-05-did-it-switched-from-1password-to-heylogin/</guid>
      <description>&lt;p&gt;The switch was a long time coming. I&amp;rsquo;m going to be honest here, 1Password has a lot of good things going for it, you can integrate MFA,
encryption keys for SSH, GPG, it integrates with &lt;a href=&#34;https://haveibeenpwned.com/&#34;&gt;HIBP&lt;/a&gt;, it syncs all across any of your devices, it has
a fantastic UX, it is &lt;a href=&#34;https://support.1password.com/security-assessments/&#34;&gt;well certified securitywise&lt;/a&gt;, and for what it does it is pretty good.&lt;/p&gt;
&lt;p&gt;However it costs money (even for private use) and I want to reduce my footprint with US based cloud offers. I know this might sound a bit ironic given
this site&amp;rsquo;s &lt;a href=&#34;https://docs.gitlab.com/user/project/pages/&#34;&gt;hosting provider&lt;/a&gt;, but I digress.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Safety Warning by Simon Wardley and AI</title>
      <link>https://solutr.com/posts/2026-02-01-ai-safety-warning-by-simon-wardly-and-ai/</link>
      <pubDate>Sun, 01 Feb 2026 15:01:40 +0100</pubDate>
      <guid>https://solutr.com/posts/2026-02-01-ai-safety-warning-by-simon-wardly-and-ai/</guid>
      <description>&lt;p&gt;Here I share a &lt;a href=&#34;https://www.linkedin.com/posts/simonwardley_having-used-conversations-with-various-ais-activity-7423563843613650944-D_Rr?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAAB1CpoB81v1M4FH3rksrgvcoqEEnFEHhos&#34;&gt;Linked.in post&lt;/a&gt;
by Simon Wardley in full and added a little Markdown formatting.&lt;/p&gt;
&lt;p&gt;I do this to be able to show it to persons that do not consider Linkedin a platform worth having an account on (&lt;em&gt;and giving the platform several bits of personal information along the way&lt;/em&gt;).&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Having used conversations with various AIs to create more harmful advice, I then asked each of the AIs to use their conversation to create a suitable warning that should occur before any discussion starts. The one from Claude is not bad.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About the Increasing Wealth Inequality</title>
      <link>https://solutr.com/posts/2025-06-30-about-the-increasing-wealth-inequality/</link>
      <pubDate>Mon, 30 Jun 2025 23:00:55 +0200</pubDate>
      <guid>https://solutr.com/posts/2025-06-30-about-the-increasing-wealth-inequality/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve had that interesting discussion again. The discussion almost every time starts with something along the lines of &lt;a href=&#34;https://www.opor-streetwar.com/Doenermarx&#34;&gt;&amp;ldquo;Eat the rich!&amp;rdquo;&lt;/a&gt; and then people basically start to ask &amp;ldquo;Who do we eat exactly?&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;I personally would start with the closest person to you, that earns your yearly salary from passive income within a day.
If you can&amp;rsquo;t find a person within a 300 mile radius, throw a barbecue for yourself (you know, just to get more intel from others, for your friends, not for eating you, please don&amp;rsquo;t do that).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fediverse Global Switch Day on 2025-02-01 and a few thoughts on my expierience entering it</title>
      <link>https://solutr.com/posts/2025-01-21-global-switch-day-on-2025-02-01/</link>
      <pubDate>Fri, 24 Jan 2025 15:56:01 +0100</pubDate>
      <guid>https://solutr.com/posts/2025-01-21-global-switch-day-on-2025-02-01/</guid>
      <description>&lt;p&gt;I just read an a &lt;a href=&#34;https://mastodon.social/@sylv_a/113866786740212465&#34;&gt;post on Mastodon with some welcome illustrations to promote the Global Switch Day on the first of Februrary 2025&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are a lot of &lt;a href=&#34;https://en.wikipedia.org/wiki/Fediverse&#34;&gt;Fediverse&lt;/a&gt; based alternatives for services that are by now heavily affected by &lt;a href=&#34;https://en.wikipedia.org/wiki/Enshittification&#34;&gt;enshittification&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is a list of the replacable commercial platforms with their Fediverse alternative and (if you are interested), where I live on them.&lt;/p&gt;
&lt;hr&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Plaform&lt;/th&gt;
          &lt;th&gt;Fediverse Alternative&lt;/th&gt;
          &lt;th&gt;My Home&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;X/twitter/bsky/threads&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://joinmastodon.org/&#34;&gt;Mastodon&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://23.social/@maub&#34;&gt;@maub@23.social&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;instagram&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://pixelfed.org/&#34;&gt;Pixelfed&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;@maub@pixey.org (barely used)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;reddit&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://join-lemmy.org/&#34;&gt;Lemmy&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://slrpnk.net/u/maub&#34;&gt;@maub@slrpnk.net&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Facebook&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://diasporafoundation.org/&#34;&gt;Diaspora&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;mailto:jakap@nerdpol.ch&#34;&gt;jakap@nerdpol.ch&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;WhatsApp&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://signal.org/&#34;&gt;Signal&lt;/a&gt;/&lt;a href=&#34;https://element.io/&#34;&gt;Element&lt;/a&gt;(*)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://signal.me/#eu/I-ZUM3M1RmHWm5CmMO-5KXX-lFP7ltdNWXttTb6oPgbmk0t432tAm6IXgtOe9MiQ&#34;&gt;maub.23&lt;/a&gt; / @maub:ccc-ffm.de&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;(*) &lt;em&gt;neither of those is officialy part of the Fediverse, but both offer reasonably secure e2e encrypted communication with no corporate interference to your privacy.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dunn&#39;s Law of Information</title>
      <link>https://solutr.com/posts/2024-09-02-dunns-law-of-information/</link>
      <pubDate>Mon, 02 Sep 2024 16:29:19 +0200</pubDate>
      <guid>https://solutr.com/posts/2024-09-02-dunns-law-of-information/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s the law in full rescued from its &lt;a href=&#34;https://web.archive.org/web/20180111085835/http://linux-ha.org/DunnsLaw&#34;&gt;original wiki page&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;What you don&amp;rsquo;t know, you don&amp;rsquo;t know - and you can&amp;rsquo;t make it up&amp;rdquo;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This law is attributed to former Raytheon vice president Bruce Dunn. Although Bruce used it in the context of evaluation of evidence for scripture, it is highly applicable in the case of cluster failure where all that is observed is inability to communicate.&lt;/p&gt;
&lt;p&gt;Because in this case, one knows very little - except that we can&amp;rsquo;t communicate with the given node. Nevertheless, the temptation is great to pretend to greater knowledge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing with Jan.ai</title>
      <link>https://solutr.com/posts/2024-03-09-playing-with-jan-ai/</link>
      <pubDate>Sat, 09 Mar 2024 15:19:52 +0100</pubDate>
      <guid>https://solutr.com/posts/2024-03-09-playing-with-jan-ai/</guid>
      <description>&lt;p&gt;It was about two weeks ago when one of my coworkers asked me, if I was already replaced by AI. I was baffled.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://jan.ai/&#34;&gt;Jan.ai&lt;/a&gt; looks quite like me, it is friendly, it uses the waving hand emoji (👋) as a logo and it genuinely seems a great way of experimenting with a lot of different open source LLM&amp;rsquo;s. So i tried.&lt;/p&gt;
&lt;p&gt;I have used this as a soundtrack:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://youtu.be/FG1NrQYXjLU?si=N3a5pdohjqLQ4rNo&#34;&gt;&lt;img alt=&#34;Billy Idol - Dancing with Myself&#34; loading=&#34;lazy&#34; src=&#34;https://img.youtube.com/vi/FG1NrQYXjLU/default.jpg&#34;&gt;&lt;/a&gt;
&lt;em&gt;Billy Idol - Dancing With Myself (Youtube)&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>What it might cost to run a service like Twitch.tv</title>
      <link>https://solutr.com/posts/2024-02-11-twitch-server-costs-approximation/</link>
      <pubDate>Sun, 11 Feb 2024 00:10:42 +0100</pubDate>
      <guid>https://solutr.com/posts/2024-02-11-twitch-server-costs-approximation/</guid>
      <description>&lt;p&gt;Today I watched a German reaction video revolving around several unfortunate developments in the gaming industry.&lt;/p&gt;
&lt;p&gt;Whilst a lot of absolutely valid points were made, one of them was &amp;ldquo;the server costs of twitch can&amp;rsquo;t be that relevant to their business&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Now, I&amp;rsquo;m working in cloud infrastructure and I know, that live video streaming is one of the most expensive digital services you can offer.&lt;/p&gt;
&lt;p&gt;So I did a bit of research and a few calculations. On my day off. Because I&amp;rsquo;m an Idiot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Imposter Syndrome Is Only Toxic to Yourself</title>
      <link>https://solutr.com/posts/2023-11-14-imposter-syndrom-is-only-toxic-to-yourself/</link>
      <pubDate>Tue, 14 Nov 2023 21:04:21 +0100</pubDate>
      <guid>https://solutr.com/posts/2023-11-14-imposter-syndrom-is-only-toxic-to-yourself/</guid>
      <description>&lt;p&gt;I have just watched a &lt;a href=&#34;https://youtu.be/LMyKLNeA8SY?si=coWH-afE7kDeTMBL&#34;&gt;video about a narcissist&lt;/a&gt; made by somebody exposing that person together with the person
the narcissist copied and then had the audacity to hint to her followers on multiple occasions that it is the other way around.&lt;/p&gt;
&lt;p&gt;The thing I&amp;rsquo;m taking issue with is not anything the creators in the video are talking about.
It&amp;rsquo;s one of those &lt;a href=&#34;https://xkcd.com/386/&#34;&gt;stupid duty calls moments&lt;/a&gt;. It is that &lt;a href=&#34;https://twitter.com/nerdcity&#34;&gt;@nerdcity&lt;/a&gt; at one point in that video - very likely on accident - says the word &amp;lsquo;imposter syndrome&amp;rsquo; to describe the behaviour of the narcissistic person. That triggered me in particular, because I identify as a person suffering from the imposter syndrome.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I did a few things again.</title>
      <link>https://solutr.com/posts/2023-08-28-i-did-a-thing/</link>
      <pubDate>Mon, 28 Aug 2023 19:18:23 +0200</pubDate>
      <guid>https://solutr.com/posts/2023-08-28-i-did-a-thing/</guid>
      <description>&lt;p&gt;So, a few years ago I made a small flask-app, just to keep myself entertained.
This was a few years after I did another minimal webapp in React. Since I just migrated
to a new set of servers I thought, I fluff those apps a bit. Bring &lt;a href=&#34;https://www.w3schools.com/w3css/w3css_color_themes.asp&#34;&gt;some color&lt;/a&gt; into them, upgrade to the latest versions, fix a few bugs and so on.&lt;/p&gt;
&lt;p&gt;Now I&amp;rsquo;ve got a set of interesting applications, all managed in the same flask-container, delivering some features
that you might find useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>File Permissions/Ownership Bug in Docker 20.10.25-0ubuntu1</title>
      <link>https://solutr.com/posts/2023-08-20-docker-permission-issues-with-v20.10.25-0ubuntu1/</link>
      <pubDate>Sun, 20 Aug 2023 01:35:07 +0200</pubDate>
      <guid>https://solutr.com/posts/2023-08-20-docker-permission-issues-with-v20.10.25-0ubuntu1/</guid>
      <description>&lt;p&gt;&lt;strong&gt;UPDATE 2023-08-28&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The bug is now fixed, you only need to update to the newest version of docker on affected systems!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ORIGINAL TEXT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yesterday night I have tried to build a container running a python-application as non-root user and I stumbled onto a bug currently tracked as &lt;a href=&#34;https://bugs.launchpad.net/ubuntu/+source/docker.io-app/+bug/2029523&#34;&gt;#2029523&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Example Dockerfile:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Dockerfile&#34; data-lang=&#34;Dockerfile&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; alpine:latest&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ENV&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;BUSTCACHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;RUN&lt;/span&gt; adduser -S -D -h /home/test &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ls -al /home/test&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;WORKDIR&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; /home/test&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;COPY&lt;/span&gt; --chown&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;test:nogroup foo.txt foo.txt&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USER&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; test&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;RUN&lt;/span&gt; whoami &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ls -al . &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; touch bar.txt &lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The file &lt;code&gt;foo.txt&lt;/code&gt; is a plain text file containing only the single word &amp;lsquo;bar&amp;rsquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hello World From Hugo</title>
      <link>https://solutr.com/posts/2023-08-18-hello-world-from-hugo/</link>
      <pubDate>Fri, 18 Aug 2023 15:33:08 +0200</pubDate>
      <guid>https://solutr.com/posts/2023-08-18-hello-world-from-hugo/</guid>
      <description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;This is my first post on my new Hugo website. I&amp;rsquo;ve relaunched this old PicoCMS page in favor of probably the most used static generator at least in my corner of the internet.&lt;/p&gt;
&lt;p&gt;I included a few old posts from my &lt;a href=&#34;https://iamnodev.blogspot.com/&#34;&gt;old blogger.com blog called &amp;lsquo;iamnodev&amp;rsquo;&lt;/a&gt;, since I am planning on retiring that one.&lt;/p&gt;
&lt;p&gt;I fiddled a bit with &lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod/&#34;&gt;this theme&lt;/a&gt; in particular to get things going and I am quite pleased with the results.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing certificates with openssl</title>
      <link>https://solutr.com/posts/2019-01-29-testing-certificates-with-openssl/</link>
      <pubDate>Tue, 29 Jan 2019 18:40:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2019-01-29-testing-certificates-with-openssl/</guid>
      <description>&lt;p&gt;Nowadays I have to check ssl-configurations quite often and have to
accomodate a blur of different CA&amp;rsquo;s intermediates and wildcard certs.&lt;/p&gt;
&lt;p&gt;So for the most basic stuff I reccomend taping &lt;a href=&#34;https://twitter.com/b0rk/status/1087524713939722240&#34;&gt;Julia Evan&amp;rsquo;s openssl
cheat sheet&lt;/a&gt;
somewhere in plain view until you can type the commands from it
blindly.&lt;/p&gt;
&lt;p&gt;But in some cases I needed to&amp;hellip;&lt;/p&gt;
&lt;h3 id=&#34;verify-a-certificate-from-your-disk-against-your-systems-ca&#34;&gt;verify a certificate from your disk against your systems CA&lt;/h3&gt;
&lt;p&gt;You download or receive a certificate from somewhere, but before
installing it, you want to see if it really works:&lt;/p&gt;</description>
    </item>
    <item>
      <title>S3 API too slow? xargs to the rescue.</title>
      <link>https://solutr.com/posts/2016-05-13-s3-api-too-slow-xargs-to-the-rescue/</link>
      <pubDate>Fri, 13 May 2016 18:23:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2016-05-13-s3-api-too-slow-xargs-to-the-rescue/</guid>
      <description>&lt;p&gt;My days as a BigData engineer grew darker in the past few days. Now
almost all critical data that our aggregations, partners and customers
want to access is located in a bucket on Amazon&amp;rsquo;s S3. Since that gets
horribly expensive for the vast amounts of data we create on a daily
basis, we lean towards not keeping much more than a month of active
objects in the bucket, to meet our SLA&amp;rsquo;s regarding backup and recovery,
we keep them for about a year in Glacier afterwards.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python3,float and math, what the hell?</title>
      <link>https://solutr.com/posts/2016-03-14-python3-float-and-math-what-the-hell/</link>
      <pubDate>Mon, 14 Mar 2016 11:20:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2016-03-14-python3-float-and-math-what-the-hell/</guid>
      <description>&lt;p&gt;So it was late at night and I was hacking away at my touch-controls for
my &lt;a href=&#34;https://shop.pimoroni.com/products/unicorn-hat&#34;&gt;UnicornHat&lt;/a&gt;. I was
trying to set the brightness in nine steps between 0.1 and 0.9. When all
of a sudden, this happened:&lt;/p&gt;
&lt;div class=&#34;highlight&#34; lineos=&#34;true&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mf&#34;&gt;0.2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mf&#34;&gt;0.30000000000000004&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So according to my internal senses this looked not very precise. But
according to the almighty
&lt;a href=&#34;http://stackoverflow.com/questions/14540143/python-3-float-decimal-points-precision&#34;&gt;Stackoverflow&lt;/a&gt; and
one of my beloved coworkers who can indeed speak ASM fluently, this is
in fact very precise (for a float). Since a float is merely a value,
lets say, close by the one you wished it to be.&lt;/p&gt;</description>
    </item>
    <item>
      <title>When you&#39;re generating queries from resultsets of other queries ...</title>
      <link>https://solutr.com/posts/2015-07-16-when-youre-generating-queries-from-resultsets-of-other-queries/</link>
      <pubDate>Thu, 16 Jul 2015 20:15:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2015-07-16-when-youre-generating-queries-from-resultsets-of-other-queries/</guid>
      <description>&lt;p&gt;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/b6_IZK-1naY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

I just hit a point in an app I am currently developing, where I found
myself generating queries from the resultset of another query.&lt;/p&gt;
&lt;p&gt;Because, what can possibly go wrong, right?&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$selectors&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$query_phase2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SHOW KEYS FROM `&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;table&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;` WHERE Key_name = &amp;#39;PRIMARY&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$query_phase3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;select `&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;field&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;` from `&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;table&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;` where &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$GLOBALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dbconn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$query_phase2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fetch_assoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;array_key_exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Column_name&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;$qextender&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;`&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Column_name&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;` = &amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Column_name&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nx&#34;&gt;array_push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$selectors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$qextender&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$query_phase3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;implode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34; and &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$selectors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$GLOBALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dbconn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$query_phase3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;num_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;$return&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fetch_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nx&#34;&gt;array_push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$return&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;elseif&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;num_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;$return&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;fetch_array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$return&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;danger&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;query failed(&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$GLOBALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dbconn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;errno&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;): &amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$GLOBALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dbconn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>DDoS and Online Gaming</title>
      <link>https://solutr.com/posts/2015-07-10-ddos-and-online-gaming/</link>
      <pubDate>Fri, 10 Jul 2015 10:36:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2015-07-10-ddos-and-online-gaming/</guid>
      <description>&lt;p&gt;I just stumbled across an enormous outcry about another attack by the
&amp;ldquo;LizardSquad&amp;rdquo; against DBG&amp;rsquo;s (former SOE) Games that were allegedly the
outcome of a few angry posts on Twitter by DBG&amp;rsquo;s CEO John Smedley.
(&lt;a href=&#34;http://venturebeat.com/2015/07/09/h1z1-daybreak-games-site-down-a-day-after-ceo-threatened-lizard-squad-cyberattackers/&#34;&gt;Storylink&lt;/a&gt;)&lt;br&gt;
Along with the usual &amp;ldquo;&lt;a href=&#34;https://youtu.be/pFRFRwkDsog&#34;&gt;fixit fixit fixit&lt;/a&gt;&amp;rdquo;
there was also a lot of guesses thrown out &lt;a href=&#34;https://youtu.be/sHgCAG09WzA&#34;&gt;about the size of the
genitals of a 14-year old fin&lt;/a&gt;. What
startled me though is the sheer lack of knowledge when it comes to the
gamers themselves. So please, let me help and explain how this magical
and dangerous DDoS stuff works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The day perl became a bit disgusting or why PHP got the better CGI enviroment</title>
      <link>https://solutr.com/posts/2014-12-30-the-day-perl-became-a-bit-disgusting-or-why-php-got-the-better-cgi-enviroment/</link>
      <pubDate>Tue, 30 Dec 2014 14:10:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2014-12-30-the-day-perl-became-a-bit-disgusting-or-why-php-got-the-better-cgi-enviroment/</guid>
      <description>&lt;p&gt;I just viewed a &lt;a href=&#34;http://media.ccc.de/browse/congress/2014/31c3_-_6243_-_en_-_saal_1_-_201412292200_-_the_perl_jam_exploiting_a_20_year-old_vulnerability_-_netanel_rubin.html#video&#34;&gt;very nice
#31c3&lt;/a&gt;
talk about a well known issue with certain functions within two very
widely used perl-modules (DBI &amp;amp; CGI).&lt;/p&gt;
&lt;p&gt;When I heard the arguments brought to the presenter from the audience
within the Q&amp;amp;A, I thought to myself, well, they&amp;rsquo;re right. All of these
attack vectors are in theory something that could have been prevented by
just flatten arguments (as you always should). Then again, this makes
for a really, really messy programming style that does not come easy if
you were programming any other programming language prior to perl.&lt;br&gt;
Lucky me, I started programming with perl. I think within the third
script I used the first own functions and within my fourth script I
realised that it is probably best for everyone to start all your
functions this way:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing JAVA JDK/JRE on Debian/Ubuntu with ease</title>
      <link>https://solutr.com/posts/2013-08-13-installing-java-jdk-jre-on-debian-ubuntu-with-ease/</link>
      <pubDate>Tue, 13 Aug 2013 11:51:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2013-08-13-installing-java-jdk-jre-on-debian-ubuntu-with-ease/</guid>
      <description>&lt;p&gt;I recently commenced the third installation of JAVA on one of my
Debian-Boxes and  couldn&amp;rsquo;t remember any of the exact commands, had to
google again, ended up with 8 open tabs all saying something different
and so wrote this small bash script to set up all necessary alternatives
with &amp;ldquo;update-alternatives&amp;rdquo; automatically.&lt;/p&gt;
&lt;p&gt;Please note that there has to be either icedtea or openjdk installed to
make all parts of this script work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Truth and Lies about Big Data</title>
      <link>https://solutr.com/posts/2013-04-17-truth-and-lies-about-big-data/</link>
      <pubDate>Wed, 17 Apr 2013 14:59:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2013-04-17-truth-and-lies-about-big-data/</guid>
      <description>&lt;p&gt;I recently got certified with cloudera (CCAH) and found myself the only
one in class who really uses Hadoop. I often stumble upon people trying
to sell Big Data appliances to brand owners &amp;ldquo;to store and monitor their
social network XXX&amp;rdquo; where XXX may be replaced by any word that tickles
or frightens brand owners.&lt;/p&gt;
&lt;p&gt;My personal opinion is, if you are a brand owner or not, doesn&amp;rsquo;t matter,
data matters. And only data generated and maintained within your own
company matters. If you want to throw away lots and lots of money, than
you can start storing data which is freely accessible to anyone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tweeting to my friends in IRC</title>
      <link>https://solutr.com/posts/2013-01-11-tweeting-to-my-friends-in-irc/</link>
      <pubDate>Fri, 11 Jan 2013 22:08:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2013-01-11-tweeting-to-my-friends-in-irc/</guid>
      <description>&lt;p&gt;Just finished a script, that enables me or anyone else who cares to send
tweets directly to a IRC-Channel. The script is powered by the &lt;a href=&#34;http://irssi.org/&#34;&gt;best
IRC-Client ever made&lt;/a&gt;, &lt;a href=&#34;http://www.perl.org/&#34;&gt;perl&lt;/a&gt;,
and
&lt;a href=&#34;http://search.cpan.org/~mmims/Net-Twitter-Lite-0.11002/lib/Net/Twitter/Lite.pm&#34;&gt;Net::Twitter::Lite&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update [2023-08-18]: Nobody should use twitter or perl or irc any more ;)&lt;/li&gt;
&lt;li&gt;Update [2013-06-15]: upgrade to Net::Twitter::Lite::WithAPIv1_1&lt;/li&gt;
&lt;li&gt;Update [2013-01-12]: second update today added the setting &amp;ldquo;_count&amp;rdquo; and some cleanups with vars and setup&lt;/li&gt;
&lt;li&gt;Update [2013-01-12]: drastically reduced the amout of requests to the
API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;P.S.: you can also follow me on twitter, but beware that almost half of
my tweets will be neither about programming nor in english ;-). Follow
&lt;a href=&#34;https://twitter.com/matschundbrei&#34;&gt;@matschundbrei&lt;/a&gt;, if you don&amp;rsquo;t
care!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ease up HTTP-GET with perl&#39;s LWP::UserAgent</title>
      <link>https://solutr.com/posts/2012-12-21-ease-up-http-get-with-perls-lwp-useragent/</link>
      <pubDate>Fri, 21 Dec 2012 16:22:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2012-12-21-ease-up-http-get-with-perls-lwp-useragent/</guid>
      <description>&lt;p&gt;I was just writing a small script for automatizing something via a
REST-API and I had to manually add an authorization to all my
GET-Requests, which really annoyed me. (it was not Realm-sensitive, so I
couldn&amp;rsquo;t set up auth in the UA itself).&lt;/p&gt;
&lt;p&gt;So I wrote this small sub I would like to share:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#getrequests shorthand&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;sub&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;getReq&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;my&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;@_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;my&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$req&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;HTTP::Request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GET&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;$req&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;authorization_basic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;my&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ua&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$req&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;   &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$res&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_success&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;                      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;warn&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$res&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;undef&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All you need to call a HTTP-Base-Auth&amp;rsquo;d site now is:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Journey through the web</title>
      <link>https://solutr.com/posts/2012-10-02-a-journey-through-the-web/</link>
      <pubDate>Tue, 02 Oct 2012 20:46:00 +0200</pubDate>
      <guid>https://solutr.com/posts/2012-10-02-a-journey-through-the-web/</guid>
      <description>&lt;p&gt;Today I do not have very much to do at work. I am not moaning about it,
I would just like to point out that my actual team has a very strict
&amp;ldquo;don&amp;rsquo;t change anything that works before a holiday or the
weekend&amp;rdquo;-policy, this is a very good policy, but it leads to personal
downtimes on fridays and the days before holidays for obvious reasons
that I like to fill with personal development.
So I began learning something about screen and the modelines which are
used in it. I found a comment from someone which was pointing out his
zshrc which one should look up for a funcion namend &amp;ldquo;screen_title&amp;rdquo;. I
immediatly searched the web for his name and zshrc, and the only thing
that came up was &lt;a href=&#34;http://www.lowlevelmanager.com/&#34;&gt;his blog&lt;/a&gt;.
Unfortunately I was sucked in by &lt;a href=&#34;http://www.lowlevelmanager.com/2012/09/lambda-architecture.html&#34;&gt;his latest post&lt;/a&gt;,
pointing out a &lt;a href=&#34;http://de.slideshare.net/nathanmarz/runaway-complexity-in-big-data-and-a-plan-to-stop-it?ref=http://www.lowlevelmanager.com/2012/09/lambda-architecture.html&#34;&gt;presentation on slideshare&lt;/a&gt;
and completly forgot about my intention visiting this site. From this
presentation forked some talks about databases and bigdata and
complexity that I would really like to share.
Let&amp;rsquo;s start at the beginning. My interest for Hadoop as a technology was
mainly generated by a stong powersource, namely the &lt;a href=&#34;http://www.cloudera.com/resource-types/video/&#34;&gt;catalog of videos&lt;/a&gt; over at
Cloudera and a &lt;a href=&#34;http://info.greenplum.com/MAD_Skills_New_Analysis_Practices_Big_Data.html&#34;&gt;whitepaper by Greenplum&lt;/a&gt;
which was pointed out by &lt;a href=&#34;http://www.cloudera.com/resource/hadoop-twitter-dmitriy-ryaboy/&#34;&gt;Dmitriy Ryaboy in his video about Pig at twitter&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating proper XML with Perl</title>
      <link>https://solutr.com/posts/2011-11-22-generating-proper-xml-with-perl/</link>
      <pubDate>Tue, 22 Nov 2011 16:50:00 +0100</pubDate>
      <guid>https://solutr.com/posts/2011-11-22-generating-proper-xml-with-perl/</guid>
      <description>&lt;p&gt;Once upon a time I was asked by one of our javadevelopers if i can send
a csv in proper xml to one of his webservices. Of course I can. As usual
i decided to use perl and Text::CSV to read in the CSV as well as
LWP::UserAgent to send the xml to the (soap-)webservice.&lt;/p&gt;
&lt;p&gt;After having a second look on the code, where I put in several nodes at
the fourth level of the xml-tree, managing all the intents just via
print, I found myself doing something like this:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
