<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://christiandewein.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://christiandewein.com/" rel="alternate" type="text/html" /><updated>2026-05-09T19:38:07+02:00</updated><id>https://christiandewein.com/feed.xml</id><title type="html">Christian Dewein</title><subtitle>Hi! My name is Christian Dewein, a software developer living in Frankfurt, Germany.
</subtitle><author><name>Christian Dewein</name></author><entry><title type="html">The Role of a Developer in the Age of AI</title><link href="https://christiandewein.com/developer-role-in-the-age-of-ai" rel="alternate" type="text/html" title="The Role of a Developer in the Age of AI" /><published>2026-04-14T00:00:00+02:00</published><updated>2026-04-14T15:38:30+02:00</updated><id>https://christiandewein.com/ai-thoughts</id><content type="html" xml:base="https://christiandewein.com/developer-role-in-the-age-of-ai"><![CDATA[<div id="outline-container-org0f59d19" class="outline-1">
<h1 id="org0f59d19">The Role of a Developer in the Age of AI</h1>
<div class="outline-text-1" id="text-org0f59d19">
<p>
<b>A keynote talk turned essay — on shipping, understanding your environment, and why "Paint by Numbers" is the best metaphor for software engineering right now.</b>
</p>
</div>
<div id="outline-container-orga15d1b0" class="outline-2">
<h2 id="orga15d1b0">The Question Everyone Is Asking</h2>
<div class="outline-text-2" id="text-orga15d1b0">
<p>
Whenever I talk to other developers these days, the conversation eventually lands on the same topic: <b><b>AI</b></b>. What does it mean for our craft? Is it a threat? Is it a superpower? Are we becoming less relevant, or more?
</p>

<p>
I don't think the role of a developer has changed as fundamentally as people fear. But I do think AI has made something very visible that was always true — something most developers quietly knew, but rarely talked about.
</p>

<p>
Let me explain.
</p>
</div>
</div>
<div id="outline-container-org78bac64" class="outline-2">
<h2 id="org78bac64">The Skill That Actually Matters</h2>
<div class="outline-text-2" id="text-org78bac64">
<p>
Let's be honest: code generation has never been the bottleneck in good software engineering.
</p>

<p>
Even five years ago — before AI could write a React component from a comment — the best engineers on any team weren't valued because they typed fast or wrote the most lines of code. Nobody worth their salt was measuring engineering quality in LOC. We all knew that.
</p>

<p>
The real bottleneck has always been <b><b>shipping</b></b> — getting real results into the real world. Delivering on time. Delivering what's actually needed. Knowing the difference between those two, and navigating the gap.
</p>

<p>
That's the skill. The ultimate engineering skill. It's harder to track than code output. You can't see a PR for it. There's no metric. But every senior engineer has lived through projects where someone <b>got it done</b> — not because they were the fastest coder, but because they held the whole picture in their head, asked the right questions, navigated blockers, and kept moving.
</p>

<p>
That's what I mean by "shipping skills." That's what I mean by "getting real results."
</p>
</div>
</div>
<div id="outline-container-orgdbcb9dd" class="outline-2">
<h2 id="orgdbcb9dd">Seizing Your Opportunities</h2>
<div class="outline-text-2" id="text-orgdbcb9dd">
<p>
Every day, every developer faces a stream of small opportunities: a refinement session, a ticket description, a stakeholder conversation, a design review, a Slack thread going sideways. Each of these is a chance to either move things forward — or miss it.
</p>

<p>
Missing opportunities is easy. You didn't prepare enough. You didn't listen closely enough. You didn't ask the clarifying question. You didn't speak up when something felt wrong.
</p>

<p>
And the thing about missed opportunities is that they're <b>invisible</b>. Nobody counts them. There's no retrospective item for "the feature that took six months instead of two because we didn't nail down the requirements." There's no post-mortem for "the technically correct solution that didn't solve the customer's actual need."
</p>

<p>
But those missed opportunities are exactly what it costs a team — and a company — dearly. They are rare chances wasted.
</p>

<p>
<b><b>Not missing them. Recognizing them in the wild and acting on them.</b></b> That's what seniority actually looks like. That's what experience earns you.
</p>
</div>
</div>
<div id="outline-container-orgd55e2f5" class="outline-2">
<h2 id="orgd55e2f5">You Connect the Dots</h2>
<div class="outline-text-2" id="text-orgd55e2f5">
<p>
One of the most important things a developer can do is understand their environment:
</p>

<ul class="org-ul">
<li>the tech stack</li>
<li>the data</li>
<li>the company</li>
<li>the stakeholders</li>
<li>the market</li>
<li>the big picture</li>
<li>the things other teams and teammates are working on — even if it feels irrelevant today</li>
</ul>

<p>
Because <b>you</b> are the one who connects the dots.
</p>

<p>
Code generation is getting cheaper. It's not free — not even close — but it's cheaper every month. What is nowhere near being replaced by AI is the ability to <b><b>take responsibility for carrying something from beginning to end</b></b> and to <b><b>create actual added value</b></b> for the people you're building for.
</p>

<p>
You understand why a feature exists. You understand what the customer is actually trying to do. You know which edge cases matter in <b>your</b> system, with <b>your</b> data, in <b>your</b> context. An AI doesn't have that context. You do.
</p>

<p>
That's the thing that creates value. That's the work that matters.
</p>
</div>
</div>
<div id="outline-container-orgeb1a220" class="outline-2">
<h2 id="orgeb1a220">Paint by Numbers</h2>
<div class="outline-text-2" id="text-orgeb1a220">
<p>
A friend of mine recently gave me the best metaphor I've heard for AI-assisted development:
</p>

<p>
&gt; <b><b>The future of coding is Paint by Numbers.</b></b>
</p>

<p>
At first it sounds deflating. Are we just coloring in? But here's what he actually meant:
</p>

<p>
<b><b>You set the lines.</b></b>
<b><b>You set the numbers.</b></b>
<b><b>(Someone or something) paints them in.</b></b>
<b><b>You own the picture.</b></b>
</p>

<p>
The <b>template</b> — the lines and the numbers — requires vision. Taste. Knowledge. Judgment. You need to know which lines to draw, what belongs in each section, and whether the finished picture solves the actual need.
</p>

<p>
The painting — the code generation, the boilerplate, the implementation details — that's the step that AI is rapidly taking over. And you know what? That's fine. That was always the least interesting part of the job.
</p>

<p>
What AI can't replace is knowing <b>what picture to paint in the first place.</b>
</p>

<p>
You judge whether the outcome meets the need.
You are responsible for knowing which lines to draw, where to put which numbers.
You are responsible for the result.
</p>
</div>
</div>
<div id="outline-container-org888010f" class="outline-2">
<h2 id="org888010f">What Changes, What Doesn't</h2>
<div class="outline-text-2" id="text-org888010f">
<p>
So what actually changes in the age of AI?
</p>

<p>
One step in the game gets faster — and cheaper. The "painting in" step. That's real, and it matters. Don't get stuck there. Don't spend your growth energy optimizing for the part that AI is commoditizing.
</p>

<p>
What doesn't change: the need to understand your environment deeply, to spot unseized opportunities, to take end-to-end ownership of outcomes, and to connect the dots across systems, teams, and contexts that no model has fully internalized.
</p>

<p>
The best description I know of a senior engineer isn't "writes excellent code fast." It's: <b><b>someone who creates something that has genuine value — and knows how to make that happen.</b></b>
</p>

<p>
AI doesn't threaten that definition. If anything, it clarifies it.
</p>
</div>
</div>
<div id="outline-container-org54f97ad" class="outline-2">
<h2 id="org54f97ad">Celebrate Your Craft</h2>
<div class="outline-text-2" id="text-org54f97ad">
<p>
There's a temptation right now to be anxious — to feel like the ground is shifting under your feet. Some of it is, honestly. But a lot of the anxiety comes from confusing <b>code writing</b> with <b>software engineering</b>.
</p>

<p>
Software engineering is a much bigger, more interesting, more human thing. It's the thinking before the code, the communication during, the judgment calls throughout, and the ownership after.
</p>

<p>
Keep honing your skills — all of them. Learn your tools deeply. Stay curious about the systems around you, not just the ones you directly control. Practice the discipline of understanding before building.
</p>

