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>
194 lines
9.6 KiB
HTML
194 lines
9.6 KiB
HTML
{% 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 & 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 %}
|