Compare commits

...

22 Commits

Author SHA1 Message Date
e0675a8df4 Added talks
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-09-13 19:38:52 +01:00
b90ee4ca82 Fix badge URL
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-09-13 19:38:43 +01:00
84c4a30b91 Removed events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-09-13 19:12:47 +01:00
4e7b7c7d08 Update badges and projects
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-08-29 20:27:49 +01:00
9021a4733e Update description and events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-08-19 07:46:40 +01:00
7c2ab5201b Removed old events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-06-12 10:50:42 +01:00
bbe89c9a4b Added ContainerDays conference
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-05-20 21:14:35 +02:00
d2dda4dba7 Added Cloud native summit munich
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-04-24 06:38:48 +02:00
feb559a12e Added KCD Czech & Slovak
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-04-17 05:37:02 +01:00
7536b589e1 Removed past events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-04-08 11:44:19 +01:00
dfb69fd831 Removed Oslo
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-03-27 05:32:51 +00:00
8afc013965 Added KCD Budapest
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-03-10 14:20:22 +00:00
b7ef31cf04 Added Rejekts event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-02-17 18:49:46 +00:00
db07bcf7bb Slimmed down images
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-02-17 16:19:40 +00:00
21b03c5445 Update bio
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-02-01 19:08:10 +00:00
0dd8bc0e7f Added Cloud Native Day Oslo
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-01-24 14:42:09 +00:00
bdaeaf31a9 Added kubecon programme committee badge
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2025-01-17 07:04:38 +00:00
8ec57acc93 Added KCD Denmark speaker badge
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-12-09 20:41:36 +00:00
845556877c Remove Twitter
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-12-02 07:39:12 +00:00
37b1374f83 Updated events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-11-24 08:36:09 +00:00
58e18fe044 Added new Credly badge
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-11-05 18:33:21 +00:00
5b0c85711f Remove KCD UK
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-10-27 13:45:15 +00:00
10 changed files with 109 additions and 36 deletions

View File

