1. 7

    I don’t like the submitter link being so prominent, especially when it’s mostly just “pepe” everywhere. Seems a tad silly to me. Maybe a more subtle color?

    1. 3

      That is an excellent observation. I will PR the change, thank you.

      1. 0

        especially when it’s mostly just “pepe” everywhere.

        Or even worse: yumaikas

        😱

        1. 1

          Upvote here to donate Karma to the Janet Collective </sarcasm>

          1. 2

            Please accept my precious up vote. I have only one to give.

      1. 2

        Now with an interactive playground, where you can run examples from the page.

        1. 2

          I like the idea of a programming language where instead of saying “I use X” you say “I am X”

          1. 10

            This seems like a step in the wrong direction to me. We want people’s identities less tied to their tool selection.

            1. 7

              I took it as a pun with the name (Janet from The Good Place reference) but I agree that people must not be defined only by their tools. The other side of the coin is that we tend to either feel forced to use any tool either make the tools fit our way. When your tools began to be your medium of expression. How can you not feel them as part of your identity?

              1. 1

                Well said!

              2. 1

                As a programmer, I am JavaScript. As a programmer, I am Python. As a programmer, I am C++.

            1. 3

              This was a very good read. Respect for the kakoune linter.

              But I wonder, does the VM provide a Garbage Collector? Is it stack based? If so, how does it work and cope with its C potential “ordinary objects”?

              1. 5

                Thank you very much!

                VM indeed provide a GC, and it is stack-based. But I am not sure what you mean by the second sentence. There is a mechanism to create your own JanetAbstracts in C language, and then you can provide a call-back for the GC (among other things) where you usually free resources. If I am off, please refer to https://janet-lang.org/capi/index.html and beyond.

              1. 3

                The LISP tag might be appropriate?

                What distinguishes Janet from other LISP-like languages? The website doesn’t go out of its way to compare it to LISP; I had to find the home page and scroll down to some examples before seeing the telltale parentheses ;-)

                1. 9

                  I think that’s intentional. I’m very comfortable describing Janet as a Lisp, but it departs from Lisp tradition in some key ways (like not using cons cells). In other, more argumentative spaces, describing it as a Lisp has led to a lot of really unnecessary rancour.

                  1. 14

                    Yeah, there’s a certain breed of Common Lisper who looooooves telling other people that their lisps are “not a real lisp”, and I think it’s completely reasonable to word your home page in such a way that it avoids having those incredibly tedious conversations.

                    1. 4

                      I had the lisp tag chosen for a brief moment when composing the post. But for a reason given above and because I did not want the post to be about code at all, I removed it.

                      This is actually the second part of my Óde to Janet, and I want it to be plain praise.

                    2. 4

                      Janet isn’t huge but I’d love a Janet tag for this reason. A lot of Janet-related stuff gets submitted here

                  1. 1

                    I am straw widower for the weekend and Janetuary is in full swing, so I guess I will Janet.

                    1. 1

                      I’m not familiar with the phrase “straw widower”. I found a few references, but I’m most of them don’t seem to fit your usage. (for example.) I take it you mean your partner is away for the weekend?

                      1. 1

                        In Swedish, “gräsänkling” (grass widower) refers to a man stuck working in the city while his wife and children are in the country. I believe it stems from the late 19th century when the well-off middle class (in the UK sense) could afford a country place and the mother could accompany the children on school vacations.

                        The “widower” generally joined them on week-ends.

                        Edit considering the close cultural ties of Sweden with Germanophone Europe during this time I would not be surprised if the word is a German loan-word.

                    1. 7

                      Janet seems like a practical, modern lisp to get into. Anyone using Janet for anything? If so, what?

                      1. 8

                        I am using it right now only for personal stuff, but here are two projects that I am using every day:

                        fuzzy finder ala fzy https://git.sr.ht/~pepe/jff.git time tracker/todo manager https://git.sr.ht/~pepe/neil

                        1. 4

                          I maintain (and use) a SSG in Janet: https://bagatto.co/

                          I’ve also used Janet as a prototyping/tutorial language: https://blog.zdsmith.com/whist.html

                          1. 2

                            I’ve also used Janet as a prototyping/tutorial language: https://blog.zdsmith.com/whist.html

                            I was just looking through this, really awesome! What are you using to tangle the literate source?

                            1. 4

                              Thanks! The literate-programming application is Literate: https://zyedidia.github.io/literate/

                              It works pretty well. Totally source language agnostic. And I think I could theoretically get it to work with Emacs mmm-mode, though I haven’t tried too hard at all.

                              1. 2

                                wicked! Thanks – I’m excited to check this out over the weekend. I tend to do most of my literate programming in org-mode, but I’m always excited to try another system for literate programming

                          2. 3

                            I’m rewriting file opening scripts in it, my shell scripts for that are pretty ugly and bug-ridden (you can fit many bugs in 74 lines of shell). I can see myself rewriting most of my small scripts in it.

                          1. 5

                            Sorely needed! I’ve been keeping an eye on Janet. I think it’s time to dig in and see what I can learn. Thanks for posting this.

                            1. 2

                              I think now is the right time, as we are moving into stable waters. Great to hear this

                            1. 3

                              Really excited for this effort – best of luck! More real world examples on janetdocs would be awesome! I’ve found that many of the examples are so minimal as to not translate wicked well to real world applications. I look forward to keeping tabs on this project.

                              1. 2

                                Thank you very much!

                                We have already discussed the real-world examples in the Gitter channel, and it sounds very reasonable. I guess we have big enough corpus of a code to get examples from.

                              1. 1

                                You should check Janet programming language; it has PEG as part of the core https://janet-lang.org/docs/peg.html. And it is overall nice LISP dialect with some Lua flavour.

                                1. 2

                                  I think that’s a great way to describe it. You can feel the Lua-isms in the design, even if the syntax are different.

                                1. 4

                                  Sinatra’s law: given enough time, every programming language will see an attempt at a Sinatra clone. 1

                                  Also, “Dammit Janet” would have been a cool name ;).

                                  Jokes aside, this looks really nice! Especially the documentation using security-related things as examples always warms my heart: https://github.com/swlkr/osprey/blob/master/examples/csrf-tokens.janet

                                  1. 1

                                    I have Janet coloured glasses, but from all the Sinatra clones I have ever seen, this is the best. Probably better than the original :-).

                                    Very true.

                                  1. 4

                                    What gets me really excited is the pure Janet HTTP server backing it. Great to see Janet stdlib’s net/server and peg put to use so well.

                                    https://github.com/joy-framework/halo2/blob/master/src/halo2.janet

                                    1. 2

                                      It is indeed a very good thing and speed is very good too.

                                    1. 3

                                      Great manual pages for the grat codes I would say. Big up!

                                      1. 3

                                        It looks excellent. I like the division into two phases. Looking forward to trying it.

                                        1. 4

                                          This post is an excellent introduction to Gemini. I can understand all the opposition against the idea (too simple, too limited), still I am excited about this new development and I can see the whole new world beyond.

                                          The page I am brewing right know, will definitely have Gemini version.

                                          1. 5

                                            Thank you for this survey, I think kakoune needs more propagation.

                                            1. 2

                                              Simplest digramming rules I’ve ever seen, but it seems to be working well.

                                              1. 1

                                                Zettelkasten looks like a viable method for working with the notes. I need to research in this direction. Thanks

                                                1. 4

                                                  Another great post about kakoune. As an old punk myself, I cannot agree more. Even if the connection to Kakoune never came to my mind like this.

                                                  Thanks.

                                                  1. 6

                                                    I really like the concept of Kakoune, tried it a couple of times and inverting the movement to action order is a great UX improvement. But unfortunately my muscle memory in vi is keeping me there, the differences is simply slowing me down too much. I would however love to see someone to “steal” Kakoune style editing in a vim extension, visual mode is the closest we have, which I do use quite a bit but it’s not quite the same.

                                                    1. 7

                                                      I might misunderstand you, but if muscle memory is what’s keeping you in vi, wouldn’t it also keep you from using such an extension?

                                                      1. 1

                                                        The upside is that such an extension could be used on an opt in basis, e.g. by toggling it via a :ToggleKak or as an additional mode which can be entered from normal mode. This would allow me to instantly switch back to normal vi-mode thus making me able to get used to it gradually.

                                                        Additionally I was thinking an extension that keep more original vim movements instead of keeping some and changing others. Word is the same in kak but for instance foregoing g and GG for instance is a massive hassle, I don’t recall on top of my head what more was missing but there was quite a few changes. These changes probably makes sense if you start from a blank slate and thus makes sense for a new editor but as an extension to vi/m I’d rather see adherence to the old learned movement words.

                                                        Edit: Some things that I notice missing/changed at once when starting kak again and just trying to navigate a little bit in the project I’m working on right now:

                                                        • Folding, zc/zo
                                                        • Set line numbers, :set nu
                                                        • Go to line, :n where n is line number
                                                        • gcc/cs are popular plugins for comment and change surrounding, these are popular enough to be ported to vi-mode in other editors like vscode.
                                                        • At this point I’m going back to vi because it’s unfortunately slowing me down to much to get real work done.

                                                        Now I still love what kak is doing and if I weren’t already a vim user a lot of the things probably make a lot more sense.

                                                        1. 5

                                                          I found that the bindings that got changed from Vim was mostly an improvement in consistency, whereas original Vim bindings are constrained by their legacy. For instance in Kakoune shifted version of keys “extend” your current selection rather than move it. Thus, G is just g (which enters “goto” mode that includes g for buffer begin, j for buffer end etc.) that extends the selection rather than moving it, which is why you need to use gj instead of G to go to the buffer end.

                                                          Other than folding (which is not currently possible) your other missing features are actually available right now, so if you decide to give it a go again here are some pointers:

                                                          Set line numbers, :set nu

                                                          This is available as a highlighter, documented in :doc highlighters and the wiki page

                                                          Go to line, :n where n is line number

                                                          This is available with <n>g, from :doc keys

                                                          gcc/cs are popular plugins for comment and change surrounding, these are popular enough to be ported to vi-mode in other editors like vscode.

                                                          This is built-in with :comment-line and :comment-block commands, but not mapped to a key by default

                                                          I can’t blame someone much for not being able to discover some features – while in-editor help with the clippy and reference documentation with :doc is pretty great, it doesn’t have a good “user manual” like Vim that the user can discover features through. The wiki also helps but is not very well organized. TRAMPOLINE is a decent vimtutor replacement, but hard to find unless you know it exists.

                                                          1. 1

                                                            Thanks, that’s hugely helpful. Will for sure try out trampoline next time I give it a spin, I do love vimtutor.

                                                      2. 3

                                                        Similarly for me, kak just simply isn’t available as ubiquitously as vi(m). I fear relearning the muscle memory would be a detriment in the long run as I would still likely need to switch back to vi(m) fairly frequently

                                                        1. 2

                                                          What might be left out about how common place vi(m) is the fact that there are vi(m) modes for A LOT of things, I’m talking editors like VSCode, IDE’s like JetBrains suite, Visual Studio, emacs evil, etc. but most importantly all major browsers (vimari/vimium/vimpinator/pentadactly/qtBrowser/w3m/etc), window managers (ultimate macOS for one), tmux, shells, scripting via s(ed), and more. Wherever these will diverge from kakoune there will be friction in daily usage.

                                                          Again this isn’t criticism to kakoune just a note on how ubiquitously available the vi(m) keybinding set really is.

                                                          Additionally to that I’ve worked with industrial control systems often being quite literary air gapped (not uncommonly located in rural places without internet connection) running some flavour of BSD/Linux, vi is pretty much always available for some quick adhoc configuration at a customer site, anything else, not so much.

                                                          1. 2

                                                            Yeah, this is also a factor for me, though less so as I have never been happy with a vim plugin/emulation layer.

                                                            1. 3

                                                              The one in VSCode is surprisingly good if you bind it to a neovim backend. Onivim is also interseting but more expimental.

                                                              1. 1

                                                                Have any sources on the neovim backend? I use neovim as my daily editor and was unimpressed by VSCodes vim plugin about ~1 year ago, but using neovim as a backend might address my concerns.

                                                                I’ve tried OniVim2, as I purchased a license way back when it was fairly cheap. Their current builds seem very promising.

                                                          2. 2

                                                            What distro are you using that doesn’t have a Kakoune package available? About a dozen are supported, it’s surprising to hear that the editor isn’t widely available.

                                                            1. 5

                                                              What distro are you using that doesn’t have a Kakoune package available?

                                                              Telecom-deployed clusters of RHEL VM’s.

                                                              1. 1

                                                                Can you not use this RHEL package?

                                                                1. 1

                                                                  First, no el7 build, second, getting it there would be problematic at best (in terms of file copying).

                                                              2. 2

                                                                Alpine Linux. I also occasionally deal with embedded ‘distros’ that don’t have a package manager .

                                                                1. 4

                                                                  I can see a package for Alpine, I’ve installed it myself in Docker containers.

                                                                  In any case, it’s true that muscle memory is a big obstacle when trying to use one or the other. But when you switch over to Kakoune, it’s harder in my experience to go back to Vi bindings (for example when there’s absolutely nothing else installed on a random system).

                                                                  1. 1

                                                                    The Alpine package is on testing/edge, which isn’t considered stable. I already intentionally stick to stock vi(m) configurations as much as possible to alleviate muscle memory issues, switching seems like a step backwards to me despite the overall UI/UX language being better.

                                                                    1. 1

                                                                      When I use vim nowadays (and I install kakoune anywhere I need to edit anything), I am staying only with the very limited set of commads.