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.
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 build
This will create the static site in the
_site
directory. -
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: true
ANDlast_modified_at
is later than the originaldate
. - Omitting either the flag or the timestamp means only the original published date is shown.
- Uses the
jekyll-last-modified-at
plugin; 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.
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.