<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sam SEO Sepiol — Software Engineer</title><link>https://johannesl.com/</link><description>Recent content on Sam SEO Sepiol — Software Engineer</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 22 Oct 2025 10:00:00 +0000</lastBuildDate><atom:link href="https://johannesl.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Weather Dashboard</title><link>https://johannesl.com/projects/weather-dashboard/</link><pubDate>Wed, 22 Oct 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/projects/weather-dashboard/</guid><description>&lt;p&gt;A clean, responsive weather dashboard that shows current weather and a five-day forecast for any city.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;p&gt;The dashboard displays temperature, humidity, wind speed, and weather conditions. A five-day forecast shows daily highs, lows, and expected conditions.&lt;/p&gt;
&lt;h3 id="location-search"&gt;Location Search&lt;/h3&gt;
&lt;p&gt;Users search by city name. The app geocodes the city and fetches weather data from the OpenWeather API. Recent searches are saved in local storage for quick access.&lt;/p&gt;
&lt;h3 id="responsive-design"&gt;Responsive Design&lt;/h3&gt;
&lt;p&gt;The layout adapts to mobile, tablet, and desktop viewports. The forecast grid stacks vertically on small screens and displays horizontally on larger ones.&lt;/p&gt;</description></item><item><title>CLI Task Manager</title><link>https://johannesl.com/projects/cli-task-manager/</link><pubDate>Sat, 18 Oct 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/projects/cli-task-manager/</guid><description>&lt;p&gt;A lightweight task manager designed for developers who prefer the command line over GUI applications.&lt;/p&gt;
&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Most task management tools are web-based and require context switching away from the terminal. This tool keeps task management within the development workflow.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;p&gt;The CLI supports creating, listing, completing, and archiving tasks. Tasks can be assigned priorities, due dates, and project labels.&lt;/p&gt;
&lt;h3 id="priority-system"&gt;Priority System&lt;/h3&gt;
&lt;p&gt;Tasks are sorted by priority and due date. Overdue tasks are highlighted automatically. The priority system uses a simple high, medium, low scale.&lt;/p&gt;</description></item><item><title>Personal Portfolio Site</title><link>https://johannesl.com/projects/personal-portfolio-site/</link><pubDate>Wed, 15 Oct 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/projects/personal-portfolio-site/</guid><description>&lt;p&gt;This website is itself a project. Built with Hugo for maximum performance and SEO optimization.&lt;/p&gt;
&lt;h2 id="goals"&gt;Goals&lt;/h2&gt;
&lt;p&gt;The primary goal was to create a personal website that scores perfectly on Lighthouse audits for performance, accessibility, best practices, and SEO. Secondary goals included easy content management and automated deployment.&lt;/p&gt;
&lt;h2 id="technical-approach"&gt;Technical Approach&lt;/h2&gt;
&lt;p&gt;Hugo was chosen for its build speed and zero-JavaScript output. The theme is custom-built to maintain full control over the HTML output, ensuring semantic markup and proper structured data on every page.&lt;/p&gt;</description></item><item><title>How to Optimize Images for the Web</title><link>https://johannesl.com/blog/how-to-optimize-images-for-the-web/</link><pubDate>Thu, 02 Oct 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/how-to-optimize-images-for-the-web/</guid><description>&lt;p&gt;Images are often the largest assets on a web page. Optimizing them is one of the most impactful performance improvements you can make. Properly optimized images improve load times, Core Web Vitals scores, and user experience.&lt;/p&gt;
&lt;h2 id="why-image-optimization-matters"&gt;Why Image Optimization Matters&lt;/h2&gt;
&lt;p&gt;Unoptimized images account for a significant portion of page weight on most websites. A single uncompressed photograph can be larger than all the HTML, CSS, and JavaScript on a page combined.&lt;/p&gt;</description></item><item><title>Setting Up a Development Environment in 2025</title><link>https://johannesl.com/blog/setting-up-a-development-environment-2025/</link><pubDate>Sun, 28 Sep 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/setting-up-a-development-environment-2025/</guid><description>&lt;p&gt;A well-configured development environment makes you more productive and reduces friction in your daily workflow. This guide covers the essential tools and configurations for a modern setup in 2025.&lt;/p&gt;
&lt;h2 id="code-editor"&gt;Code Editor&lt;/h2&gt;
&lt;p&gt;Your code editor is where you spend most of your development time. The right editor with proper configuration significantly impacts productivity.&lt;/p&gt;
&lt;h3 id="visual-studio-code"&gt;Visual Studio Code&lt;/h3&gt;
&lt;p&gt;VS Code remains the most popular editor for web development. It is free, extensible, and available on all platforms. The built-in terminal, Git integration, and extension marketplace make it a complete development environment.&lt;/p&gt;</description></item><item><title>CSS Grid vs Flexbox: When to Use Which</title><link>https://johannesl.com/blog/css-grid-vs-flexbox-when-to-use-which/</link><pubDate>Sun, 21 Sep 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/css-grid-vs-flexbox-when-to-use-which/</guid><description>&lt;p&gt;CSS Grid and Flexbox are both powerful layout systems in modern CSS. They solve different problems and work best in different situations. Understanding when to use each one is essential for building clean, maintainable layouts.&lt;/p&gt;
&lt;h2 id="the-key-difference"&gt;The Key Difference&lt;/h2&gt;
&lt;p&gt;Flexbox is one-dimensional. It handles layout in a single direction: either a row or a column. Grid is two-dimensional. It handles layout in both rows and columns simultaneously.&lt;/p&gt;
&lt;h3 id="when-flexbox-wins"&gt;When Flexbox Wins&lt;/h3&gt;
&lt;p&gt;Use Flexbox when you need to align items along a single axis. Navigation bars, button groups, and card rows are natural fits. Flexbox is also the right choice when the content should determine the layout size.&lt;/p&gt;</description></item><item><title>The Complete Guide to Git Branching</title><link>https://johannesl.com/blog/complete-guide-to-git-branching/</link><pubDate>Sun, 07 Sep 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/complete-guide-to-git-branching/</guid><description>&lt;p&gt;Git branches are fundamental to modern software development. They allow developers to work on features, fixes, and experiments without affecting the main codebase.&lt;/p&gt;
&lt;h2 id="how-branches-work"&gt;How Branches Work&lt;/h2&gt;
&lt;p&gt;A branch in Git is a lightweight pointer to a commit. Creating a branch is nearly instantaneous and uses minimal storage. This makes branching a core part of the Git workflow rather than an occasional activity.&lt;/p&gt;
&lt;h3 id="the-main-branch"&gt;The Main Branch&lt;/h3&gt;
&lt;p&gt;Every repository has a primary branch, typically called &lt;code&gt;main&lt;/code&gt;. This branch represents the stable, production-ready state of the project.&lt;/p&gt;</description></item><item><title>Python vs JavaScript: Which to Learn First</title><link>https://johannesl.com/blog/python-vs-javascript-which-to-learn-first/</link><pubDate>Wed, 03 Sep 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/python-vs-javascript-which-to-learn-first/</guid><description>&lt;p&gt;Choosing your first programming language is one of the biggest decisions for aspiring developers. Python and JavaScript are the two most popular choices, each with distinct strengths.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Both Python and JavaScript are versatile, widely-used languages with large communities and extensive ecosystems. The best choice depends on your goals.&lt;/p&gt;
&lt;h3 id="python-at-a-glance"&gt;Python at a Glance&lt;/h3&gt;
&lt;p&gt;Python is known for its clean syntax and readability. It dominates in data science, machine learning, automation, and backend web development. Its &amp;ldquo;batteries included&amp;rdquo; standard library covers a wide range of tasks.&lt;/p&gt;</description></item><item><title>A Beginner's Guide to Structured Data</title><link>https://johannesl.com/blog/beginners-guide-to-structured-data/</link><pubDate>Fri, 29 Aug 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/beginners-guide-to-structured-data/</guid><description>&lt;p&gt;Structured data helps search engines understand your content. By adding schema markup to your pages, you give Google explicit signals about what your content means, not just what it says.&lt;/p&gt;
&lt;h2 id="what-is-structured-data"&gt;What Is Structured Data&lt;/h2&gt;
&lt;p&gt;Structured data is a standardized format for providing information about a page and classifying its content. It uses a vocabulary defined by Schema.org and is embedded directly in your HTML.&lt;/p&gt;
&lt;h3 id="schemaorg-vocabulary"&gt;Schema.org Vocabulary&lt;/h3&gt;
&lt;p&gt;Schema.org is a collaborative project between Google, Bing, Yahoo, and Yandex. It defines a shared vocabulary of types and properties that describe entities on the web.&lt;/p&gt;</description></item><item><title>Understanding Core Web Vitals</title><link>https://johannesl.com/blog/understanding-core-web-vitals/</link><pubDate>Fri, 22 Aug 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/understanding-core-web-vitals/</guid><description>&lt;p&gt;Core Web Vitals are a set of specific metrics that Google uses to measure user experience on websites. They directly impact search rankings and represent the most important performance signals for SEO.&lt;/p&gt;
&lt;h2 id="what-are-core-web-vitals"&gt;What Are Core Web Vitals&lt;/h2&gt;
&lt;p&gt;Google introduced Core Web Vitals as part of its page experience signals. These metrics focus on three aspects of user experience: loading, interactivity, and visual stability.&lt;/p&gt;
&lt;h3 id="largest-contentful-paint-lcp"&gt;Largest Contentful Paint (LCP)&lt;/h3&gt;
&lt;p&gt;LCP measures how long it takes for the largest visible element to render. This could be an image, a video, or a large block of text. A good LCP score is under 2.5 seconds.&lt;/p&gt;</description></item><item><title>How to Build a Static Site with Hugo</title><link>https://johannesl.com/blog/how-to-build-a-static-site-with-hugo/</link><pubDate>Fri, 15 Aug 2025 10:00:00 +0000</pubDate><guid>https://johannesl.com/blog/how-to-build-a-static-site-with-hugo/</guid><description>&lt;p&gt;Static site generators have transformed how developers build websites. Hugo stands out as one of the fastest options available, building even large sites in milliseconds.&lt;/p&gt;
&lt;h2 id="why-choose-hugo"&gt;Why Choose Hugo&lt;/h2&gt;
&lt;p&gt;Hugo offers several advantages over other static site generators. Its speed is unmatched, and it requires no runtime dependencies beyond the single binary.&lt;/p&gt;
&lt;h3 id="speed-and-performance"&gt;Speed and Performance&lt;/h3&gt;
&lt;p&gt;Hugo builds are measured in milliseconds, not seconds. For a site with hundreds of pages, this makes a significant difference in the development workflow.&lt;/p&gt;</description></item><item><title>About</title><link>https://johannesl.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannesl.com/about/</guid><description>&lt;p&gt;Hi, I am Sam SEO Sepiol, a software engineer focused on building fast, accessible websites and developer tools.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;I have been building for the web for over a decade. My work spans frontend development, backend systems, and the infrastructure that connects them. I care deeply about web performance, accessibility, and clean code.&lt;/p&gt;
&lt;h2 id="what-i-do"&gt;What I Do&lt;/h2&gt;
&lt;p&gt;I specialize in web development with a focus on performance and SEO. I believe that fast websites are better websites, and that technical excellence and user experience go hand in hand.&lt;/p&gt;</description></item><item><title>Contact</title><link>https://johannesl.com/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannesl.com/contact/</guid><description>&lt;p&gt;This is a demo website created for SEO experimentation purposes. Sam SEO Sepiol is a fictional person and cannot be contacted.&lt;/p&gt;
&lt;h2 id="about-this-site"&gt;About This Site&lt;/h2&gt;
&lt;p&gt;This website serves as a test bed for studying search engine optimization techniques. The content is illustrative and the person described does not exist. Please do not attempt to contact them.&lt;/p&gt;</description></item><item><title>Uses</title><link>https://johannesl.com/uses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannesl.com/uses/</guid><description>&lt;p&gt;This page describes the tools and technologies I use daily for software development. Inspired by &lt;a href="https://uses.tech"&gt;uses.tech&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="editor"&gt;Editor&lt;/h2&gt;
&lt;h3 id="visual-studio-code"&gt;Visual Studio Code&lt;/h3&gt;
&lt;p&gt;My primary editor for all development. I keep the extension count low and rely on built-in features where possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key extensions:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Language-specific LSP extensions&lt;/li&gt;
&lt;li&gt;Prettier for formatting&lt;/li&gt;
&lt;li&gt;GitLens for Git history&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="vim"&gt;Vim&lt;/h3&gt;
&lt;p&gt;For quick edits in the terminal or on remote servers. I use a minimal vimrc with just the essentials.&lt;/p&gt;</description></item></channel></rss>