@abcdw that would confuse me horribly. I tried using the Mac OS text editor the other day and it felt almost as bad as the first time I tried to use Vim.
I had a lot of talks recently with Guile hackers, explorers and
educators on the cons and pros of Guile.
One particular issue is a lack of common language idioms and best
practicies. The zoo of SRFIs and ICE-9s, 3 implementation of
exceptions, 3 of records and a bunch more.
I had a lot of talks recently with Guile hackers, explorers and
educators on the cons and pros of Guile.
One particular issue is a lack of common language idioms and best
practicies. The zoo of SRFIs and ICE-9s, 3 implementation of
exceptions, 3 of records and a bunch more.
@abcdw As someone learning guile for guix how am I supposed to remember all those module names!!! srfi-34 ice-9, give them a name please! Also would be nice if there was some kind of prelude module that had all the common modules exported.
Maybe it can help if newcomers can refer to a list of useful dependencies to start different kind of projets. Say web, cli, gui...
i.e. it would not aim to present all existing web server lib, just the one simple enough to get started. Same for databases, etc....
Kind of way to say "you can narrow your learning to this, and still be productive"
> "One particular issue is a lack of common language idioms and best practicies. The zoo of SRFIs and ICE-9s, 3 implementation of exceptions, 3 of records and a bunch more. On possible solution is a style guide, which contains idioms, best practices for writing Guile."
@abcdw I think this is a very good idea, although I would prefer the focus be more on R7RS standard Scheme more than Guile. And it will be very difficult since Scheme is not used often enough in industry.
I have been using Scheme myself to create a medium-scale application, and I have already started writing a series of blog posts about my experience, and what I have learned. I am still in the process of revising them, but I hope to publish them in the first week October, hopefully.
The thing is, I still have relatively little experience with Scheme, only about a year using it for real software engineering. So my blog posts are not really about "best practices," so much as they are about discussing the possible pros and cons of various techniques to solve problems. I have upcoming articles on the pros and cons of:
-
Scheme "environment" objects, and how the "load" procedure works across various Scheme implementations
-
Scheme "parameter" objects for dependency injection
> "One particular issue is a lack of common language idioms and best practicies. The zoo of SRFIs and ICE-9s, 3 implementation of exceptions, 3 of records and a bunch more. On possible solution is a style guide, which contains idioms, best practices for writing Guile."
@abcdw I think this is a very good idea, although I would prefer the focus be more on R7RS standard Scheme more than Guile. And it will be very difficult since Scheme is not used often enough in industry.
Blown away how much sense using Unix domain sockets for nREPL makes.
We already use .nrepl-port files, right? But instead of using that file directly, we write a number inside and then go to a completely different place to connect.
Well, with Unix domain socket you CAN use that file directly!
Plus:
- No need for port randomization!
- Meaningful names!
- File auto-deletes when your process dies
That's so obvious in retrospect! And yet we all missed it.
Blown away how much sense using Unix domain sockets for nREPL makes.
We already use .nrepl-port files, right? But instead of using that file directly, we write a number inside and then go to a completely different place to connect.
Well, with Unix domain socket you CAN use that file directly!
Plus:
- No need for port randomization!
- Meaningful names!
- File auto-deletes when your process dies
For better ergonomics I decided to press R button (P letter on dvorak layout) with middle finger rather than index. It's ok on speeds under 60 WPM, but becomes challenging closer to 80-90 and I fallback to old habbits or misstype things.
P. S. There are also versions 2 and 3 in the repo. In retrospect, i think that vertical movement is way worse than horizontal, ruling out v3. And v2 i didn't spend enough time with to tell if it's superior to the v1 or not. Feel free to check them out as well tho.
ThinkPad X1 Carbon Gen 10 30th Anniversary Edition with Japanese Keyboard. This is a present from my mom for my 30th birthday.
Runs smoothly, however it can be hot in some situations. I've built 6.10 kernel and updated libcamera in Guix repo, but wecam still doesn't work yet. I've put 2tb ssd (a brithday present from myself) from my previous laptop into it and heavily customized the keyboard, swapped a few keycaps, moved right part of the layout 1 column to the right, added a few layers and remappings. It hugely reduced the pain in my wrists, very happy with it.
ThinkPad X1 Carbon Gen 10 30th Anniversary Edition with Japanese Keyboard. This is a present from my mom for my 30th birthday.
Runs smoothly, however it can be hot in some situations. I've built 6.10 kernel and updated libcamera in Guix repo, but wecam still doesn't work yet. I've put 2tb ssd (a brithday present from myself) from my previous laptop into it and heavily customized the keyboard, swapped...
@abcdw When someone asks you how one does something one usually does without thinking, one cannot consciously do it, so for a few moments I didn't know how I press the space button.
Then I recalled there's a big shiny spot on my space button originating from my pressing it countless times, and it is somewhere mostly on the rightmost third, but the shine starts forming in the middle.
@abcdw I am right-handed by use my left for the spacebar. I think it is because my right hand covers more keys and is more busy so my left fills in doing the easy, repetitive work. I also sometimes play the piano, my right hand is definitely more articulate.
@abcdw If it had serious emacs bindings, I might start to be interested. WASM as the scripting language is interesting, but it seems nowhere near as extensible as emacs (defadvice, edebug, code-as-data). Still, worth tracking!
Configured #emacs#email today for 2 google accounts of mine. I postponed this action for almost 2 years. It took me ~5 hours of pain. And I am happy to use almost completely pluggable Andrew's (@abcdw) #rde features setup (via #guix :guix:)
I need it to work with git-patch + email-based workflow as an amateur hacker. ✉️ :git:
I just couldn't force myself to do it for so long cos I am so internally against "editor as email/irc/etc-client".
@abcdw I got a reply on #GNOME matrix channel and ptomato (GJS dev from what I could tell) mentioned wasm is not currently enabled. "Some stuff needs to happen first ... I forget what exactly" .
So far a clear win for #Nix over #Guix for me: it's very easy to run build steps from a shell. I don't have to jump through hoops, like adding a deliberate error after a build phase in Scheme and enabling keep-failed and then entering the build environment and copy-pasting commands from the log to re-run them.
None of that nonsense, you just enter a nix-shell '<nixpkgs>' -A pkgname, set out to some output folder in /tmp, then run your build phases, or a generic build.
Replacing Bash with Guile could be a clear win too, because Bash is an awful language, but Guile's interactive experience is not all that great in my experience, and because of how code staging is done in Guix, you can't just easily run bits of Guile code inside an interactive REPL to build a package.