<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Look mum, I have a blog on tsak.dev</title>
    <link>https://tsak.dev/</link>
    <description>Recent content in Look mum, I have a blog on tsak.dev</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <lastBuildDate>Mon, 13 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://tsak.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>My first beg bounty</title>
      <link>https://tsak.dev/posts/spf/</link>
      <pubDate>Mon, 13 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/spf/</guid>
      <description>This morning, still a bit sleepy, morning coffee in hand, I came across a Hacker News post about Beg Bounties. Intrigued by the title, having heard about Bug Bounties before, I learned about its next logical conclusion and the people that &amp;ldquo;randomly&amp;rdquo; discover security vulnerabilities and then expect to be paid for their &amp;ldquo;ethical disclosure&amp;rdquo;.
Putting this aside as a Today I Learned kind of thing, I logged into my work email, only to be greeted by one of such &amp;ldquo;disclosures&amp;rdquo;, aimed at my employer and subsequently becoming my problem.</description>
    </item>
    
    <item>
      <title>Feeding GPTBot</title>
      <link>https://tsak.dev/posts/gptbot/</link>
      <pubDate>Tue, 15 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/gptbot/</guid>
      <description>With the recent news of OpenAI&amp;rsquo;s web crawler respecting robots.txt and the ensuing scramble by seemingly everybody ensuring their robots.txt is blocking GPTBot, I was thinking if there wasn&amp;rsquo;t a better solution to help our future AI overlords make sense of the world.
As I am hosting all my sites on a tiny NUC using nginx and having previously played with its return directive I decided to reuse the same trick for visits of GPTBot.</description>
    </item>
    
    <item>
      <title>The case for StrEnum in Python 3.11</title>
      <link>https://tsak.dev/posts/python-enum/</link>
      <pubDate>Wed, 21 Dec 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/python-enum/</guid>
      <description>With the update to Python 3.11, we ran into a subtle change in how Enum&amp;rsquo;s behave. This is thanks to PEP 663 - Standardizing Enum str(), repr(), and format() behaviors.
Before Python 3.11 Before Python 3.11, a string enum as shown below would return the value of an entry in the enum when used via format or an f-string but not when implicitly calling __str__().
# Python 3.10 from enum import Enum class Foo(str, Enum): BAR = &amp;#34;bar&amp;#34; x = Foo.</description>
    </item>
    
    <item>
      <title>Use nginx as a hacker business card</title>
      <link>https://tsak.dev/posts/use-nginx-as-a-hacker-business-card/</link>
      <pubDate>Tue, 13 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/use-nginx-as-a-hacker-business-card/</guid>
      <description>A friend of mine recently showed me his curl-able business card inspired by this Cloudflare worker template.
I liked the idea of returning something similar when running curl tsak.dev, but using Cloudflare workers or any other complicated stack for that matter felt a bit like overkill to me. After all, I&amp;rsquo;m hosting my blog at home, using nginx.
Nginx supports a return directive that allows you to specify a response code and a URL or alternatively the content you would like to return.</description>
    </item>
    
    <item>
      <title>Disable the discrete graphics card on an old Macbook Pro (Mid-2010) in Linux</title>
      <link>https://tsak.dev/posts/macbookpro62-disable-nvidia-graphics-card-linux/</link>
      <pubDate>Thu, 31 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/macbookpro62-disable-nvidia-graphics-card-linux/</guid>
      <description>One member of the ever-growing stack of old laptops is my wife&amp;rsquo;s old Macbook Pro (Mid 2010). Years ago I installed the maximum allowable RAM of 8 GB as well as a 250 GB SSD instead of the HDD it originally came with. It has the well-known issue of crashing whenever the discrete NVidia graphics are being used.
