<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Jakub Kozak — Blog</title>
    <link>https://jakubkozak.com/blog</link>
    <atom:link rel="self" href="https://jakubkozak.com/feed.xml" type="application/rss+xml" />
    <description>Notes on full-stack development, Angular, .NET, and side-projects by Jakub Kozak.</description>
    <language>en</language>
    <lastBuildDate>Tue, 28 Apr 2026 10:23:13 GMT</lastBuildDate>
    <generator>build-blog.mjs</generator>
    <item>
      <title>Building Sentinel: My First Week with Claude Ultra</title>
      <link>https://jakubkozak.com/blog/building-sentinel-first-week-with-claude</link>
      <guid isPermaLink="true">https://jakubkozak.com/blog/building-sentinel-first-week-with-claude</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jakub Kozak</dc:creator>
      <description>Live, off-the-cuff notes from week one with a Claude Max subscription — the side-projects in the pipeline, why Sentinel exists, the Angular + Electron stack, and the MVP I shipped in under five hours.</description>
      <category>sentinel</category>
      <category>claude-code</category>
      <category>angular</category>
      <category>electron</category>
      <category>side-projects</category>
      <content:encoded><![CDATA[<p>I&#39;m writing this live, off the cuff, no notes, nothing.</p>
<p>Last week I bought Claude Max 20x subscription. Since then, I&#39;ve been trying to plug them into work to automate basically everything I do, so I can land a second job with more developmental projects than what I have to work currently on (.net framework 4.7, vanilla js, vanilla html, styles in .less 🤯) make decent money, and still have free time for the more interesting stuff that isn&#39;t really tied to work.</p>
<p>I&#39;ll be posting updates here from my experience with Claude Code. In the meantime, I&#39;ve got three mini-projects in the pipeline.</p>
<h2 id="sentinel-an-app-to-manage-your-distractions">Sentinel — an app to manage your distractions</h2>
<p>One of them is Sentinel, which I&#39;ll probably talk about more later in future posts. It&#39;s an app for managing your dreams — or more accurately, something that nudges you in the right direction when you need to focus on some small thing, so you can get back to whatever you were supposed to be doing and stop procrastinating.</p>
<p>In less than a month I have to write my entire master&#39;s thesis, so it&#39;ll be a live test drive of Sentinel on me. After that — once I&#39;ve collected my own feedback and pushed in the fixes — I&#39;ll throw it on an open source repo for anyone to use.</p>
<p>Below are a few screenshots of what it looks like right now. We&#39;ll see where this goes.</p>
<p><img src="https://jakubkozak.com/assets/blog/sentinel/sentinel-1.png" alt="Sentinel — replace this screenshot"></p>
<p><img src="https://jakubkozak.com/assets/blog/sentinel/sentinel-2.png" alt="Sentinel — replace this screenshot"></p>
<p><img src="https://jakubkozak.com/assets/blog/sentinel/sentinel-3.png" alt="Sentinel — replace this screenshot"></p>
<h2 id="the-tech-stack-angular-and-electron">The tech stack: Angular and Electron</h2>
<p>The stack it runs on is Angular and Electron — I&#39;ve never done this before, because at work I never had a chance to build a desktop app.</p>
<p>Up until now my experience has been with Angular and .NET, so I&#39;ll finally get to build a desktop app, even if it&#39;s based on a web framework.</p>
<h2 id="privacy-first-no-cloud-no-ai-by-default">Privacy first — no cloud, no AI by default</h2>
<p>The current idea behind the MVP, and the philosophy that&#39;s driving me to build this, is to not bake any AI directly into the app. I want nothing kept in the cloud, nothing sent anywhere — everything self-hosted and kept on the device you&#39;re running it on.</p>
<p>If someone wants, say, to generate the rules for blocking certain sites or apps and doesn&#39;t want to do it manually with AI, they should have that option. The data that gets collected is collected on your computer, so you have full access to it. There&#39;s also no problem with shipping an export/import button right out of the gate — do whatever you want with that data. I think that&#39;s fair.</p>
<h2 id="shipping-a-blog-in-under-five-hours">Shipping a blog in under five hours</h2>
<p>I spent the last few days polishing this site, adding a blog and putting together this MVP of Sentinel that is right now in a state that seems to me valuable.</p>
<p>Funny thing is, I managed to pull off this MVP in under 4–5 hours (obviously, there is still a few days of reading code ahead of me and understanding precisely what is going on under the hood now, I might be familiar with how the Angular works but how it communicates with Electron, how it works with active-win. This stuff was purely vibe-coded, a bit scary that it seems to be &quot;good enough&quot; to be used.. will keep you posted on my research in the future.)</p>
<p>On the bright side!</p>
<p>The app I was paying a yearly subscription for recently? Let&#39;s just say the Claude subscription has already paid for itself :D</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hello — who&apos;s writing this</title>
      <link>https://jakubkozak.com/blog/welcome</link>
      <guid isPermaLink="true">https://jakubkozak.com/blog/welcome</guid>
      <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jakub Kozak</dc:creator>
      <description>A short intro: the dev work, the side-projects, the chess and League and Riftbound, the dog and the rabbit, and the woman who puts up with all of it.</description>
      <category>meta</category>
      <category>intro</category>
      <category>off-keyboard</category>
      <content:encoded><![CDATA[<p>Quick hello before this blog turns into a wall of Angular posts.</p>
<img src="https://jakubkozak.com/assets/blog/welcome/kozak-img.jpg" alt="Jakub Kozak" class="post-headshot" /><p>I&#39;m Jakub. I write Angular and .NET for a living — self-employed. Before that: technical school in Goleniów, an Erasmus stint in Italy, a CS degree at ZUT Szczecin, and right now I&#39;m closing out a Master&#39;s in Modern Business Services Management at WSB Merito (the thesis is due in less than a month — wish me luck).</p>
<p>That&#39;s the CV-shaped part of me. The rest of this post is everything else.</p>
<h2 id="off-the-keyboard">Off the keyboard</h2>
<p>I care about what&#39;s happening in the country, and I put time into it — civic stuff, some political work on the side. I won&#39;t turn this blog into a soapbox (the polite consensus is that nobody comes to a dev blog for hot takes, and I think the polite consensus is right), but it&#39;s part of how I spend my week, so it&#39;ll show up here and there. Probably mostly in passing.</p>
<h2 id="what-i-do-when-im-not-shipping-code">What I do when I&#39;m not shipping code</h2>
<p>A few honest answers:</p>
<ul>
<li><strong>Chess.</strong> Slowly clawing my way up. Mostly rapid, occasional blitz when I&#39;m trying to lose rating on purpose.</li>
<li><strong>League of Legends.</strong> Yes, still. I follow the e-sport scene more closely than is reasonable for a working adult.</li>
<li><strong>Riftbound.</strong> Riot&#39;s new TCG. I&#39;m in early enough to feel like I have opinions about the meta, and late enough that those opinions are probably wrong.</li>
</ul>
<p>There&#39;s also the side-projects (Sentinel, the next thing, the thing after that) — but those get their own posts. This one is for the human bits.</p>
<h2 id="the-household">The household</h2>
<ul>
<li><strong>Bazil</strong>, the dog. The reason I get up before my alarm.</li>
<li><strong>Lola</strong>, the rabbit. Quietly running the apartment, judging us all.</li>
<li><strong>My girlfriend</strong>, who has the patience of a saint and the taste to call me out when I&#39;m being too online.</li>
</ul>
<p>That&#39;s the whole staff.</p>
<h2 id="why-this-blog-exists">Why this blog exists</h2>
<p>I want a place that isn&#39;t a commit message. Somewhere to write down the Angular patterns I keep re-discovering, the EPiServer trade-offs you only notice after a few years, the side-project build logs, and — yeah — sometimes the off-keyboard stuff above. Quality over post count. I&#39;d rather one post a fortnight that I&#39;d want to read myself than a stream of half-thoughts.</p>
<p>RSS is at <code>/feed.xml</code> if you live in a reader. Otherwise, see you around.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
