Welcome to the repository for stefaniuk.co.uk - my professional technology blog, serving as both a public knowledge base and a live record of my ongoing journey through software engineering, cloud architecture, and technical leadership. This site is where I openly share discoveries, deep technical dives, hands-on tutorials, and candid reflections on both success and setbacks.
- π§ Dan's Engineering Journal
This blog is designed not just as a personal archive, but as a practical resource for fellow engineers, architects, and technology enthusiasts. My intention is to foster a culture of learning, knowledge sharing, and open dialogue across the professional community.
My intention is that you will find here the following:
- π οΈ Real-world solutions, articles addressing concrete technical challenges, grounded in practical experience.
- π§ Deep technical exploration, content that examines architectural decisions, design trade-offs, and underlying principlesβnot just the βhowβ, but also the βwhyβ.
- π£οΈ Clear, accessible communication, complex concepts are broken down into simple language, making advanced topics approachable.
- π± Professional growth, honest documentation of my learning process, including mistakes and lessons learned, so that others can benefit from my experience.
- π€ Open collaboration, a space for feedback, alternative perspectives, and professional networking.
Each article and update represents my commitment to:
- π¬ Thorough research and exploration
- βοΈ Clear, concise documentation
- πͺ Transparency about both successes and challenges
- π Continuous learning and improvement
Whether you are an experienced technologist or early in your career, youβll find authentic insights and actionable knowledge to support your own professional development.
This site is powered by modern, open-source tools to ensure portability, extensibility, and ease of contribution:
- π Jekyll β static site generation and content management
- π¨ HTML/CSS β custom theming and responsive layouts
- π Google Analytics β anonymous visitor insights
- π¬ Disqus β interactive comments and discussion
- π° RSS Feed β content syndication for readers and aggregators
.
βββ _drafts/ # Unpublished, in-progress posts
βββ _includes/ # Reusable HTML partials
βββ _layouts/ # Page and post templates
βββ _posts/ # Published blog entries
βββ _sass/ # SCSS partials for styling
βββ about/ # About and profile pages
βββ css/ # Compiled CSS (main/terminal themes)
βββ CNAME # Custom domain configuration
βββ Gemfile # Ruby/Jekyll dependencies
βββ _config.yml # Jekyll site configuration
βββ favicon.png # Site icon
βββ feed.xml # RSS feed for syndication
βββ index.html # Homepage
βββ LICENCE.md # Licence and copyright details
βββ robots.txt # Search engine crawler settings
βββ sitemap.xml # SEO and discoverability
- π± Mobile-first, responsive design for a seamless reading experience on any device
- π¬ Interactive commenting via Disqus for community engagement
- π RSS/Atom feed for automatic content updates
- π Search engine optimisation (SEO) built-in
- π’ Integrated social media sharing
- π Real visitor analytics (privacy-respecting)
You are encouraged to reuse, adapt, or contribute to this blogβs content and technical setup. All scripts and configuration are provided for easy local development and automation.
- π Ruby (2.7.0 or newer)
- π¦ RubyGems (comes with Ruby)
- π οΈ make (standard on macOS/Linux)
-
Install Bundler and Jekyll
gem install --user-install bundler jekyll
-
Install project dependencies
bundle install
-
Start the Jekyll server:
bundle exec jekyll serve -
Open your web browser and navigate to
http://localhost:4000
-
To generate the static files for production:
JEKYLL_ENV=production bundle exec jekyll buildThis will create the static site in the
_sitedirectory. -
For development builds with draft posts:
JEKYLL_ENV=development bundle exec jekyll build --drafts
The project includes several helpful make commands:
make serve-drafts- Start local server with draft posts (development)make serve-live- Start local server without drafts (production)make clean- Remove generated files and cachesmake update- Clean and rebuild the sitemake publish- Build and publish to GitHub Pages
If you revise a published post and want to show readers (and search engines) that it has been updated without changing the original publication date, add BOTH a last_modified_at field and set display_last_modified: true in the post front matter:
---
layout: post
title: "Some Post"
date: 2024-05-12 08:00:00 Europe/London
last_modified_at: 2025-09-19 09:00:00 Europe/London
display_last_modified: true
---Behaviour:
- The "Last updated" section renders only if
display_last_modified: trueANDlast_modified_atis later than the originaldate. - Omitting either the flag or the timestamp means only the original published date is shown.
- Uses the
jekyll-last-modified-atplugin; outputs semantic<time>elements withitemprop="datePublished"anditemprop="dateModified"for improved SEO / structured data.
Best practice:
- Update the field only for substantive changes (new sections, significant clarifications, updated code / versions) β ignore minor typo fixes.
- Consider keeping a short "Changelog" or "Revision notes" section for heavily revised technical articles.
Organise posts by topic using tags. Tags automatically generate archive pages at /tags/{tag-name}/ and are displayed on individual posts.
Add tags to post:
---
layout: post
title: "Some Post"
tags: [uv, python, tools, learning]
---Features:
- Automatic tag pages, each tag gets its own archive page at
/tags/{tag-name}/listing all tagged posts - Tag index, view all tags at
/tags/with post counts - SEO-friendly, tags use proper
rel="tag"attributes and clean URLs - Visual badges, tags appear as clickable badges below the post title
Best practices:
- Use lowercase, hyphenated tags for consistency (e.g.,
package-managementnotPackage Management) - Keep tags focused and specific (3-6 tags per post is ideal)
- Use common, searchable terms that readers might look for
- Reuse existing tags when appropriate to build tag archives
View all tags at stefaniuk.co.uk/tags/
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. For full license terms, please see LICENCE.md.
Copyright Β© 2016-2025 Dan Stefaniuk. All rights reserved.