Hugo Tunius

hugotunius.se · Personal blog · on HN since 2014

Hugo Tunius is a software engineer who writes about app privacy, Flutter, type-driven design, sideloading, and running a cheap static blog.

What HN saysHN commenters link his posts on Flutter Web's design, making invalid state unrepresentable, and the One Cent Blog, and discuss his sideloading argument.
15HN people shared it
5linked it in comments
22stories submitted
2.3Kstory points
4 months agolast shared
2014people per year2026

Most-shared posts

  1. 1
    Flutter Web: A Fractal of Bad Design
    4 people · 128 points · first shared 2020 · 81 comments on HN
  2. 2
    The One Cent Blog: Static Web Content on the Cheap
    4 people · 5 points · first shared 2016 · discussion on HN
  3. 3
    An Analysis of Privacy on the App Store
    3 people · 40 points · first shared 2021 · 20 comments on HN
  4. 4
  5. 5
    Making Invalid State Unrepresentable
    2 people · 2 points · first shared 2020 · discussion on HN
  6. 6
    The Sword Juggling Fallacy
    2 people · 1 points · first shared 2026 · discussion on HN
  7. 7
    Switching to Firefox
    1 people · 7 points · first shared 2017 · 1 comments on HN
  8. 8
    You are not the average user
    1 people · 5 points · first shared 2014 · discussion on HN
  9. 9
    Why Svelte Is Like Rust
    1 people · 3 points · first shared 2020 · discussion on HN
  10. 10
    How to hack half of all websites
    1 people · 2 points · first shared 2019 · discussion on HN
  11. 11
    The Stalactite Developer
    1 people · 2 points · first shared 2020 · discussion on HN
  12. 12
    Going Spelunking with Mitmproxy
    1 people · 2 points · first shared 2019 · discussion on HN
  13. 13
    The One Cent Blog
    1 people · 2 points · first shared 2016 · discussion on HN
  14. 14
    Stop Using (Only) GitHub Releases
    1 people · 2 points · first shared 2025 · discussion on HN
  15. 15
    Edge Cached Static Sites on CloudFlare
    1 people · 2 points · first shared 2020 · discussion on HN

What HN people wrote when they linked it

K0nserv · 2016-07-26
Lovely! Definitely like the style here and the focus on content first. Like other people have said it's similar to Motherfucking Website[1], and a Better Motherfucking Website[2]. I'll need to start including this when I link to those two. For my website[3] I'm really trying to keep weight on the wire down too so I am opting to skip the custom font and header image. It's quite nice to have 10-15kb pages in the age of the web obesity crises[4]. A header image and a custom font does have a big effect on how personal the content ends up though. [1] - http://motherfuckingwebsite.com/ [2] - http://bettermotherfuckingwebsite.com/ [3] - https://hugotunius.se [4] - http://idlewords.com/talks/website_obesity.htm
user_7832 · 2025-09-29
Related thread from a month ago: We should have the ability to run any code we want on hardware we own, link: https://hugotunius.se/2025/08/31/what-every-argument-about-sideloading… (Discussion link: https://news.ycombinator.com/item?id=45087396)
neurostimulant · 2020-11-06
> No native elements, no browser integration or extensions, interaction with the page, and accessibility. They all would suffer. Uh, but those things are already happening right now, e.g. Flutter Web UI [1] [1] https://hugotunius.se/2020/10/31/flutter-web-a-fractal-of-bad-design.h…
wsc981 · 2016-08-08
There's this guide on a "one cent blog"[0] that I've used to create my own website / weblog with a custom domain. It uses Jekyll, CloudFlare and Travis-CI. Probably a bit more work to set up then the tool created by the OP, but also more flexible, I would think. The end result is much the same though. A simple 'git push' is used to publish the blog. --- [0]: https://hugotunius.se/2016/01/10/the-one-cent-blog.html
chriswarbo · 2025-01-08
Kind of. At a more fundamental level, it's applying the idea that "invalid states should be unrepresentable" (e.g. https://hugotunius.se/2020/05/16/making-invalid-state-unrepresentable.… ) but to our code itself. For example, consider a simple function to copy files. We could implement it like this: def copy(fs: Filesystem, in: Path, out: Path) { inH: HandleRead = fs.openRead(in); outH: HandleWrite = fs.openWrite("/tmp/TEST_OUTPUT"); finished: Boolean = false; while (!finished) { match (inH.read()) { case None: finished = true; case Some(data) = outH.write(data); } } inH.close(); outH.close(); } However, there are many ways that things could go awry when writing code like this; e.g. it will write to the wrong file, since I forgot to put the real `out` value back after testing (oops!). Such problems are only possible because we've given this function the capability to call `fs.open` (in many languages the situation's even worse, since that capability is "ambient": available everywhere, without having to be passed in like `fs` above). There are also other capabilities/permissions/authorities implicit in this code, since any call to `fs.open` has to have the right permissions to read/write those files. In contrast, consider this alternative implementation: def copy(inH: HandleRead, outH: HandleWrite) { finished: Boolean = false; while (!finished) { match…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close