A long time ago I started running Linux on it, as it feels much faster than the latest version of MacOS that would run on it, and there&amp;rsquo;s an easy fix to disable discrete graphics and use the Intel chipset&amp;rsquo;s graphics card instead IF your flavour of Linux uses the grub bootloader.</description>
    </item>
    
    <item>
      <title>Correct file ownership when mounting local folders in Docker on Linux</title>
      <link>https://tsak.dev/posts/docker-host-file-ownership/</link>
      <pubDate>Tue, 22 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/docker-host-file-ownership/</guid>
      <description>I just joined a new company. Our local development happens by launching multiple containers via docker compose. Most of the existing developers are using Mac OS and Docker Desktop. This means mounting local folders into a container does not result in the same behaviour as doing so on Linux, which is my operating system of choice.
When onboarding, I ran into a peculiar problem where the frontend container based on node:17.</description>
    </item>
    
    <item>
      <title>The decision is final and we cannot reverse it</title>
      <link>https://tsak.dev/posts/the-decision-is-final-and-we-cannot-reverse-it/</link>
      <pubDate>Sun, 13 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/the-decision-is-final-and-we-cannot-reverse-it/</guid>
      <description>I registered my original eBay account on April 1st, 1999 in Germany. I&amp;rsquo;ve used it ever since, mainly to buy and occasionally to sell. It had a 100% rating, all my exchanges were always pleasant and I really love eBay for selling random items that there doesn&amp;rsquo;t seem to be an alternative marketplace for.
Having registered the account in Germany meant that I always had this funny side effect of My eBay switching to the German eBay site whenever I logged in, but I learned to live with that and navigate back to ebay.</description>
    </item>
    
    <item>
      <title>How to get into a large codebase</title>
      <link>https://tsak.dev/posts/how-to-get-into-large-codebases/</link>
      <pubDate>Mon, 07 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/how-to-get-into-large-codebases/</guid>
      <description>A while back, somebody asked on the ExperiencedDevs subreddit about how to work with a large codebase. I wanted to expand on the answer I gave there as I think it&amp;rsquo;s an interesting topic.
Setting the stage In one of my previous roles, I took over an almost disintegrated development department. There were only two junior developers left, the company had experienced what a bus factor of one means and had lost their principal developer to an illness.</description>
    </item>
    
    <item>
      <title>I hate your code challenge</title>
      <link>https://tsak.dev/posts/i-hate-your-code-challenge/</link>
      <pubDate>Tue, 18 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/i-hate-your-code-challenge/</guid>
      <description>I recently applied for an engineering management position at a maturing startup. The initial interview was great. We went an hour over the allotted time, and it felt like a friendly and meaningful conversation. In the end, the interviewer asked me if I would rather manage an existing team or kick-start a new one. I went for the second option and was looking forward to the next step in the process.</description>
    </item>
    
    <item>
      <title>Removing unwanted button padding in Firefox</title>
      <link>https://tsak.dev/posts/firefox-button-padding/</link>
      <pubDate>Sun, 04 Sep 2011 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/posts/firefox-button-padding/</guid>
      <description>Recently I came across a issue with the &amp;lt;button&amp;gt; element in Firefox. It seems that if you have the following code:
&amp;lt;button&amp;gt;&amp;lt;span&amp;gt;Text&amp;lt;/span&amp;gt;&amp;lt;/button&amp;gt; ..and then apply CSS styles to set padding to zero for both the elements Firefox will automatically insert padding on the button. This is impossible to remove with standard CSS.
However there is an easy fix. Just add the following rule to your button element:
button::-moz-focus-inner { border: 0; padding: 0; } This should fix everything.</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://tsak.dev/pages/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://tsak.dev/pages/about/</guid>
      <description>satan&#39;s hackathon boilerplate shitpit co-lead developer
I am a winner, a Principal Software Engineer with tremendous experience. We&amp;rsquo;re talking about over a decade of designing and building big league systems. You won&amp;rsquo;t find anyone better, trust me. I know how to lead teams and get the job done, delivering top-notch, top-quality software on time and under budget. I know all the best languages and technologies, Java, C++, Python - you name it, I know it.</description>
    </item>
    
  </channel>
</rss>
