Logs: liberachat/#haskell
| 2021-07-14 16:17:38 | <EvanR> | oof |
| 2021-07-14 16:17:39 | <davean> | The concept of the cache giving wrong results generally falls under the term "memory ordering" |
| 2021-07-14 16:18:12 | <davean> | https://en.wikipedia.org/wiki/Memory_ordering |
| 2021-07-14 16:18:19 | <davean> | but also in multicore consistency, etc |
| 2021-07-14 16:18:31 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 2021-07-14 16:18:32 | → | cheater1__ joins (~Username@user/cheater) |
| 2021-07-14 16:18:34 | cheater1__ | is now known as cheater |
| 2021-07-14 16:18:50 | <davean> | If you use the CPU cache correctly you get correct results - if you use HTTP caching correctly you get correct result |
| 2021-07-14 16:19:00 | <davean> | theres no mysteries here - other than what the x86 cache actually does! |
| 2021-07-14 16:19:05 | <davean> | Its a bit unknown on x86 |
| 2021-07-14 16:19:15 | <davean> | ARM for example actually has something of a specification |
| 2021-07-14 16:19:44 | <davean> | Mind you that wikipedia article focuses more on the instruction pipeline |
| 2021-07-14 16:20:13 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 2021-07-14 16:20:30 | <davean> | Both HTTP and the CPU cache directly tie back to https://en.wikipedia.org/wiki/Consistency_model |
| 2021-07-14 16:20:53 | <EvanR> | can we has a type system that guarantees correct use of cache |
| 2021-07-14 16:21:08 | <davean> | uh ... |
| 2021-07-14 16:21:16 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-1e76-24e-f48d-1c7a.fixed6.kpn.net) (Ping timeout: 268 seconds) |
| 2021-07-14 16:21:24 | <davean> | Not for x86 |
| 2021-07-14 16:21:35 | <davean> | because we don't know the semantics for x86 so we'd have nothing to type against |
| 2021-07-14 16:21:39 | <davean> | for ARM or something? |
| 2021-07-14 16:21:50 | × | anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving) |
| 2021-07-14 16:22:01 | <davean> | sure, but you'd not like the type system, because it would dictact what came before and after for variable distances. |
| 2021-07-14 16:22:19 | <davean> | Your types would be like some form of hoare triples I guess ... |
| 2021-07-14 16:22:31 | <EvanR> | cool |
| 2021-07-14 16:22:41 | <davean> | The compiler deals with this for you though |
| 2021-07-14 16:22:43 | <davean> | thats its job |
| 2021-07-14 16:22:47 | <Profpatsch> | [exa]: reductio ad absurdum |
| 2021-07-14 16:22:58 | <davean> | its job is to be a compitent CPU user, like yours is to be a compitent cabal user |
| 2021-07-14 16:23:02 | <EvanR> | it could maybe be a type system for use in a compiler |
| 2021-07-14 16:23:26 | <davean> | EvanR: I think this is a better place for something like a model checker |
| 2021-07-14 16:23:54 | <davean> | which, wait, is what we actually use currently |
| 2021-07-14 16:23:58 | <davean> | so I guess thats a boring statement |
| 2021-07-14 16:25:46 | <davean> | Well I'm kinda getting bored of giving a "how computers work - the basics" lecture, so I think I'll wander away |
| 2021-07-14 16:26:53 | <davean> | I will say though if you want to do any performance optimisation in your future, I'd spend a few hours reading about this stuff, it only takes a few hours |
| 2021-07-14 16:27:17 | <davean> | Computers are actually really simple |
| 2021-07-14 16:27:32 | <davean> | You could learn enough to build one in a day |
| 2021-07-14 16:27:58 | <hololeap> | what would be the recommended way to bind a python library to a haskell interface? |
| 2021-07-14 16:28:22 | <lechner> | Hi, is yesod still a suitable foundation for a website these days? Thanks! |
| 2021-07-14 16:28:30 | <EvanR> | all that aside, would be cool if websites showed the latest version, according to timestamps xD |
| 2021-07-14 16:28:51 | × | jneira[m] quits (~jneira@214.red-176-83-92.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 2021-07-14 16:29:11 | <EvanR> | sorry for boring! |
| 2021-07-14 16:29:24 | <davean> | EvanR: its cool, and they CAN |
| 2021-07-14 16:29:27 | <davean> | EvanR: if they don't, its by choice |
| 2021-07-14 16:29:42 | × | Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds) |
| 2021-07-14 16:30:30 | <davean> | (For a trivial version: You put an ETag on the root page, you stick your resource at hashs, and set the hashes to cache forever since they're content addressed) |
| 2021-07-14 16:31:11 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 2021-07-14 16:32:28 | <davean> | EvanR: the HTTP cache semantics are layed out in the RFC, and seperate CDN style caches from user's browser caches, and CDNs can do semi-consistent invalidations |
| 2021-07-14 16:32:35 | <davean> | so this is ENTIRELY on the website in question |
| 2021-07-14 16:34:03 | <davean> | EvanR: I you ever run a website you care to actually get performant and correct, I'd be happy to talk about all the various options with you |
| 2021-07-14 16:34:15 | → | hexfive joins (~eric@50.35.83.177) |
| 2021-07-14 16:34:34 | <davean> | I'll point out a site like reddit doesn't even SERVE fresh content. |
| 2021-07-14 16:34:39 | <davean> | never mind have the cache |
| 2021-07-14 16:34:42 | <davean> | its just too expensive |
| 2021-07-14 16:34:53 | <davean> | the content is updated by background tasks |
| 2021-07-14 16:35:02 | → | jneira[m] joins (~jneira@214.red-176-83-92.dynamicip.rima-tde.net) |
| 2021-07-14 16:35:56 | <davean> | EvanR: Oh, you've probable seen the cleaner version of the above scheme - images like /.../img.jpg?12df22f2432fc22 |
| 2021-07-14 16:36:13 | <davean> | That last piece after the question mark is a cache buster, which has the hash of the content |
| 2021-07-14 16:36:38 | <davean> | so you force your way through the cache whenever the content updates, but keep the nice base names |
| 2021-07-14 16:36:41 | <EvanR> | the poor timestamps, so unappreciated xD |
| 2021-07-14 16:37:02 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 2021-07-14 16:37:14 | <EvanR> | anyway! |
| 2021-07-14 16:41:24 | × | Atum_ quits (IRC@user/atum/x-2392232) (Ping timeout: 255 seconds) |
| 2021-07-14 16:41:40 | → | Gurkenglas_ joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 2021-07-14 16:43:10 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 2021-07-14 16:43:22 | → | cheater1__ joins (~Username@user/cheater) |
| 2021-07-14 16:43:39 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds) |
| 2021-07-14 16:43:40 | × | cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds) |
| 2021-07-14 16:43:40 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 2021-07-14 16:43:40 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 2021-07-14 16:43:45 | cheater1__ | is now known as cheater |
| 2021-07-14 16:43:48 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 2021-07-14 16:44:41 | × | jolly quits (~jolly@208.180.97.158) (Quit: Connection closed) |
| 2021-07-14 16:44:42 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds) |
| 2021-07-14 16:45:00 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 2021-07-14 16:46:42 | × | s_ quits (~s@50.34.81.185) (Quit: Leaving) |
| 2021-07-14 16:47:47 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-07-14 16:48:25 | × | qbt quits (~edun@user/edun) (Quit: WeeChat 3.2) |
| 2021-07-14 16:48:51 | × | jneira[m] quits (~jneira@214.red-176-83-92.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 2021-07-14 16:49:44 | × | chele quits (~chele@user/chele) (Read error: Connection reset by peer) |
| 2021-07-14 16:50:19 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds) |
| 2021-07-14 16:52:21 | → | qbt joins (~edun@user/edun) |
| 2021-07-14 16:53:52 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 2021-07-14 16:53:56 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 2021-07-14 16:58:06 | → | chomwitt joins (~Pitsikoko@ppp-94-67-202-202.home.otenet.gr) |
| 2021-07-14 17:03:21 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 2021-07-14 17:03:29 | → | arkanoid joins (~arkanoid@2-238-151-49.ip244.fastwebnet.it) |
| 2021-07-14 17:03:35 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 2021-07-14 17:03:44 | <arkanoid> | hello |
| 2021-07-14 17:03:49 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 2021-07-14 17:07:27 | <arkanoid> | I'm not an haskell programmer, just a newcomer to FP that's reading book about category theory for programmers. The book give a lot of examples and talks about haskell, but there's a phrase that just triggered my curiosity: it says that Haskell standard library comes with proofs of correctness. Is that true? |
| 2021-07-14 17:10:53 | ← | Profpatsch parts (~Profpatsc@static.88-198-193-255.clients.your-server.de) (WeeChat 3.1) |
| 2021-07-14 17:11:29 | <hololeap> | arkanoid: is it the Milewski one? |
| 2021-07-14 17:11:50 | <monochrom> | The answer is no. |
| 2021-07-14 17:12:03 | <davean> | Uh, theres a liquid haskell covered base I think? Maybe? |
| 2021-07-14 17:12:08 | <davean> | Certainly not the standard library! |
| 2021-07-14 17:12:27 | <davean> | https://hackage.haskell.org/package/liquid-base I think? |
| 2021-07-14 17:12:36 | <davean> | I've certainly never looked into it |
| 2021-07-14 17:14:19 | → | Atum_ joins (IRC@user/atum/x-2392232) |
| 2021-07-14 17:15:05 | → | Pickchea joins (~private@user/pickchea) |
| 2021-07-14 17:15:20 | <sm> | lechner: certainly |
All times are in UTC.