Newest at the top
| 2026-05-30 19:06:00 +0000 | poscat | (~poscat@user/poscat) (Remote host closed the connection) |
| 2026-05-30 19:04:28 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 18:58:17 +0000 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
| 2026-05-30 18:57:17 +0000 | Guest53 | (~Guest43@p200300dcb74099005424e44ccbbb78bd.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 2026-05-30 18:53:44 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 253 seconds) |
| 2026-05-30 18:48:57 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 18:38:14 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-05-30 18:33:13 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 18:31:28 +0000 | <mauke> | :-) |
| 2026-05-30 18:31:01 +0000 | <monochrom> | That's a Haskell solution. >:) |
| 2026-05-30 18:30:51 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2026-05-30 18:30:01 +0000 | <mauke> | and two subprocesses |
| 2026-05-30 18:29:52 +0000 | <mauke> | 4. pipe |
| 2026-05-30 18:29:23 +0000 | <monochrom> | Right, but my sentence is after students have seen both blocking and unblocked read, but not select() or async I/O yet. It's to motivate either. |
| 2026-05-30 18:27:48 +0000 | <mauke> | monochrom: 3. O_ASYNC |
| 2026-05-30 18:27:05 +0000 | driib3180 | (~driib@vmi931078.contaboserver.net) driib |
| 2026-05-30 18:21:54 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-05-30 18:19:38 +0000 | driib3180 | (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
| 2026-05-30 18:19:26 +0000 | <monochrom> | "You have two FDs you are waiting data from. What can you do? 1. Blocking read --- you're missing out on the other one. 2. Busying polling --- are you coding or are you frying eggs?!" |
| 2026-05-30 18:17:54 +0000 | <mauke> | tcsetattr |
| 2026-05-30 18:17:39 +0000 | <monochrom> | Oh by the time I teach select(), I'll bring up cooking literally. :) |
| 2026-05-30 18:17:10 +0000 | <monochrom> | heh |
| 2026-05-30 18:17:10 +0000 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
| 2026-05-30 18:17:01 +0000 | <int-e> | monochrom: if you're not inspecting the kernel command line (or UEFI variables?), are you even cooking? |
| 2026-05-30 18:16:35 +0000 | <mauke> | W=all o=prog O=2 gcc prog.c |
| 2026-05-30 18:15:57 +0000 | <monochrom> | Another way to say it is if you are dead set to over-engineer anyway, go big or go home. Don't even just do env vars. |
| 2026-05-30 18:15:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 18:13:19 +0000 | <monochrom> | At which point you realize that you don't want a dedicated envvar library. What you want is take one of those cmdline parsers and extend it to cover envvars. To a large extent cmdline parsers have already 99% of the code you need. They're just missing one single line of code that calls lookupEnv. |
| 2026-05-30 18:12:07 +0000 | <int-e> | monochrom: so of course you told them that there's no place like $HOME |
| 2026-05-30 18:11:59 +0000 | <monochrom> | I answered that if you're writing a program you would like to let user override defaults and/or enable extra features. There are 3 ways you can support this, and if you want to be nice you support all 3. Config file, cmdline options, envvars. |
| 2026-05-30 18:11:38 +0000 | <mauke> | there are only command-line arguments (and the other command-line arguments) |
| 2026-05-30 18:11:17 +0000 | <mauke> | environment variables are a conspiracy |
| 2026-05-30 18:10:28 +0000 | <monochrom> | Just yesterday a student asked what are the use cases of environment variables. (I'm teaching a Unix course.) |
| 2026-05-30 18:10:01 +0000 | olivial | (~benjaminl@user/benjaminl) benjaminl |
| 2026-05-30 18:09:44 +0000 | olivial | (~benjaminl@user/benjaminl) (Read error: Connection reset by peer) |
| 2026-05-30 18:06:10 +0000 | <monochrom> | But then my own library would be like 5 lines. This is because IO is an Applicative so there is very little I have to add. |
| 2026-05-30 18:06:10 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-05-30 18:05:17 +0000 | <monochrom> | I could agree if we s/those libraries/my own library/ . |
| 2026-05-30 18:03:25 +0000 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
| 2026-05-30 18:03:22 +0000 | bggd | (~bgg@user/bggd) (Remote host closed the connection) |
| 2026-05-30 18:01:53 +0000 | <geekosaur> | if they're sensitive they don't belong in the environment: ps can dump envars |
| 2026-05-30 18:01:42 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 18:01:06 +0000 | <mauke> | at that point I'd question the use of the environment |
| 2026-05-30 17:59:36 +0000 | <Guest53> | I'm not convinced. Manually parsing everything might be okay for two variables but not for 20 (at least in my opinion). If you add default values, redacting sensitive variables etc. you will just reimplement those libraries. |
| 2026-05-30 17:51:21 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2026-05-30 17:46:39 +0000 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-05-30 17:45:53 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-05-30 17:42:08 +0000 | <monochrom> | This is why I began with recommending using no library. This domain is exactly where the risk of over-engineering larger-infrastructure-than-content is high. And you have just found a data point that proves it. |
| 2026-05-30 17:42:08 +0000 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 251 seconds) |
| 2026-05-30 17:40:36 +0000 | <monochrom> | even readIO while we're scaremongering against Maybe. |