A

Andreas Kling

awesomekling.github.io · Personal blog · on HN since 2019

Andreas Kling, creator of SerenityOS and the Ladybird browser, writes about OS development, C++ patterns, and memory safety.

What HN saysHN links it for the Ladybird browser announcement and his decision to quit his job for SerenityOS; commenters follow the project with admiration.
60HN people shared it
47linked it in comments
26stories submitted
4.9Kstory points
1 year agolast shared
2019people per year2026

Most-shared posts

  1. 1
    Ladybird: A new cross-platform browser project
    20 people · 1.3K points · first shared 2022 · 473 comments on HN
  2. 2
    Pledge() and unveil() in SerenityOS (2020)
    10 people · 305 points · first shared 2020 · 54 comments on HN
  3. 3
    I quit my job to focus on SerenityOS full time
    9 people · 1.6K points · first shared 2021 · 249 comments on HN
  4. 4
  5. 5
    Memory Safety for SerenityOS
    4 people · 81 points · first shared 2022 · 21 comments on HN
  6. 6
    Excellence is a habit, but so is failure
    3 people · 4 points · first shared 2023 · discussion on HN
  7. 7
    C++ Patterns: The Badge
    2 people · 207 points · first shared 2019 · 155 comments on HN
  8. 8
    Serenity C++ patterns: References instead of Pointers
    2 people · 15 points · first shared 2019 · 5 comments on HN
  9. 9
    Smarter C/C++ inlining with __attribute__((flatten))
    2 people · 6 points · first shared 2020 · discussion on HN
  10. 10
    Making Myself Uncomfortable Again
    2 people · 4 points · first shared 2023 · discussion on HN
  11. 11
    15 Minutes Every Day
    2 people · 2 points · first shared 2023 · discussion on HN
  12. 12
    About
    2 people · first shared 2021
  13. 13
    How I make a living working on SerenityOS
    1 people · 936 points · first shared 2022 · 193 comments on HN
  14. 14
    Introduction to SerenityOS Programming
    1 people · 159 points · first shared 2020 · 43 comments on HN
  15. 15
    MutexProtected: A C++ Pattern for Easier Concurrency
    1 people · 5 points · first shared 2023 · 1 comments on HN

What HN people wrote when they linked it

