Sign in

Dominik Hofer

@dominikhofer.me
410 followers 275 following 473 posts

Crafting billow.so @ trueform.agency at day. Building @morgen.blue and tinkering with my personal website at night. 🔗 dominikhofer.me 📌 Switzerland

PostsRepliesMedia
Reposted by Dominik Hofer
Rahel Freiburghaus @rfrbrghs.bsky.social · 25/09/2026
What is direct democracy, essentially? For us in Switzerland, it means very frequent voting: ≈9 federal ballot measures per year, plus a large volume of cantonal and local votes. But it also means a practical challenge: who can open the voting envelope without tearing it apart? Always a tricky one
2394
Dominik Hofer @dominikhofer.me · 18/09/2026
Back to @dominikhofer.me 🪄 dominik.social was a cool handle but it felt a bit weird in other ATProto contexts like on Tangled plus it was disconnected from my personal website.
020
Reposted by Dominik Hofer
hailey @hailey.at · 18/09/2026
this is basically why you haven’t seen anything new come out. the companies and people who are already capable of shipping are still doing so at faster rates, while most projects get abandoned
812410
Dominik Hofer @dominikhofer.me · 17/09/2026
I increasingly think that little games like this and @pudding.cool style visual essays are the best ways of informing the public about issues in a way that doesn't feel abstract anymore. The board game “Daybreak” also does this very well regarding climate change.
000
Reposted by Dominik Hofer
DC Pierson @dcpierson.bsky.social · 14/09/2026
Me: OK, BRAIN, WE ONLY HAVE AN HOUR TO WORK ON THIS PERSONAL PROJECT.