@@ -1,5 +1,6 @@
intro: |
I'm a <strong>platform engineer</strong> at <a href="https://giantswarm.io">Giant Swarm</a> working on building managed Kubernetes solutions, a <a href="https://www.civo.com/ambassadors">Civo Ambassador</a> and a <a href="https://www.cncf.io/people/ambassadors/">CNCF Ambassador</a>. My area of focus in recent years has been around release engineering, Go, ⎈ Kubernetes, containers and DevOps but originally started out as a <em>web developer</em> and <em>JavaScript enthusiast</em>. I'm a “tinkerer” and like to dabble with 3D printing and experimenting with smart home tech.<br/><br/>
I'm a <strong>platform engineer</strong> at <a href="https://monzo.com/">Monzo</a> working on their infrastructure platform, a <a href="https://www.civo.com/ambassadors">Civo Ambassador</a> and a <a href="https://www.cncf.io/people/ambassadors/">CNCF Ambassador</a>. My area of focus in recent years has been around release engineering, Go, ⎈ Kubernetes, containers and DevOps but originally started out as a <em>web developer</em> and <em>JavaScript enthusiast</em>. I'm a “tinkerer” and like to dabble with 3D printing and experimenting with smart home tech.<br/><br/>
I also run a monthly newsletter - <a href="https://cloudnative.now">CloudNative.Now</a> - where I do a roundup of all the cloud native happenings and have a small Etsy store - <a href="https://paradoxfoxuk.etsy.com">Paradox Fox</a> - where I sell geeky stickers, keyrings and pin badges.<br/><br/>
I'm always happy to chat so feel free to drop me an email at <span class="email-link"><svg viewBox="0 0 64 50" height="32" style="fill:#ededed"><path d="m64 39.7-4-22.4c-.4-2-2.4-3.5-4.5-3l-31.7 5.5a4 4 0 0 0-3.2 4.1l4 22.8a3.8 3.8 0 0 0 4.5 3l31.7-5.5a3.8 3.8 0 0 0 3.1-4.5zm-2.7-3.6-10.7-8.2 7.7-8.6 3 16.8zM24 21.8l32-5.6h.3a2 2 0 0 1 1.5.7c-1 1.1-9.4 10.8-13.4 14.6-1 1-2.6 1.3-4 .6l-17.7-8.7a1.8 1.8 0 0 1 1.5-1.6zm-1.1 4 10.5 5.3L26 42.8l-3-17zm38.7 15.7c-.3.4-.7.6-1.2.7l-31.8 5.6a1.9 1.9 0 0 1-2.1-1.5l-.1-.6 8.8-13.8 4.2 2a5.6 5.6 0 0 0 6.1-1c1-.9 2.3-2.1 3.6-3.6L61.8 39l.2 1c0 .6 0 1-.3 1.5zM19 29.9a1 1 0 0 0-1.2-.8l-17 3a1 1 0 1 0 .4 2l17-3c.5-.2.9-.7.8-1.2zm1 5.8a1 1 0 0 0-1.1-.9L8.7 36.6a1 1 0 1 0 .3 2l10.2-1.8c.6 0 1-.6.8-1.1zm-.1 4.9L13 41.8a1 1 0 1 0 .3 2l6.8-1.2a1 1 0 1 0-.3-2z"></path></svg> hello[@]marcusnoble.co.uk</span>, or using any of the other social links below.
social:
@@ -29,12 +30,6 @@ social:
name: GitHub
icon: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="32"><path d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"></path></svg>
- url: https://twitter.com/Marcus_Noble_
slug: "/twitter"
title: "@Marcus_Noble_ on Twitter"
name: Twitter
icon: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="32"><path d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"></path></svg>
- url: https://k8s.social/@Marcus
slug: "/mastodon"
title: "@marcus@k8s.social on Mastodon"
@@ -91,6 +86,12 @@ projects:
languages:
- color: "#e34c26"
name: HTML
- url: https://github.com/AverageMarcus/bsky-screenshot
name: bsky-screenshot
description: Generate screenshots of Bluesky posts
languages:
- color: "#e34c26"
name: HTML
- url: https://github.com/AverageMarcus/kube-image-prefetch
name: kube-image-prefetch
description: Pre-pull all images, on all nodes, within a Kubernetes cluster
@@ -135,34 +136,37 @@ projects:
name: Go
badges:
- img: https://images.credly.com/size/340x340/images/e094e852-abe8-4ed2-b0f7-54adeeb910ee/blob
url: https://www.credly.com/badges/59794507-b4d4-40a4-bd30-d49b1bc9ed5e/public_url
- img: https://images.credly.com/size/340x340/images/5be4c74d-322f-476b-9fc9-72fda9c31ff2/blob
url: https://www.credly.com/badges/6eb33d91-c6c9-4b63-9803-1092913a1d95/public_url
- img: https://images.credly.com/size/110x110/images/0ec45b92-a143-4c48-a2d5-290c95dbcdc9/blob
url: https://www.credly.com/badges/c88ef1de-e0f2-4376-b71d-7a28c7dd529b/public_url
- img: https://images.credly.com/size/680x680/images/5000414f-2186-4bfa-b6b9-5f920b1d65cf/blob
url: https://www.credly.com/badges/fe951f9d-cbe8-4a5c-bb1a-793637a5958f/public_url
- img: https://images.credly.com/size/110x110/images/b1eaaa0e-3e14-4bfe-9881-9ce477cfa7fc/image.png
url: https://www.credly.com/badges/cd63e887-72ac-49b0-8322-a4062d86d997/public_url
events:
- date: "2024-10-22"
humanDate: "October 22nd - 23rd, 2024"
url: https://community.cncf.io/events/details/cncf-kcd-uk-presents-kubernetes-community-days-uk-london-2024/
eventName: Kubernetes Community Days UK
details:
- name: "From Fragile to Resilient: Using Admission Policies to Strengthen Kubernetes"
type: Talk
- date: "2024-11-10"
humanDate: "November 10th - 11th, 2024"
url: https://cloud-native.rejekts.io/
eventName: Cloud Native Rejekts NA
details:
- name: "From Fragile to Resilient: Using Admission Policies to Strengthen Kubernetes"
type: Talk
- date: "2024-11-12"
humanDate: "November 12th - 15th, 2024"
url: https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/
eventName: KubeCon + CloudNativeCon NA
details:
- name: Attendee
- date: "2024-11-19"
humanDate: "November 19th - 20th, 2024"
url: https://kcddenmark.dk/
eventName: KCD Denmark
details:
- name: "From Fragile to Resilient: Using Admission Policies to Strengthen Kubernetes"
type: Talk
talks:
- title: Pod Deep Dive - The Interesting Bits
image: https://on.notist.cloud/slides/deck15227/large-0.jpg
url: https://speaking.marcusnoble.co.uk/HqYcp2/pod-deep-dive-the-interesting-bits
recording: https://www.youtube.com/watch?v=E_r56x92KZw
- title: The Future of Kubernetes Admission Logic
image: https://on.notist.cloud/slides/deck15878/large-0.jpg
url: https://speaking.marcusnoble.co.uk/HARSlE/the-future-of-kubernetes-admission-logic
recording: https://youtu.be/zDBt4g1ETDg?list=PLzudWtDtAuH_nMRGBSsuN4s-YbXOu5lJL
- title: Webhooks - What's the worst that could happen?
image: https://on.notist.cloud/slides/deck12725/large-0.jpg
url: https://speaking.marcusnoble.co.uk/I6dyx4/webhooks-whats-the-worst-that-could-happen
recording: https://youtu.be/e4BlDLKJET4
- title: Managing Kubernetes without losing your cool
image: https://on.notist.cloud/slides/deck9980/large-0.jpg
url: https://speaking.marcusnoble.co.uk/quuysq/managing-kubernetes-without-losing-your-cool
recording: https://youtu.be/SGlU1JDXSD8?list=PLT41C0Ggz5wa66-AU5xapbOuzkUKUPLzi
- title: The Wonders and Woes of Webhooks
image: https://on.notist.cloud/slides/deck9809/large-0.jpg
url: https://speaking.marcusnoble.co.uk/Hw2IXG/the-wonders-and-woes-of-webhooks
recording: https://youtu.be/-Mwo8Xy5lto
events: []

