Compare commits

...

77 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
b9981f35ea Added BlueSky
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-10-21 08:19:00 +01:00
215d0a8d1b Remove Civo Navigate Local
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-10-21 08:14:36 +01:00
26f42eaf76 Added KCD Denmark
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-09-28 08:23:56 +01:00
4a5206fe72 Added civo navigate local
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-09-24 14:33:43 +01:00
a0a8d4de81 Added talks to upcoming events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-09-16 06:31:22 +01:00
0aa7b322f3 Updated events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-06-20 09:11:42 +01:00
18ad528a87 Added LOPUG event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-05-10 09:09:40 +01:00
67dd7ceb72 Added KCD UK
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-04-29 14:38:50 +01:00
1a628389df Added KubeCon NA to events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-04-21 10:39:08 +01:00
84f3524a06 Remove past events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-04-06 13:40:06 +01:00
4b8b0b3455 Updated rejekts with talk link
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-02-19 19:17:10 +00:00
85c249e35d Added devstats project
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2024-01-26 14:15:35 +00:00
7ec9727406 Update events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-11-22 20:12:43 +00:00
63dfc836a7 Update generated readme
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-11-02 08:40:39 +00:00
9ca11f0e36 Added badges
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-11-02 08:36:51 +00:00
8777b4df3b Removed KCD event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-10-30 07:30:18 +00:00
068b0caa78 Improve link to civo ambassador
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-10-29 10:59:13 +00:00
743ab247d8 Added CNCF ambassador note
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-10-29 10:38:26 +00:00
Marcus Noble
c425d8fbda Update data.yaml 2023-10-13 19:09:56 +01:00
5949c5483b Updated speaking URL
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-09-29 11:20:38 +01:00
062fed5778 Updated upcoming events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-09-23 09:21:30 +01:00
85281a74c3 Added KCD UK and Kube London
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-09-01 07:55:46 +01:00
fb6c78ec3e Added release engineering to areas of interest
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-07-27 09:25:33 +01:00
24d2b0a1a1 Added note about Civo ambassador
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-07-27 09:24:34 +01:00
a605f7b560 Tweaked styles
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-06-23 07:33:52 +01:00
cdf1551afe Updated projects
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-06-23 07:26:41 +01:00
5dccf504df Updated events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-06-23 07:22:58 +01:00
5936ac3d85 Added KCD UK 2023-06-06 20:45:35 +01:00
f40d58fe8c Added kubecon NA 2023-06-06 20:45:35 +01:00
0bd9529d5f Updated events 2023-06-06 20:45:35 +01:00
9a57cd6bfe Removed devops oxford
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-03-31 07:27:27 +01:00
12059303a9 Removed KCD
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-03-22 14:54:03 +00:00
bfc64ec47d Added DevOps Oxford event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-03-10 10:20:46 +00:00
33166b6b8d Added KCD Ukraine
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2023-02-27 07:58:10 +00:00
Marcus Noble
37c71873b4 Removed Civo navigate 2023-02-01 19:31:08 +00:00
45bc68b379 Added Kubecon EU
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-12-16 07:57:30 +00:00
cd155b3a04 Remove re:invent event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-12-16 07:55:34 +00:00
3ee1a325d1 Updated events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-11-26 14:49:09 +00:00
Marcus Noble
15dfefcf5b Merge pull request #1 from AverageMarcus/AverageMarcus-patch-1 2022-10-10 07:35:05 +01:00
Marcus Noble
6fc9b1aae4 Removed KubeHuddle 2022-10-10 07:33:28 +01:00
9ffa1adccd Added KCD UK
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-10-03 21:22:56 +01:00
9e3a9f7ae2 Mark tickets as sold out
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-09-28 16:19:57 +01:00
8ce81fde3f Resize project box
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-09-28 16:19:02 +01:00
1f87e74e24 Removed past DevOpsNotts event
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-09-28 16:17:27 +01:00
6fff7b4751 Updated events
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-24 15:44:08 +01:00
7061402f7c Formatting of events for readme
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-15 07:13:07 +01:00
20ceb63bcc Fixed typo
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-15 06:39:58 +01:00
2c29b561b2 Added re:Invent
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-14 09:05:23 +01:00
95c19ef6b4 Update 'src/index.html' 2022-08-10 09:46:38 +00:00
0b11fc96ef Update 'src/README.md' 2022-08-10 09:46:24 +00:00
34f27d8fc8 Update 'data.yaml' 2022-08-10 01:33:40 +00:00
7f4c8b9fc5 Added opengraph tags
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-09 20:38:41 +01:00
de1248a965 Added Readme
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-08 15:27:30 +01:00
f6618a93ff Added social link redirects
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-08 13:16:43 +01:00
8f8dfc912b Several updates
Signed-off-by: Marcus Noble <github@marcusnoble.co.uk>
2022-08-08 05:33:39 +01:00
10 changed files with 374 additions and 106 deletions

180
data.yaml
View File

