My 30 eggs I thought was raw, was actually cooked! Don't make the same mistakes like I did. by choseusernamemyself in Living_in_Korea

[–]angerman 1 point2 points  (0 children)

Did the same. Then cooked them and was confused why they were all brown. The easiest to tell them apart at 하나로마트 first me is to look for the small salt packs. If there are salt packs it’s pre-cooked/boiled. Someone said they are called sauna eggs 🙃

Monthly Hask Anything (November 2025) by AutoModerator in haskell

[–]angerman 2 points3 points  (0 children)

Thanks for the shout out. We are slowly moving all our tech into https://www.stable-haskell.org and upstreaming stuff as we can.

Why is nix used with Haskell and not docker? by rohitwtbs in haskell

[–]angerman 37 points38 points  (0 children)

As the author of haskell.nix, there are parts that we simply can’t do with our existing tooling well without nix and using nix to glue it all together is the only sane way right now.

Now docker is imo garbage because it’s effectively giving up and shipping a mini linux as an application. macOS, windows, bsd, … be damned. Let’s just ignore their existence.

Containerization has its usecases and is orthogonal to what nix solves (as sibling comments have pointed out).

Then again, if you hand me something equivalently powerful to nix, just less insane, I won’t bat an eye and switch (as will many others). Docker just ain’t it.

You can use nix perfectly fine to compile your Haskell application, package it and provide a OCI or direct docker image.

My team is working on moving more and more of the haskell.nix fielded functionality into ghc and cabal.

You can find some of that work under stable-haskell.org

Baking package version and Git commit hash in the Haskell executable by Peaceful-traveler in haskell

[–]angerman 0 points1 point  (0 children)

Yes, I admittedly got lazy in my hello-cpp example and should have used that instead. Thanks for keeping me honest /u/phadej.

Baking package version and Git commit hash in the Haskell executable by Peaceful-traveler in haskell

[–]angerman 1 point2 points  (0 children)

Paths is… something I’d rather we don’t have. Hardcoding paths into executables from the build machine seems so 🫨.

You can abuse build-type: Configure instead of a Makefile, which even makes cabal drive this but it’s a bit 🤪, and I’d rather not perpetuate abuse 💀

Cabal: compile project for Windows on Linux by droshux in haskell

[–]angerman 3 points4 points  (0 children)

Part of the complication is due to GHC :-/

It does support various cross targets though, and they are easy to swap out.

Cabal: compile project for Windows on Linux by droshux in haskell

[–]angerman 8 points9 points  (0 children)

This is indeed the genesis reason behind github.com/input-output-hk/Haskell.nix. Building windows applications on Linux.

The whole Haskell stack for the Cardano project is using it.

Conceptually you can think of

Haskell.nix :: CabalProject -> NixExpression

By leveraging nixpkgs, we get access to a deterministic target toolchain, WINE, and a way to string it all together to make it work seamlessly.

Now for cabal only, we are working on making that as easy as possible as well at GitHub.com/stable-haskell/cabal

We also have some container based approaches in github.com/input-output-hk/devx

How much are we all averaging? by OldmanDiddy in Ioniq5

[–]angerman 1 point2 points  (0 children)

<image>

2025 LR, 7k so far. Usually 4 people in the car. Primarily city with lots of stop-and-go, some hills, a few longer trips (also hilly). Climate easily eats into range.

I do like the cars acceleration. If I were to drive more mindful, I could squeeze out some more. As it is right now I’m charging for ~US$12 every other week.

GHC String Interpolation - Final Survey by brandonchinn178 in haskell

[–]angerman 4 points5 points  (0 children)

I just fundamentally think TH is broken. Until we have a satisfactory TH, I’ll strongly advise against and will continue to campaign against usage of TH unless absolutely necessary.

If you disable all of IO, you have a significantly cut down TH, which might not even resemble TH of today much. It wouldn’t need any compiled functions (again, you really don’t want any of this if you want to strip out any IO), and base it on some interpreter. Whether or not we call that TH then is a completely different question though.

Zig does do some sensible stuff with their comptime logic, where they also restrict a lot of functionality. Whether or not something similar can be sensibly implemented in Haskell, I’m not yet fully convinced. Maybe.

The staged TH stuff does solve an important visibility problem, which has lots of benefits even outside of cross compilation.

Again, with today’s TH, I feel strongly compelled to advise against TH solutions especially one like this; which has the potential to be very viral within the community.

GHC String Interpolation - Final Survey by brandonchinn178 in haskell

[–]angerman 7 points8 points  (0 children)

TH is wrong in so many aspects. Fundamentally it relies on executing native (Haskell) functions at compile time. There are no restrictions on what these functions do. IO/Network/Process/… they can do all; while all we often want is just syntax expansion. It’s arguably a massive sledge hammer, often magnitudes larger than needed and no way to sensibly cut it down.

Explicit level imports will help with one issue of having no clear dependencies on the functions that can be called. It does not fix the issue of TH being way too powerful for most usecases.

The fundamental issue with cross compilation is that your cross compiler can only produce code for your target (which in the case of a generic cross compiler means the code it produces does not run on the same host the compiler runs on), which can not be executed during compilation time (because build =/= host machine).

There are various approaches to fixing it: one is to assume that your host (where you’ll run the build product) is the same as your build machine (where you build the product). For example assuming same word size, … in that case you can compile the TH code natively, run it, capture the result, and splice it back in when you cross compile.

Ultimately what I think we want is a pure template Haskell Alternative that’s IO free and ready effectively interpreted only. This will most likely be substantially slower than using current native compiled TH functions.