<p>
And do not forget the big picture.
</p>

<p>
There's no AI bot for that yet.
</p>

<p>
&mdash;
</p>

<p>
<b>This post is adapted from a keynote talk on the role of developers in an AI-accelerated world. The core ideas — shipping skills, environmental awareness, and the "Paint by Numbers" metaphor — came from a developer summit where we asked ourselves: what does it actually mean to do great engineering work today?</b>
</p>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><summary type="html"><![CDATA[TODO - new post]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/TODO" /><media:content medium="image" url="https://christiandewein.com/TODO" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">LeadDev Berlin 2025 Linklist</title><link href="https://christiandewein.com/leaddev-berlin-2025-linklist" rel="alternate" type="text/html" title="LeadDev Berlin 2025 Linklist" /><published>2025-11-03T00:00:00+01:00</published><updated>2026-03-25T08:52:06+01:00</updated><id>https://christiandewein.com/leaddev-berlin-2025-linklist</id><content type="html" xml:base="https://christiandewein.com/leaddev-berlin-2025-linklist"><![CDATA[<div id="outline-container-org999f4be" class="outline-1">
<h1 id="org999f4be">LeadDev Berlin 2025 Linklist</h1>
<div class="outline-text-1" id="text-org999f4be">
<p>
Personal link collection of things that I (re-)discovered during the <a href="https://leaddev.com/leaddev-berlin/">LeadDev Berlin 2025</a>.
</p>
</div>
<div id="outline-container-orgc54287d" class="outline-2">
<h2 id="orgc54287d">Management</h2>
<div class="outline-text-2" id="text-orgc54287d">
<ul class="org-ul">
<li><a href="https://monkeysthumb.co.uk/workshops/navigating-difference-and-disagreement/leaddev-berlin-25/">Navigating difference and disagreement</a></li>
<li><a href="https://www.oreilly.com/library/view/the-engineering-executives/9781098149475/">The Engineering Executive's Primer [Book</a>]</li>
<li><a href="https://www.confidentcommunicator.com/blog/the-conflict-continuum">The conflict continuum — Confident Communicators, LLC</a></li>
<li><a href="https://www.leejustin.com/Rethinking-Interviewing-In-An-AI-Era-2a0703f0ba8f80029025f2775f082e1a">Rethinking Interviewing In An AI Era</a></li>
<li><a href="https://donellameadows.org/systems-thinking-book-sale/">Thinking in Systems Book Sale - The Donella Meadows Project</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgee63991" class="outline-2">
<h2 id="orgee63991">Technology</h2>
<div class="outline-text-2" id="text-orgee63991">
<ul class="org-ul">
<li><a href="https://www.checklyhq.com/">Checkly: Application Monitoring Powered by Playwright &amp; OTEL</a></li>
<li><a href="https://www.swarmia.com/">Swarmia: Rethink developer productivity</a></li>
<li><a href="https://uptimelabs.io/">Uptime Labs</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgd9f2e06" class="outline-2">
<h2 id="orgd9f2e06">Online Resources</h2>
<div class="outline-text-2" id="text-orgd9f2e06">
<ul class="org-ul">
<li><a href="https://www.kaggle.com/whitepaper-prompt-engineering">Prompt Engineering Ebook</a></li>
<li><a href="https://dora.dev/research/2025/dora-report/">DORA | State of AI-assisted Software Development 2025</a></li>
</ul>
</div>
</div>
<div id="outline-container-org1fc0fe3" class="outline-2">
<h2 id="org1fc0fe3">Tools</h2>
<div class="outline-text-2" id="text-org1fc0fe3">
<ul class="org-ul">
<li><a href="https://github.com/jstanier/bragdoc">jstanier/bragdoc: Generate a doc from your activity in Linear.</a></li>
<li><a href="https://gamma.app/de">Gamma | Bester KI-Präsentations- und Website-Builder</a></li>
</ul>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><category term="linklist" /><summary type="html"><![CDATA[Personal link collection of things that I (re-)discovered during LeadDev Berlin 2025.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">LeadDev Berlin 2024 Linklist</title><link href="https://christiandewein.com/leaddev-berlin-2024-linklist" rel="alternate" type="text/html" title="LeadDev Berlin 2024 Linklist" /><published>2024-11-03T00:00:00+01:00</published><updated>2026-03-25T08:52:06+01:00</updated><id>https://christiandewein.com/leaddev-berlin-2024-linklist</id><content type="html" xml:base="https://christiandewein.com/leaddev-berlin-2024-linklist"><![CDATA[<div id="outline-container-orgde259f0" class="outline-1">
<h1 id="orgde259f0">LeadDev Berlin 2024 Linklist</h1>
<div class="outline-text-1" id="text-orgde259f0">
<p>
Personal link collection of things that I (re-)discovered during the <a href="https://leaddev.com/leaddev-berlin/">LeadDev Berlin 2024</a>.
</p>
</div>
<div id="outline-container-org9820238" class="outline-2">
<h2 id="org9820238">DORA Metrics</h2>
<div class="outline-text-2" id="text-org9820238">
<ul class="org-ul">
<li><a href="https://cloud.google.com/resources/devops/state-of-devops">2024 State of DevOps Report | Google Cloud</a></li>
<li><a href="https://dora.dev/">DORA | Get Better at Getting Better</a></li>
<li><a href="https://dora.dev/research/">DORA | Research</a></li>
<li><a href="https://dora.community/">DORA Community of Practice</a></li>
</ul>
</div>
</div>
<div id="outline-container-org396b1fc" class="outline-2">
<h2 id="org396b1fc">Online Resources</h2>
<div class="outline-text-2" id="text-org396b1fc">
<ul class="org-ul">
<li><a href="https://www.thecaringtechie.com/">The Caring Techie Newsletter | Irina Stanescu | Substack</a></li>
<li><a href="https://www.lenareinhard.com/newsletter">Newsletter</a> of Lena Reinhard</li>
<li>Circles of Influence, Concern, and Control (link suchen)</li>
<li>Service Catalogues
<ul class="org-ul">
<li>mapping all the things (ist das eine Prozesslandkarte?)</li>
<li>people us <a href="https://backstage.io/">Backstage Software Catalog and Developer Platform</a> for this</li>
<li>plus 2 more? see ? <a href="https://twitter.com/LisaKC_">Lisa Karlin Curtis (@LisaKC_) / X</a> presentation</li>
</ul></li>
<li><a href="https://basecamp.com/shapeup">Shape Up</a> Product development workflow by 37Signals/Basecamp</li>
</ul>
</div>
</div>
<div id="outline-container-org6454b86" class="outline-2">
<h2 id="org6454b86">Tools</h2>
<div class="outline-text-2" id="text-org6454b86">
<ul class="org-ul">
<li><a href="https://xkcd.com/1205/">xkcd: Is It Worth the Time?</a> I use this graphic every other month.</li>
<li><a href="https://www.thepetstable.com/">The Pets Table: Healthy Dog Food Developed With Vets</a> HelloFresh for dogs</li>
</ul>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><category term="linklist" /><summary type="html"><![CDATA[Personal link collection of things that I (re-)discovered during LeadDev Berlin 2024.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Me, right now</title><link href="https://christiandewein.com/now" rel="alternate" type="text/html" title="Me, right now" /><published>2024-06-29T00:00:00+02:00</published><updated>2026-05-09T19:07:19+02:00</updated><id>https://christiandewein.com/now</id><content type="html" xml:base="https://christiandewein.com/now"><![CDATA[<div id="outline-container-orgc78eb68" class="outline-1">
<h1 id="orgc78eb68">Me, right now</h1>
<div class="outline-text-1" id="text-orgc78eb68">
</div>
<div id="outline-container-org74a16f7" class="outline-2">
<h2 id="org74a16f7">New name!</h2>
<div class="outline-text-2" id="text-org74a16f7">
<p>
I got married and therefore changed my family name from <i>Christian Bäuerlein</i> to <i>Christian Dewein</i>!
</p>

<p>
I always liked my old name as well, but getting rid of the Umlaut is - even in 2024 - very convenient!
</p>
</div>
</div>
<div id="outline-container-orgf82258b" class="outline-2">
<h2 id="orgf82258b">Living in Frankfurt am Main</h2>
<div class="outline-text-2" id="text-orgf82258b">
<p>
I live in Frankfurt am Main and still enjoy living in this city!
</p>
</div>
</div>
<div id="outline-container-org81c38c1" class="outline-2">
<h2 id="org81c38c1">Working at ioki</h2>
<div class="outline-text-2" id="text-org81c38c1">
<p>
I am the CTO of the ioki GmbH in Frankfurt.
Since 2017 I am part of this company and I am very proud of it.
</p>
</div>
</div>
<div id="outline-container-orgbe1c63f" class="outline-2">
<h2 id="orgbe1c63f">Travelling</h2>
<div class="outline-text-2" id="text-orgbe1c63f">
<p>
Over the last years, I did quite some travelling. I like to explore nature and experience wildlife. Most notably, I travelled to Costa Rica, Namibia, the west coast of North America and South Africa.
</p>
</div>
</div>
<div id="outline-container-org919e70b" class="outline-2">
<h2 id="org919e70b">Meetups</h2>
<div class="outline-text-2" id="text-org919e70b">
<p>
I love being part of Frankfurt's meetup scene. I organize a couple meetups myself and visit even more. I also like to serve as a host for other meetups at my company.
</p>

<p>
Most notably I organize the <a href="./mechanicon">Mechanicon - Europe's biggest mechanical keyboard conference</a>.
</p>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><summary type="html"><![CDATA[What I am doing right now in case we didn't meet for a while and you want to catch up.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Ruby Unconf 2024 Hamburg Linklist</title><link href="https://christiandewein.com/ruby-unconf-2024-hamburg-linklist" rel="alternate" type="text/html" title="Ruby Unconf 2024 Hamburg Linklist" /><published>2024-06-07T00:00:00+02:00</published><updated>2025-11-04T18:59:55+01:00</updated><id>https://christiandewein.com/ruby-unconf-2024-hamburg-linklist</id><content type="html" xml:base="https://christiandewein.com/ruby-unconf-2024-hamburg-linklist"><![CDATA[<div id="outline-container-org26d2a90" class="outline-1">
<h1 id="org26d2a90">Ruby Unconf 2024 Hamburg Linklist</h1>
<div class="outline-text-1" id="text-org26d2a90">
<p>
Personal link collection of things that I (re-)discovered during the <a href="https://2024.rubyunconf.eu">Ruby Unconf 2024 in Hamburg</a>.
</p>
</div>
<div id="outline-container-org9a1deb2" class="outline-2">
<h2 id="org9a1deb2">Ruby and Mechanical Keyboards</h2>
<div class="outline-text-2" id="text-org9a1deb2">
<ul class="org-ul">
<li><a href="https://keebkaigi.org/2023/">KeebKaigi 2023</a> Japanese Keyboard Conference</li>
<li><a href="https://picoruby.github.io/">PicoRuby</a> The smallest Ruby implementation for one-chip microcontrollers</li>
<li><a href="https://github.com/picoruby/prk_firmware">picoruby/prk_firmware</a> A keyboard firmware platform in PicoRuby</li>
<li><a href="https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html">Raspberry Pi Pico</a> can be programmed with PicoRuby/PRK and can be mounted via USB to flash it</li>
</ul>
</div>
</div>
<div id="outline-container-orgf5d4d23" class="outline-2">
<h2 id="orgf5d4d23">Online Resources</h2>
<div class="outline-text-2" id="text-orgf5d4d23">
<ul class="org-ul">
<li><a href="https://worrydream.com/">Bret Victor</a> does interesting things</li>
<li><a href="https://github.com/ddd-crew">Domain-Driven Design Crew</a> Repo with all kinds of resources</li>
<li><a href="https://www.pagetable.com/c64ref/c64disasm/">Ultimate C64 Reference</a> C64 BASIC &amp; KERNAL ROM Disassembly</li>
</ul>
</div>
</div>
<div id="outline-container-orga5e7af1" class="outline-2">
<h2 id="orga5e7af1">Tools</h2>
<div class="outline-text-2" id="text-orga5e7af1">
<ul class="org-ul">
<li><a href="https://github.com/Mozilla-Ocho/llamafile">llamafile</a> Distribute and run LLMs with a single file</li>
<li><a href="https://rabbit-shocker.org/en/">Rabbit</a> the tool that Matz uses to do his presentations (turtle races bunny)</li>
<li><a href="https://vice-emu.sourceforge.io/">VICE</a> the Versatile Commodore Emulator</li>
<li><a href="https://vroid.com/en/studio">VRoid Studio</a> is a tool to create and use virtual avatars (Twitch streamers do this?)</li>
</ul>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><category term="linklist" /><summary type="html"><![CDATA[Personal link collection of things that I (re-)discovered during Ruby Unconf 2024.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">FOSSGIS 2024 Linklist</title><link href="https://christiandewein.com/fossgis-2024-linklist" rel="alternate" type="text/html" title="FOSSGIS 2024 Linklist" /><published>2024-03-21T00:00:00+01:00</published><updated>2025-11-04T18:59:55+01:00</updated><id>https://christiandewein.com/fossgis-2024-linklist</id><content type="html" xml:base="https://christiandewein.com/fossgis-2024-linklist"><![CDATA[<div id="outline-container-org8191a63" class="outline-1">
<h1 id="org8191a63">FOSSGIS 2024 Linklist</h1>
<div class="outline-text-1" id="text-org8191a63">
<p>
Personal link collection of things that I (re-)discovered during the <a href="https://fossgis-konferenz.de/2024/">FOSSGIS 2024 conference</a>.
</p>
</div>
<div id="outline-container-orgce12a46" class="outline-2">
<h2 id="orgce12a46">Videos</h2>
<div class="outline-text-2" id="text-orgce12a46">
<ul class="org-ul">
<li><a href="https://media.ccc.de/c/fossgis2024">FOSSGIS 2024 - media.ccc.de</a></li>
<li>Favorite Talk: <a href="https://media.ccc.de/v/fossgis2024-39020-rumliche-fragmentierung-im-v-angebot-sichtbar-machen-dank-offenen-fahrplandaten">Räumliche Fragmentierung im ÖV-Angebot sichtbar machen - dank offenen Fahrplandaten</a> von Theodor Rieche</li>
<li>Talk Geheimtipp: <a href="https://media.ccc.de/v/fossgis2024-39002-prozedurale-kunst-mit-qgis">Prozedurale Kunst mit QGIS</a> von Johannes Kröger</li>
</ul>
</div>
</div>
<div id="outline-container-orgf02ff90" class="outline-2">
<h2 id="orgf02ff90">Repos</h2>
<div class="outline-text-2" id="text-orgf02ff90">
<ul class="org-ul">
<li><a href="https://www.bbox.earth/">BBOX Server</a> - Composable spatial services written in Rust</li>
<li><a href="https://duckdb.org">DuckDB</a> - An in-process SQL OLAP database management system</li>
<li><a href="https://github.com/geonetwork">geonetwork Github org</a> - GeoNetwork is a catalog suited to publish information about geospatial data</li>
<li><a href="https://github.com/zalf-rdm/geonode">geonode</a> - GeoNode is an open source platform that facilitates the creation, sharing, and co</li>
<li><a href="https://github.com/geopolars/geopolars">geopolars/geopolars</a> - Geospatial extensions for Polars</li>
<li><a href="https://leafmap.org/">leafmap</a> - Geospatial analysis and interactive mapping in Jupyter</li>
<li><a href="https://terrestris.github.io/ol-describe-map/main/examples/nominatim.html">ol-describe-map</a> - Generate textual description of an OpenLayers map</li>
<li><a href="https://github.com/CrunchyData/pg_featureserv">pg_featureserv</a> - Lightweight RESTful Geospatial Feature Server for PostGIS in Go</li>
<li><a href="https://github.com/pretzelai/pretzelai?tab=readme-ov-file">pretzelai</a> - Open-source, browser-local data exploration using DuckDB-Wasm and PRQL</li>
<li><a href="https://github.com/public-transport">public-transport</a> Github organization</li>
</ul>
</div>
</div>
<div id="outline-container-org6a7cac1" class="outline-2">
<h2 id="org6a7cac1">Open Data Platforms</h2>
<div class="outline-text-2" id="text-org6a7cac1">
<ul class="org-ul">
<li><a href="https://ckan.org/">CKAN - The open source data management system</a></li>
<li><a href="https://dkan.readthedocs.io/en/latest/">DKAN Open Data Portal</a></li>
<li><a href="https://daten.greenpeace.de//">Greenpeace Datenportal</a></li>
<li><a href="https://zenodo.org/">Zenodo</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgb050402" class="outline-2">
<h2 id="orgb050402">Projects, Portals &amp; Products</h2>
<div class="outline-text-2" id="text-orgb050402">
<ul class="org-ul">
<li><a href="https://vhhbus.de/hop/ahoi/">ahoi Hamburg by vhh.mobility</a> - Autonomous driving in Hamburg</li>
<li><a href="https://www.comaps.de/produkt.html">comaps</a> - Digitales Werkzeug zur datengestützten Entscheidungsfindung für eine integrierte und nachhaltige Stadtentwicklung.</li>
<li><a href="https://gbd-websuite.de/">GBD WebSuite</a> - Webbasierte Open Source GIS Plattform zur Geodatenverarbeitung</li>
<li><a href="https://www.geoportal.de/">Geoportal.de</a> - Bundesamt für Kartographie und Geodäsie</li>
<li><a href="https://www.ioer.de/projekte/goat-3-0">GOAT 3.0</a> - Entwicklung eines digitalen Erreichbarkeitsinstruments für eine ausgeglichene Raum- und Verkehrsplanung</li>
<li><a href="https://grass.osgeo.org/">GRASS GIS</a> - Powerful raster, vector, and geospatial processing engines in a single integrated software suite</li>
<li><a href="https://kommonitor.de/">KomMonitor</a> - Kommunales Monitoring zur Raumentwicklung (<a href="https://essen.kommonitor.geoportal.ruhr/#!/">Demo</a>)</li>
<li><a href="https://www.lizmap.com/en/">Lizmap</a> - Create Web map applications with QGIS and Lizmap</li>
<li><a href="https://mapbender.org/">Mapbender</a> - Lösung zur Erstellung intuitiver und performanter WebGIS-Anwendungen</li>
<li><a href="https://www.masterportal.org/features-en.html">Masterportal</a> - Open Source Geo Portal</li>
<li><a href="https://scs.community/de/2023/12/23/clusterstacks/">Sovereign Cloud Stack</a> - Cluster Stacks</li>
<li><a href="https://stacspec.org/en">STAC: SpatioTemporal Asset Catalogs</a> - A common language to describe geospatial information</li>
</ul>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><category term="linklist" /><summary type="html"><![CDATA[Personal link collection of things that I (re-)discovered during FOSSGIS 2024.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">History of Mechanicon</title><link href="https://christiandewein.com/mechanicon" rel="alternate" type="text/html" title="History of Mechanicon" /><published>2024-03-19T00:00:00+01:00</published><updated>2025-11-04T18:59:55+01:00</updated><id>https://christiandewein.com/mechanicon</id><content type="html" xml:base="https://christiandewein.com/mechanicon"><![CDATA[<div id="outline-container-org0008b02" class="outline-1">
<h1 id="org0008b02">History of Mechanicon</h1>
<div class="outline-text-1" id="text-org0008b02">
<p>
<figure class="article-image">
  <a href="/assets/mechanicon/mechanicon_header.jpg" title="The history of Europe's biggest event for mechanical computer keyboards" target="_blank">
    <img src="/assets/mechanicon/mechanicon_header_w800.jpg" class="img-fluid" alt="The history of Europe's biggest event for mechanical computer keyboards">
  </a>
  <figcaption>The history of Europe's biggest event for mechanical computer keyboards</figcaption>
</figure>

</p>

<p>
This year - 2024 - the Mechanicon happened for the fifth time!
</p>

<p>
Mechanicon is Europe’s biggest meetup/conference for people interested in mechanical keyboards. It takes place once a year in Frankfurt am Main in Germany.
</p>

<p>
We started out with about 60 attendees in 2016, grew over the years and we were over 400 people this year!
</p>

<p>
It was never intended to grow this big. We never did any advertisement outside of community forums. And while we are very proud that so many people like the idea, it also creates a lot of challenges.
</p>
</div>
<div id="outline-container-org31dc276" class="outline-2">
<h2 id="org31dc276">Throwback to 2016</h2>
<div class="outline-text-2" id="text-org31dc276">
<p>
Let's take a trip back to 2016: The whole world was playing Pokemon Go, the most common password was ‘123456’ and '/r/mk' had around 120k subscribers - merely 10% of the size it has today.
</p>

<p>
Three programmers were nerding out on their new hobby: Mechanical keyboards.
</p>

<p>
You all know the rabbit hole we are talking about here: discovering the hobby, the manufactureres, the back and forths of the different parts and also the struggle: what should I get myself?
</p>

<p>
Back then the keyboards we liked had to be bought directly from shops in the U.S., Japan or South Korea. In other words: ordering a keyboard was going all in, including high shipping costs, import taxes and not really a return policy.
</p>

<p>
It was clear what we were missing: a chance to try before you buy.
</p>
</div>
</div>
<div id="outline-container-orgbffff18" class="outline-2">
<h2 id="orgbffff18">The first Mechanicon</h2>
<div class="outline-text-2" id="text-orgbffff18">
<p>
Outside of our office, in real life, we did not know a single person interested in the hobby. So we founded a user group: Mechanical Keyboard Meetup Rhein Main.
</p>

<p>
The first meetup was given the tongue-in-cheek name 'Mechanicon', suggesting it was a conference. In reality, we hoped to attract about a dozen people. In the end, it would be over 60.
</p>

<p>
Only on the day of the Meetup it would become clear to us, that there was something special about this community and this event.
</p>

<p>
People would come from Berlin, huge plastic bags with hundreds of keycaps in the trunk. They would come from France - by bus - with a douzen trackballs in their luggage. Manufacturers, bloggers, collectors, gamers, all came together to celebrate their hobby.
</p>

<p>
This atmosphere, the excitement of everyone, the respect for the community and the love for the craft is what makes the Mechanicon what it is until this day. And it is also what motivates us to organize this event again and again.
</p>

<hr />

<iframe width="100%" height="400" src="https://www.youtube-nocookie.com/embed/ZVF16j6_5t4?si=wkqGwjS9pI8ivms3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<p>
Thanks to Alceon for making the video!
</p>

<hr />
</div>
</div>
<div id="outline-container-orgd208a45" class="outline-2">
<h2 id="orgd208a45">Links</h2>
<div class="outline-text-2" id="text-orgd208a45">
<ul class="org-ul">
<li><a href="https://mechanicon.io/">Mechanicon Official Website</a> with links and pictures from past events</li>
<li><a href="https://mechanicon.io/discord">Mechanicon on Discord</a></li>
<li><a href="https://mastodon.social/@fabrik42">Me on Mastodon</a></li>
<li><a href="https://www.clickclackhack.de/054.html">CLICK! CLACK! HACK Podcast about Mechanicon 2023!</a> (German)</li>
<li><a href="https://www.clickclackhack.de/097.html">CLICK! CLACK! HACK Podcast about Mechanicon 2024!</a> (German)</li>
</ul>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><summary type="html"><![CDATA[The history of Europe's biggest event for mechanical computer keyboards]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/mechanicon/mechanicon_header.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/mechanicon/mechanicon_header.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The ultimate Ultimate Hacking Keyboard Review</title><link href="https://christiandewein.com/ultimate-hacking-keyboard-review" rel="alternate" type="text/html" title="The ultimate Ultimate Hacking Keyboard Review" /><published>2019-11-17T00:00:00+01:00</published><updated>2026-05-09T19:07:19+02:00</updated><id>https://christiandewein.com/ultimate-hacking-keyboard-review</id><content type="html" xml:base="https://christiandewein.com/ultimate-hacking-keyboard-review"><![CDATA[<div id="outline-container-org27126d5" class="outline-1">
<h1 id="org27126d5">The ultimate Ultimate Hacking Keyboard Review</h1>
<div class="outline-text-1" id="text-org27126d5">
<p>
<figure class="article-image">
  <a href="./assets/uhk-review/desk_0373.jpg" title="The UHK at my desk" target="_blank">
    <img src="./assets/uhk-review/desk_0373_w800.jpg" class="img-fluid" alt="The UHK at my desk">
  </a>
  <figcaption>The UHK at my desk</figcaption>
</figure>

</p>

<p>
I have been monitoring the <a href="https://ultimatehackingkeyboard.com">Ultimate Hacking Keyboard</a> since it started its crowd-funding campaign and always wanted to try one. I was very happy when László visited us at the <a href="https://www.meetup.com/de-DE/Mechanical-Keyboard-Meetup-Rhein-Main/events/253901061/">Mechanicon 2018</a>. He gave a super interesting talk and of course brought some UHKs. I tried them and they have been on my bucket list ever since.
</p>

<p>
A short while ago, I moved into a new apartment. I am very interested in ergonomics for people like me: power users that spend a lot of time working in front of a computer. So this was a good opportunity to level up my home office ergonomics game. A new chair, a standing desk and &hellip; a split keyboard.
</p>

<p>
The UHK is the first split keyboard that I will use for a longer period of time.
</p>
</div>
<div id="outline-container-org86130c4" class="outline-2">
<h2 id="org86130c4">Is this Review for you?</h2>
<div class="outline-text-2" id="text-org86130c4">
<p>
When deciding for a keyboard I am really looking for top notch build quality. My daily drivers have mostly been from <a href="https://deskthority.net/wiki/Leopold_FC660C">Leopold</a> or <a href="https://www.keyboardco.com/keyboard/usa-filco-ninja-majestouch-2-tenkeyless-nkr-tactile-action-keyboard.asp">Filco</a>.
</p>

<p>
I need my keyboard to make me as productive as possible in editing text, be it in the browser, my <a href="https://freron.com/">email application</a> or in my <a href="https://www.spacemacs.org">text editor</a>. My whole <a href="https://orgmode.org/">organization workflow</a> is completely keyboard based and I invested quite a lot of time to <a href="https://emacs.christianbaeuerlein.com">get it just the way I want it</a>.
</p>

<p>
So when a product like UHK advertises deep configurability this means quite something for me. It has to prove that it deserves to be considered in the hours of hours of fine-tuning my setup.
</p>
</div>
</div>
<div id="outline-container-org7c3c3e1" class="outline-2">
<h2 id="org7c3c3e1">Specs</h2>
<div class="outline-text-2" id="text-org7c3c3e1">
<p>
The UHK shop offers a lot of different options for key switches, layouts, keycap printings and cases colors, <a href="https://ultimatehackingkeyboard.com/product/uhk60">240 variations overall</a>.
</p>

<p>
This is my version of the Ultimate Hacking Keyboard:
</p>

<ul class="org-ul">
<li>Switches: <b>Kailh Brown</b></li>
<li>Layout: <b>US-ANSI</b></li>
<li>Keycaps: <b>Mac printings</b></li>
<li>Case color: <b>Black</b></li>
<li>Accessories: <b>Palm rests</b></li>
</ul>
</div>
</div>
<div id="outline-container-org993fbec" class="outline-2">
<h2 id="org993fbec">Unboxing</h2>
<div class="outline-text-2" id="text-org993fbec">
<p>
<figure class="article-image">
  <a href="./assets/uhk-review/thank_you_0177.jpg" title="Unboxing the UHK" target="_blank">
    <img src="./assets/uhk-review/thank_you_0177_w800.jpg" class="img-fluid" alt="Unboxing the UHK">
  </a>
  <figcaption>Unboxing the UHK</figcaption>
</figure>

</p>

<p>
The UHK has a nice packaging and even greets you with a thank you note from the manufacturer, Ultimate Gadget Laboratories.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/onboarding_ergonomics.jpg" title="Ergonomics are an important part of the onboarding" target="_blank">
    <img src="./assets/uhk-review/onboarding_ergonomics_w800.jpg" class="img-fluid" alt="Ergonomics are an important part of the onboarding">
  </a>
  <figcaption>Ergonomics are an important part of the onboarding</figcaption>
</figure>

</p>

<p>
The onboarding tutorial is very good. You get introduced to the keyboard and <b>how</b> you can use the keyboard in a ergonomic way, something I highly appreciate.
</p>

<p>
I think there is even room for more: Tenting or Tilting? For now I go with <b><b>negative tilting</b></b>, but since you can not have both with the UHK, I would be happy to get even more information to make a decision on this.
</p>

<p>
The pre-built keyboard case feels nice and solid, all the single parts have a high build quality and get you excited for the next steps.
</p>
</div>
</div>
<div id="outline-container-org6a9e878" class="outline-2">
<h2 id="org6a9e878">Assembly</h2>
<div class="outline-text-2" id="text-org6a9e878">
<p>
The next step is to assemble the keyboard. The case, plate, switches and keycaps are already in place. But I still have to connect the keyboard to the bases to get my tilting right.
</p>

<p>
Again, the manual for this is very good and precise.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/back_0180.jpg" title="The back side of the keyboard" target="_blank">
    <img src="./assets/uhk-review/back_0180_w800.jpg" class="img-fluid" alt="The back side of the keyboard">
  </a>
  <figcaption>The back side of the keyboard</figcaption>
</figure>

</p>

<p>
The alignment of the components before fixation is pretty straigtforward. There is always some knob or cavity that helps to set them properly.
</p>

<p>
The fixation itself is a bit trickier than anticipated. The UHK tutorial even <a href="https://www.youtube.com/watch?v=J3aGynmGvfo">provides a video</a> how to drive screws into plastic. But to be honest, I didn't get it - it says the screw should click(?), never clicked for me though (pun intended).
</p>

<p>
The screws are very tiny and I am very proud of myself that I didn't let one slip off my desk. I still appreciate that they threw in three extra screws to prevent possible frustration in case of losing one.
</p>

<p>
Alright, back to the bases. After some back and forth I managed to screw in the sockets for the feet with no visible gap.
</p>

<p>
The plastic of the sockets is a bit sensitive and of course I scratch one with the screw driver. If I would want to switch from tilting to tenting the keyboard, I would need to re-assemble the feet/sockets and I wonder how often you can do this without damaging them.
</p>

<p>
On the other hand, they offer <a href="https://ultimatehackingkeyboard.com/product/feet">replacement feet</a> at a very fair price, so there is really no risk that you ruin your keyboard by damaging a small part.
</p>

<p>
Snapping the feet to the sockets is super smooth.
</p>

<p>
In the end, the whole keyboard looks sturdy and solid and I am very happy and can't wait to try it out.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/negative_tilt_0193.jpg" title="Palm rests with negative tilt" target="_blank">
    <img src="./assets/uhk-review/negative_tilt_0193_w800.jpg" class="img-fluid" alt="Palm rests with negative tilt">
  </a>
  <figcaption>Palm rests with negative tilt</figcaption>
</figure>

</p>
</div>
</div>
<div id="outline-container-orgeb94e72" class="outline-2">
<h2 id="orgeb94e72">Side Note: Embrace the setup!</h2>
<div class="outline-text-2" id="text-orgeb94e72">
<p>
It has been 45 minutes since I opened the package and the keyboard is not even plugged in.
</p>

<p>
Compared to building your own keyboard the excitement of opening a pre-built keyboard can wear off very fast. I love my daily driver keyboard but the setup process took about 10 minutes and then it was just there.
</p>

<p>
Due to the extensive onboarding the UHK creates this kind of journey that you usually only get from DIY keyboards.
</p>

<p>
I personally crave this customization effort. It makes a tool more worthwhile for me when I have the feeling to have a deep dive up front. So this is a lot of fun for me.
</p>

<p>
After some more information in the tutorial on the default keymaps, I am finally ready to go!
</p>
</div>
</div>
<div id="outline-container-orgec2429d" class="outline-2">
<h2 id="orgec2429d">The very first typing experience</h2>
<div class="outline-text-2" id="text-orgec2429d">
<p>
First things first, the Ultimate Hacking Keyboard is very comfortable to type on!
</p>

<p>
I never <b>really</b> used a split keyboard and this one comes very naturally to me. Neither having two parts, nor the tilting of the board affects me.
</p>

<p>
I takes just a few minutes to get me into my typing flow and I feel comfortable. An important part in this is probably the key layout that is very close to a "normal" keyboard, especially when compared to other split keyboards.
</p>

<p>
The keyboard has a good weight so you can be sure it can keep a stable position on your desk. Nothing clatters or slips, even with the tenting. It is a very solid keyboard and I like it a lot.
</p>

<p>
However, it comes apparent that the default keymap will not work for me. So let's look into this.
</p>
</div>
</div>
<div id="outline-container-org078720c" class="outline-2">
<h2 id="org078720c">Layout / Keymap</h2>
<div class="outline-text-2" id="text-org078720c">
<p>
<figure class="article-image">
  <a href="./assets/uhk-review/up_0192.jpg" title="Default key layout is printed on caps" target="_blank">
    <img src="./assets/uhk-review/up_0192_w800.jpg" class="img-fluid" alt="Default key layout is printed on caps">
  </a>
  <figcaption>Default key layout is printed on caps</figcaption>
</figure>

</p>

<p>
The space bar is split and in the default keymap, there is actually only a <code>Space</code> key on the right, what would be the left part of the <code>Space</code> bar is the <code>Mod</code> key. As a touch typist I use both thumbs to press space, so this is not acceptable for me.
</p>

<p>
Naturally I am taking these notes in org-mode using VIM-style keybindings. The fact that <code>Esc</code> can only be triggered by <code>Mod+~</code> causes the most pain at this point.
</p>

<p>
Outside of my evil Emacs world I use some of the <a href="https://support.apple.com/en-us/HT201236">default Mac shortcuts</a> to navigate along text. In my muscle memory, I use the ones that involve arrow keys, like <code>Shift–Command–Right</code> (select the text between the insertion point and the end of the current line) or <code>Option–Shift–Left</code> (extend text selection to the beginning of the current word, then to the beginning of the following word if pressed again).
</p>

<p>
But on the UHK there are no dedicated arrow keys. You have to press the <code>Mod</code> key to activate the layer that gives you arrow keys. So these slightly uncomfortable three-key-shortcuts become almost impossible four-keys-shortcuts.
</p>

<p>
As you may have seen on the linked Apple support page, most of this can also be done without the use of arrow keys (in Emacs style, actually). I just have to revert decades of muscle memory, so this will cause some pain over the next days and weeks.
</p>

<p>
If you look closer at the keyboard, you will also notice that UHK sneaked an additional key between the <code>Cmd</code> keys and the <code>Space</code> bar keys: the <code>Fn</code> key. First I was hesistant to this. But then I realized they took the room for the <code>Fn</code> keys from the <code>Space</code> key which means the position of the <code>Cmd</code> key stays the same compared to other keyboards. After some back and forth I decided to not change the position of the <code>Cmd</code> key. For my muscle memory the physical position of the key seems more important than the strict order of the keys, so in practice it does not bother me that much.
</p>

<p>
Another important anomaly is that UHK placed the key for the <code>Mouse</code> layer where you can usually find the <code>Caps Lock</code> key. Like a lot of VIM/evil-mode users I mapped <code>Caps Lock</code> to  <code>Esc</code> (when pressed alone) and <code>Ctrl</code> (when pressed with other keys), an essential keybinding that I am not willing to lose. So I will need to find another place for the mouse layer key.
</p>
</div>
</div>
<div id="outline-container-org8fce184" class="outline-2">
<h2 id="org8fce184">The big remapping begins with the UHK Agent</h2>
<div class="outline-text-2" id="text-org8fce184">
<p>
<figure class="article-image">
  <a href="./assets/uhk-review/uhk_agent.png" title="UHK Agent" target="_blank">
    <img src="./assets/uhk-review/uhk_agent_w800.png" class="img-fluid" alt="UHK Agent">
  </a>
  <figcaption>UHK Agent</figcaption>
</figure>

</p>

<p>
The UHK Agent is easy to use and pretty straightforward. You don't need to set the keyboard in to a special <b>flash</b> mode. The keyboard must be plugged in, you start the Agent, everything is ready.
</p>

<p>
My first change is to remap <code>Caps Lock</code> from <code>Mouse</code> to <code>Esc/Ctrl</code>. The user interface is very self-explanatory and it just takes a second to save the changes to the keyboard.
</p>

<p>
I also mess around with the <code>Mod</code> mode to change the arrow keys in the mode to VIM-style arrow keys (<code>hjkl</code>).
</p>

<p>
The UHK supports multiple keymaps and you can use shortcuts to switch between QWERY, Dvorak and Colemak. For me as a Mac-only user it is not of special interest. But maybe it is for others, because it is the one software feature that gets the most prominent representation in electronics.
</p>

<p>
The UHK comes with three small fourteen segment displays built into the case. As far as I could find out they are only capable of showing the current keymap. Otherwise they are rather useless for now.
</p>

<p>
<a href="https://github.com/UltimateHackingKeyboard/agent/issues/660">There are amibitons to make them more interesting</a>, which is good, because I don't need to see that I use Mac QWERTY all the time. I hope for this to arrive sooner than later. Until then it is just a bit weird that you have such a prominent component to show only such a specific detail.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/lol_0364.jpg" title="Display shows your current keymap, not more, not less" target="_blank">
    <img src="./assets/uhk-review/lol_0364_w800.jpg" class="img-fluid" alt="Display shows your current keymap, not more, not less">
  </a>
  <figcaption>Display shows your current keymap, not more, not less</figcaption>
</figure>

</p>

<p>
Lifehack: The three letter abbreviation that you can see can be changed in the UHK agent. Another alternative is to just set the brightness of the display to zero to avoid any distraction alltogether.
</p>

<p>
At the first look, I didn't like the small extra buttons on the bottom of the case. But since I am in severe need for extra keys I start to appreciate them. They feel like a mouse key, yet work pretty good as modifier keys.
</p>

<p>
The Agent has an auto update which will alert you, when a new version is available. In the future new versions of the UHK Agent will also ship with new firmware versions for the keyboard.
</p>

<p>
To sum it up: UHK Agent is pretty awesome overall. It did exactly what I wanted it to do.
</p>

<p>
You can see my modified keymap in the screenshot. Some of the changes invoke immediate pleasure, others probably need some time and learning to work for me.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/modified_keymap.png" title="My customized keymap" target="_blank">
    <img src="./assets/uhk-review/modified_keymap_w800.png" class="img-fluid" alt="My customized keymap">
  </a>
  <figcaption>My customized keymap</figcaption>
</figure>

</p>

<p>
However, note-taking in evil mode is now a pleasure and I am happy to test the keyboard for an extended period of time, to really find out if it works for me.
</p>
</div>
</div>
<div id="outline-container-orgcc3a324" class="outline-2">
<h2 id="orgcc3a324">Two weeks in&hellip;</h2>
<div class="outline-text-2" id="text-orgcc3a324">
<p>
For two weeks I use the keyboard about 50% of the time and a laptop keyboard for the other 50%. This causes no noticable confusion. Somehow my muscle memory is able to distinguish between the two contexts.
</p>

<p>
So I remapped the <code>Fn</code> keys between <code>Cmd</code> and <code>Space</code> to <code>Mod</code> and changed the arrow key positions in the mod mode to VIM style. This means, pressing <code>Mod</code> with <code>j</code> and <code>k</code> for <code>up</code> and <code>down</code> now works in every app. <b><b>I never want to miss this again</b></b>!
</p>

<p>
One feature I keep stumbling above: The UHK has the feature to lock modes (like Mouse, Fn, Mod) by double tapping a key that serves as a mode key. This is kind of a two edged sword for me. If you do it intentionally, e.g. with the mouse mode, it is great. When you activate it by accident it still takes me 10-15 seconds to realize what I have done and why the keyboard behaves so strangely.
</p>

<p>
I would say I have adapted the arrow-less lifestyle about 80%. Just some slight confusion here and then in org-mode specific mini buffers.
</p>

<p>
The split-factor of the keyboard is pretty nice. I still feel like I don't have to re-learn general touch typing to operate this keyboard. I experimented a bit with the distance of the two keyboard sides and found a setting that is comfortable for me.
</p>

<p>
I use the keyboard while sitting down and standing at my desk. The keyboard is steady and stays put during usage.
</p>
</div>
</div>
<div id="outline-container-org99e45f6" class="outline-2">
<h2 id="org99e45f6">Switches</h2>
<div class="outline-text-2" id="text-org99e45f6">
<p>
Due to the Mechanicon, I think I was able to try out a lot of switches over the years. I know what I like but in everyday use I am not able to determine the sublte differences between similar switches.
</p>

<p>
For the last five years, I used Cherry MX Browns, Cherry MX Blues, Gatereon Greens and Topre 45g switches as my daily drivers.
</p>

<p>
I chose Kailh Brown for this board, because I wanted something similar to MX Brown. In practice I actually can't determine a difference.
</p>

<p>
Something I learned over the years is that it is not only about the keycaps themselves, but also how they are fixed on the keyboard. Again, the build quality is very good: No clang or vibrations, just a very sturdy construction.
</p>
</div>
</div>
<div id="outline-container-org4f8a8cf" class="outline-2">
<h2 id="org4f8a8cf">Keycaps</h2>
<div class="outline-text-2" id="text-org4f8a8cf">
<p>
What can you say about the keycaps? They work fine but they don't spark joy in me. A lot of keyboards come with subpar keycaps and unfortunately the UHK is no exception.
</p>

<p>
Leopold keycaps are my personal standard for off-the-shelf keyboards. And you can see the difference in material and thickness in the photo.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/keycaps_0394.jpg" title="UHK left, Leopold right" target="_blank">
    <img src="./assets/uhk-review/keycaps_0394_w800.jpg" class="img-fluid" alt="UHK left, Leopold right">
  </a>
  <figcaption>UHK left, Leopold right</figcaption>
</figure>

</p>

<p>
UHK provides you with an <a href="https://ultimatehackingkeyboard.com/layout-and-keycaps">extensive guide on the keycaps and layout</a> which is very cool for people that want to use their own keycaps instead. However, since it is a split layout there will be some struggle involved when looking for alternative keycaps (e.g. due to the split space bar).
</p>

<p>
I get that better keycaps would make the UHK even more pricier and maybe a lot of people are ok with the default keycaps. Due to the exotic layout, I still would wish UHK would provide an upgrade option to get better keycaps.
</p>

<p>
<b>Update: I got told that UHK actually plans to provide PBT keycaps eventually. I really anticipate it and hope for an upgrade kit!</b>
</p>
</div>
</div>
<div id="outline-container-org46a0da1" class="outline-2">
<h2 id="org46a0da1">Open Source / Repairability</h2>
<div class="outline-text-2" id="text-org46a0da1">
<p>
For me, this deserves a special shout out!
The firmware as well as the electronics design and pretty much anything else is <a href="https://github.com/UltimateHackingKeyboard/agent/issues/660">freely available</a>.
</p>

<p>
Additionally, you can clearly see that the keyboard was built by people that care a lot about real and deep customization.
</p>

<p>
Not only in the software but also in hardware. From the replacable bridge cable to the online shop for the keyboard feet: it shows me that you don't have to be afraid of playing around with your setup.
</p>
</div>
</div>
<div id="outline-container-org80c3908" class="outline-2">
<h2 id="org80c3908">Summary</h2>
<div class="outline-text-2" id="text-org80c3908">
<p>
The UHK is a nice, high quality keyboard that also comes at a high price point.
</p>

<p>
The defaults settings are sane and well-intended, but let's be honest: This keyboard is for people that want to heavily invest into the perfect custom typing experience. I count myself into this target group.
</p>

<p>
Usually I am happy when the manufacturer just stays out of my way when I start to fumble with their stuff. UHK goes beyond that and supports me in many ways in the customization process: Great onboarding, tooling, repairability and documentation make it easy for me to get my way with this keyboard.
</p>

<p>
If you are willing to invest a lot of time and effort into customizing your setup the price of the hardware is usually a secondary factor, compared to the time that you will pour into it.
</p>

<p>
So if you are into ergonomics, if you want to discover the world of split keyboards and you want to customize the sh\*t out of your keyboards, then this is the keyboard for you.
</p>

<p>
<figure class="article-image">
  <a href="./assets/uhk-review/desk_0373.jpg" title="Spacemacs + UHK = &lt;3" target="_blank">
    <img src="./assets/uhk-review/desk_0373_w800.jpg" class="img-fluid" alt="Spacemacs + UHK = &lt;3">
  </a>
  <figcaption>Spacemacs + UHK = &lt;3</figcaption>
</figure>

</p>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><summary type="html"><![CDATA[A thorough review of the Ultimate Hacking keyboard and its customization options.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/uhk-review/desk_0373.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/uhk-review/desk_0373.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Actionable Core Values for your Engineering Team</title><link href="https://christiandewein.com/actionable-core-values-for-your-engineering-team" rel="alternate" type="text/html" title="Actionable Core Values for your Engineering Team" /><published>2017-09-21T00:00:00+02:00</published><updated>2025-11-04T18:59:55+01:00</updated><id>https://christiandewein.com/actionable-core-values</id><content type="html" xml:base="https://christiandewein.com/actionable-core-values-for-your-engineering-team"><![CDATA[<div id="outline-container-orgcb17287" class="outline-1">
<h1 id="orgcb17287">Actionable Core Values for your Engineering Team</h1>
<div class="outline-text-1" id="text-orgcb17287">
<p>
If you work in a team of developers, you should talk about your shared values as a team. In this article, I will explain why this makes sense, why you should take action on these values and how we did it in our team.
</p>

<p>
This was an experiment for me. When I started it, I worked with some of my teammates professionally and full time together for over 7 years, with others for about 7 days. I knew we shared a lot of values back then, but we never actually worked them out. I wanted to change this.
</p>
</div>
<div id="outline-container-org4d2922c" class="outline-2">
<h2 id="org4d2922c">Why should you define core values for your team?</h2>
<div class="outline-text-2" id="text-org4d2922c">
<p>
When you work together with other people in a team, and they care about what the team is doing and the team is somehow successful, you probably already share some unsaid values among the members of this team.
</p>

<p>
I am lucky to work in such a very well performing and friendly team.
</p>

<p>
Sometimes this is not the case and working with the team is frustrating. But even if the collaboration is inert or exhausting, there may be a good chance that you also share some values. They are just misinterpreted or not recognized.
</p>

<p>
The point is: You will talk about values one way or the other. Everyone has personal values. They will come up at some point, in a discussion, an argument.
</p>

<p>
The more stressful the situation is, the less likely it is that you will really understand each other. Perspectives and approaches differ and it takes some time to realize which values you share. It is much easier to really get each other when you put some time aside to specify upfront what’s important to you. It will also be easier to remember the values and live by them, once they are clarified and written out.
</p>

<p>
For me, this is like the technical part of developing software. You can take your time now to think about how things should be and write some specs for it. Or you can wait until production is on fire. You will think about it one way or the other, but I am sure the former approach is much more efficient and pleasant.
</p>
</div>
</div>
<div id="outline-container-org9ee9d1a" class="outline-2">
<h2 id="org9ee9d1a">Why should you tie actions to the core values?</h2>
<div class="outline-text-2" id="text-org9ee9d1a">
<p>
Sometimes these kind of “core-value-finding team offsites” are primarily a way to get to know the colleagues a little bit better and create some common ground. This is fine too, but I wanted to go further.
</p>

<p>
I didn’t want us to define core values as an end in itself, but as a base for further actions to take our team to the next level. If you don’t live by a value, it’s not really a value to you. In order to live by these values, they must be actionable.
</p>

<p>
So an additional task, beyond the definition of values, would be to put some thought into actions that bring these values to live. Which daily routines, tools, processes, behaviours or events can support a value?
</p>

<p>
By reflecting about the values and how to make them actionable, we would have a much more intensive and detailed discussion about every proposed value.
</p>
</div>
</div>
<div id="outline-container-org7003eda" class="outline-2">
<h2 id="org7003eda">Our Approach</h2>
<div class="outline-text-2" id="text-org7003eda">
<p>
I looked for the best way to do this and found my answer in the book <a href="http://www.triballeadership.net/book">Tribal Leadership</a>. It defines two terms:
</p>

<p>
<b>Core Values</b> – What does the team stand for. The shared values of the team. A value can be defined by terms like <a href="https://www.threadsculture.com/core-values-examples">“Quality”, “Courage”, or “Trust”</a>.
</p>

<p>
<b>Noble Cause</b> – What does the team live for. It is meant as a credo, a short description of what the team aspires to be. The book gives some very good examples. In other words, I would define it as the <a href="https://alessiobresciani.com/foresight-strategy/51-mission-statement-examples-from-the-worlds-best-companies/">mission statement</a> of your team.
</p>

<p>
It is important to understand the difference between both.
</p>

<p>
The <i><b>Core Values</b></i> are the foundation, the basecamp of which the team starts off right now. The <i><b>Noble Cause</b></i> gives the team the right direction, reminds them of what they want to become.
</p>

<p>
Therefore it is important to look out for actionable items. They should build upon the values and support the team to move in the right direction, towards the noble cause.
</p>

<p>
Based on these ideas we did a one day offsite with the whole team. In the next section, I will describe what we did and how it went.
</p>
</div>
</div>
<div id="outline-container-org3549e26" class="outline-2">
<h2 id="org3549e26">The Offsite Event</h2>
<div class="outline-text-2" id="text-org3549e26">
<p>
This was the first time I organized this kind of event for my colleagues and I was very nervous. They were all very supportive of the idea, but I know that this kind of events can get a kind of cheesy vibe, which will result in eye-rolling and snarky comments and would basically undermine the whole idea. So one of my top priorities was to get my teammates into the mood to give it a serious and honest try.
</p>

<p>
We took a whole day for this. We were eight people and met in a creative space outside of work, to not be distracted. I brought coffee and some soft drinks. We started slow.
</p>

<p>
I wanted everyone to feel comfortable, because I think it was crucial to the success of this event that people were relaxed and open to the work we wanted to do.
</p>
</div>
<div id="outline-container-org01743f5" class="outline-3">
<h3 id="org01743f5">Story Time</h3>
<div class="outline-text-3" id="text-org01743f5">
<p>
As a warm up, we sat down at a table for a face-to-face discussion. We would soon start to work a lot with Post-Its and flip charts, but I felt a more intimate, personal opener would set a better course for the rest of the day.
</p>

<p>
I started to share one of my “developer war stories”, at the risk of boring the rest of the group. But the point of the story was that I could end with <i>“and this is when I realized X is a very important value for me in my working environment”</i>. The others could relate and I asked them to share some stories of themselves. In the end, everyone had shared a short story and a value the team could relate with.
</p>
</div>
</div>
<div id="outline-container-orgf63a404" class="outline-3">
<h3 id="orgf63a404">Collecting Ideas for Core Values</h3>
<div class="outline-text-3" id="text-orgf63a404">
<p>
We split up in two groups and spent some time collecting and discussing personal work-related values, writing them down on Post-its. This is important, because to discuss shared values, every member needs to have some basic understanding of their own personal values and the values of others.
</p>

<p>
We came together, presented the results of the two sub-groups and I think everyone was surprised how much in common everyone had.
</p>

<p>
Normally, one would assume that we would proceed to discuss the presented values, cluster the results, discard the less-important and so on. But we didn’t do that. Not yet.
</p>
</div>
</div>
<div id="outline-container-orgc93df94" class="outline-3">
<h3 id="orgc93df94">Collecting Ideas for the Noble Cause</h3>
<div class="outline-text-3" id="text-orgc93df94">
<p>
Instead, I introduced the concept of <b><i>Noble Cause</i></b> and the difference between <b><i>Core Values</i></b> and the <b><i>Noble Cause</i></b>. We split up again and worked on ideas and suggestions for a noble cause.
</p>

<p>
I think it was important to do it this way, because people should realize the difference <i><b>and</b></i> the connection between these two terms. It was necessary to start working on the noble cause before finishing the values. Otherwise, topics of one concept always seem to creep into the other one.
</p>

<p>
Only after this round of brainstorming and discussion, we came together to talk about the results of values and cause. I created a new git repo and we started clustering, sorting out, formulating the values and the cause in a markdown file on a projector.
</p>
</div>
</div>
<div id="outline-container-org471159f" class="outline-3">
<h3 id="org471159f">Defining Core Values and Noble Cause as a whole Group</h3>
<div class="outline-text-3" id="text-org471159f">
<p>
This was the most laborious, but also the most important part of the offsite. We tried to settle on a handful of terms that represent our values and to write some short explanation for every term. It forced us to discuss the actual meaning of the terms more in depth, clarifying what every term meant for the single team members. Interestingly, it was much easier to agree on the topics to leave out, than on the meaning of the topics everybody wanted to include.
</p>

<p>
In the end, we agreed on five core values, each one explained by one to four short bullet points. And two very short sentences as our noble cause.
</p>

<p>
The whole team was exhausted, but also happy with the result. Everyone could find themselves in the values and cause, but would agree that it was hard work to express these. Not because we argued all the time, but because it is hard to formulate the values and cause. You realize, even when you talked about these values implicitly for years, you never tried to boil it down, as a group effort, to make it clear to everyone. It is much harder than you would think, even after years of happily working together.
</p>
</div>
</div>
<div id="outline-container-org89f2e84" class="outline-3">
<h3 id="org89f2e84">Finding Actionable Items for the Core Values</h3>
<div class="outline-text-3" id="text-org89f2e84">
<p>
After a break, we spent the rest of the afternoon by splitting up in two groups again. We were collecting ideas for actionable items to support our way as a team, based on the core values, towards the noble cause.
</p>

<p>
The idea was to find things in our workflow that would support our core values: Things that always existed, things that we should do more, or new things that would move us into the right direction.
</p>

<p>
We presented and discussed the ideas and, most importantly, we appointed people to be responsible for actionable items they cared for.
</p>

<p>
This is when this offsite ended. We were able talk about a lot of things for the present and the future of this team, but it was also clear that we needed to take care of the results to prevent them from vanishing.
</p>
</div>
</div>
</div>
<div id="outline-container-org8b09e63" class="outline-2">
<h2 id="org8b09e63">One Month Later — The Aftermath</h2>
<div class="outline-text-2" id="text-org8b09e63">
<p>
I waited one month to write up this article, because I wanted to see if the results of this offsite would last. The offsite was not meant to change the life of every team member, but I really hoped it would have a positive, sustainable impact on the way we work.
</p>

<p>
Here are some of the actionable items that we already took action on:
</p>

<ul class="org-ul">
<li>We created a Slack channel to discuss and remind ourselves of our core values and noble cause.</li>
<li>We printed the core values and noble cause on two large posters to hang it in our office.</li>
<li>We shared and explained the core values and noble cause to candidates and new team members during our hiring process and onboarding process.</li>
<li>We discussed concrete rules for better commit messages.</li>
<li>We settled some heated discussions by stopping for a second and reminding ourselves about our values.</li>
<li>We revived a company internal book club and read a book together.</li>
</ul>

<p>
A lot of different ideas were created in this initial workshop. Sometimes the scope is very broad (book club), sometimes the scope is very specific (better commit messages). But they all pay into the same values, our values. I think it is great that we have such a wide variety of small enhancements coming from this.
</p>
</div>
</div>
<div id="outline-container-orgc05fe1e" class="outline-2">
<h2 id="orgc05fe1e">So… What are our Core Values and Noble Cause?</h2>
<div class="outline-text-2" id="text-orgc05fe1e">
<p>
I am very proud of our core values and noble cause, so a part of me really wants to share them. But I won’t. This is something we did for us, that is important to us, and tailored for us.
</p>

<p>
Maybe someday we will decide to publish them. For now, we will keep them hidden in our little dev tribe. We just want to see where this goes.
</p>

<hr />

<p>
This article was first published September 21st, 2017.
</p>

<p>
Thank you for reading my article! If you spotted a mistake or you want to provide some feedback, <a href="https://christiandewein.com">please get in touch with me</a>.
</p>
</div>
</div>
</div>]]></content><author><name>Christian Dewein</name></author><summary type="html"><![CDATA[If you work in a team of developers, you should talk about your shared values as a team.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://christiandewein.com/assets/social-link-image.jpg" /><media:content medium="image" url="https://christiandewein.com/assets/social-link-image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>