JanetToolsmith · 2024-06-22
Have you been following Ladybird browser project? From an early (2022) post: https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p… > Q: Why bother? You can’t make a new browser engine without billions of dollars and hundreds of staff. > Sure you can. Don’t listen to armchair defeatists who never worked on a browser. ...fast-forward to this month: https://awesomekling.substack.com/p/forking-ladybird-and-stepping-down… > Since then, SerenityOS has grown into a large OSS community with over one thousand contributors all over the world. > Personally, for the past two years, I've been almost entirely focused on Ladybird
callumprentice · 2022-12-14
The Ladybird bowser - part of the Serenity OS - is another alternative I’m following with a mixture of astonishment, admiration and excitement - https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p… I suspect that for most people, it still has a way to go before it could be considered a daily driver, but the rate of progress is incredible and I’m sure it will get there.
Erethon · 2022-10-30
As others have said, you can pick any video, start watching and you'll just be "up-to-date". Having said that, one of the first videos I watched from start to finish and found easy to follow was the one about implementing the `pledge` syscall https://www.youtube.com/watch?v=-a5hLBuW6tY. There's also an accompanying blog post https://awesomekling.github.io/pledge-and-unveil-in-SerenityOS/
flobosg · 2022-08-18
Great post. It reminded me a bit of this one from the creator of SerenityOS: https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-fu…
jamal-kumar · 2022-07-15
This guy's story is really impressive. Sounds like he managed to quit his job to work on livestream developing this full time as part of a drug addiction recovery strategy. [1] That's pretty impressive, I hope the best for him going forward with that. It looks like a pretty interesting introduction to operating system development, a huge topic with tons of stuff to cover. [1] https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-fu…
Rendello · 2022-03-24
I'm a big fan of OpenBSD's pledge and unveil syscalls; the best overview of them is from SerenityOS' implementation: https://awesomekling.github.io/pledge-and-unveil-in-SerenityOS/
cyber_kinetist · 2022-03-18
Absolutely right, library-level permission systems are desperately needed, just like what Apple did with apps in iOS. The unfortunate thing is that these features aren’t at the OS level, and we need a separate runtime to do these kinds of things. The current widely used OS kernels (Windows, Linux) don’t give granular permissions that well, for example in Linux we either have all or nothing (root vs user). I’ve heard that OpenBSD has a system to constrain for each program what syscalls you can make, and Serenity is also following this model (https://awesomekling.github.io/pledge-and-unveil-in-SerenityOS/).
MaulingMonkey · 2024-02-09
People can and have added extra annotations to C and C++ code for such things. Static analyzers can catch some use-after-free and iterator invalidation bugs at compile time. Problem is: • They're opt-in instead of opt-out (meaning none of your system libraries or 3rd party dependencies have bothered using them.) • What's been implemented in practice frequently fails to find bugs in relatively simple toy examples (I often confuse myself wondering why I've failed to turn some new bit of static analysis on, when in fact I have, and it's simply failed to catch even my demonstration bug.) • The effective tools, on the other hand, tend to have "false" positives as well. The conclusion I've come to is that to fully solve these problems in C or C++, you'd effectively transform it into a new language. And at that point, you might as well stop pretending that's not exactly what you're doing, and actually create said new language. --- That said, when stuck using C or C++, static analysis and the compiler-specific half measures that are available are worth using, IMO. • https://awesomekling.github.io/Catching-use-after-move-bugs-with-Clang… • https://clang.llvm.org/docs/ThreadSafetyAnalysis.html • https://clang.llvm.org/docs/AttributeReference.html#lifetimebound • https://github.com/MaulingMonkey/notes/blob/master/programming/cpp-ins… • `printf` type checking annotations exist, but don't necessairly work on MSVC. Often sanest to make your…
jraph · 2023-04-03
It's not perfect (since its funding is mostly Google) but Firefox is my current browser of choice. It notably has very good support for blocking tracking and unwanted stuff thanks to uBlock Origin, which works best on Firefox according to its main developer [0]. And while it is funded with Google's money (which is a huge caveat), I still hope this changes in the future. Firefox could be funded differently. [By the way] maybe Mullvad browser is an interesting choice for this exact reason? Other (independent) initiatives like NetSurf [1] and Ladybird [2] are on my radar. NetSurf has been around for a while; Ladybird seems impressive, achieving some great progress and result with little resources. I should actually try Ladybird more seriously when I get the chance, and maybe contribute if I find the time :-) [0] https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Fir… [1] https://www.netsurf-browser.org/ [2] https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
shagie · 2022-09-12
There are certainly "favorite" websites. You could use that as "sites that I use for professional work and track the latest features." Gitlab, Github, Gmail, and so on. There are also the "Mom's cooking blog" that is running an ancient copy of Wordpress and mom still doesn't understand that <b><i>This is important</b></i> is not formatted correctly. Some browsers are able to handle this, but if you browse it with a "this browser only follows standard compliant html" you may get the entire page in italics or bold. The article even acknowledges this - https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p… > Fidelity of modern websites in Ladybird is steadily improving, but you’ll often see lots of layout and compatibility issues. For example, here’s Reddit right now: > (mangled layout) We could put Reddit in that list of favorite sites that need to work. And so, is it the fault of reddit or the browser that the page isn't rendering right? As reddit works on other browsers, surely its the browser's fault and not something janky that reddit is doing that the other browsers happen to work with. And thus my post - if a page works correctly in a different browser but incorrectly on Ladybird, to a user it is always the browser's fault.
akling · 2021-08-17
Hello friends! I'm the original author of SerenityOS and it's a lovely surprise to see it on the front page of HN :^) This project has been quite the journey for me, from starting it from scratch ~3 years ago, to quitting my job ~3 months ago to focus on this full time. [1] It's also grown from a 1-man project into a bustling open source community with 475 contributors and counting. If anyone has questions about the system I'm happy to answer them! I also have a huge library of content on my YouTube channel [2], where I've uploaded hundreds of videos of me working on the system in real time, and also monthly update videos (since April 2019) where I demo recent developments. Our main community hub is over on Discord for anyone interested in joining development. [3] 1. https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-fu… 2. https://www.youtube.com/andreaskling 3. https://discord.gg/serenityos
JonChesterfield · 2025-08-11
In this instance C++ is far ahead of C, because what you want for maybe<> is typestate, and that's only available in C++ because it's wedded to member functions. See https://awesomekling.github.io/Catching-use-after-move-bugs-with-Clang… or similar
ironmagma · 2025-05-01
Answer is here, although the article is outdated and the most recent news is that they are rewriting the browser at least in Swift. https://awesomekling.github.io/Memory-safety-for-SerenityOS/
zyedidia · 2025-03-26
I don't think there are any plans for Ladybird to have a JIT compiler (they used to have one but decided to remove it) [1, 2], so it's not clear to me that this performance gap will be improved anytime soon (if ever). [1]: https://youtu.be/dKHopzDtElY?si=jc3ho2NT4vPTbXBz&t=14 [2]: See FAQ here https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
squeek502 · 2024-06-03
SerenityOS's browser has never been named Ladybird AFAIK, it's always been just Browser. https://github.com/SerenityOS/serenity/tree/master/Userland/Applicatio… Ladybird was the name used for to the cross-platform version of the browser. https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
Panino · 2024-03-31
> If you have a security feature for example, which uses the pledge() syscall on OpenBSD, but you can only use that feature on OpenBSD systems, you have two choices: Just in case, I want to note that pledge(2) and unveil(2) are also supported by SerenityOS, so checking only for an OpenBSD target is insufficent. https://awesomekling.github.io/pledge-and-unveil-in-SerenityOS/ Pledge and unveil in SerenityOS, combined with the planned move to memory safety, will be a powerful combination.
zogrodea · 2024-01-06
My first thought after reading the title was about ego depletion (a controversial theory that willpower is a limited resource), but the claim here seems unrelated to that since it instead states that willpower is just not effective at eliminating bad habits, not touching whether willpower is a limited resource or not. Common advice for at least a millenium has been that a consistent good habit, even if small, is better than a large gesture that's not long maintained. Andreas Kling (author of SerenityOS) can relate to this. https://awesomekling.github.io/Excellence-is-a-habit-but-so-is-failure…
nayuki · 2023-11-12
Parts of Preston Thorpe's story of redemption have similarities to Andreas Kling: https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-fu… > It was October 2018 and I had just completed a 3-month rehab program at a state addiction clinic in Sweden. I was unemployed, staying with family, and had basically nothing going on. > With no drugs or other vices to pass the time, the days seemed impossibly long. I struggled to find activities to fill them. I enrolled in school for a while, but it wasn’t for me this time either. Eventually I turned to programming, since it’s always been my big interest in life.
pipeline_peak · 2023-07-27
This is what they can "achieve" when they apply a significant amount of their man power to getting Reddit running lol... https://awesomekling.github.io/assets/ladybird-proggit.png It's impressive, but it also shows how hard and everchanging this sort of task is. I don't see Youtube or Google Docs as always being reliable.
qingcharles · 2023-07-21
I'm holding out hope for Ladybird to save us all one day: https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
bruce511 · 2023-06-18
For more context see [1]. At first glance I felt that 100k wasn't really going to move the needle in creating a new browser engine but in fact (after reading the link below) it's not insignificant. There are a lot of contributers to this project, and funding the project lead is a big step in the right direction. Realistically another browser engine really isn't needed. 2 is enough. Given the scale of the work involved it'll take a lot more than money to make this mainstream. Bur that doesn't mean it's not important. These sorts of projects have value beyond main-stream use cases. While those uses are small, they can end up being significant. [1] https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
gquiniou · 2023-04-11
The are building a memorysafe language too : https://awesomekling.github.io/Memory-safety-for-SerenityOS/ and their goal is to use it to incrementally rewrite SerenityOS
uneekname · 2023-03-31
Not nearly as mature as the examples you gave, but you might like Ladybird [0], the SerenityOS community has a really welcoming vibe imo. [0] https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
samwillis · 2023-02-20
I think what's been achieved in a little over a year with the Ladybird Browser from the SerenityOS project shows that it's quite possible to build a new browser from scratch. And yes, they are absolute heroes for doing it! https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p… https://linus.dev/posts/ladybird-browser-year-in-review-2022/
bear24rw · 2023-01-04
> In C++, the only way I'm aware of to verify whether a value is actually moved or not is to use a debugger. Not as simple as if there was a proper borrow checker but its sort of possible: https://awesomekling.github.io/Catching-use-after-move-bugs-with-Clang…
shiomiru · 2022-12-15
> Unfortunately, a browser cannot realistically be controlled by a non-corporate-funded entity (if you don't count a government). Surely it can, we just need to make it happen. It's actual code that helps here, not nihilism. To quote the wonderful ladybird project[0] (lead by a person who iirc worked on webkit too): > Q: Why bother? You can’t make a new browser engine without billions of dollars and hundreds of staff. > Sure you can. Don’t listen to armchair defeatists who never worked on a browser. [0]: https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…
senko · 2022-11-07
It already works on other systems. Quoting from [0]: > So far, we’ve seen it running on Linux, macOS, Windows (WSL) and Android. The Linux version is definitely the most tested. [0] https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-p…

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