Simon's Avatar

Simon

@hojberg.xyz.bsky.social

Front-End @unison-lang.org (Leading UCM Desktop and Unison Share) https://github.com/hojberg Web: hojberg.dev Writing: https://programming-is-collaboration.com Dance more!

183 Followers  |  218 Following  |  72 Posts  |  Joined: 09.06.2023  |  2.3266

Latest posts by hojberg.xyz on Bluesky

Video thumbnail

The award-winning Caves of Qud is coming to Nintendo Switch in Q4 2025!

07.08.2025 13:15 β€” πŸ‘ 549    πŸ” 145    πŸ’¬ 14    πŸ“Œ 60
Preview
The /o in Ruby regex stands for β€œoh the humanity!” Your code using the /o modifier Source: wikipedia Hi there! Do you like Regex? Do you like performance? Do you like creating confounding bugs for yourself rooted in the mechanics of the Ruby VM itsel...

I took a journey into the heart of Ruby to learn the secrets of the /o regex modifier, and I emerged wiser, but also so deeply tired.
jpcamara.com/2025/08/02/t...

02.08.2025 14:18 β€” πŸ‘ 27    πŸ” 7    πŸ’¬ 8    πŸ“Œ 2

So excited and honored to be speaking at SF Ruby conf in November! I’ll be talking Realtime with Rails, Anycable and Yjs! Hope to see you there!

25.07.2025 02:18 β€” πŸ‘ 13    πŸ” 4    πŸ’¬ 2    πŸ“Œ 0
Post image

Walking is really, really, really good for you.

Conclusion of a new meta-analysis that reviewed 57 studies on walking & health:
"Compared with 2,000 steps per day, 7,000 steps per day was associated with a 47% lower risk of all-cause mortality."

www.thelancet.com/journals/lan...

24.07.2025 14:38 β€” πŸ‘ 161    πŸ” 46    πŸ’¬ 1    πŸ“Œ 4
Preview
ChatGPT advises women to ask for lower salaries, study finds A new study has found that large language models (LLMs) like ChatGPT consistently advise women to ask for lower salaries than men.

Study finds A.I. LLMs advise women to ask for lower salaries than men. When prompted w/ a user profile of same education, experience & job role, differing only by gender, ChatGPT advised the female applicant to request $280K salary; Male applicant=$400K.
thenextweb.com/news/chatgpt...

20.07.2025 20:15 β€” πŸ‘ 1947    πŸ” 1031    πŸ’¬ 92    πŸ“Œ 339
Tech Promised Everything. Did it deliver? | Scott Hanselman | TEDxPortland
YouTube video by TEDx Talks Tech Promised Everything. Did it deliver? | Scott Hanselman | TEDxPortland

A must-watch talk from @scott.hanselman.com. Scott and I are of the same vintage, and I am embarrassed (mortified!) by how revolting some of our generational peers have become. Technology still has a unique power to improve our lives, but wow, do we ever have work to do. youtu.be/dVG8W-0p6vg?...

20.07.2025 15:55 β€” πŸ‘ 151    πŸ” 25    πŸ’¬ 5    πŸ“Œ 3

Also, I should add, a constant doubt about whether or not what I write is interesting to anyone.

20.07.2025 21:19 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

100% I almost never end up with the point I imagined when I started writing. It takes me months.

20.07.2025 13:55 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Ultimate we choose to migrate to Electron (still with Elm) due to convenience and a better guarantee in a uniform experience across platforms.

08.07.2025 19:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

MacOS Sonoma, naturally, has a much older WebView than MacOS Sequoia. This meant for us that we needed more extensive cross platform testing and a lot of web features we couldn't fully utilize, like relying on `:has` or `gap` in flexbox for instance.

08.07.2025 19:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Instead of bundling Chromium with the app like Electron does, Tauri uses the WebView found in the host OS to render the app. This is a cool trick to reduce footprint, but means variation between the platforms, both between things like Mac and Windows, but also between versions of a single OS.

08.07.2025 19:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The first version of UCM Desktop was released using Tauri (and Elm). Tauri is a really cool project, but the fundamentals of how they achieve smaller app footprints (while clever), didn't work for our small team.

08.07.2025 19:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Release v1.1.0 Β· unisonweb/ucm-desktop This release includes a few small bugfixes and quality of life improvements, but also represents the first release on top of Electron (previously we were using Tauri). Bug fixes Improve doc render...

UCM Desktop 1.1.0 is out: github.com/unisonweb/uc...

- Tauri to Electron migration
- Light mode colors in the Finder
- Ensure a definition is scrolled to when opened
- HittingΒ `shift+x` now closes all open definitions

More on the Tauri to Electron migration in 🧡

08.07.2025 19:26 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0

2advanced was legendary!