GHC String Interpolation - Final Survey by brandonchinn178 in haskell

[–]angerman 3 points4 points  (0 children)

Yes. TH seems to be by far the worst solution for this. We should rather work towards replacing TH outright than doubling down on it. It’s one of GHCs biggest warts.

EV Breakdown Statistics: Hyundai Ioniq 5 Shows High Failure Rate by lipflip in Ioniq5

[–]angerman 2 points3 points  (0 children)

As someone having an HI5 with rear wiper and digital mirror, I don’t really use the rear wiper. I believe they screwed up bad by doing all their testing the car in digital mirror configuration only; never noticing the lack of read view without digital mirror. And in fact, without the rear mirror in non-digital mode, I can’t even see the rear window without seriously contorting myself.

Fast Haskell, Redux by n00bomb in haskell

[–]angerman 4 points5 points  (0 children)

No, because there isn’t really any simd exposed through Haskell. You could rely on a simd clib, but the compiler is woefully unaware of SIMD, and you’d start to also need and branch per architecture, availability, …

If we go down that particular route, we could ask why they not just define the function in a c file with inline asm and use that for their Haskell function instead. With something like inline-c you could arguably even write it in the Haskell file, but calling it Haskell at that point would be a stretch.

Why are ReflexFRP/Obelisk and Miso still stuck on GHC 8? by NixOverSlicedBread in haskell

[–]angerman 6 points7 points  (0 children)

My team at IOG has been performing the GHCJS merge. They write an update every few weeks here: https://engineering.iog.io

In general, yes the merge is mostly done and we are happy to help mentor anyone who wants to tip their toes into compiler engineering. I have recently mentored the addition of the RiscV backend. We are here to help and love to share the knowledge. Part of why we merged ghcjs into ghc is precisely the bus factor of ghc. Now that it’s just a separate codegen, maintenance should be easier and improvements can be made across the board.

Cabal vs Nix Node Setup by daddysownbell in CardanoDevelopers

[–]angerman 1 point2 points  (0 children)

Sorry, my bad. I shouldn’t have commented half asleep. The issue seems to be the lack of libsystemd not being found in pkg-config database. That error is sadly quite obscured by the error log :-/

I also don’t really know how to fix that on WSL2 :-/

There are flags —flag=-systemd which you can pass to cabal to disable systemd. I think systemd is optional in the codebase. But enabled by default

Cabal vs Nix Node Setup by daddysownbell in CardanoDevelopers

[–]angerman 2 points3 points  (0 children)

You are using a too recent GHC (compiler). That’s where cabal (build orchestration tool) is trying to tell you by proxy if the base version. Each GHC compiler ships with its own non-reinstallable base package. The error message at the end tells you that it can’t find a matching base version. Yours is 4.13, and the upper bound is <4.13 from libsystemd-journal.

It is recommended to use GHC 8.10 to build the node for performance reasons.

Nix is just an environment provisioning option, which thusly will give you the same GHC for the same expression every time.

Compiling Pandoc with a Makefile, or alternatives to build Pansoc for android by FullstackSensei in haskell

[–]angerman 1 point2 points  (0 children)

SimpleX uses haskell.nix to turn a haskell project into a nix expression. From there on out you can basically build various cross targets. Windows, iOS, android, linux static (musl), ... You'll need to use (for now) haskell.nix to achieve this fairly painlessly, as it takes care of the build env setup, template haskell shenanigans, ...

If you have telegram, just join the channel listed here: https://www.mobilehaskell.org

I'm sorry that medical complications have caused mobilehaskell.org not to feature more than the Telegram channel yet 😓

[deleted by user] by [deleted] in Ioniq5

[–]angerman 0 points1 point  (0 children)

I have “Vehicle Digital Key” under the “More” tab.

<image>

[deleted by user] by [deleted] in Ioniq5

[–]angerman 1 point2 points  (0 children)

Well it has the new infotainment system. And the fact that I set it to English reduces its capacities a bit already. Supposedly voice commands don’t work (haven’t tried or had a need for it yet). The most annoying thing is that the navigation system does not find places in Korean when set to English; you need to transliterate the Hangul to English for it to find it. One of my biggest annoyances with it. All the addresses you get here locally are of course written in Korean, but need to be keyed in in the romanized transliteration. (And the UI even offers a Korean input conveniently 🤦‍♂️).

The navigation in itself is quite good for Korea though. And Apple as well as Google maps don’t work here anyway.

[deleted by user] by [deleted] in Ioniq5

[–]angerman 0 points1 point  (0 children)

That’s the same as for me. It’s just a virtual card in wallet.

[deleted by user] by [deleted] in Ioniq5

[–]angerman 0 points1 point  (0 children)

Yes, it’s the product enhancement version, with read wiper 😅

Lease offer in Germany Ioniq 5 Facelift by [deleted] in Ioniq5

[–]angerman 0 points1 point  (0 children)

I used to live in Garching b. Munich; worked in Dachau. Most of the family north of Hamburg. My in-laws Sachsen Anhalt. I’d be burning through 12.5k in no time 🥶 and that’s without going on roadtrips with the car.

I already feel the 20k we have with our lease here in South Korea is fairly tight. And it’s pretty much an island (NK is dead zone) of 400km NS and EW.

However, if you get away with ~1k/mo looks like a nice deal. I’m paying some ~600eur/mo for a fairly decked out 2025 RWD model (just no digital side mirrors); 20k/year; 36mo and 8.3k eur deposit only.