<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>All Posts - Buffo's Corner</title><link>https://buffos.github.io/posts/</link><description>All Posts | Buffo's Corner</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Sun, 01 Mar 2026 10:24:00 +0200</lastBuildDate><atom:link href="https://buffos.github.io/posts/" rel="self" type="application/rss+xml"/><item><title>Angular Enterprise Dashboard - Phase 2.5: Role-Based Access Control with Custom Directives</title><link>https://buffos.github.io/2026-03-16-phase-02-part-05/</link><pubDate>Mon, 16 Feb 2026 22:15:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-16-phase-02-part-05/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>We’ve secured our routes with <a href="/blog/phase-02-part-02" rel="">Functional Guards</a>, but what about the UI itself? An Admin should see the &ldquo;Delete&rdquo; button, but a standard User should not.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3A.3: Polishing the Experience — View Transitions &amp; Incremental Hydration</title><link>https://buffos.github.io/2026-03-18-phase-03a-part-03/</link><pubDate>Wed, 18 Feb 2026 14:10:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03a-part-03/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>We&rsquo;ve built the data pipeline (<a href="/blog/2026-03-18-phase-03a-part-01" rel="">Part 1</a>) and the dashboard UI (<a href="/2026-03-18-phase-03a-part-02" rel="">Part 2</a>). The app works. But &ldquo;works&rdquo; and &ldquo;feels amazing&rdquo; are two very different things.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3B.1: Taming Async — Core resource() Mechanics</title><link>https://buffos.github.io/2026-03-18-phase-03b-part-01/</link><pubDate>Sun, 01 Mar 2026 10:12:39 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03b-part-01/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Welcome to Phase 3B — the deepest technical dive in our series so far. In Phase 3A, we pre-fetched data using resolvers. But resolvers are a <em>routing</em> tool. What about data that depends on user interaction — a search query, a filter, a date picker?</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3B.2: Search-as-You-Type — Abort &amp; Cancellation Patterns</title><link>https://buffos.github.io/2026-03-18-phase-03b-part-02/</link><pubDate>Sun, 01 Mar 2026 10:20:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03b-part-02/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>In the <a href="/2026-03-18-phase-03b-part-01" rel="">previous post</a>, we declared our <code>resource()</code> with a <code>params</code> computation and a <code>loader</code>. The user types a query, and the resource fetches matching projects.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3B.3: Six States of Data — ResourceStatus &amp; the UI</title><link>https://buffos.github.io/2026-03-18-phase-03b-part-03/</link><pubDate>Sun, 01 Mar 2026 10:22:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03b-part-03/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Most applications handle two data states: &ldquo;loading&rdquo; and &ldquo;loaded.&rdquo; Maybe three if they remember errors. But in a real enterprise dashboard, there are <strong>six</strong> distinct states — and handling each explicitly is the difference between a polished product and a buggy one.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3B.4: Optimistic Updates — Local Mutations Without Re-Fetching</title><link>https://buffos.github.io/2026-03-18-phase-03b-part-04/</link><pubDate>Sun, 01 Mar 2026 10:24:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03b-part-04/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>We&rsquo;ve explored how <code>resource()</code> handles <a href="/2026-03-18-phase-03b-part-01" rel="">loading</a>, <a href="/2026-03-18-phase-03b-part-02" rel="">cancellation</a>, and <a href="/2026-03-18-phase-03b-part-03" rel="">all six status states</a>. But there&rsquo;s one pattern left that separates a good app from a great one: <strong>optimistic updates</strong>.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3A.1: Pre-Fetching Data with Functional Resolvers</title><link>https://buffos.github.io/2026-03-18-phase-03a-part-01/</link><pubDate>Wed, 18 Feb 2026 13:58:36 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03a-part-01/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Welcome to Phase 3A — where our dashboard stops being a static shell and starts becoming <em>intelligent</em>. In Phase 2 we secured the routes and built the layout. Now we need to <strong>fill it with data</strong>.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 3A.2: From Route to Component — Signal Inputs &amp; the KPI Dashboard</title><link>https://buffos.github.io/2026-03-18-phase-03a-part-02/</link><pubDate>Wed, 18 Feb 2026 14:05:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-18-phase-03a-part-02/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>In the <a href="/blog/phase-03a-part-01" rel="">previous post</a>, our resolver pre-fetched the dashboard data and handed it to the Router. But how does the <em>component</em> actually receive it?</p>]]></description></item><item><title>Angular Enterprise Dashboard - Introduction: A Journey into Modern Web Engineering</title><link>https://buffos.github.io/2026-03-14-angular-enterprise-board-part-01/</link><pubDate>Sat, 14 Feb 2026 14:40:18 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-14-angular-enterprise-board-part-01/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>In the ever-evolving landscape of web development, staying ahead means embracing the cutting edge. This project, the <strong>Angular Enterprise Dashboard</strong>, is born from a desire to showcase what is possible with the latest advancements in the Angular ecosystem.</p>
<p>More than just a portfolio piece, this dashboard is an exploration of high-performance architecture, reactive state management, and enterprise-grade design patterns.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 1: Building a Resilient Core with Dependency Injection</title><link>https://buffos.github.io/2026-03-15-angular-enterprise-board-part-02/</link><pubDate>Sun, 15 Feb 2026 14:52:37 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-15-angular-enterprise-board-part-02/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Welcome to the second post in our series. In the <a href="/blog/introduction" rel="">Introduction</a>, we talked about the vision. Now, it&rsquo;s time to get our hands dirty. <strong>Phase 1</strong> was all about the foundation—the invisible plumbing that makes a professional application robust or brittle.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 2.1: Reactive Authentication with Angular Signals</title><link>https://buffos.github.io/2026-03-16-phase-02-part-01/</link><pubDate>Mon, 16 Feb 2026 21:52:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-16-phase-02-part-01/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Welcome to Phase 2 of our Enterprise Dashboard journey. Now that we have our foundation (<a href="/blog/phase-01" rel="">Phase 1</a>), it&rsquo;s time to build the &ldquo;brain&rdquo; of our application&rsquo;s security: the <strong>Authentication Service</strong>.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 2.2: Securing the Perimeter - Functional Route Guards</title><link>https://buffos.github.io/2026-03-16-phase-02-part-02/</link><pubDate>Mon, 16 Feb 2026 21:56:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-16-phase-02-part-02/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>In the previous part of this series, we built our <a href="/blog/phase-02-part-01" rel="">Reactive Authentication Service</a>. Now, we need to bridge the gap between our authentication state and our application&rsquo;s navigation.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 2.3: Architecture of the Shell - Building a Premium Layout</title><link>https://buffos.github.io/2026-03-16-phase-02-part-03/</link><pubDate>Mon, 16 Feb 2026 22:00:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-16-phase-02-part-03/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Designing an enterprise application requires more than just functional code; it requires a scalable structure. In <strong>Phase 2.3</strong>, we implemented the <strong>App Shell</strong>, the architectural skeleton that hosts our entire dashboard experience.</p>]]></description></item><item><title>Angular Enterprise Dashboard - Phase 2.4: The 'Wow' Factor - Glassmorphism and CSS Variables</title><link>https://buffos.github.io/2026-03-16-phase-02-part-04/</link><pubDate>Mon, 16 Feb 2026 22:05:00 +0200</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2026-03-16-phase-02-part-04/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2026/angular-3-logo-png-transparent.png" referrerpolicy="no-referrer">
            </div><p>Great design is often seen as &ldquo;flavor,&rdquo; but in enterprise applications, it&rsquo;s about <strong>usability</strong> and <strong>brand trust</strong>. A premium, polished UI tells the user that the system is professional and reliable.</p>]]></description></item><item><title/><link>https://buffos.github.io/2025-09-01-hugo-on-s3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author><name>Kostas Oraiopoulos</name></author><guid>https://buffos.github.io/2025-09-01-hugo-on-s3/</guid><description></description></item><item><title>LaTeX: Creating placeholder boxes for mathematical operations</title><link>https://buffos.github.io/2025-08-31-latexboxes/</link><pubDate>Wed, 27 Aug 2025 22:30:43 +0300</pubDate><author><name>Kostas</name><uri>https://buffos.github.io/authors/kostas/</uri></author><guid>https://buffos.github.io/2025-08-31-latexboxes/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/2025/latex_boxes.webp" referrerpolicy="no-referrer">
            </div><p>Did you ever need empty placeholder boxes in your LaTeX document. I did, and here is a nice way to solve the problem</p>]]></description></item></channel></rss>