15
main.go
View File

@@ -9,6 +9,7 @@ import (
"os"
"path"
"strings"
"time"
"gopkg.in/yaml.v2"
)
@@ -36,6 +37,8 @@ func main() {
panic(err)
}
// Set up "slugs" that can be used as redirects to social media accounts
// E.g. https://marcusnoble.com/mastodon -> https://k8s.social/@Marcus
for _, l := range data["social"].([]interface{}) {
link := l.(map[interface{}]interface{})
if link["slug"] != "" {
@@ -43,6 +46,18 @@ func main() {
}
}
// Filter out any events that have passed already
futureEvents := []map[interface{}]interface{}{}
dateLayout := "2006-01-02"
for _, e := range data["events"].([]interface{}) {
event := e.(map[interface{}]interface{})
t, err := time.Parse(dateLayout, event["date"].(string))
if err == nil && time.Now().Before(t) {
futureEvents = append(futureEvents, event)
}
}
data["events"] = futureEvents
funcMap := template.FuncMap(map[string]interface{}{
"join": func(objs []interface{}, key, joiner string) template.HTML {
vals := []string{}

View File

@@ -51,7 +51,7 @@ Below are a selection of highlights.
{{ range .badges }}
<a href="{{ .url }}" target="_blank">
<img src="{{ .img }}" />
<img src="{{ .img }}" width="110px" />
</a>
{{ end }}
{{ end }}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

3
src/favicon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 835 KiB

BIN
src/headshot-transparent.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 784 KiB

View File

@@ -197,6 +197,39 @@
border-radius: 50%;
}
/* Talks */
.talks {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: row;
flex-wrap: wrap;
font-size: .8em;
}
.talks li {
width: 300px;
max-width: 100%;
margin: 4px 4px;
}
.talks li a {
text-decoration: none;
color: unset;
}
.talks .recording {
display: block;
color: #fd7e0b;
}
.talks img {
width: 300px;
max-width: 100%;
}
/* Events */
.events {
list-style: none;
@@ -321,6 +354,24 @@
</section>
{{ end }}
{{ if gt (len .talks) 0 }}
<section id="talks">
<h2>🗣️ My Talks</h2>
<ul class="talks">
{{ range .talks }}
<li>
<a href="{{ .url }}">
<strong>{{ .title }}</strong>
<img src="{{.image}}">
</a>
{{ if .recording }}<a href="{{.recording}}" class="recording">📺 Recording</a>{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ end }}
{{ if gt (len .projects) 0 }}
<section id="projects">
<h2>💻 My Open Source Projects</h2>