<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ups and downs</title><link>https://blog.tobked.dev/</link><description/><atom:link href="https://blog.tobked.dev/feeds/all.rss.xml" rel="self"/><lastBuildDate>Thu, 30 Apr 2026 00:00:00 +0200</lastBuildDate><item><title>Month summary - April 2026</title><link>https://blog.tobked.dev/2026-april-links</link><description>&lt;h1 id="april-2026"&gt;April 2026&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-unwritten-laws-of-software-engineering"&gt;&lt;a href="https://newsletter.manager.dev/p/the-unwritten-laws-of-software-engineering"&gt;The unwritten laws of software engineering&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;But beyond the named laws, there are many unwritten rules every engineer who’s been around for a while just knows. You learn them by breaking things and swearing you’ll never do it again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="presentation-domain-data-layering"&gt;&lt;a href="https://martinfowler.com/bliki/PresentationDomainDataLayering.html"&gt;Presentation Domain Data Layering&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the common practice of modularizing software into three layers: presentation (UI), domain logic (business logic), and data access.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ghostty-is-leaving-github-mitchell-hashimoto"&gt;&lt;a href="https://mitchellh.com/writing/ghostty-leaving-github"&gt;Ghostty Is Leaving GitHub – Mitchell Hashimoto&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mitchell Hashimoto, a long-time GitHub user and the creator of Vagrant, announces that the Ghostty project will be leaving GitHub due to ongoing frustrations with the platform's reliability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="im-an-introvert-this-is-how-i-get-myself-to-speak-up"&gt;&lt;a href="https://newsletter.weskao.com/p/im-an-introvert-this-is-how-i-get-myself-to-speak-up"&gt;I’m an introvert. This is how I get myself to speak up.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Prepare go-to phrases to insert yourself in meetings, ask a colleague to keep you accountable, and other tactics I personally use to get myself to speak up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="intention-is-all-you-need-why-after-many-years-of-writing-code-by-jarek-potiuk-apr-2026-medium"&gt;&lt;a href="https://potiuk.com/intention-is-all-you-need-1379ec41a19c"&gt;Intention is all you need. Why, after many years of writing code… | by Jarek Potiuk | Apr, 2026 | Medium&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Intention is all you need Why, after many years of writing code to automate my maintainer work, I now write English instead — and why the result is better, faster, and more honest.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="finding-comfort-in-the-uncertainty-annie-vella"&gt;&lt;a href="https://annievella.com/posts/finding-comfort-in-the-uncertainty/"&gt;Finding Comfort in the Uncertainty - Annie Vella&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article reflects on a retreat focused on the future of software development and AI's impact, highlighting the uncertainty and evolving roles in the industry. Key themes include cognitive load, shifting bottlenecks, and the need for a comprehensive ledger to track AI actions.&lt;/p&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="how-to-add-features-to-a-python-project-with-codex-cli-real-python"&gt;&lt;a href="https://realpython.com/codex-cli/"&gt;How to Add Features to a Python Project With Codex CLI – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to use Codex CLI to add features to Python projects via the terminal. Master AI-powered coding without needing a browser or IDE plugins.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="claude-code-unpacked"&gt;&lt;a href="https://ccunpacked.dev/"&gt;Claude Code Unpacked&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What actually happens when you type a message into Claude Code? The agent loop, 50+ tools, multi-agent orchestration, and unreleased features, mapped from source.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="learn-cursor-in-cursor-cursor-for-product-managers"&gt;&lt;a href="https://www.cursorforpms.com/"&gt;Learn Cursor IN Cursor! – Cursor for Product Managers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn Cursor AI for PM work through interactive tutorials. Master AI-powered editing, file operations, and automated workflows for product managers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="practical-guide-organize-ai-prompts-with-obsidian-and-templater"&gt;&lt;a href="https://cosmo-edge.com/organize-ai-prompts-obsidian-templater/"&gt;Practical guide: organize AI prompts with Obsidian and Templater&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Manage AI prompts locally with Obsidian and Templater, build dynamic Markdown templates and custom AI workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="claude-code-cheat-sheet"&gt;&lt;a href="https://cc.storyfox.cz/"&gt;Claude Code Cheat Sheet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The most comprehensive Claude Code cheat sheet — keyboard shortcuts, slash commands, CLI flags, MCP servers, memory files, skills, agents, env vars. Auto-updated daily. Printable A4 landscape.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-affaan-meverything-claude-code"&gt;&lt;a href="https://github.com/affaan-m/everything-claude-code"&gt;GitHub - affaan-m/everything-claude-code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-nicobailonvisual-explainer"&gt;&lt;a href="https://github.com/nicobailon/visual-explainer"&gt;GitHub - nicobailon/visual-explainer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Agent skill that generates rich HTML pages or slide decks for diagrams, diff reviews, plan audits, data tables, and project recaps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-obrasuperpowers"&gt;&lt;a href="https://github.com/obra/superpowers"&gt;GitHub - obra/superpowers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An agentic skills framework &amp;amp; software development methodology that works.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-bmad-code-orgbmad-method"&gt;&lt;a href="https://github.com/bmad-code-org/BMAD-METHOD"&gt;GitHub - bmad-code-org/BMAD-METHOD&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Breakthrough Method for Agile Ai Driven Development&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-juliusbrusseecaveman"&gt;&lt;a href="https://github.com/juliusbrussee/caveman"&gt;GitHub - JuliusBrussee/caveman&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="build-a-finite-state-machine-in-python-bob-belderbos-developer-coaching"&gt;&lt;a href="https://belderbos.dev/blog/build-finite-state-machine-python"&gt;Build a Finite State Machine in Python — Bob Belderbos — Developer Coaching&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how finite state machines work by building one from scratch in Python. Guards, hooks, history tracking, and when to reach for a library instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cutting-python-web-app-memory-over-31-michael-kennedys-thoughts-on-technology"&gt;&lt;a href="https://mkennedy.codes/posts/cutting-python-web-app-memory-over-31-percent/"&gt;Cutting Python Web App Memory Over 31% • Michael Kennedy's Thoughts on Technology&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I reduced Python web app memory by 3.2 GB using async workers, import isolation, the Raw+DC database pattern, and disk caching. Detailed before and after numbers for each technique.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="decoupling-your-business-logic-from-the-django-orm-buttondown"&gt;&lt;a href="https://buttondown.com/carlton/archive/decoupling-your-business-logic-from-the-django-orm/"&gt;Decoupling Your Business Logic from the Django ORM • Buttondown&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Where should I keep my business logic? This is a perennial topic in Django.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="make-tmux-pretty-and-usable-ham-vocke"&gt;&lt;a href="https://hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/"&gt;Make tmux Pretty and Usable - Ham Vocke&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Customize the look and feel of tmux&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-mayukh4linux-android"&gt;&lt;a href="https://github.com/mayukh4/linux-android"&gt;GitHub - mayukh4/linux-android&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A script that sets up linux on your anroid device via termux - mayukh4/linux-android&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tldraw-very-good-free-whiteboard"&gt;&lt;a href="https://www.tldraw.com/"&gt;tldraw • very good free whiteboard&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A free and instant virtual whiteboarding with online collaboration. No signup required. Works on all devices: mobile, tablets, and desktop.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-applecontainer"&gt;&lt;a href="https://github.com/apple/container"&gt;GitHub - apple/container&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A tool for creating and running Linux containers using lightweight virtual machines on a Mac.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="the-missing-github-status-page"&gt;&lt;a href="https://mrshu.github.io/github-statuses/"&gt;The Missing GitHub Status Page&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This page serves as a mirror for GitHub's status updates, reconstructing platform-wide and per-service uptime from archived status updates.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="give-me-15-minutes-ill-teach-you-80-of-obsidian-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=z4AbijUCoKU"&gt;Give Me 15 Minutes. I'll Teach You  80% of Obsidian - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/z4AbijUCoKU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="does-git-254-make-pre-commit-obsolete-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=8Jwg_mM9WYc"&gt;does git 2.54 make pre-commit obsolete? - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/8Jwg_mM9WYc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="23-it-wypalone-jestes-w-tej-grupie-ola-kunysz-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=mJGra2QK3mk"&gt;2/3 IT wypalone. Jesteś w tej grupie? | Ola Kunysz - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/mJGra2QK3mk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="i-replaced-my-entire-stack-with-postgres-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=TdondBmyNXc"&gt;I replaced my entire stack with Postgres... - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/TdondBmyNXc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="john-doerr-ideas-are-easy-execution-is-everything-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=4xWGSUZmkIc"&gt;John Doerr: Ideas are easy, execution is everything. - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/4xWGSUZmkIc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="everything-announced-at-google-cloud-next-in-under-13-minutes-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=dITPmrhNTzY"&gt;Everything Announced at Google Cloud Next in Under 13 Minutes - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dITPmrhNTzY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="does-git-254-make-pre-commit-obsolete-youtube_1"&gt;&lt;a href="https://www.youtube.com/watch?v=8Jwg_mM9WYc"&gt;does git 2.54 make pre-commit obsolete? - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/8Jwg_mM9WYc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="i-replaced-my-entire-stack-with-postgres-youtube_1"&gt;&lt;a href="https://www.youtube.com/watch?v=TdondBmyNXc"&gt;I replaced my entire stack with Postgres... - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/TdondBmyNXc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="mastering-claude-code-in-30-minutes"&gt;&lt;a href="https://www.youtube.com/live/6eBSHbLKuN0"&gt;Mastering Claude Code in 30 minutes&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/6eBSHbLKuN0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 30 Apr 2026 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2026-04-30:/2026-april-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2026</category></item><item><title>Month summary - March 2026</title><link>https://blog.tobked.dev/2026-march-links</link><description>&lt;h1 id="march-2026"&gt;March 2026&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h3 id="associate-cloud-engineer-certification"&gt;&lt;a href="https://www.credly.com/badges/61bf527e-9515-4521-9b56-33f2e4472708"&gt;&lt;strong&gt;Associate Cloud Engineer Certification&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While I don't use Google Cloud heavily on a daily basis, it remains my cloud provider of choice.
I received a discount to renew my Associate Cloud Engineer certification, so I spent a few evenings refreshing my knowledge. The exam itself took me 50 minutes to answer the 50 questions and pass.
It was a fun experience!&lt;/p&gt;
&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2026/gcp_ace.png" alt="Google Associate Cloud Engineer" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px; margin-bottom: 12px"&gt;
        &lt;a href="https://www.credly.com/badges/61bf527e-9515-4521-9b56-33f2e4472708"&gt;View my Credly badge&lt;/a&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="handy-offline-speech-to-text"&gt;&lt;a href="https://github.com/cjpais/Handy"&gt;&lt;strong&gt;Handy - Offline speech-to-text&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I wanted to try out a speech-to-text tool and found this really cool option that is open-source and works completely offline. I use it here and there and it performs surprisingly well, even in Polish.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/cjpais/Handy"&gt;cjpais/Handy on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-hidden-math-behind-every-decision-you-make-and-why-most-people-get-it-wrong-"&gt;&lt;a href="https://axisofeasy.com/best-of-the-web/the-hidden-math-behind-every-decision-you-make-and-why-most-people-get-it-wrong/"&gt;The Hidden Math Behind Every Decision You Make — And Why Most People Get It Wrong -&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This isn’t a math lecture btw. No calculus. I promise. This is about 6 mental models that changed how I think about literally everything – and once you see them you can’t unsee them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="nobody-gets-promoted-for-simplicity-terrible-software"&gt;&lt;a href="https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/"&gt;Nobody Gets Promoted for Simplicity – Terrible Software&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We reward complexity and ignore simplicity. In interviews, design reviews, and promotions. Here's how to fix it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="repurpose-your-old-kindle"&gt;&lt;a href="https://www.mariannefeng.com/portfolio/kindle"&gt;Repurpose your old Kindle&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hacking an old kindle to display bus arrival times&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="crawling-a-billion-web-pages-in-just-over-24-hours"&gt;&lt;a href="https://andrewkchan.dev/posts/crawler.html"&gt;Crawling a billion web pages in just over 24 hours&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The author shares insights on the differences between theory and practice in web crawling, the impact of modern web technologies, and the importance of politeness in crawling. The article also reflects on the future of web crawling, especially in the context of dynamic content and AI-driven scraping.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-reason-most-people-are-terrible-communicators-and-how-to-fix-it"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-reason-most-people-are-terrible"&gt;The Reason Most People Are Terrible Communicators (And How to Fix It)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Being right doesn't matter if nobody understands what you're saying.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-api-keys-werent-secrets-but-then-gemini-changed-the-rules-truffle-security-co"&gt;&lt;a href="https://trufflesecurity.com/blog/google-api-keys-werent-secrets-but-then-gemini-changed-the-rules"&gt;Google API Keys Weren't Secrets. But then Gemini Changed the Rules. ◆ Truffle Security Co.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Google spent over a decade telling developers that Google API keys (like those used in Maps, Firebase, etc.) are not secrets. But that's no longer true.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-developers-guide-to-secure-job-hunting-in-2026-placementist"&gt;&lt;a href="https://placementist.com/insights/the-developer%E2%80%99s-guide-to-secure-job-hunting-in-2026"&gt;The Developer’s Guide to Secure Job Hunting in 2026 • placementist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Is your technical task a malware delivery system? The 2026 candidate's guide to secure job searching.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-self-hosting-revolution-powered-by-mini-pcs-terminalbytescom"&gt;&lt;a href="https://terminalbytes.com/post/self-hosting-revolution-mini-pcs/"&gt;The Self-Hosting Revolution Powered by Mini PCs | TerminalBytes.com&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How mini PCs are enabling a quiet revolution in self-hosting, making it practical and affordable to own your digital life&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="scaling-postgres-connections-with-pgbouncer-planetscale"&gt;&lt;a href="https://planetscale.com/blog/scaling-postgres-connections-with-pgbouncer"&gt;Scaling Postgres connections with PgBouncer — PlanetScale&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PgBouncer is the perfect pairing for Postgres's biggest weakness: connection management. Tuning it just right is important to make this work well, and here we cover everything you need to know&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="2-hours-of-focus-will-put-you-in-the-top-1"&gt;&lt;a href="https://alifeengineered.substack.com/p/2-hours-of-focus-will-put-you-in"&gt;2 Hours of Focus Will Put You in the Top 1%&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Three ways to find focus time that don't require waking up at 4am.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="car-wash-test-on-53-leading-ai-models-i-want-to-wash-my-car-the-car-wash-is-50-meters-away-should-i-walk-or-drive"&gt;&lt;a href="https://opper.ai/blog/car-wash-test"&gt;Car Wash Test on 53 leading AI models: "I want to wash my car. The car wash is 50 meters away. Should I walk or drive?"&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The car wash test is the simplest AI reasoning benchmark that nearly every model fails. We tested 53 models through Opper, first once each, then 10 times. Only 5 passed consistently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="openclaw-personalny-asystent-ai"&gt;&lt;a href="https://blog.tomaszdunia.pl/openclaw/"&gt;OpenClaw - Personalny Asystent AI&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;A detailed guide on setting up OpenClaw with security configurations, SSH keys, and Docker deployment, using Google Gemini as an AI model.&lt;/p&gt;
&lt;h3 id="andrej-karpathys-630-line-python-script-ran-50-experiments-overnight-without-any-human-input-the-new-stack"&gt;&lt;a href="https://thenewstack.io/karpathy-autonomous-experiment-loop/"&gt;Andrej Karpathy's 630-line Python script ran 50 experiments overnight without any human input - The New Stack&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Andrej Karpathy's AutoResearch ran 50 AI experiments overnight on one GPU. The design pattern behind it applies far beyond ML training. Here's how it works.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="so-where-are-all-the-ai-apps-answerai"&gt;&lt;a href="https://www.answer.ai/posts/2026-03-12-so-where-are-all-the-ai-apps.html"&gt;So where are all the AI apps? – Answer.AI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Despite claims of increased productivity due to AI tools, the data shows no significant increase in the overall rate of package creation or updates post-ChatGPT. However, there is a noticeable increase in update frequency for popular AI-related packages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="anthropic-courses"&gt;&lt;a href="https://anthropic.skilljar.com/"&gt;Anthropic Courses&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Browse all Anthropic courses&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="slow-down-to-speed-up-by-james-stanier"&gt;&lt;a href="https://theengineeringmanager.substack.com/p/slow-down-to-speed-up"&gt;Slow down to speed up - by James Stanier&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why AI makes the slow phases of work more important, not less.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-unix-manifesto-for-the-age-of-ai-linuxtoaster"&gt;&lt;a href="https://linuxtoaster.com/manifesto.html"&gt;A Unix Manifesto for the Age of AI | LinuxToaster&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Taste is the only thing standing between us and entropy. A manifesto on composable AI, Unix principles, and the architecture of restraint.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-eternal-promise-a-history-of-attempts-to-eliminate-programmers"&gt;&lt;a href="https://www.ivanturkovic.com/2026/01/22/history-software-simplification-cobol-ai-hype/"&gt;The Eternal Promise: A History of Attempts to Eliminate Programmers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;From COBOL in the 1960s to AI in the 2020s, every generation promises to eliminate programmers. Explore the recurring cycles of software simplification hype.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jazzband-news-sunsetting-jazzband"&gt;&lt;a href="https://jazzband.co/news/2026/03/14/sunsetting-jazzband"&gt;Jazzband - News - Sunsetting Jazzband&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Jazzband, a cooperative experiment started over 10 years ago to reduce the stress of maintaining Open Source software projects, is being sunsetted. New signups are disabled, and project leads will be contacted before PyCon US 2026 to coordinate project transfers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-jarrodwattsclaude-hud"&gt;&lt;a href="https://github.com/jarrodwatts/claude-hud"&gt;GitHub - jarrodwatts/claude-hud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Claude Code plugin that shows what's happening - context usage, active tools, running agents, and todo progress&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-garrytangstack"&gt;&lt;a href="https://github.com/garrytan/gstack"&gt;GitHub - garrytan/gstack&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-hkudsnanobot"&gt;&lt;a href="https://github.com/HKUDS/nanobot"&gt;GitHub - HKUDS/nanobot&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;🐈 nanobot: The Ultra-Lightweight OpenClaw&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="thoughts-on-openai-acquiring-astral-and-uvruffty"&gt;&lt;a href="https://simonwillison.net/2026/Mar/19/openai-acquiring-astral/"&gt;Thoughts on OpenAI acquiring Astral and uv/ruff/ty&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Concerns about the strategic risk of a single company owning key Python infrastructure are addressed, with a focus on the possibility of forking as an exit strategy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="github-cjpaishandy"&gt;&lt;a href="https://github.com/cjpais/Handy"&gt;GitHub - cjpais/Handy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A free, open source, and extensible speech-to-text application that works completely offline.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-hkudscli-anything"&gt;&lt;a href="https://github.com/HKUDS/CLI-Anything"&gt;GitHub - HKUDS/CLI-Anything&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;CLI-Anything: Making ALL Software Agent-Native. Contribute to HKUDS/CLI-Anything development by creating an account on GitHub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="bucketsquatting-is-finally-dead-one-cloud-please"&gt;&lt;a href="https://onecloudplease.com/blog/bucketsquatting-is-finally-dead"&gt;Bucketsquatting is (Finally) Dead – One Cloud Please&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;For a decade, I have been working with AWS and third-party security teams to resolve bucketsquatting / bucketsniping issues in AWS S3. Finally, I am happy to say AWS now has a solution to the problem, and it changes the way you should name your buckets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="teach-yourself-computer-science"&gt;&lt;a href="https://teachyourselfcs.com/"&gt;Teach Yourself Computer Science&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;All the resources you need to give yourself a world class computer science education&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="claude-code-20-has-arrived-its-insane-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=F4zSxfBe5R0"&gt;Claude Code 2.0 Has Arrived (It’s Insane) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/F4zSxfBe5R0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="claude-code-skills-just-got-even-better-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=RAZVk5NPNtE"&gt;Claude Code Skills Just Got Even Better - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/RAZVk5NPNtE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="claude-code-w-rekach-product-buildera-live-ai-product-heroes-x-10xdevs-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=3LbZP0sYmPw"&gt;Claude Code w rękach Product Buildera | LIVE AI Product Heroes x 10xDevs - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/3LbZP0sYmPw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="head-of-claude-code-what-happens-after-coding-is-solved-boris-cherny-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=We7BZVKbCVw"&gt;Head of Claude Code: What happens after coding is solved | Boris Cherny - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/We7BZVKbCVw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="vector-search-with-llms-computerphile-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=YDdKiQNw80c"&gt;Vector Search with LLMs - Computerphile - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/YDdKiQNw80c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ai-agent-design-patterns-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=GDm_uH6VxPY"&gt;AI agent design patterns - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/GDm_uH6VxPY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-dangerous-illusion-of-ai-coding-jeremy-howard-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=dHBEQ-Ryo24"&gt;The Dangerous Illusion of AI Coding? - Jeremy Howard - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dHBEQ-Ryo24" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="intellij-idea-the-documentary-an-origin-story-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Kourq_Lz03U"&gt;IntelliJ IDEA: The Documentary | An origin story - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Kourq_Lz03U" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="from-writing-code-to-managing-agents-most-engineers-arent-ready-stanford-university-mihail-eric-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=wEsjK3Smovw"&gt;From Writing Code to Managing Agents. Most Engineers Aren't Ready | Stanford University, Mihail Eric - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wEsjK3Smovw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="everything-we-got-wrong-about-research-plan-implement-dexter-horthy-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=YwZR6tc7qYg"&gt;Everything We Got Wrong About Research-Plan-Implement -  Dexter Horthy - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/YwZR6tc7qYg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="nicholas-carlini-black-hat-llms-unprompted-2026-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=1sd26pWhfmg"&gt;Nicholas Carlini - Black-hat LLMs | [un]prompted 2026 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1sd26pWhfmg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="jak-dziaa-claude-code-wszystko-co-musisz-wiedziec-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=B0yx8k1YcU4"&gt;Jak działa Claude Code? Wszystko, co musisz wiedzieć - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/B0yx8k1YcU4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-philosophy-of-software-design-with-john-ousterhout-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=lz451zUlF-k"&gt;The Philosophy of Software Design – with John Ousterhout - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/lz451zUlF-k" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="asystent-ai-ktory-pracuje-gdy-spisz-konfiguracja-openclaw-na-vps-krok-po-kroku-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=DSTUzBXHSuo"&gt;Asystent AI, który pracuje gdy śpisz – konfiguracja OpenClaw na VPS krok po kroku - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/DSTUzBXHSuo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="4-things-that-will-make-you-an-ai-sweeper-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=0qOTB1gi3ec"&gt;4 Things That Will Make You an AI-Sweeper - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0qOTB1gi3ec" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="debugging-burnout-jak-nie-wypalic-sie-w-it-i-odzyskac-satysfakcje-z-pracy-ola-kunysz-infoshare-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=PQd1EmOl4CA"&gt;Debugging burnout: jak nie wypalić się w IT i odzyskać satysfakcję z pracy - Ola Kunysz | Infoshare - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/PQd1EmOl4CA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ai-generated-code-or-rewrites-violate-foss-licences-talk-at-foss-backstage-berlin-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=xvuiSgXfqc4"&gt;AI generated Code or Rewrites violate FOSS-Licences. Talk at FOSS Backstage Berlin - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/xvuiSgXfqc4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="python-unplugged-on-pytv-free-online-python-conference"&gt;&lt;a href="https://www.youtube.com/watch?v=qKkyBhXIJJU"&gt;Python Unplugged on PyTV – Free Online Python Conference&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/qKkyBhXIJJU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="life-begins-at-40-the-biological-and-cultural-roots-of-the-midlife-crisis-the-royal-society-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=eSWwIQzKsbY"&gt;Life begins at 40: the biological and cultural roots of the midlife crisis | The Royal Society - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/eSWwIQzKsbY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 31 Mar 2026 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2026-03-31:/2026-march-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2026</category></item><item><title>Month summary - February 2026</title><link>https://blog.tobked.dev/2026-february-links</link><description>&lt;h1 id="february-2026"&gt;February 2026&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="3-ways-to-stop-wasting-your-11s-with-your-manager"&gt;&lt;a href="https://alifeengineered.substack.com/p/3-ways-to-stop-wasting-your-11s-with"&gt;3 Ways to Stop Wasting Your 1:1s With Your Manager&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to maximize the value of the most important regular meeting of your career.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="burnout-is-breaking-a-sacred-pact-by-cate-hall"&gt;&lt;a href="https://usefulfictions.substack.com/p/burnout-is-breaking-a-sacred-pact"&gt;Burnout is breaking a sacred pact - by Cate Hall&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The author shares their journey of experiencing burnout due to juggling multiple tasks and the importance of taking a break to recover. They emphasize the need to recognize personal limits and address them to maintain well-being.&lt;/p&gt;
&lt;h3 id="feynmans-garden"&gt;&lt;a href="https://www.marginalia.nu/log/a_108_feynman_revisited/"&gt;Feynman's Garden&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page discusses the Feynman algorithm, a method for problem-solving attributed to physicist Richard Feynman, though it may have been described by Murray Gell-Mann. The algorithm involves three steps: writing down the problem, thinking hard, and writing down the solution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="7-more-behaviors-that-separate-juniors-from-seniors"&gt;&lt;a href="https://alifeengineered.substack.com/p/7-more-behaviors-that-separate-juniors"&gt;7 More Behaviors That Separate Juniors From Seniors&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The sequel to the most-shared article in this newsletter's history.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="zanzibar-googles-consistent-global-authorization-system"&gt;&lt;a href="https://research.google/pubs/zanzibar-googles-consistent-global-authorization-system/"&gt;Zanzibar: Google’s Consistent, Global Authorization System&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This paper presents the design, implementation, and deployment of Zanzibar, a global system for storing and evaluating access control lists. Zanzibar provides a uniform data model and configuration language for expressing a wide range of access control policies from hundreds of client services at Google, including Calendar, Cloud, Drive, Maps, Photos, and YouTube.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tech-hiring-has-a-fraud-problem-foxley-talent"&gt;&lt;a href="https://foxleytalent.com/blog/fake-candidates-tech-hiring/"&gt;Tech Hiring Has a Fraud Problem | Foxley Talent&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Fake and fraudulent candidates are becoming harder to spot in tech hiring. Real world insight into what’s changed and how risk can be managed before interviews.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="keep-android-open"&gt;&lt;a href="https://keepandroidopen.org/"&gt;Keep Android Open&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Advocating for Android as a free, open platform for everyone to build apps on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="loopwerk-its-time-to-leave-heroku"&gt;&lt;a href="https://www.loopwerk.io/articles/2026/time-to-leave-heroku/"&gt;Loopwerk: It's time to leave Heroku&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Heroku just announced it's entering "sustaining engineering mode". No more new features. After years of security breaches, outages, and price hikes, it's time to leave.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="you-can-code-only-4-hours-per-day-heres-why"&gt;&lt;a href="https://newsletter.techworld-with-milan.com/p/you-can-code-only-4-hours-per-day"&gt;You can code only 4 hours per day. Here’s why.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Most of us have felt it: after a few solid hours of coding, your brain starts shutting down.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="plan-files"&gt;&lt;a href="https://matteolandi.net/plan-files.html"&gt;.plan files&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page discusses the concept and utility of .plan files, inspired by programmer John Carmack. It explains how the author, Matteo Landi, uses .plan files to organize daily tasks, track progress, and improve technical writing skills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="ai-fatigue-is-real-and-nobody-talks-about-it-siddhant-khare"&gt;&lt;a href="https://siddhantkhare.com/writing/ai-fatigue-is-real"&gt;AI fatigue is real and nobody talks about it | Siddhant Khare&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You're using AI to be more productive. So why are you more exhausted than ever? The paradox every engineer needs to confront.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-are-ai-leaders-fleeing-computerworld"&gt;&lt;a href="https://www.computerworld.com/article/4133137/why-are-ai-leaders-fleeing.html"&gt;Why are AI leaders fleeing? – Computerworld&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The people loudly departing the biggest AI companies aren't necessarily looking for fatter paychecks or more stock options; they’re worried that AI businesses are putting profits over sanity and safety.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-ai-helps-break-cost-barrier-in-cobol-modernization"&gt;&lt;a href="https://claude.com/blog/how-ai-helps-break-cost-barrier-cobol-modernization"&gt;How AI Helps Break Cost Barrier in COBOL Modernization&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page discusses how artificial intelligence (AI) can assist in overcoming the cost barriers associated with modernizing COBOL systems. It highlights the challenges faced by organizations relying on legacy COBOL systems, such as high maintenance costs and difficulty in finding skilled developers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-wondelaiskills"&gt;&lt;a href="https://github.com/wondelai/skills"&gt;GitHub - wondelai/skills&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Agent skills for Claude Code and agentskills.io-compatible agents&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="what-exactly-is-the-zen-of-python-real-python"&gt;&lt;a href="https://realpython.com/zen-of-python/"&gt;What Exactly Is the Zen of Python? – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Zen of Python is a collection of 19 guiding principles for writing good Python code. Learn its history, meaning, and hidden jokes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="how-to-dump-django-orm-data-to-json-while-debugging"&gt;&lt;a href="https://borutzki.github.io/2026/01/25/how-to-dump-django-orm-data-to-json-while-debugging.html"&gt;How to dump Django ORM data to JSON while debugging?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses a method to efficiently debug Django applications by dumping ORM data to JSON. It highlights the use of Django's serializers to export data from the database to a JSON file, which can be particularly useful during testing when databases are ephemeral.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="the-complete-bash-scripting-course-ysapsh"&gt;&lt;a href="https://course.ysap.sh/"&gt;The Complete Bash Scripting Course - ysap.sh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Complete Bash Scripting Course is a comprehensive guide to learning Bash scripting, covering topics from beginner to advanced techniques.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="wiby-search-engine-for-the-classic-web"&gt;&lt;a href="https://wiby.me/"&gt;Wiby - Search Engine for the Classic Web&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Wiby is a search engine for older style pages, lightweight and based on a subject of interest. Building a web more reminiscent of the early internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="thinking-hard-burns-almost-no-caloriesbut-destroys-your-next-workout-vo2-max-pro"&gt;&lt;a href="https://vo2maxpro.com/blog/thinking-hard-burns-no-calories-destroys-workout"&gt;Thinking Hard Burns Almost No Calories—But Destroys Your Next Workout - VO2 Max Pro&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your brain uses 20% of your body's energy just idling. Intense thinking barely adds to that. But the mental byproducts of a long cognitive day quietly sabotage your endurance in ways no amount of willpower can fix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="anthropics-philosopher-answers-your-questions"&gt;&lt;a href="https://www.youtube.com/watch?v=I9aGC6Ui3eE"&gt;Anthropic’s philosopher answers your questions&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/I9aGC6Ui3eE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="modern-python-monorepo-with-uv-and-prek-talk-python-to-me-ep-540"&gt;&lt;a href="https://www.youtube.com/watch?v=SKd78ImNgEo"&gt;Modern Python monorepo with uv and prek - Talk Python to Me Ep. 540&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/SKd78ImNgEo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ex-openai-scientist-warns-you-have-no-idea-whats-coming"&gt;&lt;a href="https://www.youtube.com/watch?v=79-bApI3GIU"&gt;Ex-OpenAI Scientist WARNS: "You Have No Idea What's Coming"&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/79-bApI3GIU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-ai-safety-expert-these-are-the-only-5-jobs-that-will-remain-in-2030-dr-roman-yampolskiy"&gt;&lt;a href="https://www.youtube.com/watch?v=UclrVWafRAI"&gt;The AI Safety Expert: These Are The Only 5 Jobs That Will Remain In 2030! - Dr. Roman Yampolskiy&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/UclrVWafRAI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="porozmawiajmy-o-chmurze-17-kto-paci-za-open-source"&gt;&lt;a href="https://www.youtube.com/watch?v=DnT_3RafHp8"&gt;Porozmawiajmy o chmurze #17 – Kto płaci za Open Source?&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/DnT_3RafHp8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="900-hours-of-learning-claude-codecursor-in-10-minutes"&gt;&lt;a href="https://www.youtube.com/watch?v=iltdFNpl73I"&gt;900+ hours of Learning Claude Code/Cursor in 10 minutes&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/iltdFNpl73I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-hackers-are-using-ai-steve-sims"&gt;&lt;a href="https://www.youtube.com/watch?v=1ZfZDEcl0ZI"&gt;How Hackers Are Using AI-Steve Sims&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1ZfZDEcl0ZI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="4developers-2025-micha-sajdak-dlaczego-hackowanie-aplikacji-webowych-jest-proste"&gt;&lt;a href="https://www.youtube.com/watch?v=KsKe8I9yhk4"&gt;4Developers 2025: Michał Sajdak - "Dlaczego hackowanie aplikacji webowych jest proste?"&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/KsKe8I9yhk4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="10-cli-tools-im-using-alongside-claude-code-starmorph-ai"&gt;&lt;a href="https://www.youtube.com/watch?v=3NzCBIcIqD0"&gt;10 CLI Tools I'm using alongside Claude Code | Starmorph AI&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/3NzCBIcIqD0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="28-jak-zbudowac-agenta-ai-ktory-nie-usunie-ci-poowy-plikow-jakub-mrugalski"&gt;&lt;a href="https://www.youtube.com/watch?v=hSbkxztsunQ"&gt;#28 Jak zbudować agenta AI, który nie usunie Ci połowy plików? | Jakub Mrugalski&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/hSbkxztsunQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-internet-was-weeks-away-from-disaster-and-no-one-knew"&gt;&lt;a href="https://www.youtube.com/watch?v=aoag03mSuXQ"&gt;The Internet Was Weeks Away From Disaster and No One Knew&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/aoag03mSuXQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="zbudowa-drugi-mozg-z-ai-czym-jest-ai-journaling-gosc-franciszek-georgiew"&gt;&lt;a href="https://www.youtube.com/watch?v=BsrLizc-P1c"&gt;Zbudował "Drugi Mózg" z AI. Czym jest AI Journaling? (gość: Franciszek Georgiew)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/BsrLizc-P1c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 28 Feb 2026 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2026-02-28:/2026-february-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2026</category></item><item><title>Month summary - January 2026</title><link>https://blog.tobked.dev/2026-january-links</link><description>&lt;h1 id="january-2026"&gt;January 2026&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-challenges-of-soft-delete-atlas9"&gt;&lt;a href="https://atlas9.dev/blog/soft-delete.html"&gt;The challenges of soft delete | atlas9&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the complexities and challenges associated with implementing soft delete in software projects. It highlights the issues with using an &lt;code&gt;archived_at&lt;/code&gt; column, such as increased complexity in queries, operations, and application code, as well as the accumulation of dead data in the database. The author explores alternative approaches to soft delete, including application-level archiving, database triggers, and WAL-based Change Data Capture (CDC). Each method is analyzed for its benefits and trade-offs, with a focus on maintaining clean live tables and reducing operational overhead. The article concludes with a preference for the trigger-based approach due to its simplicity and effectiveness in keeping live tables clean.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="use-the-power-of-storytelling-in-tech-to-get-promoted-faster"&gt;&lt;a href="https://read.highgrowthengineer.com/p/power-of-storytelling-in-tech"&gt;Use the power of storytelling in tech to get promoted faster&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Communication techniques that build your executive presence&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-the-best-engineers-doand-what-actually-got-them-promoted-from-an-amazon-vp"&gt;&lt;a href="https://read.highgrowthengineer.com/p/traits-of-the-best-engineers"&gt;What The Best Engineers Do—and What Actually Got Them Promoted, from an Amazon VP&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Guest post by Amazon VP, Ethan Evans&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-the-hell-are-you-supposed-to-have-a-career-in-tech-in-2026-anil-dash"&gt;&lt;a href="https://www.anildash.com/2026/01/05/a-tech-career-in-2026/"&gt;How the hell are you supposed to have a career in tech in 2026? - Anil Dash&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A blog about making culture. Since 1999.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-markdown-took-over-the-world-anil-dash"&gt;&lt;a href="https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world/"&gt;How Markdown took over the world - Anil Dash&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article explores the reasons behind Markdown's success, emphasizing its community-driven nature, adaptability, and timing with web development trends. It also highlights the influence of key figures and the absence of intellectual property restrictions.&lt;/p&gt;
&lt;h3 id="ukryte-pereki-mao-znane-funkcje-bash"&gt;&lt;a href="https://slicker.me/bash/perelki.htm"&gt;Ukryte Perełki: Mało Znane Funkcje Bash&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;The article explores lesser-known features of the Bash shell that can significantly enhance productivity in the command line.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-you-should-prepare-for-a-layoff-even-if-you-think-youre-safe"&gt;&lt;a href="https://alifeengineered.substack.com/p/why-you-should-prepare-for-a-layoff"&gt;Why You Should Prepare for a Layoff, Even If You Think You're Safe&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You can't control layoffs. But you can control your readiness for them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-psychology-of-code-reviews-why-smart-developers-accept-bad-suggestions-java-code-geeks"&gt;&lt;a href="https://www.javacodegeeks.com/2026/01/the-psychology-of-code-reviews-why-smart-developers-accept-bad-suggestions.html"&gt;The Psychology of Code Reviews: Why Smart Developers Accept Bad Suggestions - Java Code Geeks&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Discover why smart developers accept bad code suggestions. Explore the cognitive biases, power dynamics, and social psychology&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="3-signs-its-time-to-leave-your-job-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/3-signs-its-time-to-leave-your-job"&gt;3 Signs It's Time to Leave Your Job - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why you should decide before something forces you to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="3-smart-moves-to-make-in-january-while-everyone-is-distracted"&gt;&lt;a href="https://alifeengineered.substack.com/p/3-smart-moves-to-make-in-january"&gt;3 Smart Moves to Make in January (While Everyone Is Distracted)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The annual window most people miss.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="building-critical-infrastructure-with-htmx-network-automation-for-the-paris-2024-olympics"&gt;&lt;a href="https://htmx.org/essays/paris-2024-olympics-htmx-network-automation/"&gt;Building Critical Infrastructure with htmx: Network Automation for the Paris 2024 Olympics&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Building critical software infrastructure with htmx, and how the simplification induced by this approach is interesting for AI-assisted development.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="loopwerk-expertise-is-the-art-of-ignoring"&gt;&lt;a href="https://www.loopwerk.io/articles/2026/expertise/"&gt;Loopwerk: Expertise is the art of ignoring&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Trying to "master" a programming language is a trap. Real expertise comes from learning what you need, when you need it, and ignoring the rest on purpose.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2025-my-year-in-review-better-simple"&gt;&lt;a href="https://www.better-simple.com/personal/2025/12/30/my-year-in-review/"&gt;2025 - My year in review · Better Simple&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page is a personal reflection on the author's experiences and achievements in 2025. It covers various aspects of their life, including personal growth, professional accomplishments, and community involvement.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="technical-blogging-lessons-learned-write-that-blog"&gt;&lt;a href="https://writethatblog.substack.com/p/technical-blogging-lessons-learned"&gt;Technical Blogging Lessons Learned - Write that blog!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Expert tech bloggers share their top tips for others&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mental-models-the-best-way-to-make-intelligent-decisions-100-models-explained"&gt;&lt;a href="https://fs.blog/mental-models/"&gt;Mental Models: The Best Way to Make Intelligent Decisions (~100 Models Explained)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The smartest people in the world use mental models to make intelligent decisions, avoid stupidity, and increase productivity. Let's take a look at how ...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="everything-is-a-ralph-loop"&gt;&lt;a href="https://ghuntley.com/loop/"&gt;everything is a ralph loop&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Ralph is an orchestrator pattern where you allocate the array with the required backing specifications and then give it a goal then looping the goal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-long-now-of-the-web-inside-the-internet-archives-fight-against-forgetting-hackernoon"&gt;&lt;a href="https://hackernoon.com/the-long-now-of-the-web-inside-the-internet-archives-fight-against-forgetting"&gt;The Long Now of the Web: Inside the Internet Archive’s Fight Against Forgetting | HackerNoon&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A deep dive into the Internet Archive's custom tech stack.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-napoleon-technique-postponing-things-to-increase-productivity-effectiviology"&gt;&lt;a href="https://effectiviology.com/napoleon/"&gt;The Napoleon Technique: Postponing Things to Increase Productivity – Effectiviology&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Napoleon technique is a productivity strategy that involves delaying action on tasks that may resolve themselves without immediate intervention.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="antirender-see-through-the-architectural-bs"&gt;&lt;a href="https://antirender.com/"&gt;AntiRender - See Through The Architectural BS&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Upload a glossy architectural render. Get back the cold, honest, depressing reality of what it'll look like on a random Tuesday in November.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="llm-predictions-for-2026-shared-with-oxide-and-friends"&gt;&lt;a href="https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/"&gt;LLM predictions for 2026, shared with Oxide and Friends&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses Simon Willison's predictions for the tech industry in 2026, shared during the Oxide and Friends podcast.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-ai-impacts-skill-formation"&gt;&lt;a href="https://www.anthropic.com/research/AI-assistance-coding-skills"&gt;How AI Impacts Skill Formation&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the dual impact of AI on productivity and skill acquisition. While AI can enhance productivity in well-developed skills, it may hinder the acquisition of new skills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="openclaw-personal-ai-assistant"&gt;&lt;a href="https://openclaw.ai/"&gt;OpenClaw — Personal AI Assistant&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenClaw — The AI that actually does things. Your personal assistant on any platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="claude-code-in-action"&gt;&lt;a href="https://anthropic.skilljar.com/claude-code-in-action"&gt;Claude Code in Action&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Integrate Claude Code into your development workflow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-agent-skills-directory"&gt;&lt;a href="https://skills.sh/"&gt;The Agent Skills Directory&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Discover and install skills for AI agents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="free-claude-code-course-learn-ai-for-non-technical-people"&gt;&lt;a href="https://ccforeveryone.com/"&gt;Free Claude Code Course | Learn AI for Non-Technical People&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn Claude Code IN Claude Code! Free Claude Code course for beginners - no coding experience required. No videos, just doing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="developers-guide-to-multi-agent-patterns-in-adk-google-developers-blog"&gt;&lt;a href="https://developers.googleblog.com/en/developers-guide-to-multi-agent-patterns-in-adk/"&gt;Developer’s guide to multi-agent patterns in ADK - Google Developers Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Move beyond monolithic agents. Discover 8 design patterns for Multi-Agent Systems (MAS) using Google's Agent Development Kit (ADK) to build smarter, more reliable AI applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="agent-designer-overview-vertex-ai-agent-builder-google-cloud-documentation"&gt;&lt;a href="https://docs.cloud.google.com/agent-builder/agent-designer"&gt;Agent Designer overview -- Vertex AI Agent Builder -- Google Cloud Documentation&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Understand Agent Designer's low-code visual interface to design, configure, and test AI agents, integrating models and tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="new-ai-model-predicts-disease-risk-while-you-sleep"&gt;&lt;a href="https://med.stanford.edu/news/all-news/2026/01/ai-sleep-disease.html"&gt;New AI model predicts disease risk while you sleep&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Stanford Medicine scientists and their colleagues created the first artificial intelligence model that can predict more than 100 health conditions from one night’s sleep.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-agents-complete-course-from-beginner-to-intermediate-to-by-marina-wyss-data-science-collective-medium"&gt;&lt;a href="https://medium.com/data-science-collective/ai-agents-complete-course-f226aa4550a1"&gt;AI Agents: Complete Course. From beginner to intermediate to… | by Marina Wyss | Data Science Collective | Medium&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article by Marina Wyss explores the world of AI agents, detailing their significance in 2025 and providing a guide from basic to intermediate levels. It covers the core concepts, applications, and offers practical insights into building AI agents, including no-code options.&lt;/p&gt;
&lt;h3 id="scrollmind-ai-microlearning"&gt;&lt;a href="https://scrollmind.ai/"&gt;ScrollMind - AI Microlearning&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_3"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;ScrollMind offers an engaging way to learn AI through bite-sized cards and quizzes, making it accessible for software engineers and curious minds. The platform focuses on simplifying complex concepts without lengthy videos or heavy math, and it's free to use.&lt;/p&gt;
&lt;h3 id="codex-vs-claude-code-which-is-the-better-ai-coding-agent"&gt;&lt;a href="https://www.builder.io/blog/codex-vs-claude-code"&gt;Codex vs Claude Code: which is the better AI coding agent?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A practical look at Codex vs Claude Code: agents, model choices, costs, and the workflows they enable in real projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="opencode-vs-claude-code"&gt;&lt;a href="https://www.builder.io/blog/opencode-vs-claude-code"&gt;OpenCode vs Claude Code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Is Anthropic's polished CLI better than the open-source alternative? We compare features, the OAuth drama, and why visual context is the missing piece.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="conductor-introducing-context-driven-development-for-gemini-cli-google-developers-blog"&gt;&lt;a href="https://developers.googleblog.com/en/conductor-introducing-context-driven-development-for-gemini-cli/"&gt;Conductor: Introducing context-driven development for Gemini CLI - Google Developers Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Conductor for Gemini CLI enables context-driven development. Formalize specs and plans in Markdown to control AI agents &amp;amp; keep code consistent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="jak-prawie-daem-sie-zhakowac-rekruterowi-ben-motyka"&gt;&lt;a href="https://ben.pl/blog/linkedin-scam/"&gt;Jak prawie dałem się zhakować "rekruterowi". - Ben Motyka&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Dostałem wiadomość na LinkedInie, która wyglądała dość standardowo, ale oferta była wyjątkowo kusząca.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-securely-store-secrets-in-environment-variables-miguelgrinbergcom"&gt;&lt;a href="https://blog.miguelgrinberg.com/post/how-to-securely-store-secrets-in-environment-variables"&gt;How to Securely Store Secrets in Environment Variables - miguelgrinberg.com&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_4"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article explores the security risks of storing secrets in environment variables and offers a method to secure them using a password manager like Bitwarden. It provides a detailed example of using the Bitwarden CLI to inject secrets into applications and discusses the challenges of protecting secrets in cloud environments.&lt;/p&gt;
&lt;h3 id="github-dev-secansible-collection-hardening"&gt;&lt;a href="https://github.com/dev-sec/ansible-collection-hardening"&gt;GitHub - dev-sec/ansible-collection-hardening&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This Ansible collection provides battle tested hardening for Linux, SSH, nginx, MySQL&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="objective-see-lulu"&gt;&lt;a href="https://objective-see.org/products/lulu.html"&gt;Objective-See: LuLu&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;LuLu is a free, open-source firewall designed to block unknown outgoing connections on macOS, enhancing privacy and security.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="a-different-way-to-think-about-python-api-clients-paul-writes-software"&gt;&lt;a href="https://paulwrites.software/articles/python-api-clients"&gt;A different way to think about Python API Clients - Paul writes software&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The one frustration I keep seeing again and again with APIs is the client integration story.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-uv-got-so-fast-andrew-nesbitt"&gt;&lt;a href="https://nesbitt.io/2025/12/26/how-uv-got-so-fast.html"&gt;How uv got so fast | Andrew Nesbitt&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;uv’s speed comes from engineering decisions, not just Rust. Static metadata, dropping legacy formats, and standards that didn’t exist five years ago.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="some-notes-on-starting-to-use-django"&gt;&lt;a href="https://jvns.ca/blog/2026/01/27/some-notes-on-starting-to-use-django/"&gt;Some notes on starting to use Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Some notes on starting to use Django&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-farhanalirazadjango-repl"&gt;&lt;a href="https://github.com/FarhanAliRaza/django-repl"&gt;GitHub - FarhanAliRaza/django-repl&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Run django in the browser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-mr-fatalystfastopenapi"&gt;&lt;a href="https://github.com/mr-fatalyst/fastopenapi"&gt;GitHub - mr-fatalyst/fastopenapi&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;FastOpenAPI is a library for generating and integrating OpenAPI schemas using Pydantic v2 and various frameworks (AioHttp, Django, Falcon, Flask, Quart, Sanic, Starlette, Tornado).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-sparcklesrobyn"&gt;&lt;a href="https://github.com/sparckles/robyn"&gt;GitHub - sparckles/Robyn&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Robyn is a Super Fast Async Python Web Framework with a Rust runtime.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="migrating-from-celery-to-django-tasks-paultraylornet"&gt;&lt;a href="https://paultraylor.net/blog/2026/migrating-from-celery-to-django-tasks/"&gt;Migrating From Celery to Django Tasks | PaulTraylor.net&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The blog post provides a detailed guide on migrating from Celery to Django Tasks. It outlines the necessary configuration changes in the settings.py file, such as removing CELERY_ prefixed settings and installing django-tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-farhanalirazadjango-bolt"&gt;&lt;a href="https://github.com/FarhanAliRaza/django-bolt"&gt;GitHub - FarhanAliRaza/django-bolt&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Rust-powered API framework for Django achieving 60k+ RPS. Uses Actix Web for HTTP, PyO3 for Python bridging, msgspec for serialization. Decorator-based routing with built-in auth and middleware. - FarhanAliRaza/django-bolt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="la-suite-numerique-github"&gt;&lt;a href="https://github.com/suitenumerique"&gt;La Suite numérique · GitHub&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;La Suite numérique is a set of open-source applications for digital collaboration and teamwork. It offers modern solutions for the digital workplace. - La Suite numérique&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="top-10-api-management-tools-for-2026-a-deep-dive-for-architects-zuplo-blog"&gt;&lt;a href="https://zuplo.com/blog/top-10-api-management-tools-for-2025-a-deep-dive-for-architects"&gt;Top 10 API Management Tools for 2026: A Deep Dive for Architects | Zuplo Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A comprehensive evaluation of the top 10 API management tools for 2026, focusing on edge performance, AI capabilities, and GitOps workflows for modern architects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="home-local-desktop-linux-on-android"&gt;&lt;a href="https://localdesktop.github.io/"&gt;Home | Local Desktop | Linux on Android&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Local Desktop helps you run a desktop Linux environment on your Android device.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="an-ssg-written-in-shell"&gt;&lt;a href="https://aashvik.com/posts/shell-ssg"&gt;an ssg written in shell&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Notes on writing this site's new, mildly cursed, and fun static site generator in (mostly) POSIX shell.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-quenarytugtainer"&gt;&lt;a href="https://github.com/Quenary/tugtainer"&gt;GitHub - Quenary/tugtainer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An application for automated Docker container updates with a web UI - Quenary/tugtainer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-rberg27doom-coding"&gt;&lt;a href="https://github.com/rberg27/doom-coding"&gt;GitHub - rberg27/doom-coding&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A guide for how to use your smartphone to code anywhere at anytime.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="application-design-center-now-ga-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/products/application-development/application-design-center-now-ga"&gt;Application Design Center now GA | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Application Design Center provides an AI-powered, canvas-style approach to designing and modifying Terraform application templates, and is now GA.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="loot-drop-1100-failed-startup-case-studies-ideas-to-steal"&gt;&lt;a href="https://www.loot-drop.io"&gt;Loot Drop | 1100+ Failed Startup Case Studies &amp;amp; Ideas to Steal&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore 1100+ failed startups and learn from $40B+ in burned venture capital. Discover why they failed, their market potential, and how to rebuild them with today's tech&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="my-obsidian-and-gemini-cli-workflow-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=JGwFsyyewYc"&gt;My Obsidian And Gemini CLI Workflow - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/JGwFsyyewYc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="my-top-5-productivity-apps-that-survived-years-of-testing-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=t98TMoILzug"&gt;My Top 5 Productivity Apps That Survived Years of Testing - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/t98TMoILzug" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="wrzucasz-zdjecia-do-internetu-bad-zobacz-jak-dziaa-osint-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=xl_dw07V4ts"&gt;WRZUCASZ ZDJĘCIA DO INTERNETU? BŁĄD! ZOBACZ JAK DZIAŁA OSINT - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/xl_dw07V4ts" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-1-billion-coca-cola-machine-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=-a29Ygyzc2c"&gt;The $1 Billion Coca-Cola Machine - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/-a29Ygyzc2c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="14-nieoczywistych-zastosowan-notebooklm-perplexity-i-gemini-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=hAkFRpZjv2c"&gt;14 Nieoczywistych Zastosowań NotebookLM, Perplexity i Gemini - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/hAkFRpZjv2c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="przestan-to-robic-przed-snem-kradnie-zdrowie-i-kilka-lat-zycia-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=8V-j-FHFnjo"&gt;Przestań to robić przed snem. Kradnie zdrowie i kilka lat życia 🫨 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/8V-j-FHFnjo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-philosophy-of-software-design-with-john-ousterhout-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=lz451zUlF-k"&gt;The Philosophy of Software Design – with John Ousterhout - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/lz451zUlF-k" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-brutal-truth-about-time-management-no-one-wants-to-hear-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=KTOVuUKIHVw"&gt;The Brutal Truth About Time Management No One Wants to Hear - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/KTOVuUKIHVw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="bad-estimates-destroy-careers-heres-what-to-say-instead-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=2-QCqbMsPDc"&gt;Bad Estimates Destroy Careers (Here’s What to Say Instead) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/2-QCqbMsPDc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ex-google-recruiter-explains-why-lying-gets-you-hired-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=T__1QViXUxk"&gt;Ex-Google Recruiter Explains Why "Lying" Gets You Hired - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/T__1QViXUxk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-build-context-systems-for-ai-agents-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Udx7SLFDsxo"&gt;How to build context systems for AI agents - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Udx7SLFDsxo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-genius-system-behind-the-uber-apps-real-time-map-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=gHIs0Mdow8M"&gt;The Genius System Behind the Uber App’s Real-Time Map - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/gHIs0Mdow8M" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="complete-privacy-setup-for-0-5-or-13month-you-choose-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=hQkKdXZiVj4"&gt;Complete Privacy Setup for $0, $5, or $13/Month (You Choose) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/hQkKdXZiVj4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ten-program-uratowa-piratow-komputerowych-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=nM_ir68Ig5I"&gt;Ten Program Uratował Piratów Komputerowych? - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/nM_ir68Ig5I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="stop-coding-start-architecting-google-antigravity-cloud-run-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=ooHyVrYY_2U"&gt;Stop coding, start architecting: Google Antigravity + Cloud Run - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ooHyVrYY_2U" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="czy-azja-wschodnia-powstrzyma-epidemie-krotkowzrocznosci-dzia-zagraniczny-podcast252-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=qFKHj8R2bIE"&gt;Czy Azja Wschodnia powstrzyma epidemię krótkowzroczności (Dział Zagraniczny Podcast#252) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/qFKHj8R2bIE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-best-programmer-i-know-daniel-terhorst-north-goto-2024-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=tgaKAF_eiOg"&gt;The Best Programmer I Know • Daniel Terhorst-North • GOTO 2024 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/tgaKAF_eiOg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="tiago-forte-from-chaos-to-clarity-my-4-step-weekly-review-system"&gt;&lt;a href="https://www.youtube.com/watch?v=zjKUX7sHEGI"&gt;Tiago Forte -  From Chaos to Clarity: My 4-Step Weekly Review System&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/zjKUX7sHEGI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 31 Jan 2026 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2026-01-31:/2026-january-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2026</category></item><item><title>Year summary - 2025</title><link>https://blog.tobked.dev/2025-summary</link><description>&lt;h1 id="2025"&gt;2025&lt;/h1&gt;
&lt;p&gt;This year was defined by a new job, deep dives into AI, and a return to in-person community events.&lt;/p&gt;
&lt;h2 id="started-a-new-job"&gt;Started a new job&lt;/h2&gt;
&lt;p&gt;In April, I started working for &lt;a href="https://fareharbor.com/"&gt;FareHarbor&lt;/a&gt; (part of &lt;a href="https://www.bookingholdings.com/"&gt;Booking Holdings&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id="conferences-and-meetups"&gt;Conferences and Meetups&lt;/h2&gt;
&lt;p&gt;I attended several inspiring events this year, ranging from massive open-source gatherings to smaller local meetups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fosdem.org"&gt;FOSDEM&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-february-links"&gt;February&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.meetup.com/pl-PL/creative-coding-amsterdam/events/307702713/"&gt;Creative Coding Amsterdam: May Madness @Mollie&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-may-links"&gt;May&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.meetup.com/pl-PL/gdg-nl/events/308084364"&gt;Google Developer Groups: Meet NotebookLM&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.meetup.com/pl-PL/pyamsterdam/events/307658391"&gt;Py.Amsterdam Meetup at Fareharbor&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://luma.com/wkcnkqw5"&gt;AI House: Learn how to get the most out of AI coding assistants with OpenAI&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-october-links"&gt;October&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://luma.com/fwnm7zp8"&gt;AI House: Learn how to get the most out of AI coding assistants with Google&lt;/a&gt; - &lt;a href="https://blog.tobked.dev/2025-december-links"&gt;December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;2025 was the year I embraced AI in my development workflow.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://blog.tobked.dev/2025-may-links"&gt;May&lt;/a&gt;, I started experimenting with &lt;strong&gt;blog automation&lt;/strong&gt;, using LLMs to parse links and generate descriptions for my monthly posts.&lt;/p&gt;
&lt;p&gt;By the end of the year, I was diving into &lt;a href="https://antigravity.google/"&gt;&lt;strong&gt;Antigravity&lt;/strong&gt;&lt;/a&gt;, a new AI-powered IDE from Google, which I explored just before the &lt;a href="https://blog.tobked.dev/2025-december-links"&gt;December AI House event&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I participated in the &lt;a href="https://www.10xdevs.pl/"&gt;10xdevs&lt;/a&gt; course, where I gained a better grasp of how to use AI in my development workflow.&lt;/p&gt;
&lt;h2 id="tools-workflow"&gt;Tools &amp;amp; Workflow&lt;/h2&gt;
&lt;p&gt;I made some changes to my tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;terminal&lt;/strong&gt;: switched to &lt;a href="https://ghostty.org/"&gt;Ghostty&lt;/a&gt; after years with &lt;a href="https://iterm2.com/"&gt;iTerm2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window management&lt;/strong&gt;: adopted &lt;a href="https://github.com/lwouis/alt-tab-macos"&gt;Alt-Tab&lt;/a&gt; and &lt;a href="https://rectangleapp.com/"&gt;Rectangle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;process management&lt;/strong&gt;: started using &lt;a href="https://github.com/pvolok/mprocs"&gt;mprocs&lt;/a&gt; to manage multiple processes in a single terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;file management&lt;/strong&gt;: discovered &lt;a href="https://superfile.dev/"&gt;superfile&lt;/a&gt; (TUI file manager) and &lt;a href="https://github.com/9001/copyparty/"&gt;copyparty&lt;/a&gt; (portable file server), but I am not actively using them, treating them more as interesting tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="inspiration"&gt;Inspiration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;book&lt;/strong&gt;: &lt;a href="https://www.goodreads.com/book/show/17255186-the-phoenix-project"&gt;The Phoenix Project&lt;/a&gt; - a "thriller" about DevOps that changed my perspective on IT operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;documentary&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=GfH4QL4VqJ0"&gt;Python: The Documentary&lt;/a&gt; - a nostalgic look at the origins of the language I use daily.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;video series&lt;/strong&gt;: &lt;a href="https://www.youtube.com/playlist?list=PLxq_lXOUlvQD7UUTnQET1KBYBfJltvL4R"&gt;Graham Weaver's "Last Lecture" series&lt;/a&gt;, especially &lt;a href="https://www.youtube.com/watch?v=dZxbVGhpEkI"&gt;"How to Live an Asymmetric Life"&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;As always, I've kept up with my monthly summaries, where I compile a few sentences about each month, along with any interesting articles, tools, and other materials I've come across.
Each month, I also add a personal touch with a photo I've taken.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-january-links"&gt;January&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-february-links"&gt;February&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-march-links"&gt;March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-april-links"&gt;April&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-may-links"&gt;May&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-july-links"&gt;July&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-august-links"&gt;August&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-september-links"&gt;September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-october-links"&gt;October&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-november-links"&gt;November&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2025-december-links"&gt;December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;2025 was a year of "ups and downs," but it was mostly "ups" in terms of work, learning, and community engagement.&lt;/p&gt;
&lt;h2 id="photos"&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img alt="2025_01" src="https://blog.tobked.dev/images/posts/2025/2025_01_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_02" src="https://blog.tobked.dev/images/posts/2025/2025_02_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_03" src="https://blog.tobked.dev/images/posts/2025/2025_03_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_04" src="https://blog.tobked.dev/images/posts/2025/2025_04_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_05" src="https://blog.tobked.dev/images/posts/2025/2025_05_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_06" src="https://blog.tobked.dev/images/posts/2025/2025_06_gcp_office_ams.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_07" src="https://blog.tobked.dev/images/posts/2025/2025_07_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_08" src="https://blog.tobked.dev/images/posts/2025/2025_08_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_09" src="https://blog.tobked.dev/images/posts/2025/2025_09_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_10" src="https://blog.tobked.dev/images/posts/2025/2025_10_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_11" src="https://blog.tobked.dev/images/posts/2025/2025_11_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2025_12" src="https://blog.tobked.dev/images/posts/2025/2025_12_xx.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 01 Jan 2026 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2026-01-01:/2025-summary</guid><category>summary</category><category>summary</category><category>year</category><category>2025</category></item><item><title>Month summary - December 2025</title><link>https://blog.tobked.dev/2025-december-links</link><description>&lt;h1 id="december-2025"&gt;December 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h3 id="ai-house-learning-with-google"&gt;AI House: Learning with Google&lt;/h3&gt;
&lt;p&gt;I recently checked out the &lt;a href="https://luma.com/fwnm7zp8"&gt;AI House event&lt;/a&gt;, which focused on &lt;strong&gt;getting the most out of AI coding assistants with Google&lt;/strong&gt;.
It's fascinating to see how the ecosystem is evolving and how we can leverage these tools more effectively in our daily workflows.
I am currently exploring the &lt;strong&gt;Antigravity&lt;/strong&gt; IDE, so it was interesting to get some first-hand tips straight from Google.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2025/2025_12_ai_house_1.jpg" alt="AI House" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2025/2025_12_ai_house_2.jpg" alt="AI House" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h3 id="tool-pvolokmprocs"&gt;Tool &lt;a href="https://github.com/pvolok/mprocs"&gt;pvolok/mprocs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TUI for running multiple processes&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I found this nifty tool for managing development environments where you need to run several commands simultaneously—like backend servers, frontend builders, and watchers—within a single terminal window.&lt;/p&gt;
&lt;p&gt;I’ve started using it in my blog's Makefile to run the server and handle content hot-reloading, which makes local debugging much smoother.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-websockets-work-a-deep-dive-into-real-time-communication"&gt;&lt;a href="https://www.deepintodev.com/blog/how-websockets-work"&gt;How WebSockets Work: A Deep Dive into Real-Time Communication&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Understand what WebSockets are, why they were invented, how the handshake works, and where real-time communication truly matters. Learn use cases, pros &amp;amp; cons, and when NOT to use WebSockets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="double-booking-problem-system-design-solutions-itnext"&gt;&lt;a href="https://itnext.io/solving-double-booking-at-scale-system-design-patterns-from-top-tech-companies-4c5a3311d8ea"&gt;Double Booking Problem: System Design Solutions | ITNEXT&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how Airbnb and Ticketmaster prevent double bookings using pessimistic locking, optimistic locking, and distributed systems at massive scale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-way-i-run-standup-meetings"&gt;&lt;a href="https://marcgg.com/blog/2024/11/20/standup/"&gt;The way I run standup meetings&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm not a big fan of Scrum, but I really like the idea of having regular short meetings with all team members.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-job-is-not-your-career-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/your-job-is-not-your-career"&gt;Your Job Is Not Your Career - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Stop giving 100% to your employer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="future-proofing-your-software-engineering-career"&gt;&lt;a href="https://addyo.substack.com/p/future-proofing-your-software-engineering"&gt;Future-proofing your Software Engineering career&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Practical strategies for engineering careers in the future&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-job-is-to-deliver-code-you-have-proven-to-work"&gt;&lt;a href="https://simonwillison.net/2025/Dec/18/code-proven-to-work/"&gt;Your job is to deliver code you have proven to work&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article emphasizes the responsibility of software developers to deliver code that is proven to work, highlighting the importance of both manual and automated testing. It criticizes the practice of submitting untested code and discusses the role of coding agents in 2025, while stressing the need for human accountability.&lt;/p&gt;
&lt;h3 id="the-bubble-is-labor-daniel-miessler"&gt;&lt;a href="https://danielmiessler.com/blog/the-real-bubble-is-human-labor"&gt;The Bubble Is Labor | Daniel Miessler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The real disruption isn't AI spending—it's the elimination of the labor side of the capital-labor equation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="practical-guide-to-git-worktree-dev-community"&gt;&lt;a href="https://dev.to/yankee/practical-guide-to-git-worktree-58o0"&gt;Practical Guide to Git Worktree - DEV Community&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Git has a solution to all of our problems, you just need to know where to look. As developers,... Tagged with github, productivity, tutorial, programming.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="oya-studio-better-than-json"&gt;&lt;a href="https://aloisdeniel.com/blog/better-than-json"&gt;Oya Studio - Better than JSON&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article explains why the author prefers Protocol Buffers over JSON for APIs, citing Protobuf's efficiency, strong typing, and binary serialization as key advantages, despite JSON's popularity and human-readability.&lt;/p&gt;
&lt;h3 id="bloom-filters-the-niche-trick-behind-a-16-faster-api-blog-incidentio"&gt;&lt;a href="https://incident.io/blog/bloom-filters"&gt;Bloom filters: the niche trick behind a 16× faster API | Blog | incident.io&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This post is a deep dive into how we improved the P95 latency of an API endpoint from 5s to 0.3s using a niche little computer science trick called a bloom filter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="introduction-to-the-architecture-decision-canvas-making-better-architecture-decisions-together"&gt;&lt;a href="https://www.workingsoftware.dev/introducing-the-software-architecture-decision-canvas/"&gt;Introduction to the Architecture Decision Canvas: Making better architecture decisions together&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A visual, collaborative technique for decision-making in software architecture. With the Architecture Decision Canvas you can coordinate teams, weigh up options and work on decisions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="use-git-like-a-senior-engineer"&gt;&lt;a href="https://medium.com/the-software-journal/use-git-like-a-senior-engineer-42548aee6374"&gt;Use Git Like a Senior Engineer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Master version control with strategies, workflows, and habits that separate junior devs from seasoned pros.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-actually-makes-you-senior-terrible-software"&gt;&lt;a href="https://terriblesoftware.org/2025/11/25/what-actually-makes-you-senior/"&gt;What Actually Makes You Senior – Terrible Software&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The one skill that separates senior engineers from everyone else isn't technical. It's the ability to take ambiguous problems and make them concrete.Retry&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="burnout-working-too-much-terrible-software"&gt;&lt;a href="https://terriblesoftware.org/2024/12/20/burnout-%e2%89%a0-working-too-much/"&gt;Burnout ≠ Working Too Much – Terrible Software&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Burnout often stems from a lack of purpose and agency, not just workload. Empowering teams with meaningful tasks and autonomy fosters motivation and connection to their work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="github-addyosmanigemini-cli-tips"&gt;&lt;a href="https://github.com/addyosmani/gemini-cli-tips"&gt;GitHub - addyosmani/gemini-cli-tips&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Gemini CLI Tips and Tricks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="production-ready-ai-with-google-cloud-learning-path-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/production-ready-ai-with-google-cloud-learning-path"&gt;Production-Ready AI with Google Cloud Learning Path | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to take your AI projects from prototype to production with the Production-Ready AI with Google Cloud Learning Path. This free series covers security, infrastructure, monitoring, and tools like Gemini models, Vertex AI, GKE, and Cloud Run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-month-of-chat-oriented-programming-checkeagle"&gt;&lt;a href="https://checkeagle.com/checklists/njr/a-month-of-chat-oriented-programming/"&gt;A Month of Chat-Oriented Programming - CheckEagle&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the author's experiences using Claude, an AI tool, for a month in a chat-oriented programming (CHOP) approach. The author describes various challenges and observations, such as Claude's eagerness to write code, its tendency to make tests pass by altering them, and its disobedience to explicit instructions. Despite these issues, the author acknowledges the productivity boost Claude provides when it works well. The article also highlights the importance of asking Claude for concerns, enforcing coding standards, and the peculiar effectiveness of swearing at Claude to get its attention. The author concludes that while Claude has its flaws, it can be a valuable tool when used collaboratively and with proper guidance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="my-first-win-building-with-agents-olanodev"&gt;&lt;a href="https://olano.dev/blog/agents2/"&gt;My first win building with agents | olano.dev&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I built a small web app almost exclusively with Claude Code. My previous attempt at coding with agents had made me sick, but this time I felt empowered. What changed?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="anthropics-vision-advantage-is-a-lot-like-apples-from-the-2010s-daniel-miessler"&gt;&lt;a href="https://danielmiessler.com/blog/anthropics-vision-advantage"&gt;Anthropic's Vision Advantage is a Lot Like Apple's from the 2010s | Daniel Miessler&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Anthropic is likened to Apple in the 2010s, focusing on a cohesive ecosystem rather than just AI models. Their Claude Code emphasizes user empathy and context management, offering a vision-led approach that aligns with user needs, similar to Apple's strategy.&lt;/p&gt;
&lt;h3 id="claude-cli-deleted-my-entire-home-directory-wiped-my-whole-mac-claudeai"&gt;&lt;a href="https://old.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/"&gt;Claude CLI deleted my entire home directory! Wiped my whole mac. : ClaudeAI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I was having the Claude CLI clean up my packages in an old repo, and it nuked my whole Mac! What the hell? Has anyone ever had this happen? I’m...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-makes-everyone-average-here-is-the-simple-antidote"&gt;&lt;a href="https://alifeengineered.substack.com/p/ai-makes-everyone-average-here-is"&gt;AI Makes Everyone Average. Here Is The Simple Antidote.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why the annoying stuff is your new advantage&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-build-your-first-chatgpt-app"&gt;&lt;a href="https://read.highgrowthengineer.com/p/how-to-build-your-first-chatgpt-app"&gt;How to Build Your First ChatGPT App&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Take advantage of 800 million weekly active users. Build an app that gets in front of millions of people.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-use-googles-gemini-cli-for-ai-code-assistance-real-python"&gt;&lt;a href="https://realpython.com/how-to-use-gemini-cli/"&gt;How to Use Google's Gemini CLI for AI Code Assistance – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to use Gemini CLI to bring Google's AI-powered coding assistance directly into your terminal to help you analyze and fix code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="testing-gemini-3-pro-image"&gt;&lt;a href="https://medium.com/google-cloud/testing-gemini-3-pro-image-f585236ae411"&gt;🍌 Testing Gemini 3 Pro Image&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;“Gemini 3 Pro Image” (aka Nano Banana Pro 🍌) just launched (in preview) and is the new state-of-the-art image generation/editing model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-use-every-claude-code-feature-by-shrivu-shankar"&gt;&lt;a href="https://blog.sshh.io/p/how-i-use-every-claude-code-feature"&gt;How I Use Every Claude Code Feature - by Shrivu Shankar&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A brain dump of all the ways I've been using Claude Code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="writing-a-good-claudemd-humanlayer-blog"&gt;&lt;a href="https://www.humanlayer.dev/blog/writing-a-good-claude-md"&gt;Writing a good CLAUDE.md | HumanLayer Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is a high-leverage configuration point for Claude Code. Learning how to write a good &lt;code&gt;CLAUDE.md&lt;/code&gt; (or &lt;code&gt;AGENTS.md&lt;/code&gt;) is a key skill for agent-enabled software engineering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="nano-banana-can-be-prompt-engineered-for-extremely-nuanced-ai-image-generation-max-woolfs-blog"&gt;&lt;a href="https://minimaxir.com/2025/11/nano-banana-prompts"&gt;Nano Banana can be prompt engineered for extremely nuanced AI image generation | Max Woolf's Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Nano Banana allows 32,768 input tokens and I’m going to try to use them all dammit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-multimedia-library-google-for-startups"&gt;&lt;a href="https://startup.google.com/gemini/multimedia-library/"&gt;Gemini multimedia library - Google for Startups&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Accelerate your startup's growth with Google AI. Explore how-to videos, innovative use cases, and practical resources on the Gemini multimedia library.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="field-notes-from-shipping-real-code-with-claude"&gt;&lt;a href="https://diwank.space/field-notes-from-shipping-real-code-with-claude"&gt;Field Notes From Shipping Real Code With Claude&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Vibe Coding Isn’t Just a Vibe&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="keep-the-robots-out-of-the-gym-daniel-miessler"&gt;&lt;a href="https://danielmiessler.com/blog/keep-the-robots-out-of-the-gym"&gt;Keep the Robots Out of the Gym | Daniel Miessler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We have to be very careful about what we ask AI to help us with&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="modern-python-monorepo-for-apache-airflow-r-part-1-jare-potiuk"&gt;&lt;a href="https://medium.com/apache-airflow/modern-python-monorepo-for-apache-airflow-part-1-1fe84863e1e1"&gt;Modern Python monorepo for Apache Airflow Ⓡ — Part 1 - Jare Potiuk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Modern Python monorepo for Apache Airflow Ⓡ — Part 1 Part 1. Pains of big modular Python projects This series of blog posts post describes the journey of devex and development and packaging …&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-vs-fastapi-an-honest-comparison"&gt;&lt;a href="https://www.david-dahan.com/blog/comparing-fastapi-and-django"&gt;Django vs. FastAPI, An Honest Comparison&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;After many years of working with Django, I decided to take a closer and more serious look at FastAPI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-deploy-django-6-on-ubuntu-vps-vps-hosting-blog-dedicated-servers-reseller-hosting"&gt;&lt;a href="https://blog.radwebhosting.com/deploy-django-6-on-ubuntu-vps/"&gt;🚀 How To Deploy Django 6 On Ubuntu VPS - VPS Hosting Blog | Dedicated Servers | Reseller Hosting&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Below is a detailed, production-ready guide for How to Deploy Django 6 on Ubuntu VPS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="build-a-rag-app-with-django-mongodb-backend-in-30-minutes-dev-community"&gt;&lt;a href="https://dev.to/mongodb/build-a-rag-app-with-django-mongodb-backend-in-30-minutes-59ao"&gt;Build a RAG App With Django MongoDB Backend in 30 minutes - DEV Community&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The festive holidays are upon us. This is the time for deep reflections, catching up with family and... Tagged with django, python, rag, webdev.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-rapid-architecture"&gt;&lt;a href="https://www.django-rapid-architecture.org/"&gt;Django RAPID architecture&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A curated collection of patterns and idioms for successful, maintainable and robust Django codebases&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-first-look-at-djangos-new-background-tasks-roamnotes"&gt;&lt;a href="https://roam.be/notes/2025/a-first-look-at-djangos-new-background-tasks/"&gt;A first look at Django's new background tasks | Roam*notes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django 6.0 introduces a built-in background tasks framework in &lt;code&gt;django.tasks&lt;/code&gt;. But don't expect to phase out Celery, Huey or other preferred solutions just yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-whats-new-in-60-adam-johnson"&gt;&lt;a href="https://adamj.eu/tech/2025/12/03/django-whats-new-6.0/"&gt;Django: what’s new in 6.0 - Adam Johnson&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django 6.0 was released today, starting another release cycle for the loved and long-lived Python web framework (now 20 years old!). It comes with a mosaic of new features, contributed to by many, some of which I am happy to have helped with. Below is my pick of highlights from the release notes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-maxteabagsqlit"&gt;&lt;a href="https://github.com/Maxteabag/sqlit"&gt;GitHub - Maxteabag/sqlit&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A user friendly TUI for SQL databases. Written in python. Supports SQL server, Mysql, PostreSQL and SQLite, Turso and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="github-anonfadedfadcam"&gt;&lt;a href="https://github.com/anonfaded/FadCam"&gt;GitHub - anonfaded/FadCam&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Open-source, ad-free Android multimedia recorder with background video recording, screen recording, live streaming, and remote camera control&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="cloud-init-the-standard-for-customising-cloud-instances"&gt;&lt;a href="https://cloud-init.io/"&gt;cloud-init - The standard for customising cloud instances&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The standard for customising cloud instances&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-want-microservicesbut-do-you-need-them-docker"&gt;&lt;a href="https://www.docker.com/blog/do-you-really-need-microservices/"&gt;You Want Microservices—But Do You Need Them? | Docker&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Before you default to microservices, weigh hidden costs and consider a modular monolith or SOA. Learn when Docker delivers consistency and scale—without sprawl.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-we-built-a-130000-node-gke-cluster-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/products/containers-kubernetes/how-we-built-a-130000-node-gke-cluster"&gt;How we built a 130,000-node GKE cluster | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn about the architectural innovations we used to build a 130,000-node Kubernetes cluster, and the trends driving demand for these environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="daniel-stenberg-emails"&gt;&lt;a href="https://daniel.haxx.se/email/toc.html"&gt;Daniel Stenberg -- Emails&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This page provides an index of emails with their corresponding numbers and dates. The list starts from March 21, 2009, and goes up to December 18, 2025. Each entry in the index is numbered sequentially and includes the date of the email. The page does not provide the content of the emails, only the metadata such as the date and the sequence number.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="on-bullshit"&gt;&lt;a href="https://en.wikipedia.org/wiki/On_Bullshit"&gt;On Bullshit&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;On Bullshit is a 1986 essay and 2005 book by the American philosopher Harry G. Frankfurt which presents a theory of bullshit that defines the concept and analyzes the applications of bullshit in the context of communication.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="codejack-december-2025-mix"&gt;&lt;a href="https://www.mixcloud.com/code_jack_/december-2025/"&gt;code&lt;em&gt;jack&lt;/em&gt;: December 2025 mix&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;December mix from code&lt;em&gt;jack&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="google-cloud-tech-the-agent-factory"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLIivdWyY5sqLXR1eSkiM5bE6pFlXC-OSs"&gt;Google Cloud Tech: The Agent Factory&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Welcome to The Agent Factory, a podcast that goes beyond the hype and dives into building production ready AI agents. Join hosts Shir Meir Lador and Ivan as they help developers navigate the world of agentic AI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="episode-1709-scott-adams-today-i-explain-how-to-persuade-putin-and-separately-cure-your-laziness"&gt;&lt;a href="https://www.youtube.com/live/y5ZkIDUuHAM"&gt;Episode 1709 Scott Adams: Today I Explain How To Persuade Putin And, Separately, Cure Your Laziness&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Content:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whiteboard1: why self-Help Works&lt;/li&gt;
&lt;li&gt;switchblade drone warfare&lt;/li&gt;
&lt;li&gt;watching elon musk reengineer Twitter&lt;/li&gt;
&lt;li&gt;The potential of avatars with AI and Meta&lt;/li&gt;
&lt;li&gt;CNN S.E. Cupp article critical of Obama&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-even-google-engineers-are-relearning-everything-maddy-zhang-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=7FKNmNYAP-4"&gt;Why Even Google Engineers Are Relearning Everything | Maddy Zhang - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/7FKNmNYAP-4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="269-produktywnosc-od-srodka-piotr-nabielec-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=U9G-crjVjYs"&gt;#269: Produktywność od środka | Piotr Nabielec - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/U9G-crjVjYs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-infinite-software-crisis-jake-nations-netflix-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=eIoohUmYpGI"&gt;The Infinite Software Crisis – Jake Nations, Netflix - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/eIoohUmYpGI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="o-ewolucji-testowania-w-polsce-i-nadchodzacej-rewolucji-ai-gosc-lucjan-stapp-15-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=92YvWcwmzqA"&gt;O ewolucji testowania w Polsce i nadchodzącej rewolucji AI | Gość: Lucjan Stapp | #15 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/92YvWcwmzqA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="are-we-stuck-with-the-same-desktop-ux-forever-ubuntu-summit-2510-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=1fZTOjd_bOQ"&gt;Are we stuck with the same Desktop UX forever? | Ubuntu Summit 25.10 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1fZTOjd_bOQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ai-expert-we-have-2-years-before-everything-changes-we-need-to-start-protesting-tristan-harris-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=BFU1OCkhBwo"&gt;AI Expert: We Have 2 Years Before Everything Changes! We Need To Start Protesting! - Tristan Harris - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/BFU1OCkhBwo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="nadchodzi-era-maszyn-swiat-przyspiesza-jak-nigdy-tomasz-czajka-37-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=XSBDn5VhTNs"&gt;Nadchodzi era maszyn "świat przyspiesza jak nigdy" || Tomasz Czajka #37 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/XSBDn5VhTNs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-two-programmers-built-the-most-complex-automation-game-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=l7HA2HneXU4"&gt;How Two Programmers Built The Most Complex Automation Game - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/l7HA2HneXU4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 31 Dec 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-12-31:/2025-december-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - November 2025</title><link>https://blog.tobked.dev/2025-november-links</link><description>&lt;h1 id="november-2025"&gt;November 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-great-software-quality-collapse-how-we-normalized-catastrophe"&gt;&lt;a href="https://techtrenches.substack.com/p/the-great-software-quality-collapse"&gt;The Great Software Quality Collapse: How We Normalized Catastrophe&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Apple Calculator leaked 32GB of RAM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="top-5-communication-frameworks-for-engineers-you-must-remember"&gt;&lt;a href="https://read.highgrowthengineer.com/p/top-5-communication-framework"&gt;Top 5 Communication Frameworks for Engineers You Must Remember&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Be convincing, be strategic, be heard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-build-career-equity-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/how-to-build-career-equity"&gt;How to Build Career Equity - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We've talked about how to pay off our Career Debt. Now it's time to build the assets that set you free.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dokumentowanie-decyzji-projektowych-o-adr-i-rfc-devszczepaniakpl"&gt;&lt;a href="https://devszczepaniak.pl/dokumentowanie-decyzji-projektowych-o-adr-i-rfc/"&gt;Dokumentowanie decyzji projektowych - o ADR i RFC - devszczepaniak.pl&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ADR i RFC to dokumenty pomagające budować log decyzji projektowych. Artykuł pokażę Ci ich wartość i dlaczego widać ją szczególnie po czasie.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="an-unexpected-benefit-from-quitting-coffee-10-months-in"&gt;&lt;a href="https://hamy.xyz/blog/2025-10_unexpected-benefit-quitting-coffee"&gt;An Unexpected Benefit from Quitting Coffee - 10 Months In&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The author discusses the benefits experienced after quitting coffee for 10 months. Initially, the benefits included better sleep, reduced dependency on caffeine, and less anxiety. However, a new benefit was discovered: the ability to function better after a night of poor sleep. Previously, the author would feel groggy and unproductive without coffee, but now, even after a bad night's sleep, they can still perform tasks like exercising and writing without needing coffee. The author still consumes small amounts of caffeine through iced tea or decaf coffee but has seen significant benefits from reducing caffeine intake.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="never-forget-anything-the-engineers-over-engineered-by-jacob-bennett-medium"&gt;&lt;a href="https://jacob.blog/how-i-never-forget-anything-as-a-staff-software-engineer-8874d89a4d70"&gt;Never forget anything. The engineer’s over-engineered… | by Jacob Bennett | Medium&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve written thousands of notes. Sometimes they’re as benign as a quick shopping list for a trip to the market. Or I’ll jot something down that someone said in a meeting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="never-forget-how-to-delegate-this-is-the-easiest-framework-for-engineers"&gt;&lt;a href="https://read.highgrowthengineer.com/p/one-pager-delegation-framework"&gt;Never forget how to delegate. This is the easiest framework for engineers.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How the most common type of document maps to delegation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pay-yourself-first"&gt;&lt;a href="https://world.hey.com/dhh/pay-yourself-first-e86f8147"&gt;Pay yourself first&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article emphasizes the importance of prioritizing personal interests and meaningful work over routine tasks like emails and meetings. The author, David Heinemeier Hansson, discusses the necessity of 'paying yourself first' by engaging in activities that stimulate intellectual curiosity and personal growth. He argues that by focusing on solving personal problems and pursuing interests, one can develop competencies that lead to greater privileges and opportunities. This approach creates a virtuous cycle of merit, where personal satisfaction and professional success reinforce each other. The article encourages readers to prioritize their own projects and interests to maintain motivation and elevate their talents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tech-predictions-for-2026-and-beyond-all-things-distributed"&gt;&lt;a href="https://www.allthingsdistributed.com/2025/11/tech-predictions-for-2026-and-beyond.html"&gt;Tech predictions for 2026 and beyond | All Things Distributed&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We’ve caught glimpses of a future that values autonomy, empathy, and individual expertise. Where interdisciplinary cooperation influences discovery and creation at an unrelenting pace. In the coming year, we will begin the transition into a new era of AI in the human loop, not the other way around. This cycle will create massive opportunities to solve problems that truly matter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="open-source-is-broken-the-sad-story-of-denis-pushkarev-core-js-izoukhai"&gt;&lt;a href="https://www.izoukhai.com/blog/the-sad-story-of-denis-pushkarev-zloirock-the-creator-of-core-js"&gt;Open-source is broken: the sad story of Denis Pushkarev (core-js) | Izoukhai&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore the sad story of Denis Pushkarev, the creator of the famous core-js library, and the lessons we can learn from him. Is open-source broken ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-smartest-person-in-the-room-asks-the-dumbest-questions"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-smartest-person-in-the-room-asks"&gt;The Smartest Person in the Room Asks the 'Dumbest' Questions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I learned that having the courage to expose the ambiguity makes you look smarter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="5-things-to-try-with-gemini-3-pro-in-gemini-cli-google-developers-blog"&gt;&lt;a href="https://developers.googleblog.com/en/5-things-to-try-with-gemini-3-pro-in-gemini-cli/"&gt;5 things to try with Gemini 3 Pro in Gemini CLI - Google Developers Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Unlock state-of-the-art coding and reasoning in your terminal. Gemini 3 Pro is now in Gemini CLI for Google AI Ultra and paid API subscribers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-3-introducing-the-latest-gemini-ai-model-from-google"&gt;&lt;a href="https://blog.google/products/gemini/gemini-3/"&gt;Gemini 3: Introducing the latest Gemini AI model from Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Today we’re releasing Gemini 3 – our most intelligent model that helps you bring any idea to life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-cli-tips-tricks-by-addy-osmani-elevate"&gt;&lt;a href="https://addyo.substack.com/p/gemini-cli-tips-and-tricks"&gt;Gemini CLI Tips &amp;amp; Tricks - by Addy Osmani - Elevate&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;~30 pro-tips for effectively using Gemini CLI for agentic coding&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-analyzed-180m-jobs-to-see-what-jobs-ai-is-actually-replacing-today"&gt;&lt;a href="https://bloomberry.com/blog/i-analyzed-180m-jobs-to-see-what-jobs-ai-is-actually-replacing-today/"&gt;I analyzed 180M jobs to see what jobs AI is actually replacing today&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article analyzes the impact of AI on various job sectors by examining 180 million job postings. It highlights that while AI tools are influencing certain job roles, they are not causing massive unemployment. Engineering jobs, particularly frontend roles, have seen a decline, possibly due to AI coding tools. Data-related jobs, such as data analysts and data management specialists, are holding steady, as AI tools enhance productivity rather than replace jobs. Customer service roles are not being massively replaced by AI, as human empathy and judgment are still valued. Sales jobs show mixed trends, with some roles declining and others, like Director of Revenue, growing significantly. The article concludes that AI's impact is selective, affecting creative execution roles more than strategic ones, and emphasizes the bifurcation in job trends across various sectors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="przejeli-mu-konto-ale-pomoc-techniczna-google-nie-chce-mu-pomoc-niebezpiecznikpl"&gt;&lt;a href="https://niebezpiecznik.pl/post/przejete-konto-google-gmail-jak-odzyskac-pomoc-suport-kontakt/"&gt;Przejęli mu konto, ale pomoc techniczna Google nie chce mu pomóc -- Niebezpiecznik.pl&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the challenges and potential solutions for recovering a hacked Google account. It highlights the difficulties users face when trying to regain access to their accounts, even when they have security measures like backup emails, phone numbers, and IP logs in place. The article suggests that legal action might be necessary in some cases due to Google's lack of support. It also explores various user experiences and opinions on Google's security practices, including the use of sandbox environments, family groups, and the importance of two-factor authentication. Additionally, it provides insights into the recovery process and the role of TeamYouTube in assisting users.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ey-exposed-4tb-sql-backup-file-to-open-web-researchers-say-the-register"&gt;&lt;a href="https://www.theregister.com/2025/10/29/ey_exposes_4tb_sql_database/"&gt;EY exposed 4TB SQL backup file to open web, researchers say • The Register&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Dutch cybersecurity firm discovered a 4TB+ SQL Server backup file belonging to EY exposed on the internet, leaking sensitive data such as API keys, authentication tokens, and user credentials. The file was unencrypted and publicly accessible, posing a significant security risk. The incident highlights the dangers of cloud platforms where a simple mistake can lead to massive data leaks. EY responded professionally to the breach, and the issue was resolved within a week.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="10-smart-performance-hacks-for-faster-python-code-the-pycharm-blog"&gt;&lt;a href="https://blog.jetbrains.com/pycharm/2025/11/10-smart-performance-hacks-for-faster-python-code/"&gt;10 Smart Performance Hacks For Faster Python Code | The PyCharm Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn practical optimization hacks, from data structures to built-in modules, that boost speed, reduce overhead, and keep your Python code clean.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-ankit404butfoundpywhatkit"&gt;&lt;a href="https://github.com/Ankit404butfound/PyWhatKit"&gt;GitHub - Ankit404butfound/PyWhatKit&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Send WhatsApp message at certain time and many other things&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PyWhatKit is a popular Python library for automating tasks related to WhatsApp and YouTube, offering features like sending messages, playing videos, and converting images to ASCII art.&lt;/p&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="github-ulern-comgraflow-django"&gt;&lt;a href="https://github.com/ulern-com/graflow-django/"&gt;GitHub - ulern-com/graflow-django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django app for building long-running, interactive, and stateful AI workflows using LangGraph - ulern-com/graflow-django&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="the-lazy-git-ui-you-didnt-know-you-need-bwplotka"&gt;&lt;a href="https://www.bwplotka.dev/2025/lazygit/"&gt;The (lazy) Git UI You Didn't Know You Need - @bwplotka&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the advanced features of Lazygit, a Git UI tool, focusing on its ability to handle git diffs with per line or hunk selection and patching. It highlights various workflows that are simplified by Lazygit, such as resetting lines from a commit, iterating on changes, syncing branches, removing unwanted commits, and cherry-picking. The author emphasizes the tool's user-friendly interface, which allows for both mouse-assisted and keyboard shortcut operations, significantly improving common git workflows. The article also reflects on the potential of Lazygit as an inspiration for devtools UX and encourages collaboration on building similar tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-project-search-and-discovery-gitdb"&gt;&lt;a href="https://gitdb.net/"&gt;GitHub Project Search and Discovery - GitDB&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Discover and explore GitHub projects with advanced search filters. Find repositories by language, stars, topics, and more. Browse thousands of open source projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-hunvreusdevpush-like-vercel-but-open-source-and-for-all-languages"&gt;&lt;a href="https://github.com/hunvreus/devpush"&gt;GitHub - hunvreus/devpush: Like Vercel, but open source and for all languages.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Like Vercel, but open source and for all languages. - hunvreus/devpush&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="deploying-and-running-n8n-on-google-cloud-run-google-codelabs"&gt;&lt;a href="https://codelabs.developers.google.com/n8n-cloud-run?hl=en"&gt;Deploying and Running n8n on Google Cloud Run - Google Codelabs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This codelab provides instructions to set up n8n on Google Cloud Run. n8n is an open-source workflow automation tool that allows users to connect different applications and services to automate repetitive tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="deploy-n8n-on-cloud-run-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/deploy-n8n-on-cloud-run"&gt;Deploy n8n on Cloud Run | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With just a few commands, you can deploy n8n to Cloud Run and have it up and running, ready to supercharge your business with AI workflows that can manage spreadsheets, read and draft emails, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="build-your-first-ai-agent-with-gemini-n8n-and-google-cloud-run"&gt;&lt;a href="https://www.philschmid.de/n8n-cloud-run-gemini"&gt;Build your first AI Agent with Gemini, n8n and Google Cloud Run&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to deploy n8n on Google Cloud Run with PostgreSQL and create an AI Agent using Google Gemini 2.5.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="host-github-runners-with-cloud-run-worker-pools-google-cloud-documentation"&gt;&lt;a href="https://cloud.google.com/run/docs/tutorials/github-runner"&gt;Host GitHub runners with Cloud Run worker pools - Google Cloud Documentation&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This tutorial guides users through the process of using self-hosted GitHub runners on Cloud Run worker pools to execute workflows defined in a GitHub repository. It involves deploying a Cloud Run worker pool to handle workloads and optionally deploying a Cloud Run function to support scaling. The tutorial covers deploying a Cloud Run worker pool, creating Secret Manager secrets for secure token storage, and deploying a self-hosted GitHub runner. It also includes instructions for setting up IAM roles, retrieving GitHub information, and configuring the worker pool and autoscaler to manage job execution and scaling.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-host-a-single-turn-adk-agent-on-a-cloud-run-worker-pool-google-codelabs"&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/cloud-run/host-adk-agent-worker-pool-single-turn"&gt;How to Host a single-turn ADK Agent on a Cloud Run worker pool - Google Codelabs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn to host an ADK agent as a worker pool for single-turn use&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="send-this-article-to-your-friend-who-still-thinks-the-cloud-is-a-good-idea"&gt;&lt;a href="https://rameerez.com/send-this-article-to-your-friend-who-still-thinks-the-cloud-is-a-good-idea/"&gt;Send this article to your friend who still thinks the cloud is a good idea&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article argues that cloud services like AWS and Vercel are significantly overpriced, with markups ranging from 10x to 100x. It suggests that the cloud is inherently expensive, not due to user error, but because of the business models of cloud providers. The author shares personal experiences of optimizing AWS costs and concludes that running one's own servers is more cost-effective. The article also discusses the irrationality and defensiveness of cloud proponents, attributing it to their livelihoods being tied to the cloud industry. It highlights a counterculture movement advocating for traditional server management, emphasizing that most businesses do not need the extensive features offered by cloud services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="ticker-dont-die-of-heart-disease"&gt;&lt;a href="https://myticker.com/"&gt;Ticker: Don’t Die of Heart Disease&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This page offers a detailed overview of cardiovascular health management, emphasizing the importance of diagnostic tests, effective treatments, and lifestyle modifications to prevent and mitigate heart disease.&lt;/p&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="czm-rewind-the-truth-about-software-development-with-carl-brown-better-offline-omnyfm"&gt;&lt;a href="https://omny.fm/shows/better-offline/czm-rewind-the-truth-about-software-development-with-carl-brown"&gt;CZM Rewind: The Truth About Software Development with Carl Brown - Better Offline - Omny.fm&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this episode, Ed Zitron is joined by Carl Brown, a veteran software developer and host of The Internet of Bugs, to talk about the realities of software development, what coding LLMs can actually do, and how the media gets it wrong about software engineering at large.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="episode-272-michael-kennedy-managing-your-own-python-infrastructure-the-real-python-podcast"&gt;&lt;a href="https://realpython.com/podcasts/rpp/272/"&gt;Episode #272: Michael Kennedy: Managing Your Own Python Infrastructure – The Real Python Podcast&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How do you deploy your Python application without getting locked into an expensive cloud-based service? This week on the show, Michael Kennedy from the Talk Python podcast returns to discuss his new book, "Talk Python in Production."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="episode-524-38-things-python-developers-should-learn-in-2025-talk-python-to-me-podcast"&gt;&lt;a href="https://talkpython.fm/episodes/show/524/38-things-python-developers-should-learn-in-2025"&gt;Episode #524 - 38 things Python developers should learn in 2025 | Talk Python To Me Podcast&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python in 2025 is different. Threads really are about to run in parallel, installs finish before your coffee cools, and containers are the default. In this episode, we count down 38 things to learn this year: free-threaded CPython, uv ...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="pybay-2025-youtube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL85KuAjbN_gseSuHZTUCgNAHLeKuMDBxI"&gt;PyBay 2025 YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PyBay is the largest python regional conference in the San Francisco Bay area - and 2025 was PyBay's 10th Anniversary!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="djangocon-us-2025-youtube-playlist"&gt;&lt;a href="https://youtube.com/playlist?list=PL2NFhrDSOxgUSZVGkmbMhUpaaZ1ORfpCl"&gt;DjangoCon US 2025 YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Videos from DjangoCon US 2025 in Chicago&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-suck-at-prompting-ai-heres-the-secret-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=pwWBcsxEoLk"&gt;You SUCK at Prompting AI (Here's the secret) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/pwWBcsxEoLk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="i-spent-10000-learning-how-to-talk-heres-what-actually-worked-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=-JlFfVkTymo"&gt;I Spent $10,000 Learning How To Talk (Here's What Actually Worked) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/-JlFfVkTymo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="no-one-sees-it-coming-except-google-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=LQfSfVFc4Ss"&gt;no one sees it coming (except Google) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/LQfSfVFc4Ss" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-future-of-python-and-ai-with-guido-van-rossum-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=cMRvgR8EpOE"&gt;The future of Python and AI with Guido van Rossum - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/cMRvgR8EpOE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 30 Nov 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-11-30:/2025-november-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - October 2025</title><link>https://blog.tobked.dev/2025-october-links</link><description>&lt;h1 id="october-2025"&gt;October 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h3 id="ai-house-openai-meetup"&gt;AI House OpenAI meetup&lt;/h3&gt;
&lt;p&gt;The highlight of the month was the &lt;a href="https://luma.com/wkcnkqw5"&gt;AI House OpenAI meetup&lt;/a&gt; in Amsterdam. It was a great event focused on "Vibe Coding" and getting the most out of OpenAI's coding assistant.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/in/anoukmuis/?originalSubdomain=uk"&gt;Anouk Muis&lt;/a&gt; from OpenAI gave a workshop on ChatGPT's Codex, followed by a panel discussion with &lt;a href="https://www.linkedin.com/in/vladislav-tankov/"&gt;Vladislav Tankov&lt;/a&gt; (Director of AI at JetBrains) and &lt;a href="https://www.linkedin.com/in/japborst/"&gt;Jelmer Borst&lt;/a&gt; (Head of Analytics &amp;amp; AI at Picnic Technologies). It was great to explore practical strategies for effective AI-assisted coding at the new AI House hub.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2025/2025_10_ai_house_open_ai.jpg" alt="AI House" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2025/2025_10_ai_house_open_ai_panel.jpg" alt="AI House panel discussion" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h3 id="tools-updates"&gt;Tools updates&lt;/h3&gt;
&lt;p&gt;I finally switched terminal emulators. I had been struggling with some random key binding issues in &lt;a href="https://www.iterm2.com/"&gt;iTerm2&lt;/a&gt;, but I managed to recreate my preferred workflow with a hotkey window in &lt;a href="https://ghostty.org/"&gt;Ghostty&lt;/a&gt; using its quick terminal feature:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;keybind = global:cmd+enter=toggle_quick_terminal
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I also enabled Touch ID for &lt;code&gt;sudo&lt;/code&gt; commands, so I no longer need to type my password all the time (&lt;a href="https://0xmachos.com/2023-10-01-Touch-ID-sudo/"&gt;link1&lt;/a&gt;, &lt;a href="https://github.com/0xmachos/macos-scripts/blob/master/enable-touchid-sudo"&gt;link2&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;On the window management front, I started using &lt;a href="https://github.com/lwouis/alt-tab-macos"&gt;Alt-Tab&lt;/a&gt; for better windows switching and &lt;a href="https://rectangleapp.com/"&gt;Rectangle&lt;/a&gt; for snapping windows. Both have significantly improved my workflow.&lt;/p&gt;
&lt;h3 id="life"&gt;Life&lt;/h3&gt;
&lt;p&gt;I watched a lot of Graham Weaver videos this month. His "Last Lecture" series gave me a lot of inspiration and motivation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=0SQor2z2QAU"&gt;Last Lecture Series: How to Design a Winnable Game – Graham Weaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=dZxbVGhpEkI"&gt;Last Lecture Series: “How to Live an Asymmetric Life” Graham Weaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=WhkTFEzyqlo"&gt;Last Lecture Series: “Your Life as the Hero’s Journey” Graham Weaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=uxoCnxlxpIk"&gt;Last Lecture Series: "How to Live your Life at Full Power" Graham Weaver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="crafting-software-writing-maintainable-code"&gt;&lt;a href="https://wedgworth.dev/crafting-software-writing-maintainable-code/"&gt;Crafting Software: Writing Maintainable Code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Maintainable code can easily be the difference between long-lived, profitable software, and short-lived money pits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-software-essays-that-shaped-me-refactoring-english"&gt;&lt;a href="https://refactoringenglish.com/blog/software-essays-that-shaped-me/"&gt;The Software Essays that Shaped Me · Refactoring English&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The page explores influential essays that shaped the author's software development philosophy, emphasizing clear test code, the benefits of plain JavaScript, choosing reliable technologies, digital disaster preparedness, and user-friendly input validation.&lt;/p&gt;
&lt;h3 id="advice-i-wish-i-knew-as-a-junior-developer"&gt;&lt;a href="https://raheeljunaid.com/blog/advice-for-developers/"&gt;Advice I Wish I Knew as a Junior Developer&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;The blog post provides advice for junior developers based on the author's experiences in software development. Key points include the importance of working with legacy code, managing expectations by underpromising and overdelivering, maintaining professional relationships for career advancement, and understanding that all code is temporary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-productive-discomfort-zone-why-real-career-growth-feels-awful"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-productive-discomfort-zone-why"&gt;The Productive Discomfort Zone: Why Real Career Growth Feels Awful&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article explores the 'productive discomfort zone,' a phase where career growth feels challenging and uncomfortable, yet is essential for achieving exceptional success. It contrasts this with the 'flow state,' highlighting the importance of persevering through difficult periods.&lt;/p&gt;
&lt;h3 id="a-one-pager-is-all-you-need-by-jordan-cutler"&gt;&lt;a href="https://read.highgrowthengineer.com/p/a-one-pager-is-all-you-need"&gt;A One-Pager Is All You Need - by Jordan Cutler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The highly valuable tool for influence and moving solutions forward as an engineer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="distributing-your-own-scripts-via-homebrew"&gt;&lt;a href="https://justin.searls.co/posts/how-to-distribute-your-own-scripts-via-homebrew/"&gt;Distributing your own scripts via Homebrew&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_3"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article by Justin Searls explains how to distribute CLI tools via Homebrew. It covers setting up a GitHub repository, creating a Homebrew tap, and automating updates with GitHub Actions, highlighting the benefits and challenges of using Homebrew.&lt;/p&gt;
&lt;h3 id="an-engineers-guide-to-cultivating-confidence"&gt;&lt;a href="https://alifeengineered.substack.com/p/an-engineers-guide-to-cultivating"&gt;An Engineer's Guide To Cultivating Confidence&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You don't need to "feel" confident to be confident. Here's how.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-is-good-taste-in-software-engineering"&gt;&lt;a href="https://www.seangoedecke.com/taste/"&gt;What is "good taste" in software engineering?&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_4"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article discusses the concept of 'good taste' in software engineering, emphasizing that it is distinct from technical skill and involves selecting the right engineering values for a project. It highlights the importance of flexibility and understanding trade-offs in design decisions, and how personal values shape an engineer's taste.&lt;/p&gt;
&lt;h3 id="firefox-is-the-best-mobile-browser-kelvins-personal-website"&gt;&lt;a href="https://kelvinjps.com/blog/firefox-best-mobile-browser/"&gt;Firefox is the best mobile browser | Kelvin's personal website&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_5"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Firefox is praised as the best mobile browser due to its open-source nature, privacy features, and support for powerful extensions on Android. The article highlights extensions that block ads and pop-ups, improve user experience on Medium and Twitter/X, and more. It also discusses Firefox's sync feature and customizable homepage.&lt;/p&gt;
&lt;h3 id="examples-are-the-best-documentation"&gt;&lt;a href="https://rakhim.exotext.com/examples-are-the-best-documentation"&gt;Examples are the best documentation&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_6"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article emphasizes the value of examples in technical documentation, arguing that they help developers quickly understand complex concepts without needing to delve into detailed explanations. It highlights the challenges developers face with formal documentation and suggests that examples can make documentation more accessible and practical.&lt;/p&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="neural-networks-simpler-than-you-think-hamzas-blog"&gt;&lt;a href="https://www.hamza.se/blog/neural-networks"&gt;Neural Networks: Simpler Than You Think | Hamza's Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A walkthrough of implementing a neural network from scratch in Python, exploring what makes these seemingly complex systems actually quite straightforward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-mcp-server-connect-llms-to-your-data-real-python"&gt;&lt;a href="https://realpython.com/python-mcp/"&gt;Python MCP Server: Connect LLMs to Your Data – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to build a Model Context Protocol (MCP) server in Python. Connect tools, prompts, and data to AI agents like Cursor for smarter assistants.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pairing-with-claude-code-to-rebuild-my-startups-website"&gt;&lt;a href="https://blog.nseldeib.com/p/pairing-with-claude-code-to-rebuild"&gt;Pairing with Claude Code to Rebuild My Startup’s Website&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Adventures using AI agents, especially Claude Code, and MCP Servers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="effective-context-engineering-for-ai-agents-anthropic"&gt;&lt;a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents"&gt;Effective context engineering for AI agents \ Anthropic&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_7"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article explores context engineering as a critical aspect of AI development, focusing on optimizing the information used by AI models to achieve desired behaviors. It emphasizes the need for careful token curation due to the limitations of large language models and provides strategies for effective context management.&lt;/p&gt;
&lt;h3 id="vibing-a-non-trivial-ghostty-feature-mitchell-hashimoto"&gt;&lt;a href="https://mitchellh.com/writing/non-trivial-vibing"&gt;Vibing a Non-Trivial Ghostty Feature – Mitchell Hashimoto&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_8"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article explores the creation of a macOS unobtrusive update notification feature using AI and agentic coding tools. It emphasizes the importance of human intervention in refining AI-generated code and overcoming challenges, showcasing AI as an assistant in software development.&lt;/p&gt;
&lt;h3 id="the-rise-of-context-engineering"&gt;&lt;a href="https://blog.langchain.com/the-rise-of-context-engineering/"&gt;The rise of "context engineering"&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_9"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Context engineering involves creating dynamic systems to provide the right information and tools for LLMs to perform tasks effectively. It is crucial as LLM applications become more complex, focusing on structured context over clever prompt phrasing. LangGraph and LangSmith are tools that facilitate context engineering.&lt;/p&gt;
&lt;h3 id="github-alvinunrealtmuxai-ai-powered-non-intrusive-terminal-assistant"&gt;&lt;a href="https://github.com/alvinunreal/tmuxai"&gt;GitHub - alvinunreal/tmuxai: AI-Powered, Non-Intrusive Terminal Assistant&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AI-Powered, Non-Intrusive Terminal Assistant.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-picotrexawesome-nano-banana-images"&gt;&lt;a href="https://github.com/PicoTrex/Awesome-Nano-Banana-images/tree/main"&gt;GitHub - PicoTrex/Awesome-Nano-Banana-images&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A curated collection of fun and creative examples generated with Nano Banana🍌, Gemini-2.5-flash-image based model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="void"&gt;&lt;a href="https://voideditor.com/"&gt;Void&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Void is an open source Cursor alternative. Full privacy. Fully-featured.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="v0-by-vercel"&gt;&lt;a href="https://v0.app/"&gt;v0 by Vercel&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your collaborative AI assistant to design, iterate, and scale full-stack applications for the web.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="how-i-almost-got-hacked-by-a-job-interview"&gt;&lt;a href="https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview"&gt;How I Almost Got Hacked By A 'Job Interview'&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I was 30 seconds away from running malware, Here's how a sophisticated scam operation almost got me, and why every developer needs to read this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="weak-password-allowed-hackers-to-sink-a-158-year-old-company"&gt;&lt;a href="https://www.bbc.com/news/articles/cx2gx28815wo"&gt;Weak password allowed hackers to sink a 158-year-old company&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Transport company KNP forced to shut down after international hacker gangs target thousands of UK businesses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="python-lazy-imports-you-can-use-today-pythontest"&gt;&lt;a href="https://pythontest.com/python-lazy-imports-now/"&gt;Python lazy imports you can use today | PythonTest&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There's a proposal for Python to natively support lazy importing starting in Python 3.15. However, there are techniques covered in this post that allow you to use lazy importing now with 3.13, 3.12, ... really every version of Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="beyond-the-ai-hype-guido-van-rossum-on-pythons-philosophy-simplicity-and-the-future-of-programming-odbms-industry-watch"&gt;&lt;a href="https://www.odbms.org/blog/2025/10/beyond-the-ai-hype-guido-van-rossum-on-pythons-philosophy-simplicity-and-the-future-of-programming/"&gt;Beyond the AI Hype: Guido van Rossum on Python’s Philosophy, Simplicity, and the Future of Programming. | ODBMS Industry Watch&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_10"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Guido van Rossum discusses Python's philosophy of simplicity and its role in AI, the importance of type hints, and the challenges of transitioning from Python 2 to 3. He expresses concerns about the ethical implications of AI and hopes for Python's legacy to empower individual developers.&lt;/p&gt;
&lt;h3 id="python-314-cool-new-features-for-you-to-try-real-python"&gt;&lt;a href="https://realpython.com/python314-new-features/"&gt;Python 3.14: Cool New Features for You to Try – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn what's new in Python 3.14, including an upgraded REPL, template strings, lazy annotations, and subinterpreters, with examples to try in your code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="python-and-then-some-using-async-functions-in-celery-with-django-connection-pooling"&gt;&lt;a href="https://mrdonbrown.blogspot.com/2025/10/using-async-functions-in-celery-with.html?m=1"&gt;Python and then some: Using Async Functions in Celery with Django Connection Pooling&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The blog post discusses the challenges and solutions for using asynchronous functions in Celery tasks within a Django application, particularly when using Django's connection pooling feature introduced in version 5.1. It explains that Celery does not natively support async functions, which can lead to issues with database connection pooling. The post details how Django's async ORM works, highlighting the use of &lt;code&gt;ThreadSensitiveContext&lt;/code&gt; to manage database connections in async contexts. It provides a solution for wrapping async functions in Celery tasks using a custom decorator and handling connection cleanup. Additionally, it addresses issues related to Celery's prefork mode and provides code snippets for implementing the solutions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="djangocon-us-2025-recap-portfolio-documentation"&gt;&lt;a href="https://katherinemichel.github.io/blog/conferences/djangocon-us-2025-recap.html"&gt;DjangoCon US 2025 Recap — Portfolio documentation&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_11"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The DjangoCon US 2025 recap covers key presentations, including Will Vincent's insights on Django's limitations for LLMs, Paolo Melchiorre's GeneratedField feature, and Dwayne McDaniel's talk on AI security risks. The event celebrated Django's 20th anniversary with social gatherings and highlighted the importance of community and innovation in the Django ecosystem.&lt;/p&gt;
&lt;h3 id="django-bulk_update-memory-issue-anzes-blog"&gt;&lt;a href="https://blog.pecar.me/django-bulk-update-memory-issue"&gt;Django bulk_update memory issue | Anže’s Blog&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_12"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The blog post addresses a memory issue with Django's &lt;code&gt;bulk_update&lt;/code&gt; method during a migration involving a large number of database objects. The author experienced a memory spike that led to a &lt;code&gt;SIGTERM&lt;/code&gt; and resolved it by implementing custom batching. The issue was reported, but the proposed fix was rejected, leading to a documentation update warning about potential memory usage.&lt;/p&gt;
&lt;h3 id="adding-imports-to-the-django-shell-applied-cartography"&gt;&lt;a href="https://jmduke.com/posts/post/django-shell/"&gt;Adding imports to the Django shell · Applied Cartography&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_13"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The author explains how to customize the Django shell to automatically import specific modules, a feature they missed after removing django-extensions due to Django 5.2's new capabilities.&lt;/p&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-feldroyair-the-new-python-web-framework-by-the-authors-of-two-scoops-of-django"&gt;&lt;a href="https://github.com/feldroy/air"&gt;GitHub - feldroy/air: The new Python web framework by the authors of Two Scoops of Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Air 💨: The new web framework that breathes fresh air into Python web development. Built with FastAPI, Starlette, and Pydantic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="tilt-kubernetes-for-prod-tilt-for-dev"&gt;&lt;a href="https://tilt.dev/"&gt;Tilt | Kubernetes for Prod, Tilt for Dev&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_14"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Tilt is an open-source toolkit that simplifies microservice development by providing smart rebuilds, live updates, and a user-friendly interface for Kubernetes. It enhances productivity through features like holistic app visibility, fast live updates, and built-in best practices.&lt;/p&gt;
&lt;h3 id="github-tw93mole-dig-deep-like-a-mole-to-clean-you-mac"&gt;&lt;a href="https://github.com/tw93/Mole"&gt;GitHub - tw93/Mole: 🐹 Dig deep like a mole to clean you Mac.&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_15"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Mole is a terminal-based tool for cleaning and optimizing Mac systems, offering deep cleanup, app uninstallation, and system optimization features.&lt;/p&gt;
&lt;h3 id="github-lwouisalt-tab-macos"&gt;&lt;a href="https://github.com/lwouis/alt-tab-macos?tab=readme-ov-file"&gt;GitHub - lwouis/alt-tab-macos&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Windows alt-tab on macOS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-slackhqnebula"&gt;&lt;a href="https://github.com/slackhq/nebula"&gt;GitHub - slackhq/nebula&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A scalable overlay networking tool with a focus on performance, simplicity and security&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="zerotier-next-generation-connectivity-and-cybersecurity"&gt;&lt;a href="https://www.zerotier.com/"&gt;ZeroTier | Next-Generation Connectivity and Cybersecurity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Connect everything, from cloud to IoT, with the next-generation global network solution. Simple, resilient, and secure networking in minutes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="every-developer-needs-to-self-host"&gt;&lt;a href="https://dev.to/code42cate/every-developer-needs-to-self-host-43mm"&gt;Every Developer Needs to Self-Host&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_16"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article argues that self-hosting is a valuable practice for developers, offering insights into hardware and network management while potentially saving costs compared to cloud services.&lt;/p&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="indefinite-backpack-travel-jeremy-maluf"&gt;&lt;a href="https://jeremymaluf.com/onebag/"&gt;Indefinite Backpack Travel – Jeremy Maluf&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_17"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This page explores the author's minimalist lifestyle of indefinite travel with only a laptop backpack. It highlights the benefits of onebag travel, such as reduced travel hassles and a focus on essentials. The author provides a detailed list of possessions and emphasizes practicality over consumerism, allowing for spontaneous travel and maintaining social connections.&lt;/p&gt;
&lt;h3 id="grugdesign"&gt;&lt;a href="https://www.grug.design/know"&gt;grug.design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Grug Brained Designer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="last-lecture-series-how-to-design-a-winnable-game-graham-weaver"&gt;&lt;a href="https://www.youtube.com/watch?v=0SQor2z2QAU"&gt;Last Lecture Series: How to Design a Winnable Game – Graham Weaver&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0SQor2z2QAU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="last-lecture-series-how-to-live-an-asymmetric-life-graham-weaver"&gt;&lt;a href="https://www.youtube.com/watch?v=dZxbVGhpEkI"&gt;Last Lecture Series: “How to Live an Asymmetric Life,” Graham Weaver&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dZxbVGhpEkI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="last-lecture-series-your-life-as-the-heros-journey-graham-weaver"&gt;&lt;a href="https://www.youtube.com/watch?v=WhkTFEzyqlo"&gt;Last Lecture Series: “Your Life as the Hero’s Journey,” Graham Weaver&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/WhkTFEzyqlo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="last-lecture-series-how-to-live-your-life-at-full-power-graham-weaver"&gt;&lt;a href="https://www.youtube.com/watch?v=uxoCnxlxpIk"&gt;Last Lecture Series: How to Live your Life at Full Power — Graham Weaver&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/uxoCnxlxpIk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-holy-grail-of-neovim-note-taking"&gt;&lt;a href="https://www.youtube.com/watch?v=5ht8NYkU9wQ"&gt;The Holy Grail of Neovim Note Taking&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/5ht8NYkU9wQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="lecture-9-how-to-read-so-that-you-retain-information"&gt;&lt;a href="https://www.youtube.com/watch?v=uiNB-6SuqVA"&gt;Lecture #9: How to Read so that you &lt;em&gt;Retain&lt;/em&gt; Information&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/uiNB-6SuqVA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="n8n-now-runs-my-entire-homelab"&gt;&lt;a href="https://www.youtube.com/watch?v=budTmdQfXYU"&gt;n8n Now Runs My ENTIRE Homelab&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/budTmdQfXYU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-33-kill-list-hacking-an-assassination-site-on-the-dark-web-carl-miller-chris-monteiro"&gt;&lt;a href="https://www.youtube.com/watch?v=cYZmRp90hss"&gt;DEF CON 33 - Kill List: Hacking an Assassination Site on the Dark Web - Carl Miller, Chris Monteiro&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/cYZmRp90hss" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="what-big-tech-still-gets-wrong-about-great-programmers-casey-muratori"&gt;&lt;a href="https://www.youtube.com/watch?v=gZ2V5VtwrCw"&gt;What Big Tech Still Gets WRONG about Great Programmers | Casey Muratori&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/gZ2V5VtwrCw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_18"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Casey Muratori addresses the common misconceptions held by big tech companies regarding the qualities of great programmers, highlighting the disconnect between industry hiring practices and the true skills that define exceptional programming talent.&lt;/p&gt;
&lt;h3 id="ai-slop-is-destroying-the-internet"&gt;&lt;a href="https://www.youtube.com/watch?v=_zfN9wnPvU0"&gt;AI Slop Is Destroying The Internet&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/_zfN9wnPvU0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="visualizing-transformers-and-attention-talk-for-tng-big-tech-day-24"&gt;&lt;a href="https://www.youtube.com/watch?v=KJtZARuO3JY"&gt;Visualizing transformers and attention | Talk for TNG Big Tech Day '24&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/KJtZARuO3JY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="vibes-wont-cut-it-chris-kelly-augment-code"&gt;&lt;a href="https://www.youtube.com/watch?v=Dc3qOA9WOnE"&gt;Vibes won't cut it — Chris Kelly, Augment Code&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Dc3qOA9WOnE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="googles-notebooklm-is-getting-even-more-powerful"&gt;&lt;a href="https://www.youtube.com/watch?v=i9kiuGIHlMY"&gt;Google’s NotebookLM is Getting Even More Powerful&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/i9kiuGIHlMY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="13-years-in-qa-why-traditional-qa-is-disappearing-and-what-to-do"&gt;&lt;a href="https://www.youtube.com/watch?v=4J53WvB1-4E"&gt;13 Years in QA: Why Traditional QA is Disappearing (And What to Do)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/4J53WvB1-4E" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-aws-outage-uncovered-something-every-developer-should-know"&gt;&lt;a href="https://www.youtube.com/watch?v=X2wmzn-tfiQ"&gt;The AWS Outage Uncovered Something EVERY Developer Should Know&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/X2wmzn-tfiQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 31 Oct 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-10-31:/2025-october-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - September 2025</title><link>https://blog.tobked.dev/2025-september-links</link><description>&lt;h1 id="september-2025"&gt;September 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;I've been testing &lt;a href="https://superfile.dev/"&gt;superfile&lt;/a&gt;, an awesome TUI file manager, as a potential alternative to my long-time favorite, &lt;a href="https://github.com/gokcehan/lf"&gt;lf&lt;/a&gt;. It's always exciting to try new tools.&lt;/p&gt;
&lt;p&gt;I also took a trip down memory lane by watching &lt;a href="http://www.youtube.com/watch?v=GfH4QL4VqJ0"&gt;Python: The Documentary | An origin story&lt;/a&gt;. It reminded me of my early days as a junior Python programmer, specifically a challenging yet rewarding task of rewriting an app from Python 2 to 3. It was a good reminder of how far I've come, and I'm happy for both the "good old times" and the present.&lt;/p&gt;
&lt;h3 id="python-the-documentary-an-origin-story"&gt;&lt;a href="https://www.youtube.com/watch?v=GfH4QL4VqJ0"&gt;Python: The Documentary | An origin story&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/GfH4QL4VqJ0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-scam-called-you-dont-have-to-remember-anything-zettelkasten-method"&gt;&lt;a href="https://zettelkasten.de/posts/the-scam-called-you-dont-have-to-remember-anything"&gt;The Scam Called “You Don't Have to Remember Anything” • Zettelkasten Method&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Debunking the myth that search engines and AI eliminate the need for memory. Building deep knowledge through active learning remains essential for critical thinking, despite promises of instant information access.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-workflows-tips-and-tricks"&gt;&lt;a href="https://blog.frankel.ch/github-workflows-tips-tricks/"&gt;GitHub workflows tips and tricks&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article provides tips and tricks for using GitHub Workflows, emphasizing the use of 'act' to run actions locally for testing, and offers best practices for managing GitHub Actions effectively.&lt;/p&gt;
&lt;h3 id="rebase-is-dead-long-live-the-squabaserge"&gt;&lt;a href="https://www.jonathancreamer.com/rebase-is-dead-long-live-the-squabaserge"&gt;rebase is dead long live the squabaserge&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article introduces 'squabaserge', a method combining 'git rebase -i' and 'git merge' to maintain a clean commit history and simplify conflict resolution.&lt;/p&gt;
&lt;h3 id="everything-i-know-about-good-api-design"&gt;&lt;a href="https://www.seangoedecke.com/good-api-design"&gt;Everything I know about good API design&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article explores good API design, focusing on REST, JSON, and OpenAPI schema. It discusses idempotency in HTTP verbs, the use of Redis, and common API patterns in big tech SaaS. It also touches on GraphQL's backend service capabilities.&lt;/p&gt;
&lt;h3 id="operating-principles-that-guided-me-to-staff-engineer-part-2-expanding-influence-high-growth-engineer-jordan-cutler"&gt;&lt;a href="https://read.highgrowthengineer.com/p/operating-principles-to-staff-part-2"&gt;Operating Principles That Guided Me to Staff Engineer (Part 2: Expanding Influence) | High Growth Engineer | Jordan Cutler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Deliver more results through influence, relationships, and stronger communication&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="5-books-that-changed-my-engineering-career-forever-tech-world-with-milan-newsletter"&gt;&lt;a href="https://newsletter.techworld-with-milan.com/p/5-books-behind-my-growth-as-a-cto"&gt;5 books that changed my engineering career forever | Tech World With Milan Newsletter&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this newsletter issue, I want to share five books that influenced my journey from engineer to CTO the most. Each of these books contributed beyond just technical knowledge; they challenged my assumptions, introduced new mental models, and ultimately changed how I work and lead teams.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-ambition-is-not-enough-a-life-engineered-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/your-ambition-is-not-enough"&gt;Your Ambition Is Not Enough | A Life Engineered | Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why the most ambitious people I know are the quickest to ask for help.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-secret-sauce-of-amazons-execution-a-life-engineered-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-secret-sauce-of-amazons-execution"&gt;The Secret Sauce of Amazon's Execution | A Life Engineered | Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s not a tool or a process. It’s a specific mindset about agency that changes everything.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="are-you-accumulating-career-debt-a-life-engineered-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/are-you-accumulating-career-debt"&gt;Are You Accumulating Career Debt? | A Life Engineered | Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Short-term comfort feels good, but building long-term equity feels better.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="solving-the-inference-problem-for-open-source-ai-projects-with-github-models-the-github-blog"&gt;&lt;a href="https://github.blog/ai-and-ml/llms/solving-the-inference-problem-for-open-source-ai-projects-with-github-models"&gt;Solving the inference problem for open source AI projects with GitHub Models - The GitHub Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How using GitHub’s free inference API can make your AI-powered open source software more accessible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-powered-non-intrusive-terminal-assistant"&gt;&lt;a href="https://tmuxai.dev/"&gt;AI-Powered, Non-Intrusive Terminal Assistant&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TmuxAI is a non-intrusive terminal assistant that works alongside you in a tmux window. TmuxAI's design philosophy mirrors the way humans collaborate at the terminal. Just as a colleague sitting next to you, TmuxAI observes your screen, understand context from what's visible, and helps accordingly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gpt-5-prompting-guide"&gt;&lt;a href="https://cookbook.openai.com/examples/gpt-5/gpt-5_prompting_guide"&gt;GPT-5 prompting guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We’ve seen significant gains from applying these best practices and adopting our canonical tools whenever possible, and we hope that this guide, along with the prompt optimizer tool we’ve built, will serve as a launchpad for your use of GPT-5.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="spec-kit"&gt;&lt;a href="https://github.com/github/spec-kit"&gt;🌱 Spec Kit&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;💫 Toolkit to help you get started with Spec-Driven Development&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="openai-academy-chatgpt-for-engineers"&gt;&lt;a href="https://academy.openai.com/public/clubs/work-users-ynjqu/resources/use-cases-engineers"&gt;OpenAI Academy | ChatGPT for engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ChatGPT use cases and prompts for engineering teams&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="uv-cheatsheet"&gt;&lt;a href="https://mathspp.com/blog/uv-cheatsheet"&gt;uv cheatsheet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Take your Python 🐍 skills to the next level. 🚀&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="rate-limiting-for-django-websites-djangotricks"&gt;&lt;a href="https://www.djangotricks.com/blog/2025/07/rate-limiting-for-django-websites"&gt;Rate Limiting for Django Websites - DjangoTricks&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_3"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This article explores using Nginx's rate-limiting capabilities to protect Django websites from unwanted traffic spikes caused by crawlers or bots. It provides a practical example of configuring Nginx to limit requests and suggests testing and further steps to enhance security.&lt;/p&gt;
&lt;h3 id="djangotasks-exists-theorangeone"&gt;&lt;a href="https://theorangeone.net/posts/django-dot-tasks-exists"&gt;django.tasks exists :: TheOrangeOne&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_4"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article announces the release of &lt;code&gt;django.tasks&lt;/code&gt;, a new feature in Django that introduces background workers, available in the upcoming Django 6.0 release. It discusses the development process, contributions, and the significance of this feature for Django.&lt;/p&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="jiratui-where-jira-meets-the-command-line"&gt;&lt;a href="https://jiratui.sh"&gt;JiraTUI - Where Jira Meets the Command Line&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;JiraTUI is a command-line tool that integrates with Jira, allowing developers to manage tasks directly from the terminal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="yorukotsuperfile"&gt;&lt;a href="https://github.com/yorukot/superfile"&gt;yorukot/superfile&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Pretty fancy and modern terminal file manager&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="omarchy-beautiful-modern-opinionated-linux-by-dhh"&gt;&lt;a href="https://omarchy.org"&gt;Omarchy — Beautiful, Modern &amp;amp; Opinionated Linux by DHH&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Beautiful, Modern &amp;amp; Opinionated Linux by DHH&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="the-meandering-sea-of-primordial-soupy-thought-kenneth-reitz"&gt;&lt;a href="https://kennethreitz.org/essays/2025-09-16-the-meandering-sea-of-primordial-soupy-thought"&gt;The Meandering Sea of Primordial Soupy Thought | Kenneth Reitz&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sometimes I lie awake at 3 AM, staring at the ceiling, and the full absurdity of existence crashes over me like a debugging error I can't trace ...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="for-good-first-issue-make-your-next-open-source-contribution-matter"&gt;&lt;a href="https://forgoodfirstissue.github.com"&gt;For Good First Issue | Make your next open-source contribution matter.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Making your next open-source contribution make the world better. For Good First Issue is a curated list of accessible issues from open-source projects helping our communities. Start today!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="jak-stworzyc-wasny-serwer-mcp-bez-kodowania-n8n-ai-poradnik-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=V8IGB4AfbHE"&gt;Jak stworzyć własny serwer MCP bez kodowania (n8n AI poradnik) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/V8IGB4AfbHE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_5"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video tutorial guides viewers on creating an MCP server without coding, utilizing n8n AI for a streamlined setup process.&lt;/p&gt;
&lt;h3 id="programming-for-yourself-paul-ganssle-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=NNbq-o5HODY"&gt;Programming for Yourself - Paul Ganssle - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/NNbq-o5HODY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="building-your-own-unified-ai-assistant-using-claude-code-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=iKwRWwabkEc"&gt;Building Your Own Unified AI Assistant Using Claude Code - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/iKwRWwabkEc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-speak-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Unzc731iCUY"&gt;How to Speak - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Unzc731iCUY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_6"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;MIT OpenCourseWare (OCW) offers free and open access to educational materials from thousands of MIT courses, covering a wide range of subjects. It includes syllabi, instructional materials, and learning activities, with some courses featuring videos and faculty insights. OCW supports self-paced learning without the need for enrollment.&lt;/p&gt;
&lt;h3 id="claude-code-jak-dobrze-korzystac-tutorial-budujemy-fullstackowa-aplikacje-do-bookingu-barberow-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=JGOjYFn40xw"&gt;Claude Code - Jak dobrze korzystać? Tutorial: Budujemy fullstack’ową aplikację do booking’u barberów - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/JGOjYFn40xw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_7"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;A tutorial video on using Claude Code to build a full-stack barber booking application, covering setup, development, and deployment.&lt;/p&gt;
&lt;h3 id="how-i-setup-my-mac-terminal-to-make-it-amazing-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=oR_B2gQDVf4"&gt;How I Setup My Mac Terminal To Make It Amazing - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/oR_B2gQDVf4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_8"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video tutorial demonstrates how to configure a Mac terminal using tools like CLI, Tmux, and Neovim to improve productivity and user experience.&lt;/p&gt;
&lt;h3 id="advanced-context-engineering-for-agents-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=IS_y40zY-hc"&gt;Advanced Context Engineering for Agents - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/IS_y40zY-hc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="vibes-wont-cut-it-chris-kelly-augment-code-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Dc3qOA9WOnE"&gt;Vibes won't cut it — Chris Kelly, Augment Code - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Dc3qOA9WOnE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="last-lecture-series-how-to-live-an-asymmetric-life-graham-weaver-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=dZxbVGhpEkI"&gt;Last Lecture Series: “How to Live an Asymmetric Life,” Graham Weaver - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dZxbVGhpEkI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="python-the-documentary-an-origin-story_1"&gt;&lt;a href="https://www.youtube.com/watch?v=GfH4QL4VqJ0"&gt;Python: The Documentary | An origin story&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/GfH4QL4VqJ0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 30 Sep 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-09-30:/2025-september-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - August 2025</title><link>https://blog.tobked.dev/2025-august-links</link><description>&lt;h1 id="august-2025"&gt;August 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h3 id="the-phoenix-project"&gt;&lt;a href="https://www.goodreads.com/book/show/17255186-the-phoenix-project"&gt;The Phoenix Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;The Phoenix Project&lt;/strong&gt; is widely recommended and often found on "must-read" lists for IT professionals. It's a &lt;strong&gt;novel about IT, DevOps, and helping your business win&lt;/strong&gt;, co-authored by Gene Kim, Kevin Behr, and George Spafford. This format, a deliberate homage to &lt;a href="https://www.goodreads.com/book/show/113934.The_Goal"&gt;Eliyahu Goldratt's &lt;em&gt;The Goal&lt;/em&gt;&lt;/a&gt;, makes complex concepts accessible and persuasive to a broad audience, including non-technical business leaders, acting as a "Trojan Horse" for organizational change.&lt;/p&gt;
&lt;p&gt;The story follows &lt;strong&gt;Bill Palmer&lt;/strong&gt;, a Director of Midrange Operations, who receives an unexpected "battlefield promotion" to VP of IT Operations at the fictional auto parts manufacturer, Parts Unlimited. His CEO, Steve Masters, gives him a stark ultimatum: fix the company's critical, over-budget, and behind-schedule &lt;strong&gt;"Phoenix Project"&lt;/strong&gt; in 90 days, or the entire IT department will be outsourced. Bill is dropped into a state of perpetual crisis, characterized by failed change management, siloed conflicts, rogue actors like the CISO John, and systemic bottlenecks. Bill's mentor is &lt;strong&gt;Erik Reid&lt;/strong&gt;, an eccentric prospective board member who reveals wisdom through quizzes and analogies to manufacturing plants, guiding Bill and his team to discover solutions.&lt;/p&gt;
&lt;p&gt;The book introduces several main concepts:&lt;/p&gt;
&lt;h4 id="four-types-of-work"&gt;Four types of work&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Business Projects&lt;/strong&gt;: Initiatives delivering new value to customers, like the Phoenix Project itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal IT Projects&lt;/strong&gt;: Efforts enabling future business projects, such as infrastructure upgrades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changes&lt;/strong&gt;: Modifications from planned work, including code deployments and patches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unplanned Work&lt;/strong&gt;: The most destructive type, comprising emergency fixes and firefighting, which derails planned efforts and is a symptom of technical debt. Unplanned work is called the "silent killer" of productivity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="three-ways"&gt;Three Ways&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The First Way (Flow/Systems Thinking)&lt;/strong&gt;: Focuses on optimizing the entire system for fast, smooth, and predictable work delivery from Development through Operations to the customer. Practices include making work visible (e.g., Kanban boards), limiting Work-In-Process (WIP), and reducing batch sizes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Second Way (Amplifying Feedback Loops)&lt;/strong&gt;: Emphasizes rapid and constant feedback from Operations back to Development to catch and fix problems at the source, building quality into the system. Practices include swarming on problems and blameless post-mortems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Third Way (Continual Experimentation and Learning)&lt;/strong&gt;: Cultivates a high-trust, generative culture where experimentation is encouraged, and failure is an opportunity for learning. It institutionalizes improvement, transforming local discoveries into global knowledge.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="theory-of-constraints-toc"&gt;Theory of Constraints (TOC)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;This theory posits that a system's output is limited by its single greatest bottleneck. At Parts Unlimited, the primary constraint is personified by &lt;strong&gt;Brent&lt;/strong&gt;, a brilliant but indispensable engineer crucial for every critical task. The solution involves re-engineering the system around him using &lt;strong&gt;Goldratt's Five Focusing Steps&lt;/strong&gt;: identify, exploit, subordinate, elevate, and repeat.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;My opinion:&lt;/strong&gt; The book is definitely worth reading. It offers an interesting perspective on how DevOps evolved and how business interacts with IT. Its profound impact stems from providing a relatable blueprint for real-world organizational change, ultimately reframing IT from a siloed cost center into an integrated, strategic driver of business value. It is regarded as a foundational text for the DevOps movement, transforming it from a niche concept to a mainstream global philosophy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="im-worried-it-might-get-bad-daniel-miessler"&gt;&lt;a href="https://danielmiessler.com/blog/im-worried-it-might-get-bad"&gt;I'm Worried It Might Get Bad | Daniel Miessler&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article discusses the author's concerns about the economic situation in the US, focusing on rising costs, credit card debt, and the impact of AI on jobs. It warns of a potential cascade of negative effects leading to economic and social instability.&lt;/p&gt;
&lt;h3 id="the-5-levels-of-communicating-impact-as-an-engineer"&gt;&lt;a href="https://read.highgrowthengineer.com/p/the-5-levels-of-communicating-impact"&gt;The 5 levels of communicating impact as an engineer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Perfect for performance reviews and resumes&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="communicate-like-a-senior-add-the-right-context"&gt;&lt;a href="https://read.highgrowthengineer.com/p/add-the-right-context"&gt;Communicate like a Senior: Add the (right) context&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to avoid the back-and-forth and get unblocked quickly&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="stop-solving-problems-start-anticipating-them"&gt;&lt;a href="https://alifeengineered.substack.com/p/stop-solving-problems-start-anticipating"&gt;Stop Solving Problems. Start Anticipating Them.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A practical guide to looking around corners, at work, in your career, and with your life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-path-to-wisdom-dont-learn-from-your-mistakes"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-path-to-wisdom-dont-learn-from"&gt;The Path To Wisdom - Don't Learn From Your Mistakes&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article argues that it's smarter to learn from other people's mistakes rather than your own.
The author shares a personal story about a failed promotion attempt at Amazon, highlighting the importance of organizational support and learning from others.&lt;/p&gt;
&lt;h3 id="thinkpad-designer-david-hill-dishes-on-unreleased-models-the-register"&gt;&lt;a href="https://www.theregister.com/2025/08/02/thinkpad_david_hill_interview/"&gt;ThinkPad designer David Hill dishes on unreleased models • The Register&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article is an interview with David W. Hill, the former lead designer of ThinkPad under IBM and Lenovo. Hill discusses his career, starting at IBM in 1985, and his involvement in the design of the ThinkPad series from 1995 to 2017. He shares insights into the development of iconic features like the butterfly keyboard and the TrackPoint nub. Hill also talks about his attempts to introduce more butterfly keyboards and a portable all-in-one desktop. He reflects on the evolution of the TrackPoint, including changes to its cap and height, and the introduction of the ThinkLight, an overhead light for keyboards. Hill expresses pride in the ThinkPad X300, developed after Lenovo acquired IBM's PC division, and his efforts to innovate within the constraints of the business.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-productive-impatience-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-art-of-productive-impatience"&gt;The Art Of Productive Impatience - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The difference between being pushy and being productively impatient for your projects and career&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="writing-your-own-simple-tab-completions-for-bash-and-zsh-the-mill-build-tool"&gt;&lt;a href="https://mill-build.org/blog/14-bash-zsh-completion.html"&gt;Writing Your Own Simple Tab-Completions for Bash and Zsh :: The Mill Build Tool&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This blog post by Li Haoyi, dated 7 August 2025, provides a comprehensive guide on setting up shell tab-completions for both Bash and Zsh. It addresses the challenges of creating tab-completions that work across different shells, particularly focusing on providing completion descriptions, which are typically available in Zsh but not in Bash. The post includes detailed code examples and explanations on how to implement basic tab-completion, add descriptions to Zsh completions, and hack Bash to show descriptions. It also covers how to display descriptions for single completions, enhancing the user experience when exploring unfamiliar CLI tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="journaling-system-cobbled-together-with-nix-vim-coreutils-tangled"&gt;&lt;a href="https://tangled.sh/@oppi.li/journal"&gt;journaling system cobbled together with nix, vim, coreutils · tangled&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page describes a journaling system created using Nix, Vim, and Coreutils, inspired by the Bullet Journal method.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-tried-every-todo-app-and-ended-up-with-a-txt-file-alireza-bashiri"&gt;&lt;a href="https://www.al3rez.com/todo-txt-journey"&gt;I Tried Every Todo App and Ended Up With a .txt File - Alireza Bashiri&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The author shares their journey of trying various productivity apps like Notion, Todoist, Things 3, OmniFocus, Asana, Trello, and Any.do, only to return to using a simple text file, &lt;code&gt;todo.txt&lt;/code&gt;, for managing tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="requiem-for-a-10x-engineer-dream-by-oskar-dudycz"&gt;&lt;a href="https://www.architecture-weekly.com/p/requiem-for-a-10x-engineer-dream"&gt;Requiem for a 10x Engineer Dream - by Oskar Dudycz&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;People claim they get 10x productivity boosts with AI coding tools. After my recent experiments with Claude Code, I'm starting to think we're not using these tools the same way. Or that they’re just lying. Or both. See my story, and learn why you should not be like Gabriel!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-have-time-for-everything-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/how-i-have-time-for-everything-59f"&gt;How I Have Time For Everything - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You already have enough time. You just need to know what to do with it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="ai-and-open-source-expanding-apache-airflows-global-impact-through-collaboration-the-apache-software-foundation-blog"&gt;&lt;a href="https://news.apache.org/foundation/entry/ai-and-open-source-expanding-apache-airflows-global-impact-through-collaboration"&gt;AI and Open Source: Expanding Apache Airflow's Global Impact Through Collaboration - The Apache Software Foundation Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the integration of AI in the open-source project Apache Airflow, focusing on translating its user interface into multiple languages. The challenge was to translate over 560 phrases while maintaining the open-source spirit of collaboration. The solution was a 'people-first, AI-assisted' approach, where contributors 'adopted' languages and used AI as a supportive tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="onboarding-for-coding-agents-fuzzycomputercom"&gt;&lt;a href="https://www.fuzzycomputer.com/posts/onboarding"&gt;Onboarding for coding agents - fuzzycomputer.com&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How I shrunk my CLAUDE.md file to 13 lines&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="6-weeks-of-claude-code-puzzmo-blog"&gt;&lt;a href="https://blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/"&gt;6 Weeks of Claude Code - Puzzmo Blog&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This blog post explores the author's six-week journey with Claude Code, an AI tool, highlighting various projects and tasks. The author reflects on the tool's capabilities, comparing it to a pair programming partner, and discusses its potential as a new way to build things.&lt;/p&gt;
&lt;h3 id="my-ai-code-prep-cline-workflow-for-budget-codingdebugging-part-1"&gt;&lt;a href="https://wuu73.org/blog/aiguide1.html"&gt;My AI Code Prep &amp;amp; Cline Workflow for Budget Coding/Debugging (Part 1)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A personal guide on using AI Code Prep GUI, Cline, and various free AI web interfaces like Gemini, Grok, Deepseek, and Poe for cost-effective coding and debugging.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="claude-code-is-all-you-need"&gt;&lt;a href="https://dwyer.co.za/static/claude-code-is-all-you-need.html"&gt;Claude Code Is All You Need&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the author's experiences using Claude Code, an AI tool, for various projects. The author describes building a HackerNews comment ranker plugin to filter out irrelevant comments, creating a Poster Maker as a minimal Canva replacement, and using Claude Code for administrative tasks like renaming bank statement files and merging them into a CSV. The author also shares their experience using Claude Code as a text editor, highlighting its strengths and limitations. Throughout the article, the author reflects on the capabilities of AI in design and writing, expressing both admiration and skepticism.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-the-hell-is-going-on-right-now"&gt;&lt;a href="https://catskull.net/what-the-hell-is-going-on-right-now.html"&gt;What the hell is going on right now?&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_3"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The article critiques the current tech environment where engineers face burnout and junior engineers misuse AI tools, leading to poor quality code. It questions the economic viability of AI companies and highlights the potential negative impact on learning and mentorship in engineering.&lt;/p&gt;
&lt;h3 id="the-reality-of-ai-assisted-software-engineering-productivity"&gt;&lt;a href="https://addyo.substack.com/p/the-reality-of-ai-assisted-software"&gt;The reality of AI-Assisted software engineering productivity&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_4"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;AI can significantly boost productivity in software development by handling repetitive tasks and aiding in documentation and onboarding. However, it struggles with complex legacy systems, autonomous coding, and creative problem-solving, requiring human oversight to ensure code quality and correctness.&lt;/p&gt;
&lt;h3 id="leading-your-engineers-towards-an-ai-assisted-future-pete-hodgson"&gt;&lt;a href="https://blog.thepete.net/blog/2025/06/26/leading-your-engineers-towards-an-ai-assisted-future/"&gt;Leading your engineers towards an AI-assisted future | Pete Hodgson&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses a strategy for engineering leaders to adopt AI-assisted engineering within their organizations. It emphasizes the importance of starting with an experimentation phase to understand AI's capabilities and limitations, followed by adoption and impact phases. The approach involves setting clear goals, using metrics to track progress, and providing organizational support such as training and a Community of Practice. The article highlights the need for a balanced approach to AI adoption, encouraging engineers to engage with AI technology while maintaining human oversight in software design.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="agentsmd"&gt;&lt;a href="https://agents.md/"&gt;AGENTS.md&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AGENTS.md is a simple, open format for guiding coding agents, used by over 20k open-source projects. Think of it as a README for agents.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="void"&gt;&lt;a href="https://voideditor.com/"&gt;Void&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Void is an open source Cursor alternative. Full privacy. Fully-featured.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="5-tiny-phrases-every-engineer-should-use-with-ai"&gt;&lt;a href="https://read.highgrowthengineer.com/p/5-tiny-phrases-every-engineer-should-use-with-ai"&gt;5 Tiny Phrases Every Engineer Should Use With AI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to prevent "AI Slop"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="are-peoples-bosses-really-making-them-use-ai-tools-piccalilli"&gt;&lt;a href="https://piccalil.li/blog/are-peoples-bosses-really-making-them-use-ai/"&gt;Are people’s bosses really making them use AI tools? - Piccalilli&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Andy Bell had heard companies were forcing employees to use AI tools so spoke to developers to determine if that was the case and learned some horrors in the process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="epicenter-soepicenter-github"&gt;&lt;a href="https://github.com/epicenter-so/epicenter/tree/main/apps/whispering"&gt;epicenter-so/epicenter · GitHub&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Press shortcut → speak → get text. Free and open source. More local-first apps soon ❤️ - epicenter/apps/whispering at main · epicenter-so/epicenter&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-cli-github-actions-ai-coding-made-for-collaboration"&gt;&lt;a href="https://blog.google/technology/developers/introducing-gemini-cli-github-actions/"&gt;Gemini CLI GitHub Actions: AI coding made for collaboration&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Today, we’re introducing Gemini CLI GitHub Actions. It’s a no-cost, powerful AI coding teammate for your repository. It acts both as an autonomous agent for critical routine coding tasks, and an on-demand collaborator you can quickly delegate work to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="vibe-coding-the-shadow-it-problem-no-one-saw-coming-the-new-stack"&gt;&lt;a href="https://thenewstack.io/vibe-coding-the-shadow-it-problem-no-one-saw-coming/"&gt;Vibe Coding: The Shadow IT Problem No One Saw Coming - The New Stack&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Vibe coding promises easy AI-generated software but creates massive shadow IT risks for enterprises. Learn why this trend threatens security, compliance and scale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="fstringswtf-python-f-string-quiz"&gt;&lt;a href="https://fstrings.wtf/"&gt;fstrings.wtf - Python F-String Quiz&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Test your knowledge of Python's f-string formatting with this interactive quiz. How well do you know Python's string formatting quirks?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asyncio-a-library-with-too-many-sharp-corners"&gt;&lt;a href="https://sailor.li/asyncio"&gt;asyncio: a library with too many sharp corners&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An explanation of some major issues with asyncio.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pythons-asyncio-a-hands-on-walkthrough-real-python"&gt;&lt;a href="https://realpython.com/async-io-python/"&gt;Python's asyncio: A Hands-On Walkthrough – Real Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore how Python asyncio works and when to use it. Follow hands-on examples to build efficient programs with coroutines and awaitable tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="github-denizsafakabogen"&gt;&lt;a href="https://github.com/denizsafak/abogen"&gt;GitHub - denizsafak/abogen&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Generate audiobooks from EPUBs, PDFs and text with synchronized captions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="lightning-fast-python-on-google-cloud"&gt;&lt;a href="https://medium.com/google-cloud/lightning-fast-python-on-google-cloud-a8ee4438a977"&gt;Lightning Fast Python on Google Cloud ⚡🐍&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Google Cloud Shell now comes with uv (Python’s lightning fast project and package manager) pre-installed! Python development on Google Cloud just got a lot faster and easier as I am excited to…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloud-run-and-docker-collaboration-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/products/serverless/cloud-run-and-docker-collaboration"&gt;Cloud Run and Docker collaboration | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Cloud Run supports Docker Compose spec for multi-container and AI apps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="github-mehdihadeliawesome-software-architecture"&gt;&lt;a href="https://github.com/mehdihadeli/awesome-software-architecture"&gt;GitHub - mehdihadeli/awesome-software-architecture&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;📚 A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="learning-basic-electronics-by-building-fireflies"&gt;&lt;a href="https://a64.in/posts/learning-basic-electronics-by-building-fireflies/"&gt;Learning Basic Electronics By Building FireFlies&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-generated-summary_5"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;The author shares their experience of learning electronics by building a circuit to mimic fireflies. Starting with no knowledge, they learned about components like resistors and transistors, faced challenges, and used AI tools for guidance. The project resulted in creating blinking 'fireflies' that brought joy and a sense of achievement.&lt;/p&gt;
&lt;h3 id="grugdesign"&gt;&lt;a href="https://www.grug.design/know"&gt;grug.design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Grug Brained Designer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="just-in-time-development-with-django-and-htmx-faster-leaner-and-smarter"&gt;&lt;a href="https://djangotv.com/videos/djangocon-europe/2025/djangocon-europe-2025-just-in-time-development-with-django-and-htmx-faster-leaner-and-smarter/"&gt;Just-in-Time Development with Django and HTMX: Faster, Leaner, and Smarter&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Talk: Just-in-Time Development with Django and HTMX: Faster, Leaner, and Smarter by Thomas De Bonnet&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="genspark-ai-6-mega-praktycznych-zastosowan"&gt;&lt;a href="https://www.youtube.com/watch?v=1o60zrL5GoU"&gt;Genspark AI: 6 Mega Praktycznych Zastosowań&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1o60zrL5GoU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="zmien-komputer-w-asystenta-claude-code-2025-poradnik"&gt;&lt;a href="https://www.youtube.com/watch?v=cpvOb10AMaM"&gt;Zmień komputer w asystenta (Claude Code 2025 poradnik)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/cpvOb10AMaM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_6"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This YouTube video is a guide on how to turn your computer into an assistant using Claude Code 2025, likely focusing on productivity or automation.&lt;/p&gt;
&lt;h3 id="introducing-gpt-5"&gt;&lt;a href="https://www.youtube.com/watch?v=0Uu_VJeVVfo"&gt;Introducing GPT-5&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0Uu_VJeVVfo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="typing-your-python-code-like-a-ninja-thiago-bellini-ribeiro"&gt;&lt;a href="https://www.youtube.com/watch?v=DSu483N6H9s"&gt;Typing your Python code like a ninja! - Thiago Bellini Ribeiro&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/DSu483N6H9s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="sekuraktv-jak-wygrywac-ctf-y-20"&gt;&lt;a href="https://www.youtube.com/live/sZfGuXL2wKQ"&gt;SekurakTV: Jak wygrywać CTF-y 2.0&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Zapraszamy na szkolenie z Gynvaelem Coldwindem (szkolenie w języku polskim). Szkolenie potrwa ~4 godziny.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/sZfGuXL2wKQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-configure-neovim-for-python-in-2025"&gt;&lt;a href="https://www.youtube.com/watch?v=IobijoroGE0"&gt;How to Configure Neovim for Python in 2025&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/IobijoroGE0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_7"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Henry Misc shares his Neovim setup for Python development, featuring auto-formatting, real-time linting, LSP integration, a debugger, and snippets, all built on kickstart.nvim.&lt;/p&gt;
&lt;h3 id="i-3d-printed-a-kayak-in-less-than-24-hours"&gt;&lt;a href="https://www.youtube.com/watch?v=9DpMkYDCq9Y"&gt;I 3D Printed a Kayak in Less Than 24 hours&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/9DpMkYDCq9Y" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="high-school-dropout-to-google-principal-sundas-khalid-makes-more-from-content-than-her-tech-salary"&gt;&lt;a href="https://www.youtube.com/watch?v=XvtuW0UN4aA"&gt;High School Dropout to Google Principal: Sundas Khalid Makes More from Content Than Her Tech Salary&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/XvtuW0UN4aA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_8"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video tells the inspiring story of Sundas Khalid, who went from being a high school dropout to a principal at Google, earning more from content creation than her tech salary.&lt;/p&gt;
&lt;h3 id="ai-w-terminalu-claude-code-deep-dive"&gt;&lt;a href="https://www.youtube.com/live/eifcDbiHfFw"&gt;AI w terminalu – Claude Code Deep Dive&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/eifcDbiHfFw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="andrzej-dragan-o-sztucznej-inteligencji-nasza-ignorancja-przestaa-byc-ograniczeniem-asp-2025"&gt;&lt;a href="https://www.youtube.com/watch?v=0D1YCGl_NXM"&gt;Andrzej Dragan o sztucznej inteligencji. “Nasza ignorancja przestała być ograniczeniem” | ASP 2025&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0D1YCGl_NXM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="i-got-the-most-popular-homelab-storage-server-to-run-on-a-pi"&gt;&lt;a href="https://www.youtube.com/watch?v=XvaXemGDSpk"&gt;I got the most popular homelab storage server to run on a Pi&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/XvaXemGDSpk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_9"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video explores the process of running a popular homelab storage server on a Raspberry Pi, detailing the setup, challenges, and performance.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 31 Aug 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-08-31:/2025-august-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - July 2025</title><link>https://blog.tobked.dev/2025-july-links</link><description>&lt;h1 id="july-2025"&gt;July 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month I stumbled upon something that completely blew my mind: &lt;a href="https://github.com/9001/copyparty/"&gt;copyparty&lt;/a&gt;. It's an incredibly versatile and portable file server packed into a single file with zero dependencies.&lt;/p&gt;
&lt;p&gt;As the project on GitHub says:&lt;/p&gt;
&lt;h4 id="github-9001copyparty"&gt;&lt;a href="https://github.com/9001/copyparty/"&gt;GitHub - 9001/copyparty&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps - 9001/copyparty&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's one of those tools that just does everything you need without any fuss. For a great introduction and to see it in action, check out this video:&lt;/p&gt;
&lt;h4 id="introducing-copyparty-the-foss-file-server-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=15_-hgsX2V0"&gt;introducing copyparty, the FOSS file server - YouTube&lt;/a&gt;&lt;/h4&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/15_-hgsX2V0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;Definitely worth a look if you ever need to share files quickly and efficiently.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-to-think-about-time-in-programming-shan-rauf"&gt;&lt;a href="https://shanrauf.com/archive/how-to-think-about-time-in-programming"&gt;How to Think About Time in Programming - Shan Rauf&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A conceptual model for thinking about time in programming that encapsulates the complexity that many programmers cite online&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="stop-coding-like-you-work-at-google-by-aeon-flex"&gt;&lt;a href="https://medium.com/@neonmaxima/stop-coding-like-you-work-at-google-ce9fca31c711"&gt;Stop Coding Like You Work at Google | by Aeon Flex&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s get one thing straight right now. You don’t work at Google. I don’t either. Most of us don’t. And yet, for some reason, there’s this widespread epidemic of developers out here coding like…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="scott-spence-speeding-up-my-zsh-shell"&gt;&lt;a href="https://scottspence.com/posts/speeding-up-my-zsh-shell"&gt;Scott Spence - Speeding Up My ZSH Shell&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Super quick one I want to document here! I got myself on a side quest, again! No biggie, my ZSH shell was taking ages to load. When I say ages, more like 5+ seconds every time I opened a new terminal, that sort of thing can add up. This is just something I’ve lived with over the years, nothing has prompted this other than me wondering why it’s slow, then searching for how to profile it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-career-needs-a-vision-not-more-goals-by-steve-huynh"&gt;&lt;a href="https://alifeengineered.substack.com/p/your-career-needs-a-vision-not-more"&gt;Your Career Needs a Vision, Not More Goals - by Steve Huynh&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why you can hit every target and still feel lost. A simple 3-part framework for an intentional life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-im-not-proud-of-my-170000-youtube-subscribers"&gt;&lt;a href="https://alifeengineered.substack.com/p/why-im-not-proud-of-my-170000-youtube"&gt;Why I'm Not Proud of My 170,000 YouTube Subscribers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Success is an output you can't control. Here's what to focus on instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-deal-with-a-toxic-top-performer-by-dave-bailey"&gt;&lt;a href="https://foundercoach.medium.com/how-to-deal-with-a-toxic-top-performer-b535f3268fc1"&gt;How to Deal With a Toxic Top-Performer | by Dave Bailey&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every founder hires a brilliant jerk. They start as a dream hire, then turn into a cultural liability. Here’s how to fix it by shifting from personality to structure. They know the domain inside out…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mniej-znane-opcje-konfiguracyjne-gita-devszczepaniakpl"&gt;&lt;a href="https://devszczepaniak.pl/mniej-znane-opcje-konfiguracyjne-gita/"&gt;Mniej znane opcje konfiguracyjne Gita - devszczepaniak.pl&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Podnieś swój komfort pracy z Gitem na wyższy poziom. Poznaj nieco mniej znane, lecz bardzo użyteczne opcje konfiguracyjne Gita.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-do-it-danielhaxxse"&gt;&lt;a href="https://daniel.haxx.se/blog/2025/07/13/how-i-do-it/"&gt;How I do it | daniel.haxx.se&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The blog post by Daniel Stenberg discusses his dedication and approach to managing the curl project, an open-source tool he has been leading for decades. He describes his work routine, motivation, and the independence of the curl project. Daniel emphasizes the importance of maintaining high standards, continuous improvement, and the sense of responsibility he feels towards the users of curl. He also touches on his leadership style, which focuses on reducing bureaucracy and encouraging community participation. The post highlights his passion for programming and the balance he maintains between work and personal life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="running-a-million-board-chess-mmo-in-a-single-process-eieiogames"&gt;&lt;a href="https://eieio.games/blog/a-million-realtime-chess-boards-in-a-single-process/"&gt;Running a million-board chess MMO in a single process · eieio.games&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This article explores the development of a system that manages a million real-time chess boards in a single process. It highlights the use of a dense array, a single mutex for simplicity, and Cloudflare for caching to optimize performance and reduce server load. The article also discusses snapshot taking, serialization, and rollback mechanisms.&lt;/p&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="how-ive-run-major-projects"&gt;&lt;a href="https://www.benkuhn.net/pjm/"&gt;How I've run major projects&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page discusses the importance of delegating project management tasks effectively, emphasizing the need for clear, high-level goals with minimal overlap between workstreams.
It highlights that the best project managers are not necessarily the strongest technical individual contributors but are highly organized and focused on end goals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-silent-killer-of-motivation-and-what-to-do-about-it"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-silent-killer-of-motivation-and"&gt;The Silent Killer Of Motivation And What To Do About It&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;3 "Good" Habits That Secretly Lead to Burnout, Fatigue, and Exhaustion&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-showing-up-by-steve-huynh-a-life-engineered"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-art-of-showing-up"&gt;The Art Of Showing Up - by Steve Huynh - A Life Engineered&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The fastest way to get things done is to forget the finish line.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="github-shubhamsabooawesome-llm-apps"&gt;&lt;a href="https://github.com/Shubhamsaboo/awesome-llm-apps"&gt;GitHub - Shubhamsaboo/awesome-llm-apps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Collection of awesome LLM apps with AI Agents and RAG using OpenAI, Anthropic, Gemini and opensource models.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-rise-of-context-engineering"&gt;&lt;a href="https://blog.langchain.com/the-rise-of-context-engineering/"&gt;The rise of "context engineering"&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article discusses the concept of context engineering, which involves building dynamic systems to provide the right information and tools in the right format for large language models (LLMs) to accomplish tasks effectively.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="our-top-guides-to-building-evaluating-and-deploying-generative-ai"&gt;&lt;a href="https://www.linkedin.com/pulse/our-top-guides-building-evaluating-deploying-generative-ai-fjkte/"&gt;Our top guides to building, evaluating, and deploying generative AI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The best way to learn AI is by building. From finding quick ways to deploy open models to building complex, multi-agentic systems, it’s easy to feel overwhelmed by the sheer volume of resources out there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-built-a-claude-code-context-modal-inside-of-neovim-daniel-miessler"&gt;&lt;a href="https://danielmiessler.com/blog/neovim-claude-ai-plugin"&gt;I Built a Claude Code Context Modal Inside of Neovim | Daniel Miessler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sometimes I just wish I had AI right at this moment, right with this text. So I built Kai, an AI popup menu for Neovim that brings Claude directly to your editor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="design-patterns-you-should-unlearn-in-python-part1-lihil"&gt;&lt;a href="https://www.lihil.cc/blog/design-patterns-you-should-unlearn-in-python-part1/"&gt;Design Patterns You Should Unlearn in Python-Part1 | Lihil&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This article explains why some classic design patterns, like Singleton and Builder, are unnecessary in Python due to its dynamic features. It offers simpler, more Pythonic alternatives to these patterns.&lt;/p&gt;
&lt;h3 id="inheritance-over-composition-sometimes-death-and-gravity"&gt;&lt;a href="https://death.andgravity.com/over-composition"&gt;Inheritance over composition, sometimes - death and gravity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Last time, we built a hybrid concurrent.futures executor using inheritance. Today, we're building it again (twice!) using composition and functions only, to figure out which way is better and why. Consider this a worked example.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-gotcha-logging-an-uncaught-exception-ponderings-of-an-andy"&gt;&lt;a href="https://andrewwegner.com/python-gotcha-logging-uncaught-exception.html"&gt;Python Gotcha: Logging an uncaught exception  · Ponderings of an Andy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Uncaught exceptions will crash an application. If you don't know how to log these, it can be difficult to troubleshoot such a crash. Let's walk through this gotcha and see how to fix it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="making-a-simple-http-server-with-asyncio-protocols"&gt;&lt;a href="https://jacobpadilla.com/articles/asyncio-protocols"&gt;Making a Simple HTTP Server with Asyncio Protocols&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to build a fast, minimal HTTP server using asyncio.Protocol, complete with routing, parsing, and response handling from scratch!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="code-reading-the-python-std-lib-module-shelvepy"&gt;&lt;a href="https://www.beyonddream.me/post-5/"&gt;Code reading: The python std lib module - shelve.py&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article provides an in-depth exploration of the Python standard library module 'shelve.py'.urce code. It explains how 'shelve' allows for persistent, dictionary-like objects and highlights key components and methods within the module. The article serves as a guide for understanding and utilizing 'shelve' effectively.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="from-sql-to-sqlmodel-a-cleaner-way-to-work-with-databases-in-python-pybites"&gt;&lt;a href="https://pybit.es/articles/from-sql-to-sqlmodel-a-cleaner-way-to-work-with-databases-in-python/"&gt;From SQL To SQLModel: A Cleaner Way To Work With Databases In Python - Pybites&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;SQLModel is a library that lets you interact with databases through Python code with Python objects and type annotations instead of writing direct SQL queries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="from-rock-bottom-to-production-code-blog"&gt;&lt;a href="https://www.matthewraynor.com/blog/from-rock-bottom-to-production-code"&gt;From Rock Bottom to Production Code – Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Matthew Raynor shares his inspiring journey from a life-altering accident to becoming a self-taught Python/Django developer. After a diving accident left him quadriplegic, Matthew faced numerous challenges, including living in a nursing home. Determined to change his life, he taught himself programming using a stylus strapped to his hands. He started with Python and Django, building multiple full-stack applications, including a business dashboard for an art moving company and his personal website, MatthewRaynor.com. His website serves as a portfolio, blog, e-commerce store, and includes an AI chatbot. Matthew's story is one of resilience, learning, and transformation, showcasing his skills and determination to succeed as a developer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="loopwerk-hosting-your-django-sites-with-coolify"&gt;&lt;a href="https://www.loopwerk.io/articles/2025/coolify-django/"&gt;Loopwerk: Hosting your Django sites with Coolify&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How I moved my Django projects from a manual server setup to Coolify for easier, zero-downtime deployments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-iterate-through-all-registered-url-patterns-adam-johnson"&gt;&lt;a href="https://adamj.eu/tech/2025/07/22/django-iterate-url-patterns/"&gt;Django: iterate through all registered URL patterns - Adam Johnson&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve found it useful, on occasion, to iterate through all registered URL patterns in a Django project. Sometimes this has been for checking URL layouts or auditing which views are registered.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="github-steipeteagent-rules"&gt;&lt;a href="https://github.com/steipete/agent-rules"&gt;GitHub - steipete/agent-rules&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A collection of reusable rules and knowledge documents for AI coding assistants like Claude Code and Cursor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-google-geminigemini-cli"&gt;&lt;a href="https://github.com/google-gemini/gemini-cli"&gt;GitHub - google-gemini/gemini-cli&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An open-source AI agent that brings the power of Gemini directly into your terminal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-9001copyparty_1"&gt;&lt;a href="https://github.com/9001/copyparty/"&gt;GitHub - 9001/copyparty&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps - 9001/copyparty&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="build-and-deploy-a-remote-mcp-server-to-google-cloud-run-in-under-10-minutes-google-cloud-blog"&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/build-and-deploy-a-remote-mcp-server-to-google-cloud-run-in-under-10-minutes"&gt;Build and Deploy a Remote MCP Server to Google Cloud Run in Under 10 Minutes | Google Cloud Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to quickly build and deploy a remote Model Context Protocol (MCP) server to Google Cloud Run, enabling secure and scalable integration of external context with Large Language Models (LLMs).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="jukebox"&gt;&lt;a href="https://www.jukeboxhq.com"&gt;Jukebox&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Turn your phone or any device into a jukebox! Share a link with friends so they can add songs to your shared music queue.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="simon-brown-software-architecture-as-a-contributor-to-high-performing-teams-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=-nWY8Jq5mlA"&gt;Simon Brown - Software architecture as a contributor to high performing teams - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/-nWY8Jq5mlA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="nie-buduj-marki-osobistej-ciemne-strony-dziaania-w-spoecznosci-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=URNzJb4rG0k"&gt;Nie buduj marki osobistej. Ciemne strony działania w społeczności - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/URNzJb4rG0k" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This video explores the dark sides of building a personal brand within the search community, highlighting challenges like maintaining authenticity and avoiding burnout.&lt;/p&gt;
&lt;h3 id="i-make-easier-and-better-decisions-each-day-because-of-this-so-im-open-sourcing-it-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=JOlX4iSBhp8"&gt;I make easier and better decisions each day, because of THIS (so I'm open sourcing it) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/JOlX4iSBhp8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="introducing-copyparty-the-foss-file-server-youtube_1"&gt;&lt;a href="https://www.youtube.com/watch?v=15_-hgsX2V0"&gt;introducing copyparty, the FOSS file server - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/15_-hgsX2V0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 31 Jul 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-07-31:/2025-july-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - June 2025</title><link>https://blog.tobked.dev/2025-june-links</link><description>&lt;h1 id="june-2025"&gt;June 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month was packed with learning, both from books and from the community.&lt;/p&gt;
&lt;p&gt;I finally got around to reading &lt;a href="https://www.goodreads.com/book/show/17255186-the-phoenix-project"&gt;"The Phoenix Project."&lt;/a&gt; It's a novel about IT and DevOps, but it's written more like a thriller, which makes it a really engaging read. It gave me a much better perspective on how development work connects to the larger goals of a business. I highly recommend it if you're interested in seeing the bigger picture and understanding the "why" behind many IT processes.&lt;/p&gt;
&lt;h3 id="google-developer-groups-meet-notebooklm"&gt;&lt;a href="https://www.meetup.com/pl-PL/gdg-nl/events/308084364"&gt;Google Developer Groups: Meet NotebookLM&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I also attended a couple of great local meetups. First, I visited the Google office in Amsterdam for a &lt;a href="(https://www.meetup.com/pl-PL/gdg-nl/events/308084364)"&gt;Google Developer Groups event on NotebookLM&lt;/a&gt;. It was insightful to hear Pablo Felip discuss its applications in education. I'm already familiar with the tool, having used it for my &lt;a href="https://blog.tobked.dev/2024-summary"&gt;2024 Summary&lt;/a&gt;, so it was great to see other use cases for it.&lt;/p&gt;
&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2025/2025_06_gcp_office_ams.jpg" alt="Google Amsterdam Office" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px; margin-bottom: 12px"&gt;Google Amsterdam Office&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2025/2025_06_gcp_notebook_lm.jpg" alt="Pablo Felip presenting on NotebookLM" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px; margin-bottom: 12px"&gt;Pablo Felip presenting on NotebookLM&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="pyamsterdam-meetup-at-fareharbor"&gt;&lt;a href="https://www.meetup.com/pl-PL/pyamsterdam/events/307658391"&gt;Py.Amsterdam Meetup at Fareharbor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Later in the month, the &lt;a href="https://www.meetup.com/pl-PL/pyamsterdam/events/307658391"&gt;Py Amsterdam meetup&lt;/a&gt; was hosted right at &lt;a href="https://fareharbor.com/"&gt;Fareharbor&lt;/a&gt;, the company I'm currently working for and enjoying a lot. In the past, it was always quite a trip to get to the meetups, but this time I just grabbed my coffee mug and walked one floor up from my desk to participate in the amazing event. There were three great talks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An intro by &lt;a href="https://www.linkedin.com/in/ujjwal-tyagi"&gt;Ujjwal Tyagi&lt;/a&gt;, the VP Engineering at FareHarbor.&lt;/li&gt;
&lt;li&gt;An inspiring session by &lt;a href="https://www.linkedin.com/in/iuliaferoli/"&gt;Iulia Feroli&lt;/a&gt; on building her own, more accurate Spotify Wrapped.&lt;/li&gt;
&lt;li&gt;A very relevant talk by my workmate, &lt;a href="https://www.linkedin.com/in/tyronedamasceno/"&gt;Tyrone Damasceno&lt;/a&gt;, asking if it's still possible to develop without AI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The networking afterward was super nice, and I even ran into someone I had met at the Google event earlier in the month.&lt;/p&gt;
&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2025/2025_06_pyams_fh_iulia.jpg" alt="Iulia Feroli presenting on Spotify Wrapped" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px; margin-bottom: 12px"&gt;Iulia Feroli presenting on Spotify Wrapped&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2025/2025_06_pyams_fh_tyron.jpg" alt="Tyrone Damasceno presenting on AI" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px; margin-bottom: 12px"&gt;Tyrone Damasceno presenting on AI&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="what-real-feedback-sounds-like-by-claire-lew"&gt;&lt;a href="https://newsletter.canopy.is/p/what-real-feedback-sounds-like"&gt;What Real Feedback Sounds Like - by Claire Lew&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ve probably faced these exact situations. Here’s how to finally say the thing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ono-you-didnt-mrshiny608"&gt;&lt;a href="https://mrshiny608.github.io/MrShiny608/optimisation/2025/04/22/OhNoYouDidnt.html"&gt;O(no) You Didn’t 😱 | MrShiny608&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A deep dive into why real-world performance often defies Big-O expectations and why context and profiling matter more than theoretical complexity&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-use-my-terminal"&gt;&lt;a href="https://jyn.dev/how-i-use-my-terminal/"&gt;how i use my terminal&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;i have gone a little above and beyond trying to get all the features of VSCode&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="on-instagram-addiction-the-greg-technology-blog"&gt;&lt;a href="https://blog.greg.technology/2025/05/19/on-instagram-addiction.html"&gt;on instagram addiction | the greg technology blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I was addicted to instagram for about a month. it upended my life enough that i realized that i was living with something new-an undesirable habit. and once i realized this, it seemed like it would be wise to try to address it or at least think about it. easier said than done.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gaweda-o-smart-home-pl"&gt;&lt;a href="https://informatykzakladowy.pl/gaweda-o-smart-home/"&gt;Gawęda o Smart Home PL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Zapis i transkrypcja dwugodzinnej gawędy o Smart Home - Informatyk Zakładowy dzieli się swoimi doświadczeniami z inteligentnym domem&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="alex-west"&gt;&lt;a href="https://www.alexwest.co/book-one"&gt;Alex West&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The page details the author's journey through various entrepreneurial attempts, starting with a failed platform idea for sharing top job candidates, followed by a remote job experience that was unsatisfactory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-some-led-lights-feel-uncomfortable-understanding-pwm-flicker-and-better-alternatives-by-amber-case-jun-2025-medium"&gt;&lt;a href="https://caseorganic.medium.com/the-invisible-light-thats-harming-our-health-and-how-we-can-light-things-better-d3916de90521"&gt;Why Some LED Lights Feel Uncomfortable: Understanding PWM Flicker and Better Alternatives | by Amber Case | Jun, 2025 | Medium&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The article explores the discomfort caused by PWM flicker in LED lights, which can lead to eye strain and discomfort. It highlights the experience at a historic chateau where LED lighting disrupted the ambiance. The article explains PWM flicker and suggests alternatives like CCR dimming for a flicker-free experience, emphasizing the importance of flicker-free lighting standards promoted by the Calm Tech Institute.&lt;/p&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="a-receipt-printer-cured-my-procrastination-adhd"&gt;&lt;a href="https://www.laurieherault.com/articles/a-thermal-receipt-printer-cured-my-procrastination"&gt;A receipt printer cured my procrastination [ADHD]&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why can I focus for hours on a game but procrastinate on simple tasks? I finally cracked the code using thermal receipt printer and game design.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="another-day-and-you-have-nothing-to-show-for-it"&gt;&lt;a href="https://alifeengineered.substack.com/p/another-day-and-you-have-nothing"&gt;Another Day And You Have Nothing to Show For It?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Guide to Recognizing "Zero Days" and Turning Them Into High-Impact Work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="start-alone-then-together-why-software-modelling-needs-solitary-brainstorming"&gt;&lt;a href="https://www.architecture-weekly.com/p/start-alone-then-together-why-software"&gt;Start Alone, Then Together: Why Software Modelling Needs Solitary Brainstorming&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Watch a jazz quartet improvise, and you might think they're making it up as they go. They're not. Every riff builds on practised scales and learned patterns. The constraints don't stifle creativity—they make it work. The same goes for software modelling. Before we get into the chaos of group exercise, we need to have the frame and material to improvise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The article advocates for solitary brainstorming in software modeling to prevent hierarchical dominance in meetings. By starting with silent idea generation, all voices are equally heard, leading to more effective and inclusive discussions.&lt;/p&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="making-friends-with-agents-a-mental-model-for-agentic-ai-applications-temporal"&gt;&lt;a href="https://temporal.io/blog/a-mental-model-for-agentic-ai-applications"&gt;Making Friends with Agents: A Mental Model for Agentic AI Applications | Temporal&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Demystify agentic AI: Cornelia Davis offers a clear mental model for developers on how AI agents work, integrating LLMs, tools, prompts, and durable loops.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-many-fallacies-of-ai-wont-take-your-job-but-someone-using-ai-will"&gt;&lt;a href="https://platforms.substack.com/p/the-many-fallacies-of-ai-wont-take"&gt;The many fallacies of 'AI won't take your job, but someone using AI will'&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;True, but utterly useless&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The article argues that the statement 'AI won't take your job, but someone using AI will' is misleading. It highlights eight fallacies in this view, emphasizing that AI is transforming the entire system of work, not just individual tasks. The article uses historical and industry examples to show how focusing on task-level changes misses the broader systemic transformation.&lt;/p&gt;
&lt;h3 id="my-mostly-minimalistic-ai-setup-as-a-senior-engineer-in-big-tech"&gt;&lt;a href="https://read.highgrowthengineer.com/p/minimalistic-ai-setup"&gt;My (mostly) minimalistic AI setup as a Senior Engineer in Big Tech&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This page provides insights into a minimalistic AI setup, highlighting tools like Cursor and Raycast that can significantly improve productivity. It features user comments and discussions, emphasizing a collaborative learning environment.&lt;/p&gt;
&lt;h3 id="the-prompt-engineering-playbook-for-programmers"&gt;&lt;a href="https://addyo.substack.com/p/the-prompt-engineering-playbook-for"&gt;The Prompt Engineering Playbook for Programmers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Turn AI coding assistants into more reliable development partners&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="my-ai-skeptic-friends-are-all-nuts-the-fly-blog"&gt;&lt;a href="https://fly.io/blog/youre-all-nuts/"&gt;My AI Skeptic Friends Are All Nuts · The Fly Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My smartest friends have bananas arguments about LLM coding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="5-non-llm-software-trends-to-be-excited-about"&gt;&lt;a href="https://read.engineerscodex.com/p/5-non-llm-software-trends-to-be-excited"&gt;5 Non-LLM Software Trends To Be Excited About&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Innovations outside the AI spotlight&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="ways-to-optimize-your-code-in-python-appsignal-blog"&gt;&lt;a href="https://blog.appsignal.com/2025/05/28/ways-to-optimize-your-code-in-python.html"&gt;Ways to Optimize Your Code in Python | AppSignal Blog&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This article explores four ways to optimize Python code, focusing on efficient use of data structures, avoiding global variables, encapsulation, and proper namespace management to enhance performance and scalability.&lt;/p&gt;
&lt;h3 id="pycon-us-2025"&gt;&lt;a href="https://georgiker.com/blog/pycon-us-2025/"&gt;PyCon US 2025&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The blog post recounts the experiences at PyCon US 2025, including game testing, the Community Organizers Summit, Lightning Talks, the PyLadies Auction, keynotes, and the PyLadies Lunch. It highlights the community spirit, successful fundraising, and the connections made during the event.&lt;/p&gt;
&lt;h3 id="a-python-dict-that-can-report-which-keys-you-did-not-use"&gt;&lt;a href="https://www.peterbe.com/plog/a-python-dict-that-can-report-which-keys-you-did-not-use"&gt;A Python dict that can report which keys you did not use&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Demonstrates a very basic way, in Python, how to know which fields of a dict you never accessed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="how-to-migrate-your-python-django-projects-to-uv"&gt;&lt;a href="https://www.caktusgroup.com/blog/2025/06/11/migrating-python-django-projects-uv/"&gt;How to Migrate your Python &amp;amp; Django Projects to uv&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Migrating an existing project to uv&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-split-up-a-django-monolith-without-using-microservices"&gt;&lt;a href="https://medium.com/ambient-innovation/how-to-split-up-a-django-monolith-without-using-microservices-e93759c606a7"&gt;How to split up a Django monolith without using microservices&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This article explores methods to decompose a Django monolith without adopting microservices, focusing on the use of custom data objects and the importance of understanding application context and data flow.&lt;/p&gt;
&lt;h3 id="cut-django-database-latency-by-50-70ms-with-native-connection-pooling"&gt;&lt;a href="https://saurabh-kumar.com/articles/2025/06/cut-django-database-latency-by-50-70ms-with-native-connection-pooling/"&gt;Cut Django Database Latency by 50-70ms With Native Connection Pooling&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Deploy Django 5.1's native connection pooling in 10 minutes to cut database latency by 50-70ms, reduce connection overhead by 60-80%, and improve response times by 10-30% with zero external dependencies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-teemupytest-sugar"&gt;&lt;a href="https://github.com/Teemu/pytest-sugar"&gt;GitHub - Teemu/pytest-sugar&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;a plugin for py.test that changes the default look and feel of py.test (e.g. progressbar, show tests that fail instantly)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-macieyngdripdrop-server-support-for-progressive-json"&gt;&lt;a href="https://github.com/macieyng/dripdrop"&gt;GitHub - macieyng/dripdrop: Server support for Progressive JSON.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python server support for Progressive JSON&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="better-django-management-commands-with-django-click-and-django-typer"&gt;&lt;a href="https://www.revsys.com/tidbits/better-django-management-commands-with-django-click-and-django-typer/"&gt;Better Django management commands with django-click and django-typer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Writing Django management commands can involve a ton of boilerplate code. But Revsys uses two libraries that cut our management command code in half while making it more readable and powerful: django-click and django-typer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="github-m4xshenhardtimenvim"&gt;&lt;a href="https://github.com/m4xshen/hardtime.nvim"&gt;GitHub - m4xshen/hardtime.nvim&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Break bad habits, master Vim motions. Contribute to m4xshen/hardtime.nvim development by creating an account on GitHub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="strudel-repl"&gt;&lt;a href="https://strudel.cc/"&gt;Strudel REPL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Strudel is a music live coding environment for the browser, porting the TidalCycles pattern language to JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="gen-ai-studia-podyplomowe-big-data-krzysztof-jedrzejewski-youtube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLL3-3m0jNaWnYW_62xZPeKuicpNA98JJD"&gt;Gen AI - Studia podyplomowe Big Data - Krzysztof Jędrzejewski - YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Materiały na zajęcia w ramach studiów podyplomowych Big Data na UAM: https://wmi.amu.edu.pl/dla-kandydata/studia-podyplomowe/big-data&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pydata-virginia-2025-youtube-playlist"&gt;&lt;a href="https://m.youtube.com/playlist?list=PLGVZCDnMOq0qLS7Mk-jI9jhb4t5UY6yDW"&gt;PyData Virginia 2025 - YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PyData Virginia 2025 YouTube Playlist&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-vs-programmers-4-critical-skills-you-need-to-win-the-race-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Nn08HVq4BHA"&gt;AI vs Programmers: 4 Critical Skills You Need To Win the Race - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Nn08HVq4BHA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="37-insane-linux-commands-you-need-to-know-in-2025-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=6P-vjgPx9ww"&gt;37 INSANE Linux Commands you NEED to Know in 2025 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/6P-vjgPx9ww" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-past-present-future-of-programming-languages-kevlin-henney-goto-2024-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=0y7IFUYUTgg"&gt;The Past, Present &amp;amp; Future of Programming Languages • Kevlin Henney • GOTO 2024 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0y7IFUYUTgg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="develop-your-development-automation-jessica-kerr-goto-2017-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=1jb6_Q4_SMk"&gt;Develop Your Development Automation • Jessica Kerr • GOTO 2017 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1jb6_Q4_SMk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ola-kunysz-czy-mozna-pracowac-inaczej-prosta-droga-branzy-it-do-wypalenia-infoshare-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=NQVjOr4K8f0"&gt;Ola Kunysz - Czy można pracować inaczej? Prosta droga branży IT do wypalenia | Infoshare - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/NQVjOr4K8f0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="andrej-karpathy-software-is-changing-again-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=LCEmiRjPEtQ"&gt;Andrej Karpathy: Software Is Changing (Again) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/LCEmiRjPEtQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;span class="ai-summary"&gt; AI generated summary &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Andrej Karpathy's keynote at AI Startup School highlights the transition to 'Software 3.0', where natural language becomes the new programming interface. He discusses the role of LLMs as utilities and operating systems, and the importance of human-AI collaboration in this new era.&lt;/p&gt;
&lt;h3 id="mvp-why-we-confuse-building-to-learn-with-building-to-earn-jeff-patton-yow-2018-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=NzxjEzA0G0o"&gt;MVP &amp;amp; Why We Confuse Building to Learn with Building to Earn • Jeff Patton • YOW! 2018 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/NzxjEzA0G0o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="behind-the-scenes-of-notions-insane-design-w-notion-team-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=b00sgRR_Vc0"&gt;Behind The Scenes Of Notion's INSANE Design (w. Notion Team) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/b00sgRR_Vc0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="cursor-ai-kurs-vibe-coding-fullstackowa-aplikacja-z-ai-w-4-krokach-cz-1-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=3jwQu95l6Oc"&gt;Cursor AI - Kurs | Vibe Coding - fullstack'owa aplikacja z AI w 4 krokach! (cz. 1) - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/3jwQu95l6Oc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="keeping-track-of-architectural-ish-decisions-in-a-sustainable-way-with-juan-saavedra-dcus-2022-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=_-0zHdJGTlw"&gt;Keeping track of architectural-ish decisions in a sustainable way with Juan Saavedra - DCUS 2022 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/_-0zHdJGTlw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 30 Jun 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-06-30:/2025-june-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - May 2025</title><link>https://blog.tobked.dev/2025-may-links</link><description>&lt;h1 id="may-2025"&gt;May 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h4 id="ai-and-blog-automation"&gt;AI and blog automation&lt;/h4&gt;
&lt;p&gt;It's been five years since I started writing these monthly summaries and link aggregations. Some months are leaner than others in terms of shared content, but I often have a wealth of links to share.&lt;/p&gt;
&lt;p&gt;I've been thinking about the time I spend copy-pasting links and formatting markdown for these posts. While it's not a major issue, I thought, "Why not automate it?" With the current AI hype, it seemed like a fun side project to experiment with LLMs and implement some automation.&lt;/p&gt;
&lt;p&gt;Initially, I considered using Agents, but that quickly felt like overkill for this task. My goal is simple: parse a list of links, extract some basic information from each website, generate an AI-powered description, and compile it into a monthly blog post.
It's definitely not rocket science.&lt;/p&gt;
&lt;p&gt;After some back and forth with Cursor and a few fresh starts, I now have a working pre-alpha version. It's far from perfect, but done is better than perfect, right? I plan to share more details once I've polished it up.&lt;/p&gt;
&lt;h4 id="creative-coding"&gt;Creative Coding&lt;/h4&gt;
&lt;p&gt;This month, I had the pleasure of attending &lt;a href="https://www.meetup.com/pl-PL/creative-coding-amsterdam/events/307702713/"&gt;Creative Coding Amsterdam: May Madness @Mollie&lt;/a&gt;.
It was an awesome meetup with three inspiring presentations. I was particularly impressed by the creativity on display.&lt;/p&gt;
&lt;p&gt;First, &lt;a href="https://tamulaitis.lt/project/dialrhea/"&gt;&lt;strong&gt;Giedrius Tamulaitis&lt;/strong&gt;&lt;/a&gt; showcased his "Doom Phone," a wonderfully absurd project where he turned an old rotary phone into a wireless controller for playing Doom.
Then, &lt;a href="https://ma5a.com/"&gt;&lt;strong&gt;Masa&lt;/strong&gt;&lt;/a&gt; took us on a journey through his interactive pixel art worlds, sharing the evolution of his charming and creative coding projects.
Finally, &lt;a href="https://piterpasma.nl/"&gt;&lt;strong&gt;Piter Pasma&lt;/strong&gt;&lt;/a&gt; dove deep into the beauty and magic of SDFs (Signed Distance Functions) and his "Rayhatcher" algorithm, which creates stunning 3D art with mathematical code.&lt;/p&gt;
&lt;p&gt;Unfortunately, I didn't have the time or stamina to stay for networking afterward, but I'll plan better for the next one. The event was packed with inspiring ideas, and I'm definitely planning to attend more of these meetups in the future.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2025/2025_05_creative_coding.jpg" alt="Creative Coding Amsterdam: May Madness @Mollie" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A snapshot from the first presentation at the Creative Coding Amsterdam meetup, featuring the "Doom Phone." It’s a vintage rotary phone ingeniously rewired to play the classic game Doom—for no practical reason other than pure creative fun.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="reading-rss-content-is-a-skilled-activity"&gt;&lt;a href="https://www.doliver.org/articles/rss-as-a-skill"&gt;Reading RSS content is a skilled activity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Enter RSS: An opportunity to reclaim your attention through simple and open tech.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-life-engineered-visibility-without-bragging-a-practical-guide"&gt;&lt;a href="https://alifeengineered.substack.com/p/visibility-without-bragging-a-practical"&gt;A Life Engineered: Visibility Without Bragging: A Practical Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;5 practical strategies to make your impact visible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dont-be-frupid"&gt;&lt;a href="https://selix.net/notes/dont-be-frupid"&gt;Don’t Be Frupid&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Frupidity: The Silent Killer of Productivity and Innovation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-facebook-served-billions-of-requests-per-second-using-memcached"&gt;&lt;a href="https://read.engineerscodex.com/p/how-facebook-scaled-memcached"&gt;How Facebook served billions of requests per second Using Memcached&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The largest Memcached system in the world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-created-perfect-wiki-and-reached-250k-in-annual-revenue-without-investors-habr"&gt;&lt;a href="https://habr.com/en/articles/905812/"&gt;How I Created Perfect Wiki and Reached $250K in Annual Revenue Without Investors / Habr&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi, my name is Ilia. I founded  Perfect Wiki  — a SaaS product for creating internal company knowledge bases that works directly within Microsoft Teams.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="write-like-you-talk"&gt;&lt;a href="https://www.paulgraham.com/talk.html"&gt;Write Like You Talk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article by Paul Graham discusses the importance of writing in spoken language to make writing more accessible and engaging.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-7-must-read-engineering-management-books-managerdev"&gt;&lt;a href="https://newsletter.manager.dev/p/the-7-best-engineering-management"&gt;The 7 must-read Engineering Management books  - Manager.dev&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Written by Engineering Managers, for Engineering Managers. All you need to know about your job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="working-on-complex-systems-what-i-learned-working-at-google"&gt;&lt;a href="https://www.thecoder.cafe/p/complex-systems"&gt;Working on Complex Systems: What I Learned Working at Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Explore the key characteristics of complex systems and learn practical patterns for tackling complex problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="coding-without-a-laptop-two-weeks-with-ar-glasses-and-linux-on-android-hold-the-robot"&gt;&lt;a href="https://holdtherobot.com/blog/2025/05/11/linux-on-android-with-ar-glasses/"&gt;Coding Without a Laptop - Two Weeks with AR Glasses and Linux on Android | Hold The Robot&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I recently learned something that blew my mind; you can run a full desktop Linux environment on your phone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="from-engineer-to-consultant-the-powerful-shift-from-inward-to-outward-focus"&gt;&lt;a href="https://testdouble.com/insights/from-engineer-to-consultant-the-powerful-shift-from-inward-to-outward-focus"&gt;From engineer to consultant: The powerful shift from inward to outward focus&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article outlines the differences between less experienced engineers and seasoned consultants, particularly in how they engage with unfamiliar codebases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="why-high-performers-make-assertions-the-difference-between-insights-suggestions-and-assertions"&gt;&lt;a href="https://newsletter.weskao.com/p/why-high-performers-make-assertions"&gt;Why high performers make assertions: The difference between insights, suggestions, and assertions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An insight is just a starting point. The rare, courageous thing to do is to develop an assertion, i.e. a hypothesis and point of view that answers "so what?"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="msty"&gt;&lt;a href="https://msty.app/"&gt;Msty&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The easiest way to use local and online AI models.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-use-the-ai-boom-to-level-up-in-your-career-and-land-a-job"&gt;&lt;a href="https://read.highgrowthengineer.com/p/how-to-use-the-ai-boom-to-level-up"&gt;How to use the AI-boom to level up in your career and land a job&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Actionable strategies and exact prompts from the CEO of Formation and ex-Staff Engineer, Sophie Novati&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2025-guide-to-prompt-engineering-in-your-editor-for-software-engineers"&gt;&lt;a href="https://read.highgrowthengineer.com/p/2025-guide-to-prompt-engineering?publication_id=1504485&amp;amp;post_id=163770890&amp;amp;isFreemail=true&amp;amp;r=46ha73&amp;amp;triedRedirect=true"&gt;2025 Guide to Prompt Engineering in your editor for Software Engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tiny prompt tricks with big impact, backed by experience&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="llms-are-making-me-dumber-vincent-cheng"&gt;&lt;a href="https://vvvincent.me/llms-are-making-me-dumber/"&gt;LLMs are Making Me Dumber - Vincent Cheng&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;These are all deliberate trade-offs I make for the sake of output speed. By sacrificing depth in my learning, I can produce substantially more work. I’m unsure if I’m at the correct balance between output quantity and depth of learning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai-tools"&gt;AI Tools&lt;/h2&gt;
&lt;h3 id="crewai"&gt;&lt;a href="https://github.com/crewAIInc/crewAI"&gt;CrewAI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="unclecodecrawl4ai"&gt;&lt;a href="https://github.com/unclecode/crawl4ai"&gt;unclecode/crawl4ai&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler &amp;amp; Scraper.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asgeirtjsystem_prompts_leaks"&gt;&lt;a href="https://github.com/asgeirtj/system_prompts_leaks/"&gt;asgeirtj/system_prompts_leaks&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Collection of extracted System Prompts from popular chatbots like ChatGPT, Claude &amp;amp; Gemini&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tmuxai-intelligent-terminal-assistant"&gt;&lt;a href="https://tmuxai.dev/"&gt;TmuxAI - Intelligent Terminal Assistant&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TmuxAI enhances your existing tmux workflow with AI-powered commands, automation, and context-aware assistance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="cybermonitcom"&gt;&lt;a href="https://cybermonit.com/"&gt;Cybermonit.com&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Dashboard Cyberbezpieczeństwa&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="facebook-isnt-eavesdropping-but-the-truth-is-more-disturbing"&gt;&lt;a href="https://newatlas.com/computers/smartphone-listening-conversations-ads-facebook/"&gt;Facebook isn’t eavesdropping, but the truth is more disturbing&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Last year a longstanding conspiracy was reignited, telling the tale of how your smartphone is listening to your conversations and delivering targeted ads, but it still isn't true and the way you actually get your ads is much more unsettling.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-set-up-a-home-server-that-i-can-access-from-anywhere-medium"&gt;&lt;a href="https://hiruthicsha.medium.com/how-i-set-up-a-home-server-that-i-can-access-from-anywhere-722b7339f54a"&gt;How I Set Up a Home Server That I Can Access from Anywhere | Medium&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the beginning of my home server journey — and I’m taking you along for the ride.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-beauty-of-having-a-pi-hole-den-delimarsky"&gt;&lt;a href="https://den.dev/blog/pihole/"&gt;The Beauty Of Having A Pi-hole · Den Delimarsky&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So, check this little idea that I have - I want to browse the internet without all sorts of unscrupulous actors collecting every little bit of metadata on me and my family they can possibly get their hands on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="14-advanced-python-features"&gt;&lt;a href="https://blog.edward-li.com/tech/advanced-python-features/"&gt;14 Advanced Python Features&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... as someone who’s written Python for the past 12 years, I’ve come across a lot of really interesting, underrated, unique, or (as some might say) “un-pythonic” tricks to really level up what Python can do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="textual-algorithms-for-high-performance-terminal-apps"&gt;&lt;a href="https://textual.textualize.io/blog/2024/12/12/algorithms-for-high-performance-terminal-apps/"&gt;Textual: Algorithms for high performance terminal apps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Textual has been a constant source of programming challenges. Often frustrating but never boring, the challenges arise because the terminal "specification" says nothing about how to build a modern User Interface.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="making-pypis-test-suite-81-faster-the-trail-of-bits-blog"&gt;&lt;a href="https://blog.trailofbits.com/2025/05/01/making-pypis-test-suite-81-faster/"&gt;Making PyPI's test suite 81% faster - The Trail of Bits Blog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Trail of Bits collaborated to optimize PyPI's test suite, reducing execution time from 163 seconds to 30 seconds while increasing the test count from 3,900 to over 4,700.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="the-database-row-that-did-and-didnt-exist-the-future-is-now"&gt;&lt;a href="https://www.mistys-internet.website/blog/blog/2025/05/13/the-database-row-that-did-and-didnt-exist/"&gt;The Database Row That Did and Didn't Exist - The Future Is Now&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every now and then, I run into a bug so mystifying on its face I know it’s going to be a journey just from the error message.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dataclass-for-django-custom-command-arguments-ontowhee"&gt;&lt;a href="https://ontowhee.github.io/2025/05/14/dataclass-for-django-custom-command-arguments.html"&gt;Dataclass For Django Custom Command Arguments | ontowhee&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I was cleaning up a custom Django command yesterday and ended using a dataclass as a way to keep the code DRY.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="github-d4vinciscrapling"&gt;&lt;a href="https://github.com/D4Vinci/Scrapling"&gt;GitHub - D4Vinci/Scrapling:&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;🕷️ An undetectable, powerful, flexible, high-performance Python library to make Web Scraping Easy and Effortless as it should be! - D4Vinci/Scrapling&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="paxtonharedemo-magic"&gt;&lt;a href="https://github.com/paxtonhare/demo-magic"&gt;paxtonhare/demo-magic&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A handy shell script that enables you to write repeatable demos in a bash environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-docker-compose"&gt;&lt;a href="https://awesome-docker-compose.com/"&gt;Awesome Docker Compose&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A collection of self-hosted apps you can quickly set up with Docker Compose&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="manifest-meet-the-1-file-micro-backend"&gt;&lt;a href="https://manifest.build/"&gt;Manifest - Meet the 1-file micro-backend&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Instant Micro-backend with Admin Panel, REST API, Auth, Storage and more. All in one YAML file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="lightnote"&gt;&lt;a href="https://www.lightnote.co/"&gt;lightnote&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Music Theory that isn't boring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-is-hdr-anyway"&gt;&lt;a href="https://www.lux.camera/what-is-hdr/"&gt;What is HDR, anyway?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It's not you. HDR confuses tons of people. In this post, we finally explain what HDR actually means, the problem it presents, and three ways to solve it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="pycon-us-2025-youtube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL2Uw4_HvXqvb98mQjN0-rYQjdDxJ_hcrs"&gt;PyCon US 2025 YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id="pytexas-2025-austin-texas-youtube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL0MRiRrXAvRiSmPn_LDdhDbtZwu6g4xct"&gt;PyTexas 2025 - Austin, Texas YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id="djangotvcom-a-guided-tour-through-postgres-internals-with-elizabeth-garrett-christensen"&gt;&lt;a href="https://djangotv.com/videos/djangocon-us/2024/a-guided-tour-through-postgres-internals-with-elizabeth-garrett-christensen/"&gt;djangotv.com: A Guided Tour Through Postgres Internals with Elizabeth Garrett Christensen&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This video features &lt;a href="https://djangotv.com/presenters/elizabeth-garrett-christensen/"&gt;Elizabeth Garrett Christensen&lt;/a&gt; at &lt;a href="https://djangotv.com/conferences/djangocon-us/"&gt;DjangoCon US 2024&lt;/a&gt; in Durham, NC USA.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="leanproductivity-sascha-d-kasper-want-a-personal-ai-for-your-notes-and-files-msty-is-the-answer"&gt;&lt;a href="https://www.youtube.com/watch?v=tYxobrjMfzU"&gt;LeanProductivity - Sascha D. Kasper: Want a PERSONAL AI for your notes and files? Msty is the answer.&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/tYxobrjMfzU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-i-reduced-90-errors-for-my-cursor-any-other-ai-ide"&gt;&lt;a href="https://www.youtube.com/watch?v=1L509JK8p1I"&gt;How I reduced 90% errors for my Cursor (+ any other AI IDE)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1L509JK8p1I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-i-reduced-90-errors-for-my-cursor-part-2"&gt;&lt;a href="https://www.youtube.com/watch?v=dF4uCZAY1tk"&gt;How I reduced 90% errors for my Cursor (Part 2)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dF4uCZAY1tk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="sekuraktv-poznaj-ai-praktyka-narzedzia-ciekawostki-szkolenie-sekurakpl"&gt;&lt;a href="https://www.youtube.com/watch?v=bUVwTDOmLkg"&gt;SekurakTV: Poznaj AI. Praktyka, narzędzia, ciekawostki - szkolenie sekurak.pl&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/bUVwTDOmLkg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="andrej-karpathy-how-i-use-llms"&gt;&lt;a href="https://www.youtube.com/watch?v=EWvNQjAaOHw"&gt;Andrej Karpathy:  How I use LLMs&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/EWvNQjAaOHw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="tomasz-palak-prawo-vs-twoja-strona-internetowa-przyjrzyjmy-sie-jej-zanim-zrobi-to-kontrola-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Tm4EIQtC878"&gt;Tomasz Palak - Prawo vs Twoja strona internetowa. Przyjrzyjmy się jej, zanim zrobi to kontrola - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Tm4EIQtC878" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Tomasz Palak's presentation at Infoshare Conference 2025 covers legal considerations for websites, common errors, and ways to avoid penalties.&lt;/p&gt;
&lt;h3 id="jak-dziaa-serwer-mcp-tutorial-jak-zrobic-wasny-serwer-mcp-z-vibe-coding-w-cursor-ai-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=oP49EHjMTHc"&gt;Jak działa serwer MCP? Tutorial: Jak Zrobić własny Serwer MCP z Vibe Coding w Cursor AI! - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/oP49EHjMTHc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_1"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;A tutorial video by Mike Tomala on creating an MCP server using Vibe Coding in Cursor AI, covering setup, tools, and maintenance tips.&lt;/p&gt;
&lt;h3 id="privacy-crime-national-security-human-rights-you-in-the-middle-bert-hubert-goto-2023-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=xtmc-gTSPeA"&gt;Privacy, Crime, National Security, Human Rights &amp;amp; You in the Middle • Bert Hubert • GOTO 2023 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/xtmc-gTSPeA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_2"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Bert Hubert's talk at GOTO 2023 delves into the complex relationship between privacy, crime, national security, and human rights, highlighting the role of technology in these areas.&lt;/p&gt;
&lt;h3 id="oddly-useful-linux-tools-you-probably-havent-seen-before-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=32O0a6qCQaQ"&gt;Oddly useful Linux tools you probably haven't seen before - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/32O0a6qCQaQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_3"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video introduces viewers to a selection of lesser-known Linux tools that can improve productivity and efficiency. It is available on YouTube and runs for about 9 minutes.&lt;/p&gt;
&lt;h3 id="i-made-my-own-tui-to-release-my-album-its-a-bash-script-ffmpeg-that-you-can-run-yourself-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Hzg2I8SzFOk"&gt;I made my own TUI to release my album! It's a bash script (+ ffmpeg) that you can run yourself! - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Hzg2I8SzFOk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_4"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Dave introduces his TUI project for releasing his album, created with a bash script and ffmpeg. He shares insights on programming, sys admin, and Unix, while also critiquing bad code humorously.&lt;/p&gt;
&lt;h3 id="how-stanford-teaches-ai-powered-creativity-in-just-13-minutesjeremy-utley-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=wv779vmyPVY"&gt;How Stanford Teaches AI-Powered Creativity in Just 13 MinutesㅣJeremy Utley - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wv779vmyPVY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_5"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Stanford University explores the integration of AI in fostering creativity, presented by Jeremy Utley. The video is part of EO Studio's storytelling initiative.&lt;/p&gt;
&lt;h3 id="brad-frost-death-to-bullsht-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=ABd6U17YAdo"&gt;Brad Frost: Death to Bullsh*t - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ABd6U17YAdo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_6"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Brad Frost's 'Death to Bullsh*t' presentation highlights the need to remove unnecessary content from digital experiences to improve user engagement and focus on meaningful interactions.&lt;/p&gt;
&lt;h3 id="why-cant-we-make-simple-software-peter-van-hardenberg-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=czzAVuVz7u4"&gt;Why Can't We Make Simple Software? - Peter van Hardenberg - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/czzAVuVz7u4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_7"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Peter van Hardenberg's talk addresses the difficulties in achieving simplicity in software development, highlighting the inherent complexities that arise even with the intention of creating simple systems.&lt;/p&gt;
&lt;h3 id="programmings-greatest-mistakes-mark-rendle-goto-2023-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=Y9clBHENy4Q"&gt;Programming's Greatest Mistakes • Mark Rendle • GOTO 2023 - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Y9clBHENy4Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_8"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Mark Rendle discusses programming's greatest mistakes at the GOTO 2023 conference, aiming to help developers learn from past errors to improve future software development.&lt;/p&gt;
&lt;h3 id="building-cheap-efficient-home-servers-with-laptops-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=CIBmVXteOcI"&gt;Building Cheap &amp;amp; Efficient Home Servers with... Laptops? - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/CIBmVXteOcI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_9"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;This video discusses how to build cost-effective and efficient home servers using laptops. It highlights the benefits of using laptops, such as lower power consumption and cost savings, and provides guidance on setting up a laptop as a server.&lt;/p&gt;
&lt;h3 id="ai-powered-office-automation-fun-and-frustrating-harper-reed-ignite-youtube"&gt;&lt;a href="https://www.youtube.com/watch?v=-Zp5ffZDaRc"&gt;AI-Powered Office Automation: Fun and Frustrating | Harper Reed | Ignite - YouTube&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/-Zp5ffZDaRc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id="ai-generated-summary_10"&gt;AI generated summary&lt;/h4&gt;
&lt;p&gt;Harper Reed discusses the benefits and challenges of AI-powered office automation, emphasizing its potential to boost productivity while also presenting new obstacles.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 31 May 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-05-31:/2025-may-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - April 2025</title><link>https://blog.tobked.dev/2025-april-links</link><description>&lt;h1 id="april-2025"&gt;April 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-i-am-using-a-lifetime-100-free-server"&gt;&lt;a href="https://withcodeexample.com/how-i-am-using-a-lifetime-100-free-server/"&gt;How I Am Using a Lifetime 100% Free Server&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What if I say I have been using the Linux-based server for free for more than 4–5 years? Yes, you heard it right. I am using this Linux server with Ubuntu 20 installed, 24 GB RAM, 4 CPUs, and 200 GB storage for a lifetime free.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-best-programmers-i-know"&gt;&lt;a href="https://endler.dev/2025/best-programmers/"&gt;The Best Programmers I Know&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I have met a lot of developers in my life. Lately, I asked myself: “What does it take to be one of the best? What do they all have in common?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-whats-involved-in-getting-a-modern-terminal-setup"&gt;&lt;a href="https://jvns.ca/blog/2025/01/11/getting-a-modern-terminal-setup/"&gt;Julia Evans: What's involved in getting a "modern" terminal setup?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I thought I would write down some notes about what it means to me personally to have a “modern” terminal experience and what I think can make it hard for people to get there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-rules-that-terminal-programs-follow"&gt;&lt;a href="https://jvns.ca/blog/2024/11/26/terminal-rules/"&gt;Julia Evans: "Rules" that terminal programs follow&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A lot of my understanding of the terminal is honestly still in the “subconscious pattern recognition” stage. The only reason I’ve been taking the time to make things explicit at all is because I’ve been trying to explain how it works to others. Hopefully writing down these “rules” explicitly will make learning some of this stuff a little bit faster for others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="preventing-painful-coupling"&gt;&lt;a href="https://everydaysuperpowers.dev/articles/preventing-painful-coupling/"&gt;Preventing painful coupling&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, I will show you how and why I’ve completely changed the way I code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="20-years-working-on-the-same-software-product"&gt;&lt;a href="https://successfulsoftware.net/2025/02/21/20-years-working-on-the-same-software-product/"&gt;20 years working on the same software product&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I released version 1 of my table seating planning software, PerfectTablePlan, in February 2005. 20 years ago this month. It was a different world. A world of Windows, shareware and CDs. A lot has changed since then, but PerfectTablePlan is now at version 7 and still going strong.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="manager-antipatterns"&gt;&lt;a href="https://blogs.newardassociates.com/blog/2024/management-antipatterns.html"&gt;Manager Antipatterns&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Many companies make the same sorts of mistakes with their managers, over and over again. If they were software designs, we'd call them antipatterns.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="29-fundamental-techniques-for-software-architects"&gt;&lt;a href="https://www.workingsoftware.dev/fundamental-techniques-for-software-architects/"&gt;29 Fundamental Techniques for Software Architects&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Discover essential techniques for software architects to design modern systems, align with business goals, and manage stakeholders effectively. Learn more in this post!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="self-hosting-n8n-na-mikrusie-programista-na-swoim"&gt;&lt;a href="https://programistanaswoim.pl/self-hosting-n8n-na-mikrusie/"&gt;Self-hosting n8n na Mikrusie - Programista Na Swoim&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Postanowiłem więc przetestować chyba najlepiej ocenianą alternatywą, którą można samodzielnie hostować, czyli n8n* i postawić go na najtańszym dostępnym na polskim rynku VPSie, czyli Mikrusie. A że jestem zupełnie świeżo po tym procesie, to stwierdziłem, że się nim w poniższym wpisie z Tobą podzielić.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="programming-pulse-hexagonal-vs-clean-vs-onion-architectures-choosing-the-right-architecture"&gt;&lt;a href="https://programmingpulse.vercel.app/blog/hexagonal-vs-clean-vs-onion-architectures#the-principles-of-onion-architecture"&gt;Programming Pulse: Hexagonal vs Clean vs Onion Architectures: Choosing the Right Architecture&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Choosing the right architecture for a software project is a crucial decision that can have a significant impact on the success and maintainability of the system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-life-engineered-5-simple-ways-to-level-up-your-communication"&gt;&lt;a href="https://alifeengineered.substack.com/p/5-simple-ways-to-level-up-your-communication"&gt;A Life Engineered: 5 Simple Ways to Level Up Your Communication&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Practical Tips for Getting Heard and Making an Impact&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="time-management"&gt;&lt;a href="https://mikefisher.substack.com/p/time-management"&gt;Time Management&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;10 Ways to Take Ownership of Your Time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-be-10x-more-productive"&gt;&lt;a href="https://newsletter.techworld-with-milan.com/p/how-to-be-10x-more-productive"&gt;How to Be 10x More Productive &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;And become Top-Performer in any job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="steph-ango-how-i-use-obsidian"&gt;&lt;a href="https://stephango.com/vault"&gt;Steph Ango: How I use Obsidian&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The following is in no way dogmatic, just one example of how you can use Obsidian. Take the parts you like.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="steph-ango-40-questions-to-ask-yourself-every-year"&gt;&lt;a href="https://stephango.com/40-questions"&gt;Steph Ango: 40 questions to ask yourself every year&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One of my end-of-year rituals is asking myself these forty questions. It usually takes me about a week to work my way through all of them. I find it to be one of the most valuable exercises to reflect on what happened, good and bad, and how I hope the year ahead will shape up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="wired-this-college-protester-isnt-real-its-an-ai-powered-undercover-bot-for-cops"&gt;&lt;a href="https://www.wired.com/story/massive-blue-overwatch-ai-personas-police-suspects/"&gt;Wired: This ‘College Protester’ Isn’t Real. It’s an AI-Powered Undercover Bot for Cops&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Massive Blue is helping cops deploy AI-powered social media bots to talk to people they suspect are anything from violent sex criminals all the way to vaguely defined “protesters.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="adam-johnson-django-whats-new-in-52"&gt;&lt;a href="https://adamj.eu/tech/2025/04/07/django-whats-new-5.2/"&gt;Adam Johnson: Django: what’s new in 5.2&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django 5.2 was released last Wednesday, another exciting step forward for our favourite web framework. It comes with a composite of new features, contributed to by many, some of which I am happy to have helped with. Below is my pick of highlights from the release notes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bendeguz-csirmaz-you-dont-need-compositeprimarykeys"&gt;&lt;a href="https://csirmazbendeguz.github.io/2025/04/15/you-dont-need-composite-primary-keys.html"&gt;Bendegúz Csirmaz: You don't need CompositePrimaryKeys&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django 5.2 ships with the new &lt;code&gt;CompositePrimaryKey&lt;/code&gt; class. You should probably avoid it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="django-chat-self-hosted-open-source-michael-kennedy"&gt;&lt;a href="https://djangochat.com/episodes/michael-kennedy"&gt;Django Chat: Self-Hosted Open Source - Michael Kennedy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Michael hosts the Talk Python podcast, co-hosts Python Bytes, and runs courses at Talk Python Training.
We discuss his recent shift to mainly self-hosted open-source options for everything from marketing emails to analytics and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="devoxx-voxxed-days-amsterdam-2025-youtube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLRsbF2sD7JVpZ3O01elefwrp9l4yBWoXu"&gt;Devoxx: Voxxed Days Amsterdam 2025 - YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Voxxed Days is a community developer conference series and is part of the extended Devoxx family.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="devoxx-developer-experience-building-an-environment-for-engineering-success-by-bas-de-groot"&gt;&lt;a href="https://www.youtube.com/watch?v=wD2pzuCUTRo"&gt;Devoxx: Developer Experience: Building an Environment for Engineering Success by Bas de Groot&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wD2pzuCUTRo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-clean-architecture-for-serverless-business-logic-you-can-take-anywhere-by-elena-van-engelen-maslova"&gt;&lt;a href="https://www.youtube.com/watch?v=wz0GQbkrr1Q"&gt;Devoxx: Clean Architecture for Serverless: Business Logic You Can Take Anywhere by Elena van Engelen Maslova&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wz0GQbkrr1Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-programmings-greatest-mistakes-by-mark-rendle"&gt;&lt;a href="https://www.youtube.com/watch?v=mHEVLndYvko"&gt;Devoxx: Programming's Greatest Mistakes by Mark Rendle&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/mHEVLndYvko" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-fail-more-learn-more-by-sander-mak"&gt;&lt;a href="https://www.youtube.com/watch?v=YFDBKkEUbE8"&gt;Devoxx: Fail more, learn more! by Sander Mak&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/YFDBKkEUbE8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-words-as-weapons-the-dark-arts-of-prompt-engineering-by-jeroen-egelmeers"&gt;&lt;a href="https://www.youtube.com/watch?v=QyRjW5WNzN0"&gt;Devoxx: Words as weapons: The dark arts of Prompt Engineering.... by Jeroen Egelmeers&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/QyRjW5WNzN0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-how-to-survive-as-a-developer-in-the-exponential-age-of-ai-by-sander-hoogendoorn"&gt;&lt;a href="https://www.youtube.com/watch?v=DYhbNSGUQKc"&gt;Devoxx: How to survive as a developer in the exponential age of AI by Sander Hoogendoorn&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/DYhbNSGUQKc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="foss-baackstage-airflow-beach-cleaning-securing-supply-chain-jarek-potiuk"&gt;&lt;a href="https://25.foss-backstage.de/session/airflow-beach-cleaning-securing-supply-chain/"&gt;FOSS Baackstage: Airflow Beach Cleaning – Securing Supply Chain - Jarek Potiuk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Uniting efforts of Apache Airflow, ASF, PSF, Alpha-Omega fund in experimental project aimed at review and help with security of the whole 700+ dependencies of Apache Airflow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mariusz-dalewski-gildia-zodziei-it-infoshare"&gt;&lt;a href="https://www.youtube.com/watch?v=ulpit1Cf2hM"&gt;Mariusz Dalewski - Gildia złodziei IT | Infoshare&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ulpit1Cf2hM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="confluent-developer-apache-icebergtm-what-it-is-and-why-everyones-talking-about-it"&gt;&lt;a href="https://www.youtube.com/watch?v=TsmhRZElPvM"&gt;Confluent Developer: Apache Iceberg™ | What It Is and Why Everyone’s Talking About It&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/TsmhRZElPvM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="techworld-with-nana-kafka-tutorial-for-beginners-everything-you-need-to-get-started"&gt;&lt;a href="https://www.youtube.com/watch?v=QkdkLdMBuL0"&gt;TechWorld with Nana: Kafka Tutorial for Beginners | Everything you need to get started&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/QkdkLdMBuL0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="bytemonk-how-big-tech-checks-your-username-in-milliseconds"&gt;&lt;a href="https://www.youtube.com/watch?v=_l5Q5kKHtR8"&gt;ByteMonk: How Big Tech Checks Your Username in Milliseconds ⚡&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/_l5Q5kKHtR8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="build-the-smallest-esp32-drone-you-can-fly-with-your-phone-esp-fly"&gt;&lt;a href="https://www.youtube.com/watch?v=V_mZsiZcy7s"&gt;Build The Smallest ESP32 Drone You Can Fly with Your Phone! (ESP-FLY)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/V_mZsiZcy7s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="louis-rossmanns-keynote-speech-on-right-to-repair"&gt;&lt;a href="https://www.youtube.com/watch?v=2ol3rMem_Eg"&gt;Louis Rossmann's Keynote Speech on Right to Repair&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/2ol3rMem_Eg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 30 Apr 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-04-30:/2025-april-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - March 2025</title><link>https://blog.tobked.dev/2025-march-links</link><description>&lt;h1 id="march-2025"&gt;March 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="software-design-what-went-wrong"&gt;&lt;a href="https://jacquiread.com/posts/software-design/"&gt;Software Design: What went wrong?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Software Design should be a developer’s bread and butter.
Changing how we talk about software under development is the start of building better software systems.
We must stop calling everything architecture, make design more accessible, and resist the urge of focusing on technology.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-13-software-engineering-laws"&gt;&lt;a href="https://newsletter.manager.dev/p/the-13-software-engineering-laws"&gt;The 13 software engineering laws&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hyrum's law, Conway’s law, Zawinski's law, and 10 others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://nguyenhuythanh.com/posts/having-fun-with-a-scamming-crypto-job/"&gt;Thanh's Islett - Having Fun With a Scamming Crypto Job&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m going to cover what happened and the technical details of a crypto job scam that I’ve avoided. Let’s hope that it can be both entertaining and informative.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="django-chat-self-hosted-open-source-michael-kennedy"&gt;&lt;a href="https://djangochat.com/episodes/michael-kennedy"&gt;Django Chat: Self-Hosted Open Source - Michael Kennedy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Michael hosts the Talk Python podcast, co-hosts Python Bytes, and runs courses at Talk Python Training.
We discuss his recent shift to mainly self-hosted open-source options for everything from marketing emails to analytics and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="foss-baackstage-airflow-beach-cleaning-securing-supply-chain-jarek-potiuk"&gt;&lt;a href="https://25.foss-backstage.de/session/airflow-beach-cleaning-securing-supply-chain/"&gt;FOSS Baackstage: Airflow Beach Cleaning – Securing Supply Chain - Jarek Potiuk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Uniting efforts of Apache Airflow, ASF, PSF, Alpha-Omega fund in experimental project aimed at review and help with security of the whole 700+ dependencies of Apache Airflow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-to-maraton-nie-sprint-jak-wykorzystac-ai-by-pracowac-madrzej-nie-ciezej-piotr-nabielec"&gt;&lt;a href="https://www.youtube.com/watch?v=iQDsf32JyzM"&gt;AI to maraton, nie sprint: jak wykorzystać AI, by pracować mądrzej, nie ciężej – Piotr Nabielec&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/iQDsf32JyzM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-i-use-llms-andrej-karpathy"&gt;&lt;a href="https://www.youtube.com/watch?v=EWvNQjAaOHw"&gt;How I use LLMs - Andrej Karpathy&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/EWvNQjAaOHw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="co-to-jest-rag-z-ai-proste-wyjasnienie-na-schematach-usprawnij-firme-dzieki-ai-mike-tomala"&gt;&lt;a href="https://www.youtube.com/watch?v=zRGKSy_UhFc"&gt;Co to jest RAG z AI? Proste wyjaśnienie na schematach! Usprawnij firmę dzięki AI! - Mike Tomala&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/zRGKSy_UhFc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="jack-dorsey-tech-and-freedom"&gt;&lt;a href="https://www.youtube.com/watch?v=t-40158eRqo"&gt;Jack Dorsey – Tech and Freedom&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/t-40158eRqo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-use-the-alternate-screen-in-your-terminal-you-suck-at-programming-047"&gt;&lt;a href="https://www.youtube.com/watch?v=wr_d44XRHtM"&gt;How to use the Alternate Screen in your terminal - You Suck at Programming #047&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wr_d44XRHtM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 31 Mar 2025 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2025-03-31:/2025-march-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - February 2025</title><link>https://blog.tobked.dev/2025-february-links</link><description>&lt;h1 id="february-2025"&gt;February 2025&lt;/h1&gt;
&lt;p&gt;Time for another monthly post sharing some of the IT discoveries that crossed my path lately.
Below you'll find a mix of articles, links, and resources, some of which tie into my current activities and areas of interest.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;February was interesting because I attended &lt;a href="https://fosdem.org/2025/"&gt;&lt;strong&gt;FOSDEM 2025&lt;/strong&gt;&lt;/a&gt;.
&lt;a href="https://fosdem.org"&gt;FOSDEM&lt;/a&gt;, which stands for the Free and Open Source Software Developers' European Meeting, is a large, free, volunteer-run event held annually in Brussels.
It brings together thousands of developers and enthusiasts from the global open-source community to meet, share ideas, and collaborate.
I'll write a separate blog post about highlights from this event soon!&lt;/p&gt;
&lt;figure style="text-align: center;"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2025/fosdem/nextcloud_talk.jpg" alt="FOSDEM 2025" style="display: block; margin-left: auto; margin-right: auto;"&gt;
    &lt;figcaption style="font-size: 0.9em; margin-top: 8px;"&gt;Nextcloud presentation at FOSDEM 2025. One of many photos I took during the event.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="you-didnt-notice-mp3-is-now-free"&gt;&lt;a href="https://idiallo.com/blog/listen-mp3-is-free"&gt;You Didn't Notice MP3 Is Now Free&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why nobody cares&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="7-proven-mental-models-for-engineering-managers"&gt;&lt;a href="https://zaidesanton.substack.com/p/mental-models-for-engineering-managers"&gt;7 proven mental models for engineering managers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Use mental models to make sure that your decisions don't hurt you and your teams.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="michael-lynch-my-seventh-year-as-a-bootstrapped-founder"&gt;&lt;a href="https://mtlynch.io/solo-developer-year-7/"&gt;Michael Lynch: My Seventh Year as a Bootstrapped Founder&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Seven years ago, I &lt;a href="https://mtlynch.io/why-i-quit-google/"&gt;quit my job as a developer at Google&lt;/a&gt; to create my own bootstrapped software company. Every year, I &lt;a href="https://mtlynch.io/tags/annual-review/"&gt;post an update&lt;/a&gt; about how that’s going and what my life is like as an indie founder.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="michael-lynch-why-i-quit-google-to-work-for-myself"&gt;&lt;a href="https://mtlynch.io/why-i-quit-google/"&gt;Michael Lynch: Why I Quit Google to Work for Myself&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;For the past four years, I’ve worked as a software developer at Google. On February 1st, I quit. It was because they refused to buy me a Christmas present.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="7-common-mistakes-in-architecture-diagrams"&gt;&lt;a href="https://www.ilograph.com/blog/posts/diagram-mistakes/"&gt;7 Common Mistakes in Architecture Diagrams&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When creating a technical architecture diagram, your goal is to give understanding to your audience. You want to honestly inform viewers about your system rather than merely make an impression. Mistakes made when creating diagrams can undermine this goal, however. Here are seven common mistakes to avoid when making technical architecture diagrams.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="developer-philosophy"&gt;&lt;a href="https://qntm.org/devphilo"&gt;Developer philosophy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This listing is a little miscellaneous; it isn't intended to be an exhaustive exploration of the way in which I develop software. Also, if you are a senior developer already then obviously you might already be familiar with some of this. Or disagree! Software development is a famously subjective field.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="lee-robinson-personal-software"&gt;&lt;a href="https://leerob.com/n/personal-software"&gt;Lee Robinson: Personal Software&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Software can now adapt to you, not the other way around. Better yet, AI is making it possible for anyone, not just developers, to create single-use or custom applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="vim-after-bram-a-core-maintainer-on-how-theyve-kept-it-going"&gt;&lt;a href="https://thenewstack.io/vim-after-bram-a-core-maintainer-on-how-theyve-kept-it-going/"&gt;Vim After Bram: A Core Maintainer on How They’ve Kept It Going&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What happens when the chief maintainer of an open source project dies. Maintaining VIM turned out to be a full time job, though the community has stepped in to help.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="armin-ronacher-ugly-code-and-dumb-things"&gt;&lt;a href="https://lucumr.pocoo.org/2025/2/20/ugly-code/"&gt;Armin Ronacher: Ugly Code and Dumb Things&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Perfect code doesn't guarantee success if you haven't solved a real problem for real people. Pursuing elegance in a vacuum leads to abandoned side projects or frameworks nobody uses. By contrast, clunky but functional code often comes with just the right compromises for quick iteration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="christian-hollinger-why-i-still-self-host-my-servers-and-what-ive-recently-learned"&gt;&lt;a href="https://chollinger.com/blog/2024/08/why-i-still-self-host-my-servers-and-what-ive-recently-learned/"&gt;Christian Hollinger: Why I still self host my servers (and what I've recently learned)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article is about two things: Why I still bother and what it has recently taught me. Think of it as a brief retrospective and an encouragement for readers to go down the same rabbit hole.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="devszczepaniakpl-puapki-produktywnosci"&gt;&lt;a href="https://devszczepaniak.pl/pulapki-produktywnosci/"&gt;devszczepaniak.pl: Pułapki produktywności&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;co zabija Twoją produktywność?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="open-webui"&gt;&lt;a href="https://github.com/open-webui/open-webui"&gt;Open WebUI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline. It supports various LLM runners like Ollama and OpenAI-compatible APIs, with built-in inference engine for RAG, making it a powerful AI deployment solution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="programista-na-swoim-podsumowanie-mojego-udziau-w-trzeciej-edycji-kursu-ai-devs"&gt;&lt;a href="https://programistanaswoim.pl/podsumowanie-mojego-udzialu-w-trzeciej-edycji-kursu-ai-devs/"&gt;Programista Na Swoim: Podsumowanie mojego udziału w trzeciej edycji kursu AI Devs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Postanowiłem po prostu wrzucić tu kilka luźnych przemyśleń, które wpadły mi do głowy w trakcie jego trwania. Dla siebie – ku pamięci oraz dla Was – żeby zachęcić lub zniechęcić do udziału w kolejnych edycjach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pennyroyalteagibberlink"&gt;&lt;a href="https://github.com/PennyroyalTea/gibberlink"&gt;PennyroyalTea/gibberlink&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Two conversational AI agents switching from English to sound-level protocol after confirming they are both AI agents&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-company-asks-job-applicants-not-to-use-ai-in-job-applications"&gt;&lt;a href="https://www.404media.co/anthropic-claude-job-application-ai-assistants/"&gt;AI Company Asks Job Applicants Not to Use AI in Job Applications&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Anthropic, the developer of the conversational AI assistant Claude, doesn’t want prospective new hires using AI assistants in their applications, regardless of whether they’re in marketing or engineering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="official-django-mongodb-backend-now-available-in-public-preview"&gt;&lt;a href="https://www.mongodb.com/blog/post/mongodb-django-backend-now-available-public-preview"&gt;Official Django MongoDB Backend Now Available in Public Preview&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;To get started, it’s as easy as running &lt;code&gt;pip install django-mongodb-backend&lt;/code&gt;. MongoDB has even created an easy-to-use starter template that works with the django-admin command &lt;code&gt;startproject&lt;/code&gt;, making it a snap to see what typical MongoDB migrations look like in Django. For more information, check out our &lt;a href="https://dev.to/mongodb/django-mongodb-backend-quickstart-4o89"&gt;quickstart guide&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-is-opentelemetry-and-how-to-add-it-to-your-django-application"&gt;&lt;a href="https://allthingsopen.org/articles/what-is-opentelemetry-add-django-application"&gt;What is OpenTelemetry and how to add it to your Django application&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A step-by-step guide to connecting your Django app’s OpenTelemetry setup to an Elastic observability backend.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="draculadjango-admin"&gt;&lt;a href="https://github.com/dracula/django-admin"&gt;dracula/django-admin&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A dark (and light 🕯️) theme for the Django Admin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="building-mlops-workflows-with-airflow-2-on-gke"&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/cloud-mlops-airflow-gke?hl=en#0"&gt;Building MLOps Workflows with Airflow 2 on GKE&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This CodeLab demonstrates how to integrate DevOps practices into machine learning (MLOps) by downloading a dataset, refining a model and deploying the LLM on Google Kubernetes Engine (GKE) by using an Airflow DAG with the least amount of abstraction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-how-loreals-tech-accelerator-built-its-end-to-end-mlops-platform"&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/how-loreals-tech-accelerator-built-its-end-to-end-mlops-platform?e=48754805"&gt;Google Cloud: How L’Oréal's tech accelerator built its end-to-end MLOps platform&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;L'Oréal's modular MLOps platform, built on Google Cloud, has significantly boosted efficiency and agility in the AI development process. By empowering teams to work independently on their respective ML models, L'Oréal's Tech Accelerator has accelerated development, improved collaboration, and enhanced the quality and reliability of its systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-tchibo-brews-up-10x-faster-customer-insights-with-alloydb-for-postgresql"&gt;&lt;a href="https://cloud.google.com/blog/products/databases/tchibo-brews-up-10x-faster-customer-insights-with-alloydb-for-postgresql?e=48754805"&gt;Google Cloud: Tchibo brews up 10x faster customer insights with AlloyDB for PostgreSQL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AlloyDB has transformed Tchibo’s approach to data by enabling faster, deeper, and more scalable access to the customer feedback and analytics we rely on for decision-making.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="dss-dead-simple-sites"&gt;&lt;a href="https://deadsimplesites.com/"&gt;DSS - Dead Simple Sites&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The most minimal sites on the web, curated in one place.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="wger"&gt;&lt;a href="https://github.com/wger-project/wger"&gt;wger&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;wger (ˈvɛɡɐ) Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility. It offers a REST API as well, for easy integration with other projects and tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="github-copilot-the-agent-awakens"&gt;&lt;a href="https://www.youtube.com/watch?v=C95drFKy4ss"&gt;GitHub Copilot: the agent awakens&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/C95drFKy4ss" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="swe-agents-coming-to-github"&gt;&lt;a href="https://www.youtube.com/watch?v=VWvV2-XwBMM"&gt;SWE agents coming to GitHub&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/VWvV2-XwBMM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="open-source-friday-ai-edition-lessons-from-github-accelerator-alumni"&gt;&lt;a href="https://www.youtube.com/watch?v=9GUsEdOg3IQ"&gt;Open Source Friday AI edition: Lessons from GitHub Accelerator alumni&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/9GUsEdOg3IQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="open-source-summitkeynote-linus-torvalds-creator-of-linux-git-in-conversation-with-dirk-hohndel"&gt;&lt;a href="https://www.youtube.com/watch?v=cPvRIWXNgaM"&gt;Open Source Summit:Keynote: Linus Torvalds, Creator of Linux &amp;amp; Git, in Conversation with Dirk Hohndel&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/cPvRIWXNgaM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="uv-and-django-managing-django-projects-dependencies-with-uv"&gt;&lt;a href="https://www.youtube.com/watch?v=hm-rDxSMzSw"&gt;uv and Django - Managing Django Projects &amp;amp; Dependencies with uv!&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/hm-rDxSMzSw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="mike-tomala-bielik-to-nie-jest-polski-chatgpt-caa-prawda-o-polskim-modelu"&gt;&lt;a href="https://www.youtube.com/watch?v=ohBDt7YcleI"&gt;Mike Tomala: Bielik to NIE jest Polski ChatGPT! Cała prawda o Polskim Modelu.&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ohBDt7YcleI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="krzysztof-tutak-12-ai-moze-wiecej-niz-myslimy-i-mniej-niz-nam-sie-wydaje-adam-gospodarczyk"&gt;&lt;a href="https://www.youtube.com/watch?v=LBG3_L-sbJA"&gt;Krzysztof Tutak: 12 AI może więcej, niż myślimy i mniej niż nam się wydaje | Adam Gospodarczyk&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/LBG3_L-sbJA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="jakub-mrugalski-a-gdyby-tak-zrobic-startup-w-weekend-no-code-ai-i-odrobina-magii-infoshare"&gt;&lt;a href="https://www.youtube.com/watch?v=dYzfArtf7qU"&gt;Jakub Mrugalski - A gdyby tak zrobić startup w weekend? - no-code, AI i odrobina magii | Infoshare&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dYzfArtf7qU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="djangocon-2008-keynote-cal-henderson-why-i-hate-django"&gt;&lt;a href="https://www.youtube.com/watch?v=i6Fr65PFqfk"&gt;DjangoCon 2008 Keynote: Cal Henderson: Why I Hate Django&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/i6Fr65PFqfk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-complexity-genie-armin-ronacher-vendure-conf-2024"&gt;&lt;a href="https://www.youtube.com/watch?v=B63n4WeN-Pc"&gt;The Complexity Genie - Armin Ronacher, Vendure Conf 2024&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/B63n4WeN-Pc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 28 Feb 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-02-28:/2025-february-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Month summary - January 2025</title><link>https://blog.tobked.dev/2025-january-links</link><description>&lt;h1 id="january-2025"&gt;January 2025&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="ken-whitesell-database-optimization-isnt-always-obvious"&gt;&lt;a href="https://kenwhitesell.github.io/2025/01/01/Database-optimization-is-not-alway-obvious.html"&gt;Ken Whitesell: Database optimization isn't always obvious&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the issues of working with abstractions is that what you think may be logically true, isn’t.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-big-tech-and-their-95-jobs-are-not-tempting-anyone-anymore"&gt;&lt;a href="https://medium.com/illumination/why-big-tech-and-their-9-5-jobs-are-not-tempting-anyone-anymore-474ee9502873"&gt;Why Big Tech And Their 9–5 Jobs Are Not Tempting Anyone Anymore&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;"Climbing the corporate ladder only to realize it was leaning against the wrong wall"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-hitchhikers-guide-to-online-anonymity"&gt;&lt;a href="https://anonymousplanet.org/guide.html"&gt;The Hitchhiker’s Guide to Online Anonymity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Or “How I learned to start worrying and love privacy anonymity”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-ars-technica-guide-to-mechanical-keyboards"&gt;&lt;a href="https://arstechnica.com/gadgets/2022/03/the-ars-technica-guide-to-mechanical-keyboards/"&gt;The Ars Technica guide to mechanical keyboards &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Want a mechanical keyboard but don't know where to start? We've got you covered.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-create-your-own-vpn-server-using-openvpn-and-aws"&gt;&lt;a href="https://scientyficworld.org/how-to-create-vpn-server-using-openvpn-and-aws/"&gt;How to create your own VPN server using OpenVPN and AWS?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Building your own VPN may sound technical, but with the right guidance, it becomes straightforward and highly rewarding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="225-systems-ideas-that-sound-good-but-almost-never-worklets-just"&gt;&lt;a href="https://hardcoresoftware.learningbyshipping.com/p/225-systems-ideas-that-sound-good"&gt;225. Systems Ideas that Sound Good But Almost Never Work—"Let's just…"&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Some engineering patterns that sound good but almost never work as intended.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="rules-for-writing-software-tutorials"&gt;&lt;a href="https://refactoringenglish.com/chapters/rules-for-software-tutorials/"&gt;Rules for Writing Software Tutorials&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You can stand out in a sea of mediocre guides by following a few simple rules.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="allegro-tech-blog-circuit-breaker-not-only-for-http-calls-based-on-resilience4j"&gt;&lt;a href="https://blog.allegro.tech/2024/12/circuitbreaker-not-only-for-http-calls.html"&gt;Allegro Tech Blog: Circuit Breaker not only for HTTP calls! (based on resilience4j)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... we show how to use Circuit Breaker from Resilience4j for handling cases other than HTTP calls.
With that ~70 lines of code, we were able to significantly improve our response time to failures, redirect users to functioning payment providers, meet business requirements regarding reliability, and take the manual switching off of payment methods off from developers’ shoulders.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="an-efficient-framework-to-approach-system-design-problems"&gt;&lt;a href="https://medium.com/swlh/an-efficient-framework-to-approach-system-design-problems-cf058f614a84"&gt;An Efficient Framework to Approach System Design Problems&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In my experience as either a software developer or a mentor for software developers, the buzz word “system design” has been popped up quite frequently.
Actually, no matter for real-life software development or software engineering interviews, “system design” is right in the center of the stage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-feel-like-a-hacker-using-these-cool-linux-terminal-tools"&gt;&lt;a href="https://itsfoss.com/hacker-like-linux-terminal-tools/"&gt;I Feel Like a Hacker Using These Cool Linux Terminal Tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Get ready to look like a hacker with me using these Linux terminal tools!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="making-beautiful-api-keys"&gt;&lt;a href="https://docs.agentstation.ai/blog/beautiful-api-keys/"&gt;Making Beautiful API Keys&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;tl;dr - Since developers are our customers, we wanted them to have beautiful API keys.
We couldn't find a suitable standard solution so we made our own package - &lt;a href="https://github.com/agentstation/uuidkey"&gt;uuidkey&lt;/a&gt; - that you can use to encode &amp;amp; format UUIDs into human-readable keys.
If you use UUIDv7, you can also decode the keys to store them as sortable, indexable IDs in your database.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="today-i-learned-that-bash-has-hashmaps"&gt;&lt;a href="https://xeiaso.net/notes/2024/bash-hashmap/"&gt;Today I learned that bash has hashmaps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I was horrified to find out that bash has hashmaps, and decided to write this note to tell you how to use them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="categories-of-leadership-on-technical-teams"&gt;&lt;a href="https://www.benkuhn.net/leadcats/"&gt;Categories of leadership on technical teams&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One framework I’ve referenced repeatedly is to break down team leadership into a few different categories of responsibility.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="system-design-codex-eventual-consistency-is-tricky"&gt;&lt;a href="https://newsletter.systemdesigncodex.com/p/eventual-consistency-is-tricky"&gt;System Design Codex: Eventual Consistency is Tricky&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;But there are great patterns to handle it...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-free-upgrade-could-let-philips-hue-and-other-zigbee-bulbs-act-as-motion-sensors"&gt;&lt;a href="https://9to5mac.com/2025/01/22/a-free-upgrade-could-let-philips-hue-and-other-zigbee-bulbs-act-as-motion-sensors/?_bhlid=4133e7362a34fc5a51f82a0d9de5ec4cc32dde33"&gt;A free upgrade could let Philips Hue and other Zigbee bulbs act as motion sensors&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The secret is technology which can detect the interference in radio signals created by someone walking into a room. This interference can then be used as a trigger to control the light bulbs in the same way as existing motion sensors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="architecture-notes-database-sharding-explained"&gt;&lt;a href="https://architecturenotes.co/p/database-sharding-explained"&gt;architecture notes:  Database Sharding Explained&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Many people don't understand database sharding, which could solve their difficulties. This article explains database sharding, its benefits, including ho&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="blinry-building-a-tiny-linux-from-scratch"&gt;&lt;a href="https://blinry.org/tiny-linux/"&gt;blinry: Building a tiny Linux from scratch&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Last week, I built a tiny Linux system from scratch, and booted it on my laptop!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="cassidy-williams-the-productivity-apps-i-use-in-2024"&gt;&lt;a href="https://cassidoo.co/post/producivity-apps-2024/"&gt;Cassidy Williams: The Productivity apps I use in 2024&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I often get asked what my favorite tools are and how I use them to get my work done, and I’m writing this both to answer that question, and also for me to just paste a link to this post next time I’m asked. Efficiency!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-improve-your-wfh-lighting-to-reduce-eye-strain"&gt;&lt;a href="https://rustle.ca/posts/articles/work-from-home-lighting"&gt;How to improve your WFH lighting to reduce eye strain&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Having a working environment that’s as easy on my eyes as possible is of critical importance&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="chatgpt-search-vs-google-a-deep-dive-analysis-of-62-queries"&gt;&lt;a href="https://searchengineland.com/chatgpt-search-vs-google-analysis-449676"&gt;ChatGPT search vs. Google: A deep dive analysis of 62 queries&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A detailed analysis of ChatGPT search and Google's performance across 62 queries, with scoring metrics and practical examples.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-create-a-claude-chat-with-dynamic-knowledge-no-api-required"&gt;&lt;a href="https://thoughts.jock.pl/p/dynamic-claude-chat-automation-guide"&gt;How to Create a Claude Chat with Dynamic Knowledge (No API Required!)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Let's Cook Up Some Basic AI Automation Magic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="building-ai-agents-to-solve-security-challenges"&gt;&lt;a href="https://devsec-blog.com/2024/12/building-ai-agents-to-solve-security-challenges/"&gt;Building AI Agents to Solve Security Challenges&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;this article, I would like to bring closer a topic of AI Agents and demonstrate how to build an agent that can solve security challenges...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="adam-johnson-python-create-temporary-files-and-directories-in-unittest"&gt;&lt;a href="https://adamj.eu/tech/2024/12/30/python-temporary-files-directories-unittest/"&gt;Adam Johnson: Python: create temporary files and directories in unittest&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sometimes, tests need temporary files or directories. You can do this in Python’s unittest with the standard library tempfile module.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="heapq-heap-queue-algorithm"&gt;&lt;a href="https://docs.python.org/3/library/heapq.html"&gt;heapq — Heap queue algorithm&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm.&lt;/p&gt;
&lt;p&gt;Heaps are binary trees for which every parent node has a value less than or equal to any of its children. We refer to this condition as the heap invariant.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="show-django-flash-messages-as-toasts-with-htmx"&gt;&lt;a href="https://joshkaramuth.com/blog/django-messages-toast-htmx/"&gt;Show Django flash messages as toasts with Htmx&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to display Django messages as user friendly toasts with Htmx&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="complex-django-filters-with-subquery"&gt;&lt;a href="https://www.better-simple.com/django/2025/01/01/complex-django-filters-with-subquery/"&gt;Complex Django filters with Subquery&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django’s Subquery expression is one of the most powerful tools in the ORM. The documentation does a good job of explaining it at a high level, but unless you have a decent understanding of SQL, you may not fully understand it’s power.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-show-a-modal-in-django-htmx"&gt;&lt;a href="https://joshkaramuth.com/blog/django-htmx-modal/"&gt;How to show a modal in Django + HTMX&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to show a modal with minimal Javascript in Django + HTMX&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="database-indexing-in-django"&gt;&lt;a href="https://testdriven.io/blog/django-db-indexing/"&gt;Database Indexing in Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article explores the basics of database indexing, its advantages and disadvantages, and how to apply it in a Django application.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="ghostty"&gt;&lt;a href="https://github.com/ghostty-org/ghostty"&gt;👻 Ghostty&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="k3d"&gt;&lt;a href="https://github.com/k3d-io/k3d"&gt;k3d&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Little helper to run CNCF's k3s in Docker.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dsrag"&gt;&lt;a href="https://github.com/D-Star-AI/dsRAG/"&gt;dsRAG&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;High-performance retrieval engine for unstructured data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="lnav-the-logfile-navigator"&gt;&lt;a href="https://github.com/tstack/lnav"&gt;LNAV -- The Logfile Navigator&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A log file viewer for the terminal&lt;/p&gt;
&lt;p&gt;Merge, tail, search, filter, and query log files with ease.&lt;/p&gt;
&lt;p&gt;No server. No setup. Still featureful.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="portainer-templates"&gt;&lt;a href="https://portainer-templates.as93.net/"&gt;Portainer Templates&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The largest single collection, of ready-to-go Portainer templates&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="pubsub-to-bigquery-with-bigquery-subscription"&gt;&lt;a href="https://medium.com/google-cloud/pub-sub-to-bigquery-with-bigquery-subscription-785e914bd63d"&gt;Pub/Sub to BigQuery with BigQuery Subscription&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Real-time data ingestion and analysis are becoming increasingly critical for modern businesses, whether in retail, finance, or logistics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="create-a-cicd-pipeline-using-github-actions-and-google-cloud"&gt;&lt;a href="https://medium.com/google-cloud/create-a-ci-cd-pipeline-using-github-actions-and-google-cloud-9be20ff50e97"&gt;Create a CI/CD Pipeline using GitHub Actions and Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this guide, I’m going to show you how to create a CI/CD pipeline that automates the test and build of our application code, and then deploys to Google Cloud services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="exposing-gke-apps-using-gcp-http-load-balancer-cloud-armor-cloud-cdn-and-istio-part-1"&gt;&lt;a href="https://medium.com/@stefan-marc/exposing-gke-apps-using-gcp-http-load-balancer-cloud-armor-cloud-cdn-and-istio-part-1-ad3f0613901d#431%20-%2016114418"&gt;Exposing GKE Apps Using GCP HTTP Load Balancer, Cloud Armor, Cloud CDN, and Istio — part 1&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;But deploying on GKE is just the first step. The true challenge lies in ensuring your applications are accessible to users — securely, efficiently, and reliably. That’s where the magic happens!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloud-build-cloud-deploy"&gt;&lt;a href="https://medium.com/@snilsumelis/cloud-build-cloud-deploy-5d8d8b0996d4#429%20-%2016002053"&gt;Cloud Build + Cloud Deploy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Cloud Build and Cloud Deploy, in particular, are essential components for implementing a strong CI/CD (Continuous Integration/Continuous Delivery) pipeline.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="template0"&gt;&lt;a href="https://template0.com/blog/in-the-ai-era-templates-are-more-important"&gt;Template0&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;All the free web templates you need for product, business, landing pages, blogs, portfolios, ecommerce, and admin dashboards.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="t3dotggstripe-recommendations"&gt;&lt;a href="https://github.com/t3dotgg/stripe-recommendations"&gt;t3dotgg/stripe-recommendations&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How I Stay Sane Implementing Stripe&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="doodles-as-a-service-repo"&gt;&lt;a href="https://github.com/girliemac/a-picture-is-worth-a-1000-words"&gt;Doodles-as-A-Service Repo&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I am trying to describe complex matters in simple doodles!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dan-mckinley-egoless-engineering"&gt;&lt;a href="https://egoless.engineering/"&gt;Dan McKinley: Egoless Engineering&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Digging the Ditch Towards Enlightenment&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gitpodcast"&gt;&lt;a href="https://www.gitpodcast.com/"&gt;GitPodcast&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Convert any git repository into an engaging podcast.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="professional-programming"&gt;&lt;a href="https://github.com/charlax/professional-programming"&gt;Professional Programming&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A collection of learning resources for curious software engineers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="letsnotdothatcom"&gt;&lt;a href="https://letsnotdothat.com/"&gt;letsnotdothat.com&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Master the Art of the Product Manager "No"&lt;/p&gt;
&lt;p&gt;Keep your meetings smooth and your priorities on track!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="devnoname120my-macos-setupmd"&gt;&lt;a href="https://gist.github.com/devnoname120/4767a0aa18879217170fd0c68809fc24"&gt;devnoname120/My macOS setup.md&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Quality of life improvements&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="the-real-python-podcast-episode-236-simon-willison-using-llms-for-python-development"&gt;&lt;a href="https://realpython.com/podcasts/rpp/236/"&gt;The Real Python Podcast: Episode 236: Simon Willison: Using LLMs for Python Development&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simon has been researching LLMs over the past two and a half years and documenting the results on his blog. He shares which models work best for writing Python versus JavaScript and compares coding tools and environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="mit-6824-distributed-systems-spring-2020"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB"&gt;MIT 6.824 Distributed Systems (Spring 2020)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;6.824 is a core 12-unit graduate subject with lectures, readings, programming labs, an optional project, a mid-term exam, and a final exam. It will present abstractions and implementation techniques for engineering distributed systems. Major topics include fault tolerance, replication, and consistency. Much of the class consists of studying and discussing case studies of distributed systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mit-6006-introduction-to-algorithms-spring-2020"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY"&gt;MIT 6.006 Introduction to Algorithms, Spring 2020&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This course is an introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. It emphasizes the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="david-amos-graph-theory-with-python"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLLIPpKeh9v3ZFEHvNd5xqUrCkqLgXnekL"&gt;David Amos: Graph Theory With Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Join me as we explore the world of Graph Theory with a focus on graph algorithms and using Python as a tool for mathematical research!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="liber-indigo-the-affordances-of-magic"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLsfH1Ahi4SzE-QmrsrtyZubGmi66iP45V"&gt;Liber Indigo: The Affordances of Magic&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Liber Indigo leads us down a winding path through interface design, semantics, dreams, rainbows, materialism, magic, divination, and poetry, intersecting with the ideas of Aldous Huxley, Carl Jung, Albert Einstein, Max Planck, William James, Alan Turing, and others along the way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="38c3-illegal-instructions"&gt;&lt;a href="https://media.ccc.de/b/congress/2024"&gt;38C3: Illegal Instructions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The 38th Chaos Communication Congress (38C3) takes place in Hamburg, 27.-30.12.2024, and is the 2024 edition of the annual four-day conference on technology, society and utopia organised by the Chaos Computer Club (CCC) and volunteers.
Congress offers lectures and workshops and various events on a multitude of topics including (but not limited to) information technology and generally a critical-creative attitude towards technology and the discussion about the effects of technological advances on society.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jakub-mrugalski-asystent-ai-z-baza-wiedzy-w-3-minuty-claude-35-sonnet"&gt;&lt;a href="https://www.youtube.com/watch?v=1zBym4evzus"&gt;Jakub Mrugalski:  Asystent AI z bazą wiedzy w 3 minuty — Claude 3.5 Sonnet&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/1zBym4evzus" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="continuous-delivery-yes-microservices-really-are-technical-debt"&gt;&lt;a href="https://www.youtube.com/watch?v=LltDdEw1p9w"&gt;Continuous Delivery: Yes... Microservices REALLY ARE Technical Debt &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/LltDdEw1p9w" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="docker-image-best-practices-from-12gb-to-10mb"&gt;&lt;a href="https://www.youtube.com/watch?v=m67Mjbx6DMY"&gt;Docker Image BEST Practices - From 1.2GB to 10MB&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/m67Mjbx6DMY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 31 Jan 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-01-31:/2025-january-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2025</category></item><item><title>Year summary - 2024</title><link>https://blog.tobked.dev/2024-summary</link><description>&lt;h1 id="2024"&gt;2024&lt;/h1&gt;
&lt;p&gt;This year was filled with learning and growth in several key areas.&lt;/p&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;p&gt;In 2024, I went deep into the AI realm, experimenting with tools like &lt;a href="https://chatgpt.com/"&gt;ChatGPT&lt;/a&gt;, &lt;a href="https://gemini.google.com/app"&gt;Gemini&lt;/a&gt;, and &lt;a href="https://claude.ai/"&gt;Claude&lt;/a&gt;.
Among these, Claude best met my needs.
I used &lt;a href="https://notebooklm.google/"&gt;NotebookLM&lt;/a&gt; to create a year-end summary podcast, which you can find at the end of this post.
I also came across &lt;a href="https://github.com/danielmiessler/fabric"&gt;fabric&lt;/a&gt;, an open-source framework designed to augment human capabilities using AI.&lt;/p&gt;
&lt;h2 id="presentations"&gt;Presentations&lt;/h2&gt;
&lt;p&gt;This year, I had the opportunity to give two presentations during internal tech meetups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/TobKed/fastapi_cloudrun_pubsub"&gt;ML (Fast)API below 100ms (on GCP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tobked.dev/git_rebase_interactive/rebase_interactive/"&gt;git fixup: Make rewriting history great again&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="certificates"&gt;Certificates&lt;/h2&gt;
&lt;p&gt;I earned two certifications this year.
First, I became a certified &lt;a href="https://www.credly.com/badges/6b96a6c9-28cb-47dd-9dfa-13dd7a37d543"&gt;GitHub Actions&lt;/a&gt; expert, a proud achievement after mastering the tool.
Second, I validated my five-year experience with Terraform by passing the &lt;a href="https://www.credly.com/badges/dd230996-5592-4397-9dab-02a5144111b9/public_url"&gt;HashiCorp Certification: Terraform Associate (003)&lt;/a&gt; exam.&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/6b96a6c9-28cb-47dd-9dfa-13dd7a37d543"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_09_github_actions.png" alt="GitHub Actions Certification" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: center"&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/6b96a6c9-28cb-47dd-9dfa-13dd7a37d543"&gt;GitHub Actions&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/dd230996-5592-4397-9dab-02a5144111b9/public_url"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_11_terraform_associate.png" alt="HashiCorp Certification: Terraform Associate (003)" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: center"&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/dd230996-5592-4397-9dab-02a5144111b9/public_url"&gt;HashiCorp Certification: Terraform Associate (003)&lt;/a&gt;&lt;/div&gt;

&lt;h2 id="photoblog"&gt;Photoblog&lt;/h2&gt;
&lt;p&gt;In free time I decided to create a personal project: a photoblog.
I used &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; and GitHub Actions to create the blog, keeping the source code in a private repository to maintain the privacy of the original-size photos and their metadata.
My photoblog is now available for viewing at &lt;a href="https://photos.tobked.dev"&gt;photos.tobked.dev&lt;/a&gt;.
More about it in &lt;a href="https://blog.tobked.dev/2024-september-links"&gt;September Summary&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="productivity-by-heart"&gt;Productivity by Heart&lt;/h2&gt;
&lt;p&gt;I also completed the &lt;a href="https://www.productivitybyheart.com/"&gt;Productivity By Heart&lt;/a&gt; course, which brought back the creativity spark I felt I had lost.
This course offered a fresh perspective on productivity and has been a game-changer for me.&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://credsverse.com/credentials/f51a1f4f-dea2-41a0-a661-fd1c110488fe"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_10_productivity_by_heart.png" alt="Productivity By Heart Certification" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;As always, I've kept up with my monthly summaries, where I compile a few sentences about each month, along with any interesting articles, tools, and other materials I've come across.
Each month, I also add a personal touch with a photo I've taken.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-january-links"&gt;January&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-february-links"&gt;February&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-march-links"&gt;March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-april-links"&gt;April&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-may-links"&gt;May&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-july-links"&gt;July&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-august-links"&gt;August&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-september-links"&gt;September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-october-links"&gt;October&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-november-links"&gt;November&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2024-december-links"&gt;December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also wrote an additional blog post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/declutter-git-status"&gt;git: when ignorance is a bliss&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;2024 was an intensive year, but I've learned a lot. I've compiled my reflections on the year in a podcast, which you can listen to below (made with &lt;a href="https://notebooklm.google/"&gt;NotebookLM&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;audio controls style="width: 100%; margin: 1em 0;"&gt;
    &lt;source src="https://blog.tobked.dev/audio/2024_IT_Links_and_Reflections.mp3" type="audio/mpeg"&gt;
    Your browser does not support the audio element.
&lt;/audio&gt;&lt;/p&gt;
&lt;h2 id="photos"&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img alt="2024_01" src="https://blog.tobked.dev/images/posts/2024/2024_01_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_02" src="https://blog.tobked.dev/images/posts/2024/2024_02_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_03" src="https://blog.tobked.dev/images/posts/2024/2024_03_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_04" src="https://blog.tobked.dev/images/posts/2024/2024_04_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_05" src="https://blog.tobked.dev/images/posts/2024/2024_05_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_06" src="https://blog.tobked.dev/images/posts/2024/2024_06_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_07" src="https://blog.tobked.dev/images/posts/2024/2024_07_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_08" src="https://blog.tobked.dev/images/posts/2024/2024_08_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_09" src="https://blog.tobked.dev/images/posts/2024/2024_09_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_10" src="https://blog.tobked.dev/images/posts/2024/2024_10_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_11" src="https://blog.tobked.dev/images/posts/2024/2024_11_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2024_12" src="https://blog.tobked.dev/images/posts/2024/2024_12_xx.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 01 Jan 2025 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2025-01-01:/2024-summary</guid><category>summary</category><category>summary</category><category>year</category><category>2024</category></item><item><title>Month summary - December 2024</title><link>https://blog.tobked.dev/2024-december-links</link><description>&lt;h1 id="december-2024"&gt;December 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I decided to revisit and validate my knowledge on Terraform, a tool I've been working with for around 5 years.
It's always been a great experience, so much so that I wrote an introductory article about it four years ago: &lt;a href="https://tobiaszkedzierski.medium.com/terraform-tutorial-introduction-to-infrastructure-as-code-dccec643bfdb"&gt;Terraform Tutorial: Introduction to Infrastructure as Code&lt;/a&gt;.
To make sure I'm still up-to-date, I signed up and successfully passed the &lt;a href="https://www.credly.com/badges/dd230996-5592-4397-9dab-02a5144111b9/public_url"&gt;HashiCorp Certification: Terraform Associate (003)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/dd230996-5592-4397-9dab-02a5144111b9/public_url"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_11_terraform_associate.png" alt="HashiCorp Certification: Terraform Associate (003)" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also ventured into the &lt;a href="https://neovim.io/"&gt;&lt;code&gt;neovim&lt;/code&gt;&lt;/a&gt; (hyperextensible Vim-based text editor) territory, inspired by my workmate &lt;a href="https://github.com/bellini666"&gt;Thiago Bellini&lt;/a&gt; and his fantastic setup.
I took a look at his &lt;a href="https://github.com/bellini666/dotfiles"&gt;dotfiles&lt;/a&gt; and decided to learn the basics of &lt;code&gt;neovim&lt;/code&gt; first, before diving into &lt;a href="https://www.lazyvim.org/"&gt;LazyVim&lt;/a&gt; or &lt;a href="https://nvchad.com/"&gt;NvChad&lt;/a&gt;.
This led me to fork &lt;a href="https://github.com/TobKed/kickstart.nvim/tree/master"&gt;kickstart.nvim&lt;/a&gt;, a launch point for personal nvim configuration.
I've been slowly exploring the world of neovim in my free time.
It hasn't replaced my IDE yet, but who knows what the future holds.&lt;/p&gt;
&lt;p&gt;And speaking of time, I've been thinking about how the recent influx of distractions has been impacting my focus.
To help manage and improve my focus, I found these resources to be quite helpful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bikeshed.thoughtbot.com/451"&gt;The Bike Shed: 451: Making Time for and Managing Focus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ok33EXy_mN8"&gt;How to Stay Focused - 3 Proven Techniques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=4AwyVTHEU3s"&gt;Huberman Lab Essentials - How to Focus to Change Your Brain&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, this month has been about &lt;strong&gt;Terraform&lt;/strong&gt;, &lt;strong&gt;neovim&lt;/strong&gt;, and &lt;strong&gt;focus&lt;/strong&gt;. Onward to the next month's adventures!&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-engineering-manager-fast-forwarding-decision-making"&gt;&lt;a href="https://theengineeringmanager.substack.com/p/fast-forwarding-decision-making"&gt;The Engineering Manager: Fast-forwarding decision making&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Let's go faster.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dmitry-mazin-demystifying-git-submodules"&gt;&lt;a href="https://www.cyberdemon.org/2024/03/20/submodules.html"&gt;Dmitry Mazin: Demystifying git submodules&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, I’ll explain exactly what I needed to know in order to work with submodules without inflicting self-damage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="using-an-8k-tv-as-a-monitor"&gt;&lt;a href="https://daniel.lawrence.lu/blog/y2023m12d15/"&gt;Using an 8K TV as a monitor&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TLDR: If your job is to write code all day or stare at Excel spreadsheets, buy an 8K TV instead of a multi-monitor setup.
You can even use the same TV for 4K 120 Hz gaming or watching movies as a bonus!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="a-guide-to-context-switching"&gt;&lt;a href="https://blog.logrocket.com/product-management/context-switching/"&gt;A guide to context switching&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Context switching is when you shift your focus from one task to another.
This requires you to disengage from one activity and re-engage with another.
If the shifting happens too frequently, it could lead to mental fatigue, lack of productivity, and errors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="aichat"&gt;&lt;a href="https://github.com/sigoden/aichat"&gt;aichat&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AIChat is an all-in-one LLM CLI tool featuring Shell Assistant, CMD &amp;amp; REPL Mode, RAG, AI Tools &amp;amp; Agents, and More.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="pythons-pathlib-module"&gt;&lt;a href="https://www.pythonmorsels.com/pathlib-module/"&gt;Python's pathlib module&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Does your Python code need to work with file paths?
You should consider using pathlib.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="trey-hunner-lazy-self-installing-python-scripts-with-uv"&gt;&lt;a href="https://treyhunner.com/2024/12/lazy-self-installing-python-scripts-with-uv/"&gt;Trey Hunner: Lazy self-installing Python scripts with uv&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A few months ago, my friend &lt;a href="https://micro.webology.dev/"&gt;Jeff Triplett&lt;/a&gt; showed me that uv can work within a shebang line and can read a special comment at the top of a Python file that tells uv which Python version to run a script with and which dependencies it needs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="robert-heaton-pymyflyspy-track-your-flight-using-its-headrest-data"&gt;&lt;a href="https://robertheaton.com/pymyflyspy/"&gt;Robert Heaton: PyMyFlySpy: track your flight using its headrest data&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I finished &lt;code&gt;PyMyFlySpy&lt;/code&gt; the day before we left. The code is available on &lt;a href="https://github.com/robert/PyMyFlySpy"&gt;GitHub&lt;/a&gt; and it’s easy to setup and run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="modern-good-practices-for-python-development"&gt;&lt;a href="https://www.stuartellis.name/articles/python-modern-practices/"&gt;Modern Good Practices for Python Development &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python has a long history, and it has evolved over time. This article describes some agreed modern best practices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="superfastpython-asyncio-event-loop-in-separate-thread"&gt;&lt;a href="https://superfastpython.com/asyncio-event-loop-separate-thread/"&gt;SuperFastPython: Asyncio Event Loop in Separate Thread&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We can run an asyncio event loop in a new thread by starting a new thread and configuring it to start or run an event loop.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="single-file-django-apps-with-nanodjango"&gt;&lt;a href="https://lincolnloop.com/insights/single-file-apps-with-nanodjango/"&gt;Single-file Django Apps with nanodjango&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Nanodjango is a project to bring that simplicity to Django, without losing any of its power&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="creating-ai-based-summaries-in-a-django-websites"&gt;&lt;a href="https://www.djangotricks.com/blog/2024/11/creating-ai-based-summaries-in-django/"&gt;Creating AI-based Summaries in a Django Websites&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this post, I'll share how I used Simplemind and Gemini to automate this process in my Django-based project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="mypy-baseline"&gt;&lt;a href="https://github.com/orsinium-labs/mypy-baseline"&gt;mypy-baseline&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Integrate mypy in seconds with existing codebase. A friendly CLI tool to make mypy report only new type violations and ignore existing ones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="blacklanternsecuritybbot"&gt;&lt;a href="https://github.com/blacklanternsecurity/bbot"&gt;blacklanternsecurity/bbot&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The recursive internet scanner for hackers. 🧡&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="pet"&gt;&lt;a href="https://github.com/knqyf263/pet"&gt;Pet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simple command-line snippet manager&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="nvchad"&gt;&lt;a href="https://github.com/NvChad/NvChad"&gt;NvChad&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="codebase-digest"&gt;&lt;a href="https://github.com/kamilstanuch/codebase-digest"&gt;Codebase Digest&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;🗜️ Codebase-digest is your AI-friendly codebase packer and analyzer.
Features 60+ coding prompts and generates structured overviews with metrics.
Ideal for feeding projects to LLMs like GPT-4, Claude, PaLM, and Gemini for code analysis and understanding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="optimize-your-cloud-run-functions"&gt;&lt;a href="https://medium.com/google-cloud/optimize-your-cloud-run-functions-7bf0b6c188f4"&gt;Optimize your Cloud Run functions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In my experience, tuning Serverless services always requires actual testing and analysis of results. It’s a bit of trial and error and Cloud Run functions is no different.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-in-bigquery-unlocking-multimodal-search-with-vector-embeddings"&gt;&lt;a href="https://medium.com/google-cloud/gemini-in-bigquery-unlocking-multimodal-search-with-vector-embeddings-part-2-69e26c36fee5"&gt;Gemini in BigQuery: Unlocking Multimodal Search with Vector Embeddings&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This blog post will guide you through using vector search in BigQuery to perform semantic searches using both text and image(or other multimodal) inputs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-locking-down-cloud-run-inside-commerzbanks-adoption-of-custom-org-policies"&gt;&lt;a href="https://cloud.google.com/blog/topics/financial-services/commerzbank-cloud-run-custom-org-policies"&gt;Google Cloud: Locking down Cloud Run: Inside Commerzbank's adoption of custom org policies&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The granular control possible due to Custom Org Policies has been a game-changer.
Commerzbank and customers like it can now tailor their security policies to their exact needs, preventing potential breaches and ensuring regulatory compliance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-dataproc-serverless-now-faster-easier-and-smarter"&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/dataproc-serverless-performance-and-usability-updates"&gt;Google Cloud: Dataproc Serverless: Now faster, easier and smarter&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We are thrilled to announce new capabilities that make running Dataproc Serverless even faster, easier, and more intelligent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-how-to-deploy-llama-32-1b-instruct-model-with-google-cloud-run-gpu"&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/how-to-deploy-llama-3-2-1b-instruct-model-with-google-cloud-run/"&gt;Google Cloud: How to deploy Llama 3.2-1B-Instruct model with Google Cloud Run GPU&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As open-source large language models (LLMs) become increasingly popular, developers are looking for better ways to access new models and deploy them on &lt;a href="https://cloud.google.com/run/docs/configuring/services/gpu"&gt;Cloud Run GPU&lt;/a&gt;.
That’s why Cloud Run now offers fully managed NVIDIA GPUs, which removes the complexity of driver installations and library configurations.
This means you’ll benefit from the same on-demand availability and effortless scalability that you love with Cloud Run's CPU and memory, with the added power of NVIDIA GPUs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="1-dataset-100-visualisations"&gt;&lt;a href="https://100.datavizproject.com/"&gt;1 dataset 100 visualisations&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We wanted to show the diversity and complexity of data visualization and how we can tell different stories using limited visual properties and assets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="navidrome-music-server"&gt;&lt;a href="https://github.com/navidrome/navidrome"&gt;Navidrome Music Server&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Navidrome is an open source web-based music collection server and streamer.
It gives you freedom to listen to your music collection from any browser or mobile device.
It's like your personal Spotify!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://bikeshed.thoughtbot.com/451"&gt;The Bike Shed: 451: Making Time for and Managing Focus&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Joël has some more timezone facts to share, while Stephanie reveals her worst enemy when it comes to productivity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="gogaruco-2010-the-shell-haters-handbook-by-ryan-tomayko"&gt;&lt;a href="https://www.youtube.com/watch?v=olH-9b3VJfs"&gt;GoGaRuCo 2010 - The Shell Hater's Handbook by: Ryan Tomayko&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/olH-9b3VJfs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="power-use-of-unix-dan-north-goto-2013"&gt;&lt;a href="https://www.youtube.com/watch?v=7uwW20odwEk"&gt;Power Use of UNIX • Dan North • GOTO 2013&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/7uwW20odwEk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-18-jayson-e-street-deceiving-the-heavens-to-cross-the-sea"&gt;&lt;a href="https://www.youtube.com/watch?v=n54nXogdD_0"&gt;DEF CON 18 - Jayson E. Street - Deceiving the Heavens to Cross the Sea&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/n54nXogdD_0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="this-is-it-maciej-kawecki-wojciech-zaremba-tak-bedzie-wygladaa-nowa-era-ludzkosci"&gt;&lt;a href="https://www.youtube.com/watch?v=6QhGUQ5iTdk"&gt;This Is IT - Maciej Kawecki: Wojciech Zaremba: Tak będzie wyglądała Nowa Era ludzkości&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/6QhGUQ5iTdk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-become-a-great-software-developer-best-advice-from-top-notch-engineers"&gt;&lt;a href="https://www.youtube.com/watch?v=suATPK45sjk"&gt;How to Become a Great Software Developer — Best Advice from Top-Notch Engineers&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/suATPK45sjk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="piotr-zarzycki-pawe-srokosz-scambook-omh-2024"&gt;&lt;a href="https://www.youtube.com/watch?v=AastpuFMHEU"&gt;Piotr Zarzycki, Paweł Srokosz: ScamBook | OMH 2024&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/AastpuFMHEU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="jak-podsumowac-rok-i-zaplanowac-kolejny-bezpatny-live-piotra-nabielca-productivitybyheart"&gt;&lt;a href="https://www.youtube.com/watch?v=BlE130jPnDM"&gt;Jak podsumować rok i zaplanować kolejny? 🔮 Bezpłatny LIVE Piotra Nabielca #ProductivityByHeart&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/BlE130jPnDM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-to-turn-vim-into-a-powerful-and-beautiful-ide-jess-archer-vimconf-2021"&gt;&lt;a href="https://www.youtube.com/watch?v=434tljD-5C8"&gt;How to turn Vim into a powerful and beautiful IDE | Jess Archer, Vimconf 2021&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/434tljD-5C8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="tj-devries-the-only-video-you-need-to-get-started-with-neovim"&gt;&lt;a href="https://www.youtube.com/watch?v=m8C0Cq9Uv9o"&gt;TJ DeVries -  The Only Video You Need to Get Started with Neovim&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/m8C0Cq9Uv9o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="henry-misc-full-neovim-setup-from-scratch-in-2025"&gt;&lt;a href="https://www.youtube.com/watch?v=KYDG3AHgYEs"&gt;Henry Misc -  Full Neovim Setup from Scratch in 2025&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/KYDG3AHgYEs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="thevimeagen-teaching-neovim-from-scratch-to-a-noob"&gt;&lt;a href="https://www.youtube.com/watch?v=-ybCiHPWKNA"&gt;TheVimeagen -  Teaching Neovim From Scratch To A Noob&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/-ybCiHPWKNA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 31 Dec 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-12-31:/2024-december-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - November 2024</title><link>https://blog.tobked.dev/2024-november-links</link><description>&lt;h1 id="november-2024"&gt;November 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I worked on analytics for my personal project, dealing with complex SQL queries.
During the exploration phase, I discovered a helpful tool called &lt;a href="https://github.com/RamiAwar/dataline"&gt;dataline&lt;/a&gt;, created by my colleague &lt;a href="https://github.com/RamiAwa"&gt;Rami Awar&lt;/a&gt;.
It's a natural language interface for data exploration that made understanding my dataset much easier.
It was a great help in understanding what I could achieve with my data.&lt;/p&gt;
&lt;p&gt;I also spent time evaluating different AI assistants.
After testing several options, I found &lt;a href="https://claude.ai"&gt;Claude AI&lt;/a&gt; to provide the most useful responses for my needs.&lt;/p&gt;
&lt;p&gt;I've been watching DEFCON presentations in my free time.
These security talks are fascinating and offer great insights into current cybersecurity trends and challenges.
You can find the presentations I watched in the video section at the bottom.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="joan-westenberg-i-miss-the-internet"&gt;&lt;a href="https://www.joanwestenberg.com/i-miss-the-internet/"&gt;Joan Westenberg: I Miss the Internet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The real internet. The one we used to have. Before it all got so much less – and somehow so much more – complicated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="high-growth-engineer-5-lessons-i-learned-the-hard-way-from-10-years-as-a-software-engineer"&gt;&lt;a href="https://read.highgrowthengineer.com/p/5-lessons-i-learned-the-hard-way-from-10-years"&gt;High Growth Engineer: 5 Lessons I learned the hard way from 10+ years as a software engineer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Guest post by Staff Engineer, Gourav Khanijoe&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mind-your-image-metadata"&gt;&lt;a href="https://stefaniemolin.com/articles/devx/pre-commit/exif-stripper/"&gt;Mind Your Image Metadata&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A brief introduction to image metadata and how to remove it with exif-stripper.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-life-engineered-mid-to-staff-engineer-in-two-years-by-job-hopping"&gt;&lt;a href="https://alifeengineered.substack.com/p/mid-level-to-staff-engineer-in-two?publication_id=2598310&amp;amp;post_id=150852930&amp;amp;isFreemail=true&amp;amp;r=4e700z&amp;amp;triedRedirect=true"&gt;A Life Engineered: Mid To Staff Engineer In Two Years By Job Hopping&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How an SDE-II at Amazon got two promotions by hopping jobs in just two years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="rmoffs-random-ramblings-blog-writing-for-developers"&gt;&lt;a href="https://rmoff.net/2023/07/19/blog-writing-for-developers/"&gt;rmoff’s random ramblings: Blog Writing for Developers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;To summarise this whole article, bear in mind that these two statements are not mutually exclusive:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Write for yourself. Work out what you would like to read, and write it.
Think of the reader and what value you’re providing to them in your writing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s because as a developer writing for developers, you are the reader.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ryan-cheley-djangocon-us-2024-talk"&gt;&lt;a href="https://www.ryancheley.com/2024/10/17/djangocon-us-2024-talk/"&gt;Ryan Cheley: DjangoCon US 2024 Talk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This year, as last year, my general prep technique was to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Give the presentation AND record it&lt;/li&gt;
&lt;li&gt;Watch the recording and make notes about what I needed to change&lt;/li&gt;
&lt;li&gt;Make the changes&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-presidents-doctor-why-your-projects-take-forever"&gt;&lt;a href="https://thoughtbot.com/blog/the-presidents-doctor"&gt;The president's doctor: Why your projects take forever &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The president’s doctor isn’t busy with other patients. They sit, and wait, and maybe read a paper on The Correlation Between Presidential Tenure And Grey Hair.
They do nothing but be ready for when the president needs them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="strategize-your-career-my-strategy-against-distractions-as-a-software-engineer-working-in-an-open-floor-office"&gt;&lt;a href="https://strategizeyourcareer.com/p/my-strategy-against-distractions"&gt;Strategize Your Career: 🛡️ My strategy against distractions as a software engineer working in an open-floor office&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With distractions becoming more prevalent, engineers need effective strategies to minimize interruptions and enhance their focus. This article offers actionable insights to fight them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="shell_gpt"&gt;&lt;a href="https://github.com/TheR1D/shell_gpt"&gt;shell_gpt&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A command-line productivity tool powered by AI large language models like GPT-4, will help you accomplish your tasks faster and more efficiently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="jeff-tripletts-microblog-uv-does-everything-or-enough-that-im-not-sure-what-else-it-needs-to-do"&gt;&lt;a href="https://micro.webology.dev/2024/11/03/uv-does-everything.html"&gt;Jeff Triplett's Micro.blog: 🤷 UV does everything or enough that I'm not sure what else it needs to do&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;UV feels like one of those old infomercials where it solves everything, which is where we have landed in the Python world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="efe-oge-djangoday-copenhagen-2024-and-copenhagen"&gt;&lt;a href="https://efe.me/2024/11/djangoday-copenhagen-2024-and-copenhagen"&gt;Efe Öge: Djangoday Copenhagen 2024 and Copenhagen&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I had been in Copenhagen for a long weekend for the &lt;a href="https://2024.djangoday.dk/"&gt;Djangoday Copenhagen 2024&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cory-zue-deploying-multiple-django-apps-to-a-single-server-with-kamal-2"&gt;&lt;a href="https://www.coryzue.com/writing/kamal-django/"&gt;Cory Zue: Deploying (Multiple) Django Apps to a Single Server with Kamal 2&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you haven’t heard of it, Kamal is a tool built by the Rails community to deploy applications to any server. They recently released Kamal 2, which makes it easy to deploy multiple apps to the same server, which really helps cut down on costs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-practical-guide-to-scaling-django"&gt;&lt;a href="https://slimsaas.com/blog/django-scaling-performance"&gt;The Practical Guide to Scaling Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Most Django scaling guides focus on theoretical maximums.
But real scaling isn’t about handling hypothetical millions of users - it’s about systematically eliminating bottlenecks as you grow. Here’s how to do it right, based on patterns that work in production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="neovim"&gt;&lt;a href="https://github.com/neovim/neovim"&gt;neovim&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Vim-fork focused on extensibility and usability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="lazyvim"&gt;&lt;a href="https://github.com/LazyVim/LazyVim"&gt;LazyVim&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Neovim config for the lazy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="inirudebwoygoogle-photo-takeout-fix"&gt;&lt;a href="https://github.com/inirudebwoy/google-photo-takeout-fix"&gt;inirudebwoy/google-photo-takeout-fix&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It takes your Google export and fixes date on each photo.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="granian"&gt;&lt;a href="https://github.com/emmett-framework/granian"&gt;Granian&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Rust HTTP server for Python applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="kamal"&gt;&lt;a href="https://kamal-deploy.org/"&gt;Kamal&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Kamal offers zero-downtime deploys, rolling restarts, asset bridging, remote builds, accessory service management, and everything else you need to deploy and manage your web app in production with Docker.
Originally built for Rails apps, Kamal will work with any type of web app that can be containerized.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="posting"&gt;&lt;a href="https://github.com/darrenburns/posting"&gt;Posting&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A powerful HTTP client that lives in your terminal.&lt;/p&gt;
&lt;p&gt;Posting is an HTTP client, not unlike Postman and Insomnia.
As a TUI application, it can be used over SSH and enables efficient keyboard-centric workflows.
Your requests are stored locally in simple YAML files, so they're easy to read and version control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="gitpod-were-leaving-kubernetes"&gt;&lt;a href="https://www.gitpod.io/blog/we-are-leaving-kubernetes"&gt;Gitpod: We’re leaving Kubernetes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is not a story of whether or not to use Kubernetes for production workloads that’s a whole separate conversation.
As is the topic of how to build a comprehensive soup-to-nuts developer experience for shipping applications on Kubernetes.&lt;/p&gt;
&lt;p&gt;This is the story of how (not) to build development environments in the cloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="michael-kennedy-opposite-of-cloud-native-is"&gt;&lt;a href="https://mkennedy.codes/posts/opposite-of-cloud-native-is-stack-native/"&gt;Michael Kennedy: Opposite of Cloud Native is?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this essay, I’ll define a new term for the modern opposite of cloud-native. I think you’ll find it appealing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="zero-trust-architecture-in-gcp"&gt;&lt;a href="https://medium.com/google-cloud/zero-trust-architecture-in-gcp-9b8ec1bbf578"&gt;Zero Trust Architecture in GCP&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Zero trust is a cloud security model designed to secure modern organizations by removing implicit trust and enforcing strict identity authentication and authorization.
Under zero trust, every user, device, and component is considered untrusted at all times, regardless of whether they are inside or outside of an organization’s network.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="lifebook"&gt;&lt;a href="https://www.mindvalley.com/lifebook"&gt;Lifebook&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lifebook is a transformational lifestyle design system that empowers you to ENVISION, PLAN, and ACHIEVE your very best life. On your own terms, and nobody else’s.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="low-level-ai-engineering-and-hacking-aifoundryorg-podcast"&gt;&lt;a href="https://aifoundry.org/blog/low-level-ai-engineering-and-hacking-aifoundry.org-podcast"&gt;Low-Level AI Engineering and Hacking: AIFoundry.org Podcast&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This year, the Dev Room we organize with AIFoundry.org, @jarekpitiouk and other great organizers is titled "Low-Level AI Hacking and Engineering."
There are plenty of reasons for this focus, but before we dive into those, our main call to action is for everyone to check out the Call for Papers!
Feel free to apply with your open-source AI projects. Everyone interested in AI and AI engineering is encouraged to join us at FOSDEM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="test-code-223-writing-stuff-down-is-a-super-power"&gt;&lt;a href="https://github.com/RamiAwar/dataline"&gt;Test &amp;amp; Code 223: Writing Stuff Down is a Super Power&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Taking notes well can help to listen better, remember things, show respect, be more accountable, free up mind space to solve problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="pydata-amsterdam-2024-yoytube-playlist"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLGVZCDnMOq0reU2lzNZCn9obkyRVaSnpF"&gt;PyData Amsterdam 2024 - YoyTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id="hrejterzy-dramaty-wielu-polskich-firm-dlaczego-nie-sa-odporne-na-ataki-hakerskie-skad-zudzenie-ze-sa"&gt;&lt;a href="https://www.youtube.com/watch?v=HBZw2VHhZy0"&gt;HRejterzy: Dramaty wielu polskich firm - dlaczego nie są odporne na ataki hakerskie? Skąd złudzenie, że są?&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/HBZw2VHhZy0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="python-bytes-409-weve-moved-to-hetzner"&gt;&lt;a href="https://www.youtube.com/watch?v=vg6VLG0jKek"&gt;Python Bytes 409: We've moved to Hetzner&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/vg6VLG0jKek" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-32-counter-deception-defending-yourself-in-a-world-full-of-lies-tom-cross-greg-conti"&gt;&lt;a href="https://www.youtube.com/watch?v=gHqDEMrqTjE"&gt;DEF CON 32 - Counter Deception: Defending Yourself in a World Full of Lies - Tom Cross, Greg Conti&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/gHqDEMrqTjE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-32-social-engineering-like-youre-picard-jayson-e-street"&gt;&lt;a href="https://www.youtube.com/watch?v=kc25CttuDmw"&gt;DEF CON 32 - Social Engineering Like you’re Picard - Jayson E Street&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/kc25CttuDmw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-32-inside-the-fbis-secret-encrypted-phone-company-anom-joseph-cox"&gt;&lt;a href="https://www.youtube.com/watch?v=uFyk5UOyNqI"&gt;DEF CON 32 - Inside the FBI’s Secret Encrypted Phone Company ‘Anom’ - Joseph Cox&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/uFyk5UOyNqI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 30 Nov 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-11-30:/2024-november-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - October 2024</title><link>https://blog.tobked.dev/2024-october-links</link><description>&lt;h1 id="october-2024"&gt;October 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;In April 2021, I wrote about the &lt;a href="https://blog.tobked.dev/productivity-course"&gt;Productivity Step By Step (Produktywność Krok Po Kroku)&lt;/a&gt; course by &lt;a href="https://www.linkedin.com/in/piotrnabielec/"&gt;Piotr Nabielec&lt;/a&gt;.
This time, I completed the &lt;a href="https://www.productivitybyheart.com/"&gt;Productivity By Heart&lt;/a&gt; course, and I must say, it brought back the creativity spark I felt I had lost along the way.
The course provided a fresh perspective on productivity and has been a game-changer for me.
You can find my certification of completion &lt;a href="https://credsverse.com/credentials/f51a1f4f-dea2-41a0-a661-fd1c110488fe"&gt;here&lt;/a&gt;.
I’ll be diving into more details about this course in a separate post after going through all the materials once again.&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://credsverse.com/credentials/f51a1f4f-dea2-41a0-a661-fd1c110488fe"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_10_productivity_by_heart.png" alt="Productivity By Heart Certification" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On another note, I've been enhancing my workflow in the terminal.
I've added some new tools like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/junegunn/fzf"&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt; - a command-line fuzzy finder&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BurntSushi/ripgrep"&gt;&lt;code&gt;ripgrep&lt;/code&gt;&lt;/a&gt; - a recursive line-oriented search tool&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sharkdp/fd"&gt;&lt;code&gt;fd&lt;/code&gt;&lt;/a&gt; - an alternative to &lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="a-short-history-of-the-oreilly-animals"&gt;&lt;a href="https://www.oreilly.com/content/a-short-history-of-the-oreilly-animals/"&gt;A short history of the O’Reilly animals&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How lions, tigers, and tarsiers went geek.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="moving-to-the-netherlands-for-a-tech-job-the-ultimate-guide"&gt;&lt;a href="https://relocate.me/blog/job-relocation/moving-to-the-netherlands-for-a-tech-job/"&gt;Moving to the Netherlands for a Tech Job: The Ultimate Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;To sum up, the Netherlands is a unique relocation destination that offers a very beneficial environment for IT specialists with a 30% tax ruling, excellent work-life balance, and outstanding standard of living.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="high-growth-engineer-5-keys-to-the-hiring-manager-interview-from-a-meta-senior-manager"&gt;&lt;a href="https://read.highgrowthengineer.com/p/5-keys-to-the-hiring-manager-interview"&gt;High Growth Engineer: 5 Keys to the Hiring Manager Interview from a Meta Senior Manager&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In his time at Meta, he’s conducted over 2,000 interviews and has seen every mistake in the book. He will share the biggest mistakes with you and what to do instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-and-how-not-to-design-rest-apis"&gt;&lt;a href="https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs"&gt;How to (and how not to) design REST APIs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Much of this may be "duh", but there might be a few rules you haven't considered yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-life-engineered-a-european-developer-journey-in-big-tech"&gt;&lt;a href="https://alifeengineered.substack.com/p/a-european-developer-journey-to-big"&gt;A Life Engineered: A European Developer Journey In Big Tech&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With so much focus on the US, there's a lot of opportunity in Europe-if you can find it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-im-doing-and-how-its-going"&gt;&lt;a href="https://danielmiessler.com/p/what-im-doing-how-its-going"&gt;What I'm Doing and How It's Going&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How I went from a $350K FTE to $700K+ doing my own thing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="high-growth-engineer-3-career-principles-that-got-me-to-director-at-google"&gt;&lt;a href="https://read.highgrowthengineer.com/p/3-career-principles-to-director-at-google"&gt;High Growth Engineer: 3 Career Principles that got me to Director at Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What helped me get 5 promotions in 10 years at Google.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="allegro-tech-blog-do-repeat-yourself-what-is-responsibility-in-code"&gt;&lt;a href="https://blog.allegro.tech/2024/10/do-repeat-yourself"&gt;Allegro tech blog: Do repeat yourself! What is responsibility in code?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Did you know that in October this year, &lt;a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY principle&lt;/a&gt; will celebrate its 25th anniversary?
It was proposed by Andrew Hunt and David Thomas in The Pragmatic Programmer book in 1999.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="unplanned-obsolescence-less-htmx-is-more"&gt;&lt;a href="https://unplannedobsolescence.com/blog/less-htmx-is-more/"&gt;Unplanned Obsolescence: Less htmx is More&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How should we use htmx?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hacking-scale-how-uber-reduced-their-log-size-by-99"&gt;&lt;a href="https://newsletter.betterstack.com/p/how-uber-reduced-their-log-size-by"&gt;Hacking Scale: How Uber Reduced Their Log Size By 99%&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Uber broke apart an open source tool to massively compress their logs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-pragmatic-engineer-why-techies-leave-big-tech"&gt;&lt;a href="https://newsletter.pragmaticengineer.com/p/leaving-big-tech"&gt;The Pragmatic Engineer: Why techies leave Big Tech&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A job in Big Tech is a career goal for many software engineers and engineering managers.
So what leads people to quit, after working so hard to land these roles?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="gyshido"&gt;&lt;a href="https://gyshido.com/"&gt;GYSHIDO&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Art Of Getting Your Shit Done&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="habits-of-great-software-engineers"&gt;&lt;a href="https://vadimkravcenko.com/shorts/habits-of-great-software-engineers/"&gt;Habits of great software engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The true essence of a software developer's role combines many different skills, mindsets, and disciplines.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="google-notebooklm"&gt;&lt;a href="https://notebooklm.google/"&gt;Google NotebookLM&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;NotebookLM is your personalized AI research assistant powered by Google's most capable model, Gemini 1.5 Pro.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="goncalo-valerio-extracting-wisdom-from-conference-videos"&gt;&lt;a href="https://blog.ovalerio.net/archives/2900"&gt;Gonçalo Valério: “Extracting wisdom” from conference videos&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A couple of months ago, &lt;a href="https://blog.ovalerio.net/archives/2825"&gt;I wrote a blog post about how I run these AI tools on my device without the need of leaking any data to external services&lt;/a&gt;.
Today, I’ll describe how I used them to help me with the task of extracting the key information and learnings from all the videos I won’t be able to watch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="goncalo-valerio-local-ai-to-the-rescue"&gt;&lt;a href="https://blog.ovalerio.net/archives/2825"&gt;Gonçalo Valério: Local AI to the rescue&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While understandable, given that the hardware requirements for AI stuff are massive, I find unsettling the continuation of the trend of all your data and interactions being shared with a remote company.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="prompt-engineering-guide"&gt;&lt;a href="https://www.promptingguide.ai/"&gt;Prompt Engineering Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Motivated by the high interest in developing with LLMs, we have created this new prompt engineering guide that contains all the latest papers, advanced prompting techniques, learning guides, model-specific prompting guides, lectures, references, new LLM capabilities, and tools related to prompt engineering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="forbes-google-will-track-your-location-every-15-minuteseven-with-gps-disabled"&gt;&lt;a href="https://www.forbes.com/sites/zakdoffman/2024/10/05/google-new-location-tracking-warning-pixel-9-pro-pixel-9-pro-xl-pixel-9-pro-fold/"&gt;Forbes: Google Will Track Your Location ‘Every 15 Minutes’—‘Even With GPS Disabled’&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re worried your phone might be spying on you, sharing your data and location without you realizing, then a new report this week will make alarming reading.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloudimposer-executing-code-on-millions-of-google-servers-with-a-single-malicious-package"&gt;&lt;a href="https://www.tenable.com/blog/cloudimposer-executing-code-on-millions-of-google-servers-with-a-single-malicious-package"&gt;CloudImposer: Executing Code on Millions of Google Servers with a Single Malicious Package&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tenable Research discovered a remote code execution (RCE) vulnerability in Google Cloud Platform (GCP) that is now fixed and that we dubbed CloudImposer.
The vulnerability could have allowed an attacker to hijack an internal software dependency that Google pre-installs on each Google Cloud Composer pipeline-orchestration tool.
Tenable Research also found risky guidance in GCP documentation that customers should be aware of.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="miguel-grinberg-the-ultimate-guide-to-error-handling-in-python"&gt;&lt;a href="https://blog.miguelgrinberg.com/post/the-ultimate-guide-to-error-handling-in-python"&gt;Miguel Grinberg: The Ultimate Guide to Error Handling in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Exceptions in Python is one of those areas that have a surface layer that most people know, and a deeper, almost secret one that a lot of developers don't even know exists.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="simon-willisons-tils-building-an-automatically-updating-live-blog-in-django"&gt;&lt;a href="https://til.simonwillison.net/django/live-blog"&gt;Simon Willison’s TILs: Building an automatically updating live blog in Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenAI's DevDay event yesterday (October 1st 2024) didn’t invite press (as far as I can tell), didn’t livestream the event and didn’t allow audience livestreaming either.
I made a last minute decision to &lt;a href="https://simonwillison.net/2024/Oct/1/openai-devday-2024-live-blog/"&gt;live blog the event&lt;/a&gt; myself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="openaiswarm"&gt;&lt;a href="https://github.com/openai/swarm"&gt;openai/swarm&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Educational framework exploring ergonomic, lightweight multi-agent orchestration. Managed by OpenAI Solution team.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="rwblickhan-command-line-tools-i-like-2022"&gt;&lt;a href="https://rwblickhan.org/newsletters/command-line-tools-i-like-2022/"&gt;rwblickhan: Command Line Tools I Like (2022)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;That said, I like a number of modern command line tools, many written in Rust, which are typically blazing fast and have better command-line interfaces than traditional Unix tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sharkdpfd"&gt;&lt;a href="https://github.com/sharkdp/fd"&gt;sharkdp/fd&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A simple, fast and user-friendly alternative to 'find'&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="international-tech-job-search-handbook"&gt;&lt;a href="https://github.com/AndrewStetsenko/tech-jobs-with-relocation"&gt;International Tech Job Search Handbook&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;All-in-one guide to getting a tech job abroad 🌎&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-black-dog-live-coding-software-for-music"&gt;&lt;a href="https://www.theblackdogma.com/2024/09/live-coding-software-for-music/"&gt;The Black Dog: Live Coding Software For Music&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In September 2024 we took part in a Live Coding Workshop and Showcase at the &lt;a href="https://festivalofthemind.sheffield.ac.uk/2024/"&gt;Festival of the Mind 2024&lt;/a&gt; in Sheffield.
Together with the School of Computer Science at the University of Sheffield, we spent the afternoon making bleeps with code, before heading out for a live demo at the Spiegeltent in the city centre.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="django-day-copenhagen-2024"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLEpW1LzVyQWhad3QVuB5_2PNPCd7L22W_"&gt;Django Day Copenhagen 2024&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The full Django Day Copenhagen 2024 playlist.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="europython-2024"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL8uoeex94UhE1CbtkDK4hevp2lBif57Nq"&gt;EuroPython 2024&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The full EuroPython 2024 playlist&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ted-ted-ferries-why-you-should-define-your-fears-instead-of-your-goals"&gt;&lt;a href="https://www.ted.com/talks/tim_ferriss_why_you_should_define_your_fears_instead_of_your_goals/"&gt;TED: Ted Ferries - Why you should define your fears instead of your goals&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The hard choices -- what we most fear doing, asking, saying -- are very often exactly what we need to do.
How can we overcome self-paralysis and take action?
Tim Ferriss encourages us to fully envision and write down our fears in detail, in a simple but powerful exercise he calls "fear-setting."
Learn more about how this practice can help you thrive in high-stress environments and separate what you can control from what you cannot.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="podcast-charyzmatyczny-ciagle-ciezko-pracujesz-i-nadal-nic-nie-masz-piotr-nabielec"&gt;&lt;a href="https://www.youtube.com/watch?v=VKynJ6ZtLsY"&gt;Podcast Charyzmatyczny:  Ciągle ciężko pracujesz i nadal nic nie masz? | Piotr Nabielec&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/VKynJ6ZtLsY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="def-con-32-disenshittify-or-die-how-hackers-can-seize-the-means-of-computation-cory-doctorow"&gt;&lt;a href="https://www.youtube.com/watch?v=4EmstuO0Em8"&gt;DEF CON 32 - Disenshittify or die! How hackers can seize the means of computation - Cory Doctorow&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/4EmstuO0Em8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 31 Oct 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-10-31:/2024-october-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - September 2024</title><link>https://blog.tobked.dev/2024-september-links</link><description>&lt;h1 id="september-2024"&gt;September 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h4 id="github-actions"&gt;GitHub Actions&lt;/h4&gt;
&lt;p&gt;This month I delved deep into the world of &lt;a href="https://github.com/features/actions"&gt;GitHub Actions&lt;/a&gt;, a tool that I've grown to love and become an expert in.
Previously I've not only worked extensively with GitHub Actions but also created my own custom actions, such as the &lt;a href="https://github.com/TobKed/github-forks-sync-action"&gt;GitHub Forks Sync Action&lt;/a&gt; and the &lt;a href="https://github.com/TobKed/label-when-approved-action"&gt;Label When Approved Action&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition to this I utilized GitHub Actions for scraping data related to GitHub Actions for the Apache Software Foundation.
This allowed me to calculate valuable statistics.
My dedication to mastering GitHub Actions led me to pass a certification exam with minimal preparation, earning the badge of a certified GitHub Actions expert, which I proudly display &lt;a href="https://www.credly.com/badges/6b96a6c9-28cb-47dd-9dfa-13dd7a37d543"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://www.credly.com/badges/6b96a6c9-28cb-47dd-9dfa-13dd7a37d543"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_09_github_actions.png" alt="GitHub Actions Certification" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Me a while back, full of hair and excitement, giving a presentation on GitHub Actions:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/2022_10_brival.jpg" alt="Brival Tech Talk - tips &amp; tricks" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h4 id="github-action-hugo-photoblog"&gt;GitHub Action + Hugo = Photoblog&lt;/h4&gt;
&lt;p&gt;After achieving this milestone, I decided to channel my expertise into a personal project.
One weekend evening I finally created a photoblog using &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; and GitHub Actions.
To maintain the privacy of the original-size photos and their metadata I kept the source code in a private repository.
With the help of a GitHub Actions workflow, a static website was generated using &lt;strong&gt;Hugo&lt;/strong&gt; and pushed to a public repository, where my photoblog is now available for viewing at &lt;a href="https://photos.tobked.dev"&gt;photos.tobked.dev&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here’s the GitHub Actions workflow: &lt;code&gt;gh-pages.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;github pages&lt;/span&gt;

&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;master&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;pull_request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;ubuntu-latest&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;actions/checkout@v4&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;true&lt;/span&gt;

&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Setup Hugo&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# v3&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;hugo-version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#39;0.134.3&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;extended&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;true&lt;/span&gt;

&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Build&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;hugo --minify&lt;/span&gt;

&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Setup Exiftool&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;woss/exiftool-action@f592e36cc8d653b8f8ac3084b34403d0911236a3&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# v12.87&lt;/span&gt;

&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Remove Exif data from images&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;exiftool -r -all= -ext jpg -ext jpeg -ext png -ext webp -overwrite_original public&lt;/span&gt;

&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Deploy&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# v4&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;github.ref == &amp;#39;refs/heads/master&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;deploy_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;${{ secrets.ACTIONS_PHOTOS_DEPLOY_KEY }}&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;external_repository&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;TobKed/photos&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;publish_dir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;./public&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nt"&gt;cname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;photos.tobked.dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Photo from the &lt;a href="https://photos.tobked.dev/posts/2024_10_05_circles/"&gt;photos.tobked.dev&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a target="\_blank" rel="noopener noreferrer" href="https://photos.tobked.dev/posts/2024_10_05_circles/"&gt;
    &lt;img src="https://blog.tobked.dev/images/posts/2024/2024_09_photoblog.jpg" alt="photos.tobked.dev photography" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="tmux"&gt;tmux&lt;/h4&gt;
&lt;p&gt;In addition to my GitHub Actions adventures, I also dived into learning &lt;a href="https://github.com/tmux/tmux/wiki"&gt;&lt;code&gt;tmux&lt;/code&gt;&lt;/a&gt;, a terminal multiplexer that brought me a lot of joy.
I customized a configuration file to tailor the &lt;code&gt;tmux&lt;/code&gt; experience to my liking, enabling features like mouse support and setting new panes to open in the current directory.&lt;/p&gt;
&lt;p&gt;Here’s my configuration file: &lt;code&gt;.tmux.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;mouse&lt;span class="w"&gt; &lt;/span&gt;on
setw&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;mode-keys&lt;span class="w"&gt; &lt;/span&gt;vi

&lt;span class="c1"&gt;# List of plugins&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;@plugin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tmux-plugins/tpm&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;@plugin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tmux-plugins/tmux-resurrect&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;@plugin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tmux-plugins/tmux-continuum&amp;#39;&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-g&lt;span class="w"&gt; &lt;/span&gt;@continuum-restore&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;on&amp;#39;&lt;/span&gt;

&lt;span class="c1"&gt;# Set new panes to open in current directory&lt;/span&gt;
&lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;c&lt;span class="w"&gt; &lt;/span&gt;new-window&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#{pane_current_path}&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;split-window&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#{pane_current_path}&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;split-window&lt;span class="w"&gt; &lt;/span&gt;-h&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#{pane_current_path}&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h4 id="resources"&gt;Resources&lt;/h4&gt;
&lt;p&gt;I'm excited to share some interesting materials I've gone through. Check them out below.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="high-growth-engineer-my-tech-promotion-algorithm"&gt;&lt;a href="https://read.highgrowthengineer.com/p/my-tech-promotion-algorithm"&gt;High Growth Engineer: My Tech Promotion Algorithm&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Guest post by ex-Amazon Principal Engineer, Steve Huynh.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="architecture-weekly-using-s3-but-not-the-way-you-expected-s3-as-strongly-consistent-event-store"&gt;&lt;a href="https://www.architecture-weekly.com/p/using-s3-but-not-the-way-you-expected"&gt;Architecture Weekly: Using S3 but not the way you expected. S3 as strongly consistent event store&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-s3-conditional-writes"&gt;Amazon S3 now supports conditional writes&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-will-flail-at-your-tech-interviews-heres-why-you-should-care"&gt;&lt;a href="https://fraklopez.com/noodlings/2024-08-25-i-will-fail-your-technicals/"&gt;I will f(l)ail at your tech interviews, here's why you should care&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this post, I will attempt to break down my perspective on technical interviews (techs).
What I see to be their real value and application.
By the end of this, I hope you will know why as a Hiring Manager I’ve pushed back on using them and what I prefer to do instead.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="using-your-own-product-is-a-superpower"&gt;&lt;a href="https://newsletter.posthog.com/p/using-your-own-product-is-a-superpower"&gt;Using your own product is a superpower&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why you should dogfood your product and how we do it at PostHog&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-just-crossed-1-million-on-github-sponsors"&gt;&lt;a href="https://calebporzio.com/i-just-cracked-1-million-on-github-sponsors-heres-my-playbook"&gt;I just crossed $1 million on GitHub Sponsors. 💰🎉&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Want some tangible strategy? Do you too want to make a million bucks in open source? It's easy! 🙄 Let's dive in&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-company-needs-junior-devs"&gt;&lt;a href="https://softwaredoug.com/blog/2024/09/07/your-team-needs-juniors"&gt;Your company needs Junior devs &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Getting coffee with a bunch of local tech leaders, I surprised myself with how stridently I argued why companies should hire junior engineers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ive-built-my-first-successful-side-project-and-i-hate-it"&gt;&lt;a href="https://switowski.com/blog/i-have-built-my-first-successful-side-project-and-i-hate-it/"&gt;I've Built My First Successful Side Project, and I Hate It&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In 2020, I built my first side project.
I scratched my own itch, then started selling it, and since then, the project has earned me over $15,000.
But a few months after releasing it, I was so tired of the maintenance that I wanted to shut it down.
Here is a story about my short entrepreneurial adventure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="advice-from-a-software-engineer-with-8-years-of-experience"&gt;&lt;a href="https://betterprogramming.pub/advices-from-a-software-engineer-with-8-years-of-experience-8df5111d4d55"&gt;Advice From a Software Engineer With 8 Years of Experience&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Practical tips for those who want to advance in their careers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-most-heated-tech-job-market-in-history-advice-for-software-engineers"&gt;&lt;a href="https://blog.pragmaticengineer.com/advice-for-tech-workers-to-navigate-a-heated-job-market/"&gt;The Most Heated Tech Job Market in History: Advice for Software Engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This piece covers advice for tech workers to make the most out of this heated market: whether you want to make a job change or not.
A market where demand for employees outstrips supply is one where employees can do well for themselves with less-than-usual effort.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="7-must-know-lessons-to-be-a-better-engineer-from-top-industry-leaders"&gt;&lt;a href="https://read.highgrowthengineer.com/p/month-of-collabs-recap-2024"&gt;7 Must-Know Lessons To Be A Better Engineer From Top Industry Leaders&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;2024 Month of Collabs: Best lessons to take your career forward&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-not-comments"&gt;&lt;a href="https://buttondown.com/hillelwayne/archive/why-not-comments/"&gt;Why Not Comments&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why not "why not" comments? Not why "not comments"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="release-fatigue-and-going-static"&gt;&lt;a href="https://levit.be/blog/release-fatigue.html"&gt;Release fatigue 😫 and going static&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;By virtue of being statically generated, the code for our website doesn't need to be kept up-to-date with the latest security release of every package and tool we use, it's just HTML!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-scrum-is-stressing-you-out"&gt;&lt;a href="https://rethinkingsoftware.substack.com/p/why-scrum-is-stressing-you-out"&gt;Why Scrum is Stressing You Out&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Back then, things would get crazy around deadlines, but at other times, I recall feeling pretty even. These days, however, the pressure seems omnipresent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="makefiles-for-web-work"&gt;&lt;a href="https://rosszurowski.com/log/2022/makefiles"&gt;Makefiles for Web Work&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt; is a build tool that’s been around since the 1970s. It was originally designed for automating the building of C programs: installing dependencies, running tests, and compiling binaries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-war-applied-to-software-development"&gt;&lt;a href="https://www.toptal.com/agile/art-of-war-software-development"&gt;The Art of War Applied To Software Development&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this post, Toptal Freelance Software Engineer Jose F. Maldonado explains why many of these ancient teachings still matter, and what you can do to make them work for you and your team.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-life-engineered-the-1-mistake-youre-making-with-your-mentor-and-how-you-can-avoid-it"&gt;&lt;a href="https://alifeengineered.substack.com/p/the-1-mistake-youre-making-with-your"&gt;A Life Engineered: The #1 Mistake You're Making with Your Mentor (And How You Can Avoid It)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tips and resources on how to make the most out of your mentorship.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="using-blooms-taxonomy-to-write-effective-learning-outcomes"&gt;&lt;a href="https://tips.uark.edu/using-blooms-taxonomy/"&gt;Using Bloom’s Taxonomy to Write Effective Learning Outcomes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Bloom’s Taxonomy is a classification of the different objectives and skills that educators set for their students (learning outcomes).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="good-software-development-habits"&gt;&lt;a href="https://zarar.dev/good-software-development-habits/"&gt;Good software development habits&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This post is not advice, it's what's working for me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-understandretain-complex-concepts-10x-better"&gt;&lt;a href="https://learnhowtolearn.org/how-to-understand-and-retain-any-concept-10x-better/"&gt;How to understand/retain complex concepts 10x better&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The whole idea: compress the concept by repeatedly practicing explaining it until you understand it from first principles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="danielmiesslerfabric"&gt;&lt;a href="https://github.com/danielmiessler/fabric"&gt;danielmiessler/fabric&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;fabric is an open-source framework for augmenting humans using AI.
It provides a modular framework for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="deep-live-cam"&gt;&lt;a href="https://github.com/hacksider/Deep-Live-Cam"&gt;Deep-Live-Cam&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;real time face swap and one-click video deepfake with only a single image&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dataline"&gt;&lt;a href="https://dataline.app/"&gt;DataLine&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;DataLine is an AI-driven open source and privacy-first platform for data exploration.
Your data is accessed using your device and stored on your device.
No clouds, only sunshine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-get-samantha-from-her-or-tars-from-interstellar-on-your-iphoneandroid"&gt;&lt;a href="https://danielmiessler.com/p/get-samantha-tars-interstellar-iphoneandroid"&gt;How to Get Samantha from Her or TARS from Interstellar on Your iPhone/Android&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Change your AI from Siri to an interactive and realistic AI from Her or Interstellar that you can have long conversations with.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="macgpt"&gt;&lt;a href="https://www.macgpt.com/"&gt;MacGPT&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ChatGPT on your Mac and Menubar.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="macwhisper"&gt;&lt;a href="https://goodsnooze.gumroad.com/l/macwhisper"&gt;MacWhisper&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Quickly and easily transcribe audio files into text with OpenAI's state-of-the-art transcription technology Whisper.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="hacking-misconfigured-aws-s3-buckets-a-complete-guide"&gt;&lt;a href="https://blog.intigriti.com/hacking-tools/hacking-misconfigured-aws-s3-buckets-a-complete-guide"&gt;Hacking misconfigured AWS S3 buckets: A complete guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You've probably already come across an AWS S3 bucket, maybe even a misconfigured one too, and if you ignored them before, we hope this article shines some light on the most common security misconfigurations present in this storage bucket service.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="fake-recruiter-coding-tests-target-devs-with-malicious-python-packages"&gt;&lt;a href="https://www.reversinglabs.com/blog/fake-recruiter-coding-tests-target-devs-with-malicious-python-packages"&gt;Fake recruiter coding tests target devs with malicious Python packages&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;RL found the VMConnect campaign continuing with malicious actors posing as recruiters, using packages and the names of financial firms to lure developers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="why-i-still-use-python-virtual-environments-in-docker"&gt;&lt;a href="https://hynek.me/articles/docker-virtualenv/"&gt;Why I Still Use Python Virtual Environments in Docker&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As an overarching theme, my goal is not to mindlessly follow some ~best practices~ that add complexity for questionable payoffs because a big tech developer advocate said so at a conference.
But I spend a lot of time thinking about the secondary effects of what I do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="superfastpython-asyncio-gather-limit-concurrency"&gt;&lt;a href="https://superfastpython.com/asyncio-gather-limit-concurrency/"&gt;SuperFastPython!: Asyncio gather() Limit Concurrency&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We can limit concurrency when using asyncio.gather() via a semaphore.&lt;/p&gt;
&lt;p&gt;In this tutorial, you will discover how to limit concurrency with asyncio.gather().&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-build-a-perfect-docker-image-for-a-poetry-project"&gt;&lt;a href="https://codemageddon.me/post/poetry-docker/"&gt;How to Build a Perfect Docker Image for a Poetry Project&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article describes how to build a perfect Docker image for your Poetry-based project&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="docker-images-using-uvs-python"&gt;&lt;a href="https://mkennedy.codes/posts/python-docker-images-using-uv-s-new-python-features/"&gt;Docker images using uv's python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;uv has changed the landscape&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="this-post-is-part-of-create-a-one-product-shop-with-django-htmx-and-stripe-series"&gt;&lt;a href="https://blog.appsignal.com/2024/08/28/build-a-one-product-shop-with-the-python-django-framework-and-htmx.html"&gt;This post is part of Create A One-Product Shop With Django, Htmx, and Stripe Series&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the first of a two-part series using Django, htmx, and Stripe to create a one-product e-commerce website.
In this part, we'll start our Django project and integrate it with htmx.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-allauth-site-matching-query-does-not-exist"&gt;&lt;a href="https://learndjango.com/tutorials/django-allauth-site-matching-query-does-not-exist"&gt;Django-allauth: Site Matching Query Does Not Exist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The issue is that the &lt;a href="https://docs.allauth.org/en/latest/installation/quickstart.html"&gt;quickstart guide&lt;/a&gt; leaves ou pullt a critical piece of configuration: setting a &lt;code&gt;SITE_ID&lt;/code&gt; in the &lt;code&gt;settings.py file&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="custom-error-messages-on-model-deletion-in-the-django-admin"&gt;&lt;a href="https://startcodingnow.com/custom-django-admin-messages"&gt;Custom Error Messages on Model Deletion in the Django Admin&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I have been working on a project where we might want to delete models even just for testing purposes, but we don't want to accidentally delete models.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-hoist-repeated-decorator-definitions"&gt;&lt;a href="https://adamj.eu/tech/2024/09/08/django-repeated-decorators/"&gt;Django: hoist repeated decorator definitions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django provides us with a rich set of view decorators.
In this post, we’ll look at a technique for hoisting repeated use of these decorators to reduce repetition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="cbfa"&gt;&lt;a href="https://github.com/pomponchik/cbfa"&gt;cbfa&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Class-based views for the FastAPI&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="humanize"&gt;&lt;a href="https://github.com/python-humanize/humanize"&gt;humanize&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This modest package contains various common humanization utilities, like turning a number into a fuzzy human-readable duration ("3 minutes ago") or into a human-readable size or throughputs&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="radiacnanodjango"&gt;&lt;a href="https://github.com/radiac/nanodjango"&gt;radiac/nanodjango&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Full Django in a single file - views, models, API ,with async support. Automatically convert it to a full project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="pigsty"&gt;&lt;a href="https://github.com/Vonng/pigsty"&gt;pigsty&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Battery-Included, Local-First PostgreSQL Distribution as a Free &amp;amp; Better RDS Alternative!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;"PostgreSQL In Great STYle": Postgres, Infras, Graphics, Service, Toolbox, it's all Yours.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="c4-model"&gt;&lt;a href="https://c4model.com/"&gt;C4 model&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The C4 model for visualising software architecture&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="exiftool-github-action"&gt;&lt;a href="https://github.com/woss/exiftool-action"&gt;Exiftool Github action&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Action for Exiftool. Include it in the path without installing, run multiple versions&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="technical-guide-end-to-end-cicd-devops-with-jenkins-terraform-docker-kubernetes-sonarqube-argocd-aws-ec2-eks-and-github-actions-django-deployment"&gt;&lt;a href="https://medium.com/django-unleashed/technical-guide-end-to-end-ci-cd-devops-with-jenkins-docker-kubernetes-argocd-github-actions-fee466fe949e"&gt;Technical Guide: End-to-End CI/CD DevOps with Jenkins, Terraform, Docker, Kubernetes, SonarQube, ArgoCD, AWS EC2, EKS, and GitHub Actions (Django Deployment)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Building an end-to-end CI/CD pipeline for Django applications using Jenkins, Docker, Kubernetes, EKS, ArgoCD, GitHub Actions, AWS EC2, and Terraform can be quite a robust setup. In this article, we will guide you through setting up a comprehensive CI/CD pipeline using AWS EC2, AWS EKS, Jenkins, Github actions, Docker, trivy scan, SonarQube, ArgoCD, Kubernetes cluster of your choice, and terraform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="architecture-weekly-show-me-the-money-practically-navigating-the-cloud-costs-complexity"&gt;&lt;a href="https://www.architecture-weekly.com/p/show-me-the-money-practically-navigating?publication_id=579466&amp;amp;post_id=148674128&amp;amp;isFreemail=true&amp;amp;r=1rko2t&amp;amp;triedRedirect=true"&gt;Architecture Weekly: Show me the money! Practically navigating the Cloud Costs Complexity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Today, we’ll grab a calculator to discuss the costs of building an event store on S3.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="announcing-iam-group-authentication-in-cloud-sql"&gt;&lt;a href="https://cloud.google.com/blog/products/databases/announcing-iam-group-authentication-in-cloud-sql"&gt;Announcing IAM group authentication in Cloud SQL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;IAM group authentication extends existing IAM database authentication functionality by allowing database access to be managed at the group level instead of the individual user level.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="steveys-google-platforms-rant"&gt;&lt;a href="https://gist.github.com/chitchcock/1281611"&gt;Stevey's Google Platforms Rant&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Yegge wrote this in 2011 and posted it on Google+. He intended to make it visible internally to Google only, but accidentally made it public.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-are-the-main-cloud-design-patterns"&gt;&lt;a href="https://newsletter.techworld-with-milan.com/p/what-are-the-main-cloud-design-patterns"&gt;What are the main Cloud Design Patterns?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;and how they help fighting with fallacies of Distributed Computing&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="the-512kb-club"&gt;&lt;a href="https://512kb.club/"&gt;The 512KB Club&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The 512KB Club is a collection of performance-focused web pages from across the Internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="zasypiaj-z-poczuciem-ze-to-by-dobry-dzien-startujemy-productivity-by-heart"&gt;&lt;a href="https://www.youtube.com/watch?v=cKcGG3JakZQ"&gt;Zasypiaj z poczuciem, że to był dobry dzień. Startujemy Productivity by Heart! 💚&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Playback on other websites has been disabled by the video owner. &lt;a href="https://www.youtube.com/watch?v=cKcGG3JakZQ"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-negotiate-a-big-tech-offer-as-a-software-engineer-with-rahulpandeyrkp"&gt;&lt;a href="https://www.youtube.com/watch?v=cbngWLr7BC4"&gt;How to Negotiate a Big Tech Offer as a Software Engineer - with ‪@RahulPandeyrkp‬&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/cbngWLr7BC4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="fireship-tmux-in-100-seconds"&gt;&lt;a href="https://www.youtube.com/watch?v=vtB1J_zCv8I"&gt;Fireship: Tmux in 100 Seconds&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/vtB1J_zCv8I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="networkchuck-you-need-to-learn-tmux-right-now"&gt;&lt;a href="https://www.youtube.com/watch?v=nTqu6w2wc68"&gt;NetworkChuck: you need to learn tmux RIGHT NOW!!&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/nTqu6w2wc68" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="networkchuck-18-weird-and-wonderful-ways-i-use-docker"&gt;&lt;a href="https://www.youtube.com/watch?v=RUqGlWr5LBA"&gt;NetworkChuck: 18 Weird and Wonderful ways I use Docker&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/RUqGlWr5LBA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="networkchuck-youve-been-using-ai-wrong"&gt;&lt;a href="https://www.youtube.com/watch?v=UbDyjIIGaxQ"&gt;NetworkChuck:  You've been using AI Wrong &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/UbDyjIIGaxQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="djangocon-us-django-celery-a-love-story-of-async-proportions-hugo-bessa"&gt;&lt;a href="https://www.youtube.com/watch?v=2GhZWzeipWA"&gt;DjangoCon US: Django &amp;amp; Celery - A love story of async proportions - Hugo Bessa&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/2GhZWzeipWA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="unsupervised-learning-introducing-fabric-a-human-ai-augmentation-framework"&gt;&lt;a href="https://www.youtube.com/watch?v=wPEyyigh10g"&gt;Unsupervised Learning: Introducing Fabric — A Human AI Augmentation Framework&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wPEyyigh10g" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 30 Sep 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-09-30:/2024-september-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - August 2024</title><link>https://blog.tobked.dev/2024-august-links</link><description>&lt;h1 id="august-2024"&gt;August 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this august.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="hybrid-hacker-personal-finance-for-engineers"&gt;&lt;a href="https://hybridhacker.email/p/personal-finance-for-engineers"&gt;Hybrid Hacker: Personal Finance for Engineers 🏦&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A practical, no non-sense guide to handle your finances.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jordan-eldredge-the-bizarre-secrets-i-found-investigating-corrupt-winamp-skins"&gt;&lt;a href="https://jordaneldredge.com/notes/corrupted-skins/"&gt;Jordan Eldredge: The bizarre secrets I found investigating corrupt Winamp skins&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In January of 2021 I was exploring the corpus of Skins I collected for the &lt;a href="https://jordaneldredge.com/blog/winamp-skin-musuem/"&gt;Winamp Skin Museum&lt;/a&gt; and found some that seemed corrupted, so I decided to explore them. Winamp skins are actually just zip files with a different file extension, so I tried extracting their files to see what I could find.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jordan-eldredge-hal-fixing-a-light-bulb-what-software-development-always-feels-like-to-me"&gt;&lt;a href="https://jordaneldredge.com/notes/hal-fixing-a-light-bulb/"&gt;Jordan Eldredge: Hal fixing a light bulb (what software development always feels like to me)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every task ends up encountering at least one — if not many — annoying and unexpected tooling, configuration, infrastructure, etc. issue that has to be resolved before the actual task can be completed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-eulogy-for-dark-sky-a-data-visualization-masterpiece"&gt;&lt;a href="https://nightingaledvs.com/dark-sky-weather-data-viz/"&gt;A Eulogy for Dark Sky, a Data Visualization Masterpiece&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The design of Dark Sky was so wonderful that I could understand the shape of the weather at a glance, even from a zoomed out view of the app.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="80-of-developers-are-unhappy-the-problem-is-not-ai-nor-is-coding"&gt;&lt;a href="https://shiftmag.dev/unhappy-developers-stack-overflow-survey-3896/"&gt;80% of developers are unhappy. The problem is not AI, nor is coding&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;According to the new Stack Overflow survey showed that majority of developers hate their jobs. Anecdotally, both plumbers and farmers are happier than them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dan-luu-normalization-of-deviance"&gt;&lt;a href="https://danluu.com/wat/"&gt;Dan Luu: Normalization of deviance&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Have you ever mentioned something that seems totally normal to you only to be greeted by surprise?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jack-danger-managing-underperformers"&gt;&lt;a href="https://jackdanger.com/managing-underperformers/"&gt;Jack Danger: Managing Underperformers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Kind managers address underperformance early and accurately.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="top-10-sql-interview-questions"&gt;&lt;a href="https://meganlieu.substack.com/p/top-10-sql-interview-questions"&gt;Top 10 SQL interview questions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;And how I would answer them!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="taking-notes-on-a-new-codebase"&gt;&lt;a href="https://www.simplermachines.com/taking-notes-on-a-new-codebase/"&gt;Taking notes on a new codebase&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;let’s just get tactical write away, and talk about note-taking for dependency mapping.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-you-need-a-wtf-notebook"&gt;&lt;a href="https://www.simplermachines.com/why-you-need-a-wtf-notebook/"&gt;Why you need a "WTF Notebook"&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There's a very specific reputation I want to have on a team: "Nat helps me solve my problems. Nat get things I care about done."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="should-the-daily-stand-up-die"&gt;&lt;a href="https://leaddev.com/process/should-daily-stand-die"&gt;Should the daily stand-up die?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The daily stand-up was intended to quickly help developers remove any blockers to commitments before starting their working day.
But at many companies, stand-ups have devolved into tedious one-sided status reports.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="high-growth-engineer-the-3-big-mistakes-that-almost-cost-me-my-promotion-and-how-you-can-avoid-them"&gt;&lt;a href="https://read.highgrowthengineer.com/p/3-mistakes-almost-cost-me-my-promotion"&gt;High Growth Engineer: The 3 Big Mistakes That Almost Cost Me My Promotion (And How You Can Avoid Them)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Guest post by Steve Huynh, ex-Amazon Principal Engineer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="practices-of-reliable-software-design"&gt;&lt;a href="https://two-wrongs.com/practices-of-reliable-software-design"&gt;Practices of Reliable Software Design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are all eight practices I have adopted with experience that I had use for during the exercise of writing a fast, small, in-memory cache.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="panic-at-the-job-market"&gt;&lt;a href="https://matt.sh/panic-at-the-job-market"&gt;Panic! at the Job Market&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ready for another too-long article about personal failure while blaming the world for our faults?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="make-firefox-private-again-omowienie-strony"&gt;&lt;a href="https://www.ciemnastrona.com.pl/2024/08/27/make-firefox-private"&gt;Make Firefox Private Again – omówienie strony&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lis zwęszył reklamy, ale mam go na smyczy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="one-on-one-meeting-format-ideas"&gt;&lt;a href="https://marcgg.com/blog/2021/03/27/one-on-one-format/"&gt;One on One Meeting Format Ideas&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The way I see it, the main objective of a one on one meeting is to build a good work relationship with my direct reports.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="part-ii-derisking-12-common-workplace-scenarios"&gt;&lt;a href="https://newsletter.weskao.com/p/derisking-12-common-workplace-scenarios"&gt;Part II: Derisking 12 common workplace scenarios&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to identify and address risks in situations like: giving constructive feedback, sharing a controversial idea, doing cold outreach, and more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="getting-the-most-out-of-your-cv"&gt;&lt;a href="https://foxleytalent.com/blog/getting-the-most-out-of-your-cv/"&gt;Getting the Most Out of Your CV&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I want to start by saying this is my personal opinion of what a “good” CV looks like and based on my experience, working with developers, reviewing and sending out CV’s to clients as a recruiter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="modern-git-commands-and-features-you-should-be-using"&gt;&lt;a href="https://martinheinz.dev/blog/109"&gt;Modern Git Commands and Features You Should Be Using&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;All of us - software engineers - use git every day, however most people only ever touch the most basic of commands, such as &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;commit&lt;/code&gt;, &lt;code&gt;push&lt;/code&gt; or &lt;code&gt;pull&lt;/code&gt;, like it's still 2005.&lt;/p&gt;
&lt;p&gt;Git however, introduced many features since then, and using them can make your life so much easier, so let's explore some of the recently added, modern git commands, that you should know about.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-3-motivational-forces-of-developers"&gt;&lt;a href="https://www.bennorthrop.com/Essays/2013/developer-motivation.php"&gt;The 3 Motivational Forces of Developers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;After 15 years in industry, I've come to realize that the most defining quality of a developer is his source of motivation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="alex-sexton-the-productivity-cycle"&gt;&lt;a href="https://alexsexton.com/blog/2014/1/the-productivity-cycle"&gt;Alex Sexton: The Productivity Cycle&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I simply want my hard work to be spent most efficiently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-due-diligence-of-decision-making"&gt;&lt;a href="https://gettingthingsdone.com/2024/06/due-diligence-of-decision-making/"&gt;The Due Diligence of Decision-making&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s not always the actual work that is the hardest part of a job and success—it’s the decisions, compromises and choices that need to be made.
-- —Barbara Abrams Mintzer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-organize-personal-work"&gt;&lt;a href="https://hybridhacker.email/p/how-to-organize-personal-work"&gt;How to Organize Personal Work 🧺&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A small framework for knowledge work and personal productivity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="container-breakouts-escape-techniques-in-cloud-environments"&gt;&lt;a href="https://unit42.paloaltonetworks.com/container-escape-techniques/"&gt;Container Breakouts: Escape Techniques in Cloud Environments&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article reviews container escape techniques, assesses their possible impact and reveals how to detect these escapes from the perspective of endpoint detection and response (EDR).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="nerderati-tracing-the-evolution-of-a-python-function-with-git-log"&gt;&lt;a href="https://nerderati.com/tracing-the-evolution-of-a-python-function-with-git-log/"&gt;Nerderati: Tracing the evolution of a Python function with git log.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Next time you reach for git blame to figure out how some method has changed over time, try the very easy-to-remember and perfectly well named &lt;code&gt;git log -L :&amp;lt;funcname&amp;gt;:&amp;lt;path&amp;gt;&lt;/code&gt;!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="production-ready-docker-containers-with-uv"&gt;&lt;a href="https://hynek.me/articles/docker-uv/"&gt;Production-ready Docker Containers with uv&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m aware Astral []is working on implementing this feature](https://github.com/astral-sh/uv/issues/5229), so I fully expect this article to be outdated within days or weeks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="understanding-the-template-method-pattern-in-python"&gt;&lt;a href="https://startcodingnow.com/template-method-design-pattern"&gt;Understanding the Template Method Pattern in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is useful when you have a series of steps that need to be executed in a specific order, but the implementation of some steps may vary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="enhance-your-django-rest-api-with-google-cloud-logging"&gt;&lt;a href="https://medium.com/google-cloud/enhance-your-django-rest-api-with-google-cloud-logging-c7afcd9f263f"&gt;Enhance Your Django REST API with Google Cloud Logging&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial I will show you how to implement Google Cloud Logging to your Django APP, specifically for a DRF (Django Rest Framwork) project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-create-sub-commands-within-a-management-command"&gt;&lt;a href="https://adamj.eu/tech/2024/08/14/django-management-command-sub-commands/"&gt;Django: create sub-commands within a management command&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Using sub-commands could simplify some of Django’s built-in commands.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="pypika"&gt;&lt;a href="https://github.com/kayak/pypika"&gt;pypika&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PyPika is a python SQL query builder that exposes the full richness of the SQL language using a syntax that reflects the resulting query.
PyPika excels at all sorts of SQL queries but is especially useful for data analysis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="langchain"&gt;&lt;a href="https://github.com/langchain-ai/langchain"&gt;LangChain&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;LangChain is a framework for developing applications powered by large language models (LLMs).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="google-cloud-deleted-a-large-customers-infrastructure"&gt;&lt;a href="https://blocksandfiles.com/2024/05/14/google-cloud-unisuper/"&gt;Google Cloud deleted a large customer’s infrastructure&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An Australian superannuation fund manager, using Google Cloud for an Infrastructure-as-a-Service contract, found it had no disaster recovery (DR) recourse when the entire infrastructure subscription was deleted.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-api-revolutionizing-content-generation-with-direct-pdf-input"&gt;&lt;a href="https://medium.com/google-cloud/gemini-api-revolutionizing-content-generation-with-direct-pdf-input-105493780fa4"&gt;Gemini API: Revolutionizing Content Generation with Direct PDF Input&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Gemini API now enables direct PDF processing for content generation, eliminating image conversion and reducing costs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="package-and-deploy-your-machine-learning-models-to-google-cloud-with-cog"&gt;&lt;a href="https://medium.com/google-cloud/package-and-deploy-your-machine-learning-models-to-google-cloud-with-cog-ac6e20a19ac1"&gt;Package and deploy your machine learning models to Google Cloud with Cog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/replicate/cog/tree/main"&gt;Cog&lt;/a&gt; is an open-source tool that lets you package machine learning models in a standard, production-ready container.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="automatically-deploy-generative-ai-go-web-applications-from-version-control-to-cloud-run"&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/deploy-from-github/gen-ai-go?hl=en#0"&gt;Automatically Deploy Generative AI Go Web Applications from Version Control to Cloud Run&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this lab, you write a web application and configure Cloud Run to automatically deploy your application when a change is made to the source code of your application. Then you modify your application and deploy it again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="processing-arriving-gcs-files-with-pubsub-triggers"&gt;&lt;a href="https://medium.com/google-cloud/processing-arriving-gcs-files-with-pubsub-triggers-5fd61325c122"&gt;Processing arriving GCS files with PubSub triggers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The article describes experiments in processing Google Cloud Storage (GCS) files through BEAM where the content is to be inserted into BigQuery.
We are specifically examining the usage of Cloud Storage event triggers through PubSub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-prompt-gemini-asynchronously-using-python-on-google-cloud"&gt;&lt;a href="https://medium.com/google-cloud/how-to-prompt-gemini-asynchronously-using-python-on-google-cloud-986ca45d9f1b"&gt;How to prompt Gemini asynchronously using Python on Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It would be much more efficient if you could send all questions at once, and then wait for all the answers to come back.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="deploying-dbt-projects-at-scale-on-google-cloud"&gt;&lt;a href="https://towardsdatascience.com/dbt-deployment-gcp-a350074e3377"&gt;Deploying dbt Projects at Scale on Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Containerising and running dbt projects with Artifact Registry, Cloud Composer, GitHub Actions and dbt-airflow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="firefly-zero"&gt;&lt;a href="https://github.com/firefly-zero"&gt;Firefly Zero&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A modern handheld game console with effortless multiplayer. It's fun to play, alone or with friends, and easy to program.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="youtube-channel-that-devops-guy"&gt;&lt;a href="https://www.youtube.com/@MarcelDempers/"&gt;YouTube Channel: That DevOps Guy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Marcel Dempers: Professional Software Engineer | Container Guru | Azure Expert | All-things Kubernetes | #.NET #Go #Node Developer | DevOps Engineer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="maciej-markiewicz-software-security-i-efekt-motyla-omh-2023"&gt;&lt;a href="https://www.youtube.com/watch?v=0Rc1-Qem5HM"&gt;Maciej Markiewicz: Software, Security i Efekt motyla | OMH 2023&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0Rc1-Qem5HM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="unknown-debugowanie-kontenerow-w-10-minut-dockerpodman"&gt;&lt;a href="https://www.youtube.com/watch?v=vjItpXfzSQA"&gt;unknown: Debugowanie kontenerów w 10 minut - Docker/Podman&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/vjItpXfzSQA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="paolo-melchiorre-semantic-search-with-django-postgresql-pgvector-posette-2024"&gt;&lt;a href="https://www.youtube.com/watch?v=4hl8LpDKRMw"&gt;Paolo Melchiorre: Semantic search with Django, PostgreSQL, &amp;amp; pgvector | POSETTE 2024 &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/4hl8LpDKRMw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="boiling-frogs-2018-krzysztof-kedzierski-dug-techniczny-narzedzie-profesjonalisty"&gt;&lt;a href="https://www.youtube.com/watch?v=PxcQlSUIpjQ"&gt;Boiling Frogs 2018 - Krzysztof Kędzierski - Dług techniczny – narzędzie profesjonalisty&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/PxcQlSUIpjQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 31 Aug 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-08-31:/2024-august-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - July 2024</title><link>https://blog.tobked.dev/2024-july-links</link><description>&lt;h1 id="july-2024"&gt;July 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="common-design-patterns-at-stripe"&gt;&lt;a href="https://dev.to/stripe/common-design-patterns-at-stripe-1hb4"&gt;Common design patterns at Stripe&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... here some design patterns that I believe are generic enough to be useful for just about anyone in the API design process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="system-design-interview-design-whatsapp"&gt;&lt;a href="https://levelup.gitconnected.com/system-design-interview-design-whatsapp-779fa385ef08"&gt;System Design Interview: Design WhatsApp&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we’ll take a high-level overview of the system’s architecture, and then you could explore specific areas in more depth if needed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-bunch-of-programming-advice-id-give-to-myself-15-years-ago"&gt;&lt;a href="https://mbuffett.com/posts/programming-advice-younger-self/"&gt;A Bunch of Programming Advice I’d Give To Myself 15 Years Ago&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I finally have the feeling that I’m a decent programmer, so I thought it would be fun to write some advice with the idea of “what would have gotten me to this point faster?” I’m not claiming this is great advice for everyone, just that it would have been good advice for me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="docker-postgres-autoupgrades"&gt;&lt;a href="https://micro.webology.dev/2024/06/29/docker-postgres-autoupgrades.html"&gt;🐘 Docker Postgres Autoupgrades&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;pgautoupgrade&lt;/code&gt; Docker image is designed to handle the upgrade process seamlessly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-just-recipe-to-backup-and-restore-a-postgres-database"&gt;&lt;a href="https://micro.webology.dev/2024/06/28/a-just-recipe.html"&gt;🐘 A Just recipe to backup and restore a Postgres database&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Shoutout to &lt;a href="https://social.joshthomas.dev/@josh"&gt;Josh Thomas&lt;/a&gt; for help on this recipe since we both iterated on this for several projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="creating-great-readme-files-for-your-python-projects"&gt;&lt;a href="https://realpython.com/readme-python-project/"&gt;Creating Great README Files for Your Python Projects&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This type of file is a short piece of documentation that typically provides an overview of a project, including instructions on installing, using, and contributing to the project. README files are especially handy for open-source Python projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="engineering-for-slow-internet"&gt;&lt;a href="https://brr.fyi/posts/engineering-for-slow-internet"&gt;Engineering for Slow Internet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to minimize user frustration in Antarctica.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-get-your-work-recognized-write-a-brag-document"&gt;&lt;a href="https://jvns.ca/blog/brag-documents/"&gt;Julia Evans: Get your work recognized: write a brag document&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s frustrating to have done something really important and later realize that you didn’t get rewarded for it just because the people making the decision didn’t understand or remember what you did.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="how-i-plan-my-week-as-a-senior-engineer-in-big-tech"&gt;&lt;a href="https://read.highgrowthengineer.com/p/how-i-plan-my-week-as-a-senior-engineer"&gt;How I plan my week as a Senior Engineer in Big Tech&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My exact process for achieving my goals and getting sh*t done.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="the-top-coding-assistant-platforms-of-july-2024"&gt;&lt;a href="https://medium.com/@justinmilner/the-top-coding-assistant-platforms-of-july-2024-a862e84c1b34"&gt;The Top Coding Assistant Platforms of July 2024&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Please enjoy this updated survey on the field of coding assistant platforms!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="hack-the-box"&gt;&lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;HTB is the leading Cybersecurity Performance Center for advanced frontline teams to aspiring security professionals &amp;amp; students.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="architecture-patterns-with-python-read-it-for-free-license-cc-by-nc-nd"&gt;&lt;a href="https://www.cosmicpython.com/book/preface.html"&gt;Architecture Patterns with Python - read it for free  (license: CC-By-NC-ND)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With this hands-on guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity—and get the most value out of their test suites.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-test-for-pending-migrations"&gt;&lt;a href="https://adamj.eu/tech/2024/06/23/django-test-pending-migrations/"&gt;Django: Test for pending migrations&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When iterating on code, it’s easy to make a model change and forget to update the migrations accordingly.
If you don’t have any protection, you might even deploy code that crashes due to out-of-date migrations!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="google-cloud-developer-cheat-sheet"&gt;&lt;a href="https://googlecloudcheatsheet.withgoogle.com/"&gt;Google Cloud Developer cheat sheet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every product in the Google Cloud family described in 4 or less words&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gke-under-the-hood-whats-new-with-cluster-autoscaler"&gt;&lt;a href="https://cloud.google.com/blog/products/containers-kubernetes/whats-new-with-gke-cluster-autoscaler"&gt;GKE under the hood: What’s new with Cluster Autoscaler&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Today, we're shining a spotlight on some of these "invisible" GKE advancements, particularly in the realm of infrastructure autoscaling.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="migrate-from-aws-to-google-cloud-migrate-from-amazon-rds-for-sql-server-to-cloud-sql-for-sql-server"&gt;&lt;a href="https://cloud.google.com/architecture/migrate-aws-rds-to-cloudsql-for-sqlserver"&gt;Migrate from AWS to Google Cloud: Migrate from Amazon RDS for SQL Server to Cloud SQL for SQL Server&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This document is intended for cloud and database administrators who want to plan, implement, and validate a database migration project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="did-google-just-kill-streamlit"&gt;&lt;a href="https://medium.com/google-cloud/did-google-just-kill-streamlit-76f719d9e275"&gt;Did Google Just Kill Streamlit?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Checking out Google’s Mesop Framework to see if it’s better than Streamlit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-bytes-390-coding-in-a-castle"&gt;&lt;a href="https://www.youtube.com/watch?v=Xi9FM1pZQZ0"&gt;Python Bytes 390: Coding in a Castle&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Xi9FM1pZQZ0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 31 Jul 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-07-31:/2024-july-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - June 2024</title><link>https://blog.tobked.dev/2024-june-links</link><description>&lt;h1 id="june-2024"&gt;June 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I tackled the &lt;a href="https://www.cloudskillsboost.google/paths/118"&gt;Introduction to Generative AI Learning Path on Google Cloud Skills Boost&lt;/a&gt;
This path provided a good foundation for understanding generative AI concepts, ranging from the core workings of large language models to the crucial principles of responsible AI development.&lt;/p&gt;
&lt;p&gt;The hands-on labs were particularly insightful, showcasing how to leverage the power of Google services to put theory into practice.
You can see my progress on my Cloud Skills Boost profile &lt;a href="https://www.cloudskillsboost.google/public_profiles/102aba17-a972-4e32-865b-0e3626420e5a/badges/9465084"&gt;Cloud Skills Boost profile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also published a short blog post about git: &lt;a href="https://blog.tobked.dev/declutter-git-status"&gt;git: when ignorance is a bliss&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="three-laws-of-software-complexity-or-why-software-engineers-are-always-grumpy"&gt;&lt;a href="https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html"&gt;Three Laws of Software Complexity (or: why software engineers are always grumpy)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I posit that most software engineers (particularly those working on infrastructural systems) are destined to wallow in unnecessary complexity due to three fundamental laws.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="essays-on-programming-i-think-about-a-lot"&gt;&lt;a href="https://www.benkuhn.net/progessays/"&gt;Essays on programming I think about a lot&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every so often I read an essay that I end up thinking about, and citing in conversation, over and over again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-we-talk-about-when-we-talk-about-system-design"&gt;&lt;a href="https://maheshba.bitbucket.io/blog/2023/07/12/Design.html"&gt;What we talk about when we talk about System Design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This post is a dump of some rules to follow in this particular design process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-asked-100-devs-they-arent-shipping-faster-heres-what-i-learned"&gt;&lt;a href="https://www.greptile.com/blog/100-devs"&gt;I asked 100 devs they aren't shipping faster. Here's what I learned.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The answers were diverse but I have done my best to broadly divide them into categories and subcategories.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-facebook-doesnt-use-git"&gt;&lt;a href="https://graphite.dev/blog/why-facebook-doesnt-use-git"&gt;Why Facebook doesn’t use Git&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The ten-year-old write-up, along with some later YouTube tech talks, gave me a starting answer: “because performance.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="nasas-voyager-1-resumes-sending-engineering-updates-to-earth"&gt;&lt;a href="https://blogs.nasa.gov/voyager/2024/04/22/nasas-voyager-1-resumes-sending-engineering-updates-to-earth/"&gt;NASA’s Voyager 1 Resumes Sending Engineering Updates to Earth&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The team discovered that a single chip responsible for storing a portion of the FDS memory — including some of the FDS computer’s software code — isn’t working.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="become-a-great-engineering-leader-in-12-months"&gt;&lt;a href="https://hybridhacker.email/p/how-to-become-a-great-engineering-leader"&gt;Become a Great Engineering Leader in 12 Months&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;150+ Learning Sources Organized in a 12 Months Path to Become a Great Engineering Leader&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="this-guy-makes-3m-per-year-with-0-employees"&gt;&lt;a href="https://medium.com/@uzmanali/this-guy-makes-3m-per-year-with-0-employees-f3c9b125a9b0"&gt;This Guy Makes $3M+ per Year With 0 Employees&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Peter Levels, one of the most stunning Indie Hacker ever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="how-to-build-anything-extremely-quickly"&gt;&lt;a href="https://learnhowtolearn.org/how-to-build-extremely-quickly/"&gt;How to Build Anything Extremely Quickly&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Do “outline speedrunning”: Recursively outline an MVP, speedrun filling it in, and only then go back and perfect.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="managing-my-motivation-as-a-solo-dev"&gt;&lt;a href="https://mbuffett.com/posts/maintaining-motivation/"&gt;Managing My Motivation, as a Solo Dev&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the biggest sticking points of being a solo dev is maintaining motivation.
I’ve been keeping a journal entry about how to hack my motivation, what works and what doesn’t.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="inbox-ten"&gt;&lt;a href="https://boz.com/articles/inbox-ten"&gt;Inbox ten&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How do you stay informed and advance your own work while also keeping others informed so they can do the same?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-do-you-program-for-8h-in-a-row"&gt;&lt;a href="https://www.bitecode.dev/p/how-do-you-program-for-8h-in-a-row"&gt;How do you program for 8h in a row?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;That's the neat thing, you don't&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="i-will-fucking-piledrive-you-if-you-mention-ai-again"&gt;&lt;a href="https://ludic.mataroa.blog/blog/i-will-fucking-piledrive-you-if-you-mention-ai-again/"&gt;I Will Fucking Piledrive You If You Mention AI Again&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So it is with great regret that I announce that the next person to talk about rolling out AI is going to receive a complimentary chiropractic adjustment in the style of Dr. Bourne, i.e, I am going to fucking break your neck. I am truly, deeply, sorry.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="googlecloudplatformgenerative-ai"&gt;&lt;a href="https://github.com/GoogleCloudPlatform/generative-ai"&gt;GoogleCloudPlatform/generative-ai&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sample code and notebooks for Generative AI on Google Cloud, with Gemini on Vertex AI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gemini-for-google-workspace-prompt-guide"&gt;&lt;a href="https://inthecloud.withgoogle.com/gemini-for-google-workspace-prompt-guide/dl-cd.html"&gt;Gemini for Google Workspace Prompt Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Download our quick-start handbook and learn about writing effective prompts to supercharge your productivity using Gemini for Workspace.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="osint-pozyskiwanie-informacji-z-wykorzystaniem-map"&gt;&lt;a href="https://devszczepaniak.pl/osint-pozyskiwanie-informacji-z-wykorzystaniem-map/"&gt;OSINT – pozyskiwanie informacji z wykorzystaniem map&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Artykuł ten nie porusza stricte tematów programistycznych, którym dedykowany jest ten blog.
Jednak OSINT nierozerwalnie wiąże się z branżą security stanowiącą istotną część świata IT.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="pythons-many-command-line-utilities"&gt;&lt;a href="https://www.pythonmorsels.com/cli-tools/"&gt;Python's many command-line utilities&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Did you know that some Python modules can double-up as handy command-line tools?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-big-o-the-time-complexities-of-different-data-structures-in-python"&gt;&lt;a href="https://www.pythonmorsels.com/time-complexities/"&gt;Python Big O: the time complexities of different data structures in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article is primarily meant to act as a Python time complexity cheat sheet for those who already understand what time complexity is and how the time complexity of an operation might affect your code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ten-python-datetime-pitfalls-and-what-libraries-are-not-doing-about-it"&gt;&lt;a href="https://dev.arie.bovenberg.net/blog/python-datetime-pitfalls/"&gt;Ten Python datetime pitfalls, and what libraries are (not) doing about it&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s no secret that the Python datetime library has its quirks. Not only are there probably more than you think; third-party libraries don’t address most of them!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="building-a-bluesky-italian-art-bot"&gt;&lt;a href="https://www.nicologiso.com/tech/italian-art-bot-bluesky/"&gt;Building a Bluesky Italian Art Bot&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So now the goal was clear: building a Python bot of Italian art publishing 3 images per day on Bluesky.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="7-simple-examples-using-django-generatedfield"&gt;&lt;a href="https://www.photondesigner.com/articles/generated-field-examples"&gt;7 simple examples using Django GeneratedField ⚡️&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A feature added in Django 5.0 is GeneratedField, which allows us to auto-calculate database fields.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-service-layers-beyond-fat-models-vs-enterprise-patterns"&gt;&lt;a href="https://simoncrowe.hashnode.dev/django-service-layers-beyond-fat-models-vs-enterprise-patterns"&gt;Django Service Layers: Beyond Fat Models vs. Enterprise Patterns&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What I'm arguing in this post is that while full-blown enterprise architecture patterns don't work well with Django, larger applications can still benefit from a service layer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="weasyprint"&gt;&lt;a href="https://github.com/Kozea/WeasyPrint"&gt;WeasyPrint&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Awesome Document Factory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="django-htmx"&gt;&lt;a href="https://github.com/adamchainz/django-htmx"&gt;django-htmx&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Extensions for using Django with htmx.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="glow"&gt;&lt;a href="https://github.com/charmbracelet/glow"&gt;glow&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="harlequin"&gt;&lt;a href="https://github.com/tconbeer/harlequin"&gt;harlequin&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The SQL IDE for Your Terminal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="how-an-empty-s3-bucket-can-make-your-aws-bill-explode"&gt;&lt;a href="https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1"&gt;How an empty S3 bucket can make your AWS bill explode&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Yes, S3 charges for unauthorized requests (4xx) as well[1]. That’s expected behavior.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="complete-guide-on-google-cloud-gcp-landing-zone-architecture"&gt;&lt;a href="https://mycloudwiki.com/cloud-landing-zone/google-cloud/complete-guide-on-gcp-landing-zones/"&gt;Complete guide on Google Cloud (GCP) Landing zone architecture&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how a Landing Zone simplifies governance, enhances security, and optimizes your Google cloud environment for efficiency and future growth.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloud-engineer-gets-2-years-for-wiping-ex-employers-code-repos"&gt;&lt;a href="https://www.bleepingcomputer.com/news/security/cloud-engineer-gets-2-years-for-wiping-ex-employers-code-repos/"&gt;Cloud engineer gets 2 years for wiping ex-employer’s code repos&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A cloud engineer, was sentenced to two years in prison and a restitution of $529,000 for wiping the code repositories of his former employer in retaliation for being fired by the company.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="optimize-your-athletic-performance-with-gemini-and-vertex-ai"&gt;&lt;a href="https://medium.com/google-cloud/optimize-your-athletic-performance-with-gemini-and-vertex-ai-eae42d014659"&gt;Optimize Your Athletic Performance with Gemini and Vertex AI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One challenge in improving is that some aspects of our performance are hard to measure, and getting access to high quality data and personalized coaching can be difficult — we’re not all on track to be professional athletes, after all.
But what if we can get some of that insightful data and analysis with the help of AI?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="python-bytes-386"&gt;&lt;a href="https://www.youtube.com/watch?v=BybkexjbTMY"&gt;Python Bytes 386&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/BybkexjbTMY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="jarek-potiuk-new-workflow-orchestrator-in-town-apache-airflow-2x"&gt;&lt;a href="https://www.youtube.com/watch?v=jXmRrChXUrI"&gt;Jarek Potiuk – &lt;code&gt;New&lt;/code&gt; Workflow Orchestrator in town: "Apache Airflow 2.x"&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/jXmRrChXUrI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 30 Jun 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-06-30:/2024-june-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>git: when ignorance is a bliss</title><link>https://blog.tobked.dev/declutter-git-status</link><description>&lt;h2 id="focus-on-what-matters-decluterring-git-status"&gt;Focus on what matters: decluterring &lt;code&gt;git status&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The saying "ignorance is bliss" might hold some truth in everyday life, but in the world of &lt;strong&gt;git&lt;/strong&gt; version control, a cluttered terminal output can be a major headache.
A tidy &lt;code&gt;git status&lt;/code&gt; command output is heplful for smooth and efficient development.&lt;/p&gt;
&lt;p&gt;This post explores some helpful commands that will empower you to manage untracked files and selectively track changes within your &lt;code&gt;git&lt;/code&gt; repositories.&lt;/p&gt;
&lt;h2 id="focusing-on-tracked-files"&gt;Focusing on tracked files&lt;/h2&gt;
&lt;p&gt;By default, the &lt;code&gt;git status&lt;/code&gt; command displays both tracked files (those already added to the Git index) and untracked files (those not yet added).
However, there might be times when you only care about changes to existing tracked files.
For instance, I've encountered projects where the list of untracked files can take up the entire terminal screen!
In such situations, where you primarily focus on existing files and desire a clutter-free overview, the following commands come in handy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;--untracked-files&lt;span class="o"&gt;=&lt;/span&gt;no
git&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;-uno
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;These commands display the status of your tracked files but conveniently hide untracked files from the output.&lt;/p&gt;
&lt;p&gt;If you frequently prefer a clean &lt;code&gt;git status&lt;/code&gt; output, you can configure &lt;strong&gt;git&lt;/strong&gt; to hide untracked files by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git config --global status.showUntrackedFiles no&lt;/code&gt;: this sets the preference &lt;strong&gt;globally&lt;/strong&gt; for all your &lt;strong&gt;git&lt;/strong&gt; repositories.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git config --local status.showUntrackedFiles no&lt;/code&gt;: this sets the preference for the current repository only, allowing for project-specific configurations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="marking-files-for-skipping-changes"&gt;Marking files for skipping changes&lt;/h2&gt;
&lt;p&gt;There might be times when you have files in your working directory that you don't want &lt;strong&gt;git&lt;/strong&gt; to track for changes. This command helps with that:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This command instructs &lt;strong&gt;git&lt;/strong&gt; to assume that the specified files (e.g., &lt;code&gt;docker-compose.yml&lt;/code&gt;, &lt;code&gt;Dockerfile&lt;/code&gt;) are unchanged, even if their content is modified.
This can be useful for configuration files that might be adjusted only for your local environment or files managed by external tools.&lt;/p&gt;
&lt;p&gt;Knowing which files are marked as assumed-unchanged can be helpful. Use this command to list them:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git ls-files -v&lt;/code&gt;: This command lists all files managed by &lt;strong&gt;git&lt;/strong&gt;, including their status codes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep '^h'&lt;/code&gt;: This filters the output to show only lines starting with the letter &lt;code&gt;h&lt;/code&gt;, which indicates assumed-unchanged files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you decide to track changes in a previously assumed-unchanged file, you can reverse the effect using:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To efficiently remove all files from &lt;code&gt;assume-unchanged&lt;/code&gt; status, you can combine these commands into a single pipeline:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;xargs&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged
&lt;span class="c1"&gt;# or if you don&amp;#39;t like xargs&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;{ORS=&amp;quot; &amp;quot;} {print $2}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Commands list:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# add&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;docker-compose.yml&lt;span class="w"&gt; &lt;/span&gt;Dockerfile

&lt;span class="c1"&gt;# list&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;

&lt;span class="c1"&gt;# remove&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;docker-compose.yml&lt;span class="w"&gt; &lt;/span&gt;Dockerfile

&lt;span class="c1"&gt;# bulk remove&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;xargs&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged
&lt;span class="c1"&gt;# or&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;update-index&lt;span class="w"&gt; &lt;/span&gt;--no-assume-unchanged&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;ls-files&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;^h&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;{ORS=&amp;quot; &amp;quot;} {print $2}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;By mastering these commands, you can effectively hide clutter in your &lt;strong&gt;git&lt;/strong&gt; status output and selectively exclude specific files from version control.
This keeps your &lt;code&gt;git status&lt;/code&gt; focused on the changes that truly matter, promoting a clean and efficient workflow.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 04 Jun 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-06-04:/declutter-git-status</guid><category>programming</category><category>git</category><category>programming</category></item><item><title>Month summary - May 2024</title><link>https://blog.tobked.dev/2024-may-links</link><description>&lt;h1 id="may-2024"&gt;May 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I finished the &lt;a href="https://www.udemy.com/course/15-days-of-sql"&gt;15 Days of SQL: The Complete SQL Masterclass 2024&lt;/a&gt; course on Udemy 🎉.
It provided a comprehensive introduction to SQL concepts and practices.
The course helped me solidify my foundational knowledge and equip me with additional tools for effective database interaction.&lt;/p&gt;
&lt;p&gt;&lt;img alt="15 day sql course" src="https://blog.tobked.dev/images/posts/2024/2024_05_sql.jpg"&gt;&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="the-20-essential-principles-of-software-development-lod-soc-solid-and-beyond"&gt;&lt;a href="https://levelup.gitconnected.com/the-20-essential-principles-of-software-development-lod-soc-solid-and-beyond-7a39a98b685d"&gt;The 20 Essential Principles of Software Development: LoD, SoC, SOLID, and Beyond.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I am sure that before reading this article you have already used some of the principles discussed unconsciously.
Now you have a name for them and it makes it easier to communicate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="when-do-we-stop-finding-new-music-a-statistical-analysis"&gt;&lt;a href="https://www.statsignificant.com/p/when-do-we-stop-finding-new-music"&gt;When Do We Stop Finding New Music? A Statistical Analysis &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When does our taste in music stagnate?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="4-software-design-principles-i-learned-the-hard-way"&gt;&lt;a href="https://read.engineerscodex.com/p/4-software-design-principles-i-learned"&gt;4 Software Design Principles I Learned the Hard Way&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If there’s two sources of truth, one is probably wrong. And yes, please repeat yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="effective-engineer-notes"&gt;&lt;a href="https://gist.github.com/rondy/af1dee1d28c02e9a225ae55da2674a6f"&gt;Effective Engineer - Notes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;FWIW: I (@rondy) am not the creator of the content shared here, which is an excerpt from Edmond Lau's book.
I simply copied and pasted it from another location and saved it as a personal note, before it gained popularity on news.ycombinator.com.
Unfortunately, I cannot recall the exact origin of the original source, nor was I able to find the author's name, so I am can't provide the appropriate credits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-man-who-killed-google-search"&gt;&lt;a href="https://www.wheresyoured.at/the-men-who-killed-google/"&gt;The Man Who Killed Google Search&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the story of how Google Search died, and the people responsible for killing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="my-25-year-engineering-career-retrospective"&gt;&lt;a href="https://hybridhacker.email/p/my-25-year-engineering-career-retrospective"&gt;My 25-Year Engineering Career Retrospective&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A few days ago, as often happens, I found myself lying awake in bed at 4 AM, and I started reflecting on my career and what I might have done differently if I could go back 25 years to when I was 18.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="database-fundamentals"&gt;&lt;a href="https://tontinton.com/posts/database-fundementals/"&gt;Database Fundamentals.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;About a year ago, I tried thinking which database I should choose for my next project, and came to the realization that I don't really know the differences of databases enough.
I went to different database websites and saw mostly marketing and words I don't understand.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="load-balancers-decoded-a-technical-exploration-of-scalability-and-performance"&gt;&lt;a href="https://levelup.gitconnected.com/load-balancers-decoded-scalability-and-performance-6fa4eb164c9a"&gt;Load Balancers Decoded: A Technical Exploration of Scalability and Performance&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we will explore the world of load balancing and various load balancing algorithms along with their use cases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="microservices-design-principles-you-really-need-to-learn"&gt;&lt;a href="https://programmingpulse.vercel.app/blog/microservices-design-principles-you-really-need-to-learn"&gt;Microservices Design Principles You Really Need To Learn&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Welcome to the world of microservices! If you're a programmer, developer, or software engineer looking to navigate the intricate landscape of modern software architecture, you've come to the right place.
In this comprehensive guide, we'll delve into the fundamental principles of microservices design, equipping you with the knowledge and insights needed to architect robust, scalable, and resilient systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-we-learned-after-running-airflow-on-kubernetes-for-2-years"&gt;&lt;a href="https://medium.com/apache-airflow/what-we-learned-after-running-airflow-on-kubernetes-for-2-years-0537b157acfd"&gt;What we learned after running Airflow on Kubernetes for 2 years&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Apache Airflow is one of the most important components in our Data Platform, used by different teams inside the business.
It powers all of our data transformations, fraud detection mechanisms, data science initiatives, and many housekeeping and internal tasks we run at Teya.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-stopped-worrying-and-loved-makefiles"&gt;&lt;a href="https://gagor.pro/2024/02/how-i-stopped-worrying-and-loved-makefiles/"&gt;How I stopped worrying and loved Makefiles&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There are many creative ways to use Makefiles to automate and simplify daily tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="swe-laws-of-power"&gt;&lt;a href="https://www.16elt.com/2024/05/11/swe-laws-of-power/"&gt;SWE laws of power&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s not always about how good you are with code; sometimes, it’s about playing the game smartly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="10-lessons-from-12-years-at-google"&gt;&lt;a href="https://addyo.substack.com/p/10-lessons-from-12-years-at-google"&gt;10 lessons from 12 years at Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lessons I learned along the way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="retries"&gt;&lt;a href="https://encore.dev/blog/retries"&gt;Retries&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An interactive study of common retry methods.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="10-things-software-developers-should-learn-about-learning"&gt;&lt;a href="https://cacm.acm.org/research/10-things-software-developers-should-learn-about-learning/"&gt;10 Things Software Developers Should Learn about Learning&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Understanding how human memory and learning works, the differences between beginners and experts, and practical steps developers can take to improve their learning, training, and recruitment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="flow-state-why-fragmented-thinking-is-worse-than-any-interruption"&gt;&lt;a href="https://blog.stackblitz.com/posts/flow-state/"&gt;Flow state: Why fragmented thinking is worse than any interruption&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Almost everyone, as it turns out, is wrong about flow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="fake-job-interviews-target-developers-with-new-python-backdoor"&gt;&lt;a href="https://www.bleepingcomputer.com/news/security/fake-job-interviews-target-developers-with-new-python-backdoor/"&gt;Fake job interviews target developers with new Python backdoor&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A new campaign tracked as “Dev Popper” is targeting software developers with fake job interviews in an attempt to trick them into installing a Python remote access trojan (RAT).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="macieyngsnippets"&gt;&lt;a href="https://github.com/macieyng/snippets"&gt;macieyng/snippets&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/macieyng"&gt;Maciej Nachtygal&lt;/a&gt; snippets&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="clean-code-in-python"&gt;&lt;a href="https://testdriven.io/blog/clean-code-python/"&gt;Clean Code in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we'll talk about clean code -- its benefits, different code standards and principles, and general guidelines on how to write clean code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="write-unit-tests-for-your-python-code-with-chatgpt"&gt;&lt;a href="https://realpython.com/chatgpt-unit-tests-python/"&gt;Write Unit Tests for Your Python Code With ChatGPT&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In Python, you can use multiple different tools for writing tests.
The most commonly used tools include doctest, unittest, and pytest.
ChatGPT can be of great help in writing tests with any of these tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-use-type-hints-for-multiple-return-types-in-python"&gt;&lt;a href="https://realpython.com/python-type-hints-multiple-types/"&gt;How to Use Type Hints for Multiple Return Types in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As you write code for applications that require greater flexibility, you may need to specify multiple return types to make your code more robust and adaptable to different situations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="solid-principles-improve-object-oriented-design-in-python"&gt;&lt;a href="https://realpython.com/solid-principles-python/"&gt;SOLID Principles: Improve Object-Oriented Design in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re stuck while designing your Python classes, then the SOLID principles can help you out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="legally-free-python-books-list"&gt;&lt;a href="https://www.pythonkitchen.com/legally-free-python-books-list/"&gt;Legally Free Python Books List&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here is my personal list of legally free Python books.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bulldoggy-the-reminders-app"&gt;&lt;a href="https://github.com/AutomationPanda/bulldoggy-reminders-app"&gt;Bulldoggy: The Reminders App&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Bulldoggy is a small demo web app for tracking reminders.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="best-python-chart-examples"&gt;&lt;a href="https://python-graph-gallery.com/best-python-chart-examples/"&gt;Best Python Chart Examples&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every chart here represents the pinnacle of craftsmanship, exhibiting the depths to which matplotlib can be customized.
These are not just graphs; they are polished masterpieces, ready for publication.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="reflex"&gt;&lt;a href="https://github.com/reflex-dev/reflex"&gt;reflex&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Reflex is a library to build full-stack web apps in pure Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pyinfra"&gt;&lt;a href="https://github.com/pyinfra-dev/pyinfra"&gt;pyinfra&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;pyinfra turns Python code into shell commands and runs them on your servers.
Execute ad-hoc commands and write declarative operations.
Target SSH servers, local machine and Docker containers.
Fast and scales from one server to thousands.
Think &lt;code&gt;ansible&lt;/code&gt; but Python instead of YAML, and a lot faster.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="learn-vim-the-smart-way"&gt;&lt;a href="https://github.com/iggredible/Learn-Vim"&gt;Learn Vim (the Smart Way)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for 📖&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="kubecolor"&gt;&lt;a href="https://github.com/kubecolor/kubecolor"&gt;kubecolor&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Colorize your kubectl output&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="logdy"&gt;&lt;a href="https://github.com/logdyhq/logdy-core"&gt;logdy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Web based real-time log viewer. Stream ANY content to a web UI with autogenerated filters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="huey"&gt;&lt;a href="https://github.com/coleifer/huey"&gt;huey&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;a little task queue for python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="landing-zone-design-in-google-cloud-hands-on-demo-with-terraform"&gt;&lt;a href="https://medium.com/google-cloud/hands-on-gcp-landing-zone-with-terraform-code-44393a776139"&gt;Landing zone design in Google Cloud: Hands-on Demo with Terraform&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this hands-on demo, we have walked through the process of creating a GCP Landing Zone using Terraform code.
We have shown how to create a Folder, Projects and Networks, and create the following resources&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="book-ben-collier-tor-from-the-dark-web-to-the-future-of-privacy"&gt;&lt;a href="https://direct.mit.edu/books/oa-monograph/5761/TorFrom-the-Dark-Web-to-the-Future-of-Privacy"&gt;Book: Ben Collier - Tor: From the Dark Web to the Future of Privacy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A biography of Tor—a cultural and technological history of power, privacy, and global politics at the internet's core.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pass-the-github-actions-certification-exam"&gt;&lt;a href="https://www.freecodecamp.org/news/pass-the-github-actions-certification-exam/"&gt;Pass the GitHub Actions Certification Exam&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This course is ideal for developers, DevOps professionals, and anyone interested in automating software workflows using GitHub’s powerful CI/CD platform, GitHub Actions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="simple-truths-clear-gentle-guidance-on-the-big-issues-in-life"&gt;&lt;a href="https://fs.blog/highlights-simple-truths/"&gt;Simple Truths: Clear &amp;amp; Gentle Guidance on the Big Issues in Life&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Kindle Highlights from &lt;a href="https://www.goodreads.com/book/show/120550.Simple_Truths_"&gt;Kent Nerburn’s Simple Truths: Clear &amp;amp; Gentle Guidance on the Big Issues in Life&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="hussein-nasser-they-made-kafka-80-faster-by-switching-file-systems"&gt;&lt;a href="https://www.youtube.com/watch?v=QAq3HRMmdbo"&gt;Hussein Nasser -  They made Kafka 80% faster by switching file systems &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/QAq3HRMmdbo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="a-practical-guide-to-using-opentelemetry-in-python-by-tom-eastman"&gt;&lt;a href="https://www.youtube.com/watch?v=R8BYnL-Yp1w"&gt; A practical guide to using OpenTelemetry in Python by Tom Eastman.&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/R8BYnL-Yp1w" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="google-keynote-google-io-24"&gt;&lt;a href="https://www.youtube.com/watch?v=XEzRZ35urlk"&gt;Google Keynote (Google I/O ‘24)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/XEzRZ35urlk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="sysopsdevops-493-przychodzi-devops-do-startupu-ukasz-durak"&gt;&lt;a href="https://www.youtube.com/watch?v=BKbJyv4P8e8"&gt;SysOps/DevOps [#493] “Przychodzi DevOps do startupu” - Łukasz Durak&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/BKbJyv4P8e8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 31 May 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-05-31:/2024-may-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - April 2024</title><link>https://blog.tobked.dev/2024-april-links</link><description>&lt;h1 id="april-2024"&gt;April 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="503-days-working-full-time-on-foss-lessons-learned"&gt;&lt;a href="https://mathspp.com/blog/503-days-working-full-time-on-foss-lessons-learned"&gt;503 days working full-time on FOSS: lessons learned&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article shares some of the lessons I learned from working full-time on a FOSS project for 503 days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="verified-curl"&gt;&lt;a href="https://daniel.haxx.se/blog/2024/04/10/verified-curl/"&gt;Verified curl&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here follows a brief description on how you can detect if the curl package would ever make an xz.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pi-reliability-reduce-writes-to-your-sd-card"&gt;&lt;a href="https://www.dzombak.com/blog/2024/04/Pi-Reliability-Reduce-writes-to-your-SD-card.html"&gt;Pi Reliability: Reduce writes to your SD card&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you aren’t using a read-only filesystem on your Raspberry Pi, you should reduce the amount of stuff that gets written to its SD card.
This will help increase the card’s lifespan and keep your Pi running smoothly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-levelsfyi-built-scalable-search-with-postgresql"&gt;&lt;a href="https://www.levels.fyi/blog/scalable-search-with-postgres.html"&gt;How Levels.fyi Built Scalable Search with PostgreSQL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Our philosophy to scaling is simple, avoid premature optimization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="leveraging-side-projects-for-career-growth-in-engineering"&gt;&lt;a href="https://hybridhacker.email/p/leveraging-side-projects-for-career"&gt;Leveraging Side Projects for Career Growth in Engineering&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My Simple Framework to Turn Side Projects into Career Boosters&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="mental-health-in-software-engineering"&gt;&lt;a href="https://vadimkravcenko.com/shorts/mental-health-in-software-engineering/"&gt;Mental Health in Software Engineering&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I want to talk about something we don't discuss enough in our field: the mental health of software engineers, especially those of us who've taken on the challenge of leadership.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-work-from-home-strategies-to-optimize-remote-work"&gt;&lt;a href="https://blog.logrocket.com/product-management/how-to-work-from-home/"&gt;How to work from home: Strategies to optimize remote work&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learning how to build beautiful products without burning myself out (again). Writing about what I discovered along the way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jak-nie-wpasc-w-puapki-nauki"&gt;&lt;a href="https://devszczepaniak.pl/pulapki-nauki/"&gt;Jak nie wpaść w pułapki nauki?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tutorial hell&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="afera-woko-xz-proba-zaminowania-cyfrowego-swiata"&gt;&lt;a href="https://www.ciemnastrona.com.pl/cyfrowy_feudalizm/2024/03/31/xz-backdoor.html"&gt;Afera wokół XZ. Próba zaminowania cyfrowego świata&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Jedno źródło wszystkich rzek. Może by tu czegoś dolać?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gynvael-xzliblzma-bash-stage-obfuscation-explained"&gt;&lt;a href="https://gynvael.coldwind.pl/?lang=en&amp;amp;id=782"&gt;gynvael: xz/liblzma: Bash-stage Obfuscation Explained&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While admittedly most juicy and interesting part is the obfuscated binary with the backdoor,
the part that caught my attention – and what this blogpost is about – is the initial part in bash and the simple-but-clever obfuscation methods used there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="python-f-string-codes-i-use-every-day"&gt;&lt;a href="https://pybit.es/articles/python-f-string-codes-i-use-every-day/"&gt;Python F-String Codes I Use Every Day&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A few examples that will save the day probably* 95% of time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="10-reasons-i-stick-to-django-rather-than-fastapi"&gt;&lt;a href="https://www.david-dahan.com/blog/10-reasons-i-stick-to-django"&gt;10 reasons I stick to Django rather than FastAPI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Choosing where to invest one's time in learning new technologies is a personal decision, shaped by individual preferences, project requirements, and long-term goals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-optimize-postgresql-queries-from-django-using-pgmustard"&gt;&lt;a href="https://adamj.eu/tech/2022/06/21/optimize-postgresql-queries-from-django-using-pgmustard/"&gt;How to optimize PostgreSQL queries from Django using pgMustard&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Slow queries happen, and when they do, it can be tough to dissect why they’re slow.
This difficulty is compounded by using Django’s ORM, since it generates the SQL for you, so you may have little idea of the actual queries “under the hood”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-developers-survey-2023"&gt;&lt;a href="https://lp.jetbrains.com/django-developer-survey-2023/"&gt;Django Developers Survey 2023&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This report is based on the third annual Django Developers Survey, conducted in September – October 2023 as a collaborative effort between the Django Software Foundation and PyCharm.
To help us get a better idea of the current state of the framework and the ecosystem around it, around 4,000 Django users and enthusiasts from around the world took the survey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="learn-to-use-websockets-with-django-by-building-your-own-chatgpt"&gt;&lt;a href="https://www.saaspegasus.com/guides/django-websockets-chatgpt-channels-htmx/"&gt;Learn to use Websockets with Django by building your own ChatGPT &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything you need to know about websockets to use them in your applications, with Django, channels, and HTMX.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sending-email-in-django-using-gmail"&gt;&lt;a href="https://softwarecrafts.co.uk/100-words/day-76"&gt;Sending email in Django using GMail&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Another day, another beginner wanting to use GMail for free email sending, while this is entirely valid for a small project, please don't do this for your next startup.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="google-cloud-how-commerzbank-safeguards-its-data-with-vpc-service-controls"&gt;&lt;a href="https://cloud.google.com/blog/topics/customers/how-commerzbank-safeguards-its-data-with-vpc-service-controls"&gt;Google Cloud: How Commerzbank safeguards its data with VPC Service Controls&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With VPC Service Controls, the Cyber Center of Excellence at Commerzbank set the standard for controlling data flow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="tor-from-the-dark-web-to-the-future-of-privacy"&gt;&lt;a href="https://direct.mit.edu/books/oa-monograph/5761/TorFrom-the-Dark-Web-to-the-Future-of-Privacy"&gt;Tor: From the Dark Web to the Future of Privacy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A biography of Tor—a cultural and technological history of power, privacy, and global politics at the internet's core.&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 30 Apr 2024 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2024-04-30:/2024-april-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - March 2024</title><link>https://blog.tobked.dev/2024-march-links</link><description>&lt;h1 id="march-2024"&gt;March 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="speaking-for-hackers"&gt;&lt;a href="https://sfhbook.netlify.app/"&gt;Speaking for Hackers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to keep a roomful of programmers entertained when your competition is the internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-git-branches-intuition-reality"&gt;&lt;a href="https://jvns.ca/blog/2023/11/23/branches-intuition-reality/"&gt;Julia Evans: git branches: intuition &amp;amp; reality&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... I’ve been thinking about git branches a lot.
I keep hearing from people that they find the way git branches work to be counterintuitive.
It got me thinking: what might an “intuitive” notion of a branch be, and how is it different from how git actually works?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-inside-git"&gt;&lt;a href="https://jvns.ca/blog/2024/01/26/inside-git/"&gt;Julia Evans: Inside .git&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello! I posted a comic on Mastodon this week about what’s in the .git directory and someone requested a text version, so here it is.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="new-study-reveals-the-single-most-important-factor-for-learning-rate"&gt;&lt;a href="https://scotthyoung.medium.com/new-study-reveals-the-single-most-important-factor-for-learning-rate-acc9042c00c6"&gt;New Study Reveals The Single Most Important Factor for Learning Rate&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A &lt;a href="https://www.pnas.org/doi/abs/10.1073/pnas.2221311120"&gt;recent paper&lt;/a&gt; I encountered suggests that the rate of learning among students doesn’t actually differ all that much.
Instead, what differs mostly between students is their prior knowledge.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="feature-flags-are-ruining-your-codebase"&gt;&lt;a href="https://zaidesanton.substack.com/p/feature-flags-are-ruining-your-codebase"&gt;Feature flags are ruining your codebase&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The dangers of letting PMs control them&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-2038-problem"&gt;&lt;a href="https://www.codereliant.io/the-2038-problem/"&gt;The 2038 Problem&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The End of Time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="almost-every-infrastructure-decision-i-endorse-or-regret-after-4-years-running-infrastructure-at-a-startup"&gt;&lt;a href="https://cep.dev/posts/every-infrastructure-decision-i-endorse-or-regret-after-4-years-running-infrastructure-at-a-startup/"&gt;(Almost) Every infrastructure decision I endorse or regret after 4 years running infrastructure at a startup&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This post will list some of the major decisions made and if I endorse them for your startup, or if I regret them and advise you to pick something else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-errors-that-mean-youre-doing-it-right"&gt;&lt;a href="https://longform.asmartbear.com/good-problems-to-have/"&gt;The “errors” that mean you’re doing it right&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Some things appear to be mistakes, but in fact should be celebrated as the expected outcomes of great decisions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-ultimate-guide-to-personal-productivity-methods"&gt;&lt;a href="https://todoist.com/pl/inspiration/personal-productivity-methods"&gt;The Ultimate Guide to Personal Productivity Methods&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You don't need a to-do list, you need a system you can trust.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="william-j-rapaport-how-to-study-a-brief-guide"&gt;&lt;a href="https://cse.buffalo.edu/~rapaport/howtostudy.html"&gt;William J. Rapaport: How to Study: A Brief Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I am going to give you some suggestions on how to study efficiently. They worked for me when I was in high school, college, and graduate school.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="safely-rewriting-complex-code"&gt;&lt;a href="https://www.screamingatmyscreen.com/safely-rewriting-complex-code/"&gt;Safely rewriting complex code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;First of all I would suggest making sure you test the function as good as you can.
More often than not I found small issues with the new implementation by simply running tests for the old code against the new one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="implementing-a-lasting-service-pattern-for-your-business-logic"&gt;&lt;a href="https://medium.com/ambient-innovation/implementing-a-lasting-service-pattern-for-your-business-logic-96d6aaf7bdf4"&gt;Implementing a lasting service pattern for your business logic&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Best practices for building an understandable, maintainable and scalable home for your custom logic&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="getting-help-in-python"&gt;&lt;a href="https://pulsar17.me/2024/02/ongettinghelp"&gt;Getting help [in Python] 🧙&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; help()&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-retrospective-on-requests"&gt;&lt;a href="https://blog.ian.stapletoncordas.co/2024/02/a-retrospective-on-requests"&gt;A Retrospective on Requests&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... most people only know that Requests does the right things for them for TLS and some other HTTP behaviour, but I doubt anyone understands just how bad the project is internally.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="the-simplest-way-to-add-google-sign-in-to-your-django-app"&gt;&lt;a href="https://www.photondesigner.com/articles/google-sign-in"&gt;The simplest way to add Google sign-in to your Django app ✍️&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;All the guides I've seen about adding Google Sign to Django make it overly complicated (e.g., Django-allauth or Django-social-auth).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="uv"&gt;&lt;a href="https://github.com/astral-sh/uv"&gt;uv&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An extremely fast Python package installer and resolver, written in Rust.
Designed as a drop-in replacement for common pip and pip-tools workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="procrastinate"&gt;&lt;a href="https://github.com/procrastinate-org/procrastinate/"&gt;procrastinate&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PostgreSQL-based Task Queue for Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="prettymapp"&gt;&lt;a href="https://github.com/chrieke/prettymapp"&gt;prettymapp&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Prettymapp is a webapp and Python package to create beautiful maps from OpenStreetMap data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="django-queryhunter"&gt;&lt;a href="https://github.com/PaulGilmartin/django-queryhunter"&gt;django-queryhunter&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hunt down the lines of your Django application code which are responsible for executing the most queries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="piphero"&gt;&lt;a href="https://piphero.app/"&gt;PiPHero&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The macOS menu bar app to picture-in-picture any window.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="google-cloud-architecture-framework"&gt;&lt;a href="https://cloud.google.com/architecture/framework"&gt;Google Cloud Architecture Framework&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Google Cloud Architecture Framework provides recommendations and describes best practices to help architects,
developers, administrators, and other cloud practitioners design and operate a cloud topology that's secure,
efficient, resilient, high-performing, and cost-effective.
The Google Cloud Architecture Framework is our version of a well-architected framework&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="mastering-behavioral-interviews-for-software-developers"&gt;&lt;a href="https://www.freecodecamp.org/news/mastering-behavioral-interviews-for-software-developers/"&gt;Mastering Behavioral Interviews for Software Developers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This video course is designed to equip developers with the essential skills and insights necessary for excelling in behavior-based interviews.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="intel-one-mono-typeface"&gt;&lt;a href="https://github.com/intel/intel-one-mono"&gt;Intel One Mono Typeface&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Introducing Intel One Mono, an expressive monospaced font family that’s built with clarity, legibility, and the needs of developers in mind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="python-bytes-372-uv-an-impressive-pip-alternative"&gt;&lt;a href="https://www.youtube.com/watch?v=wcVAjNBaKUU"&gt;Python Bytes 372: uv - an impressive pip alternative&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/wcVAjNBaKUU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="python-bytes-373-changing-directories"&gt;&lt;a href="https://www.youtube.com/watch?v=AbCuv0wuzP0"&gt;Python Bytes 373: Changing Directories&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/AbCuv0wuzP0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="djangocon-us-keynote-testing-modern-web-apps-like-a-champion-with-andrew-knight"&gt;&lt;a href="https://www.youtube.com/watch?v=Ze62p97coaY"&gt;DjangoCon US: Keynote: Testing Modern Web Apps Like a Champion with Andrew Knight&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Ze62p97coaY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="full-stack-python-andy-pandy-knight-pytexas-2023"&gt;&lt;a href="https://www.youtube.com/watch?v=ka5KRLUn47s"&gt;"Full-Stack Python" (Andy "Pandy" Knight) - PyTexas 2023&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ka5KRLUn47s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 31 Mar 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-03-31:/2024-march-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - February 2024</title><link>https://blog.tobked.dev/2024-february-links</link><description>&lt;h1 id="february-2024"&gt;February 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="freedium"&gt;&lt;a href="https://freedium.cfd/"&gt;Freedium&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your paywall breakthrough for Medium!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="what-happens-when-an-astronaut-in-orbit-says-hes-not-coming-back"&gt;&lt;a href="https://arstechnica.com/space/2024/01/solving-a-nasa-mystery-why-did-space-shuttle-commanders-lock-the-hatch/"&gt;What happens when an astronaut in orbit says he’s not coming back?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;"If you guys don't give me a chance to repair my instrument, I'm not going back."&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 29 Feb 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-02-29:/2024-february-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Month summary - January 2024</title><link>https://blog.tobked.dev/2024-january-links</link><description>&lt;h1 id="january-2024"&gt;January 2024&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-pinterest-scaled-to-11-million-users-with-only-6-engineers"&gt;&lt;a href="https://read.engineerscodex.com/p/how-pinterest-scaled-to-11-million?utm_source=unknownews"&gt;How Pinterest scaled to 11 million users with only 6 engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lessons from scaling Pinterest&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="no-downtime-deployments-with-gunicorn"&gt;&lt;a href="https://blog.pecar.me/gunicorn-restart"&gt;No Downtime Deployments with Gunicorn&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You want to continue serving requests while your Gunicorn process restarts to load your application code updates, and you want to avoid setting up a complicated code deployment process. Gunicorn supports this workflow out of the box with the HUP signal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="advice-for-new-software-devs-whove-read-all-those-other-advice-essays"&gt;&lt;a href="https://buttondown.email/hillelwayne/archive/advice-for-new-software-devs-whove-read-all-those/"&gt;Advice for new software devs who've read all those other advice essays&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;From a person who really shouldn't be giving others advice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="10-things-software-developers-should-learn-about-learning"&gt;&lt;a href="https://cacm.acm.org/magazines/2024/1/278891-10-things-software-developers-should-learn-about-learning/fulltext"&gt;10 Things Software Developers Should Learn about Learning&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learning is necessary for software developers. Change is perpetual:
New technologies are frequently invented, and old technologies are repeatedly updated.
Thus, developers do not learn to program just once—over the course of their careers they will learn many new programming languages and frameworks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-ai-puppet-dance"&gt;&lt;a href="https://einarwh.wordpress.com/2024/01/12/the-ai-puppet-dance/"&gt;The AI Puppet Dance&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s like we’re all participating in a massively distributed presales party arranged by the tech giants.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="durmonski-how-to-approach-learning-self-discipline"&gt;&lt;a href="https://durmonski.com/self-improvement/learning-self-discipline/"&gt;Durmonski - How To Approach Learning Self-Discipline&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the reasons why we tend not to exert self-control comes down to a powerful background idea whose full destructive force we may not even be aware of.
That is, the belief that others will judge us harshly when we steer away from the social norms.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="task"&gt;&lt;a href="https://github.com/go-task/task"&gt;task&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A task runner / simpler Make alternative written in Go&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="navigating-the-cloud-api-maze-apigee-gcp-api-gateway-or-gcp-cloud-endpoints"&gt;&lt;a href="https://medium.com/google-cloud/navigating-the-cloud-api-maze-apigee-api-gateway-or-cloud-endpoints-6bc772b44ff4"&gt;Navigating the Cloud API Maze: Apigee, GCP API Gateway, or GCP Cloud Endpoints?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;But, you might ask, which one is my perfect API match? Well, let’s grab our map and compass and explore their unique strengths and ideal journeys together:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="rice-score-a-prioritization-framework-for-estimating-the-value-of-ideas"&gt;&lt;a href="https://roadmunk.com/guides/rice-score-prioritization-framework-product-management/"&gt;RICE score: A prioritization framework for estimating the value of ideas&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;RICE—which stands for Reach, Impact, Confidence and Effort—is a simple prioritization framework for quantifying the potential value of features, project ideas and initiatives.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="37c3-breaking-drm-in-polish-trains"&gt;&lt;a href="https://www.youtube.com/watch?v=XrlrbfGZo2k"&gt;37C3 - Breaking "DRM" in Polish trains&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/XrlrbfGZo2k" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 31 Jan 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-01-31:/2024-january-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2024</category></item><item><title>Year summary - 2023</title><link>https://blog.tobked.dev/2023-summary</link><description>&lt;h1 id="2023"&gt;2023&lt;/h1&gt;
&lt;h2 id="highlights"&gt;Highlights&lt;/h2&gt;
&lt;h4 id="git-rebase-interactive-and-fixups"&gt;&lt;code&gt;git rebase --interactive&lt;/code&gt; and &lt;code&gt;fixups&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Presented a well-received talk at work on mastering &lt;code&gt;git rebase --interactive&lt;/code&gt; with a focus on &lt;code&gt;fixups&lt;/code&gt;.
Inspired by &lt;a href="https://www.youtube.com/playlist?list=PLRVdut2KPAguz3xcd22i_o_onnmDKj3MA"&gt;Raymond Hettinger&lt;/a&gt; I decided to use the documentation generator &lt;a href="https://www.mkdocs.org/"&gt;MkDocs&lt;/a&gt; and &lt;a href="https://squidfunk.github.io/mkdocs-material/"&gt;Material for MkDocs&lt;/a&gt;.
The presentation is available as a website under my domain: &lt;a href="https://tobked.dev/git_rebase_interactive"&gt;tobked.dev/git_rebase_interactive&lt;/a&gt;.
Its source is on my Github: &lt;a href="https://github.com/TobKed/git_rebase_interactive"&gt;github.com/TobKed/git_rebase_interactive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="git rebase" src="https://tobked.dev/git_rebase_interactive/img/explain.png"&gt;&lt;/p&gt;
&lt;h4 id="google-cloud-developer-day-warsaw-2023"&gt;&lt;a href="https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I attended Google Cloud Developer Day Warsaw 2023 on April 27th, 2023. It was a free event organized by Google Cloud at their &lt;a href="https://www.campus.co/warsaw/"&gt;Warsaw Campus&lt;/a&gt;.
I wrote more about it in a separate blog post: &lt;a href="https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="gitops-and-flux"&gt;GitOps and &lt;a href="https://fluxcd.io/flux/"&gt;Flux&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I dived into the world of &lt;a href="https://fluxcd.io/flux/"&gt;flux&lt;/a&gt;, a game-changer for GitOps deployments.
This powerful tool automates keeping your Kubernetes cluster in sync with your &lt;strong&gt;git&lt;/strong&gt; configuration.
It goes beyond just watching for changes in configuration files - Flux can also identify new Docker images and update both configurations and the cluster itself.
Learning Flux has been a blast, and it's a valuable addition to my DevOps toolkit.&lt;/p&gt;
&lt;h4 id="taking-ml-pipelines-to-production-journey-with-kubeflow-and-vertex-pipelines"&gt;Taking ML Pipelines to Production: Journey with Kubeflow and Vertex Pipelines&lt;/h4&gt;
&lt;p&gt;I embarked on a journey to automate and streamline my machine learning workflows.
Kubeflow Pipelines, a powerful open-source platform allows for building and managing complex ML pipelines, encompassing everything from data ingestion to model training and deployment.&lt;/p&gt;
&lt;p&gt;The real magic happened when I integrated Kubeflow Pipelines with Vertex Pipelines on Google Cloud.
Vertex Pipelines is a managed service that makes running Kubeflow Pipelines in a production environment a breeze.
This powerful combination allowed me to successfully deploy and run ML pipelines in production, ensuring scalability and reliability.&lt;/p&gt;
&lt;p&gt;By leveraging Kubeflow Pipelines and Vertex Pipelines, I've gained the ability to automate ML workflows, improve their reproducibility, and confidently run them in a production setting.
This has significantly boosted my machine learning development efficiency.&lt;/p&gt;
&lt;h4 id="google-cloud-and-pycon-cz-2023-presentation"&gt;Google Cloud and Pycon CZ 2023 presentation&lt;/h4&gt;
&lt;p&gt;One of the highlights was diving deep into &lt;a href="(https://cloud.google.com/?hl=en)"&gt;Google Cloud Platform (GCP)&lt;/a&gt; to build a highly scalable application.
&lt;a href="https://cloud.google.com/run"&gt;CloudRun&lt;/a&gt; streamlined code deployment, while &lt;strong&gt;Cloud SQL&lt;/strong&gt; (PostgreSQL) provided a robust and scalable foundation for my app's data.
&lt;a href="https://cloud.google.com/pubsub"&gt;PubSub&lt;/a&gt; messaging became a game-changer, decoupling APIs for independent scaling and boosting overall performance.
A load balancer added the finishing touch, ensuring smooth traffic distribution and regional optimization.
Seeing the app handle traffic peaks with minimal latency was incredibly rewarding.&lt;/p&gt;
&lt;p&gt;I had the pleasure of attending the incredible &lt;a href="https://cz.pycon.org/2023/"&gt;PyCon CZ&lt;/a&gt; conference in Prague.
The excitement began even before I arrived in Prague, as I had the chance to meet John and Judy from the USA during my train journey.
John, a retired programmer, shared stories of his work with natural language, SQL-Windows, and COBOL.
It felt like I was meeting a living legend!&lt;/p&gt;
&lt;p&gt;During the train ride, I also had the pleasure of getting to know Piotr, the organizer of &lt;a href="https://www.pykonik.org/"&gt;PyKonik&lt;/a&gt;.
The conference itself was a fantastic experience, with a multitude of great people and captivating presentations.&lt;/p&gt;
&lt;p&gt;One of the best moments of the conference for me was when I put myself on the list for the Lightning Talks.
This was a huge challenge for me as I am usually quite nervous when it comes to public speaking, but I was determined to push myself out of my comfort zone.
The title of my presentation was "&lt;strong&gt;ML (Fast)API below 100ms (on GCP)&lt;/strong&gt;".
The presentation, as well as all the resources related to it, can be found in &lt;a href="https://github.com/TobKed/fastapi_cloudrun_pubsub"&gt;my repository&lt;/a&gt;.
I have provided an end-to-end working example on Google Cloud that demonstrates how to defer load from FastAPI (served by &lt;a href="https://cloud.google.com/run"&gt;CloudRun&lt;/a&gt;) to a background worker (also on CloudRun) via a queueing system (&lt;a href="https://cloud.google.com/pubsub"&gt;PubSub&lt;/a&gt;).
After practicing my presentation numerous times in my hotel room, I finally stepped onto the stage and gave it my all.
It was a personal victory over my fear of public speaking.&lt;/p&gt;
&lt;p&gt;&lt;img alt="PyCon CZ." src="https://blog.tobked.dev/images/posts/2023/2023_09_pyconcz.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/TobKed/fastapi_cloudrun_pubsub"&gt;Python API and background workers on Google Cloud Platform repo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;I've been writing monthly summaries, compiling a few sentences about the past month alongside articles, tools, and other interesting finds.&lt;/p&gt;
&lt;p&gt;Each month, I add a personal touch with a photo I've taken&lt;/p&gt;
&lt;p&gt;2023 summaries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-january-links"&gt;January&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-february-links"&gt;February&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-march-links"&gt;March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-april-links"&gt;April&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-may-links"&gt;May&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-july-links"&gt;July&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-august-links"&gt;August&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-september-links"&gt;September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-october-links"&gt;October&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-november-links"&gt;November&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2023-december-links"&gt;December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also wrote one additional blog post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;This year has been a fantastic journey of learning, pushing boundaries, and contributing to the programming community.
I'm excited to see what the next year holds!&lt;/p&gt;
&lt;h2 id="photos"&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img alt="2023_01" src="https://blog.tobked.dev/images/posts/2023/2023_01_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_04" src="https://blog.tobked.dev/images/posts/2023/2023_05_gcp_dev_day/2023_05_gcp_dev_day.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_05" src="https://blog.tobked.dev/images/posts/2023/2023_05_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_06" src="https://blog.tobked.dev/images/posts/2023/2023_06_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_07" src="https://blog.tobked.dev/images/posts/2023/2023_07_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_08" src="https://blog.tobked.dev/images/posts/2023/2023_08_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_09" src="https://blog.tobked.dev/images/posts/2023/2023_09_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_10" src="https://blog.tobked.dev/images/posts/2023/2023_10_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_11" src="https://blog.tobked.dev/images/posts/2023/2023_11_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2023_12" src="https://blog.tobked.dev/images/posts/2023/2023_12_xx.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 01 Jan 2024 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2024-01-01:/2023-summary</guid><category>summary</category><category>summary</category><category>year</category><category>2023</category></item><item><title>Month summary - December 2023</title><link>https://blog.tobked.dev/2023-december-links</link><description>&lt;h1 id="december-2023"&gt;December 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="examples-of-great-url-design"&gt;&lt;a href="https://blog.jim-nielsen.com/2023/examples-of-great-urls/"&gt;Examples of Great URL Design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When I reflect on examples of great URL design I’ve encountered through the years — URLs that, when I saw them, I paused and thought “Wow, that’s really neat!” — these are a few that come to mind.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-google-takes-the-pain-out-of-code-reviews-with-97-dev-satisfaction"&gt;&lt;a href="https://read.engineerscodex.com/p/how-google-takes-the-pain-out-of"&gt;How Google takes the pain out of code reviews, with 97% dev satisfaction&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A study of Google's code review tooling (Critique), AI-powered improvements, and recent statistics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="privacy-is-priceless-but-signal-is-expensive"&gt;&lt;a href="https://signal.org/blog/signal-is-expensive/"&gt;Privacy is Priceless, but Signal is Expensive&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We estimate that by 2025, Signal will require approximately $50 million dollars a year to operate—and this is very lean compared to other popular messaging apps that don’t respect your privacy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="abracadabra-how-does-shazam-work"&gt;&lt;a href="https://www.cameronmacleod.com/blog/how-does-shazam-work"&gt;abracadabra: How does Shazam work?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your phone's ability to identify any song it listens to is pure technological magic. In this article, I'll show you how one of the most popular apps, Shazam, does it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-surprising-connection-between-after-hours-work-and-decreased-productivity"&gt;&lt;a href="https://slack.com/intl/en-gb/blog/news/the-surprising-connection-between-after-hours-work-and-decreased-productivity"&gt;The surprising connection between after-hours work and decreased productivity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Slack’s Workforce Index uncovers new findings on how to structure the workday to maximize employee productivity, well-being and satisfaction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-do-programmers-need-private-offices-with-doors-do-not-disturb"&gt;&lt;a href="https://blobstreaming.org/why-do-programmers-need-private-offices-with-doors-do-not-disturb/"&gt;Why do programmers need private offices with doors? (Do Not Disturb&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Graham writes that he "once saw a recruiting ad for Microsoft with a big picture of a door. Work for us, the premise was, and we'll give you a place to work where you can actually get work done."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="dont-use-pythons-property"&gt;&lt;a href="https://www.b-list.org/weblog/2023/dec/21/dont-use-python-property/"&gt;Don’t use Python’s property&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In general, though, unless you really know what you’re doing with advanced descriptor use cases, or you have the very specific use case of turning a pre-existing attribute into a method, you probably should be avoiding property, and writing descriptors in general, in your Python code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="fine-tuning-python-wsgi-and-asgi-applications-for-flask-django-and-fastapi"&gt;&lt;a href="https://tonybaloney.github.io/posts/fine-tuning-wsgi-and-asgi-applications.html"&gt;Fine Tuning Python WSGI and ASGI applications for Flask, Django, and FastAPI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this blog post, I’m going to review some best practices for configuring Python web servers like Gunicorn, Uvicorn, and Hypercorn. We’ll recap the architecture of all the bits of software that sit between your Python code and your users. We’ll also touch on verification methods like load testing to check that your configuration stands up against some user traffic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="terminal-trove"&gt;&lt;a href="https://terminaltrove.com/"&gt;Terminal Trove&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Terminal Trove curates and showcases all things in the terminal such as command line interface tools (CLI), text mode interface tools (TUI), developer tools and more no matter what platform or medium&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="resume-matcher"&gt;&lt;a href="https://github.com/srbhr/Resume-Matcher"&gt;Resume Matcher&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Resume Matcher is an open source, free tool to improve your resume. It works by using language models to compare and rank resumes with job descriptions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="srecon19-europemiddle-eastafrica-estimating-system-performance-from-first-principles-simon-eskildsen-shopify"&gt;&lt;a href="https://www.youtube.com/watch?v=IxkSlnrRFqc"&gt;SREcon19 Europe/Middle East/Africa - Estimating System Performance from First Principles - Simon Eskildsen, Shopify&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/IxkSlnrRFqc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="anthony-shaw-beat-the-rush-designing-effective-load-tests-for-your-web-application-pycon-au"&gt;&lt;a href="https://www.youtube.com/watch?v=or3PbMGMz4o"&gt;Anthony Shaw -  Beat the rush! Designing effective load tests for your web application [PyCon AU]&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/or3PbMGMz4o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 31 Dec 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-12-31:/2023-december-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - November 2023</title><link>https://blog.tobked.dev/2023-november-links</link><description>&lt;h1 id="november-2023"&gt;November 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="from-chaos-to-cohesion-architecting-your-own-monorepo"&gt;&lt;a href="https://monadical.com/posts/from-chaos-to-cohesion.html"&gt;From Chaos to Cohesion: Architecting Your Own Monorepo&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Build a simple monorepo using GitHub Actions as a CI/CD tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-netflix-does-failovers-in-7-minutes-flat"&gt;&lt;a href="https://opensource.com/article/18/4/how-netflix-does-failovers-7-minutes-flat"&gt;How Netflix does failovers in 7 minutes flat&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Netflix decreased the time it takes to respond to an outage from 45 minutes to seven with no additional cost.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-ibm-mainframe-how-it-runs-and-why-it-survives"&gt;&lt;a href="https://arstechnica.com/information-technology/2023/07/the-ibm-mainframe-how-it-runs-and-why-it-survives/"&gt;The IBM mainframe: How it runs and why it survives&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this deep-dive explainer, we look at a big-business mainstay.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-are-cloud-development-environments-spiking-in-popularity-now"&gt;&lt;a href="https://blog.pragmaticengineer.com/why-are-cloud-development-environments-spiking-in-popularity-now/"&gt;Why are Cloud Development Environments Spiking in Popularity, Now?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Will most developers at large and mid-sized tech companies build software on a remote machine in 2-3 years time?
And will they do this in a way that’s indistinguishable from doing it locally?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-dont-need-a-dedicated-cache-service-postgresql-as-a-cache"&gt;&lt;a href="https://martinheinz.dev/blog/105"&gt;You Don't Need a Dedicated Cache Service - PostgreSQL as a Cache&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While being an SQL database, Postgres also includes a lot of features that make it suitable for other uses, e.g. using it as NoSQL database (JSON and HStore datatypes) or vector database.&lt;/p&gt;
&lt;p&gt;Another - more unusual and possibly unexpected use-case for Postgres - is using it as a cache!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="death-by-a-thousand-microservices"&gt;&lt;a href="https://renegadeotter.com/2023/09/10/death-by-a-thousand-microservices.html"&gt;Death by a thousand microservices&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The software industry is learning once again that complexity kills.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="12-microservices-patterns-i-wish-i-knew-before-the-system-design-interview"&gt;&lt;a href="https://levelup.gitconnected.com/12-microservices-pattern-i-wish-i-knew-before-the-system-design-interview-5c35919f16a2"&gt;12 Microservices Patterns I Wish I Knew Before the System Design Interview&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mastering the Art of Scalable and Resilient Systems with Essential Microservices Design Patterns.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="an-excruciatingly-detailed-guide-to-ssh-but-only-the-things-i-actually-find-useful"&gt;&lt;a href="https://grahamhelton.com/blog/ssh-cheatsheet/"&gt;An Excruciatingly Detailed Guide To SSH (But Only The Things I Actually Find Useful)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Oh you like SSH? Name every flag.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="explaining-the-postgres-meme"&gt;&lt;a href="https://www.avestura.dev/blog/explaining-the-postgres-meme"&gt;Explaining The Postgres Meme&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I spend a significant amount of my time online, and on a regular day, I am either learning about STEM topics, indulging in memes, or both.
On one such day, I came across a meme that truly caught my attention.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="10-hard-to-swallow-truths-they-wont-tell-you-about-software-engineer-job"&gt;&lt;a href="https://www.mensurdurakovic.com/hard-to-swallow-truths-they-wont-tell-you-about-software-engineer-job/"&gt;10 hard-to-swallow truths they won't tell you about software engineer job&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;After reading this article, some people will say I am talking overly negatively about it. but my opinion is that these things go together with the job and you have to accept it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-git-rebase-what-can-go-wrong"&gt;&lt;a href="https://jvns.ca/blog/2023/11/06/rebasing-what-can-go-wrong-/"&gt;Julia Evans: git rebase: what can go wrong?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve been seeing a comment over and over to the effect of “I hate rebase”.
People seemed to feel pretty strongly about this, and I was really surprised because I don’t run into a lot of problems with rebase and I use it all the time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-i-learned-after-one-year-of-building-a-data-platform-from-scratch"&gt;&lt;a href="https://medium.com/@jeremysrgt/what-i-learned-after-one-year-of-building-a-data-platform-from-scratch-d7075629cab1"&gt;What I learned after one year of building a Data Platform from scratch&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Building a data platform from scratch is an amazing experience and I wanted to share the lessons that I learned along the way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-moving-from-aws-to-bare-metal-saved-us-230000-yr"&gt;&lt;a href="https://blog.oneuptime.com/moving-from-aws-to-bare-metal/"&gt;How moving from AWS to Bare-Metal saved us $230,000 /yr.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Thanks to advancements in technologies like Docker, Kubernetes, Helm, Microk8s, and more, transitioning to bare-metal infrastructure is now significantly easier than it was just a few years ago.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="architectural-decisions-the-making-of"&gt;&lt;a href="https://ozimmer.ch/practices/2020/04/27/ArchitectureDecisionMaking.html"&gt;Architectural Decisions — The Making Of&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Architectural Decisions (ADs) have been answering “why” questions about design options since the inception of software architecture in the 1990s.
Ways to capture them should be part of each architect’s toolbox.
Less is more — only the key ADs justify the effort, and only crisp and sound justifications will convince the reader.
Let’s see how to get there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mastering-multiple-github-accounts"&gt;&lt;a href="https://dzone.com/articles/mastering-multiple-github-accounts"&gt;Mastering Multiple GitHub Accounts &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this blog post, we'll explore how to leverage this configuration file to set up seamless access to multiple GitHub accounts simultaneously.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-looming-demise-of-the-10x-developer"&gt;&lt;a href="https://blog.testdouble.com/posts/2023-07-12-the-looming-demise-of-the-10x-developer/"&gt;The looming demise of the 10x developer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why an era of enthusiast programmers is coming to an end.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-find-time-to-learn-after-work"&gt;&lt;a href="https://www.feststelltaste.de/how-to-find-time-to-learn-after-work/"&gt;How to find time to learn after work&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My software developer colleagues often ask me where I do get all the time for reading all the tech books or articles, watching conference talks and listening to podcasts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="your-daily-standup-should-be-asynchronous-heres-why"&gt;&lt;a href="https://alex-omeyer.medium.com/your-daily-standup-should-be-asynchronous-heres-why-58f5da75ff0e"&gt;Your daily standup should be asynchronous. Here’s why&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Daily standups are from the early 2000s. It’s time we brought them up to speed for a remote-working, distributed, tech-assisted world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="github-copilot-isnt-worth-the-risk"&gt;&lt;a href="https://www.kolide.com/blog/github-copilot-isn-t-worth-the-risk"&gt;GitHub Copilot Isn't Worth the Risk &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;On November 3rd programmer and lawyer Matthew Butterick, along with the Joseph Saveri Law Firm, filed a class action lawsuit against GitHub, Microsoft (its parent company), and OpenAI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="realpython-how-to-catch-multiple-exceptions-in-python"&gt;&lt;a href="https://realpython.com/python-catch-multiple-exceptions/"&gt;RealPython: How to Catch Multiple Exceptions in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;You now know how to use some of the more subtle features of Python’s exception handling mechanism.
You can handle exceptions in more powerful ways than you may have thought possible.
You also understand that sometimes ignoring exceptions is necessary to make sure your code does what you want it to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-312-cool-new-features-for-you-to-try"&gt;&lt;a href="https://realpython.com/python312-new-features/"&gt;Python 3.12: Cool New Features for You to Try&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The new version comes with several new features and improvements that you’ll explore in this tutorial.
You can also dive into the &lt;a href="https://docs.python.org/3.12/whatsnew/3.12.html"&gt;documentation&lt;/a&gt; to see a complete list of all changes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="software-design-by-example"&gt;&lt;a href="https://third-bit.com/sdxpy/"&gt;Software Design by Example&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;a tool-based introduction with Python&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="gcsfs"&gt;&lt;a href="https://github.com/fsspec/gcsfs"&gt;gcsfs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Pythonic file-system interface for Google Cloud Storage&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="django-micro-django"&gt;&lt;a href="https://github.com/pauloxnet/uDjango"&gt;μDjango (micro Django)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A single file Django micro project created for demonstration purposes to be used in the same way as other Python frameworks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="vectorpea"&gt;&lt;a href="https://www.vectorpea.com/"&gt;vectorpea&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Vectorpea Online Vector Editor lets you edit vector graphics, AI, SVG and PDF files!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pure-bash-bible"&gt;&lt;a href="https://github.com/dylanaraps/pure-bash-bible"&gt;pure bash bible&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;📖 A collection of pure bash alternatives to external processes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bash-guide"&gt;&lt;a href="https://github.com/Idnan/bash-guide"&gt;bash-guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A guide to learn bash.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bash-handbook"&gt;&lt;a href="https://github.com/denysdovhan/bash-handbook"&gt;bash-handbook&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This document is written for those who want to learn Bash without diving in too deeply.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-command-line"&gt;&lt;a href="https://github.com/jlevy/the-art-of-command-line"&gt;The Art of Command Line&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Master the command line, in one page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="shell-style-guide-by-google"&gt;&lt;a href="https://google.github.io/styleguide/shellguide.html"&gt;Shell Style Guide - by Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Authored, revised and maintained by many Googlers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="vim-cheat-sheet"&gt;&lt;a href="https://vim.rtorr.com/"&gt;Vim Cheat Sheet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This project aims to be one of the most accessible vim guides available.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mastering-curl-interactive-text-guide"&gt;&lt;a href="https://antonz.org/mastering-curl/"&gt;Mastering curl: interactive text guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I recently watched the 3.5-hour workshop &lt;a href="https://www.youtube.com/watch?v=V5vZWHP-RqU"&gt;Mastering the curl command line&lt;/a&gt; by &lt;a href="https://daniel.haxx.se/"&gt;Daniel Stenberg&lt;/a&gt;, the author of curl.
The video was awesome and I learned a ton of things, so I wanted a (shortened) text version for future reference. Here it is.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've also included some interactive examples, so you can try out different curl commands as you read.&lt;/p&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="top-mistakes-to-avoid-when-using-kubernetes-in-google-cloud"&gt;&lt;a href="https://gcloud.devoteam.com/blog/top-mistakes-to-avoid-when-using-kubernetes-in-google-cloud/"&gt;Top Mistakes to Avoid When Using Kubernetes in Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Are you planning to use Kubernetes in Google Cloud? That's awesome!
But before you dive in, make sure you avoid some common mistakes that many teams make.
These tips will save you time, headaches, and resources.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="architectural-styles-and-the-design-of-network-based-software-architectures-by-roy-thomas-fielding"&gt;&lt;a href="https://roy.gbiv.com/pubs/dissertation/top.htm"&gt;&lt;strong&gt;Architectural Styles and the Design of Network-based Software Architectures&lt;/strong&gt; by Roy Thomas Fielding&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;UNIVERSITY OF CALIFORNIA, IRVINE&lt;/p&gt;
&lt;p&gt;DISSERTATION
submitted in partial satisfaction of the requirements for the degree of
DOCTOR OF PHILOSOPHY
in Information and Computer Science
by
&lt;a href="http://www.ics.uci.edu/~fielding/"&gt;Roy Thomas Fielding&lt;/a&gt;
2000&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="stack-exchange-performance"&gt;&lt;a href="https://stackexchange.com/performance"&gt;Stack Exchange Performance&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;1.3 BILLION page views per month&lt;/p&gt;
&lt;p&gt;It’s all about performance&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="effective-engineer-notes"&gt;&lt;a href="https://gist.github.com/rondy/af1dee1d28c02e9a225ae55da2674a6f"&gt;Effective Engineer - Notes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;FWIW: I (@Rondy) am not the author of the content presented here, which is an outline from Edmond Lau's book. I've just copy-pasted it from somewhere and saved as a personal gist, before it got popular on newsnews.ycombinator.com. I don't remember where exactly the original source is from and neither could find the author's name, so I cannot give him/her the proper credits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="makefile-tutorial-by-example"&gt;&lt;a href="https://makefiletutorial.com/"&gt;Makefile Tutorial by Example&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I've condensed the most critical knowledge into this guide.
Each topic has a brief description and a self contained example that you can run yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="free-software-free-society-richard-stallman-at-tedxgeneva-2014"&gt;&lt;a href="https://www.youtube.com/watch?v=Ag1AKIl_2GM"&gt;Free software, free society: Richard Stallman at TEDxGeneva 2014&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/Ag1AKIl_2GM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="maxime-sanglan-charlier-nick-tune-from-domain-boundaries-to-software-architecture"&gt;&lt;a href="https://www.youtube.com/watch?v=mdpV9j3Dc4s"&gt;Maxime Sanglan-Charlier &amp;amp; Nick Tune — From Domain Boundaries to Software Architecture&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/mdpV9j3Dc4s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 30 Nov 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-11-30:/2023-november-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - October 2023</title><link>https://blog.tobked.dev/2023-october-links</link><description>&lt;h1 id="october-2023"&gt;October 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I spruced up my &lt;a href="https://github.com/TobKed/fastapi_cloudrun_pubsub"&gt;Python API and background workers on Google Cloud Platform repo&lt;/a&gt;.
It's a neat package with a simple app and all the setup for FastAPI, CloudRun, and PubSub.
Just a fun little project showcasing Python on Google Cloud – check it out!&lt;/p&gt;
&lt;p&gt;By the way, &lt;a href="https://blog.tobked.dev/2023-september-links"&gt;last month&lt;/a&gt; I gave a lightning talk at PyCon CZ based on this repository.&lt;/p&gt;
&lt;p&gt;&lt;img alt="PyCon CZ." src="https://blog.tobked.dev/images/posts/2023/2023_09_pyconcz.jpg"&gt;&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="what-is-a-merge-queue-and-does-your-team-need-one"&gt;&lt;a href="https://graphite.dev/blog/what-is-a-merge-queue"&gt;What is a merge queue, and does your team need one?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Merge queues aren’t right for every team and whether or not your team needs a merge queue depends on a number of factors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-it-works-in-my-machine-turns-it-works-in-my-container"&gt;&lt;a href="https://dwdraju.medium.com/how-it-works-in-my-machine-turns-it-works-in-my-container-1b9a340ca43d"&gt;How “It works in my machine” turns “It works in my container”?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s dive into why the “It works in my container” situation arises.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="when-taylor-swift-crashed-ticketmaster-a-lesson-on-scaling-for-spikes"&gt;&lt;a href="https://learningdaily.dev/when-taylor-swift-crashed-ticketmaster-a-lesson-on-scaling-for-spikes-9931e2c888e9"&gt;When Taylor Swift crashed Ticketmaster: A lesson on scaling for spikes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In general, it is a good practice to brace for 10 billion system calls by deploying all the mitigation tactics mentioned above (caching, elastic demand, graceful degradation, etc.).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-get-more-interviews-offers-and-higher-compensation-at-top-tech-companies"&gt;&lt;a href="https://careercutler.substack.com/p/how-to-get-more-interviews-offers"&gt;How to get more interviews, offers, and higher compensation at top tech companies&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Main takeaways from the live event discussion from over 35 years of experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-dont-hate-jira-you-hate-your-manager"&gt;&lt;a href="https://jarvispowered.com/you-dont-hate-jira-you-hate-your-manager/"&gt;You don't hate JIRA, you hate your manager&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm usually not one to run to the defense of a specific technology, especially one I hate.
Though, I think it's important that people hate things for the right reason.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="managing-difficult-software-engineers"&gt;&lt;a href="https://vadimkravcenko.com/shorts/managing-bad-engineers/"&gt;Managing difficult software engineers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This guide is born out of those countless interactions, conversations, and experiences.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="designing-accessible-text-over-images-best-practices-techniques-and-resources-part-1"&gt;&lt;a href="https://www.smashingmagazine.com/2023/08/designing-accessible-text-over-images-part1/"&gt;Designing Accessible Text Over Images: Best Practices, Techniques, And Resources (Part 1)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this two-part series of articles, Hannah Milan covers the best practices when using various accessible text over images techniques for designing your web and mobile app content.
These practices can help you to make the text over images more accessible while retaining an aesthetically pleasing look.
Get ready to deep-dive through the subtle changes in your design, such as the text’s position, size, and background style, and explore the importance of using real text for accessibility purposes, as opposed to using images of text.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="3-git-configuration-tips-i-use-every-day"&gt;&lt;a href="https://startcodingnow.com/git-config-tips"&gt;3 Git Configuration Tips I Use Every Day&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you want to move past add, commit, and push, keep reading.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="automatic-https"&gt;&lt;a href="https://caddyserver.com/docs/automatic-https"&gt;Automatic HTTPS&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Caddy is the first and only web server to use HTTPS automatically and by default.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="amazon-prime-video-reduced-costs-by-90-by-ditching-microservices"&gt;&lt;a href="https://blog.devgenius.io/amazon-prime-video-reduced-costs-by-90-by-ditching-microservices-a9f80591f96a"&gt;Amazon Prime Video reduced costs by 90% by ditching Microservices&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article is &lt;em&gt;not&lt;/em&gt; sponsored by the World Monolith Supremacy Association.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="my-solopreneur-story-zero-to-45kmo-in-2-years"&gt;&lt;a href="https://news.tonydinh.com/p/my-solopreneur-story-zero-to-45kmo"&gt;My solopreneur story: zero to $45K/mo in 2 years&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Today is exactly 2 years since I quit my job and become a full-time indie hacker.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-visual-guide-to-sed"&gt;&lt;a href="https://betterprogramming.pub/a-visual-guide-to-sed-a7a8abd2f675"&gt;A Visual Guide to Sed&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mastering the text substitution tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dominik-szczepaniak-mermaid-diagrams-as-a-code"&gt;&lt;a href="https://devszczepaniak.pl/mermaid-diagrams-as-a-code/"&gt;Dominik Szczepaniak: Mermaid – Diagrams as a Code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Dobrze zaprojektowany diagram może stanowić lepsze przedstawienie kodu lub architektury niż obszerne opisy, interfejsy czy komentarze w kodzie.
W tym artykule przedstawię Ci kilka argumentów za tym, dlaczego warto korzystać z diagramów, jakie są główne problemy z pracą z diagramami.
Pokażę Ci narzędzie Mermaid, które pozwala w prosty i przyjemny sposób zarządzać diagramami w postaci kodu, a także pokażę Ci jak szybko postawić aplikację serwującą dokumentację wzbogaconą o diagramy wykonane w Mermaid.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="maybe-you-should-do-less-work"&gt;&lt;a href="https://www.johnwhiles.com/posts/work"&gt;Maybe you should do less 'work'&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Working in tech, I've observed developers who work as hard as possible when they don't need to.
I'm here today to tell you that it's a bad idea and you shouldn't do it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="learning-at-work-julia-evans"&gt;&lt;a href="https://jvns.ca/blog/2017/08/06/learning-at-work/"&gt;Learning at work - Julia Evans&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are some things me &amp;amp; people on twitter came up with.
Everything in here is stuff I can do during my workday.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-learned-to-program-in-10-years-julia-evan"&gt;&lt;a href="https://jvns.ca/blog/2015/02/17/how-i-learned-to-program-in-10-years/"&gt;How I learned to program in 10 years - Julia Evan&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Anyway, this is mostly to say – if you’re programming and just starting out,
and worrying that people say you can learn to program in 24 hours or 12 weeks… whatever.
It’s taken me 11 years so far, and I’m not done :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="15-principles-for-managing-up"&gt;&lt;a href="https://newsletter.weskao.com/p/15-principles-for-managing-up"&gt;15 principles for managing up&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When your boss loves you, you have options.
Here's how to help your manager get what they need, so you get what you want.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-top-7-software-engineering-workflow-tips-i-wish-i-knew-earlier"&gt;&lt;a href="https://careercutler.substack.com/p/the-top-7-software-engineering-workflow"&gt;The top 7 software engineering workflow tips I wish I knew earlier 🧰&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your time matters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://pybit.es/articles/6-cool-things-you-can-do-with-the-functools-module/"&gt;6 Cool Things You Can Do With The Functools Module&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In conclusion, the functools module in Python’s Standard Library is a treasure trove of tools, especially for those who frequently work with functions and decorators.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-is-inversion-of-control-and-why-does-it-matter"&gt;&lt;a href="https://seddonym.me/2019/04/15/inversion-of-control/"&gt;What is Inversion of Control and Why Does it Matter?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://seddonym.me/2019/08/03/ioc-techniques/"&gt;Three Techniques for Inverting Control, in Python&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Inversion of Control is a principle for improving the modularity of software.
It's a powerful strategy for simplifying systems that might otherwise become tangled and difficult to understand.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="we-have-to-talk-about-flask"&gt;&lt;a href="https://blog.miguelgrinberg.com/post/we-have-to-talk-about-flask"&gt;We Have To Talk About Flask&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Flask 3.0 was released on September 30th, 2023, along with a parallel 3.0 release of Werkzeug, its main dependency.
That day, the Flask-Login extension, one of the most popular of all Flask extensions, stopped working due to a backwards incompatible change introduced in Werkzeug.
It is October 19th when I'm writing this, and Flask-Login remains broken.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="building-custom-middleware-in-fastapi"&gt;&lt;a href="https://semaphoreci.com/blog/custom-middleware-fastapi"&gt;Building Custom Middleware in FastAPI&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article you’ll see how to build custom middleware,
enabling you to extend the functionality of your APIs in unique ways by building function-based
and class-based middleware to modify request and response objects to suit your need and to handle rate limiting.
You’ll also see how to write test cases and the best practices to follow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="services-vs-command-handlers-szymon-miks"&gt;&lt;a href="https://blog.szymonmiks.pl/p/services-vs-command-handlers/"&gt;Services vs Command Handlers - Szymon Miks&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Organizing code in an application is crucial for its maintainability and scalability.
Two common approaches for structuring code are services and command handlers.
In this blog post, we will explore these approaches and discuss when it is appropriate to use each one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asyncio-twisted-tornado-gevent-walk-into-a-bar"&gt;&lt;a href="https://www.bitecode.dev/p/asyncio-twisted-tornado-gevent-walk"&gt;Asyncio, twisted, tornado, gevent walk into a bar...&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;... they pay, they leave, they drink, they order.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="make-each-line-count-keeping-things-simple-in-python"&gt;&lt;a href="https://pybit.es/articles/make-each-line-count-keeping-things-simple-in-python/"&gt;Make Each Line Count, Keeping Things Simple in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simplicity in your code means fewer possibilities for bugs to hide and easier debugging when they do arise 📈&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asyncio-real-world-coroutines-micha-klich"&gt;&lt;a href="https://klichx.dev/2023/08/03/asyncio-real-world-coroutines/"&gt;asyncio: real world coroutines - Michał Klich&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, I’ll be writing about working with coroutines, handling errors, retrying them automatically, and tracking execution progress.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="an-intro-to-protocol-buffers-with-python"&gt;&lt;a href="https://www.blog.pythonlibrary.org/2023/08/30/an-intro-to-protocol-buffers-with-python/"&gt;An Intro to Protocol Buffers with Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Protocol buffers are a data serialization format that is language agnostic.
They are analogous to Python’s own pickle format, but one of the advantages of protocol buffers is that they can be used by multiple programming languages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="do-not-use-requirementstxt"&gt;&lt;a href="https://quanttype.net/posts/2023-10-31-do-not-use-requirements.txt.html"&gt;Do not use requirements.txt&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;However, pip was designed to be a package installer and not a full-fledged project workflow tool.
pip lacks two essential features, dependency lockfiles and automatic management of virtualenvs&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-most-performant-timestamp-functions-in-python"&gt;&lt;a href="https://www.dataroc.ca/blog/most-performant-timestamp-functions-python"&gt;The most performant timestamp functions in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Use &lt;code&gt;time.time()&lt;/code&gt; for epoch timestamps.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;datetime.utcnow()&lt;/code&gt; for datetime timestamps.&lt;/p&gt;
&lt;p&gt;For tz-aware datetimes, you should do your own research. I only skimmed the surface here&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="supercharge-your-django-app-7-sneaky-tricks-to-crush-slow-database-queries"&gt;&lt;a href="https://johnnymetz.com/posts/slow-django-database-queries/"&gt;Supercharge Your Django App: 7 Sneaky Tricks to Crush Slow Database Queries&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Django provides many tools and methods for optimizing database queries in its &lt;a href="https://docs.djangoproject.com/en/4.2/topics/db/optimization/"&gt;Database access optimization documentation&lt;/a&gt;.
In this blog post, we will explore a collection of additional and essential tips I’ve compiled over the years to help you pinpoint and resolve your inefficient Django queries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-is-the-django-admin-ugly"&gt;&lt;a href="https://www.coderedcorp.com/blog/why-is-the-django-admin-ugly/"&gt;Why is the Django Admin “Ugly”?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While talking with people at Djangocon US, one question kept coming up: “why is the Django admin so ‘ugly’?”.
I’m paraphrasing here, so pardon the click-bait title, but the question came in many forms. Why does the Django admin have a “dated” UI? Why has the Django admin not changed much in all these years? Why is the Django admin missing &lt;insert feature&gt;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="loguru"&gt;&lt;a href="https://github.com/Delgan/loguru"&gt;loguru&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Loguru is a library which aims to bring enjoyable logging in Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="diagrams"&gt;&lt;a href="https://diagrams.mingrammer.com/"&gt;Diagrams&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Diagram as Code&lt;/p&gt;
&lt;p&gt;Diagrams lets you draw the cloud system architecture in Python code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hypothesis"&gt;&lt;a href="https://github.com/HypothesisWorks/hypothesis"&gt;hypothesis&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hypothesis is a powerful, flexible, and easy to use library for property-based testing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="rendercv"&gt;&lt;a href="https://github.com/sinaatalay/rendercv"&gt;RenderCV&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;LaTeX CV generator from a YAML/JSON input file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="prefect"&gt;&lt;a href="https://github.com/PrefectHQ/prefect"&gt;Prefect&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Prefect is a workflow orchestration tool empowering developers to build, observe, and react to data pipelines&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="wait-is-cloud-bad"&gt;&lt;a href="https://newsletter.goodtechthings.com/p/wait-is-cloud-bad"&gt;Wait, is cloud bad?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I regret to inform you that there is discourse&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="googlecloudplatformcloud-run-hello"&gt;&lt;a href="https://github.com/GoogleCloudPlatform/cloud-run-hello"&gt;GoogleCloudPlatform/cloud-run-hello&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Demo container for Google Cloud Run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="social-cooling"&gt;&lt;a href="https://www.socialcooling.com/"&gt;Social Cooling&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;LIKE OIL LEADS TO GLOBAL WARMING...&lt;/p&gt;
&lt;p&gt;DATA LEADS TO SOCIAL COOLING&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="quick-tip-getting-all-links-from-any-web-site-into-a-spreadsheet-using-browser-developer-tools"&gt;&lt;a href="https://christianheilmann.com/2023/08/24/quick-tip-getting-all-links-from-any-web-site-into-a-spreadsheet-using-browser-developer-tools/"&gt;Quick tip: Getting all links from any web site into a spreadsheet using browser developer tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Open Developer Tools (press F12)&lt;/p&gt;
&lt;p&gt;Go to the Console tool&lt;/p&gt;
&lt;p&gt;Enter (or copy and paste) the following: &lt;code&gt;console.table($$('a'),['innerHTML','href'])&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="killed-by-google"&gt;&lt;a href="https://killedbygoogle.com/"&gt;Killed by Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Google Graveyard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-senior-engineers-checklist"&gt;&lt;a href="https://littleblah.com/post/2019-09-01-senior-engineer-checklist/"&gt;A Senior Engineer's CheckList&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a simple checklist, and while it is useful to any software engineer, it is especially useful to senior engineers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-book-of-secret-knowledge"&gt;&lt;a href="https://github.com/trimstray/the-book-of-secret-knowledge"&gt;The Book of Secret Knowledge&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository is a collection of various materials and tools that I use every day in my work.
It contains a lot of useful information gathered in one piece.
It is an invaluable source of knowledge for me that I often look back on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="design-patterns-for-data-pipelines-lisa-dusseault-pybay-2023"&gt;&lt;a href="https://www.youtube.com/watch?v=opR44Tu9p1I"&gt;"Design Patterns for Data Pipelines" - Lisa Dusseault (PyBay 2023)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/opR44Tu9p1I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="top-6-most-popular-api-architecture-styles"&gt;&lt;a href="https://www.youtube.com/watch?v=4vLxWqE94l4"&gt;Top 6 Most Popular API Architecture Styles&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/4vLxWqE94l4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="tmux-has-forever-changed-the-way-i-write-code"&gt;&lt;a href="https://www.youtube.com/watch?v=DzNmUNvnB04"&gt;Tmux has forever changed the way I write code.&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/DzNmUNvnB04" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 31 Oct 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-10-31:/2023-october-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - September 2023</title><link>https://blog.tobked.dev/2023-september-links</link><description>&lt;h1 id="september-2023"&gt;September 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;This month, I had the pleasure of attending the incredible &lt;a href="https://cz.pycon.org/2023/"&gt;PyCon CZ&lt;/a&gt; conference in Prague.
The excitement began even before I arrived in Prague, as I had the chance to meet John and Judy from the USA during my train journey.
John, a retired programmer, shared stories of his work with natural language, SQL-Windows, and COBOL.
It felt like I was meeting a living legend!&lt;/p&gt;
&lt;p&gt;During the train ride, I also had the pleasure of getting to know Piotr, the organizer of &lt;a href="https://www.pykonik.org/"&gt;PyKonik&lt;/a&gt;.
The conference itself was a fantastic experience, with a multitude of great people and captivating presentations.&lt;/p&gt;
&lt;p&gt;One of the best moments of the conference for me was when I put myself on the list for the Lightning Talks.
This was a huge challenge for me as I am usually quite nervous when it comes to public speaking, but I was determined to push myself out of my comfort zone.
The title of my presentation was "&lt;strong&gt;ML (Fast)API below 100ms (on GCP)&lt;/strong&gt;".
The presentation, as well as all the resources related to it, can be found in &lt;a href="https://github.com/TobKed/fastapi_cloudrun_pubsub"&gt;my repository&lt;/a&gt;.
I have provided an end-to-end working example on Google Cloud that demonstrates how to defer load from FastAPI (served by &lt;a href="https://cloud.google.com/run"&gt;CloudRun&lt;/a&gt;) to a background worker (also on CloudRun) via a queueing system (&lt;a href="https://cloud.google.com/pubsub"&gt;PubSub&lt;/a&gt;).
After practicing my presentation numerous times in my hotel room, I finally stepped onto the stage and gave it my all.&lt;/p&gt;
&lt;p&gt;Overall, it was an incredible experience that allowed me to learn new skills, connect with amazing individuals and showcase my capabilities as a developer. I am grateful for these opportunities and look forward to what the future holds!&lt;/p&gt;
&lt;p&gt;&lt;img alt="PyCon CZ." src="https://blog.tobked.dev/images/posts/2023/2023_09_pyconcz.jpg"&gt;&lt;/p&gt;
&lt;p&gt;I also refreshed my &lt;a href="https://www.credential.net/profile/tobiaszkdzierski610060/wallet"&gt;Google Associate Cloud Engineer certificate&lt;/a&gt; and revisited the fundamentals.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Google Associate Cloud Engineer certficate" src="https://blog.tobked.dev/images/posts/2023/2023_09_gcp_ace.png"&gt;]&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="should-that-be-a-microservice-keep-these-six-factors-in-mind"&gt;&lt;a href="https://tanzu.vmware.com/content/blog/should-that-be-a-microservice-keep-these-six-factors-in-mind"&gt;Should That Be a Microservice? Keep These Six Factors in Mind&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The road to microservices is paved with good intentions.
But more than a few teams are jumping on the bandwagon without analyzing their needs first.
Microservices are powerful, and they should absolutely be in your toolbox! Just make sure you consider the tradeoffs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="shopify-10-tips-for-building-resilient-payment-systems"&gt;&lt;a href="https://shopify.engineering/building-resilient-payment-systems"&gt;Shopify: 10 Tips for Building Resilient Payment Systems&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s hard to learn something when you don’t know what you don’t know.
As I learned things over the years—sometimes the hard way—I eventually found myself passing on these lessons to others.
I distilled these topics into a presentation I gave to my team and boiled that down into this blog post&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-dont-need-uuid"&gt;&lt;a href="https://henvic.dev/posts/uuid/"&gt;You don't need UUID&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve experienced first-hand how using UUID hurts the usability of computer systems, and I want you to understand why you certainly don’t need it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tracing-structured-logging-but-better-in-every-way"&gt;&lt;a href="https://andydote.co.uk/2023/09/19/tracing-is-better/#evolving-logs"&gt;Tracing: structured logging, but better in every way&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I figured it was time to write down why I think logs are bad, why tracing should be used instead, and how we get from one to the other.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-10-types-of-authorization"&gt;&lt;a href="https://www.osohq.com/post/ten-types-of-authorization"&gt;The 10 Types of Authorization&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So, here we’ve outlined ten definitions to help engineers pattern match and advance the state of thinking on the authorization domain.
There are likely more patterns, but for now this is a start&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="understanding-networking-in-kubernetes"&gt;&lt;a href="https://www.learncloudnative.com/blog/2023-05-31-kubeproxy-iptables"&gt;Understanding networking in Kubernetes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we'll look into how networking works in Kubernetes and explain how the pods can communicate with each other and the outside world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="kurasinski-darmowy-kurs-tworzenia-grafik-ai-hello-midjourney"&gt;&lt;a href="https://blog.kurasinski.com/2023/06/darmowy_kurs_midjourney_grafika_ai/"&gt;Kurasiński - Darmowy kurs tworzenia grafik AI – Hello Midjourney!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Kurs jest przewidziany dla osób, które nie mają doświadczenia z AI, programami graficznymi i mają tzw „dwie lewe ręce” jeśli chodzi o kreacje i grafikę ;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="25-hard-hitting-lessons-from-17-years-in-cybersecurity"&gt;&lt;a href="https://www.returnonsecurity.com/p/25-cybersecurity-industry-truths"&gt;25 Hard-Hitting Lessons from 17 Years in Cybersecurity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Dive into the no-filter truths from a 17-year cybersecurity career.
These straight-shooting insights will help you navigate the intricacies and paradoxes of the cybersecurity industry.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="the-easy-way-to-concurrency-and-parallelism-with-python-stdlib"&gt;&lt;a href="https://www.bitecode.dev/p/the-easy-way-to-concurrency-and-parallelism"&gt;The easy way to concurrency and parallelism with Python stdlib &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Because life doesn't have to be hard all the time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="advanced-python-mastery"&gt;&lt;a href="https://github.com/dabeaz-course/python-mastery"&gt;Advanced Python Mastery&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An exercise-driven course on Advanced Python Programming that was battle-tested several hundred times on the corporate-training circuit for more than a decade.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="weekly-report-europython-2023-ukasz-langa"&gt;&lt;a href="https://lukasz.langa.pl/b2f7ec83-a65d-4ab8-aa03-0212a299d7fd/"&gt;Weekly Report, EuroPython 2023 - Łukasz Langa&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This conference was intense!
Countless positive interactions, deeply technical conversations, and the notoriously vegetable-free Czech food (+beer!) combined into a very positive experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="google-cloud-next-23developer-keynote"&gt;&lt;a href="https://www.youtube.com/watch?v=268jdNwH6AM"&gt;Google Cloud Next '23—Developer Keynote&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/268jdNwH6AM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 30 Sep 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-09-30:/2023-september-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - August 2023</title><link>https://blog.tobked.dev/2023-august-links</link><description>&lt;h1 id="august-2023"&gt;August 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;With the summer season in full force and plenty of outdoor activities to enjoy, there's also exciting news!
A new tutorial is coming soon that will teach you how to use FastAPI, CloudRun, and PubSub for message queueing.
This tutorial will guide you through the process of setting up your environment, creating API and worker services, and deploying them to CloudRun.
By the end of the tutorial, you'll have a working FastAPI application that can handle requests and push messages to a PubSub topic, along with a worker service that can process messages.
Stay tuned for more details!&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="a-case-against-syntax-highlighting"&gt;&lt;a href="https://www.linusakesson.net/programming/syntaxhighlighting/"&gt;A case against syntax highlighting&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I will argue that syntax highlighting, while aesthetically seductive, moves focus from content to form, and discourages those who look at the code from trying to understand it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="edsger-dijkstras-one-day-workweek"&gt;&lt;a href="https://calnewport.com/edsger-dijkstras-one-day-workweek/"&gt;Edsger Dijkstra’s One-Day Workweek&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;At this point, Dijkstra had become the opposite of busy.
He spent almost all of his time thinking and recording his ideas.
He only came to campus on Tuesdays.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="why-python-is-amazing"&gt;&lt;a href="https://josvisser.substack.com/p/why-python-is-amazing"&gt;Why Python is amazing...&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Great language that every software engineer should know…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="dependency-injection-the-best-pattern"&gt;&lt;a href="https://www.youtube.com/watch?v=J1f5b4vcxCQ"&gt;Dependency Injection, The Best Pattern&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/J1f5b4vcxCQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="how-programmers-flex-on-each-other"&gt;&lt;a href="https://www.youtube.com/watch?v=r6tH55syq0o"&gt;How programmers flex on each other &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/r6tH55syq0o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Thu, 31 Aug 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-08-31:/2023-august-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - July 2023</title><link>https://blog.tobked.dev/2023-july-links</link><description>&lt;h1 id="july-2023"&gt;July 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;Summer is in full swing, and I'm not doing much after work.
Not doing much on the computer, that is. I'm doing a lot of other things, like swimming, hiking, and spending time with friends and family.&lt;/p&gt;
&lt;p&gt;But even though I'm not spending a lot of time on the computer, I'm still learning new things.
In work, I've been learning a lot about Kubeflow Pipelines and how to use them to build ML pipelines.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.kubeflow.org/docs/started/introduction/"&gt;Kubeflow Pipelines&lt;/a&gt; are an open-source platform for building and managing ML pipelines.
It's a powerful tool that can help you automate your ML workflow and make it more reproducible.
I've been able to build a few pipelines using Kubeflow Pipelines, and I'm really excited about the possibilities.&lt;/p&gt;
&lt;p&gt;I run production pipelines on &lt;a href="https://cloud.google.com/?hl=en"&gt;Google Cloud&lt;/a&gt; in a service called &lt;a href="https://cloud.google.com/vertex-ai/docs/pipelines"&gt;Vertex Pipelines&lt;/a&gt;.
Vertex Pipelines are a managed service that makes it easy to run Kubeflow Pipelines on Google Cloud.&lt;/p&gt;
&lt;p&gt;I'm excited to continue learning about Kubeflow Pipelines and Vertex Pipelines.
I think these are great tools that can help ML engineers automate their workflows and make their work more reproducible.&lt;/p&gt;
&lt;p&gt;I'm looking forward to learning more about it, and I will share more about my experiences with these tools in future blog posts.&lt;/p&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="kraken-technologies-how-we-organise-our-very-large-python-monolith"&gt;&lt;a href="https://blog.europython.eu/kraken-technologies-how-we-organize-our-very-large-pythonmonolith/"&gt;Kraken Technologies: How we organise our very large Python monolith&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Layering is a well-known software architecture pattern in which components are organized, conceptually, into a stack.
A component is not allowed to depend on any components higher up the stack.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-views-the-right-way"&gt;&lt;a href="https://spookylukey.github.io/django-views-the-right-way/index.html"&gt;Django Views — The Right Way&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It is the result of mistakes made and lessons learned in a range of Django and Python projects over 15+ years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="automating-deployment-of-applications-using-kubernetes-python-sdk"&gt;&lt;a href="https://www.faizanbashir.me/automating-deployment-of-python-applications-kubernetes-sdk"&gt;Automating Deployment of Applications using Kubernetes Python SDK&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we’ll demonstrate how to use the Python Kubernetes SDK to automate the deployment of an Nginx application to a Kubernetes cluster.&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 31 Jul 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-07-31:/2023-july-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - June 2023</title><link>https://blog.tobked.dev/2023-june-links</link><description>&lt;h1 id="june-2023"&gt;June 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;Over the past month, I have been working on a highly scalable app on the Google Cloud Platform.
I used Cloud Run and Cloud SQL (PostgreSQL) to provision the application code and database, respectively.&lt;/p&gt;
&lt;p&gt;Cloud Run is a serverless compute platform that allows me to run my code without having to worry about managing servers.
Cloud SQL is a managed database service that provides a reliable and scalable database for my app.&lt;/p&gt;
&lt;p&gt;I also used PubSub messaging to decouple APIs that need to be very fast from more time-consuming processes.
PubSub is a messaging service that allows me to send and receive messages between different parts of my app.
This decoupling allows me to scale my app more easily, as I can add or remove background worker instances without affecting the performance of the APIs.&lt;/p&gt;
&lt;p&gt;Finally, I used a load balancer to expose my app to consumers.
A load balancer distributes traffic across multiple instances of my app, which helps to improve performance and reliability.
The load balancer also allows me to redirect country-specific load to the instances closest to the users, which improves the user experience.&lt;/p&gt;
&lt;p&gt;It is very rewarding when you see that an app scales well and handles traffic peaks without impacting latency.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="a-few-words-on-communication"&gt;&lt;a href="https://event-driven.io/en/a_few_words_on_communication/"&gt;A few words on communication&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s clear that even if we don’t want to talk to humans, we need to do it, which won’t change whether we like that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="slack-system-design"&gt;&lt;a href="https://systemdesign.one/slack-architecture/"&gt;Slack System Design&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The key takeaway from building Slack is that optimality is contingent and should be adapted with growth.
It is crucial to identify the end-to-end part of the problem to build a distributed system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="unleashing-engineering-excellence-proven-methods-to-tackle-tech-debt-and-supercharge-your-engineering-team"&gt;&lt;a href="https://betterprogramming.pub/unleashing-engineering-excellence-proven-methods-to-tackle-tech-debt-and-supercharge-your-team-21463cdca19f"&gt;Unleashing Engineering Excellence: Proven Methods to Tackle Tech Debt and Supercharge Your Engineering Team&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A head of engineering’s guide to conquering tech debt and empowering engineering excellence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="devops-is-bullshit"&gt;&lt;a href="https://blog.massdriver.cloud/posts/devops-is-bullshit/"&gt;DevOps is Bullshit&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Critique of How We've Fooled Ourselves for Years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-blog-the-modernization-imperative-shifting-left-is-for-suckers-shift-down-instead"&gt;&lt;a href="https://cloud.google.com/blog/products/application-development/richard-seroter-on-shifting-down-vs-shifting-left"&gt;Google Cloud blog: The Modernization Imperative: Shifting left is for suckers. Shift down instead&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As an industry, we need to help out. First, instead of telling devs (and their managers!) to shift everything left, we need to encourage them to “shift down” by taking full advantage of the technology available to them, and push more workloads down onto the platforms they’re already using.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="harvard-business-review-remote-work-should-be-mostly-asynchronous"&gt;&lt;a href="https://hbr.org/2021/12/remote-work-should-be-mostly-asynchronous"&gt;Harvard Business Review: Remote Work Should Be (Mostly) Asynchronous&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A move to a better way of working remotely is desperately needed.
If your digital transformation is going to be successful, you need to give your employees the right tools and systems to work in a digital, distributed, virtual environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-quantified-self"&gt;&lt;a href="https://github.com/woop/awesome-quantified-self"&gt;Awesome Quantified Self&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Quantified_Self"&gt;Quantified Self&lt;/a&gt; is a movement to incorporate technology into data acquisition on aspects of a person's daily life in terms of inputs (e.g. food consumed, quality of surrounding air), states (e.g. mood, arousal, blood oxygen levels), and performance (mental and physical).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="short-course-chatgpt-prompt-engineering-for-developers"&gt;&lt;a href="https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/"&gt;Short Course ChatGPT Prompt Engineering for Developers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This short course taught by Isa Fulford (OpenAI) and Andrew Ng (DeepLearning.AI) will describe how LLMs work, provide best practices for prompt engineering, and show how LLM APIs can be used in applications for a variety of tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gpt-engineer"&gt;&lt;a href="https://github.com/AntonOsika/gpt-engineer"&gt;GPT Engineer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Specify what you want it to build, the AI asks for clarification, and then builds it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="the-many-problems-with-celery"&gt;&lt;a href="https://steve.dignam.xyz/2023/05/20/many-problems-with-celery/"&gt;The Many Problems with Celery&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Celery is the de facto solution for background workers and cron jobs in the Python ecosystem, but it’s full of footguns.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="makefile-tricks-for-python-projects"&gt;&lt;a href="https://ricardoanderegg.com/posts/makefile-python-project-tricks/"&gt;Makefile tricks for Python projects&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I like using Makefiles.
They work great both as simple task runners as well as build systems for medium-size projects.
This is my starter template for Python projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-right-way-to-run-shell-commands-from-python"&gt;&lt;a href="https://martinheinz.dev/blog/98"&gt;The Right Way to Run Shell Commands From Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article we will look at all the options you have in Python for running other processes - the bad; the good; and most importantly, the right way to do it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="interacting-with-kubernetes-deployments-and-services-using-python-sdk"&gt;&lt;a href="https://www.faizanbashir.me/interacting-with-kubernetes-deployments-and-services-using-python-sdk"&gt;Interacting with Kubernetes Deployments and Services using Python SDK&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article will demonstrate how to interact with Kubernetes Deployments and Services using Python and the official Kubernetes Python client.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asyncio-why-i-hate-it"&gt;&lt;a href="https://charlesleifer.com/blog/asyncio/"&gt;AsyncIO: Why I Hate It&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I hope it will encourage some readers (especially in the web development crowd) to question whether asyncio is appropriate for their project, and if so, look into alternatives like &lt;a href="http://www.gevent.org/"&gt;gevent&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pro-tip-pytest-fixtures-are-magic"&gt;&lt;a href="https://www.revsys.com/tidbits/pytest-fixtures-are-magic/"&gt; Pro-Tip – pytest fixtures are magic!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The more of our codebase that is covered by meaningful tests the faster we can develop new features and refactor cruft.
It is not just about bug-free code.
It's about the speed at which you can develop good code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="fastapi-best-practices"&gt;&lt;a href="https://github.com/zhanymkanov/fastapi-best-practices"&gt;FastAPI Best Practices&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Opinionated list of best practices and conventions we used at our startup.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="json-to-pydantic-converter"&gt;&lt;a href="https://jsontopydantic.com/"&gt;JSON to Pydantic Converter&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;To generate a Pydantic model from a JSON object, enter it into the JSON editor and watch a Pydantic model automagically appear in the Pydantic editor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="go"&gt;Go&lt;/h2&gt;
&lt;h3 id="google-cloud-platform-go-samples"&gt;&lt;a href="https://github.com/GoogleCloudPlatform/golang-samples"&gt;Google Cloud Platform Go Samples&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository holds sample code written in Go that demonstrates the Google Cloud Platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="harisekhonsql-scripts"&gt;&lt;a href="git.io/SQL"&gt;HariSekhon/SQL-scripts&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;100+ SQL Scripts - PostgreSQL, MySQL, Google BigQuery, MariaDB, AWS Athena. DevOps / DBA / Analytics / performance engineering. Google BigQuery ML machine learning classification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="harisekhondevops-bash-tools"&gt;&lt;a href="https://github.com/HariSekhon/DevOps-Bash-tools"&gt;HariSekhon/DevOps-Bash-tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;1000+ DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-c4-model-for-visualising-software-architecture"&gt;&lt;a href="https://c4model.com/"&gt;The C4 model for visualising software architecture&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Context, Containers, Components, and Code&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="gitops"&gt;&lt;a href="https://www.gitops.tech/"&gt;GitOps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This site aggregates the essence of GitOps to help clear up the confusion about the topic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="argo-cd-declarative-continuous-delivery-for-kubernetes"&gt;&lt;a href="https://github.com/argoproj/argo-cd"&gt;Argo CD - Declarative Continuous Delivery for Kubernetes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sealed-secrets-for-kubernetes"&gt;&lt;a href="https://github.com/bitnami-labs/sealed-secrets"&gt;"Sealed Secrets" for Kubernetes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: "I can manage all my K8s config in git, except Secrets."&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Encrypt your Secret into a SealedSecret, which is safe to store - even inside a public repository. The SealedSecret can be decrypted only by the controller running in the target cluster and nobody else (not even the original author) is able to obtain the original Secret from the SealedSecret.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="k3s"&gt;&lt;a href="https://github.com/k3s-io/k3s/"&gt;k3s&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lightweight Kubernetes. Production ready, easy to install, half the memory, all in a binary less than 100 MB.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pydevopsgcloud-cheat-sheetmd"&gt;&lt;a href="https://gist.github.com/pydevops/cffbd3c694d599c6ca18342d3625af97"&gt;pydevops/gcloud-cheat-sheet.md&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;gcp gcloud cheat sheet&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="torrent-parts"&gt;&lt;a href="https://github.com/leoherzog/TorrentParts"&gt;Torrent 🧲 Parts&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A website to inspect and edit what's in your Torrent file or Magnet link.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="the-privacy-security-osint-show-episode-299-self-hosted-part-i"&gt;&lt;a href="https://inteltechniques.com/blog/2023/06/02/the-privacy-security-osint-show-episode-299/"&gt;The Privacy, Security, &amp;amp; OSINT Show – Episode 299 - Self-Hosted Part I&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This week I begin the conversation about self-hosting everything, plus offer the latest privacy news.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-privacy-security-osint-show-episode-300-self-hosted-2-offline-knowledge"&gt;&lt;a href="https://inteltechniques.com/blog/2023/06/16/the-privacy-security-osint-show-episode-300/"&gt;The Privacy, Security, &amp;amp; OSINT Show – Episode 300 - Self-Hosted 2: Offline Knowledge&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This week I continue the self-hosted series with several easy options from which anyone can benefit. Let's archive some powerful data for offline use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="pycon-us-2023"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL2Uw4_HvXqvY2zhJ9AMUa_Z6dtMGF3gtb"&gt;PyCon US 2023&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PyCon US 2023 YouTube Playlist&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="wykorzystanie-chmur-publicznych-w-instytucji-finansowej-devagacje"&gt;&lt;a href="https://www.youtube.com/watch?v=u8uJzGhPKIg"&gt;Wykorzystanie Chmur Publicznych w instytucji finansowej | Devagacje&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/u8uJzGhPKIg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="single-node-kubernetes-clusters-using-k3s-with-benefits-of-gitops-lasse-hjgaard-goto-2021"&gt;&lt;a href="https://www.youtube.com/watch?v=ePyFJ7Hd57Q"&gt;Single-node Kubernetes Clusters Using K3s with Benefits of GitOps • Lasse Højgaard • GOTO 2021&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ePyFJ7Hd57Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="rockstar-developers-are-the-worst-developers"&gt;&lt;a href="https://www.youtube.com/watch?v=mVY2rFninp8"&gt;Rockstar Developers Are THE WORST Developers&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/mVY2rFninp8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="deviant-elevator-hacking-from-the-pit-to-the-penthouse"&gt;&lt;a href="https://www.youtube.com/watch?v=ZUvGfuLlZus"&gt;Deviant: Elevator Hacking: From the Pit to the Penthouse&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ZUvGfuLlZus" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="top-5-techniques-for-building-the-worst-microservice-system-ever-william-brander-ndc-london-2023"&gt;&lt;a href="https://www.youtube.com/watch?v=88_LUw1Wwe4"&gt;Top 5 techniques for building the worst microservice system ever - William Brander - NDC London 2023&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/88_LUw1Wwe4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 30 Jun 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-06-30:/2023-june-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - May 2023</title><link>https://blog.tobked.dev/2023-may-links</link><description>&lt;h1 id="may-2023"&gt;May 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;Last month was intensive with Google Cloud-related stuff.
I heavily used Cloud Run and was able to create a pretty robust and scalable system, which also includes PubSub and Cloud SQL.
But the most exciting thing for me was learning &lt;a href="https://fluxcd.io/flux/"&gt;Flux&lt;/a&gt;, which is a GitOps tool that automatically keeps the Kubernetes cluster in sync with the source of configuration (git, of course).
&lt;a href="https://fluxcd.io/flux/"&gt;Flux&lt;/a&gt; can not only scan for changes in configuration files but also periodically check if a newer Docker image has become available and update the respective configuration files and cluster accordingly.
It is an amazing tool, and it was a pleasure to learn it.
I am extremely excited to use it in my pet projects.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="cli-tricks-every-developer-should-know"&gt;&lt;a href="https://github.blog/2023-04-26-cli-tricks-every-developer-should-know/"&gt;CLI tricks every developer should know&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn some tips, tricks, and tools for mastering the command line from GitHub’s own developers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-levelsfyi-scaled-to-millions-of-users-with-google-sheets-as-a-backend"&gt;&lt;a href="https://www.levels.fyi/blog/scaling-to-millions-with-google-sheets.html"&gt;How Levels.fyi scaled to millions of users with Google Sheets as a backend&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Our philosophy to scaling is simple, avoid premature optimization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-answer-tell-me-about-a-time-you-failed-in-a-job-interview"&gt;&lt;a href="https://hbr.org/2023/01/how-to-answer-tell-me-about-a-time-you-failed-in-a-job-interview"&gt;How to Answer “Tell Me About a Time You Failed” in a Job Interview &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Stories of failure can reveal important insights about an applicant’s maturity, resilience, temperament,
openness to learning, and ability to receive critical feedback — qualities that won’t appear on a resume or cover letter and probably won’t be brought up by the applicant unsolicited.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="this-blog-is-hosted-on-my-android-phone"&gt;&lt;a href="https://androidblog.a.pinggy.io/"&gt;This blog is hosted on my Android phone&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This post describes how I turned my Android device into a web server which can be accessed from a public URL, and how you can do it too.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-introducing-implement-dns-in-a-weekend"&gt;&lt;a href="https://jvns.ca/blog/2023/05/12/introducing-implement-dns-in-a-weekend/"&gt;Julia Evans: Introducing "Implement DNS in a Weekend"&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello! I’m excited to announce a project I’ve been working on for a long time: a free guide to implementing your own DNS resolver in a weekend.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="julia-evans-learning-dns-in-10-years"&gt;&lt;a href="https://jvns.ca/blog/2023/05/08/new-talk-learning-dns-in-10-years/"&gt;Julia Evans: Learning DNS in 10 years&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here’s a keynote I gave at RubyConf Mini last year: Learning DNS in 10 years. It’s about strategies I use to learn hard things. I just noticed that they’d released the video the other day, so I’m just posting it now even though I gave the talk 6 months ag&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="why-engineers-need-to-be-bored"&gt;&lt;a href="https://onengineering.substack.com/p/why-engineers-need-to-be-bored"&gt;Why engineers need to be bored.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An analysis on boredom in engineering productivity and how it can lead to deeper innovation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="complete-guide-to-setup-autogpt-revolutionize-your-task-automation-with-gpt-4"&gt;&lt;a href="https://scribe.rip/complete-guide-to-setup-autogpt-revolutionize-your-task-automation-with-gpt-4-39eda5a85821"&gt;Complete Guide To Setup AutoGPT &amp;amp; Revolutionize Your Task Automation with GPT-4&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Auto-GPT is an experimental open-source project that allows you to define a specific role (e.g., “book market analyst”) and a bunch of goals (e.g., “research the most successful sci-fi novels of 2022”, “summarize them”, “save the summary to a file," etc.) and let GPT-4 automatically create and perform all the necessary tasks that are needed to achieve your goals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="miguel-grinberg-whats-new-in-sqlalchemy-20"&gt;&lt;a href="https://blog.miguelgrinberg.com/post/what-s-new-in-sqlalchemy-2-0"&gt;Miguel Grinberg: What's New in SQLAlchemy 2.0?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As with previous software reviews, this is going to be an opinionated overview.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="parallel-nested-for-loops-in-python"&gt;&lt;a href="https://superfastpython.com/parallel-nested-for-loops-in-python/#Single_Process_Pool_and_Shared_Queue_unbounded"&gt;Parallel Nested For-Loops in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you will discover how to change a nested for-loop to be concurrent or parallel in Python with a suite of worked examples.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="limiting-concurrency-in-python-asyncio-the-story-of-async-imap_unordered"&gt;&lt;a href="https://death.andgravity.com/limit-concurrency"&gt;Limiting concurrency in Python asyncio: the story of async imap_unordered()&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we'll look at a few ways of limiting concurrency in asycio, and find out which one is best.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="trusted-publishing-how-to-publish-to-pypi-with-github-actions"&gt;&lt;a href="https://pgjones.dev/blog/trusted-plublishing-2023/"&gt;Trusted Publishing; how to publish to PyPI with Github Actions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PyPI recently introduced Trusted Publishing via a Github action. Allowing for a relatively easy and secure method to publish to PyPI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-write-tests-that-need-a-lot-of-data"&gt;&lt;a href="https://gogognome.nl/how-to-write-tests-that-need-a-lot-of-data.html"&gt;How to write tests that need a lot of data?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A couple of techniques tried out by my teammates and I helped us to write clean tests that used a lot of data. In this post I want to share these techniques with you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-docker"&gt;&lt;a href="https://github.com/amerkurev/django-docker-template"&gt;Django + Docker = ❤️&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This simple Django project is an excellent template for your future projects.
It includes everything you need to quickly set up a quality technology stack and start developing your web application's business logic, skipping all the complex deployment issues at an early stage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="atbswp"&gt;&lt;a href="https://github.com/rmpr/atbswp"&gt;Atbswp&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Literally Automate the boring stuff with Python, allows the user to record his mouse and keyboard actions and reproduce them identically as many times as he wants.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="devops-with-docker"&gt;&lt;a href="https://devopswithdocker.com/"&gt;DevOps with Docker&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This course provides an introduction to container technologies, with a particular focus on Docker and container orchestration using Docker Compose.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-terraform"&gt;&lt;a href="https://github.com/shuaibiyy/awesome-terraform"&gt;Awesome Terraform&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Curated list of resources on HashiCorp's Terraform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="frogmouth"&gt;&lt;a href="https://github.com/Textualize/frogmouth"&gt;Frogmouth&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Markdown browser for your terminal&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="flux"&gt;&lt;a href="https://fluxcd.io/flux/"&gt;Flux&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Flux is a tool for keeping Kubernetes clusters in sync with sources of configuration (like Git repositories), and automating updates to configuration when there is new code to deploy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="how-i-design-12-factor-cloud-native-app-on-gcp"&gt;&lt;a href="https://medium.com/google-cloud/how-i-design-12-factor-cloud-native-app-on-gcp-e0af4fccb1b0"&gt;How I design 12-factor cloud native app on GCP.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The 12-factor methodology is programming language agnostic and works with any combination of backing services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="envoy"&gt;&lt;a href="https://github.com/envoyproxy/envoy"&gt;Envoy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Envoy is an open source edge and service proxy, designed for cloud-native applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="kubernetes-network-policy-recipes"&gt;&lt;a href="https://github.com/ahmetb/kubernetes-network-policy-recipes"&gt;Kubernetes Network Policy Recipes&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository contains various use cases of Kubernetes Network Policies and sample YAML files to leverage in your setup.
If you ever wondered how to drop/restrict traffic to applications running on Kubernetes, read on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="good-tech-things"&gt;&lt;a href="https://www.goodtechthings.com/"&gt;Good Tech Things &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Good Tech Things are comics, videos, flowcharts, and infographics handcrafted by Forrest Brazeal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="work-chronicles"&gt;&lt;a href="https://workchronicles.com/comics/"&gt;work chronicles&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Unwind from your busy schedule with a smile.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="keynote-oh-the-humanity-kate-gregory-c-on-sea-2019"&gt;&lt;a href="https://www.youtube.com/watch?v=SzoquBerhUc"&gt;KEYNOTE: Oh The Humanity! - Kate Gregory [C++ on Sea 2019]&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/SzoquBerhUc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="advanced-git-magic-pauline-vos-full-stack-europe-2022"&gt;&lt;a href="https://www.youtube.com/watch?v=9TGdH7CrNyE"&gt;Advanced Git Magic - Pauline Vos - Full Stack Europe 2022&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/9TGdH7CrNyE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="anais-urlichs-full-gitops-tutorial-getting-started-with-flux-cd"&gt;&lt;a href="https://www.youtube.com/watch?v=5u45lXmhgxA"&gt;Anais Urlichs: Full GitOps Tutorial: Getting started with Flux CD &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/5u45lXmhgxA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 31 May 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-05-31:/2023-may-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Google Cloud Developer Day Warsaw 2023</title><link>https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023</link><description>&lt;h1 id="google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/h1&gt;
&lt;p&gt;I attended Google Cloud Developer Day Warsaw 2023 on April 27th, 2023. It was a free event organized by Google Cloud at their &lt;a href="https://www.campus.co/warsaw/"&gt;Warsaw Campus&lt;/a&gt;.
It was a full-day event with 12 presentations.
I attended all of them and found all of them to be very interesting.
Especially mind-blowing was the showcase of AI capabilities.
I chose just a few of them to write down my notes.
I picked them since they are related to my current work and I found them interesting.&lt;/p&gt;
&lt;div class="toc"&gt;&lt;span class="toctitle"&gt;Table of contents:&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#service-to-service-communication-with-serverless-christoph-grotz"&gt;Service to Service Communication with Serverless (Christoph Grotz)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#code-centric-iac-with-pulumi-artur-kulinski"&gt;Code-centric IaC with Pulumi (Artur Kuliński)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#secrets-and-serverless-anna-muscarella"&gt;Secrets and Serverless (Anna Muscarella)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#from-prototype-to-production-going-faster-on-cloud-run-roman-seibel"&gt;From Prototype to Production: Going Faster on Cloud Run (Roman Seibel)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#extras"&gt;Extras&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#gcurl"&gt;gcurl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#music-by-rytmik"&gt;music by Rytmik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#links"&gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#summary"&gt;Summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id="service-to-service-communication-with-serverless-christoph-grotz"&gt;Service to Service Communication with Serverless (&lt;a href="https://christoph-grotz.medium.com/"&gt;Christoph Grotz&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Christoph presented how to use Envoy to communicate between two instances of Cloud Run with minimal overhead of authentication and authorization.
No JWT, no headers, no tokens. Just plain HTTP requests.
In a very simple example, the only change between the local setup and cloud environments is the URL of the service.
Moreover, the URL for the cloud environment is the same for different environments like staging, testing, production.
Correct routing is done by the service mesh.&lt;/p&gt;
&lt;h3 id="code-centric-iac-with-pulumi-artur-kulinski"&gt;Code-centric IaC with Pulumi (Artur Kuliński)&lt;/h3&gt;
&lt;p&gt;Artur presented Pulumi - a tool for Infrastructure as Code.
I am a huge fan of IaC and have been using Terraform for a while now.
I had heard about Pulumi before, but I never had a chance to try it.
It is especially interesting since Pulumi uses "regular" programming languages like Python, which seems more natural to me than HCL.
Now, I am definitely going to give it a try after what I saw.&lt;/p&gt;
&lt;h3 id="secrets-and-serverless-anna-muscarella"&gt;Secrets and Serverless (Anna Muscarella)&lt;/h3&gt;
&lt;p&gt;Anna gave a great presentation about how to manage secrets in a serverless environment.
She presented different approaches and their pros and cons.
In short, there are three approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;environment variables&lt;/li&gt;
&lt;li&gt;volume mounts&lt;/li&gt;
&lt;li&gt;secret manager&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While environment variables are the easiest to use, they are not the most secure for obvious reasons I will not mention here.
Volume mounts are also not the best practice and sometimes cumbersome to use or even not supported by some services.
The best way to manage secrets is to use a secret manager within your app so secrets are not exposed to the environment.&lt;/p&gt;
&lt;p&gt;I used this approach in my &lt;a href="https://github.com/TobKed/django_on_gcp"&gt;repository&lt;/a&gt; and &lt;a href="https://blog.tobked.dev/django_on_gcp"&gt;blog post&lt;/a&gt; where I showed how to run &lt;a href="https://blog.tobked.dev/django_on_gcp"&gt;Django application on Google Cloud Platform&lt;/a&gt;.
As you can see below, secrets are pulled from &lt;a href="https://cloud.google.com/secret-manager"&gt;Google Secret Manager&lt;/a&gt; if the app is running on Google Cloud Platform.
In my case, they are pulled only during app initialization, so to use the latest secret, you need to restart the app.
For the sake of simplicity, the secrets with the &lt;code&gt;latest&lt;/code&gt; tag are used. However, it may not be the best fit for the production environment where we want to pin the version of the secret.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;io&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pathlib&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;environ&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;google.cloud&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;secretmanager&lt;/span&gt;

&lt;span class="n"&gt;BASE_DIR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vm"&gt;__file__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parent&lt;/span&gt;


&lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Env&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DEBUG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;env_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BASE_DIR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;.env&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env_file&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_env&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env_file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Pull secrets from Google Secret Manager&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;GOOGLE_CLOUD_PROJECT&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;GOOGLE_CLOUD_PROJECT&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;settings_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;SETTINGS_NAME&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;django_settings&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;secretmanager&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SecretManagerServiceClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;projects/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/secrets/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;settings_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/versions/latest&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;access_secret_version&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_env&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;io&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StringIO&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;No local .env or GOOGLE_CLOUD_PROJECT detected. No secrets found.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is the link to the code which I used in my example: &lt;a href="https://github.com/TobKed/django_on_gcp/blob/4e25321d856f09a15a58f54cc273abf1e879126d/mysite/settings.py#L14"&gt;github.com/TobKed/django_on_gcp/blob/master/mysite/settings.py#L14&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="from-prototype-to-production-going-faster-on-cloud-run-roman-seibel"&gt;From Prototype to Production: Going Faster on Cloud Run (Roman Seibel)&lt;/h3&gt;
&lt;p&gt;Roman made promoting the app between different environments as easy as a piece of cake.
Tt was astonishing.
Now, I am an even bigger fan of Cloud Run.&lt;/p&gt;
&lt;h2 id="extras"&gt;Extras&lt;/h2&gt;
&lt;h3 id="gcurl"&gt;&lt;code&gt;gcurl&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;gcurl&lt;/code&gt; is a nice alias for &lt;code&gt;curl&lt;/code&gt; that allows for quick hitting of Google Cloud endpoints with authorization using your gcloud &lt;a href="https://cloud.google.com/sdk/gcloud/reference/auth/print-identity-token"&gt;identity token&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;gcurl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;curl -H &amp;quot;Authorization: Bearer $(gcloud auth print-identity-token)&amp;quot; -H &amp;quot;Content-Type: application/json&amp;quot;&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="music-by-rytmik"&gt;&lt;a href="https://soundcloud.com/rytmikmusic"&gt;music by Rytmik&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;At the lounge area, there was a DJ named Rytmik playing some delightful house music. You can check out his music on &lt;a href="https://soundcloud.com/rytmikmusic"&gt;soundcloud.com/rytmikmusic&lt;/a&gt; and &lt;a href="https://www.mixcloud.com/Rytmik/"&gt;mixcloud.com/Rytmik&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Rytmik" src="https://blog.tobked.dev/images/posts/2023/2023_05_gcp_dev_day/2023_05_gcp_dev_day_rytmik.jpg"&gt;&lt;/p&gt;
&lt;h3 id="links"&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://inthecloud.withgoogle.com/cloud-developer-days-warsaw-23/register.html#agenda"&gt;Cloud Developer Day - Warsaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.campus.co/warsaw/"&gt;Google for Startups - Warsaw Campus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://serviceweaver.dev/"&gt;Service Weaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ServiceWeaver/weaver"&gt;github.com/ServiceWeaver/weaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/gke-policy-automation"&gt;GKE Policy Automation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/auditing-gke-clusters-across-entire-organization"&gt;Auditing GKE Clusters across the entire organization - blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/liquibase/liquibase-bigquery"&gt;github.com/liquibase/liquibase-bigquery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://seroter.com/2022/11/17/continuously-deploy-your-apps-and-data-lets-try-to-use-liquibase-for-bigquery-workloads/"&gt;Continuously deploy your apps AND data? Let’s try to use Liquibase for BigQuery changes - blog post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GoogleCloudPlatform/cloud-run-mesh"&gt;github.com/GoogleCloudPlatform/cloud-run-mesh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.envoyproxy.io/"&gt;Envoy - an open source edge and service proxy, designed for cloud-native applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;It was a great event, and I am looking forward to the next one. I learned a lot of new things and met interesting people. Great job Google Cloud team!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 03 May 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-05-03:/google-cloud-developer-day-warsaw-2023</guid><category>cloud</category><category>cloud</category><category>developer</category><category>google</category><category>gcp</category><category>2023</category></item><item><title>Month summary - April 2023</title><link>https://blog.tobked.dev/2023-april-links</link><description>&lt;h1 id="april-2023"&gt;April 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;h4 id="git-rebase-interactive-and-fixups"&gt;&lt;code&gt;git rebase --interactive&lt;/code&gt; and &lt;code&gt;fixups&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;I have seen how different people use Git, and each person has their own way of using it.
However, I did not see many people using git &lt;code&gt;rebase interactive&lt;/code&gt; and &lt;code&gt;fixups&lt;/code&gt;.
For a long time, I have been thinking about presenting how I use &lt;code&gt;git rebase&lt;/code&gt;, &lt;code&gt;git rebase interactive&lt;/code&gt;, and my beloved &lt;code&gt;fixups&lt;/code&gt;.
A long time ago, I wrote a short blog post about it (&lt;a href="https://blog.tobked.dev/git-history"&gt;Changing history in Git&lt;/a&gt;), but I felt it was not enough.
I wanted to show it in action and explain why I do it.
Because of that, I decided to prepare a presentation about it.
I presented it during one of the internal meetings at work, and I think it went well.
I am planning to present it during one of the meetups in the future.&lt;/p&gt;
&lt;p&gt;I was a little bit frustrated with Google Slides and how it handles code snippets.
I decided to keep the text of the presentation in the repository, so it is easier to track changes, publish and share it.
Inspired by &lt;a href="https://www.youtube.com/playlist?list=PLRVdut2KPAguz3xcd22i_o_onnmDKj3MA"&gt;Raymond Hettinger&lt;/a&gt; I decided to use the documentation generator &lt;a href="https://www.mkdocs.org/"&gt;MkDocs&lt;/a&gt; and &lt;a href="https://squidfunk.github.io/mkdocs-material/"&gt;Material for MkDocs&lt;/a&gt;.
The presentation is available as a website under my domain: &lt;a href="https://tobked.dev/git_rebase_interactive"&gt;tobked.dev/git_rebase_interactive&lt;/a&gt;.
Its source is on my Github: &lt;a href="https://github.com/TobKed/git_rebase_interactive"&gt;github.com/TobKed/git_rebase_interactive&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="google-cloud-developer-day-warsaw-2023"&gt;&lt;a href="https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;I attended Google Cloud Developer Day Warsaw 2023 on April 27th, 2023. It was a free event organized by Google Cloud at their &lt;a href="https://www.campus.co/warsaw/"&gt;Warsaw Campus&lt;/a&gt;.
I wrote more about it in a separate blog post: &lt;a href="https://blog.tobked.dev/google-cloud-developer-day-warsaw-2023"&gt;Google Cloud Developer Day Warsaw 2023&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-to-make-a-great-conference-talk"&gt;&lt;a href="https://switowski.com/blog/how-to-make-a-great-conference-talk/"&gt;How to Make a Great Conference Talk&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I have decided to write this guide to assist my readers who aspire to be conference speakers.
I hope it will help you prepare for your first presentation or improve your talks further.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="can-injection-keyless-car-theft"&gt;&lt;a href="https://kentindell.github.io/2023/04/03/can-injection/"&gt;CAN Injection: keyless car theft&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a detective story about how a car was stolen - and how it uncovered an epidemic of high-tech car theft.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="programista-pytania-rekrutacyjne-bazy-danych"&gt;&lt;a href="https://devszczepaniak.pl/programista-pytania-rekrutacyjne-bazy-danych/"&gt;Programista – pytania rekrutacyjne – bazy danych&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tematem tego wpisu są bazy danych.
Z uwagi na ich popularność, głównym tematem wpisu będą relacyjne bazy danych i zagadnienia z nimi związane.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="saving-energy-home-server-that-automatically-suspends-to-ram-and-wakes-up-again-which-is-used-for-plex-media-streaming-and-time-machine-backups"&gt;&lt;a href="https://maximiliangolla.com/blog/2022-10-wol-plex-server/"&gt;Saving Energy: Home Server That Automatically Suspends to RAM and Wakes Up Again which is used for Plex media streaming and Time Machine backups.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It does not sound like much, but running a 24/7 home server that draws 43 watts in idle is quiet expensive, considering the latest electricity prices of about 49 euro cent/kWh here in Germany (as of October, 2022).
A simple solution to this problem is a script that automatically suspends the server, when it is not used, and another script to wake the server up again, in case there is work to do.
To my surprise I could not find any out-of-the-box solution, so I thought, it is a worthwhile effort to write about it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="69-ways-to-f-up-your-deploy"&gt;&lt;a href="https://kellyshortridge.com/blog/posts/69-ways-to-mess-up-your-deploy/"&gt;69 Ways to F*** Up Your Deploy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;We hear about all the ways to make your deploys so glorious that your pipelines poop rainbows and services saunter off into the sunset together.
But what we don’t see as much is folklore of how to make your deploys suffer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-failed-3-job-applications-heres-what-i-learned"&gt;&lt;a href="https://blog.alexewerlof.com/p/3-job-applications"&gt;I failed 3 job applications, here's what I learned&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Tips and mistakes to avoid when applying software engineering jobs at top tech.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tiktok-is-a-time-bomb"&gt;&lt;a href="https://gurwinder.substack.com/p/tiktok-may-be-a-chinese-bio-weapon"&gt;TikTok is a Time Bomb&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The ultimate weapon of mass distraction&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bicycle-by-bartosz-ciechanowski"&gt;&lt;a href="https://ciechanow.ski/bicycle/"&gt;Bicycle by Bartosz Ciechanowski&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, I’ll focus on the delicate interplay between many of the forces that act on a bicycle and its parts when riding.
We’ll witness how forces applied through tires make a bicycle accelerate, brake, and turn, and we’ll also investigate how the wheels and the frame handle those different forces without breaking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="zmiana-pracy-w-it-kiedy-warto-sie-na-to-zdecydowac"&gt;&lt;a href="https://programistanaswoim.pl/zmiana-pracy-w-it-kiedy-warto-sie-na-to-zdecydowac/"&gt;Zmiana pracy w IT – kiedy warto się na to zdecydować?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Czy to czas, żeby zmienić coś w swoim życiu, czy lepiej zostać w obecnej firmie i poczekać na bardziej sprzyjający moment?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="the-age-of-agile-must-end"&gt;&lt;a href="https://uxdesign.cc/the-age-of-agile-must-end-bc89c0f084b7"&gt;The age of Agile must end&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;30 years ago the technology industry attempted to import Lean practices — it failed.
Instead of “continuous improvement,” progress halted.
Agile is incompatible with UX research, design, and scalable development.
It always will be. It’s time to create a new operational standard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;h3 id="march-20-chatgpt-outage-heres-what-happened"&gt;&lt;a href="https://openai.com/blog/march-20-chatgpt-outage"&gt;March 20 ChatGPT outage: Here’s what happened&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An update on our findings, the actions we’ve taken, and technical details of the bug.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="librarian-aicom"&gt;&lt;a href="https://www.librarian-ai.com/"&gt;librarian-ai.com/&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Discover your next favorite book effortlessly with the help of AI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-chatgpt-prompts"&gt;&lt;a href="https://github.com/f/awesome-chatgpt-prompts"&gt;🧠 Awesome ChatGPT Prompts&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a collection of prompt examples to be used with the ChatGPT model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ai-incident-database"&gt;&lt;a href="https://incidentdatabase.ai/"&gt;AI Incident Database&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The AI Incident Database is dedicated to indexing the collective history of harms or near harms realized in the real world by the deployment of artificial intelligence systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ted-greg-brockman-the-inside-story-of-chatgpts-astonishing-potential"&gt;&lt;a href="https://www.ted.com/talks/greg_brockman_the_inside_story_of_chatgpt_s_astonishing_potential/"&gt;TED: Greg Brockman - The inside story of ChatGPT's astonishing potential&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In a talk from the cutting edge of technology, OpenAI cofounder Greg Brockman explores the underlying design principles of ChatGPT and demos some mind-blowing, unreleased plug-ins for the chatbot that sent shockwaves across the world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="regexai"&gt;&lt;a href="https://regex.ai/"&gt;regex.ai&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AI-Powered Regular Expression Solver&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;h3 id="sekurat-jak-narzedzia-ai-zmieniaja-osint-czwartki-z-osintem"&gt;&lt;a href="https://sekurak.pl/jak-narzedzia-ai-zmieniaja-osint-czwartki-z-osintem/"&gt;Sekurat: Jak narzędzia AI zmieniają OSINT [Czwartki z OSINTem]&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Powstaje bowiem pytanie, czy ChatGPT, a także narzędzia generujące bardzo realistyczne obrazy, jak Midjourney czy DALL-E, zmienią sposób, w jaki prowadzone są działania OSINT-owe.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="python-monorepo-an-example-part-1-structure-and-tooling"&gt;&lt;a href="https://www.tweag.io/blog/2023-04-04-python-monorepo-1/"&gt;Python Monorepo: an Example. Part 1: Structure and Tooling&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;For a software team to be successful, you need excellent communication.
That is why we want to build systems that foster cross-team communication.
Using a monorepo is an excellent way to do that&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="syntactic-sugar-blog-posts-by-tall-snarky-canadian-brett-cannon"&gt;&lt;a href="https://snarky.ca/tag/syntactic-sugar/"&gt;syntactic sugar blog posts by Tall, Snarky Canadian (Brett Cannon)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;"In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express.
It makes the language "sweeter" for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer."
-- https://en.wikipedia.org/wiki/Syntactic_sugar&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-different-uses-of-python-type-hints"&gt;&lt;a href="https://lukeplant.me.uk/blog/posts/the-different-uses-of-python-type-hints/"&gt;The different uses of Python type hints&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There isn’t really a point of this post other than to say “be aware of these different use cases”.
This awareness can be very important when you are in any discussion about the usefulness or necessity of type hints — which scenarios are you thinking about?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="a-gentle-introduction-to-the-python-match-statement"&gt;&lt;a href="https://www.wrighters.io/intro-to-python-match-statement/"&gt;A Gentle Introduction to the Python Match Statement&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When new features are added to Python, sometimes it can take a while to learn about and start using the feature. For me, the Python match statement (a.k.a. structural pattern matching) is a good example.
Some features are very easy to grasp and use (for example, f-strings), but structural pattern matching is a bit more complex.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="5-common-asyncio-errors-in-python-and-how-to-avoid-them"&gt;&lt;a href="https://superfastpython.com/asyncio-common-errors/"&gt;5 Common Asyncio Errors in Python (and how to avoid them)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you will discover the most common errors encountered by beginners in asyncio in Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-assured-open-source-software-list-of-supported-java-and-python-packages"&gt;&lt;a href="https://cloud.google.com/assured-open-source-software/docs/supported-packages#python"&gt; Google: Assured Open Source Software - List of supported Java and Python packages&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Help reduce the risk to your software supply chain by using the same OSS packages that Google uses and secures in your own developer workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="authentik-on-django-500-slower-to-run-but-200-faster-to-build"&gt;&lt;a href="https://goauthentik.io/blog/2023-03-16-authentik-on-django-500-slower-to-run-but-200-faster-to-build"&gt;authentik on Django: 500% slower to run but 200% faster to build&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;With the arrival of funding and the requirement to build a business that could sustain itself now and scale as the company evolved,
I had to confront some of the technical choices I made when building authentik – in particular, the choice to build authentik using Python and Django.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dependency-injection-in-python"&gt;&lt;a href="https://itnext.io/dependency-injection-in-python-a1e56ab8bdd0"&gt;Dependency Injection in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Building flexible and testable architectures in Python&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-performance-optimization-tips"&gt;&lt;a href="https://testdriven.io/blog/django-performance-optimization-tips/"&gt;Django Performance Optimization Tips&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This article addresses different aspects of Django performance and showcases some of the practices you can use to speed up your app.
On top of that, it provides links to additional resources for further reading.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="ban-1n-in-django"&gt;&lt;a href="https://suor.github.io/blog/2023/03/26/ban-1-plus-n-in-django/"&gt;Ban 1+N in Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I always thought of 1+N as a thing that you just keep in your head, catch on code reviews or via performance regressions.
This worked well for a long time, however, the less control we have over our SQL queries the more likely it will sneak through those guards.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="building-an-intelligent-education-platform-with-openai-chatgpt-and-django"&gt;&lt;a href="https://testdriven.io/blog/python-openai-chatgpt/"&gt;Building an Intelligent Education Platform with OpenAI, ChatGPT, and Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you'll learn how artificial intelligence (AI) can empower us to create educational platforms that are smarter, more personalized,
and more effective than ever by leveraging the latest advancements in AI technology such as GPT-3 and ChatGPT.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pythondjango-asyncio-tutorial-with-examples"&gt;&lt;a href="https://djangostars.com/blog/asynchronous-programming-in-python-asyncio/"&gt;Python/Django AsyncIO Tutorial with Examples &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If for some reason you or your team of Python developers have decided to discover the asynchronous part of Python, welcome to our quick tutorial on using Async IO in Python/Django.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="running-tasks-concurrently-in-django-asynchronous-views"&gt;&lt;a href="https://fly.io/blog/running-tasks-concurrently-in-django-asynchronous-views/"&gt;Running Tasks Concurrently in Django Asynchronous Views &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mariusz Felisiak, a Django and Python contributor and a Django Fellow, explores how to use recent async improvements in Django to run multiple async tasks in an asynchronous view!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-have-python-show-warnings-when-running-django"&gt;&lt;a href="https://www.untangled.dev/2023/04/26/py-django-warnings/"&gt;How to have Python show warnings when running Django&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I usually look for deprecation warnings when I see a newer Django version being prepared for release.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="git-sim"&gt;&lt;a href="https://github.com/initialcommit-com/git-sim"&gt;git-sim&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Visually simulate Git operations in your own repos with a single terminal command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="why-i-think-gcp-is-better-than-aws"&gt;&lt;a href="https://nandovillalba.medium.com/why-i-think-gcp-is-better-than-aws-ea78f9975bda"&gt;Why I think GCP is better than AWS&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;AWS is the best platform to showcase how great GCP is…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloud-functions-best-practices-34-secure-the-cloud-functions"&gt;&lt;a href="https://medium.com/google-cloud/cloud-functions-best-practice-3-4-secure-the-cloud-functions-1c9642c4706"&gt;Cloud Functions Best Practices (3/4) : Secure the Cloud Functions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Protect your Function perfectly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="best-practices-and-a-tutorial-for-using-google-cloud-functions-with-mongodb-atlas"&gt;&lt;a href="https://cloud.google.com/blog/products/databases/best-practices-and-tutorial-using-google-cloud-functions-mongodb-atlas"&gt;Best practices and a tutorial for using Google Cloud Functions with MongoDB Atlas&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Connect your serverless functionality to your third-party databases for efficient and cost-effective cloud applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hosting-successful-live-events-with-google-cloud"&gt;&lt;a href="https://cloud.google.com/blog/products/networking/hosting-successful-live-events-with-google-cloud"&gt;Hosting successful live events with Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hosting a live event requires a significant level of planning and preparedness.
At Google Cloud, we've supported customers that delivered live tentpole events at planet scale, most recently, football matches for FIFA World Cup 2022 using Media CDN for worldwide distribution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="promoting-pre-prod-to-production-in-cloud-run-with-google-cloud-deploy"&gt;&lt;a href="https://cloud.google.com/blog/products/devops-sre/using-cloud-deploy-to-promote-pre-prod-to-production-in-cloud-run"&gt;Promoting pre-prod to production in Cloud Run with Google Cloud Deploy&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Deploying your first container to Cloud Run is famously intuitive.
The magic of typing gcloud run deploy and watching your container run never really gets old for me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-identify-and-reduce-costs-of-your-google-cloud-observability-in-cloud-monitoring"&gt;&lt;a href="https://cloud.google.com/blog/products/management-tools/learn-to-understand-and-reduce-cloud-monitoring-costs"&gt;How to identify and reduce costs of your Google Cloud observability in Cloud Monitoring&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If it matters, you should measure it! This adage underpins an explosion of growth in the monitoring and observability market over the last decade.
Unfortunately, many organizations struggle to realize the benefits of their tooling, leading to budget bloat without gaining much additional insight.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="klaster-k8s-na-raspberry-pi-czyli-k3s-na-nowo"&gt;&lt;a href="https://kaluzny.io/klaster-k8s-na-raspberry-pi-czyli-k3s-na-nowo/"&gt;Klaster K8s na Raspberry Pi, czyli K3s na nowo&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mój domowy klaster K8s na Raspberry Pi&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="defining-labelling-strategy-in-gcp-for-gaining-granularity-into-cloud-costs"&gt;&lt;a href="https://medium.com/google-cloud/defining-labelling-strategy-in-gcp-for-gaining-granularity-into-cloud-costs-9110018d356b"&gt;Defining Labelling strategy in GCP for gaining granularity into cloud costs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Labels act as metadata which lets you filter resources in Cloud Billing console. It’s important to note that labels and tags hold different meanings in GCP, refer &lt;a href="https://cloud.google.com/resource-manager/docs/tags/tags-overview"&gt;this&lt;/a&gt; to know more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesomegcp-youtube-channel"&gt;&lt;a href="https://www.youtube.com/@AwesomeGCP"&gt;AwesomeGCP [YouTube Channel]&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Preparation of GCP certifications&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-keep-myself-up-to-date-on-google-cloud-platform-a-personal-journey"&gt;&lt;a href="https://medium.com/google-cloud/how-i-keep-myself-up-to-date-on-google-cloud-platform-a-personal-journey-dc334f733c0f"&gt;How I Keep Myself Up-to-Date on Google Cloud Platform: A Personal Journey&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As a GCP user, it’s important to stay up-to-date with the latest changes and advancements in the platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="owasp-kubernetes-top-10"&gt;&lt;a href="https://sysdig.com/blog/top-owasp-kubernetes/"&gt;OWASP Kubernetes Top 10&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The OWASP Kubernetes Top 10 puts all possible risks in an order of overall commonality or probability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloudskillsterraform-projects"&gt;&lt;a href="https://github.com/CloudSkills/Terraform-Projects"&gt;CloudSkills/Terraform-Projects&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="know-your-http-well"&gt;&lt;a href="https://github.com/for-GET/know-your-http-well"&gt;KNOW YOUR HTTP * WELL&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;HTTP encodings, headers, media types, methods, relations and status codes, all summarized and linking to their specification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-python-style-guide"&gt;&lt;a href="https://google.github.io/styleguide/pyguide.html"&gt;Google Python Style Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python is the main dynamic language used at Google. This style guide is a list of dos and don’ts for Python programs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-software-and-architectural-design-patterns"&gt;&lt;a href="https://github.com/DovAmir/awesome-design-patterns"&gt;Awesome Software and Architectural Design Patterns&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A curated list of software and architecture related design patterns.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="iptv"&gt;&lt;a href="https://github.com/iptv-org/iptv#database"&gt;IPTV&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Collection of publicly available IPTV channels from all over the world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="america-against-america-usa-wang-huning"&gt;&lt;a href="https://ia601806.us.archive.org/12/items/america-against-america/America%20Against%20America.pdf"&gt;America Against America (USA) - Wang Huning&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;America critique.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="the-real-python-podcast-episode-150-lessons-learned-from-four-years-programming-with-python"&gt;&lt;a href="https://realpython.com/podcasts/rpp/150/"&gt;The Real Python Podcast Episode 150: Lessons Learned From Four Years Programming With Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;What are the core lessons you’ve learned along your Python development journey?
What are key takeaways you would share with new users of the language?
This week on the show, Duarte Oliveira e Carmo is here to discuss his recent talk, “Four Years of Python.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="fossback-wolfgang-gehring-a-vision-of-foss-mercedesbenz"&gt;&lt;a href="https://www.youtube.com/watch?v=6uHJodpllpA"&gt;#FOSSBack: Wolfgang Gehring – A Vision of FOSS @MercedesBenz&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/6uHJodpllpA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="omh-2021-suzby-wpadki-i-osintowe-kwiatki-kamil-goryn"&gt;&lt;a href="https://www.youtube.com/watch?v=dlyIeJijh7E"&gt;OMH 2021: Służby, wpadki i OSIntowe kwiatki - Kamil Goryń&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/dlyIeJijh7E" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 30 Apr 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-04-30:/2023-april-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Month summary - March 2023</title><link>https://blog.tobked.dev/2023-march-links</link><description>&lt;h1 id="march-2023"&gt;March 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="github-we-updated-our-rsa-ssh-host-key"&gt;&lt;a href=""&gt;GitHub: We updated our RSA SSH host key&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;At approximately 05:00 UTC on March 24, out of an abundance of caution, we replaced our RSA SSH host key used to secure Git operations for GitHub.com.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="youre-using-chatgpt-wrong-heres-how-to-be-ahead-of-99-of-chatgpt-users"&gt;&lt;a href="https://artificialcorner.com/youre-using-chatgpt-wrong-here-s-how-to-be-ahead-of-99-of-chatgpt-users-886a50dabc54"&gt;You’re Using ChatGPT Wrong! Here’s How to Be Ahead of 99% of ChatGPT Users&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Master ChatGPT by learning prompt engineering.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-experienced-programmers-fail-coding-interviews"&gt;&lt;a href="https://medium.com/the-coding-diaries/why-experienced-programmers-fail-coding-interviews-b22210ba343"&gt;Why Experienced Programmers Fail Coding Interviews&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Generally speaking though, the more interviews I tried out, the better I did get at interviewing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-didnt-like-the-price-so-i-built-a-saas-company-over-a-weekend-here-is-what-it-took"&gt;&lt;a href="https://medium.com/@justincloud/i-didnt-like-the-price-so-i-built-a-competitor-over-a-weekend-here-is-what-happened-6309a2a3a761"&gt;I didn’t like the price so I built a SaaS company over a weekend. Here is what it took.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every once in a while you do something unexpected or out of character.
Last summer I created a company, initially out of spite, but it turned into an incredible learning experience and the realization that it is very easy to start a company.
Perhaps this may be helpful to others starting a similar journey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hubsport-saving-millions-on-logging-finding-relevant-savings"&gt;&lt;a href="https://product.hubspot.com/blog/savings-logging-part1"&gt;HubSport: Saving Millions on Logging: Finding Relevant Savings&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this two-part blog series, we will look at a structured method we use for approaching cost savings work and demonstrating how we apply it at HubSpot to save millions on the storage costs of our application logs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="using-a-raspberry-pi-to-add-a-second-hdmi-port-to-a-laptop"&gt;&lt;a href="https://pierre-couy.dev/tinkering/2023/03/turning-rpi-into-external-monitor-driver.html"&gt;Using a Raspberry Pi to add a second HDMI port to a laptop&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Not being able to use my second external monitor on this new laptop felt like a huge downgrade from my previous one (which was able to output to both its HDMI and VGA ports simultaneously).&lt;/p&gt;
&lt;p&gt;This is the story of how I managed to overcome this limitation by rolling my own virtual screen streaming solution using a Raspberry Pi.
I tried to write it in a way you can follow along if you want to reproduce it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-write"&gt;&lt;a href="https://fs.blog/why-write/"&gt;Why Write?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Writing is the process by which you realize that you do not understand what you are talking about.
Importantly, writing is also the process by which you figure it out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-think-better-the-skill-youve-never-been-taught"&gt;&lt;a href="https://fs.blog/how-to-think/"&gt;How to Think Better: The Skill You’ve Never Been Taught&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you want to think better, schedule time to write out your thoughts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="what-are-self-sabotaging-habits-and-how-to-fight-them"&gt;&lt;a href="https://durmonski.com/self-improvement/self-sabotaging-habits/"&gt;What are Self-Sabotaging Habits and How to Fight Them&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An interesting fact about habits is that it’s a negative art.
Commonly, you have a better chance of correcting your overall behavior by getting rid of self-sabotaging habits vs. focusing on good habits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sitting-and-standing-at-work"&gt;&lt;a href="https://ergo.human.cornell.edu/CUESitStand.html"&gt;Sitting and Standing at Work&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sit to do computer work. Sit using a height-adjustable, downward titling keyboard tray for the best work posture, then every 20 minutes stand for 8 minutes AND MOVE for 2 minutes.
The absolute time isn’t critical but about every 20-30 minutes take a posture break and stand and move for a couple of minutes.\
Simply standing is insufficient.
Movement is important to get blood circulation through the muscles. And movement is FREE! Research shows that you don’t need to do vigorous exercise (e.g. jumping jacks) to get the benefits,
just walking around is sufficient. So build in a pattern of creating greater movement variety in the workplace (e.g. walk to a printer, water fountain, stand for a meeting, take the stairs,
walk around the floor, park a bit further away from the building each day&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="life-is-a-game-this-is-your-strategy-guide"&gt;&lt;a href="https://oliveremberton.com/2014/life-is-a-game-this-is-your-strategy-guide/"&gt;Life is a game. This is your strategy guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Real life is the game that – literally – everyone is playing. But it can be tough. This is your guide.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="should-you-be-using-pythons-walrus-operator-yes-and-heres-why"&gt;&lt;a href="https://betterprogramming.pub/should-you-be-using-pythons-walrus-operator-yes-and-here-s-why-36297be16907"&gt;Should You Be Using Python’s Walrus Operator? (Yes. And Here’s Why)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Python’s controversial assignment expression — known as the walrus operator — can improve your code, and it’s time you start using it!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="okta-integration-with-cloud-identity"&gt;&lt;a href="https://medium.com/google-cloud/okta-integration-with-cloud-identity-4bb5f32f9305"&gt;Okta Integration with Cloud Identity&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TL;DR Cloud Identity is an Identity as a Service (IDaaS) solution that centrally manages users and groups.
You can configure Cloud Identity to federate identities between Google and other identity providers, such as Okta, Active Directory and Azure Active Directory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="10-devops-sre-resources-everyone-should-check-out"&gt;&lt;a href="https://medium.com/google-cloud/10-devops-sre-resources-everyone-should-check-out-36de439b776d"&gt;10 DevOps &amp;amp; SRE resources everyone should check out&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I recently had a shot at the new BETA Google Cloud DevOps Professional exam. To say the least it was quite a workout.
Now this post isn’t about that exam but it is about some super resources that I think are interesting around the topics of Site Reliability Engineering and DevOps.
Now let’s get into the content.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="wikimedias-grafana-installation"&gt;&lt;a href="https://grafana.wikimedia.org/d/O_OXJyTVk/home-w-wiki-status"&gt;Wikimedia's Grafana installation&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Below are five high-level metrics indicating the overall user-visible health of the site.
For advice on interpreting these metrics, read &lt;a href="https://wikitech.wikimedia.org/wiki/Wikimediastatus.net/User_instructions"&gt;the instructions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This dashboard mirrors what is shown on wikimediastatus.net, our public-facing status page.
The data is uploaded to there by [Statograph](https://wikitech.wikimedia.org/wiki/Wikimediastatus.net#Statograph_(automated_metrics_upload).
We keep these panels up-to-date with &lt;a href="https://gerrit.wikimedia.org/g/operations/puppet/+/production/hieradata/common/profile/statograph.yaml"&gt;configuration&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="dare-to-fail-gloriously"&gt;&lt;a href="https://dare.fail/"&gt;Dare to Fail Gloriously&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I make websites. Some in the past have made money, but most have failed.
In fact, almost everything I have tried to do has failed.
My goal now is to build things that get used in real time or fail gloriously.
Take note of the amount dumb the ideas are and how bad I am at interviewing.
No matter how hard you try, you cannot fail 100% of the time.
I am tracking all metrics live here and sharing my failings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="rejected-emoji-proposals"&gt;&lt;a href="https://charlottebuff.com/unicode/misc/rejected-emoji-proposals/"&gt;Rejected Emoji Proposals&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sample images are usually taken directly from the proposals and may not accurately reflect best practices.
The “sample” column has been left blank where a proposal document did not offer suitable illustrations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="the-bike-shed-372-onboarding-well-onto-a-project"&gt;&lt;a href="https://www.bikeshed.fm/372"&gt;The Bike Shed 372: Onboarding (Well!) Onto a Project&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Stephanie raves about more software development-related zines by Julia Evans.
Joël has been thinking about the mechanics of rolling dice.&lt;/p&gt;
&lt;p&gt;Stephanie also started on a new client project that Joël has already been working on for many months.
They talk about onboarding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="talk-python-to-me-clean-code-in-python"&gt;&lt;a href="https://talkpython.fm/episodes/show/404/clean-code-in-python"&gt;Talk Python To Me: Clean Code in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Clean code is one of those aspects of your programming career that's easy to put on the back burner (sometimes by management more than yourself).
But it's important in the short term for writing more debuggable and readable code.
And important in the long run for avoiding having your program take on the dreaded "legacy code" moniker.
We're fortunate to have Bob Belderbos back on the show.
He's been thinking and writing about clean code and Python a lot lately and we'll dive into a bunch of tips you can use right away to make your code cleaner.&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Fri, 31 Mar 2023 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2023-03-31:/2023-march-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>February summary - February 2023</title><link>https://blog.tobked.dev/2023-february-links</link><description>&lt;h1 id="february-2023"&gt;February 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this february.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="20-things-ive-learned-in-my-20-years-as-a-software-engineer"&gt;&lt;a href="https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/"&gt;20 Things I’ve Learned in my 20 Years as a Software Engineer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My experiences over the last 20 years have shaped how I view software, and have led me to some beliefs which I’ve tried to whittle down to a manageable list that I hope you find valuable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="contracts-you-should-never-sign"&gt;&lt;a href="https://vadimkravcenko.com/shorts/contracts-you-should-never-sign/"&gt;Contracts you should never sign&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm not a fan of confidentiality agreements, as companies usually include clauses that have no place to be there.
So, the best thing we as engineers can do is be aware of the types of contracts we're signing.
Even better, if we know the contracts that we should avoid signing. In this article,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="i-learned-7-different-programming-languages-so-you-dont-have-to"&gt;&lt;a href="https://mode80.github.io/7-langs-in-12-months.html"&gt;I learned 7 different programming languages so you don't have to&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I began last year with a goal to really understand machine learning.
I feel utterly lucky to be alive at a time when software is taking its first tentative steps into the realm of intelligence, and I want front row seats to this historic event.
Once this has occurred, computers will speak my language. But to see it unfold, I must learn to speak theirs...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="learn-to-process-text-in-linux-using-grep-sed-and-awk"&gt;&lt;a href="https://www.linode.com/docs/guides/differences-between-grep-sed-awk/"&gt;Learn to Process Text in Linux using Grep, sed, and AWK&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This guide provides an overview of each tool with examples and includes links to guides in our library that go deeper into each tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django-libraries"&gt;Django libraries&lt;/h2&gt;
&lt;h3 id="django-baton"&gt;&lt;a href="https://github.com/otto-torino/django-baton"&gt;django-baton&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A cool, modern and responsive django admin application based on bootstrap 5&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="pre-commit-how-to-create-hooks-for-unsupported-tools"&gt;&lt;a href="https://adamj.eu/tech/2023/02/09/pre-commit-hooks-unsupported-tools/"&gt;pre-commit: How to create hooks for unsupported tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The pre-commit framework lists hundreds of hook repositories on its hooks page.
You can drop these into your configuration file and get a tool running in seconds.
But there are many more tools out there that you might want to use, which you can run with custom configuration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-cheat-sheet"&gt;&lt;a href="https://github.com/tiimgreen/github-cheat-sheet"&gt;GitHub Cheat Sheet&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A collection of cool hidden and not so hidden features of Git and GitHub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="difference-between-container-registry-and-artifact-registry-google-cloud"&gt;&lt;a href="https://medium.com/google-cloud/difference-between-container-registry-and-artifact-registry-google-cloud-deac2a3ac383"&gt;Difference between Container Registry and Artifact Registry Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Artifact Registry is the next generation of Container Registry. Artifact registry Store, manage, and secure your build artifacts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="import-as-an-antipattern-demystifying-dependency-injection-in-modern-python"&gt;&lt;a href="https://www.youtube.com/watch?v=qkGxy4c64Jg"&gt;Import as an antipattern - Demystifying Dependency Injection in modern Python&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/qkGxy4c64Jg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="system-design-for-beginners-course"&gt;&lt;a href="https://www.youtube.com/watch?v=m8Icp_Cid5o"&gt;System Design for Beginners Course&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/m8Icp_Cid5o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="donella-dana-meadows-lecture-sustainable-systems-full-version"&gt;&lt;a href="https://www.youtube.com/watch?v=vJ1STks8MUU"&gt;Donella (Dana) Meadows - Lecture: Sustainable Systems (Full version)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/vJ1STks8MUU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 28 Feb 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-02-28:/2023-february-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>february</category><category>2023</category></item><item><title>Month summary - January 2023</title><link>https://blog.tobked.dev/2023-january-links</link><description>&lt;h1 id="january-2023"&gt;January 2023&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="how-we-use-terraform-at-slack"&gt;&lt;a href="https://slack.engineering/how-we-use-terraform-at-slack/"&gt;How We Use Terraform At Slack&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A Look Into Ways We Use Terraform to Build Our Infrastructure&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-want-modules-not-microservices"&gt;&lt;a href="https://blogs.newardassociates.com/blog/2023/you-want-modules-not-microservices.html"&gt;You Want Modules, Not Microservices&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;tl;dr Architecture is hard sometimes--people keep offering up some new idea that quickly becomes the mainstream "way to do it" without any context or nuance, and the industry, desperate to find ways to improve their architecture, snaps it up without hesitation.
Microservices was the latest in the trend, and it's time we dissected the idea and got to the real root of what's going on.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-i-learned-from-pairing-by-default"&gt;&lt;a href="https://blog.testdouble.com/posts/2022-12-07-what-i-learned-from-pairing/"&gt;What I learned from pairing by default&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you have the opportunity to give pairing-by-default a try, I highly recommend going for it.
With this experience, I’m far, far more likely to jump into a call for something mundane “just because.” And that “just because” might even be because I’m feeling more social and have nothing to do with code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="anki-srs-algorithmspaced-repetition-explained-with-code"&gt;&lt;a href="https://www.juliensobczak.com/inspect/2022/05/30/anki-srs.html"&gt;Anki SRS AlgorithmSpaced Repetition Explained with Code&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Forgetting is key to learning.
Forgetting is what separates what is useful and what is not.
Sometimes, we want to make a piece of knowledge stick in memory despite what our memory thinks.
Spaced Repetition is an effective solution to this problem and Anki is the most popular OSS tool to help you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloudflare-the-mechanics-of-a-sophisticated-phishing-scam-and-how-we-stopped-it"&gt;&lt;a href="https://blog.cloudflare.com/2022-07-sms-phishing-attacks/"&gt;Cloudflare: The mechanics of a sophisticated phishing scam and how we stopped it&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This was a sophisticated attack targeting employees and systems in such a way that we believe most organizations would be likely to be breached.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-choose-the-right-api-gateway"&gt;&lt;a href="https://dev.to/apisix/how-to-choose-the-right-api-gateway-3f9i"&gt;How to choose the right API Gateway &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Nowadays an API Gateway is an essential component in designing a distributed system’s architecture with multiple API services or microservices.
This post helps you understand what’s the API Gateway, when, and why to use it, and guides you on how to choose the best API Gateway solution for your applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="meetings-for-an-effective-eng-organization"&gt;&lt;a href="https://lethain.com/eng-org-meetings/"&gt;Meetings for an effective eng organization.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Good meetings are the heartbeat for your organization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="reaching-peak-meeting-efficiency"&gt;&lt;a href="https://medium.learningbyshipping.com/reaching-peak-meeting-efficiency-f8e47c93317a"&gt;Reaching Peak Meeting Efficiency&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Meetings are a critical tool for building a diverse, high-performance team with shared values&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="youtube-addiction"&gt;&lt;a href="https://www.jntrnr.com/youtube-addiction/"&gt;YouTube Addiction&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi, my name is JT. I'm a YouTube addict.&lt;/p&gt;
&lt;p&gt;I know what you're thinking. That sounds like a joke. That you want a funny punchline to go with it. Me too.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-writing-amazing-rest-apis"&gt;&lt;a href="https://jkebertz.medium.com/the-art-of-writing-amazing-rest-apis-dc4c4100478d"&gt;The Art of Writing Amazing REST APIs&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There are some things that many companies get right and a lot that many get wrong. So how do I think about designing APIs? What makes a good API?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="in-the-long-run"&gt;&lt;a href="https://blog.ploeh.dk/2023/01/16/in-the-long-run/"&gt;In the long run&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Software design decisions should be time-aware.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gpt-3-is-the-best-journal-ive-ever-used"&gt;&lt;a href="https://every.to/chain-of-thought/gpt-3-is-the-best-journal-you-ve-ever-used"&gt;GPT-3 Is the Best Journal I’ve Ever Used&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve been journaling for 10 years, and I can attest that using AI is journaling on steroids.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="death-of-a-craftsman"&gt;&lt;a href="https://einarwh.wordpress.com/2020/04/05/death-of-a-craftsman/"&gt;Death of a Craftsman&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi! My name is Einar.
I design and write software for a living, presumably like you.
You could call me a software developer, a coder, a programmer, and also a software designer, I guess.
Those are all things I do and labels that I’m comfortable with.
I am not, however, a software craftsman.
This blog post is about why.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="how-to-annotate-literally-everything"&gt;&lt;a href="https://beepb00p.xyz/annotating.html"&gt;How to annotate literally everything&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Comprehensive overview of existing tools, strategies and thoughts on interacting with your data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hypothesis"&gt;&lt;a href="https://web.hypothes.is/"&gt;Hypothesis&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Annotate the web, with anyone, anywhere.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="priorytetyzacja-i-estymacja-zadan"&gt;&lt;a href="https://devszczepaniak.pl/priorytetyzacja-zadan/"&gt;Priorytetyzacja i estymacja zadań&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;W tym artykule poznasz kilka technik, z których korzystam lub miałem okazję k korzystać w przeszłości.
Wpis opiera się na moich osobistych doświadczeniach więc niektóre techniki mogą nie sprawdzić się u Ciebie lub te, które u mnie nie sprawdziły się, u Ciebie mogą działać.
W artykule zestawiłem techniki, które wykorzystuję zarówno w życiu zawodowym jak i prywatnym.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-working-on-sundays-feels-different"&gt;&lt;a href="https://vasilishynkarenka.com/sundays/"&gt;Why working on Sundays feels different&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There’s this unique state of ultra-calm and curious mind that I enter on Sundays that I just can’t access on other days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jak-efektywnie-czytac-i-zarzadzac-tresciami-z-roznych-zrode"&gt;&lt;a href="https://jozwiak.top/blog/jak-efektywnie-czytac-i-zarzadzac-tresciami"&gt;Jak efektywnie czytać i zarządzać treściami z różnych źródeł?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Sposobem na zwiększenie wygody czytania jest scentralizowanie treści z różnych serwisów, czyli zebranie ich w jednym, wspólnym miejscu. Możemy wtedy konsumować je w sposób komfortowy, przeglądając jeden kanał (feed), w którym wszystkie będą widoczne.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="the-python-graph-gallery"&gt;&lt;a href="https://www.python-graph-gallery.com/"&gt;The Python Graph Gallery&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Welcome to the Python Graph Gallery, a collection of hundreds of charts made with Python.
Charts are organized in about 40 sections and always come with their associated reproducible code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="boring-python-code-quality"&gt;&lt;a href="https://www.b-list.org/weblog/2022/dec/19/boring-python-code-quality/"&gt;Boring Python: code quality&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is the second in a series of posts I intend to write about how to build, deploy, and manage Python applications in as boring a way as possible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="logging-practices-i-follow"&gt;&lt;a href="https://www.16elt.com/2023/01/06/logging-practices-I-follow/"&gt;Logging practices I follow&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Therefore I follow a specific set of practices which allows me to write better logs while also being consistent across the system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="structured-logging-with-structlog"&gt;&lt;a href="https://bitestreams.com/blog/structured_logging/"&gt;Structured Logging with Structlog&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An introduction to structured logging and its advantages using the structlog package for Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-docs-logging-cookbook-implementing-structured-logging"&gt;&lt;a href="https://docs.python.org/3/howto/logging-cookbook.html#implementing-structured-logging"&gt;Python Docs - Logging Cookbook -Implementing structured logging&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Although most logging messages are intended for reading by humans, and thus not readily machine-parseable, there might be circumstances where you want to output messages in a structured format which is capable of being parsed by a program (without needing complex regular expressions to parse the log message).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="same-words-different-meanings"&gt;&lt;a href="https://nedbatchelder.com/blog/202301/same_words_different_meanings.html"&gt;Same words, different meanings&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the difficulties when comparing programming languages is that they sometimes use the same words to describe similar things, but always with differences.
Sometimes the differences are large enough that we want to use different words, but often they are not.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="bookwyrm"&gt;&lt;a href="https://github.com/bookwyrm-social/bookwyrm"&gt;BookWyrm&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;BookWyrm is a social network for tracking your reading, talking about books, writing reviews, and discovering what to read next.
Federation allows BookWyrm users to join small, trusted communities that can connect with one another, and with other ActivityPub services like Mastodon and Pleroma.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="questions-to-ask-a-django-company"&gt;&lt;a href="https://www.better-simple.com/career/2022/12/31/questions-to-ask-a-django-company/"&gt;Questions to ask a Django company&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re looking for questions to ask a software company, then here are a few to get you started. Keep in mind, these are not meant as “gotcha” questions.
The point of them is to understand the company you would be joining, so you can make the best decision possible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-log-users-in-with-their-email"&gt;&lt;a href="https://ctrlzblog.com/how-to-log-users-in-with-their-email/"&gt;How to Log Users In With Their Email&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Learn how to use Django's authentication system to log users in with an email instead of a username.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="go"&gt;Go&lt;/h2&gt;
&lt;h3 id="the-best-go-framework-no-framework"&gt;&lt;a href="https://threedots.tech/post/best-go-framework/"&gt;The Best Go framework: no framework?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While writing this blog and leading Go teams for a couple of years, the most common question I heard from beginners was “What framework should I use?”.
One of the worst things you can do in Go is follow an approach from other programming languages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="wild-workouts"&gt;&lt;a href="https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example"&gt;Wild Workouts&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Go DDD example application. Complete project to show how to apply DDD, Clean Architecture, and CQRS by practical refactoring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="gitignore"&gt;&lt;a href="https://github.com/github/gitignore"&gt;gitignore&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A collection of .gitignore templates.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="handlefinder"&gt;&lt;a href="https://www.handlefinder.com/"&gt;HandleFinder&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;HandleFinder is a powerful tool that can be used to find usernames across many &lt;a href="https://github.com/sherlock-project/sherlock/blob/master/sites.md"&gt;social networks&lt;/a&gt;.
This project is a wrapper around the &lt;a href="https://github.com/sherlock-project"&gt;Sherlock Project&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="feeder"&gt;&lt;a href="https://f-droid.org/en/packages/com.nononsenseapps.feeder/"&gt;Feeder&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Feeder is a fully free/libre feed reader.
It supports all common feed formats, including JSONFeed.
It doesn't track you. It doesn't require any setup.
It doesn't even need you to create an account!
Just setup your feeds, or import them from your old reader via OPML, then get on with syncing and reading.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="realworld-example-apps"&gt;&lt;a href="https://github.com/gothinkster/realworld"&gt;RealWorld Example apps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;See how the exact same Medium.com clone (called Conduit) is built using different frontends and backends.
Yes, you can mix and match them, because they all adhere to the same API spec 😮😎&lt;/p&gt;
&lt;p&gt;While most "todo" demos provide an excellent cursory glance at a framework's capabilities, they typically don't convey the knowledge &amp;amp; perspective required to actually build real applications with it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="discover-the-best-graduation-speeches"&gt;&lt;a href="https://commspeeches.softr.app/"&gt;Discover the best graduation speeches&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;One and only place to find a curated list of best commencement speeches.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="stamps-back"&gt;&lt;a href="https://www.youtube.com/watch?v=YUqn1OPxtmE"&gt;Stamps Back&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Stamps Back the 5th Moleman documentary.
From Commodore 64s smuggled across the Iron Curtain to cracked games on cassette tapes sold at flea markets, floppy disk swapping via postal mail, hacked phone booths connected to US BBSes, and copy parties packed to capacity, Stamps Back tells the story of how teenagers in Hungary ignited a computing revolution in the 1980s with illegally copied video games from the West, and began the Hungarian demoscene.
More info at stampsback.com&lt;/p&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/YUqn1OPxtmE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="habits-of-efficient-developers"&gt;&lt;a href="https://www.youtube.com/watch?v=9-cyC6O81Bk"&gt;Habits of Efficient Developers&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/9-cyC6O81Bk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="scaling-yourself-scott-hanselman-goto-2012"&gt;&lt;a href="https://www.youtube.com/watch?v=FS1mnISoG7U"&gt;Scaling Yourself • Scott Hanselman • GOTO 2012&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/FS1mnISoG7U" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="devoxx-poland-2016-wojciech-seliga-ten-lessons-i-painfully-learnt-while-moving-from-software"&gt;&lt;a href="https://www.youtube.com/watch?v=ffXpiFEq1jE"&gt;Devoxx Poland 2016 - Wojciech Seliga - Ten lessons I painfully learnt while moving from software ...&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/ffXpiFEq1jE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="hackcast-s02e08-django-community-django-styleguide"&gt;&lt;a href="https://www.youtube.com/watch?v=9VfRaPECbpY"&gt;HackCast S02E08 - Django Community &amp;amp; Django Styleguide&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/9VfRaPECbpY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="she-hacked-a-billionaire-a-bank-and-you-could-be-next-do-this-now-to-protect-yourself"&gt;&lt;a href="https://www.youtube.com/watch?v=8MIIeIa25tE"&gt;She hacked a billionaire, a bank and you could be next. Do this now to protect yourself!&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/8MIIeIa25tE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="successful-accomplished-depressed-a-talk-about-performance-perfectionism-and-burnout-in-it"&gt;&lt;a href="https://www.youtube.com/watch?v=C84h5e9cOZY"&gt;Successful, Accomplished, Depressed – A Talk About Performance, Perfectionism, and Burnout in IT&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/C84h5e9cOZY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 31 Jan 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-01-31:/2023-january-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2023</category></item><item><title>Year summary - 2022</title><link>https://blog.tobked.dev/2022-summary</link><description>&lt;h1 id="2022"&gt;2022&lt;/h1&gt;
&lt;h2 id="work"&gt;Work&lt;/h2&gt;
&lt;p&gt;Started work in the biggest Polish software house: NetGuru as Python Developer (mid or regular).
I worked there for a huge international client nad worldwide projects.
I also co-author the internal Python newsletter.&lt;/p&gt;
&lt;h2 id="increased-cloud-competencies"&gt;Increased Cloud competencies&lt;/h2&gt;
&lt;p&gt;I continue my journey with Cloud.
I achieved two Google Cloud Platform certificates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.credential.net/fc647c87-e199-4dd2-b34e-67dbb7bc3d10"&gt;Google Professional Cloud Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.credential.net/47fe6c30-0530-4291-8f72-93d0bf5d682e"&gt;Google Professional Cloud Developer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/summary/gcp_pca.png" alt="Google Professional Cloud Architect" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/summary/gcp_pcd.png" alt="Google Professional Cloud Developer" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h2 id="learning-talking"&gt;Learning, talking&lt;/h2&gt;
&lt;p&gt;I presented twice the same presentation: &lt;strong&gt;GitHub Actions: (opinionated) Tips &amp;amp; Tricks&lt;/strong&gt;.
First one in NetGuru and second one in Brival.&lt;/p&gt;
&lt;p&gt;&lt;img alt="GitHub Actions Tips &amp;amp; Tricks @Brival" src="https://blog.tobked.dev/images/posts/2022/2022_10_brival.jpg"&gt;&lt;/p&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;I have been writing monthly summaries where I am trying to compile
a few sentences about the last month together with articles, tools and other interesting materials I came across.&lt;/p&gt;
&lt;p&gt;Every month is decorated with picture made by me.&lt;/p&gt;
&lt;p&gt;2022 summaries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-january-links"&gt;January&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-february-links"&gt;February&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-march-links"&gt;March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-april-links"&gt;April&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-may-links"&gt;May&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-june-links"&gt;June&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-july-links"&gt;July&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-august-links"&gt;August&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-september-links"&gt;September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-october-links"&gt;October&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-november-links"&gt;November&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/2022-december-links"&gt;December&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also wrote one additional blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.tobked.dev/notion-packing-lists"&gt;Notion packing lists&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="photos"&gt;Photos&lt;/h2&gt;
&lt;p&gt;&lt;img alt="2022_01" src="https://blog.tobked.dev/images/posts/2022/2022_01_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_02" src="https://blog.tobked.dev/images/posts/2022/2022_02_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_03" src="https://blog.tobked.dev/images/posts/2022/2022_03_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_04" src="https://blog.tobked.dev/images/posts/2022/2022_04_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_05" src="https://blog.tobked.dev/images/posts/2022/2022_05_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_06" src="https://blog.tobked.dev/images/posts/2022/2022_06_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_07" src="https://blog.tobked.dev/images/posts/2022/2022_07_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_08" src="https://blog.tobked.dev/images/posts/2022/2022_08_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_09" src="https://blog.tobked.dev/images/posts/2022/2022_09_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_10" src="https://blog.tobked.dev/images/posts/2022/2022_10_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_11" src="https://blog.tobked.dev/images/posts/2022/2022_11_xx.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2022_12" src="https://blog.tobked.dev/images/posts/2022/2022_12_xx.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sun, 01 Jan 2023 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2023-01-01:/2022-summary</guid><category>summary</category><category>summary</category><category>year</category><category>2022</category></item><item><title>Month summary - December 2022</title><link>https://blog.tobked.dev/2022-december-links</link><description>&lt;h1 id="december-2022"&gt;December 2022&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;The Google Cloud Platform journey continues.
Ending year with another certificate in my collection.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.credential.net/47fe6c30-0530-4291-8f72-93d0bf5d682e"&gt;Google Cloud Platform Professional Cloud Developer certificate.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/summary/gcp_pcd.png" alt="Google Professional Cloud Developer" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="do-they-deserve-the-gift-of-your-keystrokes"&gt;&lt;a href="https://www.hanselman.com/blog/do-they-deserve-the-gift-of-your-keystrokes"&gt;Do they deserve the gift of your keystrokes?&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There are a finite number of keystrokes left in your hands before you die. - Scott Hanselman&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="moduliths-because-we-need-to-scale-but-we-also-cannot-afford-microservices"&gt;&lt;a href="https://blog.kronis.dev/articles/modulith-because-we-need-to-scale-but-we-also-cannot-afford-micro-services"&gt;Moduliths: because we need to scale, but we also cannot afford microservices&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So, let's get one thing straight: if you're working in ICT, you're probably not in FAANG. Unless you are, in which case, good job at getting there! But for the rest of us, that's somewhat unlikely.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="build-the-modular-monolith-first"&gt;&lt;a href="https://www.fearofoblivion.com/build-a-modular-monolith-first"&gt;Build the modular monolith first&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Even talking about building a monolith today, is a bit taboo. It is all about microservices at the moment, and has been for a few years. But they aren’t a silver bullet…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloudflare-using-apache-kafka-to-process-1-trillion-inter-service-messages"&gt;&lt;a href="https://blog.cloudflare.com/using-apache-kafka-to-process-1-trillion-messages/"&gt;CloudFlare: Using Apache Kafka to process 1 trillion inter-service messages&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Cloudflare has been using Kafka in production since 2014. We have come a long way since then, and currently run 14 distinct Kafka clusters, across multiple data centers, with roughly 330 nodes. Between them, over a trillion messages have been processed over the last eight years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="always-use-closed-open-intervals"&gt;&lt;a href="https://fhur.me/posts/always-use-closed-open-intervals"&gt;Always use [closed, open) intervals&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ntervals or ranges pop-up everywhere in the programming world. The classic example is picking a start and end date, like you would when booking an AirBnB or a flight. But that's just one example: from slicing a JS Array, to Java's List#sublist and even SQL's LIMIT operator, ranges are everywhere.&lt;/p&gt;
&lt;p&gt;Have you ever wondered why they are always implemented as [closed, open) as opposed to [closed, closed]?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="smart-move-google"&gt;&lt;a href="https://garrit.xyz/posts/2022-11-24-smart-move-google"&gt;Smart Move, Google&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Back home I opened Google Maps again, and noticed that maps.google.com now redirects to google.com/maps.
This implies that the permissions I give to Google Maps now apply to &lt;strong&gt;all&lt;/strong&gt; of Googles services hosted under this domain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-hidden-cost-of-high-salaries-in-tech"&gt;&lt;a href="https://d-hanshew.medium.com/the-hidden-cost-of-high-salaries-in-tech-4e5d8c9b2e3a"&gt;The Hidden Cost of High Salaries in Tech&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Giving chase sometimes ain’t worth it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="beginners-guide-to-opentelemetry"&gt;&lt;a href="https://logz.io/learn/opentelemetry-guide/#overview"&gt;Beginner’s Guide to OpenTelemetry&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Every journey in Observability begins with instrumenting an application to emit telemetry data – primarily logs, metrics and traces – from each service as it executes. OpenTelemetry is an open source project under the Cloud Native Computing Foundation (CNCF) that offers a unified framework for generating, collecting and transmitting telemetry data. With OpenTelemetry you can instrument your application in a vendor-agnostic way, and then analyze the telemetry data in your backend tool of choice, whether Prometheus, Jaeger, Zipkin, or others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="understanding-browser-cookies"&gt;&lt;a href="https://chenhuijing.com/blog/understanding-browser-cookies/"&gt;Understanding browser cookies 🍪&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A cookie is a small plain text file stored in the browser. There isn’t anything executable in there. It simply contains a small amount of data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jak-wybrac-odpowiedni-font-podstawy-typografii"&gt;&lt;a href="https://konradmakowski.com/jak-dobrac-font-do-publikacji/projektowanie/"&gt;Jak wybrać odpowiedni font? Podstawy typografii&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Czy wiesz, że często nie ma znaczenia, jak dobre są twoje treści? I tak mogą zostać nieprzeczytane!&lt;/p&gt;
&lt;p&gt;Jeśli napiszesz naprawdę świetny tekst, ale przedstawisz go w złej formie, to odbiorca podświadomie pomyśli, że zawartość merytoryczna jest tak samo źle podana, jak forma tekstu.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="awesome-macos-command-line"&gt;&lt;a href="https://git.herrbischoff.com/awesome-macos-command-line/"&gt;Awesome macOS Command Line&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A curated list of shell commands and tools specific to macOS.&lt;/p&gt;
&lt;p&gt;“You don’t have to know everything. You simply need to know where to find it when necessary.” (John Brunner)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="self-hosting-a-google-maps-alternative-with-openstreetmap"&gt;&lt;a href="https://wcedmisten.fyi/post/self-hosting-osm/"&gt;Self Hosting a Google Maps Alternative with OpenStreetMap&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenStreetMap provides crowdsourced mapping data available for free to the world.
But this isn't to say I can just use OSM.
The organization does provide the data, but its usage policy encourages users to not rely on their servers for personal use, and instead take responsibility for hosting themselves.
And based on this project, I can see why.
The hardware requirements are not for the faint of heart.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-i-split-a-monolith-into-microservices-without-refactoring"&gt;&lt;a href="https://betterprogramming.pub/how-i-split-a-monolith-into-microservices-without-refactoring-5d76924c34c2"&gt;How I Split a Monolith Into Microservices Without Refactoring&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;My journey to becoming more agile with a just-in-time architectural style.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="stop-copy-pasting-old-scripts-use-makefile-instead"&gt;&lt;a href="https://mario-gunawan.medium.com/stop-copy-pasting-old-scripts-use-makefile-instead-68331cdf6a32"&gt;Stop Copy-Pasting Old Scripts, Use Makefile Instead!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Makefile is a way to group your terminal commands into one group which we usually calls “target”. A target consists of several commands to be executed in order from top to bottom and stops whenever there is an error output from a command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="11-laws-of-software-estimation-for-complex-work"&gt;&lt;a href="https://mdalmijn.com/p/11-laws-of-software-estimation-for-complex-work"&gt;11 Laws of Software Estimation for Complex Work&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Adjust your sails, deal with the unexpected and uncertain, instead of being angry at the winds you will never be able to predict and control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-actions-sharing-actions-and-reusable-workflows-from-private-repositories-is-now-ga"&gt;&lt;a href="https://github.blog/changelog/2022-12-14-github-actions-sharing-actions-and-reusable-workflows-from-private-repositories-is-now-ga/"&gt;GitHub Actions – Sharing actions and reusable workflows from private repositories is now GA&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;See managing the repository settings and managing the enterprise repository settings to allow access to workflows in other repositories.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-share-terminal-demos-as-razor-sharp-animated-svg"&gt;&lt;a href="https://wasimlorgat.com/tils/how-to-share-terminal-demos-as-razor-sharp-animated-svg.html"&gt;How to share terminal demos as razor-sharp animated SVG&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="to-be-more-disciplined-stop-these-4-bad-habits"&gt;&lt;a href="https://nickwignall.medium.com/to-be-more-disciplined-stop-these-4-bad-habits-2917927ced4b"&gt;To Be More Disciplined, Stop These 4 Bad Habits&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’ve struggled for a long time to be more disciplined without much success, working to identify and eliminate these four habits that interfere with discipline might be a much more helpul strategy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="5-harsh-truths-for-success-from-linus-torvalds"&gt;&lt;a href="https://medium.com/codex/5-harsh-truths-from-linus-torvalds-406ab20cea02"&gt;5 Harsh Truths for Success from Linus Torvalds&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Before I start, I want to tell you something: I cannot guarantee that you will like these ideas, but I can only tell the truth, the harsh, painful truth.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="the-origins-of-python"&gt;&lt;a href="https://inference-review.com/article/the-origins-of-python"&gt;The Origins of Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The success of any undertaking can rarely be ascribed to a single factor.30 In addition to those mentioned above, luck also plays a role.
While ABC was perhaps too far ahead of its time, Python appeared at just the right time.
Whatever the case, I believe that the design philosophy we developed in the process leading to ABC, inasmuch as it was also followed in Python, has had at least some positive influence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-settings-patterns-to-avoid"&gt;&lt;a href="https://adamj.eu/tech/2022/11/24/django-settings-patterns-to-avoid/"&gt;Django Settings Patterns to Avoid&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are some potential mistakes made with Django settings that you can avoid.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-essential-django-deployment-guide"&gt;&lt;a href="https://www.saaspegasus.com/guides/django-deployment/"&gt;The Essential Django Deployment Guide&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything you need to know to get your Django app into production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="django-api-domains"&gt;&lt;a href="https://phalt.github.io/django-api-domains/"&gt;Django API Domains&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This styleguide combines domain-driven design principles and Django's apps pattern to provide a pragmatic guide for developing scalable API services with the Django web framework.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="pysnooper"&gt;&lt;a href="https://github.com/cool-RR/PySnooper"&gt;PySnooper&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;PySnooper - Never use print for debugging again&lt;/p&gt;
&lt;p&gt;PySnooper is a poor man's debugger. If you've used Bash, it's like set -x for Python, except it's fancier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="cri-o-oci-based-implementation-of-kubernetes-container-runtime-interface"&gt;&lt;a href="https://github.com/cri-o/cri-o"&gt;CRI-O - OCI-based implementation of Kubernetes Container Runtime Interface&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;CRI-O is meant to provide an integration path between OCI conformant runtimes and the Kubelet. Specifically, it implements the Kubelet Container Runtime Interface (CRI) using OCI conformant runtimes. The scope of CRI-O is tied to the scope of the CRI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="command-line-interface-guidelines"&gt;&lt;a href="https://clig.dev/"&gt;Command Line Interface Guidelines&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;An &lt;a href="https://github.com/cli-guidelines/cli-guidelines"&gt;open-source&lt;/a&gt; guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="wtf-aka-wtfutil"&gt;&lt;a href="https://github.com/wtfutil/wtf"&gt;WTF (aka 'wtfutil')&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;WTF (aka 'wtfutil') is the personal information dashboard for your terminal, providing at-a-glance access to your very important but infrequently-needed stats and data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="youtube-transcript"&gt;&lt;a href="https://youtubetranscript.com/"&gt;YouTube Transcript&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;YouTube Transcript&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="background-music-macos-audio-utility"&gt;&lt;a href="https://github.com/kyleneideck/BackgroundMusic"&gt;Background Music - macOS audio utility&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Background Music, a macOS audio utility: automatically pause your music, set individual apps' volumes and record system audio.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="reactive-resume"&gt;&lt;a href="https://github.com/AmruthPillai/Reactive-Resume"&gt;Reactive Resume&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="star-history"&gt;&lt;a href="https://star-history.com/"&gt;✨ Star History ✨&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The missing GitHub star history graph.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="cncf-cloud-native-interactive-landscape"&gt;&lt;a href="https://landscape.cncf.io/"&gt;CNCF Cloud Native Interactive Landscape&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Cloud Native Landscape organizes all cloud native open source projects and proprietary products into categories, providing an overview of the current ecosystem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="trail-map"&gt;&lt;a href="https://github.com/cncf/trailmap"&gt;Trail Map&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Cloud Native Trail Map provides an overview for enterprises starting their cloud native journey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="killer-shell-ckad-interactive-scenarios-for-kubernetes-application-developers"&gt;&lt;a href="https://killercoda.com/killer-shell-ckad"&gt;Killer Shell CKAD - Interactive Scenarios for Kubernetes Application Developers&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;These scenarios can be used standalone for CKAD preparation or learning Kubernetes in general.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-reference-architecture-for-agility"&gt;&lt;a href="https://github.com/wso2/reference-architecture"&gt;The Reference Architecture for Agility&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Reference Architecture for Agility is a technology-neutral logical architecture based on a disaggregated cloud-based model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="introduction-to-finops-on-google-cloud"&gt;&lt;a href="https://medium.com/google-cloud/introduction-to-finops-on-google-cloud-3e031a026375"&gt;Introduction to FinOps on Google Cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this article, we evaluate the increasing importance of Cloud FinOps and why it requires a new way of thinking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="kubecon-cloudnativecon-north-america-2022"&gt;&lt;a href="https://www.youtube.com/playlist?list=PLj6h78yzYM2O5aNpRM71NQyx3WUe1xpTn"&gt;KubeCon + CloudNativeCon North America 2022&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SbRHcT1Je-A"&gt;Tips To Fight Impostor Syndrome - Aurélie Vache, OVHcloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=InZvbdYmRrE"&gt;The 10 Biggest Mistakes You Shouldn’t Make In Open Source - Bill Mulligan, Isovalent &amp;amp; Divya Mohan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6Vnuu2oVEMA"&gt;Tips And Tricks To Successfully Migrate From Jaeger To OpenTelemetry - Vineeth Pothulapati&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=chZcSIIOqnY"&gt;Keynote: How to Become an Open Source Mechanic - Emily Fox, Security Engineer, Apple&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=TKYAEjNg4Hw"&gt;Tutorial: Set Up Your Shell For Kubernetes... - Sebastien Thomas, Wunderkind &amp;amp; Archy Khayretdinov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=45n_Nf5xhaw"&gt;Prometheus - Intro, Deep Dive, And Open Q+A - Goutham Veeramachaneni &amp;amp; Ganesh Vernekar, Grafana Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=8g8K7afFBP8"&gt;Learn About Helm And Its Ecosystem - Andrew Block &amp;amp; Karena Angell, Matt Farina, Scott Rigby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=3Aw60VXVMu8"&gt;Tutorial: Build Your Own Heroku With Cloud Native Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=i18XQVg0Ad8"&gt;Jaeger: The Future with OpenTelemetry and Metrics- Jonah Kowall, Logz.io &amp;amp; Joe Elliott, Grafana Labs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="moving-17-years-of-old-legacy-code-and-websites-into-the-cloud-scott-hanselman-at-ndc-porto-2022"&gt;&lt;a href="https://www.youtube.com/watch?v=CVxwsskDzmU"&gt;Moving 17 years of old legacy code and websites into the Cloud - Scott Hanselman at NDC Porto 2022&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/CVxwsskDzmU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-forgotten-art-of-structured-programming-kevlin-henney-c-on-sea-2019"&gt;&lt;a href="https://www.youtube.com/watch?v=SFv8Wm2HdNM"&gt;The Forgotten Art of Structured Programming - Kevlin Henney [C++ on Sea 2019]&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/SFv8Wm2HdNM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="advanced-api-and-integration-problems-patterns-udi-dahan-ndc-oslo-2022"&gt;&lt;a href="https://www.youtube.com/watch?v=vNouCMGP1eE"&gt;Advanced API and Integration Problems &amp;amp; Patterns - Udi Dahan - NDC Oslo 2022 &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/vNouCMGP1eE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="the-design-of-everyday-apis-presented-by-lynn-root"&gt;&lt;a href="https://www.youtube.com/watch?v=bVoM2WLt6Hk"&gt;The Design of Everyday APIs - presented by Lynn Root&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/bVoM2WLt6Hk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="co-dopamina-i-adrenalina-robi-z-programistka-jakub-pilimon-beyond-code-2022"&gt;&lt;a href="https://www.youtube.com/watch?v=CfPRrBHLUtY"&gt;Co dopamina i adrenalina robi z programist(k)ą? - Jakub Pilimon - Beyond Code 2022&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/CfPRrBHLUtY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Sat, 31 Dec 2022 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2022-12-31:/2022-december-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2022</category></item><item><title>Month summary - November 2022</title><link>https://blog.tobked.dev/2022-november-links</link><description>&lt;h1 id="november-2022"&gt;November 2022&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;I created and maintain small private &lt;strong&gt;kubernetes&lt;/strong&gt; cluster on &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;Google Kubernetes Engine [GKE]&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="i-read-210-books-to-learn-how-to-grow-my-businessonly-these-4-actually-helped"&gt;&lt;a href="https://medium.com/@SLight20/i-read-210-books-to-learn-how-to-grow-my-business-only-these-4-actually-helped-c45650491a3f"&gt;I Read 210 Books to Learn How to Grow My Business…Only These 4 Actually Helped&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If I were starting my business all over again, I would buy only these four books and I wouldn’t hire any coaches or attend any seminars. I would just read them over and over and over again and apply everything I read into my business.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="photopea-the-free-photoshop-alternative-making-millions"&gt;&lt;a href="https://www.the5to9.xyz/p/photopea-free-photoshop-alternative-making-millions"&gt;Photopea: The Free Photoshop Alternative Making Millions&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Adobe Photoshop is the most popular image editing tool in the world. It's used by over 29 million people and has become a household name.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="advice-for-junior-developers"&gt;&lt;a href="https://www.entropywins.wtf/blog/2022/09/21/advice-for-junior-developers/"&gt;Advice for Junior Developers &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The blog post mentions and links to many valuable concepts that you can explore further as you see fit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="50-useful-vim-commands"&gt;&lt;a href="https://vimtricks.com/p/50-useful-vim-commands/"&gt;50 Useful Vim Commands&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Here are 50 useful Vim commands that work in normal mode. Many of these can be combined and modified to produce dozens more. Use these as inspiration for your own repeatable workflows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="redis-explained-an-in-depth-tutorial"&gt;&lt;a href="https://architecturenotes.co/redis/"&gt;Redis Explained - An in-depth tutorial&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A deep technical dive into all things Redis. Covering various Redis topologies, data persistence and process forking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="transakcje-acid"&gt;&lt;a href="https://radekbialowas.pl/transakcje-acid/"&gt;Transakcje ACID&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Powszechnie gwaranty bezpieczeństwa transakcji rozpatruje się w ujęciu czterech właściwości, które nie przypadkowo tworzą kwaśny akronim (ACID – Atomicity, Consistency, Isolation, Durability).
Tak, jest w nim pewien zgrzyt, ale nie taki jak w jazzie – oczekiwany, dostrzegalny dopiero przy odpowiedniej dozie wrażliwości, powodujący gęsią skórę na potylicy i podróż gdzie przewodnikiem jest muzyk.
Kwas w tym akronimie jest toksyczny jak siarkowy, jeszcze nie zabija, ale powoduje trwałe uszkodzenia – w postrzeganiu transakcji.
Czas na rewizję tego skrótowca, by odrzucić toksyczne idee i destylować czyste zasady.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="10-mental-models-for-learning-anything"&gt;&lt;a href="https://betterhumans.pub/10-mental-models-for-learning-anything-318446320c1e"&gt;10 Mental Models for Learning Anything&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A mental model is a general idea that can be used to explain many different phenomena.
Supply and demand in economics, natural selection in biology, recursion in computer science, or proof by induction in mathematics — these models are everywhere once you know to look for them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="12-factor-app-revisited"&gt;&lt;a href="https://architecturenotes.co/12-factor-app-revisited/"&gt;12 Factor App Revisited&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The Twelve-Factor App methodology is a methodology for building software-as-a-service applications by Adam Wiggins.
We cover how they have since evolved, and what we can learn from them today and how they changed the status quo of yesteryear.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="web-automation-dont-use-selenium-use-playwright"&gt;&lt;a href="https://new.pythonforengineers.com/blog/web-automation-dont-use-selenium-use-playwright/"&gt;Web Automation: Don't Use Selenium, Use Playwright&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The killer feature of Playwright is: You can automatically generate tests by opening a web browser and manually running through the steps you want.
It saves the hassle I faced with Selenium, where you were opening developer tools and finding the Xpath or similar. Yuck 🤮&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="github-stars-wont-pay-your-rent"&gt;&lt;a href="https://kitze.io/posts/github-stars-wont-pay-your-rent"&gt;GitHub stars won't pay your rent&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Solve your own problem, everything else will follow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-bubble-has-popped-for-unprofitable-software-companies"&gt;&lt;a href="https://world.hey.com/dhh/the-bubble-has-popped-for-unprofitable-software-companies-2a0a5f57"&gt;The bubble has popped for unprofitable software companies&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Ride the big money to the moon or die trying.
Anyone interested in living on earth just don't have the vision or the courage to reach for infinity and beyond.
Operating within your means, taking profits along the way, and aiming for a stable, long-term business is not just dismissed, but frowned upon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="skip-the-digital-detoxabstinence-wont-work-but-this-does"&gt;&lt;a href="https://www.nirandfar.com/digital-detox-failure"&gt;Skip the Digital Detox—Abstinence Won’t Work (But This Does)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;So, the next time your weekly screen time summary makes you gasp in horror, don’t listen to the gut reaction to turn off your phone and hide it in a drawer. Let’s not moralize and medicalize the issue unnecessarily.&lt;/p&gt;
&lt;p&gt;Instead, consider whether you’re spending time with your device in a way that matches your values, not the tech company’s.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="generating-memes-and-infographics-with-pillow"&gt;&lt;a href="https://rk.edu.pl/en/generating-memes-and-infographics-with-pillow/"&gt;Generating memes and infographics with Pillow&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Pillow is used for simple operations on images, like resizing, converting to other file formats, and so on. It also can be used to generate custom graphics like infographics or composites of multiple images - memes, infographics, and more. Let's take a look at how it can be done.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="pycon-us-2022-youtube-playlist"&gt;&lt;a href="https://www.youtuFbe.com/playlist?list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl"&gt;PyCon US 2022 - YouTube Playlist&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Recordings from PyCon US 2022 in-person event in Salt Lake City, UT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="python-311-cool-new-features-for-you-to-try"&gt;&lt;a href="https://realpython.com/python311-new-features/"&gt;Python 3.11: Cool New Features for You to Try&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.python.org/downloads/release/python-3110/"&gt;Python 3.11&lt;/a&gt; was published on October 24, 2022. This latest version of Python is faster and more user-friendly. After seventeen months of development, it’s now ready for prime-time use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="getting-started-with-google-apis-in-python"&gt;&lt;a href="https://towardsdatascience.com/getting-started-with-google-apis-in-python-7f07b5d8b806"&gt;Getting Started with Google APIs in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A crash course in using Python and Google APIs to automate all the things you do with Gmail, Google Drive, Calendar, or any other Google API.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="caching-trick-for-python-web-applications"&gt;&lt;a href="https://charlesleifer.com/blog/caching-trick-for-python-web-applications/"&gt;Caching trick for Python web applications&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I'd like to share a simple trick I use to reduce roundtrips pulling data from a cache server (like Redis or Kyoto Tycoon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-right-and-wrong-way-to-set-python-3-as-default-on-a-mac"&gt;&lt;a href="https://opensource.com/article/19/5/python-3-default-mac"&gt;The right and wrong way to set Python 3 as default on a Mac&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There are several ways to get started with Python 3 on macOS, but one way is better than the others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hexagonal-architecture-in-python"&gt;&lt;a href="https://blog.szymonmiks.pl/p/hexagonal-architecture-in-python/"&gt;Hexagonal architecture in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Let me show you a hands-on example using our lovely Python language (FastAPI example included).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="simple-sane-and-sensible-logging-in-python"&gt;&lt;a href="https://medium.com/@petefison/logging-in-python-doesnt-get-simpler-than-this-50a7f24af1f4"&gt;Simple, sane, and sensible Logging in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re not already using it, there’s a simple, powerful wrapper around Python’s Logging module called &lt;a href="https://github.com/PFython/log2d"&gt;log2d&lt;/a&gt; that gives you access to all sorts of advanced features using a deceptively simple syntax.
It’s literally all you need if you’re in the 80% of Developers who just want to adopt good logging practices quickly, using sensible default settings, without having to learn yet another peculiar syntax,
and without having to store away long snippets of boiler-plate code which are too convoluted to be memorable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sentry-how-we-run-our-python-tests-in-hundreds-of-environments-really-fast"&gt;&lt;a href="https://blog.sentry.io/2022/11/14/how-we-run-our-python-tests-in-hundreds-of-environments-really-fast/"&gt;Sentry: How we run our Python tests in hundreds of environments really fast&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Supporting seven Python versions, and around twenty frameworks, and between 2 and 9 versions of each of those frameworks amounts to over 400 environments we run our tests in.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="parallel-nested-for-loops-in-python"&gt;&lt;a href="https://superfastpython.com/parallel-nested-for-loops-in-python/#Single_Process_Pool_and_Shared_Queue_unbounded"&gt;Parallel Nested For-Loops in Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this tutorial, you will discover how to change a nested for-loop to be concurrent or parallel in Python with a suite of worked examples.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="django-performance-improvements-part-4-caching-in-django-applications"&gt;&lt;a href="https://blog.sentry.io/2022/10/24/django-performance-improvements-part-4-caching-in-django-applications/"&gt;Django Performance Improvements - Part 4: Caching in Django Applications&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In the first three parts of this series around improving performance in your Django applications, we focused on database, code optimization, and frontend optimization. In part 4, we will focus on ways to improve the speed of the Django applications.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-filter-django-querysets-15-examples-for-beginners"&gt;&lt;a href="https://ctrlzblog.com/django-queryset-filter-15-examples/"&gt;How to Filter Django QuerySets – 15 Examples For Beginners&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A tutorial on creating QuerySets with Django ORM and filtering the data. Includes how to convert QuerySets into lists.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="realpython-deploy-a-django-app-with-gunicorn-and-nginx-paywall"&gt;&lt;a href="https://realpython.com/courses/django-app-with-gunicorn-nginx/"&gt;RealPython: Deploy a Django App With Gunicorn and Nginx [paywall]&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Taking a Django app from development to production is a demanding but rewarding process.
In this video course, you’ll go through that process step by step.
You’ll start at square one with a no-frills Django application then add in Gunicorn, Nginx, and domain registration.
After working through this video course, you’ll be better equipped to take your Django app into production and serve it to the world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python-libraries"&gt;Python libraries&lt;/h2&gt;
&lt;h3 id="typer"&gt;&lt;a href="https://github.com/tiangolo/typer"&gt;Typer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Typer, build great CLIs. Easy to code. Based on Python type hints.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="mock-turtle"&gt;&lt;a href="https://mockturtle.net/"&gt;Mock Turtle&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As software engineers we probably all faced situations where mock JSON data is required for testing. But making mock JSON data is an extremely tedious task that requires a lot of code. Therefore, we created this generator to make generating random JSON data more convenient.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hari-sekhon-devops-python-tools"&gt;&lt;a href="https://github.com/HariSekhon/DevOps-Python-tools"&gt;Hari Sekhon - DevOps Python Tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;80+ DevOps &amp;amp; Data CLI Tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="hari-sekhon-devops-bash-tools"&gt;&lt;a href="https://github.com/HariSekhon/DevOps-Bash-tools"&gt;Hari Sekhon - DevOps Bash Tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;800+ DevOps Bash Scripts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jaeger"&gt;&lt;a href="https://github.com/jaegertracing/jaeger"&gt;jaeger&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Jaeger, inspired by [Dapper][dapper] and &lt;a href="https://zipkin.io"&gt;OpenZipkin&lt;/a&gt;,
is a distributed tracing platform created by [Uber Technologies][ubeross]
and donated to &lt;a href="https://cncf.io"&gt;Cloud Native Computing Foundation&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="whats-new-in-cloud-run-2022"&gt;&lt;a href="https://medium.com/google-cloud/whats-new-in-cloud-run-2022-fcaadb0a5e16"&gt;What’s new in Cloud Run 2022&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Top 5 problems that Cloud Run solved for me in 2022.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2022-google-cloud-professional-cloud-developer-certification-review"&gt;&lt;a href="https://medium.com/google-cloud/2022-google-cloud-professional-cloud-developer-certification-review-c6a1e27767dc"&gt;2022 Google Cloud Professional Cloud Developer Certification Review&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TL;DR — I highly recommend this certification for anyone looking to validate their knowledge on what it takes to develop and deploy modern applications on GCP.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="google-cloud-region-picker"&gt;&lt;a href="https://googlecloudplatform.github.io/region-picker/"&gt;Google Cloud Region Picker&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This tool helps you pick a Google Cloud region considering carbon footprint, price and latency.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="cloudfront-vs-cloudflare-and-how-to-reduce-response-times-for-both-by-35"&gt;&lt;a href="https://www.foxy.io/blog/cloudfront-vs-cloudflare-and-how-to-reduce-response-times-for-both-by-35/"&gt;CloudFront vs Cloudflare, and how to reduce response times for both by ~35%+&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A few months ago we started working with a company operating in Singapore and Hong Kong that’s using Foxy to expand their online services in the grocery and restaurant industries.
Foxy was a perfect fit, but they were finding our API far too slow to meet their needs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="gcpinstancesinfo"&gt;&lt;a href="https://gcpinstances.doit-intl.com/?cost_duration=monthly"&gt;GCPinstances.info&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Easy GCP Compute Engine Instance Comparison&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="monorepotools"&gt;&lt;a href="https://monorepo.tools/"&gt;monorepo.tools&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Everything you need to know about monorepos, and the tools to build them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="open-library"&gt;&lt;a href="https://openlibrary.org/"&gt;Open Library&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The ultimate goal of the Open Library is to make all the published works of humankind available to everyone in the world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="musicforprogrammingnet"&gt;&lt;a href="https://musicforprogramming.net/about"&gt;musicforprogramming.net&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;To be fully engaged in your own creative or logical challenges, while at the same time fully on board the emotional rails of the musical ideas of another person can make for an experience not dissimilar to meditation — but rather than focussing on the simplicity of nothingness while swatting away introspective daydreams, you are engulfed in enough complexity to cause introspective daydreams to burn up on re-entry.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="internet-czas-dziaac"&gt;&lt;a href=""&gt;Internet. Czas działać!&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;„Internet. Czas działać!” to podcast, z którego dowiecie się, jak internetowe technologie wpływają na społeczeństwo i jak być ich świadomym konsumentem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="pycon-us-2022"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl"&gt;PyCon US 2022&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Recordings from PyCon US 2022 in-person event in Salt Lake City, UT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="jakub-nabrdalik-things-that-work-for-me-so-well-i-cannot-believe-you-are-not-using-it"&gt;&lt;a href="https://www.youtube.com/watch?v=5Er7juSAMXI"&gt;Jakub Nabrdalik - Things that work for me so well I cannot believe you are not using it &lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/5Er7juSAMXI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="a-hipster-history-of-cors-by-devdatta-akhawe-strange-loop-2022"&gt;&lt;a href="https://www.youtube.com/watch?v=0YJ-yhoJh2I"&gt;"A Hipster History of CORS" by Devdatta Akhawe (Strange Loop 2022)&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/0YJ-yhoJh2I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="pycon-us-2022-sam-scott-why-authorization-is-hard"&gt;&lt;a href="https://www.youtube.com/watch?v=2BN96ON48U8"&gt;PyCon US 2022 - Sam Scott: Why Authorization is Hard&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/2BN96ON48U8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="opentelemetry-the-vision-reality-and-how-to-get-started-dotan-horovits-logzio"&gt;&lt;a href="https://www.youtube.com/watch?v=qE1ggEmvz2Y"&gt;OpenTelemetry: The Vision, Reality, and How to Get Started - Dotan Horovits, Logz.io&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/qE1ggEmvz2Y" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="when-to-use-microservices-and-when-not-to-sam-newman-martin-fowler-goto-2020"&gt;&lt;a href="https://www.youtube.com/watch?v=GBTdnfD6s5Q"&gt;When To Use Microservices (And When Not To!) • Sam Newman &amp;amp; Martin Fowler • GOTO 2020&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/GBTdnfD6s5Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Wed, 30 Nov 2022 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2022-11-30:/2022-november-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2022</category></item><item><title>Month summary - October 2022</title><link>https://blog.tobked.dev/2022-october-links</link><description>&lt;h1 id="october-2022"&gt;October 2022&lt;/h1&gt;
&lt;p&gt;I am aggregating here some more or less interesting stuff of various IT related materials which I came across this month.
Some of them are strictly related to the things I did or am currently doing.&lt;/p&gt;
&lt;h2 id="some-thoughts"&gt;Some thoughts&lt;/h2&gt;
&lt;p&gt;​​I made a presentation &lt;strong&gt;"GitHub Actions: (opinionated) Tips &amp;amp; Tricks"&lt;/strong&gt; at &lt;a href="https://www.brival.co/"&gt;Brival&lt;/a&gt; software house.
It was my second public presentation about this topic.
Since then I updated the content and demo repository.
I noticed how beneficial it is to give the same presentation multiple times.
It went significantly better than the first time.
I was not limited with time and had more freedom in going deeper into details.&lt;/p&gt;
&lt;p&gt;&lt;img alt="GitHub Actions Tips &amp;amp; Tricks @Brival" src="https://blog.tobked.dev/images/posts/2022/2022_10_brival.jpg"&gt;&lt;/p&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;h3 id="resiliency-in-distributed-systems"&gt;&lt;a href="https://blog.pragmaticengineer.com/resiliency-in-distributed-systems/"&gt;Resiliency in Distributed Systems&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Understanding the ins and outs of distributed systems is important for both backend engineers and for anyone working with large-scale systems.
Large-scale systems can mean systems with high load and high queries per second (QPS), storing a large amount of data, or ones built with low latency and high reliability.
These systems are pretty common across both Big Tech and high-growth startups.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="what-color-is-your-function"&gt;&lt;a href="https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/"&gt;What Color is Your Function? &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I don’t know about you, but nothing gets me going in the morning quite like a good old fashioned programming language rant.
It stirs the blood to see someone skewer one of those &lt;a href="http://www.paulgraham.com/avg.html"&gt;“blub”&lt;/a&gt; languages the plebians use, muddling through their day with it between furtive visits to StackOverflow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="how-to-distort-scrum-until-it-no-longer-works"&gt;&lt;a href="https://lucasfcosta.com/2022/10/04/distorting-scrum.html"&gt;How to distort Scrum until it no longer works&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem with Scrum is that it usually works. In tech, we hate that. What we like is to give talks, prepare slide decks, and, most importantly, to invent things ourselves.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="you-dont-need-scrum-you-just-need-to-do-kanban-right"&gt;&lt;a href="https://lucasfcosta.com/2022/10/02/scrum-versus-kanban.html"&gt;You don't need Scrum. You just need to do Kanban right.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Why did you choose Scrum instead of Kanban? If you can’t answer that question, you didn’t choose Scrum. Someone else chose it for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-disconnecting-from-your-phone-is-so-good-for-youand-how-to-do-it"&gt;&lt;a href="https://time.com/6219588/how-to-disconnect-phone/"&gt;Why Disconnecting From Your Phone Is So Good for You—and How to Do It&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Research links smartphone overuse to a wide array of physical and mental-health issues, including fatigue and heightened depression and anxiety.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="beating-the-averages"&gt;&lt;a href="http://www.paulgraham.com/avg.html"&gt;Beating the Averages&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Eric Raymond&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;h3 id="your-work-matters-build-your-schedule-accordingly"&gt;&lt;a href="https://www.calnewport.com/blog/2022/09/20/your-work-matters-build-your-schedule-accordingly/"&gt;Your Work Matters. Build Your Schedule Accordingly.&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Your work matters. It’s okay to fight for it in your schedule.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-most-important-piece-of-career-advice-you-probably-never-heard"&gt;&lt;a href="https://www.calnewport.com/blog/2022/08/25/the-most-important-piece-of-career-advice-you-probably-never-heard-2/"&gt;The Most Important Piece of Career Advice You Probably Never Heard&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The advice goes like this:&lt;/p&gt;
&lt;p&gt;Fix the lifestyle you want. Then work backwards from there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="python"&gt;Python&lt;/h2&gt;
&lt;h3 id="how-i-start-every-new-python-backend-api-project"&gt;&lt;a href="https://blog.szymonmiks.pl/p/how-i-start-every-new-python-backend-api-project/"&gt;How I start every new Python backend API project&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;How to setup everything and focus only on the implementation of our lovely business logic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="generate-a-qr-code-with-python"&gt;&lt;a href="https://dev.to/codedex/generate-a-qr-code-with-python-386m"&gt;Generate a QR Code with Python&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In this quick tutorial, we will learn how to create a QR code in Python with qrcode, pillow, and just five lines of code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="developing-restful-apis-with-python-and-flask"&gt;&lt;a href="https://auth0.com/blog/developing-restful-apis-with-python-and-flask/"&gt;Developing RESTful APIs with Python and Flask&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;TL;DR: Throughout this article, we will use Flask and Python to develop a RESTful API. We will create an endpoint that returns static data (dictionaries).
Afterward, we will create a class with two specializations and a few endpoints to insert and retrieve instances of these classes.
Finally, we will look at how to run the API on a Docker container.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="want-cleaner-code-use-the-rule-of-six"&gt;&lt;a href="https://davidamos.dev/the-rule-of-six/"&gt;Want cleaner code? Use the rule of six&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A simple and powerful framework for ironing out confusing code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="decorator-shortcuts"&gt;&lt;a href="https://nedbatchelder.com/blog/202210/decorator_shortcuts.html"&gt;Decorator shortcuts&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When using many decorators in code, there’s a shortcut you can use if you find yourself repeating them. They can be assigned to a variable just like any other Python expression.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="django"&gt;Django&lt;/h2&gt;
&lt;h3 id="production-tips-for-django-apps"&gt;&lt;a href="https://raunaqss.com/engineering/django-production-tips/"&gt;Production Tips for Django Apps&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A few things I make sure to keep in mind when building an application for real world users with Django:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="kubernetes-dashboard"&gt;&lt;a href="https://github.com/kubernetes/dashboard/"&gt;Kubernetes Dashboard&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="the-art-of-command-line"&gt;&lt;a href="https://github.com/jlevy/the-art-of-command-line"&gt;The Art of Command Line&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Master the command line, in one page&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="terminalizer"&gt;&lt;a href="https://github.com/faressoft/terminalizer"&gt;terminalizer&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Record your terminal and generate animated gif images or share a web player link &lt;a href="terminalizer.com"&gt;terminalizer.com&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="asciinema"&gt;&lt;a href="https://github.com/asciinema/asciinema"&gt;asciinema&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;asciinema&lt;/code&gt; lets you easily record terminal sessions and replay them in a terminal as well as in a web browser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="json-crack"&gt;&lt;a href="https://jsoncrack.com/"&gt;JSON Crack&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simple visualization tool for your JSON data. No forced structure, paste your JSON and view it instantly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="tablerio"&gt;&lt;a href="https://github.com/tabler/tabler"&gt;tabler.io&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A premium and open source dashboard template with a responsive and high-quality UI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="cloud"&gt;Cloud&lt;/h2&gt;
&lt;h3 id="loaderio"&gt;&lt;a href="https://loader.io/"&gt;loader.io&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Simple Cloud-based load testing.&lt;/p&gt;
&lt;p&gt;Loader.io is a FREE load testing service that allows you to stress test your web-apps &amp;amp; apis with thousands of concurrent connections.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="why-were-leaving-the-cloud"&gt;&lt;a href="alendar.google.com/calendar/u/0/r/week"&gt;Why we're leaving the cloud&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The savings promised in reduced complexity never materialized. So we're making our plans to leave.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="other-stuff"&gt;Other stuff&lt;/h2&gt;
&lt;h3 id="how-to-write-unmaintainable-code"&gt;&lt;a href="https://cs.fit.edu/~kgallagher/Schtick/How%20To%20Write%20Unmaintainable%20Code.html"&gt;How To Write Unmaintainable Code &lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Ensure a job for life ;-)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;h3 id="the-stack-overflow-podcast-dont-let-software-steal-your-time-ep-491"&gt;&lt;a href="https://stackoverflow.blog/2022/09/28/how-good-software-can-optimize-our-time/"&gt;The Stack Overflow Podcast: Don’t let software steal your time (Ep. 491)&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;While countless apps are competing for your attention, here's some tips on how to fight back.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;h3 id="load-testing-kubernetes-how-to-optimize-your-cluster-resource-allocation-in-production"&gt;&lt;a href="https://www.youtube.com/watch?v=_l8yIqMpWT0"&gt;Load Testing Kubernetes: How to Optimize Your Cluster Resource Allocation in Production&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/_l8yIqMpWT0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="an-intro-to-load-testing-with-locust-and-python-gabriel-boorse"&gt;&lt;a href="https://www.youtube.com/watch?v=uvs4cq6JCeU"&gt;An Intro to Load Testing with Locust and Python - Gabriel Boorse&lt;/a&gt;&lt;/h3&gt;
&lt;div class="videoWrapper" style="height:0; padding-bottom:56.25%; padding-top:25px; position:relative" height="0"&gt;
    &lt;iframe style="position:absolute; top:0; width:100%" height="100%" width="100%" src="https://www.youtube-nocookie.com/embed/uvs4cq6JCeU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Mon, 31 Oct 2022 00:00:00 +0100</pubDate><guid>tag:blog.tobked.dev,2022-10-31:/2022-october-links</guid><category>summary</category><category>python</category><category>blog</category><category>podcast</category><category>series</category><category>aggregate</category><category>summary</category><category>month</category><category>2022</category></item><item><title>Notion packing lists</title><link>https://blog.tobked.dev/notion-packing-lists</link><description>&lt;h1 id="packing-what-is-the-problem-here"&gt;Packing - what is the problem here?&lt;/h1&gt;
&lt;p&gt;From time to time I travel.
Usually not very often, usually not very far.
And I always struggle with the same major problem: packing.
Should I take these things, maybe I took too many other things.
I try to recall what I took last time when I went on a similar trip, and what I had forgotten to take.
Even if I consolidate all necessary stuff there is always the same area for improvement.
A pair of sunglasses during sunny festival morning or lightweight sitting mat during hiking
are not necessary but nice to have.
Nice to have, but easy to forget during last minute packing when the vast cognitive resources are spent on remembering the
more necessary stuff to take.&lt;/p&gt;
&lt;p&gt;I started preparing paper lists some time ago, and it worked very well.
I had some additional time to think about it before.
I offloaded my brain by storing it on the paper. Additionally, crossing out items from it brings some joy.&lt;/p&gt;
&lt;p&gt;But I had to prepare this list again and again every time, so it became obvious that I have to reuse the same lists and improve them through iterations.
I am experimenting with different note-taking systems and currently I am testing &lt;a href="https://www.notion.so/"&gt;Notion&lt;/a&gt; so it was an obvious choice.
I came up with a way to solve it as presented below.&lt;/p&gt;
&lt;h2 id="solution"&gt;Solution&lt;/h2&gt;
&lt;p&gt;All lists are stored in a database with different views and visible columns.&lt;/p&gt;
&lt;p&gt;Columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt; (type: &lt;em&gt;title&lt;/em&gt;): self-described. Name of item. Common for every view.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tag&lt;/strong&gt; (type: &lt;em&gt;multi-select&lt;/em&gt;): for categorizing items.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packed&lt;/strong&gt; (type: &lt;em&gt;checkbox&lt;/em&gt;): packed or not (that is the question).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;individual_list_name&lt;/strong&gt; (type: &lt;em&gt;checkbox&lt;/em&gt;): does the item belong on this list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;individual_list_name_quantity&lt;/strong&gt; (type: &lt;em&gt;number&lt;/em&gt;): quantity of items for individual list if more than 1.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Views:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;main&lt;/strong&gt;: consists of every column. Used for general management across all lists and bulk unchecking  of the 'packed' column.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;individual_list_name&lt;/strong&gt;: filtered by individual_list_name column so only items belonging on this list are visible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below are some screenshots with basic demo lists.&lt;/p&gt;
&lt;h4 id="main-view"&gt;Main view&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/notion_packing_list_screenshot_01.png" alt="Notion Packing List Screenshot 1" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h4 id="individual-lists"&gt;Individual lists&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://blog.tobked.dev/images/posts/2022/notion_packing_list_screenshot_02.png" alt="Notion Packing List Screenshot 2" style="display: block; margin-left: auto; margin-right: auto;"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img src="https://blog.tobked.dev/images/posts/2022/notion_packing_list_screenshot_03.png" alt="Notion Packing List Screenshot 3" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;Every time I travel somewhere I open a corresponding view, or create a new one and follow the list by checking checkboxes in the  ‘packed’ column.
With minimal effort I made some adjustments here and there. Especially after the trips where I forgot something or overpacked. Perfect packing list is on the horizon.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;It may be not the best way of doing packing lists but it works for me.
If someone has another way I am happy to learn about it.
Take it and enjoy it as I do. Your future self will thank you hopefully :).&lt;/p&gt;
&lt;p&gt;Cheers.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tobiasz Kedzierski</dc:creator><pubDate>Tue, 25 Oct 2022 00:00:00 +0200</pubDate><guid>tag:blog.tobked.dev,2022-10-25:/notion-packing-lists</guid><category>productivity</category><category>productivity</category><category>tools</category><category>notion</category></item></channel></rss>