Documenting progress since June 2016 - from an S3 bucket to a multi-site ecosystem.
6th April 2026
Added this history page. Reskinned from the old site's timeline into the current design system. Added back-bar navigation to the dashboard.
1st April 2026
Dashboard goes dynamic - live API endpoint fetching from GitHub, Linear and Vercel in parallel, replacing the static data.json. CDN caching via Cache-Control headers. Added Build Tracker section to portfolio linking to dashboard.
25th March 2026
Security fixes. Added Cloudflare Turnstile verification to the portfolio contact form and blog login/register pages.
19th March 2026
Blog (projects.jamescarty.co.uk) deployed. Flask app on Vercel with Neon PostgreSQL. Reskinned to match Paradigm Shift design system - mint accent, Raleway + Source Sans Pro, dark mode.
17th March 2026
Complete migration from S3/CloudFront to Vercel. New Paradigm Shift template replacing Bootstrap. Mailgun contact form. Vercel Analytics and Speed Insights added. First PR merged same day.
19th July 2025
Added two projects. Tetris: deployed on AWS via GitHub Actions CI/CD, functionally tested by an AI bot built with Claude Code and Gemini. AI Training: concept site testing AI-driven research and content creation using Claude, Gemini, Gamma, and Synthesia.
28th November 2024
Added various draft pages to the projects section. All completed - just needed publishing in a repo.
20th November 2024
First pass at a new Projects page with sidebar filtering and articles rendered from Markdown documents.
new projects page
19th November 2024
Added draft project pages for the Website Deployment GitHub Action and using IaC to build the website on K8S with Azure or AWS.
15th November 2024
Created initial project page template that renders from Markdown files. Tested by porting the old Contact Form project write-up into the new format.
13th November 2024
Updated Google Analytics to v4 (old version deprecated). Fixed GitHub Action for S3 sync and published it to the GitHub Marketplace.
12th November 2024
New timeline style with search functionality, image placement, and lightbox. Split JS into modular files for better maintainability.
history page redesign
9th November 2024
Changed main page to flip boxes instead of linking to the old Tools page. Required the Bootstrap 4 upgrade to work.
flip boxes
7th November 2024
Replaced Jenkins CI/CD pipeline with GitHub Actions. OIDC auth to AWS, S3 file sync, CloudFront invalidation.
1st-5th November 2024
Updated Bootstrap to v4 across all pages. Fixed navbar anchor link issues. Split header and footer into shared components. Updated history page header graphic.
31st October 2024
Patched jQuery to 3.x - old version had known CVEs. Updated footer for the new year. Start of a big burst of activity after years of quiet.
5th January 2022
Updated footer to reflect the new year.
23rd December 2021
Updated Lambda function to Python 3.9 - AWS deprecated 2.7 back in July. A few library changes made it trickier than expected. Updated homepage content for current Cisco role.
9th January 2019
Updated the main page image to add some colour for 2019. Involved learning basic Adobe Illustrator. Changed copyright date across pages.
2019 colour update
9th November 2017
Fixed Ajax code to stop the contact form resetting under certain circumstances.
6th April 2017
Added site to Google search and index. Modified contact form return field to appear above reCAPTCHA box.
5th April 2017
Added server-side verification to Google reCAPTCHA. Required changes to jQuery, JSON output, API Gateway config, and Lambda function to call Google's verification API. Updated Bootstrap to 3.3.7.
20th March 2017
Recreated Lambda contact form function in Python 2.7 (was Node.js). Migrated Lambda and API Gateway to the new London region (eu-west-2). Updated tools page to include Python.
15th December 2016
Migrated website to the new AWS London region. More effort than planned - had to recreate S3 buckets, update Route 53, and modify CloudFront elements.
14th December 2016
Updated homepage to reflect new role at Cisco.
11th-12th November 2016
Updated header, footer and menu links to use root-relative paths for subdirectory support. Verified IPv6 connectivity.
7th October 2016
Added AAAA record in Route 53 and IPv6-enabled CloudFront in anticipation of Route 53 supporting IPv6.
1st August 2016
Set up Jenkins for automated deployment from local Git branches. Created dev branch, updated S3 sync scripts with exclusions. Added Google reCAPTCHA to the contact form with client-side validation before API Gateway submission.
27th July 2016
Added return-to-top button to improve mobile experience.
9th-12th July 2016
Created S3 test subdomain and Route 53 zone for release testing. Published Contact Form code to GitHub. Updated Tools page. Removed some ScrollReveal animations.
7th July 2016
Started using Git for version control. Completed Udacity's "How to Use Git and GitHub" course. Created local repository with baseline commit.
28th June 2016
Created SSL certificate and enabled HTTPS with CloudFront.
19th-24th June 2016
Updated contact form jQuery/AJAX to clear after submission and return status. Configured email hosting on the domain registrar and created MX records in Route 53. Enabled Google Analytics. Created Tools page. Updated CSS colour scheme.
original learning section
18th June 2016
The contact form finally works. AWS API Gateway + Lambda + SES. Took about a week of tinkering - HTML form, jQuery/AJAX, API Gateway with mapping template, Lambda to validate and call SES.
6th-8th June 2016
Migrated DNS to Route 53. Fixed navbar collapse on mobile anchor links. Updated ScrollReveal and jQuery to 3.x. Added this history page.
5th June 2016
Initial website built in an afternoon using an HTML/CSS template. Hosted on AWS S3 with Route 53 for DNS. Contact form broken by design - S3 only serves static content. Shipped it MVP fashion.