PageSourceSearch

https://www.denishartl.com/tag/ai/

html denishartl.com collected 2026-10-04 08:06:52 UTC 54,840 bytes, 969 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" data-color-scheme="light">
3<head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <title>AI - Denis Hartl</title>
7
8    <meta name="HandheldFriendly" content="True">
9    <meta name="MobileOptimized" content="320">
10
11    <link rel="preconnect" href="https://fonts.bunny.net" crossorigin>
12    <link rel="dns-prefetch" href="https://fonts.bunny.net">
13    <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
14    <link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
15
16    <link rel="preload" href="/assets/built/styles.css?v=MLT2xNU-yAsOSfF9" as="style">
17
18    <meta name="theme-color" content="#2872fa">
19
20    <style>
21        :root{--color-accent:#2872fa;--color-background:#fff;--color-foreground:#000}
22        [data-color-scheme="dark"]{--color-background:#1F2023;--color-foreground:#fff}
23        html{background-color:var(--color-background)}
24        body{margin:0;background-color:var(--color-background);color:var(--color-foreground)}
25    </style>
26
27    
27<script>
28        document.documentElement.setAttribute('data-accent-color-original', '#2872fa');
29        document.documentElement.setAttribute('data-contrast-adjustment', 'true');
30        document.documentElement.setAttribute('data-default-color-scheme', 'system' || 'system');
31    </script>
31
32
33    
33<script>(function(){const c=document.documentElement,k=localStorage.getItem("alpine-dark-mode"),M=c.getAttribute("data-default-color-scheme")||"system",y=window.matchMedia("(prefers-color-scheme: dark)").matches;let h;if(k?h=k:M==="system"?h=y?"dark":"light":h=M,c.setAttribute("data-color-scheme",h),h==="dark"){c.classList.add("dark-mode","dark"),c.style.backgroundColor="#1c1917";const t=c.getAttribute("data-contrast-adjustment")==="true",n=c.getAttribute("data-accent-color-original");if(t&&n){const r=C(n);r!==n&&c.style.setProperty("--color-accent",r)}}else c.classList.remove("dark-mode","dark"),c.style.backgroundColor="#ffffff";function g(t){const n=t.replace("#","");return{r:parseInt(n.substring(0,2),16),g:parseInt(n.substring(2,4),16),b:parseInt(n.substring(4,6),16)}}function p(t){const n=t.r/255<=.03928?t.r/255/12.92:Math.pow((t.r/255+.055)/1.055,2.4),r=t.g/255<=.03928?t.g/255/12.92:Math.pow((t.g/255+.055)/1.055,2.4),e=t.b/255<=.03928?t.b/255/12.92:Math.pow((t.b/255+.055)/1.055,2.4);return .2126*n+.7152*r+.0722*e}function x(t,n){const r=p(g(t)),e=p(g(n));return(Math.max(r,e)+.05)/(Math.min(r,e)+.05)}function A(t){const n=g(t),r=n.r/255,e=n.g/255,o=n.b/255,a=Math.max(r,e,o),i=Math.min(r,e,o);let d=0,f=0,s=(a+i)/2;if(a!==i){const l=a-i;switch(f=s>.5?l/(2-a-i):l/(a+i),a){case r:d=((e-o)/l+(e<o?6:0))/6;break;case e:d=((o-r)/l+2)/6;break;case o:d=((r-e)/l+4)/6;break}}return{h:d*360,s:f*100,l:s*100}}function w(t){const n=t.h/360,r=t.s/100,e=t.l/100;let o,a,i;if(r===0)o=a=i=e;else{const f=(m,b,u)=>(u<0&&(u+=1),u>1&&(u-=1),u<.16666666666666666?m+(b-m)*6*u:u<.5?b:u<.6666666666666666?m+(b-m)*(.6666666666666666-u)*6:m),s=e<.5?e*(1+r):e+r-e*r,l=2*e-s;o=f(l,s,n+1/3),a=f(l,s,n),i=f(l,s,n-1/3)}const d=f=>{const s=Math.round(f*255).toString(16);return s.length===1?"0"+s:s};return"#"+d(o)+d(a)+d(i)}function C(t){const n="#1F2023";if(x(t,n)>=4.5)return t;let e=A(t),o=0;for(;o<20&&x(w(e),n)<4.5;)e.l=Math.min(100,e.l+5),o++;return w(e)}})();</script>
33
34
35    <link rel="canonical" href="https://www.denishartl.com/tag/ai/">
36    <meta name="referrer" content="origin-when-cross-origin">
37    
38    <meta property="og:site_name" content="Denis Hartl">
39    <meta property="og:type" content="website">
40    <meta property="og:title" content="AI - Denis Hartl">
41    <meta property="og:description" content="Coding, vibing and experimenting. Sharing it on the internet, our favourite place.">
42    <meta property="og:url" content="https://www.denishartl.com/tag/ai/">
43    <meta property="og:image" content="https://www.denishartl.com/content/images/size/w1200/2026/06/pexels-markusspiske-1089438.jpg">
44    <meta name="twitter:card" content="summary_large_image">
45    <meta name="twitter:title" content="AI - Denis Hartl">
46    <meta name="twitter:description" content="Coding, vibing and experimenting. Sharing it on the internet, our favourite place.">
47    <meta name="twitter:url" content="https://www.denishartl.com/tag/ai/">
48    <meta name="twitter:image" content="https://www.denishartl.com/content/images/size/w1200/2026/06/pexels-markusspiske-1089438.jpg">
49    <meta property="og:image:width" content="1200">
50    <meta property="og:image:height" content="800">
51    
52    
52<script type="application/ld+json">
53{
54    "@context": "https://schema.org",
55    "@type": "Series",
56    "publisher": {
57        "@type": "Organization",
58        "name": "Denis Hartl",
59        "url": "https://www.denishartl.com/",
60        "logo": {
61            "@type": "ImageObject",
62            "url": "https://www.denishartl.com/favicon.ico",
63            "width": 48,
64            "height": 48
65        }
66    },
67    "url": "https://www.denishartl.com/tag/ai/",
68    "name": "AI",
69    "mainEntityOfPage": "https://www.denishartl.com/tag/ai/"
70}
71    </script>
71
72
73    <meta name="generator" content="Ghost 6.67">
74    <link rel="alternate" type="application/rss+xml" title="Denis Hartl" href="https://www.denishartl.com/rss/">
75    
75<script defer src="https://www.denishartl.com/content/files/ghost-apps/portal/portal.min.js" data-i18n="true" data-ghost="https://www.denishartl.com/" data-key="dc0305a02c7bbd51ca1855e8da" data-api="https://www.denishartl.com/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script>
75<style id="gh-members-styles">.gh-post-upgrade-cta-content,
76.gh-post-upgrade-cta {
77    display: flex;
78    flex-direction: column;
79    align-items: center;
80    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
81    text-align: center;
82    width: 100%;
83    color: #ffffff;
84    font-size: 16px;
85}
86
87.gh-post-upgrade-cta-content {
88    border-radius: 8px;
89    padding: 40px 4vw;
90}
91
92.gh-post-upgrade-cta h2 {
93    color: #ffffff;
94    font-size: 28px;
95    letter-spacing: -0.2px;
96    margin: 0;
97    padding: 0;
98}
99
100.gh-post-upgrade-cta p {
101    margin: 20px 0 0;
102    padding: 0;
103}
104
105.gh-post-upgrade-cta small {
106    font-size: 16px;
107    letter-spacing: -0.2px;
108}
109
110.gh-post-upgrade-cta a {
111    color: #ffffff;
112    cursor: pointer;
113    font-weight: 500;
114    box-shadow: none;
115    text-decoration: underline;
116}
117
118.gh-post-upgrade-cta a:hover {
119    color: #ffffff;
120    opacity: 0.8;
121    box-shadow: none;
122    text-decoration: underline;
123}
124
125.gh-post-upgrade-cta a.gh-btn {
126    display: block;
127    background: #ffffff;
128    text-decoration: none;
129    margin: 28px 0 0;
130    padding: 8px 18px;
131    border-radius: 4px;
132    font-size: 16px;
133    font-weight: 600;
134}
135
136.gh-post-upgrade-cta a.gh-btn:hover {
137    opacity: 0.92;
138}</style>
139    
139<script defer src="https://www.denishartl.com/content/files/ghost-apps/sodo-search/sodo-search.min.js" data-key="dc0305a02c7bbd51ca1855e8da" data-styles="https://www.denishartl.com/content/files/ghost-apps/sodo-search/main.css" data-sodo-search="https://www.denishartl.com/" data-locale="en" crossorigin="anonymous"></script>
139
140    
141    <link href="https://www.denishartl.com/webmentions/receive/" rel="webmention">
142    
142<script defer src="/public/cards.min.js?v=ShRHxgy4po8zN-Wf"></script>
142
143    <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=WwnU9jw5ancNC8Gc">
144    
144<script defer src="/public/comment-counts.min.js?v=oFYkaGLdiMqB8VN9" data-ghost-comments-counts-api="https://www.denishartl.com/members/api/comments/counts/"></script>
144
145    
145<script defer src="/public/member-attribution.min.js?v=AKG4hWena9j3yX3I"></script>
145
146    
146<script defer src="/public/ghost-stats.min.js?v=vFcCUf6ZQ0Hyhc8h" data-stringify-payload="false" data-datasource="analytics_events" data-storage="localStorage" data-host="https://www.denishartl.com/.ghost/analytics/api/v1/page_hit"  tb_site_uuid="8d970b1c-ffde-4d53-b8e0-ed2c66210858" tb_post_uuid="undefined" tb_post_type="null" tb_member_uuid="undefined" tb_member_status="undefined" tb_gift_link=""></script>
146<style>:root {--ghost-accent-color: #2872fa;}</style>
147
148    <link rel="stylesheet" href="/assets/built/styles.css?v=MLT2xNU-yAsOSfF9">
149</head>
150<body class="tag-template tag-ai">
151    <a href="#main" class="skip-link">Skip to main content</a>
152
153    <div class="site-wrapper">
154        <header role="banner" class="site-header header-minimal">
155    <div class="container mx-auto px-4 py-8 max-w-4xl">
156            <div class="header-content flex items-center justify-between">
157                <div class="site-branding site-brand">
158                        <a href="https://www.denishartl.com" class="site-title site-title-link text-xl font-bold no-underline text-[var(--color-contrast)]">
159                            Denis Hartl
160                        </a>
161                </div>
162
163                <div class="header-actions flex items-center gap-4">
164                    <button
165                        class="nav-toggle menu-toggle md:hidden p-2 -mr-2 rounded-md text-[var(--color-foreground)] hover:bg-[var(--color-background-200)]"
166                        aria-label="Toggle navigation menu"
167                        aria-expanded="false"
168                    >
169                        <svg class="menu-icon w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
170                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
171                        </svg>
172                        <svg class="close-icon w-6 h-6 hidden" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
173                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
174                        </svg>
175                    </button>
176
177                    <nav role="navigation" aria-label="Main navigation" class="site-nav">
178        <ul class="nav-list flex gap-6 items-center m-0 p-0 list-none">
179                <li class="nav-item">
180                    <a href="/" class="nav-link no-underline font-medium text-[var(--color-foreground)] hover:text-[var(--color-accent)]">
181                        Home
182                    </a>
183                </li>
184                <li class="nav-item">
185                    <a href="/contact/" class="nav-link no-underline font-medium text-[var(--color-foreground)] hover:text-[var(--color-accent)]">
186                        Contact
187                    </a>
188                </li>
189                <li class="nav-item">
190                    <a href="/about/" class="nav-link no-underline font-medium text-[var(--color-foreground)] hover:text-[var(--color-accent)]">
191                        About
192                    </a>
193                </li>
194
195
196            <li class="nav-item">
197                <button
198                    data-ghost-search
199                    aria-label="Search"
200                    class="nav-link search-button no-underline font-medium flex items-center justify-center text-[var(--color-foreground)] hover:text-[var(--color-accent)]">
201                    <i class="ri-search-line" aria-hidden="true"></i>
202                </button>
203            </li>
204
205            <li class="nav-item">
206                <button
207                    data-dark-mode-toggle
208                    aria-label="Toggle dark mode"
209                    class="nav-link no-underline font-medium flex items-center justify-center text-[var(--color-foreground)] hover:text-[var(--color-accent)]">
210                    <i class="ri-moon-line dark-mode-icon-moon" aria-hidden="true"></i>
211                    <i class="ri-sun-line dark-mode-icon-sun hidden" aria-hidden="true"></i>
212                </button>
213            </li>
214        </ul>
215</nav>
216                </div>
217            </div>
218    </div>
219</header>
220
221        <main id="main" role="main" tabindex="-1" class="site-main">
222            
223<div class="container mx-auto px-4 py-12 max-w-4xl">
224        <header class="tag-header archive-header mb-12">
225            <h1 class="tag-title archive-title text-4xl md:text-5xl font-bold mb-4" style="color: var(--color-contrast);">
226                AI
227            </h1>
228            <p class="tag-count post-count text-sm mt-4" style="color: var(--color-foreground); opacity: 0.6;">
229                11 posts
230            </p>
231        </header>
232
233        <div class="post-list tag-posts">
234                    
235<article class="post tag-ai tag-claude-code tag-grafana featured post-card mb-12 pb-12 border-b last:border-b-0 featured-post" style="border-color: var(--color-border);">
236
237    <header class="post-card-header">
238            <div class="featured-indicator flex items-center gap-1.5 mb-3 text-sm font-medium" style="color: var(--color-accent);">
239                <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true">
240                    <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
240
241                </svg>
242                <span>Featured</span>
243            </div>
244        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
245            <a href="/grafana-dashboards-claude-code/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
246                Building Dashboards with Grafana MCP and Claude Code
247            </a>
248        </h2>
249
250        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
251
252            <time class="post-date post-card-date" datetime="2026-06-10">
253                Jun 10, 2026
254            </time>
255
256                <span class="post-reading-time post-card-reading-time">11 min read</span>
257        </div>
258
259        
260    <div class="post-tags flex flex-wrap gap-2 mb-6">
261            <a
262                href="/tag/ai/"
263                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
264                style="color: var(--color-foreground); background-color: var(--color-background-200);"
265                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
266                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
267            >
268                AI
269            </a>
270            <a
271                href="/tag/claude-code/"
272                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
273                style="color: var(--color-foreground); background-color: var(--color-background-200);"
274                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
275                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
276            >
277                Claude Code
278            </a>
279            <a
280                href="/tag/grafana/"
281                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
282                style="color: var(--color-foreground); background-color: var(--color-background-200);"
283                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
284                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
285            >
286                Grafana
287            </a>
288    </div>
289    </header>
290
291        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
292            <p class="excerpt-content">Building Grafana dashboards by hand is tedious. Here&#39;s how I use Claude Code and the Grafana MCP to generate them, then provision from GitHub.…</p>
293        </div>
294
295    <footer class="post-card-footer">
296        <a href="/grafana-dashboards-claude-code/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
297            <span class="read-more-text">Read more</span>
298            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
299                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
300            </svg>
301        </a>
302    </footer>
303</article>
304
305                    
306<article class="post tag-ai tag-azure post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
307
308    <header class="post-card-header">
309        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
310            <a href="/local-yolo-training-azure-ml/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
311                Tracking local YOLO model training in Azure ML Workspace
312            </a>
313        </h2>
314
315        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
316
317            <time class="post-date post-card-date" datetime="2026-07-02">
318                Jul 2, 2026
319            </time>
320
321                <span class="post-reading-time post-card-reading-time">19 min read</span>
322        </div>
323
324        
325    <div class="post-tags flex flex-wrap gap-2 mb-6">
326            <a
327                href="/tag/ai/"
328                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
329                style="color: var(--color-foreground); background-color: var(--color-background-200);"
330                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
331                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
332            >
333                AI
334            </a>
335            <a
336                href="/tag/azure/"
337                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
338                style="color: var(--color-foreground); background-color: var(--color-background-200);"
339                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
340                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
341            >
342                Azure
343            </a>
344    </div>
345    </header>
346
347        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
348            <p class="excerpt-content">Learn to track local YOLO training runs in Azure ML Workspace with MLflow, including dataset versioning, model registry, and champion/challenger picks.…</p>
349        </div>
350
351    <footer class="post-card-footer">
352        <a href="/local-yolo-training-azure-ml/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
353            <span class="read-more-text">Read more</span>
354            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
355                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
356            </svg>
357        </a>
358    </footer>
359</article>
360                    
361<article class="post tag-ai tag-personal post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
362
363    <header class="post-card-header">
364        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
365            <a href="/ai-made-me-feel-miserable/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
366                AI made me miserable
367            </a>
368        </h2>
369
370        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
371
372            <time class="post-date post-card-date" datetime="2026-06-25">
373                Jun 25, 2026
374            </time>
375
376                <span class="post-reading-time post-card-reading-time">9 min read</span>
377        </div>
378
379        
380    <div class="post-tags flex flex-wrap gap-2 mb-6">
381            <a
382                href="/tag/ai/"
383                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
384                style="color: var(--color-foreground); background-color: var(--color-background-200);"
385                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
386                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
387            >
388                AI
389            </a>
390            <a
391                href="/tag/personal/"
392                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
393                style="color: var(--color-foreground); background-color: var(--color-background-200);"
394                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
395                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
396            >
397                Personal
398            </a>
399    </div>
400    </header>
401
402        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
403            <p class="excerpt-content">Using AI all day left me drained and unfulfilled. Read how it made me miserable and the things I am doing to get out of it.…</p>
404        </div>
405
406    <footer class="post-card-footer">
407        <a href="/ai-made-me-feel-miserable/" class="read-more read-more-link 
407inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
408            <span class="read-more-text">Read more</span>
409            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
410                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
411            </svg>
412        </a>
413    </footer>
414</article>
415                    
416<article class="post tag-ai-posture-detection tag-ai tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
417
418    <header class="post-card-header">
419        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
420            <a href="/yolo-posture-detection-continuous-learning/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
421                AI Sitting Posture Detection with NVIDIA Jetson Orin Nano: Continuous Learning and Improvement (Part 3)
422            </a>
423        </h2>
424
425        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
426
427            <time class="post-date post-card-date" datetime="2026-01-24">
428                Jan 24, 2026
429            </time>
430
431                <span class="post-reading-time post-card-reading-time">20 min read</span>
432        </div>
433
434        
435    <div class="post-tags flex flex-wrap gap-2 mb-6">
436            <a
437                href="/tag/ai-posture-detection/"
438                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
439                style="color: var(--color-foreground); background-color: var(--color-background-200);"
440                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
441                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
442            >
443                AI posture detection
444            </a>
445            <a
446                href="/tag/ai/"
447                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
448                style="color: var(--color-foreground); background-color: var(--color-background-200);"
449                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
450                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
451            >
452                AI
453            </a>
454            <a
455                href="/tag/nvidia-jetson/"
456                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
457                style="color: var(--color-foreground); background-color: var(--color-background-200);"
458                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
459                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
460            >
461                NVIDIA Jetson
462            </a>
463    </div>
464    </header>
465
466        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
467            <p class="excerpt-content">Learn how to implement continuous model improvement for YOLO-based posture detection on the Jetson Orin Nano—from logging predictions to automated retraining.…</p>
468        </div>
469
470    <footer class="post-card-footer">
471        <a href="/yolo-posture-detection-continuous-learning/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
472            <span class="read-more-text">Read more</span>
473            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
474                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
475            </svg>
476        </a>
477    </footer>
478</article>
479                    
480<article class="post tag-ai tag-ai-posture-detection tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
481
482    <header class="post-card-header">
483        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
484            <a href="/yolo-11-retraining-continuous-learning/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
485                Comparing YOLO 11 Retraining Strategies for Continuous Learning
486            </a>
487        </h2>
488
489        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
490
491            <time class="post-date post-card-date" datetime="2026-01-17">
492                Jan 17, 2026
493            </time>
494
495                <span class="post-reading-time post-card-reading-time">10 min read</span>
496        </div>
497
498        
499    <div class="post-tags flex flex-wrap gap-2 mb-6">
500            <a
501                href="/tag/ai/"
502                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
503                style="color: var(--color-foreground); background-color: var(--color-background-200);"
504                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
505                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
506            >
507                AI
508            </a>
509            <a
510                href="/tag/ai-posture-detection/"
511                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
512                style="color: var(--color-foreground); background-color: var(--color-background-200);"
513                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
514                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
515            >
516                AI posture detection
517            </a>
518            <a
519                href="/tag/nvidia-jetson/"
520                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
521                style="color: var(--color-foreground); background-color: var(--color-background-200);"
522                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
523                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
524            >
525                NVIDIA Jetson
526            </a>
527    </div>
528    </header>
529
530        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
531            <p class="excerpt-content">I tested four different YOLO 11 retraining strategies for continuous learning—and the results surprised me. Fine-tuning with frozen backbone layers achieved the best accuracy while using 70% less RAM than full retraining.…</p>
532        </div>
533
534    <footer class="post-card-footer">
535        <a href="/yolo-11-retraining-continuous-learning/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
536            <span class="read-more-text">Read more</span>
537            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
538                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
539            </svg>
540        </a>
541    </footer>
542</article>
543                    
544<article class="post tag-ai-posture-detection tag-ai tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
545
546    <header class="post-card-header">
547        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
548            <a href="/jetson-posture-detection-fastapi-alerting/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
549                AI Sitting Posture Detection with NVIDIA Jetson Orin Nano: Web UI and Alerting (Part 2)
550            </a>
551        </h2>
552
553        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
554
555            <time class="post-date post-card-date" datetime="2026-01-08">
556                Jan 8, 2026
557            </time>
558
559                <span class="post-reading-time post-card-reading-time">15 min read</span>
560        </div>
561
562        
563    <div class="post-tags flex flex-wrap gap-2 mb-6">
564            <a
565                href="/tag/ai-posture-detection/"
566                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
567                style="color: var(--color-foreground); background-color: var(--color-background-200);"
568                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
569                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
570            >
571                AI posture detection
572            </a>
573            <a
574                href="/tag/ai/"
575                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
576                style="color: var(--color-foreground); background-color: var(--color-background-200);"
577                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
578                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
579            >
580                AI
581            </a>
582            <a
583                href="/tag/nvidia-jetson/"
584                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
585                style="color: var(--color-foreground); background-color: var(--color-background-200);"
586                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
587                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
588            >
589                NVIDIA Jetson
590            </a>
591    </div>
592    </header>
593
594        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
595            <p class="excerpt-content">Deploy your YOLO posture model on Jetson Orin Nano using FastAPI. Build a websocket web UI, alerting system, and MacOS app. Full source code included.…</p>
596        </div>
597
598    <footer class="post-card-footer">
599        <a href="/jetson-posture-detection-fastapi-alerting/" class="read-more read-more-link 
599inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
600            <span class="read-more-text">Read more</span>
601            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
602                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
603            </svg>
604        </a>
605    </footer>
606</article>
607                    
608<article class="post tag-ai-posture-detection tag-ai tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
609
610    <header class="post-card-header">
611        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
612            <a href="/yolo-posture-detection-jetson-orin-nano/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
613                AI Sitting Posture Detection with NVIDIA Jetson Orin Nano: Model Training and Preparation (Part 1)
614            </a>
615        </h2>
616
617        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
618
619            <time class="post-date post-card-date" datetime="2026-01-02">
620                Jan 2, 2026
621            </time>
622
623                <span class="post-reading-time post-card-reading-time">21 min read</span>
624        </div>
625
626        
627    <div class="post-tags flex flex-wrap gap-2 mb-6">
628            <a
629                href="/tag/ai-posture-detection/"
630                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
631                style="color: var(--color-foreground); background-color: var(--color-background-200);"
632                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
633                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
634            >
635                AI posture detection
636            </a>
637            <a
638                href="/tag/ai/"
639                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
640                style="color: var(--color-foreground); background-color: var(--color-background-200);"
641                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
642                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
643            >
644                AI
645            </a>
646            <a
647                href="/tag/nvidia-jetson/"
648                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
649                style="color: var(--color-foreground); background-color: var(--color-background-200);"
650                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
651                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
652            >
653                NVIDIA Jetson
654            </a>
655    </div>
656    </header>
657
658        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
659            <p class="excerpt-content">Train a custom YOLO model for sitting posture detection on Jetson Orin Nano. Includes data collection, training, TensorRT optimization, and full GitHub code.…</p>
660        </div>
661
662    <footer class="post-card-footer">
663        <a href="/yolo-posture-detection-jetson-orin-nano/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
664            <span class="read-more-text">Read more</span>
665            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
666                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
667            </svg>
668        </a>
669    </footer>
670</article>
671                    
672<article class="post tag-ai tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
673
674    <header class="post-card-header">
675        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
676            <a href="/nvidia-jetson-orin-nano-getting-started-with-yolo/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
677                NVIDIA Jetson Orin Nano: Getting Started with YOLO
678            </a>
679        </h2>
680
681        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
682
683            <time class="post-date post-card-date" datetime="2025-12-22">
684                Dec 22, 2025
685            </time>
686
687                <span class="post-reading-time post-card-reading-time">11 min read</span>
688        </div>
689
690        
691    <div class="post-tags flex flex-wrap gap-2 mb-6">
692            <a
693                href="/tag/ai/"
694                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
695                style="color: var(--color-foreground); background-color: var(--color-background-200);"
696                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
697                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
698            >
699                AI
700            </a>
701            <a
702                href="/tag/nvidia-jetson/"
703                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
704                style="color: var(--color-foreground); background-color: var(--color-background-200);"
705                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
706                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
707            >
708                NVIDIA Jetson
709            </a>
710    </div>
711    </header>
712
713        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
714            <p class="excerpt-content">A beginner&#39;s guide to running YOLO on the NVIDIA Jetson Orin Nano. Covers setup challenges, camera streaming in Jupyter, and hands-on examples of object detection, segmentation, classification, and pose estimation.…</p>
715        </div>
716
717    <footer class="post-card-footer">
718        <a href="/nvidia-jetson-orin-nano-getting-started-with-yolo/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
719            <span class="read-more-text">Read more</span>
720            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
721                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
722            </svg>
723        </a>
724    </footer>
725</article>
726                    
727<article class="post tag-ai tag-nvidia-jetson post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
728
729    <header class="post-card-header">
730        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
731            <a href="/nvidia-jetson-orin-nano-first-impressions-initial-setup/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
732                NVIDIA Jetson Orin Nano: First Impressions &amp; Initial Setup
733            </a>
734        </h2>
735
736        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
737
738            <time class="post-date post-card-date" datetime="2025-12-16">
739                Dec 16, 2025
740            </time>
741
742                <span class="post-reading-time post-card-reading-time">11 min read</span>
743        </div>
744
745        
746    <div class="post-tags flex flex-wrap gap-2 mb-6">
747            <a
748                href="/tag/ai/"
749                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
750                style="color: var(--color-foreground); background-color: var(--color-background-200);"
751                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
752                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
753            >
754                AI
755            </a>
756            <a
757                href="/tag/nvidia-jetson/"
758                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
759                style="color: var(--color-foreground); background-color: var(--color-background-200);"
760                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
761                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
762            >
763                NVIDIA Jetson
764            </a>
765    </div>
766    </header>
767
768        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
769            <p class="excerpt-content">First impressions and complete setup guide for the NVIDIA Jetson Orin Nano Developer Kit. Covers hardware assembly, SSD and camera installation, SDK manager troubleshooting, and remote access configuration.…</p>
770        </div>
771
772    <footer class="post-card-footer">
773        <a href="/nvidia-jetson-orin-nano-first-impressions-initial-setup/" class="read-more read-more-link 
773inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
774            <span class="read-more-text">Read more</span>
775            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
776                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
777            </svg>
778        </a>
779    </footer>
780</article>
781                    
782<article class="post tag-ai post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
783
784    <header class="post-card-header">
785        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
786            <a href="/exploring-collaborative-ai-coding-agents/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
787                Exploring collaborative AI Coding Agents
788            </a>
789        </h2>
790
791        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
792
793            <time class="post-date post-card-date" datetime="2025-11-30">
794                Nov 30, 2025
795            </time>
796
797                <span class="post-reading-time post-card-reading-time">19 min read</span>
798        </div>
799
800        
801    <div class="post-tags flex flex-wrap gap-2 mb-6">
802            <a
803                href="/tag/ai/"
804                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
805                style="color: var(--color-foreground); background-color: var(--color-background-200);"
806                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
807                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
808            >
809                AI
810            </a>
811    </div>
812    </header>
813
814        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
815            <p class="excerpt-content">An experiment with manually orchestrating multiple Claude Code agents—Architect, Engineer, and Documenter—to build a chess web app. Covers planning, workflow, prompts, and lessons learned about working with collaborative AI coding agents.…</p>
816        </div>
817
818    <footer class="post-card-footer">
819        <a href="/exploring-collaborative-ai-coding-agents/" class="read-more read-more-link inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
820            <span class="read-more-text">Read more</span>
821            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
822                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
823            </svg>
824        </a>
825    </footer>
826</article>
827                    
828<article class="post tag-ai post-card mb-12 pb-12 border-b last:border-b-0 " style="border-color: var(--color-border);">
829
830    <header class="post-card-header">
831        <h2 class="post-card-title post-title text-2xl md:text-3xl font-bold leading-tight mb-3">
832            <a href="/how-to-get-free-tokens-for-the-openai-api/" class="post-card-title-link no-underline" style="color: var(--color-contrast);">
833                How to get free tokens for the OpenAI API
834            </a>
835        </h2>
836
837        <div class="post-card-meta post-meta flex flex-wrap items-center gap-3 text-sm mb-4" style="color: var(--color-foreground); opacity: 0.7;">
838
839            <time class="post-date post-card-date" datetime="2025-11-03">
840                Nov 3, 2025
841            </time>
842
843                <span class="post-reading-time post-card-reading-time">4 min read</span>
844        </div>
845
846        
847    <div class="post-tags flex flex-wrap gap-2 mb-6">
848            <a
849                href="/tag/ai/"
850                class="tag inline-block px-3 py-1 text-sm rounded-full no-underline transition-colors"
851                style="color: var(--color-foreground); background-color: var(--color-background-200);"
852                onmouseover="this.style.color='var(--color-accent)'; this.style.backgroundColor='var(--color-background-300)';"
853                onmouseout="this.style.color='var(--color-foreground)'; this.style.backgroundColor='var(--color-background-200)';"
854            >
855                AI
856            </a>
857    </div>
858    </header>
859
860        <div class="post-card-excerpt post-excerpt leading-relaxed mb-4" style="color: var(--color-foreground);">
861            <p class="excerpt-content">Get daily free tokens for the OpenAI API by enabling data sharing. Learn about eligibility requirements, token limits by model, and the trade-offs you should know before opting in.…</p>
862        </div>
863
864    <footer class="post-card-footer">
865        <a href="/how-to-get-free-tokens-for-the-openai-api/" class="read-more read-more-link 
865inline-flex items-center text-accent-600 dark:text-accent-400 hover:text-accent-700 dark:hover:text-accent-300 font-medium no-underline group">
866            <span class="read-more-text">Read more</span>
867            <svg class="read-more-icon w-4 h-4 ml-1 transition-transform duration-200 ease-out group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
868                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
869            </svg>
870        </a>
871    </footer>
872</article>
873        </div>
874
875        <nav class="pagination" role="navigation">
876    <div class="pagination-wrapper">
877
878        <span class="pagination-info">
879            Page 1 of 1
880        </span>
881
882    </div>
883</nav>
884
885</div>
886
887        </main>
888
889        <footer role="contentinfo" class="site-footer">
890    <div class="container mx-auto px-4 py-12 max-w-4xl">
891        <div class="footer-subscribe subscribe-section mb-8 pb-16 border-b" style="border-color: var(--color-border);">
892            <div class="subscribe-content max-w-2xl mx-auto text-center">
893                <h3 class="subscribe-heading text-xl font-semibold mb-2" style="color: var(--color-contrast);">
894                    Subscribe to Denis Hartl
895                </h3>
896                <p class="subscribe-description mb-4" style="color: var(--color-foreground);">Sign up for more like this</p>
897
898                <form data-members-form="subscribe" class="subscribe-form max-w-md mx-auto">
899                    <div class="flex flex-col sm:flex-row gap-2">
900                        <label for="footer-email-nonpost" class="sr-only">Your email address</label>
901                        <input id="footer-email-nonpost" type="email" data-members-email
902                            placeholder="Your email address" required
903                            class="flex-1 px-4 py-2 rounded-md focus:outline-none focus:ring-2"
904                            style="border: 1px solid var(--color-border); background-color: var(--color-background); color: var(--color-foreground); --tw-ring-color: var(--color-accent);">
905                        <button type="submit" class="px-6 py-2 rounded-md font-medium whitespace-nowrap"
906                            style="background-color: var(--color-accent); color: var(--color-accent-foreground);">
907                            Subscribe
908                        </button>
909                    </div>
910                    <p data-members-error></p>
911                    <p data-members-feedback>Thank you for subscribing! Please check your email to confirm your subscription.</p>
912                </form>
913            </div>
914        </div>
915
916        <nav class="footer-nav secondary-nav mb-8" role="navigation" aria-label="Secondary navigation">
917            <ul class="flex flex-wrap justify-center gap-x-6 gap-y-2 list-none m-0 p-0">
918                <li>
919                    <a href="https://github.com/denishartl" class="footer-nav-link text-sm transition-colors"
920                        style="color: var(--color-foreground);">
921                        GitHub
922                    </a>
923                </li>
924                <li>
925                    <a href="https://www.linkedin.com/in/denis-hartl-45a331226/" class="footer-nav-link text-sm transition-colors"
926                        style="color: var(--color-foreground);">
927                        LinkedIn
928                    </a>
929                </li>
930                <li>
931                    <a href="/impressum/" class="footer-nav-link text-sm transition-colors"
932                        style="color: var(--color-foreground);">
933                        Impressum
934                    </a>
935                </li>
936                <li>
937                    <a href="/privacy-policy/" class="footer-nav-link text-sm transition-colors"
938                        style="color: var(--color-foreground);">
939                        Privacy Policy
940                    </a>
941                </li>
942            </ul>
943        </nav>
944
945        <div class="footer-content footer-credits text-center text-sm" style="color: var(--color-foreground);">
946            <p class="copyright mb-2">
947                &copy; 2026 <a href="https://www.denishartl.com" class="site-link"
948                    style="color: var(--color-contrast);">Denis Hartl</a>
949            </p>
950            <p class="powered-by">
951                Published with <a href="https://ghost.org" target="_blank" rel="noopener" class="ghost-link"
952                    style="color: var(--color-foreground);">Ghost</a>
953                &middot;
954                Theme by <a href="https://www.magicpages.co" target="_blank" rel="noopener" class="theme-link"
955                    style="color: var(--color-foreground);">Magic
956                    Pages</a>
957            </p>
958        </div>
959
960    </div>
961</footer>    </div>
962
963    
964
965    
965<script>(function(){var s=document.documentElement.getAttribute("data-color-scheme"),c=document.querySelector('script[src*="comments-ui"]');if(c&&s)c.setAttribute("data-color-scheme",s)})();</script>
965
966
967    
967<script src="/assets/built/main.js?v=FFG_Chuo94Uk1G0J" defer></script>
967
968</body>
969</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.