@@ -1,68 +1,106 @@
intro: |
I'm a <strong>platform engineer</strong> working at <a href="https://giantswarm.io">Giant Swarm</a> working on building managed Kubernetes solutions and related projects. My area of focus in recent years has been around 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.
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:
- url: https://marcusnoble.co.uk
slug: "/blog"
title: My articles on my Blog
content: |
<svg height="32" viewBox="0 0 512 512">
name: Blog
icon: |
<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="0 0 512 512">
<style>.st0{fill:#fff}.st1{fill:#ededed}.st4{fill:#333}.st8{fill:#f96363}.st9{fill:#fdd267}</style><path class="st0" d="M508 82.9v394.2c0 17-13.8 30.9-30.8 30.9H34.8C17.8 508 4 494.2 4 477.1V82.9h504z"/><path class="st1" d="M508 82.9v394.2c0 17-13.8 30.9-30.8 30.9h-28.6a31 31 0 0 0 30.9-30.9V82.9H508z"/><path d="M508 82.9v-48c0-17-13.8-30.8-30.8-30.8H34.9A30.7 30.7 0 0 0 4 34.9v48h504z" fill="#d3d9d9"/><path class="st1" d="M63.5 4c-17 0-30.9 13.8-30.9 30.8v48.1H4V34.8C4 17.8 17.8 4 34.8 4h28.7z"/><path d="M508 34.8v48.1h-28.6V34.8c0-17-13.8-30.8-30.9-30.8h28.7c17 0 30.8 13.8 30.8 30.8z" fill="#a8b2b4"/><path class="st4" d="M512 34.8A34.8 34.8 0 0 0 477.2 0H34.9A34.8 34.8 0 0 0 0 34.8v442.3A35 35 0 0 0 34.8 512h442.3a34.8 34.8 0 0 0 34.8-34.9l.1-442.3zm-504 0A26.9 26.9 0 0 1 34.9 8h442.3C492 8 504 20 504 34.8v44H8v-44zm496 442.3c0 14.8-12 26.9-26.8 26.9H34.8A26.9 26.9 0 0 1 8 477.1V86.9h496v390.2z"/><circle cx="50.6" cy="43.5" r="14" fill="#fc8a8a"/><circle cx="100.5" cy="43.5" r="14" fill="#fedd8e"/><circle cx="150.3" cy="43.5" r="14" fill="#7bde9e"/><path class="st8" d="M64.6 43.4a14 14 0 0 1-27.2 4.7 14 14 0 0 0 18-18c5.3 2.2 9.2 7.3 9.2 13.3z"/><path class="st9" d="M114.4 43.4a14 14 0 0 1-27.2 4.7 14 14 0 0 0 18-18c5.4 2.2 9.2 7.3 9.2 13.3z"/><path d="M164.3 43.4a14 14 0 0 1-27.2 4.7 14 14 0 0 0 17.8-18c5.5 2.2 9.4 7.3 9.4 13.3z" fill="#50d27e"/><path class="st4" d="M50.6 61.5c-9.9 0-18-8.1-18-18s8.1-18 18-18 18 8.1 18 18-8.1 18-18 18zm0-28c-5.5 0-10 4.5-10 10s4.5 10 10 10 10-4.5 10-10-4.5-10-10-10zm49.9 28c-9.9 0-18-8.1-18-18s8.1-18 18-18 18 8.1 18 18-8.1 18-18 18zm0-28c-5.5 0-10 4.5-10 10s4.5 10 10 10 10-4.5 10-10-4.5-10-10-10zm49.8 28c-9.9 0-18-8.1-18-18s8.1-18 18-18 18 8.1 18 18-8.1 18-18 18zm0-28c-5.5 0-10 4.5-10 10s4.5 10 10 10 10-4.5 10-10-4.5-10-10-10z"/><path class="st0" d="M475.4 43.4a14 14 0 0 1-14 14H229.7a14 14 0 1 1 0-28h231.7a14 14 0 0 1 14 14z"/><path class="st1" d="M475.4 43.4a14 14 0 0 1-14 14H229.7a14 14 0 0 1-14-13.3c2 1.1 4.3 1.7 6.7 1.7h231.7a14 14 0 0 0 14-14v-.6a14 14 0 0 1 7.3 12.2z"/><path class="st4" d="M461.4 61.4H229.7c-9.9 0-18-8.1-18-18s8.1-18 18-18h231.7c9.9 0 18 8.1 18 18s-8.1 18-18 18zm-231.7-28c-5.5 0-10 4.5-10 10s4.5 10 10 10h231.7c5.5 0 10-4.5 10-10s-4.5-10-10-10H229.7z"/><path d="M455.6 123.2v98.2H56.4v-98.2h399.2z" fill="#fb8a8a"/><path d="M455.6 123.2v21.7H56.4v-21.7h399.2z" fill="#fcb1b1"/><path class="st8" d="M56.4 199.7h399.2v21.6H56.4z"/><path class="st4" d="M455.6 225.3H56.4a4 4 0 0 1-4-4v-98.2a4 4 0 0 1 4-4h399.2a4 4 0 0 1 4 4v98.2a4 4 0 0 1-4 4zm-395.2-8h391.2v-90.2H60.4v90.2zm395.2 48.3H56.4c-2.2 0-4-1.8-4-4s1.8-4 4-4h399.2c2.2 0 4 1.8 4 4s-1.8 4-4 4zm0 206.1H56.4c-2.2 0-4-1.8-4-4s1.8-4 4-4h399.2c2.2 0 4 1.8 4 4s-1.8 4-4 4zm0-40.3H268.9c-2.2 0-4-1.8-4-4s1.8-4 4-4h186.7c2.2 0 4 1.8 4 4s-1.8 4-4 4zm0-41.8H268.9c-2.2 0-4-1.8-4-4s1.8-4 4-4h186.7c2.2 0 4 1.8 4 4s-1.8 4-4 4zm0-41.9H268.9c-2.2 0-4-1.8-4-4s1.8-4 4-4h186.7c2.2 0 4 1.8 4 4s-1.8 4-4 4zm0-41.9H268.9c-2.2 0-4-1.8-4-4s1.8-4 4-4h186.7c2.2 0 4 1.8 4 4s-1.8 4-4 4z"/><path fill="#fddd8d" d="M56.4 301.8h160.1v125.6H56.4z"/><path fill="#fee8b3" d="M56.4 301.8h160v26.1h-160z"/><path class="st9" d="M56.4 401.4h160v26.1h-160z"/><path class="st4" d="M216.4 431.4h-160a4 4 0 0 1-4-4V301.8a4 4 0 0 1 4-4h160.1a4 4 0 0 1 4 4v125.6a4 4 0 0 1-4.1 4zm-156-8h152.1V305.8H60.4v117.6z"/>
</svg>
Blog
- url: https://marcusnoble.co.uk
title: My articles on my Blog
content: |
<svg viewBox="0 0 60 60" height="32"><path d="M39 0H6.4v60h47V14.6L38.9 0zm.5 3.4L50.1 14H39.5V3.4zM8.5 58V2h29v14h14v42h-43z"/><path d="M34.5 37a1 1 0 1 0 0-2h-17a1 1 0 1 0 0 2h17zm10-7h-7a1 1 0 1 0 0 2h7a1 1 0 1 0 0-2zm-23 1c0 .6.4 1 1 1h10a1 1 0 1 0 0-2h-10a1 1 0 0 0-1 1zm-4.7-.7a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zm22 5a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zm5 0a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zM23 40.2c-2.2 1.1-2.9 3.3-3.2 5.5l-1.2-1c-1-.8-2.4.6-1.4 1.4l2.8 2.4c.6.5 1.7.2 1.7-.7 0-2.2.2-4.8 2.3-6 1.2-.5.2-2.2-1-1.6zm13.5 3.9c-1.5 0-3.6 2.2-4.8.2a1 1 0 0 0-1.3-.4c-1.4.9-3.3 2.1-4.8.5-.9-1-2.3.5-1.4 1.4 1.9 2 4.3 1.4 6.4.3.5.5 1 .9 1.8 1 .8.2 4-1 4.2-.8.8 1 2.5 0 1.8-1-.6-.8-1-1.1-2-1.2zM28.7 24l.6-.5-.3-.8c-.3-.6-.8-1.2-1.5-1.5l-2-1c.9-.7 1.6-1.6 2-2.9.7-.4 1.1-1.1 1.1-2v-.6c0-.7-.3-1.3-.8-1.8-.3-1.9-1.6-4-5.5-4h-.4a3 3 0 0 1-2-.4l-.5-.4c-.3-.4-.9-.6-1.3-.4a1 1 0 0 0-.7 1.2 11.2 11.2 0 0 0 .2 1.5l-.1.2-.3.6-.5 1.7c-.4.5-.7 1.1-.7 1.8v.6c0 .9.4 1.6 1 2a5.2 5.2 0 0 0 2.2 2.8L17 21.2a3 3 0 0 0-1.4 1.5l-.3.8.6.4a11 11 0 0 0 12.8 0zM18 23l2.5-1.3c.5-.3.8-.8.8-1.4V19l-.6-.2c-1-.4-1.5-1.2-1.8-2.4l-.2-.5-.5-.2a.3.3 0 0 1-.2-.3v-.6c0-.2 0-.3.2-.3l.4-.3v-.5l.5-1.6.2-.5.3-.9a5.3 5.3 0 0 0 2.7.4c3 0 3.5 1.3 3.6 2.6v.5l.6.3.1.3v.6c0 .2 0 .3-.2.3l-.5.2-.2.5c-.3 1.2-.9 2-1.8 2.4l-.6.2v1.5c0 .5.3 1 .8 1.3l2.4 1.2a9 9 0 0 1-8.5 0z"/></svg>
C.V.
- url: "mailto:hello@marcusnoble.co.uk"
slug: ""
title: Email me
name: Email
icon: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="32"><path fill="#ededed" 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>
- url: https://cv.marcusnoble.co.uk
slug: "/cv"
title: My CV
name: C.V.
icon: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" height="32"><path d="M39 0H6.4v60h47V14.6L38.9 0zm.5 3.4L50.1 14H39.5V3.4zM8.5 58V2h29v14h14v42h-43z"/><path d="M34.5 37a1 1 0 1 0 0-2h-17a1 1 0 1 0 0 2h17zm10-7h-7a1 1 0 1 0 0 2h7a1 1 0 1 0 0-2zm-23 1c0 .6.4 1 1 1h10a1 1 0 1 0 0-2h-10a1 1 0 0 0-1 1zm-4.7-.7a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zm22 5a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zm5 0a1 1 0 0 0-.3.7 1 1 0 0 0 1 1c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-1.4 0zM23 40.2c-2.2 1.1-2.9 3.3-3.2 5.5l-1.2-1c-1-.8-2.4.6-1.4 1.4l2.8 2.4c.6.5 1.7.2 1.7-.7 0-2.2.2-4.8 2.3-6 1.2-.5.2-2.2-1-1.6zm13.5 3.9c-1.5 0-3.6 2.2-4.8.2a1 1 0 0 0-1.3-.4c-1.4.9-3.3 2.1-4.8.5-.9-1-2.3.5-1.4 1.4 1.9 2 4.3 1.4 6.4.3.5.5 1 .9 1.8 1 .8.2 4-1 4.2-.8.8 1 2.5 0 1.8-1-.6-.8-1-1.1-2-1.2zM28.7 24l.6-.5-.3-.8c-.3-.6-.8-1.2-1.5-1.5l-2-1c.9-.7 1.6-1.6 2-2.9.7-.4 1.1-1.1 1.1-2v-.6c0-.7-.3-1.3-.8-1.8-.3-1.9-1.6-4-5.5-4h-.4a3 3 0 0 1-2-.4l-.5-.4c-.3-.4-.9-.6-1.3-.4a1 1 0 0 0-.7 1.2 11.2 11.2 0 0 0 .2 1.5l-.1.2-.3.6-.5 1.7c-.4.5-.7 1.1-.7 1.8v.6c0 .9.4 1.6 1 2a5.2 5.2 0 0 0 2.2 2.8L17 21.2a3 3 0 0 0-1.4 1.5l-.3.8.6.4a11 11 0 0 0 12.8 0zM18 23l2.5-1.3c.5-.3.8-.8.8-1.4V19l-.6-.2c-1-.4-1.5-1.2-1.8-2.4l-.2-.5-.5-.2a.3.3 0 0 1-.2-.3v-.6c0-.2 0-.3.2-.3l.4-.3v-.5l.5-1.6.2-.5.3-.9a5.3 5.3 0 0 0 2.7.4c3 0 3.5 1.3 3.6 2.6v.5l.6.3.1.3v.6c0 .2 0 .3-.2.3l-.5.2-.2.5c-.3 1.2-.9 2-1.8 2.4l-.6.2v1.5c0 .5.3 1 .8 1.3l2.4 1.2a9 9 0 0 1-8.5 0z"/></svg>
- url: https://www.github.com/AverageMarcus
title: AverageMarcus on GitHubBlog
content: |
<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>
GitHub
- url: https://twitter.com/Marcus_Noble_
title: "@Marcus_Noble_ on TwitterBlog"
content: |
<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>
Twitter
slug: "/github"
title: AverageMarcus on GitHub
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://k8s.social/@Marcus
title: "@marcus@k8s.social on MastodonBlog"
content: |
slug: "/mastodon"
title: "@marcus@k8s.social on Mastodon"
name: Mastodon
icon: |
<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="80 80 360 360">
<path d="m409 290c-5 24-43 50-85 56-86 11-137-6-137-6 3 13-4 54 70 52 31 0 58-7 58-7l2 27c-51 24-107 15-140 6-67-17-79-90-81-162v-59c0-74 49-96 49-96 50-24 180-22 222 0 0 0 49 22 49 96 0 0 1 55-7 93"></path>
<path d="m358 202v91h-35v-88c0-18-8-27-23-27-18 0-27 11-27 33v47h-34v-47c0-22-9-33-27-33-15 0-23 9-23 27v88h-35v-91c0-18 5-60 52-60 39 0 50 37 50 37s10-37 50-37c45 0 52 42 52 60" fill="#3088d4"></path>
</svg>
Mastodon
- url: https://bsky.app/profile/averagemarcus.bsky.social
slug: "/bluesky"
title: "@averagemarcus.bsky.social on BlueSky"
name: BlueSky
icon: |
<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="50 50 400 400">
<path d="M159 126c-28-22-74-38-74 14 0 11 6 88 9 101 13 43 57 54 97 48-69 11-87 50-49 89 72 75 104-18 112-42l2-5 2 5c8 24 40 117 112 42 38-39 20-78-49-89 40 6 84-5 97-48 3-13 9-90 9-101 0-52-46-36-74-14-39 29-82 89-97 121-15-32-58-92-97-121Z" fill="#1185fe"/>
</svg>
- url: https://www.linkedin.com/in/marcusnoble/
title: Connect with me on LinkedinBlog
content: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="32">
slug: "/linkedin"
title: Connect with me on Linkedin
name: LinkedIn
icon: |
<svg xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="32">
<rect width="512" height="512" rx="15%"></rect>
<circle cx="142" cy="138" r="37" fill="#0077b5"></circle>
<path stroke="#0077b5" stroke-width="66" d="M244 194v198M142 194v198"></path>
<path fill="#0077b5" d="M276 282c0-20 13-40 36-40 24 0 33 18 33 45v105h66V279c0-61-32-89-76-89-34 0-51 19-59 32"></path>
</svg>
LinkedIn
- url: https://noti.st/averagemarcus
title: View my previous talks on NotistBlog
content: |
<svg height="32" viewBox="0 -20 520 218">
<path d="M127.7 127.6a47 47 0 0 1-36.5 18.8c-16.4 0-26.4-9.8-26.4-22.1 0-17.6 9.2-29.1 9.2-40.4 0-4.6-2.6-8-6.7-8-4.9 0-11.8 4.9-18.1 17.5A146.2 146.2 0 0 0 36.8 139c0 4.8-2 6-6.3 6-8.7 0-19.9 1.4-24.2 1.4-3.8 0-6-1.4-6-6.3 0-10.7 12-49.5 12-65 0-5-2-5.6-2-9.3 0-6.3 15.6-10.7 32.3-10.7 6.3 0 9.8 2.6 9.8 7.5 0 4.6-2.3 13-2.3 13C55.2 69.3 72.2 55 89.2 55c15.9 0 22.2 7.2 22.2 18.2 0 13.2-8 27.6-8 39.4 0 7.5 4 10.4 9.2 10.4 4.9 0 7.2-2.3 10.9-6l.7-.8a44 44 0 0 1-.4-6.4c0-28 22.2-56 61.6-56 21.3 0 36 14 36 33.8 0 32.2-20.4 59.9-55.8 59.9-18 0-31.6-7.4-37.9-20zM291.2 113c2.2-15.1 8.7-29.4 8.7-38 0-4.9-1.7-5.5-1.7-9.2 0-6.3 15.3-10.7 32-10.7 6.3 0 9.8 2.6 9.8 7.5 0 11.6-9.3 29.7-9.3 48.7 0 7.5 4.4 11.8 9.5 11.8 3.8 0 6-1.3 8.6-3.7 1-7.7 7-12.1 13-12.1 7.8 0 12.4 3.7 12.4 10.6 0 7.2 2.6 12.1 7.8 12.1 4 0 6.3-2.6 6.3-7.8 0-17-28.5-19.5-28.5-41.1 0-18.2 18.2-27.4 39.8-27.4 21 0 30.5 8 30.5 19.9 0 7.8-4 14.7-13.5 14.7-5.5 0-10.4-4.4-10.4-9.8 0-4.3 2.3-6 2.3-8.7 0-2.8-2.3-4-5.5-4-3.7 0-8.3 4-8.3 9.5 0 17 31.7 19.3 31.7 40.3 0 18.7-15 31.4-40.4 31.4-16.3 0-29.3-5.4-34.7-14.8a45.4 45.4 0 0 1-32.4 14.2c-16.8 0-26.2-8.3-28.1-19.5-9.3 9.2-24.2 19.5-38.4 19.5-20.7 0-29.7-12.3-29.7-27.6 0-18.4 9-32.8 9-47.2 0-3.8-7.8-1.5-7.8-6.7 0-2.8 1.7-8.3 4.9-8.3 15.3 0 29.4-15 36.9-27 2.8-4.7 5.1-6.4 7.7-6.4 3.2 0 4.6 2.3 4.6 4.6 0 6.3-4 18.1-4 23 0 3.8 1.2 5.8 9.8 5.8 2.3 0 4 .8 4 3.2 0 5.7-3.1 9.7-6.6 9.7-7.2 0-10.4 2.3-12.4 9.3-2.3 8.3-6 23-6 32.5 0 8.6 4.3 11.8 11.2 11.8 5.8 0 11.5-5.5 16.1-9.2l1-.9zm200.1-43.5c-7.2 0-10.3 2.3-12.4 9.3-2.3 8.3-6 23-6 32.5 0 8.6 4.3 11.8 11.2 11.8 5.8 0 11.5-5.5 16.2-9.2 2-1.7 3.4-2.9 5.1-2.9 2.3 0 3.8 1.7 3.8 3.5a10 10 0 0 1-2.3 5.7c-7.5 9.8-26.5 26.2-44.4 26.2-20.7 0-29.6-12.3-29.6-27.6 0-18.4 8.9-32.8 8.9-47.2 0-3.8-7.8-1.5-7.8-6.7 0-2.8 1.7-8.3 5-8.3 15.2 0 29.3-15 36.8-27 2.9-4.7 5.2-6.4 7.8-6.4 3.1 0 4.6 2.3 4.6 4.6 0 6.3-4 18.1-4 23 0 3.8 1 5.8 9.7 5.8 2.3 0 4 .8 4 3.2 0 5.7-3.1 9.7-6.6 9.7zM356 120.8c0 2.6 2.2 4.7 4.9 4.7 3.3 0 6.4-3.8 6.4-7.3 0-2.6-1.7-4.6-4.8-4.6-3.4 0-6.5 3.7-6.5 7.2zm-48.6-96.5c0-11.5 10.4-23.6 21.3-23.6C339.1.7 345 7.3 345 16c0 11.5-10.4 23.9-21.4 23.9-8.9 0-16-7-16-15.6zm-107.3 80.4c0-5-1.7-9.2-5.7-11-9-3.4-11.6-6.6-11.6-11.8 0-7.2 4.4-9.5 4.4-11.2 0-1.4-1-2.3-2.6-2.3-1.2 0-4 .9-8.1 4a40.6 40.6 0 0 0-14.1 32.9c0 13 7.5 21.3 18.7 21.3 11.5 0 19-11.8 19-22z" />
- url: https://speaking.marcusnoble.co.uk
slug: "/speaking"
title: View my previous talks
name: Speaking
icon: |
<svg height="32" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<path d="M20 22c0-1.103-.897-2-2-2s-2 .897-2 2 .897 2 2 2 2-.897 2-2Zm7-6H13a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 1 0 0-2h-1V18h12v8.586l-2.293-2.293a.999.999 0 0 0-1.414 0l-4 4a.999.999 0 1 0 1.414 1.414L23 26.414l3.293 3.293A1 1 0 0 0 28 29V17a1 1 0 0 0-1-1Zm20 18h-8a1 1 0 1 0 0 2h8a1 1 0 1 0 0-2Zm-14-4h12a1 1 0 1 0 0-2H33a1 1 0 1 0 0 2Zm10-14H33a1 1 0 1 0 0 2h10a1 1 0 1 0 0-2Zm4 6h-6a1 1 0 1 0 0 2h6a1 1 0 1 0 0-2Zm-14 2h4a1 1 0 1 0 0-2h-4a1 1 0 1 0 0 2Zm-5 11a1 1 0 0 0 1 1h6a1 1 0 1 0 0-2h-6a1 1 0 0 0-1 1Zm-15 1h12a1 1 0 1 0 0-2H13a1 1 0 1 0 0 2Zm20.707 18.293a.999.999 0 1 0-1.414 1.414l4 4a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414l-4-4ZM30 48a1 1 0 0 0-1 1v2.586l-6.707 6.707a.999.999 0 1 0 1.414 1.414l7-7A.996.996 0 0 0 31 52v-3a1 1 0 0 0-1-1ZM60 3v4a1 1 0 0 1-1 1h-1v33c0 2.757-2.243 5-5 5H7c-2.757 0-5-2.243-5-5V11a1 1 0 1 1 2 0v30c0 1.654 1.346 3 3 3h46c1.654 0 3-1.346 3-3V7a1 1 0 0 1 1-1h1V4H2v2h51a1 1 0 1 1 0 2H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h28V1a1 1 0 1 1 2 0v1h28a1 1 0 0 1 1 1Z" fill="#FFF" fill-rule="evenodd"/>
</svg>
Notist
- url: https://youtube.com/playlist?list=PLT41C0Ggz5wa66-AU5xapbOuzkUKUPLzi
title: My appearances on YouTubeBlog
content: |
<svg viewBox="0 0 490 490" height="32"><path d="M480 180v130a100 100 0 0 1-100 100H110A100 100 0 0 1 10 310V180A100 100 0 0 1 110 80h270a100 100 0 0 1 100 100z" fill="#ea4640"/><path fill="#fff" d="m320 245-120 50V195z"/><g fill="#231f20"><path d="M380 70H110A110 110 0 0 0 0 180v130a110 110 0 0 0 110 110h270a110 110 0 0 0 110-110V180A110 110 0 0 0 380 70zm90 240c0 49.6-40.4 90-90 90H110c-49.6 0-90-40.4-90-90V180c0-49.6 40.4-90 90-90h270c49.6 0 90 40.4 90 90v130z"/><path d="m323.8 235.8-120-50A10 10 0 0 0 190 195v100a10 10 0 0 0 13.8 9.2l120-50a10 10 0 0 0 0-18.4zM210 280v-70l84 35-84 35z"/></g></svg>
YouTube
slug: "/youtube"
title: My appearances on YouTube
name: YouTube
icon: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 490 490" height="32"><path d="M480 180v130a100 100 0 0 1-100 100H110A100 100 0 0 1 10 310V180A100 100 0 0 1 110 80h270a100 100 0 0 1 100 100z" fill="#ea4640"/><path fill="#fff" d="m320 245-120 50V195z"/><g fill="#231f20"><path d="M380 70H110A110 110 0 0 0 0 180v130a110 110 0 0 0 110 110h270a110 110 0 0 0 110-110V180A110 110 0 0 0 380 70zm90 240c0 49.6-40.4 90-90 90H110c-49.6 0-90-40.4-90-90V180c0-49.6 40.4-90 90-90h270c49.6 0 90 40.4 90 90v130z"/><path d="m323.8 235.8-120-50A10 10 0 0 0 190 195v100a10 10 0 0 0 13.8 9.2l120-50a10 10 0 0 0 0-18.4zM210 280v-70l84 35-84 35z"/></g></svg>
- url: https://name.pn/marcus-noble
slug: "/pronouns"
title: More about my name and pronouns
name: name.pn
icon: |
<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="0 0 54.826 54.826"><defs><linearGradient id="a"><stop offset="0" stop-color="#f41046"/><stop offset="1" stop-color="#f46f94"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="66.774" y1="137.431" x2="189.397" y2="14.807" gradientUnits="userSpaceOnUse"/><clipPath clipPathUnits="userSpaceOnUse" id="c"><path class="powerclip" d="M69.3 80.322h71.07v54.633H69.3zm-24.096 28.493v7.522h120.638v-7.522z" fill="#00f" stroke-width="2.598"/></clipPath></defs><path d="M77.805 61.062h54.06c6.277 0 11.33 5.052 11.33 11.329v54.06c0 6.276-5.053 11.33-11.33 11.33h-54.06a11.304 11.304 0 0 1-11.329-11.33v-54.06c0-6.277 5.053-11.33 11.33-11.33z" fill="url(#b)" transform="matrix(.71464 0 0 .71464 -47.506 -43.637)"/><path clip-path="url(#c)" d="M74.3 85.321v38.044c0 3.651 2.94 6.59 6.592 6.59h47.887a6.577 6.577 0 0 0 6.591-6.59V85.32H80.892z" fill="#fff" transform="matrix(.71464 0 0 .71464 -47.506 -43.637)"/></svg>
projects:
- url: https://github.com/AverageMarcus/devstats-viewer
name: devstats-viewer
description: Discover your CNCF devstats score based on your GitHub username
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
languages:
- color: "#00ADD8"
name: Go
- url: https://github.com/AverageMarcus/tweetsvg
name: tweetsvg
description: Generate an SVG for a given Tweet ID
- url: https://github.com/AverageMarcus/cel-tester
name: cel-tester
description: Browser-based CEL expression tester
languages:
- color: "#e34c26"
name: HTML
@@ -90,27 +128,45 @@ projects:
name: HTML
- color: "#00ADD8"
name: Go
events:
- date: "2022-09-27"
humanDate: "September 27, 2022"
url: https://www.meetup.com/DevOps-Notts/
eventName: DevOpsNotts
details:
- name: The Wonders and Woes of Webhooks
type: Meetup Talk
- date: "2022-09-29"
humanDate: "September 29 - 30, 2022"
url: https://devopsdays.org/events/2022-london/welcome/
eventName: DevOpsDays London 2022
details:
- name: What DragonBall can teach us about being engineers
type: Ignite Talk
- date: "2022-10-03"
humanDate: "October 3 - 4, 2022"
url: https://kubehuddle.com/2022/
eventName: KubeHuddle 2022
details:
- name: The Wonders and Woes of Webhooks
type: Presentation
- name: What DragonBall can teach us about being engineers
type: Lightning Talk
- url: https://github.com/AverageMarcus/link
name: link
description: Tiny link redirector. Best used with a short domain.
languages:
- color: "#00ADD8"
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
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: []

50
main.go
View File

@@ -7,7 +7,9 @@ import (
"log"
"net/http"
"os"
"path"
"strings"
"time"
"gopkg.in/yaml.v2"
)
@@ -35,28 +37,58 @@ 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"] != "" {
http.Handle(link["slug"].(string), http.RedirectHandler(link["url"].(string), http.StatusTemporaryRedirect))
}
}
// 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{}
for _, obj := range objs {
val := obj.(map[interface{}]interface{})[key]
vals = append(vals, val.(string))
}
return template.HTML(strings.Join(vals, joiner))
},
"html": func(str string) template.HTML {
return template.HTML(str)
},
})
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
page := "src" + r.URL.Path
if strings.HasSuffix(page, "/") {
page = page + "index.html"
}
if strings.HasSuffix(page, ".html") {
tpl, err := template.ParseFS(res, page)
if strings.HasSuffix(page, ".html") || strings.HasSuffix(page, ".md") {
tpl, err := template.New(path.Base(page)).Funcs(funcMap).ParseFS(res, page)
if err != nil {
log.Printf("page %s (%s) not found...", r.RequestURI, page)
log.Println(err)
w.WriteHeader(http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
tpl.Funcs(template.FuncMap(map[string]interface{}{
"html": func(str string) template.HTML {
return template.HTML(str)
},
}))
if err := tpl.Execute(w, data); err != nil {
log.Println(err)
return
}
} else {

57
src/README.md Normal file
View File

@@ -0,0 +1,57 @@
<div align="center">
# Hi 👋, I'm Marcus
<sup>**Pronounced:** /ˈmɑːkəs/ ⚡️ **Pronouns:** He/Him/His</sup>
{{ .intro | html }}
## 🌐 Find me around the web
| {{ range .social }}<a href="{{ .url }}" rel="me" title="{{ .title }}">{{ .name | html }}</a> | {{ end }}
{{ if gt (len .events) 0 }}
## 🗓 Upcoming Events
{{ range .events }}
<div>{{ .humanDate }}</div>
<div>
[**{{.eventName}}**]({{ .url }})
</div>
{{ range .details }}
<strong>
{{ .name | html }}{{ if .type }} - {{ .type }}{{ end}}
</strong>
{{ end }}
✨✨✨
{{- end }}
</div>
{{ end }}
{{ if gt (len .projects) 0 }}
## 💻 My Open Source Projects
All my Open Source projects can be found on my <a href="https://github.com/AverageMarcus">GitHub</a> profile (as well as my personal <a href="https://git.cluster.fun">Gitea</a> instance, <a href="https://gitlab.com/AverageMarcus">GitLab</a>, <a href="https://codeberg.org/AverageMarcus">Codeberg</a> and <a href="https://bitbucket.org/AverageMarcus/workspace/projects/PROJ">BitBucket</a>).
Below are a selection of highlights.
{{ range .projects }}
[**{{ .name }}**]({{ .url }}) - {{ .description }} [{{ join .languages "name" ", " }}]
{{ end }}
{{ end }}
{{ if gt (len .badges) 0 }}
## 🎖️ Badges
{{ range .badges }}
<a href="{{ .url }}" target="_blank">
<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

@@ -7,6 +7,15 @@
<title>Marcus Noble</title>
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96.png">
<meta property="og:title" content="Marcus Noble">
<meta property="og:site_name" content="Marcus Noble">
<meta property="og:url" content="https://marcusnoble.com">
<meta property="og:type" content="website">
<meta property="og:image" content="https://opengraph.cluster.fun/opengraph/?siteTitle=&title=Marcus%20Noble&tags=&image=https%3A%2F%2Fmarcusnoble.co.uk%2Fimages%2Fmarcus.jpg&twitter=Marcus_Noble_&github=AverageMarcus&website=www.MarcusNoble.co.uk&bgColor=%2310181f&fgColor=%23f5f5f5">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:creator" content="@Marcus_Noble_">
<style>
@font-face {
font-family: 'Orkney';
@@ -54,6 +63,25 @@
color: #fd7e0b;
}
h2 {
margin-bottom: 10px;
}
h2 + p {
margin-top: 0;
}
.tag {
font-size: 0.7em;
background: #ededed;
color: #11191f;
padding: 4px 7px;
border-radius: 10em;
display: inline-block;
font-weight: lighter;
line-height: 1.2em;
}
header {
height: 100vh;
background-image: url('headshot-transparent.png');
@@ -77,12 +105,28 @@
main h1 {
font-size: 2.5em;
margin-bottom: 0;
}
main h1 small {
font-weight: lighter;
font-size: 0.3em;
color: #bcb8b8;
display: inline-block;
}
main p {
line-height: 1.4em;
}
main p span {
display: inline-block;
}
.email-link {
color: #fd7e0b;
}
/* Social links */
.social-links {
list-style: none;
@@ -124,7 +168,7 @@
}
.projects li {
width: 400px;
width: 300px;
max-width: 100%;
border: 2px solid;
border-radius: 6px;
@@ -153,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;
@@ -168,7 +245,7 @@
}
.events time {
font-size: .9em;
font-size: .85em;
}
.events li .details {
@@ -178,24 +255,20 @@
padding-left: 10px;
margin-left: 2px;
border-left: 4px solid;
margin-top: .6em;
margin-top: .2px;
}
.events li .details > div {
margin-top: 2px;
margin-bottom: 6px;
}
.events .tag {
font-size: 0.7em;
background: #ededed;
color: #11191f;
padding: 4px 7px;
border-radius: 10em;
.badges a {
display: inline-block;
font-weight: lighter;
line-height: 1.2em;
}
.badges a img {
width: 110px;
}
@media only screen and (max-width: 1700px) {
body {
@@ -204,7 +277,8 @@
header {
height: 100%;
background-position: bottom center;
background-position-y: bottom;
background-position-x: 0;
background-size: contain
}
main {
@@ -212,8 +286,15 @@
overflow-y: unset;
}
#intro h1 {
margin: 0;
}
#intro p {
font-size: 0.9em;
}
}
@media only screen and (max-width: 1050px) {
.projects li {
@@ -226,7 +307,9 @@
<header></header>
<main>
<section id="intro">
<h1>Hi 👋, I'm Marcus</h1>
<h1>Hi 👋, I'm Marcus <small>(/ˈmɑːkəs/)</small></h1>
<div class="tag">Pronouns: He/Him/His</div>
<p>
{{ .intro | html }}
@@ -234,24 +317,67 @@
</section>
<section id="links">
<h2>Find me around the web 🌐</h2>
<h2>🌐 Find me around the web</h2>
<ul class="social-links">
{{ range .social }}
<li>
<a href="{{ .url }}" rel="me" title="{{ .title }}">
{{ .content | html }}
{{ .icon | html }}
{{ .name }}
</a>
</li>
{{ end }}
</ul>
</section>
{{ if gt (len .events) 0 }}
<section id="events">
<h2>🗓 Upcoming Events</h2>
<ul class="events">
{{ range .events }}
<li>
<time datetime="{{ .date }}">{{ .humanDate }}</time>
<div class="details">
<strong><a href="{{ .url }}">{{ .eventName }}</a></strong>
{{ range .details }}
<div>
<span>{{ .name | html }}</span>
{{ if .type }}<span class="tag">{{ .type }}</span>{{ end }}
</div>
{{ end }}
</div>
</li>
{{ end }}
</ul>
</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>
<h2>💻 My Open Source Projects</h2>
<p>
All my Open Source projects can be find on my <a href="https://github.com/AverageMarcus">GitHub</a> profile <small>(as well as my personal <a href="https://git.cluster.fun">Gitea</a> instance, <a href="https://gitlab.com/AverageMarcus">GitLab</a>, <a href="https://codeberg.org/AverageMarcus">Codeberg</a> and <a href="https://bitbucket.org/AverageMarcus/workspace/projects/PROJ">BitBucket</a>)</small>. Below are a selection of highlights.
All my Open Source projects can be found on my <a href="https://github.com/AverageMarcus">GitHub</a> profile <small>(as well as my personal <a href="https://git.cluster.fun">Gitea</a> instance, <a href="https://gitlab.com/AverageMarcus">GitLab</a>, <a href="https://codeberg.org/AverageMarcus">Codeberg</a> and <a href="https://bitbucket.org/AverageMarcus/workspace/projects/PROJ">BitBucket</a>)</small>. Below are a selection of highlights.
</p>
<ul class="projects">
@@ -270,27 +396,21 @@
{{ end }}
</ul>
</section>
<section id="events">
<h2>Upcoming Events 🗓</h2>
<ul class="events">
{{ range .events }}
<li>
<time datetime="{{ .date }}">{{ .humanDate }}</time>
<div class="details">
<strong><a href="{{ .url }}">{{ .eventName }}</a></strong>
{{ range .details }}
<div>
<span>{{ .name }}</span>
<span class="tag">{{ .type }}</span>
</div>
{{ end }}
</div>
</li>
{{ if gt (len .badges) 0 }}
<section id="badges">
<h2>🎖️ Badges</h2>
<ul class="badges">
{{ range .badges }}
<a href="{{ .url }}" target="_blank">
<img src="{{ .img }}" />
</a>
{{ end }}
</ul>
</section>
{{ end }}
</main>
</body>
</html>