08.07.2025 17:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Code for People ❈ Simon Højberg ❈ Principal Frontend Engineer A reflection on the audience of code.

Finally got around to publishing a new essay: Code for People.
hojberg.xyz/code-for-peo...

23.06.2025 20:36 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Code for People ❈ Simon Højberg ❈ Principal Frontend Engineer A reflection on the audience of code.

Finally got around to publishing a new essay: Code for People.
hojberg.xyz/code-for-peo...

23.06.2025 20:36 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

The only thing I use SCSS for anymore is this pattern for theming:

```scss
@mixin light {
/* light theme vars */
}

:root,
.light:root {
@include light();
}

@media screen and (prefers-color-scheme: light) {
@include light();
}

/* same for dark */
```

Anybody have a good alternative here?

23.06.2025 15:05 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 1

This is really cool!

23.06.2025 14:50 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Letter to Arc members 2025 On Arc, its future, and the arrival of AI browsers β€” a moment to answer the largest questions you've asked us this past year.

Arc's farewell post makes me grateful for new ventures like Good Internet Magazine and the folks repping personal websites. The picture they paint is bleak & corporate, and I hate to imagine that my posts would only ever be consumed by LLMs... (1/3) browsercompany.substack.com/p/letter-to-...

03.06.2025 09:45 β€” πŸ‘ 27    πŸ” 4    πŸ’¬ 1    πŸ“Œ 1

I keep wanting to give Typst a go!

10.05.2025 23:14 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Loving this new visual essay from Sam!

08.05.2025 15:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

✨ It's new samwho visual essay o'clock! ✨

Reservoir sampling is one of my favourite algorithms. It allows you to sample from a set without knowing the size of that set.

I try to assume no prior knowledge, and use no scary math notation. Just beautiful visuals.

Let me know what you think! ❀️

08.05.2025 15:27 β€” πŸ‘ 227    πŸ” 35    πŸ’¬ 15    πŸ“Œ 8
Dan's Unison Blog Recently, some Unison folk noticed that some loops they were running appeared to take time that was quadratic in the number of iterations. This is pretty odd, since it means that each, separate iteration somehow makes the next one more expensive.

πŸ’« While Unison warns you about quadratic ability handlers in our latest release, here's Unison's own compiler expert, Dan, on the nature of the problem and how to structure your ability handlers to avoid a quadratic slowdown in the first place.

06.05.2025 13:00 β€” πŸ‘ 6    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

This landing page from Dan Hollick is such a masterclass. The book looks great too!

www.makingsoftware.com

05.05.2025 13:07 β€” πŸ‘ 173    πŸ” 18    πŸ’¬ 8    πŸ“Œ 3
Preview
Release release/0.5.38 Β· unisonweb/unison What's Changed Features: LSP hover info for local bindings by @ChrisPenner in #4969 Maps now decompile as a single call to Map.fromList by @pchiusano in #5658 New support for pattern lookahead, ne...

πŸ“° UCM 0.5.38 is here!

✨ LSP hover info for local terms
πŸ—ΊοΈ More readable `Map k v` rendering in the console
🎯 Lookahead/lookbehind support for patterns
πŸ“₯ Faster syncs with Share with visible progress
⌨️ Better errors for typos in type constructors
βœ‹ Warnings for possible quadratic handlers

02.05.2025 18:43 β€” πŸ‘ 7    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0

They are! I'd love to turn this into an interactive thing some day though. Could be really cool to have this kind of explainer on any Unison function.

29.04.2025 15:38 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I hope this was helpful. We have a bunch of stuff planned in our code rendering tooling to improve the understandability of signatures; like highlighting arguments throughout a function signature and body. 7/7

29.04.2025 15:21 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
The Unison signature: `myMain: '{IO, Exception} ()` which includes a thunk.

The Unison signature: `myMain: '{IO, Exception} ()` which includes a thunk.

Here we return a thunk that uses the IO and Exception abilities
which in turn returns Unit indicated by the 2 parens (). This specific signature is the signature of a runnable Unison function. 6/7

29.04.2025 15:21 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
The Unison type signature: `helloWorld : HttpRequest ->{Exception, Log} HttpResponse` which include Abilities

The Unison type signature: `helloWorld : HttpRequest ->{Exception, Log} HttpResponse` which include Abilities

Abilities is a unique feature of Unison. It's how we model effectful code. Read more here: www.unison-lang.org/docs/fundame... 5/7

29.04.2025 15:20 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
The Unison signature `List.map : (a -> b) -> [a] -> [b]` which includes type variables and a lambda argument

The Unison signature `List.map : (a -> b) -> [a] -> [b]` which includes type variables and a lambda argument

Lambda arguments work with type variables too 4/7

29.04.2025 15:19 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@hojberg.xyz is following 20 prominent accounts