My brain: Y'KNOW WHO I BET HAS AN INTERESTING WIKIPEDIA PAGE?
BUN E. CARLOS FROM
CHEAP TRICK.
363363524
Reposted by Dominik Hofer
danielroe @danielroe.dev · 14/09/2026
🙋‍♂️ ever wanted to build something without needing to configure a db, auth, file storage or a cms? it turns out you already have all four if you have a bluesky account 👉 airspace is a typed client for it
getair.space
airspace
The database you already have.
1950789
Dominik Hofer @dominikhofer.me · 14/09/2026
Switching to a Pixel I moved from iOS to Android.
dominikhofer.me
Switching to a Pixel
I moved from iOS to Android.
120
Dominik Hofer @dominikhofer.me · 19/08/2026
10:1 A good old rule of thumb.
dominikhofer.me
10:1
A good old rule of thumb.
010
Dominik Hofer @dominikhofer.me · 16/08/2026
My simpler home on the internet Iteration number three of my personal website.
dominikhofer.me
My simpler home on the internet
Iteration number three of my personal website.
051
Reposted by Dominik Hofer
Mikkel Malmberg @mikker.dev · 11/08/2026
You’re not overthinking, you’re underdoing
091
Reposted by Dominik Hofer
spencer chang @spencer.place · 06/08/2026
riding the internet subway to recent links people have visited..
5625
Reposted by Dominik Hofer
dame @dame.is · 30/07/2026
hard pill to swallow for atproto developers/creators: 99% of potential users either do not care about, value, understand, or want to “own their own data” i see so many apps/projects lead with this “value prop”, but it’s not an important or meaningful consideration for most people
1929425
Dominik Hofer @dominikhofer.me · 23/07/2026
Worked a bit more on the art direction/branding for @morgen.blue. I really like this “dreamy” look I ended up with and even built myself a little tool where I can generate more similar background visuals like these. #buildinpublic
Your personal daily web newspaper.Read what you curate. Not what an algorithm serves.No infinite feeds. No unread counts.Intentional & calm consumption.
170
Dominik Hofer @dominikhofer.me · 20/07/2026
As always, it’s the simplest productivity techniques that work the best. dominikhofer.me/ticking-boxes
041
Dominik Hofer @dominikhofer.me · 17/07/2026
I really like how @morgen.blue’s ”discover” page is coming together. Especially the expand interaction 🪄 #buildinpublic
1100
Dominik Hofer @dominikhofer.me · 09/07/2026
A stack of emails and text messages and one question: Who committed the murder and why? dominikhofer.me/the-appeal
000
Dominik Hofer @dominikhofer.me · 04/07/2026
And what makes them look iconic. dominikhofer.me/how-metro-maps-evol…
000
Reposted by Dominik Hofer
Andy Allen @andy.works · 29/06/2026
How much you play is my favorite measure of success in this industry. You stop looking up to tech execs (who look miserable) or hyper-growth founders (stressed) and start looking up to independent creative minds who shape a space that allows them to play.
1234
Reposted by Dominik Hofer
Sam Littlefair @littlefair.ca · 24/06/2026
After thinking about this question all weekend, I think my favorite candidate is the alchemical symbol for air: 🜁 It’s connotes both atmosphere and “transfer”. It’s a standard Unicode character. It references a capital “A.” And it’s very simple, which feels appropriate for a protocol, like 🌐 or 🛜.
The alchemical symbol for air, a triangle pointing up crossed by a horizontal line.
1925029
Reposted by Dominik Hofer
hailey @hailey.at · 20/06/2026
correct. no code - whether written by a human or an agent - should be getting reviewed by a human without being first reviewed by another agent. imo that includes reviewing yourself! respect your own time and dont review the agents work until it’s asked for review from another model.
724523
Dominik Hofer @dominikhofer.me · 19/06/2026
This 👇 And it doesn't even take that much to make a product look more polished (80/20 rule, as always). Being *intentional* about a few fundamental design choices goes a loooooong way.
020
Reposted by Dominik Hofer
dan @danabra.mov · 19/06/2026
"but where are all the bluesky instances?" i've heard this so many times that i wrote an explainer
overreacted.io
There Are No Instances in atproto — overreacted
Like RSS and Google Reader.
42677202
Dominik Hofer @dominikhofer.me · 15/06/2026
Which world cup countries would qualify for the knock-out stages based on their per-capita CO2 emissions. via @republik.ch
Satirical infographic titled "Challenge-Accepted-WM 2026 — Wenn die Klimabilanz entscheiden würde…" ("If the climate footprint decided…"), showing a fictional 2026 World Cup group stage where teams are ranked by per-capita CO₂ emissions (tonnes per year) instead of match results — lower emissions rank higher and earn more points. Twelve groups (A–L) each list four nations with their emissions value and points. Group winners include Mexico (4.35), Bosnia-Herzegovina (6.14), Haiti (0.25), Paraguay (1.92), Ivory Coast (0.57), Tunisia (2.47), Egypt (2.21), Cape Verde (1.13), Senegal (1.05), Jordan (2.78), DR Congo (0.05), and Ghana (0.78). High-emission nations finish last in their groups, such as Qatar (27.60), Saudi Arabia (19.66), Belgium (16.79), USA (15.81), South Korea (13.70), and Curaçao (12.34).
110
Dominik Hofer @dominikhofer.me · 11/06/2026
Followers not found.
A screenshot of my profile at 404 followers
160
Reposted by Dominik Hofer
dad (aka miguel) @aka.dad · 11/06/2026
made atproto.md awhile ago, just added some relay features. discover repos by collection and constellation backlinks. connect your agent to the /mcp to fetch records, resolve actors, discover repos and more. try it out, suggest stuff, contribute.
atproto.md
atproto.md — AT Protocol data as Markdown
A read-only, markdown-first API for the AT Protocol. Fetch any repo, collection, or record from any PDS as clean Markdown, discover every repo using a lexicon, and explore backlinks. No auth, no API k...
6525
Dominik Hofer @dominikhofer.me · 07/06/2026
Folded my first #origami crane today because I needed a break from studying 😶‍🌫️ Let's hope it brings me luck for the exams :)
Origami Crane
020
Reposted by Dominik Hofer
Robert Birming @birming.com · 06/06/2026
I'm look forward to see what @dominik.social got cooking with morgen.blue
141
Reposted by Dominik Hofer
pilcrow @pilcrowonpaper.com · 03/06/2026
Announcing my auth book! A completely free online resource on implementing auth with fully-featured examples Over 10,000 words right now and I still have plenty of things to write about auth.pilcrowonpaper.com
Authentication methods
Sessions
Auth sessions
Email addresses
Passwords
Browser client-side storage
Cross-site request forgery (CSRF)
Argon2
Bcrypt
Email address verification codes
Email code authentication
Passkeys
Web Authentication API (WebAuthn)
WebAuthn authenticator data
WebAuthn CBOR encoding
WebAuthn client data
Passkey registration
Passkey authentication
Elliptic Curve Digitial Signature Algorithm (ECDSA)
RSA signature scheme
Edwards Curve Digital Signature Algorithm (EdDSA)
720941
Reposted by Dominik Hofer
spencer chang @spencer.place · 02/06/2026
ok i finally made this available to use! try it out and lmk what you think.. it's weirdly intimate? but im pretty sure ppl think im a bot when i reply right after they post hah.spencer.place/messages
hah.spencer.place
HAH — social media art experiments
9649
Dominik Hofer @dominikhofer.me · 02/06/2026
Not surprised since I have to get up early every day anyways to walk my dog ^^ cronotype.vercel.app/hfrdmnk
cronotype.vercel.app
@hfrdmnk · Cronotype
View @hfrdmnk's commit-time rhythm.
000
Reposted by Dominik Hofer
Lucas ✦ @lucas.love · 01/06/2026
Starting a new experiment to see what happens. For the next 100 days I will create 100 short-form videos and post them on my social channels and as a podcast on my website. Here is day 001. videos.cdn.lucas-fischer.com/videos/day-0...
videos.cdn.lucas-fischer.com
4102
Dominik Hofer @dominikhofer.me · 30/05/2026
I always imagine a little gopher inside the web server frantically hitting a red "danger" button when reading sentences like this 😂 #golang
"In this scenario, Go’s servemux considers the patterns to be in conflict, and will panic at runtime when initializing the routes."
010
Dominik Hofer @dominikhofer.me · 30/05/2026
Starting to dive into @ajmedwards.bsky.social's "Let's Go" book, wish me luck 🤞 #golang
040
Dominik Hofer @dominikhofer.me · 29/05/2026
Last Tuesday, I completed my latest PACT. dominikhofer.me/30-days-of-building…
020
Dominik Hofer @dominikhofer.me · 27/05/2026
Yesterday's post was the 30th entry of my Morgenblau PACT: dominikhofer.me/a-new-commit... Will publish a quick recap/reflection post on my blog in the coming days :)
dominikhofer.me
A new commit(ment) | Dominik Hofer
I’m starting another 30-day PACT.
000
Dominik Hofer @dominikhofer.me · 26/05/2026
The source detail page is also coming along nicely. #morgenblau #buildinpublic
Screenshot of an RSS reader showing the source page for "Dominik Hofer | Posts" from dominikhofer.me. Stats display weekly frequency, last post 1 day ago, 112 total posts. A list of recent posts is visible: "Higher cadence," "It's a focus problem," "The inefficient way," "A new commit(ment)," and "30 days of writing."
070
Dominik Hofer @dominikhofer.me · 26/05/2026
Morgenblau's codebase rn:
GitHub language breakdown: Go 64.5%, TypeScript 32.5%, CSS 2.2%, Makefile 0.5%, JavaScript 0.1%, HTML 0.1%, Shell 0.1%.
050
Dominik Hofer @dominikhofer.me · 25/05/2026
Saving posts in Morgenblau has landed, which also means that a second lexicon is now officially in use. #morgenblau #buildinpublic
PDSls showing the collections on dominik.social: a wide spread of ATProto lexicons across nine namespaces, with blue.morgen.feed.save and blue.morgen.feed.subscription highlighted.
050
Dominik Hofer @dominikhofer.me · 25/05/2026
TIL that 3D pixels are called voxels.
020
Dominik Hofer @dominikhofer.me · 25/05/2026
Devlog #002 for Morgenblau: buttondown.com/dominikhofer... If you never want to miss a future issue, you can subscribe (or follow via RSS) here: buttondown.com/dominikhofer...
buttondown.com
Doing the ground work
Morgenblau Devlog #002
000
Dominik Hofer @dominikhofer.me · 24/05/2026
A simple trick I picked up from the Runna app. dominikhofer.me/higher-cadence
010
Dominik Hofer @dominikhofer.me · 24/05/2026
Published a lexicon for the first time 🥳 Well, four actually + the permission set. Which means that the permission screen now looks really clean :) Link to the lexicons: pdsls.dev/at://did:plc... #morgenblau #buildinpublic
Eurosky.social OAuth authorization screen. Left column: heading "Authorize" with subtitle "Grant access to your @dominik.social account." Right column lists two items: "An application on your
device wants to access your @dominik.social account," and "Morgenblau: Manage your Morgenblau subscriptions, saves, shares, and follows." Two buttons at the bottom right, "Deny access" and a
blue "Authorize."
290
Dominik Hofer @dominikhofer.me · 23/05/2026
I originally wanted to use Skyreader's lexicons fully, but by now, I think having our own lexicons might be beneficial (like Glean does it). We're still gonna interoperate with the other two readers though! Wrote about the plans in the spec: tangled.org/dominik.soci... #morgenblau #buildinpublic
tangled.org
040
Dominik Hofer @dominikhofer.me · 22/05/2026
Updated/improved the specs document. #morgenblau #buildinpublic
020
Dominik Hofer @dominikhofer.me · 21/05/2026
The sources tab now is a bit more polished and shows post frequencies and when the last post was published so you can quickly spot noisy or abandoned feeds. #morgenblau #buildinpublic
Screenshot of the Morgenblau Sources page listing feeds like Aaron Francis, Ali Abdaal, Chris Raroque, and Kurzgesagt. Each row shows a waveform icon with a post-frequency label (Weekly, New, Irregular) and an hourglass icon with a relative timestamp of the latest post (22h ago, 1d ago, 1w ago, etc.).
050
Dominik Hofer @dominikhofer.me · 20/05/2026
Decided to remove the “Create” part from the app. Instead, the menu now looks like this: Discover: People & sources to follow Sources: Manage/view individual sources Library: Saved articles and ones shared by your network Digest: “Feed” with daily buckets #morgenblau #buildinpublic
Menu of Morgenblau with four items: Discover, Sources, Library & Digest
140
Reposted by Dominik Hofer
patak @patak.cat · 20/05/2026
Against the sea of noise, slow down. Take the time you need. Find community. Learn with them. Share with others. Dream long term. Build together. Have fun. Love. Care.
1758
Reposted by Dominik Hofer
Basic Apple Guy @basicappleguy.com · 19/05/2026
Apple has started rolling out refreshed artwork across some of the movies, bundles, and TV collections featured in the iTunes Store.
9634
Dominik Hofer @dominikhofer.me · 19/05/2026
> The rule: always pay in the currency of the country you're standing in. Not your home currency. The terminal is betting you'll pick the familiar one. Friendly (travel-)reminder by @eddiedale.com that can't be repeated often enough. www.eddiedale.com/blog/currenc...
eddiedale.com
Currency conversion is never in your favor | Eddie Dale
Payment terminals, ATMs, Amazon, international transfers, currency exchange apps. Whenever you get the choice, **never agree to an automatic currency conversion**. It's called Dynamic Currency Conver...
020
Dominik Hofer @dominikhofer.me · 19/05/2026
Fixed a small bug where users always got redirected to the current day when closing an article, even when that article was from another day. #morgenblau #buildinpublic
040