GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Conversation

Notices

  1. Embed this notice
    CMD (ceo_of_monoeye_dating@tsundere.love)'s status on Tuesday, 26-May-2026 14:09:49 JST CMD CMD
    • Junes
    • DulceKennedy
    • pistolero
    • SilverDeth
    • Slim Jim
    • Crayon Eater
    @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy :haze_smug: are you sure that's how you escape?
    In conversation about 5 months ago from tsundere.love permalink
    • Nietzschean Ekko Enjoyer repeated this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 14:09:49 JST pistolero pistolero
      in reply to
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @ceo_of_monoeye_dating @CrayonEater @ElDeadKennedy @Junes @SilverDeth @j I'm not in that thread. I'm just in the quote-post. Quote-posts suck in part because they fuck up threads.
      quoteposting.png
      In conversation about 5 months ago permalink
      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 14:54:17 JST pistolero pistolero
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @ceo_of_monoeye_dating @CrayonEater @ElDeadKennedy @Junes @SilverDeth @j Try it again.
      In conversation about 5 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 15:16:31 JST pistolero pistolero
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      https://git.freespeechextremist.com/gitweb/?p=fse;a=commitdiff;h=d53e03428ca83d75512f2caae8969b0e7e9d726f
      whenimhappy.jpg
      In conversation about 5 months ago permalink

      Attachments


      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 15:17:38 JST pistolero pistolero
      in reply to
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @j @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating
      garykilldallsfacewhen.jpg
      In conversation about 5 months ago permalink

      Attachments


      1. https://media.freespeechextremist.com/rvl/full/c18ff60bafb2d48ee96dab1de183375db1bea56637a25b1ea0508b9bb8991421?name=garykilldallsfacewhen.jpg
      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Tuesday, 26-May-2026 15:17:39 JST Slim Jim Slim Jim
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Crayon Eater
      @p @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating
      #school #work #coaching #teaching #lecturing all one in the same. • [7633056580346318093].mp4
      In conversation about 5 months ago permalink

      Attachments


      pistolero and Chinese man ? #nobot repeated this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Tuesday, 26-May-2026 15:27:34 JST Phantasm Phantasm
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater

      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating

      Quote-posts suck in part because they fuck up threads.

      Quote posts keeping thread context suck even more, because the thread becomes unreadable with two or more of them.

      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 15:28:39 JST pistolero pistolero
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > Quote posts keeping thread context suck even more

      https://git.freespeechextremist.com/gitweb/?p=fse;a=commitdiff;h=d53e03428ca83d75512f2caae8969b0e7e9d726f
      In conversation about 5 months ago permalink

      Attachments


      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Tuesday, 26-May-2026 15:58:09 JST Phantasm Phantasm
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater

      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating

      That turns them into a reply, sure, but the problem is the same. Once there's a quote post with the same context, the thread usually goes two separate ways making it hard to read through, because there are now two diverging topics. The flatpak v2 systemd thread from a couple days ago is a good example of that I think. There's like three akkoma quote posts in the thread that all keep the same context, including a broken thread thanks to signed fetch.

      https://hachyderm.io/users/jorge/statuses/116607961190448307 (https://fluffytail.org/notice/B6Z1k3LoKVhutjVdj6)

      I hate Elixir so fucking much.

      Yet you really like Ruby. The two aren't that dissimilar. Also there's a third Misskey representation :)

      In conversation about 5 months ago permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        Jorge Castro (@jorge@hachyderm.io)
        from Jorge Castro
        Addenum to my @LAS@floss.social talk! I don't think people realized that #flatpak next basically fixes everything. Browsers will use their own sandboxes, steam, password managers, etc. And a new VPN portal. All of the razorburn goes away. All we need to do is gather a bunch of #rust nerds. I would like too amend my statement: "The gamer kids and the rust kids will save Linux, and the ops people will help them succeed."

      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Tuesday, 26-May-2026 16:14:25 JST pistolero pistolero
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > Once there's a quote post with the same context, the thread usually goes two separate ways

      That happens with threads anyway. It's fine.

      As things stand, this is, I believe, an exhaustive list of my options here:

      1. Implement quote-posts and then kill myself.
      2. Kill all quote-posts by rejecting them at the MRF level.
      3. Turn quote-posts into replies.
      4. Hack into all servers that implement quote-posting and remove the code that supports this terrible misfeature, thereby killing this problem at the source.

      I chose option 3. I didn't like options 1 or 2.

      > The flatpak v2 systemd thread from a couple days ago is a good example of that I think.

      I haven't seen it.

      > https://hachyderm.io/users/jorge/statuses/116607961190448307

      hachi derm dot input/output (one of the Individual Eleven) refuses to allow FSE to fetch posts from them.

      > There's like three akkoma quote posts in the thread that all keep the same context, including a broken thread thanks to signed fetch.

      That's Akkoma's problem.

      > Yet you really like Ruby. The two aren't that dissimilar.

      Well, I haven't ever downloaded a release of Ruby and found a .DS_Store file in it. Programs I wrote for Ruby 1.6 still work. I have never had to update a separate VM in lockstep with updating Ruby.

      "When you mix water and brandy, you ruin two good things." --a guy that thought brandy is good but in any case he is correct about the *principle*

      Elixir is like if you took some of the parts of Ruby and shat them into Erlang and then in places where Ruby was nice, you decided to replace it with whatever Python does. As shitty as Elixir is, it's nowhere near as terrible as Phoenix, which attempts to replace sensible Erlang CSP style with shitty Rails shit that sucks and the unrepentant PHP dipshit DHH only made Rails because he couldn't figure out what to click on to see the Logo Turtle when he got a Mac:germanB:ook :germanB:ro. Every time I trace a bug to a five-clause `when` in the Pleroma source code, I get the urge to figure out who is in charge of Elixir and drive to his house.
      In conversation about 5 months ago permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        Jorge Castro (@jorge@hachyderm.io)
        from Jorge Castro
        Addenum to my @LAS@floss.social talk! I don't think people realized that #flatpak next basically fixes everything. Browsers will use their own sandboxes, steam, password managers, etc. And a new VPN portal. All of the razorburn goes away. All we need to do is gather a bunch of #rust nerds. I would like too amend my statement: "The gamer kids and the rust kids will save Linux, and the ops people will help them succeed."
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 06:45:50 JST pistolero pistolero
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > That's one of the syntax features I quite like

      Until you have to debug and it matters which of the clauses failed.

      > Old man

      I hated Rails when I was an age that people called me young and stupid and now I say Rails sucks and people say I am old. I hope that eventually people will engage with the things I say instead of guessing which reason *besides* the stated one is the reason I say the things I say.
      In conversation about 5 months ago permalink
      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 27-May-2026 06:45:51 JST Phantasm Phantasm
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating

      >I haven't seen it.

      Nothing of value, like usual. Just a bunch of smug posts from corpo plants in the linux space.

      >That's Akkoma's problem.

      Including an FSE problem now. But no hard feeling of course, everybody has their own preferences. I'm not a fan of quote posts being used like on twitter either, the "lmao, look at this idiot" trope.

      >five-clause `when` in the Pleroma source code, I get the urge to figure out who is in charge of Elixir and drive to his house.

      That's one of the syntax features I quite like. It separates the success branch from the error handling below, so they don't mix. Apparently enough people like that feature that Erlang copied it: https://www.erlang.org/doc/system/expressions.html#maybe
      fedi-p-old-man-yells-at-webdevs.png
      In conversation about 5 months ago permalink

      Attachments


      1. https://upload.fluffytail.org/media/64/84/f2/6484f21d81211f71c6f54bcb6c4e5f96433e5d57171255538873b02bf414179d.png?name=fedi-p-old-man-yells-at-webdevs.png
      2. No result found on File_thumbnail lookup.
        Expressions — Erlang System Documentation v29.0
    • Embed this notice
       (mint@ryona.agency)'s status on Wednesday, 27-May-2026 06:46:20 JST  
      in reply to
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @j @p Ah okay, thread context remains. Mostly reasonable workaround.
      Screenshot_20260526_160613.png
      In conversation about 5 months ago permalink

      Attachments


      1. https://ryona.agency/media/b8/6d/a5/b86da5d1ad42d24bc2d9fd44cec99d327d354db861ea45035ea91f8a4a38841f.png?name=Screenshot_20260526_160613.png
      pistolero likes this.
    • Embed this notice
       (mint@ryona.agency)'s status on Wednesday, 27-May-2026 06:46:21 JST  
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @j @Junes @SilverDeth @p @CrayonEater @ElDeadKennedy Nevermind the fact you could include quotepost from a thread in a different thread.

      RT: https://cum.salon/objects/eadcd009-ad9d-4283-a300-fc7562e2e0b5
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 06:46:30 JST pistolero pistolero
      in reply to
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @mint @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @j Not any more!
      In conversation about 5 months ago permalink
      ✙ dcc :pedomustdie: :phear_slackware: likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 08:05:40 JST pistolero pistolero
      in reply to
      • þernia
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @pernia @mint @CrayonEater @ElDeadKennedy @Junes @SilverDeth @j @phnt

      > STOP quoting this.

      :venomsnake2:
      In conversation about 5 months ago permalink
    • Embed this notice
      þernia (pernia@cum.salon)'s status on Wednesday, 27-May-2026 08:05:42 JST þernia þernia
      in reply to
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @mint @j @Junes @phnt @SilverDeth @p @CrayonEater @ElDeadKennedy STOP quoting this. The OG post has to be like 5 years old atp
      In conversation about 5 months ago permalink
      pistolero repeated this.
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Wednesday, 27-May-2026 08:06:14 JST Slim Jim Slim Jim
      in reply to
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Crayon Eater
      @mint @Junes @phnt @SilverDeth @p @CrayonEater @ElDeadKennedy I wish we had this feature.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
       (mint@ryona.agency)'s status on Wednesday, 27-May-2026 08:07:18 JST  
      in reply to
      • þernia
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @pernia @j @Junes @phnt @SilverDeth @p @CrayonEater @ElDeadKennedy Okay I'll quote something else.

      RT: https://cum.salon/objects/b4effa54-e0a2-47e9-9f1e-dc2e1613f294
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
      pistolero repeated this.
    • Embed this notice
      Crayon Eater (crayoneater@kiwifarms.cc)'s status on Wednesday, 27-May-2026 08:08:31 JST Crayon Eater Crayon Eater
      in reply to
      • þernia
      • 
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @mint @j @Junes @pernia @phnt @SilverDeth @p @ElDeadKennedy
      In conversation about 5 months ago permalink

      Attachments


      1. https://kiwifarms.cc/media/e7/12/bb/e712bb2822e8086bf4b3684dee893b3c7ad8c2d6e4e98ac89c434d7578537d94.webp?name=4c79a5bc5c8f8c297dc841acbfccdee65c169b704ad078cd489c152d5456edb4.webp
      pistolero likes this.
    • Embed this notice
      Metalglasses (metalglasses@noauthority.social)'s status on Wednesday, 27-May-2026 08:18:39 JST Metalglasses Metalglasses
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater

      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating what game is this from?

      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 08:20:21 JST pistolero pistolero
      in reply to
      • Junes
      • DulceKennedy
      • Metalglasses
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @Metalglasses @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating Dilbert Unlimited Text Adventure DX [Director's Secret Sex Delivery Edition]
      In conversation about 5 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 08:35:52 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim

      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating when thing I don't might too much although I'm not a huge fan of function overloading, but it reminds me that I really dislike the lack of early return in Elixir, it makes for such horrible code you'd think if was made for forcing hadoken-indentation.

      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 08:39:05 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt

      > I really dislike the lack of early return in Elixir

      Oh, shit, yeah, that drives me up a wall. I forget about it until I need to write a guard clause and I can't.
      In conversation about 5 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 27-May-2026 08:47:01 JST Phantasm Phantasm
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating
      >Until you have to debug and it matters which of the clauses failed.

      In reality you should wrap it all in a tuple for error handling which makes the issue clear, but it is true that it isn't the case in most code people write, including Pleroma

      with {_, true} <- {:check_one, check(var)},
      {_, true} <- {:check_two, check2(var)} do
      process(var)
      else
      {:check_one, e} -> {:error, :check_one, e}
      {:check_two, e} -> {:error, :check_two, e}
      end
      >rails

      I think it is fair to say that Ruby is hot garbage. Especially if you need something that doesn't perform awful.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 08:47:01 JST pistolero pistolero
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > In reality you should

      What people *should* do and what they did do are often different; what the language encourages, etc. But I didn't write this codebase. Here it is and I have to deal with it.

      >> rails
      > I think it is fair to say that Ruby

      Ruby isn't Rails. Ruby is nice. Try using the language without touching Rails. It's enjoyable. You fire up irb, load up a JSON parser, walk down a data structure, toss a few transformations at it. It's nicer than ever touching jq.

      > Especially if you need something that doesn't perform awful.

      Player skill issue.
      In conversation about 5 months ago permalink
    • Embed this notice
      kumicota (kumicota@akkoma.kumicota.moe)'s status on Wednesday, 27-May-2026 08:47:21 JST kumicota kumicota
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @j @Junes @SilverDeth @p @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating

      Now I can join hellthreads without feeling bad about hurting the instance
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      Chinese man ? #nobot (iamal_pharius@poa.st)'s status on Wednesday, 27-May-2026 08:56:39 JST Chinese man ? #nobot Chinese man ? #nobot
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • kumicota
      • Crayon Eater
      if i get my instance banned. its because im a true believer. a true mugichad
      In conversation about 5 months ago permalink

      Attachments


      1. https://i.poastcdn.org/83/13/a6/8313a66058fb70e51daedc4938b9a19e63d7b9057be51700b416074e4a6b2aba.jpg
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 09:04:21 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      void *do_something(thing **p)
      {
      if(!p) return nil;
      /* We have just added an invariant. We can proceed down the line, gradually narrowing the number of cases we need to deal with instead of branching. You can sort of do this in Elixir but it requires you to name all of the intermediate steps. This makes control flow difficult to read. You look at a big Scheme codebase and they end up simulating this construct with call/cc or something. You can't do that in Elixir, though. */
      ...
      return p;
      }
      In conversation about 5 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 27-May-2026 09:04:22 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @lanodan @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating
      >but it reminds me that I really dislike the lack of early return in Elixir

      Yeah, that can be very unintuitive at first. Same with implicit return when you try to log a result of a call the function retuns:
      def func(var) when is_integer(var) do
      var = var + 5
      ret = process_var(var)
      Logger.debug("#{__MODULE__} func/1 returning: #{inspect(ret)}")
      ret
      end
      It's very easy to return the Logger output and then wonder why it doesn't work, especially for someone new that writes something like this:
      var =
      if asdf == true do
      var = process_var(var)
      Logger.debug("#{inspect(var)}")
      else
      nil
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 09:05:03 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @phnt @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating Sadly what might be unintuitive at first becomes "God dammit" when you go back from months of not using Elixir (and using basically any other language), plus also really ugly diffs and merge conflicts.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 09:06:34 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > plus also really ugly diffs

      Yeah, when you have an unchanged main case but you've gotta account for something new and you push everything to the right by one level.
      In conversation about 5 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 27-May-2026 09:07:34 JST Phantasm Phantasm
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @p @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j Or alternatively you can abuse the fact that a failed with clause returns the latest attempted match and generate the error directly in the function called. I don't think I've seen someone do that thankfully, since it is ugly.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 27-May-2026 09:08:24 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim

      @lanodan @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating In general I find Elixir requiring quite a big mindset shift from different languages. Certainly for me coming from C and C++. Similar to what reading Erlang at first was to me. An almost alien language.

      After a while it sort of clicks all in place and you end up liking it, or it doesn't click and at that point it's probably not a language for you.

      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 09:09:59 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > Similar to what reading Erlang at first was to me.

      I think Erlang's somewhat more readable. It's hard to do CSP in C++ but it's hard to *not* do CSP in Erlang.
      In conversation about 5 months ago permalink
    • Embed this notice
      djsumdog (djsumdog@djsumdog.com)'s status on Wednesday, 27-May-2026 09:10:00 JST djsumdog djsumdog
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      Last line return isn't that uncommon though. It's in Ruby and elsewhere. That's probably the least 'gotcha' thing about Elixir.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 09:10:11 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @phnt @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating I don't mean it doesn't click, it does.
      I just hate parts of it, and that one in particular.

      Surely you also have bits of C you also hate even though you've no actual problem using them.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      The Forbidden Dreamer (forbiddendreamer@poa.st)'s status on Wednesday, 27-May-2026 09:15:18 JST The Forbidden Dreamer The Forbidden Dreamer
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      Is he okay?
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 09:16:18 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @djsumdog @lanodan @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Ruby can `return thing if condition`, it's the requirement for deep nesting (of either the branches or the call stack).
      In conversation about 5 months ago permalink
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Wednesday, 27-May-2026 13:02:44 JST Slim Jim Slim Jim
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • kumicota
      • Crayon Eater
      @kumicota @Junes @SilverDeth @p @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating yay!
      It's time... #divinemachinery #breakcore #dreamcore #glitchcore #edit [7623045415528697108].mp4
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 13:04:06 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @djsumdog @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Yeah, with that style of syntax coming from Perl where you can append an if to pretty much everything.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 13:10:37 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @j @phnt I mean, not the postfixed condition but the structure.

      def gcd x, y
      if x < 0 || y < 0; raise ArgumentError, "gcd(#{x},#{y})"; end
      if x == y; return x; end
      if y == 0; return x; end
      if y > x; return gcd(y, x); end
      gcd(x-y, y)
      end

      It's that you can increase invariants as you progress down. You know x-y>=0 because x>y and both are positive by the time you get to the subtraction. You just eliminate case after case as you progress. You replicate that with single-return and you get nesting. (The example is deliberately contrived; it is just that it gives you easy list of conditions.)
      In conversation about 5 months ago permalink
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Wednesday, 27-May-2026 13:11:16 JST Slim Jim Slim Jim
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      @lanodan @Junes @djsumdog @phnt @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating what about forth?
      Cynthia ain’t the one #rugrats #90s #cynthiadoll #nostalgia #fyp [7641322309399170334].mp4
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 13:13:40 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @j @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @phnt It's even easier to do early returns in Forth.

      : gcd ( x y -- n )
      2dup = if drop exit then
      ?dup 0= if exit then
      2dup min -rot max over - gcd ;
      In conversation about 5 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 13:17:32 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @j @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @lanodan @phnt That's off the top of my head in a post on fedi so don't take it too seriously. I'm eyeballin' it. But you could use an immediate word to compile in the `?dup 0= if exit then` and call it `nonzero`.
      In conversation about 5 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 13:19:38 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @j @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @phnt It is a language that manages to be lower-level than C and higher-level than Scheme. It's wonderful. :chuckmoore:
      In conversation about 5 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 13:19:39 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @j @Junes @djsumdog @phnt @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating Will pass that to pete, Forth for me is still just the prompt language of OpenFirmware.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Wednesday, 27-May-2026 13:39:30 JST Slim Jim Slim Jim
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      @lanodan @Junes @djsumdog @phnt @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating forth is really cool
      ascii art tutorial #asciiart #typography #keyboardasmr [7629741029486267681].mp4
      In conversation about 5 months ago permalink

      Attachments


      ✙ dcc :pedomustdie: :phear_slackware:, prettygood, Another Linux Walt Alt and Blurry Moon like this.
    • Embed this notice
      ins0mniak ~Hate Account~ (ins0mniak@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 13:39:36 JST ins0mniak ~Hate Account~ ins0mniak ~Hate Account~
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @j @phnt :go:
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 15:11:35 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @djsumdog @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Yeah, that's why I love early return, makes it incredibly cheap to just toss out edge cases, and a ton of programming is dealing with those.

      The Perl-style thing of if ~everywhere is quite neat too but I don't miss it, it's pretty much just a syntax style.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 15:12:01 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @j @phnt Yeah, my least favorite thing about Perl is the implicit-everything-everywhere facet; I could deal with the syntax if there was less weird shit going on.
      In conversation about 5 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 27-May-2026 15:12:12 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @djsumdog @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Yeah, I've been wanting to learn Forth beyond the very basics for a while but I guess I just love C too much whenever I deal with system-level stuff.

      But well knowing myself it'll probably land into a case where C can be too costy like say writing a bootloader, or wanting an early/trusting-trust assembler/disassembler.
      (I know you gave the assembler example for forth once, and seen it quite few times elsewhere as well)
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 27-May-2026 15:16:21 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @djsumdog @j @phnt Well, Forth is fun, but it's one of those languages where it's not insanely useful until the light bulb goes off. But if you work your way through jonesforth ( https://git.freespeechextremist.com/gitweb/?p=jonesforth;a=summary ) when you have a spare Sunday afternoon or something, you'll lose it. I love the stuff.
      In conversation about 5 months ago permalink

      Attachments


    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Thursday, 28-May-2026 08:28:12 JST pistolero pistolero
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @phnt @CrayonEater @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j :triggered:
      In conversation about 5 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Thursday, 28-May-2026 08:28:13 JST Phantasm Phantasm
      in reply to
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      • Crayon Eater
      @p @j @Junes @SilverDeth @CrayonEater @ElDeadKennedy @ceo_of_monoeye_dating
      >Ruby isn't Rails. Ruby is nice.

      Meant RoR, not Ruby. My bad.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Thursday, 28-May-2026 08:28:36 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating
      >We have just added an invariant. We can proceed down the line, gradually narrowing the number of cases we need to deal with instead of branching. You can sort of do this in Elixir but it requires you to name all of the intermediate steps.

      You do this with a cond clause, no need to name anything. Same thing, slightly different syntax.

      cond do
      is_nil(var) -> do_nil(var)
      is_binary(var) -> do_binary(var)
      var == 5 -> do_five(var)
      true -> do_default(var)
      end
      You don't have to call a function after the match either, you can do the processing right after the match. Put this at the bottom of a function and you have the exact same thing.
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Thursday, 28-May-2026 09:12:22 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @lanodan

      > You do this with a cond clause, no need to name anything.

      You can have giant `if`s but you shouldn't, but you named things in your example. The optimal way to do this, the way Elixir wants you to do it, is to factor it out and use a conditional and unless both clauses are trivial, you make another function; likely, you skip the conditional and you lean on pattern-matching. So you have named the branches `do_binary` and `do_asdf` but you actually do see a lot of things like that in the only Elixir codebase I'm familiar with, and once a dude has three levels of maybe_real_do_uncached_thing (or maybe_drop_authentication_if_oauth_check_ignored or fetch_and_contain_remote_object_from_id or whatever) like, not only is that kind of Railsy but the names are impossible to decipher: they are usually named to fit the conditional so the names make no sense outside the conditional and a lot of them are forced names for intermediate values polluting the module's namespace. It's possible to think this is a reasonable wart, I'm sure, but it's really ugly to me, and I get pretty irritated when the answer to "Why the fuck is this happening to my server?" is delayed because I'm sifting through that shit. (That is to say nothing of the finer points of the differences between `cond`, `when`, `where`, `if`, `case`, etc., and the fact that a nominally *functional* language should have sensible operator precedence.)

      > You don't have to call a function after the match either, you can do the processing right after the match.

      I'm not sure what you mean to convey. I do know how you do those things in this language; I just don't like that the flow of execution is on rails.
      In conversation about 5 months ago permalink
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Thursday, 28-May-2026 09:26:46 JST Slim Jim Slim Jim
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • djsumdog
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      @p @Junes @djsumdog @phnt @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating this is fun too
      #foryour [7634185997323947294].mp4
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      Slim Jim (j@annihilation.social)'s status on Saturday, 30-May-2026 06:40:41 JST Slim Jim Slim Jim
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      @p @Junes @phnt @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating
      someone get help #fyp #trend #cats #stinky [7642090815715560726].mp4
      In conversation about 5 months ago permalink

      Attachments


      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Saturday, 30-May-2026 06:41:36 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @j @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @lanodan @phnt This fuckin' cat over here, he is sleeping under the fridge.
      In conversation about 5 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Sunday, 31-May-2026 02:28:28 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @lanodan

      > I think that's a fair replacement for early return.

      I mean, I think it's a mess. Especially in a lived-in codebase, you get buckets of this stuff and it's a pain to trace execution.

      > a descriptive function name

      Well, you can name an accumulator "a" or "acc" or "i" or "n" and it's a name that stays out of your way, but you can't do this at the module level. You're taking something that would have, as its only scope, the ten-line function it lives in, and then you're putting it into the module's scope: this means you've got to name it a little more carefully because it's now part of a module instead of a local variable. It's not always obvious where it's called from, especially in a big module, and this gets in the way of debugging. Having to come up with a module-scope name for an intermediate calculation gets in the way of sketching, so people don't do it, and sometimes it's not even possible: this is an intermediate value with no meaning outside the very narrow scope, and what *is* it? Sometimes it's nothing. It's half an equation.

      Look at the quadratic formula, right, you've got a +/- and to avoid calling sqrt twice, people store the intermediate value and then return a tuple (however tuples are done it the language you're using) with (-b-val, -b+val). What's a good name for that value? Or you calculate stddev and you've got to have an accumulator for the sum of the squares of the differences of the individual elements and the average, and if you don't have a `reduce` builtin, you put it into a variable and you general call it something short enough to be legible, `ssd` for `sum of squares of differences` or something, fine for local scope. Say you're doing it in awk:

      :mycomputer: total=0; for(i in a) total += a[i]; avg = total/length(a)
      :mycomputer: ssd=0; for(i in a) ssd += (a[i]-avg)*(a[i]-avg)
      :mycomputer: stddev = sqrt(ssd/length(a))

      I mean, some stuff just doesn't have a good name, but if it's module scope, you don't have the option of giving it a *bad* name.

      (You write enough Forth and you see what people mean about not having to name *anything* that you don't want to name.)

      > It tends to remove the 20+ line if/switch statements you get in something like C when you need to do this

      That is the point of the early return: you shouldn't nest like that in any language, C included.

      > It is terrible design to process multiple types of something in a single function.

      The World Wide Web does not give you a lot of options: you get to process multiple types of something in a single function. (Worst part about Go is that it wants JSON to be a static data structure and JSON is not a static data structure.)

      Pleroma has to do a lot of this due to the having to handle "is this an array or not" or "did the DB return a valid UTF-8 string or just a bucket of line noise because the web is dirty or maybe it's nil, plus if it's a string like we're hoping, what does it look like and which way should we handle it?" (You will often have a bad time if you see `conn |>` in the function and you will almost always see that and it's the context trash bucket, it's like inside-out manual AOP, and AOP is already bad enough. "I've never looked in this module", I think. "`conn |>` could be here. `conn |>` could be anywhere." Illicit stimulants coursed through my veins as some square wave remix of something that used to be music reverberated through the cheap-ass Logitech subwoofer. "With a TCP socket, you can send data anywhere you want," I say to myself, out loud.)

      > You would name that function the same in other languages

      I wouldn't name *anything* that in *any* language. If you have an entire sentence with conditionals as your function name, then you don't have a function and I don't know what you *do* have but I don't want to touch it. You see names like that in Rails or in Java. (Most of the code in the world is bad so you have to cope, and if you're in a codebase that looks like that, you wanna fit the style so that you don't clash at the interface level, but you don't want to forget that it's bad.)

      > If it really needs to exist, multiple functions guarded with a when are slightly better at least in my mind.

      A `when` is like a really long chain of `&&`s. You don't want to if you can avoid it, and you definitely don't want to put any side-effects in there, but people do that.

      > It's a different code style basically. Same endless arguments about different code styles being better than others apply here as well.

      It's a different set of tradeoffs. You don't get a language with no warts; coding style dictates which warts you'll put up with. I really like using awk but there are some infelicities; same with anything, but awk is nice to use when what you have fits awk's way of doing things.

      > Just that you can also do this, nothing more:

      Yeah, I get that part, that's why I was confused about why you were saying it.
      In conversation about 5 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Sunday, 31-May-2026 02:28:29 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating

      >The optimal way to do this, the way Elixir wants you to do it, is to factor it out and use a conditional and unless both clauses are trivial, you make another function; likely, you skip the conditional and you lean on pattern-matching...

      I think that's a fair replacement for early return. If you do it correctly the complexities get resolved elsewhere and all that is left is a descriptive function name and you shouldn't need to care about how it is done. It does have an OOP abstraction smell to it though. That's the point of the `maybe`s, sometimes coupled with the `do`s; do this for me if it should be done, ignore when it shouldn't, I don't care about the details. It tends to remove the 20+ line if/switch statements you get in something like C when you need to do this and avoids dealing with fallthroughs in switch-case. And removes some noise from the function making it more readable/understandable. Of course, there are times where the 20 line case/cond is also more appropriate in Elixir.

      >So you have named the branches `do_binary` and `do_asdf` but you actually do see a lot of things like that in the only Elixir codebase I'm familiar with

      Kinda, you don't have to do that when the handling is simple like extracting something from a map or a list in a few lines. Arguably if it is more than a couple (10-15+) lines, you should make a function for it anyway. The example I gave above isn't really ideal since I would try hard to not write it. It is terrible design to process multiple types of something in a single function. If it really needs to exist, multiple functions guarded with a when are slightly better at least in my mind.

      >fetch_and_contain_remote_object_from_id

      You would name that function the same in other languages, because it's basically an entrypoint that does it all, an internal pseudo API. Unless you wouldn't write it all and wrote the same handling multiple times which is worse. Or caught the libc string manipulation function naming disease and called it robjfc_id or whatever. Hello vsnprintf and suckless function names that mean almost nothing at a glance.

      >It's possible to think this is a reasonable wart, I'm sure, but it's really ugly to me,

      It's a different code style basically. Same endless arguments about different code styles being better than others apply here as well.

      >I'm not sure what you mean to convey. I do know how you do those things in this language;

      Just that you can also do this, nothing more:
      # Bleh, multiple types.
      cond do
      is_map(var) ->
      var["some_property"]

      is_list(var) ->
      var[:different_property]

      is_binary(var) ->
      var
      end
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      bajax (bajax@baj.ax)'s status on Sunday, 31-May-2026 03:12:54 JST bajax bajax
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @j @Junes @phnt @SilverDeth @p @lanodan @ElDeadKennedy @ceo_of_monoeye_dating this has happened to me before
      In conversation about 5 months ago permalink
      pistolero likes this.
    • Embed this notice
      pwm (pwm@darkdork.dev)'s status on Wednesday, 15-Jul-2026 03:18:50 JST pwm pwm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @phnt @j @Junes @SilverDeth @p @lanodan @ElDeadKennedy @ceo_of_monoeye_dating orbing wrong with goto tbh, imo this is the correct way to do this
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 03:18:51 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating
      Alright time for a necro after I had a "fun" time with C's terrible early-return style error handling and the whole reason why I mentioned Elixir's `with` as a way better way of handling errors/cases.

      Case in point attached code I tried to write as elegantly as I can write C. All it is supposed to do is (un)set a window property and create it when it doesn't exist, because mpv is dumb and still renders video to an unmapped window and iconified window. There are 3 goto's to cleanup code that are equivalent to just copy-pasting the same early return statements three times, and a single early return when the first function call fails.

      It handles an edge case (property creation), errors and the actual purpose of the function in a single top-down fashion normal for imperative languages. The purpose of the function is stuck completely at the bottom, the "what it needs" and "what it does" is completely split by "but what if this happens instead" code; the whole paradigm of reducing cases until a final desired one at the bottom didn't serve this function well at all. It made it harder to grasp, understand and frankly ugly.

      This is the whole point of why I prefer sticking all the checks for the desired purpose at the top, which Elixir's `with` is perfect for, writing the actual purpose of the function right below that, and the whole "but what if this happens instead" goes at the bottom after the actual purpose without interrupting the main purpose of the function at all. You have "what it needs", "what it does" and only after that the "but what if this happens instead".

      PS: Too lazy to loop the XGetWindowProperty call to get all properties without dropping anything.
      image.png
      In conversation about 3 months ago permalink

      Attachments


      1. https://upload.fluffytail.org/media/ce/9b/d0/ce9bd0a62eb69dedf3f33a25c47789f35cff3996d9122e08d2b5ee1fe8f9760d.png?name=image.png
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 05:39:36 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @lanodan X sucks, you know, awful API.

      But you've made the function do too many things (and you're freeing state before it's allocated in a handful of cases).
      In conversation about 3 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 05:42:56 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim

      @phnt @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating Note that the goto stuff isn't exactly modern, like Go introduced defer ages ago and it got adopted by the vast majority of C-like languages, as well as Perl (which already allowed for or die "error message" that you can slap after functions which prints the error and then exits).

      Also gotta love the monstrosity of libX11, like it's usual thing of having dozen of parameters per function, making this code ugly by default.

      btw if(data) free(data); is useless here, but also useless in general as free() is a no-op when given NULL.
      Plus given you're not getting more than 64 items, might make sense to avoid the malloc and just use the stack.

      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 05:44:38 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j

      > free() is a no-op when given NULL

      I don't think this is always the case.
      In conversation about 3 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 05:52:44 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @lanodan @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating
      >like Go introduced defer ages ago and it got adopted by the vast majority of C-like languages
      Yeah, patiently waiting for C2X to introduce it and wait a decade before it slowly proliferates to projects and not get refused in MRs. You can use __attribute__(cleanup) in gcc and clang, but it isn't as nice.

      >Also gotta love the monstrosity of libX11, like it's usual thing of having dozen of parameters per function, making this code ugly by default.
      Structs considered harmful.
      In conversation about 3 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 05:52:44 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim

      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @p Also RE: if(data) XFree(data)

      XFree accepting a NULL pointer isn't officially in the X11R7.7 spec, but is in the man page for Debian, so it probably is not portable across platforms. Amazing. Not that it matters since the server should return a valid address on Success no matter what.

      https://xorg.freedesktop.org/archive/X11R7.7/doc/man/man3/XFree.3.xhtml

      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 06:17:21 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @phnt @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating R7.7 is an (old) X.Org release, not a specification, so you're just looking at an old manpage.

      And I think only bit of X11 that got a specification is the protocol, plus everyone switched to X.Org when it comes to X11, the days of stuff like Xsun and Xsgi are long gone.
      In conversation about 3 months ago permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        X.Org
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 06:37:10 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating C99: "The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs."
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 06:47:38 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt C89 apparently.
      In conversation about 3 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 06:49:51 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt I mean, it's behavior that makes sense, but I'm sure I've seen the assumption fall over on a non-embedded platform.
      In conversation about 3 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 06:49:57 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt Also same description for free() in C23.
      And I have the FIPS copy of C89 but it's a scan so it's a slow pain to navigate into.
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 06:51:03 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @lanodan @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating Same with ANSI C
      image.png
      In conversation about 3 months ago permalink

      Attachments


      1. https://upload.fluffytail.org/media/15/4a/b2/154ab27ae5740903262e7f08bd734611edcb819222b476ced640b9071e2ce0a1.png?name=image.png
      pistolero likes this.
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 06:51:40 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @lanodan @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating

      >it's a scan so it's a slow pain to navigate into.
      https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub160.pdf
      tmp2dimqerl_fipspub160.pdf
      In conversation about 3 months ago permalink

      Attachments


      1. No result found on File_thumbnail lookup.
        https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub160.pdf
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 06:58:14 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @phnt @j @Junes @SilverDeth @p @ElDeadKennedy @ceo_of_monoeye_dating Ah looking at your screenshot made me notice it got searchable text, way to used to navigating by the outline/table-of-content (in reader side panel) and clicking around.
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 08:10:56 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Yeah, wouldn't surprise me to see it break in some weird systems.

      Reminds me of why I stick to foss for personal projects so bug reports and patches can be sent.
      (And job I got is UNIX conformance so stuff like that would be their bug, mwahaha :D)
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 08:22:07 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt

      > wouldn't surprise me to see it break in some weird systems

      Well, now that I think about it, like, I can't come up with a reason for that to ever fail. You've got your list of allocations, you've got to look it up to free it. Apparently glibc (:rms:) and musl (:cereal:) and Plan 9 libc (:kenbw:) all handle free(0); I didn't check the other two but it's just an explicit check in Plan 9.

      > so stuff like that would be their bug

      Ha, whoever's bug it is, it's still there.
      In conversation about 3 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 13:32:08 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Heh love the choice of emojis for glibc, musl, plan9 libc.
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 13:34:57 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt Well, I didn't have one for Felker but I figured :cereal: would work. (The Plan 9 libc, you know, people say "but no Google Chrome and no libreadline" and ignore the "Ken wrote this OS" part; it kind of irks me.)
      In conversation about 3 months ago permalink
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 13:43:27 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @phnt @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @lanodan

      > Some embedded stuff probably fails on it

      A lot of embedded stuff fails on a lot of weird cases and usually the answer is "Don't do stupid shit, X3J11 can't help you here. Patch it out or don't." That's a reasonable answer where you're counting bytes. But I'm sure I've seen it somewhere besides embedded libraries.

      > But even Microsoft implemented that correctly, which is unusual for them

      Well, "to spec" rather than "correctly". Edge-case behavior is "What should you have a reason to expect?" rather than "What's the best thing to do in this case?" A *good* spec is more descriptive than prescriptive, but "Well, that's not defined, what if someone digs up a one's complement machine and then tries to port your code to it? Huh? HUH?!" The reason integer overflow isn't defined is to give implementers space to do things: you can't have guards around every increment so while there were one's complement machines, you couldn't rely on that behavior. gcc's current behavior has the tail wagging the dog: "You can't possibly know that `for(int i=1;i;i++);` will ever terminate!" is pants-on-head retarded.

      Rant aside, I mean, you generally don't want to rely on Microsoft to do what every sane implementer does.
      In conversation about 3 months ago permalink
    • Embed this notice
      Phantasm (phnt@fluffytail.org)'s status on Wednesday, 15-Jul-2026 13:43:28 JST Phantasm Phantasm
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @SilverDeth @lanodan @ElDeadKennedy @ceo_of_monoeye_dating Some embedded stuff probably fails on it, all that stuff is weird and quirky. But even Microsoft implemented that correctly, which is unusual for them, so it can't be that frequent.
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 22:38:38 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim
      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating Haha Google Chrome and libreadline, yeah "Plan9 is not for you" kind of thing.

      And like libreadline I can quite understand it, I'd quite want the readline features in ⑨ but no way I'd port GNU code to ⑨, plus would also rather have it in a more plan9 way.
      Like could try stuff like separating input and output buffer like in sam.
      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 22:48:04 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt I mean, yeah, I'll take a clean OS that Ken wrote that is "missing" some stuff but has stuff no one else has managed to build. The readline stuff doesn't really bother me. The whole interface acts pretty consistent and even if moving around lines was slower (I don't think it is), it's still not what slows me down, that's "Oh, dear god, what is this thing even doing?" and I don't have that problem nearly as often.
      In conversation about 3 months ago permalink
    • Embed this notice
      Haelwenn /элвэн/ :triskell: (lanodan@queer.hacktivis.me)'s status on Wednesday, 15-Jul-2026 23:49:51 JST Haelwenn /элвэн/ :triskell: Haelwenn /элвэн/ :triskell:
      in reply to
      • Phantasm
      • Junes
      • DulceKennedy
      • pistolero
      • SilverDeth
      • Slim Jim

      @p @j @Junes @phnt @SilverDeth @ElDeadKennedy @ceo_of_monoeye_dating it's something I kind of miss here, mostly because I hate repeating myself, specially when it's commands, plus mouse chording doesn't really works that well for me.
      Although IIRC there's a way to replicate fc(1) but it's more a hack than anything else.

      Also a takeaway for me in Plan9 and 9Front isn't only the code but more the community centered on it's own interests rather than corporate or strawman-popularity ones. It makes the codebase so much cleaner, but also way more resilient as there's little to no outside dependencies (importing anything too-big-to-fork is something I so wish Unix communities would avoid like the plague).

      In conversation about 3 months ago permalink
      pistolero likes this.
    • Embed this notice
      pistolero (p@fsebugoutzone.org)'s status on Wednesday, 15-Jul-2026 23:51:55 JST pistolero pistolero
      in reply to
      • Haelwenn /элвэн/ :triskell:
      • Phantasm
      • Junes
      • DulceKennedy
      • SilverDeth
      • Slim Jim
      @lanodan @ElDeadKennedy @Junes @SilverDeth @ceo_of_monoeye_dating @j @phnt That's the ideal part, right, like, "Here, we're doing this thing and it will never make money or appeal to consumers, we're just making something that is supposed to be good." First goddamn OS I ever used that wasn't talking down to me.
      In conversation about 3 months ago permalink

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.