about summary refs log tree commit diff
path: root/users
AgeCommit message (Collapse)AuthorFilesLines
2024-06-03 r/8213 fix(tazjin/emacs): fix tab-width & fill-column defaultsVincent Ambo1-0/+3
I keep setting these manually whenever they annoy me too much, but why? Change-Id: I3a12dee51fd567a5f997005b277f099254e7f6d8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11748 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su>
2024-06-03 r/8209 feat(users/Profpatsch/whatcd-resolver): show album yearProfpatsch1-0/+2
Change-Id: I1ec1b22c83e078f31e56e13c63a92d3a4560e46d Reviewed-on: https://cl.tvl.fyi/c/depot/+/11746 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8208 fix(users/Profpatsch/whatcd-resolver): fix torrent linkProfpatsch2-2/+2
The redacted URL needs the torrent group id to go to the album page, not the torrent id. Also open the external link in a separate tab. Change-Id: Ie6d73cb02137855bb388859d2800968cd56ece49 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11745 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8207 feat(users/Profpatsch/whatcd-resolver): add redacted torrent linkProfpatsch2-7/+9
Change-Id: I9e2cd1935a67260cc7e4b72b247c01495e130949 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11744 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8206 fix(users/Profpatsch/whatcd-resolver): db_id -> redacted_idProfpatsch2-10/+10
We’re using the redacted id, not the database id. This is more stable. Change-Id: I4d24e5bc6cc469d811cb1402a83157359576ef77 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11683 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-06-03 r/8205 fix(users/Profpatsch/whatcd-resolver): add page chrome to artistProfpatsch1-31/+41
Change-Id: Id13553c450603b04c6bba0085d7f3246fe0d54af Reviewed-on: https://cl.tvl.fyi/c/depot/+/11682 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8204 fix(users/Profpatsch/whatcd-resolver): speed up table queryProfpatsch1-27/+23
This took a while to figure out, but essentially sorting a thing with one million queries takes a long time, as compared to doing it on a small subset of things and then joining against the final ordering. The generated column helps, too. Change-Id: I1bf283e2be060748eebda92576e3d062c51a6777 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11681 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8203 chore(users/Profpatsch/openlab-tools): warnings & formatProfpatsch1-28/+28
Change-Id: Iab582c4cd9dc623449940920d9ac4864b515b5c8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11680 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8202 chore(users/Profpatsch/.hlint.yaml): ignore Use maybeProfpatsch1-0/+2
Change-Id: I302b4b66b0c3a3646fb84afd0140bf0ef92e541d Reviewed-on: https://cl.tvl.fyi/c/depot/+/11679 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8201 fix(users/Profpatsch/whatcd-resolver): store seeding_weightProfpatsch1-3/+4
Generated columns!! This reduces the query time for distinct on somewhat! Change-Id: Ic004d327b719a9f44a224ec87709992ce3d8f160 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11676 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8200 feat(users/Profpatsch/whatcd-resolver): add artist albumsProfpatsch3-18/+67
Simple artist album page that only shows albums the artist was involved with. Change-Id: Icff34afc6d1b39b6fb17765c1b3ea500dd4b4d95 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11675 Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8199 fix(users/Profpatsch/whatcd-resolver): index seeding_weight calcProfpatsch1-12/+24
The seeding weight would slow down the query quite a bit, so let’s move it into a procedure and add an index onto the torrents table that caches the result. Baba’s first pl/SQL function! Change-Id: I3bc6919b115c02b9c9aa74702fac0a8bbc66d2c1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11674 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8198 fix(users/Profpatsch/whatcd-resolver): fix transmission sessionProfpatsch3-11/+24
The logic around transmission session handling was f*cked, this fixes that. We use an IORef instead of an MVar, since we want to unconditionally write the new value. Even if multiple requests race, I *hope* that transmission returns the same session id, otherwise we might get a request loop. But it should be fine. (The semantics is not nicely documented in the RPC docs.) Additionally, log the session ids in the requests. Change-Id: Id7d33f8cb74cb349e502331cad5eb5abe8a624cd Reviewed-on: https://cl.tvl.fyi/c/depot/+/11673 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-06-03 r/8197 feat(users/Profpatsch/whatcd-resolver): add status to http traceProfpatsch1-9/+18
Change-Id: Ic83a79c18129dd195e808d1c78758dbf0be8ff76 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11672 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8196 fix(users/Profpatsch/whatcd-resolver): remove trace debuggingProfpatsch1-7/+0
Accidentally left that in. Change-Id: Id744ea0f2281e0e2a0fe3324efa3f4c13b6ce9fc Reviewed-on: https://cl.tvl.fyi/c/depot/+/11671 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8195 feat(users/Profpatsch/whatcd-resolver): display all artistsProfpatsch2-8/+29
apparently the `torrent_group` json only contains one artist, while the torrent itself contains a list of them. This is important, because we need the artist id and the `torrent_group` does not provide it, only the torrent one. Change-Id: I3db45f454f14e89ea8c8dafba2065ecd55f5bcda Reviewed-on: https://cl.tvl.fyi/c/depot/+/11670 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8194 feat(users/Profpatsch/whatcd-resolver): add query args to logProfpatsch1-1/+2
Change-Id: I162a438bc9d072adf952295c93839b3050bfff40 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11669 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8193 chore(users/Profpatsch/shell.nix): comment out broken haskell pkgProfpatsch1-1/+1
Change-Id: I73286424ee07e22b156096bfb582b22daf05c819 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11661 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-06-03 r/8192 fix(users/Profpatsch/whatcd-resolver): show query error as htmlProfpatsch2-38/+60
We want the user thingy to see which error happened; it also gets logged in the traces as before. There’s another function which we should replace as well at one point. Change-Id: I3d49edccd0e2088a45ac0138af9536b40dfa6848 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11660 Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-14 r/8146 fix(users/flokli/archeology): clickhose -> clickhouseedef1-4/+4
Change-Id: I9709aa2b663df5d3fd95d48e463e9b087e4d4ce1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11629 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
2024-05-13 r/8138 fix(users/Profpatsch/MonadPostgres): take old formatter processProfpatsch1-4/+29
The pool library would always take out the most recently used perl resource again, and since that is the one that we just spawned, we’d be back at square one. Instead, we try to find an older one (or up to 200ms old) and use that instead, because that should be the one with the fastest response time. Okay, that was enough bullshit lol. Change-Id: I6b999e682d02ab03206a9d1b707edf16daa04a0d Reviewed-on: https://cl.tvl.fyi/c/depot/+/11657 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8137 feat(users/Profpatsch/MyPrelude): add ArgProfpatsch3-0/+36
Change-Id: I218562c924489ff9cba783dc88ecb8e777c8aac3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11656 Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8136 feat(users/Profpatsch/MonadPostgres): time formatting with eventProfpatsch1-3/+40
Instead of opening a separate span, we just add events for start and end of formatting. Change-Id: I26f6792dfdcd23c01cff415fa0f436d6a22d93fe Reviewed-on: https://cl.tvl.fyi/c/depot/+/11655 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8135 feat(users/Profpatsch/whatcd-resolver): use PgFormatPoolProfpatsch3-50/+50
It does chip of the init overhead of like 50–100ms, even though the formatting still takes quite some time (up to 200ms for more complex expressions). Maybe we need some simplistic formatter in the future that just splits on parens? It’s not an easy problem … Change-Id: I2ce951e6b3c2dc56294b1bdab913480727b50f0b Reviewed-on: https://cl.tvl.fyi/c/depot/+/11654 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8134 feat(users/Profpatsch/MonadPostgres): add PgFormatPoolProfpatsch1-19/+127
Change-Id: Id65ee6184ef536fe6a46637005bea903b37f6ffd Reviewed-on: https://cl.tvl.fyi/c/depot/+/11653 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8133 fix(users/Profpatsch/MonadPostgres): make sure no rc file is usedProfpatsch1-1/+3
Change-Id: Ia84de16fd41d00d81efd963f4ad42e069cf34ed5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11652 Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8132 refactor(users/Profpatsch/MonadPostgres): rephrase maybe matchProfpatsch1-4/+3
wtf was I thinking Change-Id: Ia621032d90d7a9363dfe2bfbed122c67c90468f7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11651 Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8131 feat(users/Profpatsch/whatcd-resolver): allow listing only downloadProfpatsch2-6/+9
When showing the best torrents table, we want to be able to filter for “only downloaded”. Change-Id: Ibfe9212f3d422d305f858fbef023ee985c1183d6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11650 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8130 refactor(users/Profpatsch/whatcd-resolver): artistPage hander fnProfpatsch1-1/+8
Change-Id: Ia0f5d358e9be99d39117ba13fce528f418daf416 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11649 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8129 feat(users/Profpatsch/whatcd-resolver): trivial artist pageProfpatsch1-1/+16
Change-Id: I2c0dd1a3f300b46fec8b38c310dc08ea2f5f2492 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11648 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8128 fix(users/Profpatsch/whatcd-resolver): only prepend log pathProfpatsch1-2/+2
Otherwise we break routing. Change-Id: I7555a75fcd589a003c81d86e8e8242fcd0da3594 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11647 Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8127 refactor(users/Profpatsch/whatcd-resolver): inline hhProfpatsch1-17/+15
Change-Id: I70ea1d7cb17e7ac7bf63be86b79d2f0b79586912 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11646 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8126 refactor(users/Profpatsch/whatcd-resolver): inline hProfpatsch1-3/+2
Change-Id: If14bc2d72b28a3022067f42b63596a745ad891d9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11645 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8125 refactor(users/Profpatsch/whatcd-resolver): fix respond warningProfpatsch1-3/+3
Change-Id: Ie833b611d1ad413b03465caa38e4ee2c1deb9a37 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11644 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8124 refactor(users/Profpatsch/whatcd-resolver): remove all debugProfpatsch1-4/+1
Change-Id: I6b3d26df05d2370ea86ecbacfe21508ebfe89fa6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11643 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8123 fix(users/Profpatsch/whatcd-resolver): comment out jsonldProfpatsch1-8/+6
Change-Id: I301b4175fe3741f688daab91537e7a859b353686 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11642 Reviewed-by: Profpatsch <mail@profpatsch.de> Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8122 refactor(users/Profpatsch/whatcd-resolver): handler response structProfpatsch1-12/+18
Change-Id: I3224ccc5ccaea9eb26c60a65f048ca64024a7b9b Reviewed-on: https://cl.tvl.fyi/c/depot/+/11641 Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8121 fix(users/Profpatsch/MonadPostgres): fix query logging msgProfpatsch1-3/+3
Change-Id: Ic499a59002fa4860067589ff2d187795e6013066 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11640 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8120 fix(users/Profpatsch/whatcd-resolver): always use good html rendererProfpatsch1-6/+1
The pretty renderer would add extra newlines, making the html different. Change-Id: I28496cbec61d4c9c63f657a499a1990f891949ee Reviewed-on: https://cl.tvl.fyi/c/depot/+/11639 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de>
2024-05-13 r/8119 fix(users/Profpatsch/whatcd-resolver): prepend / for route loggingProfpatsch1-2/+2
Change-Id: I46e77540cb47ae42dc44ec950a3ad97cb408974c Reviewed-on: https://cl.tvl.fyi/c/depot/+/11638 Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2024-05-13 r/8118 fix(users/Profpatsch/whatcd-resolver): use threaded runtime (again?)Profpatsch1-0/+4
Might have made a mistake when refactoring the cabal file. Change-Id: Ic45ac9bf0272784ef77a2dfcc59ce2dbd421113c Reviewed-on: https://cl.tvl.fyi/c/depot/+/11637 Autosubmit: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2024-05-12 r/8116 chore(users/flokli/kb/dilemma): bump qmk to latest releasewtFlorian Klink1-2/+2
Change-Id: Ia0b4784384b0f1dda0f849f14e5619274dec1dd3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11631 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
2024-05-11 r/8098 fix(users/flokli/keyboards/*): fix flash commandFlorian Klink2-16/+20
`qmk flash` disappeared from the `qmk` command itself. See `qmk_cli/script_qmk.py`: ``` This program can be run from anywhere, with or without a qmk_firmware repository. If a qmk_firmware repository can be located we will use that to augment our available subcommands. ``` By pointing QMK_HOME to our firmware sources, we can make it re-appear. Change-Id: I5348fff546e864773063fb1f712bf2abd198972e Reviewed-on: https://cl.tvl.fyi/c/depot/+/11627 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de> Autosubmit: flokli <flokli@flokli.de>
2024-05-11 r/8097 feat(users/amjoseph): initAdam Joseph2-0/+25
Change-Id: Icfc73faa951b2ad041f2cecdae0614a3b6b82426 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11625 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: Adam Joseph <adam@westernsemico.com>
2024-05-08 r/8091 feat(tazjin/nixos): install `when` everywhereVincent Ambo1-0/+1
Change-Id: I49f201250cbcbba98e0641c2868e1cb2230d6b3b Reviewed-on: https://cl.tvl.fyi/c/depot/+/11599 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Autosubmit: tazjin <tazjin@tvl.su>
2024-04-30 r/8042 refactor(nix-compat/wire): drop primitive functionsedef1-3/+5
These may as well be inlined, and hardly need tests, since they just alias AsyncReadExt::read_u64_le / AsyncWriteExt::write_u64_le. Boolean reading is worth making explicit, since callers may differ on how they want to handle values other than 0 and 1. Boolean writing simplifies to `.write_u64_le(x as u64)`, which is also fine to inline. Change-Id: Ief9722fe886688693feb924ff0306b5bc68dd7a2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11549 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
2024-04-28 r/8025 chore(3p/sources): Bump channels & overlayssterni2-4/+6
- //tvix: address new clippy lints - //users/tazjin: Satisfy gonic module's new need for a playlist folder. - //users/aspen/games: adjust for changed location of df's default init.txt and d_init.txt. Change-Id: I00a2adb506ae866206fb6f88c39c9a6af320380f Reviewed-on: https://cl.tvl.fyi/c/depot/+/11509 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: aspen <root@gws.fyi>
2024-04-28 r/8023 refactor(3p): use josh from nixpkgssterni1-1/+1
The change we need has been released and propagated to nixos channels. Change-Id: Ib10a1d42d7ef6deaf5665a13b72ece345e83d7dc Reviewed-on: https://cl.tvl.fyi/c/depot/+/11457 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2024-04-27 r/8021 feat(sterni/machines/ingeborg): switch to quasselsterni3-1/+19
Change-Id: I2970f47e22e6984db49d455b31903814fa94ec76 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11529 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2024-04-23 r/7999 fix(users/picnoir/tvix-daemon): gitignore target dir, use cleaned srcFlorian Klink2-2/+4
This prevents the nix build copying the target/ dir into the store whenever this is built through Nix. Change-Id: I397228fd8e2e3265ed87d3400fe927bc505da090 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11496 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>