Email or username:

Password:

Forgot your password?
591 posts total
Andrew Tropin

@drewdevault What are your thoughts on MPL vs GPL?

Do you know if I can create MPL projects, which have GPLv3 libraries in load-path and if I use their APIs directly?

Andrew Tropin

I must confess I enabled cua-mode in my config.

#emacs

Ramin Honary

@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.

Jason P 🇺🇦

@abcdw I bound x/c/v to kill/save/yank in my meow modal editing config. It seems to reduce mental friction for me.

Andrew Tropin

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.

On possible solution is a style guide, which contains idioms, best
practices for writing Guile. We can start simple as
github.com/bbatsov/clojure-sty and grow it into
something like practical.li/clojure/testing/u.

WDYT?

#guile #lisp

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.

On possible solution is a style guide, which contains idioms, best
practices for writing Guile. We can start simple as
github.com/bbatsov/clojure-sty and grow it into
something like practical.li/clojure/testing/u

Show previous comments
Noé Lopez

@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.

Jeko

@abcdw

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"

Ramin Honary
> "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


-

Scheme monadic programming, including a discussion of SRFI 247: "Syntactic Monads"

I would also love to write articles about unit testing and type checking, but that will take some time.

@SadielEd @baleine @ekaitz_zarraga @ieugen @jeko @kakafarm @mirkoh @monkey1 @octorine @screwtape

> "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.

Andrew Tropin

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.

Inspired by @mkvlr

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

Show previous comments
ldvsoft

@nikitonsky @mkvlr Unix domain sockets are good for IPC, yeah!

Especially is you know that Windows since something in 10 has them too. Not directly on the fs though.

Noah Pederson

@nikitonsky @mkvlr So what do you do when you're on windows and don't have unix domain sockets to use?

Eugen

@nikitonsky @mkvlr unix domain sockets where not supported OOTB in Java until recently. and http client still does not support them yet bugs.java.com/bugdatabase/view (submitted by me ~2years ago. so you had to use native libs.

Andrew Tropin

> Typing is for suckers, I stare down the compiler until it produces the binary I want.

Andrew Tropin

I face bumped into thinkpad's lack of n-key rollover.

It's a top-of-the-line laptop, man, what the hell.

#thinkpad #keyboard

Andrew Tropin

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.

keyboard-layout-editor.com/#/g

#keyboard #dvorak #layout

Camel

@abcdw
This is the best effort of making laptop keyboard less unergonomic. But still, separate split keyboard is better.

Eveline Raine

@abcdw if you're looking for inspiration by any chance, this is what i came up with couple years ago with the same goal in mind — greatly helped me with chronic wrist strain on my laptops.
git.sr.ht/~evelineraine/layout

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.

Andrew Tropin

#DOFH excuse #108:

i3wm doesn't work on your machine because you have Core i7.

Grigory Shepelev

Reader, FYI.

On those pics I am 20 kgs fatter than my usual form. And I am working to come back to it after a stressful period of my life.

Andrew Tropin
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 #keyboard #layout #mechanicalkeyboard #japan #ergonomics
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...
Andrew Tropin

Which hand do you use to tap space while typing?

#keyboard #layout #ergonomics

Anonymous poll

Poll

Left
41
35.7%
Right
52
45.2%
Both (are you sure?)
22
19.1%
115 people voted.
Voting ended 28 August at 9:20.
Show previous comments
kakafarm

@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.

Right... anyway, right.

Ramin Honary

@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.

dgr

@abcdw It's on my right thumb cluster on my ergodox.

Andrew Tropin

Have anybody tried Zed editor? What is your experience?

At first glance it looks really nice. Slim, performant, no legacy, tree-sitter first (no more regexp hell, hacks and bugs).

WebAssembly for extensions, which means you can write them in whatever compiles to wasm, including guile-hoot scheme.

#wasm #vim #emacs #scheme #lisp #zed #vscode

Show previous comments
SΛDIΣL :verified_multi:

@abcdw I couldn't compile it for musl because a crate depended on glibc.

GaryO

@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!

smt

@abcdw I’ve been using it for a few weeks, and it’s been a good dev experience. Haven’t yet gotten into writing extensions for it, though.

Andrew Tropin

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".

Text input systems should raise.

Bounga ⌨️ 🎸🚲

@shegeley @abcdw

> I need it to work with git-patch + email-based workflow as an amateur hacker. ✉️ :git:

Working with Sourcehut?

What email client are you using?

I’m using mu4e that I really like but I still haven’t found how to effectively use an email based workflow.

It’s not related to mu4e but rather to how to pipe diff to magit and work with it.

Grigory Shepelev

And I don't completely understand how it works. Yet.

Andrew Tropin

TIL: You don't need to set S3 Sleep state in UEFI/BIOS to make modern Linux suspend properly.

At least at first glance it works much better than S3 (much faster initial suspend and resume).

#linux #til

Andrew Tropin

@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" .

Andrew Tropin

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.

Csepp 🌢

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.

Go Up