Files
pw/templates/sider/cv.html
T
Asger Geel WeirsøeandClaude Opus 5.5 e58a11c2b4 feat: flyt sitet fra Astro til Zola
Samme indhold, URL'er og udseende, bygget af en enkelt zola-binær og Tailwind
standalone-CLI uden Node. Kanonisk domæne er asger.weirsoe.dk.

Blogindlæg ligger som page bundles med frontmatter Zola forstår, så de gamle
stempler er ugyldige, indtil scripts/omstempl.py er kørt med PUBLISH_KEY.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:47:08 +01:00

194 lines
9.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base.html" %}
{% block main %}
{% set d = load_data(path="data/cv.json") %}
<h1 class="text-4xl font-bold tracking-tight">CV</h1>
<div class="mt-3 flex flex-wrap gap-x-4 gap-y-1 text-sm text-muted">
<span>Nørresundby, Danmark</span>
<a class="text-accent hover:underline" href="mailto:asger@weirsoe.dk">asger@weirsoe.dk</a>
<a class="text-accent hover:underline" href="https://www.linkedin.com/in/ag-weirs%C3%B8e/">LinkedIn</a>
</div>
<p class="mt-6 max-w-2xl text-muted">
Datalog (cand.scient.) fra Aalborg Universitet med en bred profil. Jeg forener teknisk
indsigt med forretningsforståelse og er god til at få komplekse løsninger til at lande i
praksis, særligt inden for elektronisk fakturering. Jeg har stået for hændelseshåndtering
på national e-faktura-infrastruktur og bygget et ISMS efter ISO/IEC 27001. Karrieren gik fra fuld-stack udvikling
hos BilligVVS til konsulent- og Teknisk Lead-rollen hos CGI, og i dag er jeg Technical
Solution Architect hos Digisense A/S, hvor jeg bygger bro mellem kunder, forretning og
udviklingsteams. Ved siden af læser jeg HD i Erhvervsøkonomi for at koble teknik og
forretning endnu tættere.
</p>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Fagområder</h2>
<p class="mt-4 max-w-2xl text-muted">
Jeg arbejder med <strong class="text-text">elektronisk fakturering</strong> (e-faktura / electronic
invoicing) og e-procurement. Hos CGI var jeg med til at udvikle den open source eDelivery-løsning
til NemHandel, der er bygget på den open source-baserede access point <strong class="text-text">Oxalis</strong> (Java). I dag er jeg
Technical Solution Architect hos Digisense A/S og arbejder med løsningsarkitektur på området:
<strong class="text-text">Peppol</strong> (BIS, Access Point og eDelivery/AS4),
<strong class="text-text">NemHandel</strong>, <strong class="text-text">OIOUBL/UBL</strong> og den
europæiske e-faktura-standard EN 16931.
</p>
<div class="mt-4 flex flex-wrap gap-2">
{% for k in ["Peppol", "Peppol Access Point", "Oxalis", "NemHandel", "e-faktura", "Electronic invoicing", "OIOUBL / UBL", "e-Delivery (AS4)", "EN 16931", "e-procurement"] %}
<span class="wt-tag">{{ k }}</span>
{% endfor %}
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Hændelseshåndtering og compliance</h2>
<p class="mt-4 max-w-2xl text-muted">
Når noget går ned i produktion, er det tekniske kun halvdelen. Den anden halvdel er at få de
rigtige folk i gang, holde kunden orienteret og bagefter lære noget af det. Det har jeg gjort i
praksis som teknisk lead på NemHandel hos CGI. Under <strong class="text-text">CrowdStrike-nedbruddet
i juli 2024</strong> ramte en databasefejl produktionen, samtidig med at de fleste af teamets maskiner
var nede.. så vi koordinerede over telefonen med hostingleverandøren og den ene udvikler, hvis maskine
stadig virkede, og databasen var tilbage samme eftermiddag. Da den kritiske SnakeYAML-sårbarhed
<strong class="text-text">CVE-2022-1471</strong> ramte NemHandel-referenceimplementeringen, orienterede
vi kunden med det samme, der gik vejledning ud til dem der kørte løsningen, og vi havde en rettet
version ude inden for to uger.
</p>
<p class="mt-3 max-w-2xl text-muted">
Hos Digisense har jeg bygget virksomhedens ledelsessystem for informationssikkerhed efter
<strong class="text-text">ISO/IEC 27001</strong>, med procedurer for hændelseshåndtering og eskalering,
evaluering efter hændelser og et hændelsesregister. Det er arbejdet der skal ligge klar før det brænder,
så ingen skal opfinde responsen undervejs. Interessen er ikke ny: min kandidat er specialiseret i
sikkerhed i distribuerede systemer.
</p>
<div class="mt-4 flex flex-wrap gap-2">
{% for k in ["Incident response", "Hændelseshåndtering", "Eskalering", "Post-incident review", "Sårbarhedshåndtering", "Interessentkommunikation", "ISO/IEC 27001", "ISMS", "Informationssikkerhed"] %}
<span class="wt-tag">{{ k }}</span>
{% endfor %}
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Erhvervserfaring</h2>
<div class="mt-4 space-y-4">
{% for e in d.erhverv %}
<div class="wt-card">
<h3 class="font-semibold">{{ e.org }} <span class="font-normal text-muted">· {{ e.sted }}</span></h3>
<div class="mt-3 space-y-3">
{% for r in e.roller %}
<div>
<div class="flex flex-wrap items-baseline justify-between gap-2">
<span class="font-medium text-text">{{ r.titel }}</span>
<span class="text-xs text-muted">{{ r.naar }}</span>
</div>
<ul class="mt-1 list-disc pl-5 text-sm text-muted">
{% for d in r.detaljer %}<li>{{ d }}</li>{% endfor %}
</ul>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Uddannelse</h2>
<div class="mt-4 space-y-4">
{% for u in d.uddannelse %}
<div class="wt-card">
<div class="flex flex-wrap items-baseline justify-between gap-2">
<h3 class="font-semibold">{{ u.hvad }}</h3><span class="text-xs text-muted">{{ u.naar }}</span>
</div>
<p class="text-sm text-muted">{{ u.hvor }}</p>
{% if u.note %}<p class="mt-1 text-sm text-muted/80">{{ u.note }}</p>{% endif %}
</div>
{% endfor %}
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Licenser</h2>
<div class="mt-4 space-y-4">
{% for l in d.licenser %}
<div class="wt-card">
<div class="flex flex-wrap items-baseline justify-between gap-2">
<h3 class="font-semibold">{{ l.hvad }}</h3><span class="text-xs text-muted">{{ l.naar }}</span>
</div>
<p class="text-sm text-muted">{{ l.hvor }}</p>
{% if l.note %}<p class="mt-1 text-sm text-muted">{{ l.note }}</p>{% endif %}
</div>
{% endfor %}
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Publikationer</h2>
<div class="mt-4 wt-card">
<a href="https://arxiv.org/abs/2310.00999" target="_blank" rel="noopener" class="font-medium hover:text-accent">
CGAAL: Distributed On-The-Fly ATL Model Checker with Heuristics
</a>
<p class="mt-1 text-sm text-muted">
Carlsen, Frydenskov, Jensen, Rasmussen, Sørensen, <span class="text-text">Weirsøe</span>, Jensen &amp; Larsen.
<em>EPTCS</em>, vol. 390 (2023), s. 99–114. <span class="text-muted/80">arXiv:2310.00999</span>
</p>
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Frivilligt arbejde</h2>
<div class="mt-4 space-y-4">
{% for f in d.frivilligt %}
<div class="wt-card">
<div class="flex flex-wrap items-baseline justify-between gap-2">
<h3 class="font-semibold">{{ f.hvad }}</h3><span class="text-xs text-muted">{{ f.naar }}</span>
</div>
<p class="mt-1 text-sm text-muted">{{ f.note }}</p>
</div>
{% endfor %}
</div>
</section>
<section class="mt-10 grid gap-4 sm:grid-cols-2">
<div>
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Primære kompetencer</h2>
<div class="mt-4 flex flex-wrap gap-2">
{% for k in d.primaere %}<span class="wt-tag">{{ k }}</span>{% endfor %}
</div>
<h2 class="mt-8 text-sm font-semibold uppercase tracking-widest text-accent">Sekundære</h2>
<div class="mt-4 flex flex-wrap gap-2">
{% for k in d.sekundaere %}<span class="wt-tag wt-muted">{{ k }}</span>{% endfor %}
</div>
</div>
<div>
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Sprog</h2>
<ul class="mt-4 space-y-2 text-sm">
{% for s in d.sprog %}<li class="wt-card wt-card--compact">{{ s }}</li>{% endfor %}
</ul>
<h2 class="mt-8 text-sm font-semibold uppercase tracking-widest text-accent">Interesser</h2>
<p class="mt-4 text-sm text-muted">
Selvhosting og drift: jeg har gennem mange år bygget og vedligeholdt et homelab med
<a class="text-accent hover:underline" href="https://www.proxmox.com/" target="_blank" rel="noopener"> Proxmox</a>,
bag SSO via <a class="text-accent hover:underline" href="https://goauthentik.io/" target="_blank" rel="noopener">Authentik</a>.
Det har ført til bidrag i open source-projekter som Qutebrowser og Stregsystemet (IT-studerendes betalingssystem på AAU).
</p>
<p class="mt-3 text-sm text-muted">
Jeg er desuden licenseret radioamatør med <strong class="text-text">B-licens</strong> og kaldesignalet
<strong class="text-text">OZ0AGW</strong>.
</p>
</div>
</section>
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">Natur og jagt</h2>
<div class="mt-4 wt-card">
<p class="text-muted">
Jeg har jagttegn, men jagten er mest anledningen. Det jeg tager ud efter, er at stå op
længe før resten af landet og træde ud i den stilhed, der kun findes tidligt om morgenen,
og så se solen komme op og disen lette hen over markerne.
</p>
<p class="mt-3 text-muted">
Planter, fugle, årstidernes skiften: jeg kan lide at kunne sætte navn på det jeg ser, og
at lægge mærke til hvad der har ændret sig siden sidst. Ender turen uden at der bliver
nedlagt noget, har den været lige så meget værd.
</p>
</div>
</section>
{% endblock %}