Email or username:

Password:

Forgot your password?
591 posts total
Andrew Tropin

@daviwil @ekaitz_zarraga Showed me today a vdo.ninja, in combination with obs it can be a really cool tool for making streams with multiple participant.

github.com/steveseguin/vdo.nin

David Wilson

@abcdw @ekaitz_zarraga awesome, thanks for sharing it! I'll have to play with it a bit to understand what it can do. I see the video series about it, got it queued up for tomorrow

Andrew Tropin

How about reads from stdin for expressions evaluated from the buffer?

With guile-ares-rs it's possible, this functionality will land soon:
- git.sr.ht/~abcdw/guile-ares-rs
- github.com/abcdw/guile-ares-rs

#guile #scheme #repl #nrepl #emacs

Screenshot of emacs showing a simple scheme expression, which reads from stdin and how guile-ares-rs + monroe nrepl client handle it.
Andrew Tropin

It seems make-custom-textual-input-port will solve the problem of intercepting reads from stdin in evaluation thread. It is not in a release version, but is available in guile-next:
git.sv.gnu.org/cgit/guile.git/

Thank you to @wingo for implementing it! :)

#guile #scheme #lisp #guix

Andrew Tropin

New Guile REPL in one minute.

A brief demo of guile-ares-rs (previously known as guile-nrepl) dealing with continuations and infinite recursion.

youtu.be/27Nqj-oTq5U

The source code:
git.sr.ht/~abcdw/guile-ares-rs
github.com/abcdw/guile-ares-rs

#guile #scheme #lisp #guix #clojure #nrepl

Nyoelle

@abcdw Cute
Lisp is always cute, and this also, is mega cute
And nya

Andrew Tropin

What a magnificent work on guile hoot, wasm and Spritely Goblins and a stream about it with @daviwil, Robin, @dthompson, @cwebber:

youtu.be/_29duXYFi8s

#guile #scheme #lisp #wasm

David Wilson

@abcdw @dthompson @cwebber Exciting stuff indeed!

I fixed the broken stream recording with a new upload: youtube.com/watch?v=8LuQtoy9NL

Andrew Tropin

Moving from country to country is similar to reinstalling operating system: you verify if your setup is reliable, self-contained and reproducible.

jacket, pants, shoes, laptop, mic and a few more items lying on the floor ready to be packaged.
Andrew Tropin

I come to Turkey tomorrow.
Will be around Istanbul for 1 week, after that I go to Anatlya, Geyikbayiri, Kalkan. If you want to meet - drop me a line.

Andrew Tropin

I can't lock (wait on) mutex inside fiber, because it locks the whole kernel thread, so I've took a condition variable, put it inside atomic box and made a nutex.

The atomic-box-update! implementation is here:
git.sr.ht/~abcdw/guile-ares-rs

#guile #scheme #lisp #programming #concurrency

(define (make-nutex)
  "A syncronization point, similiar to unowned mutex, but it created
already locked and works without suspending the whole thread."
  (make-atomic-box (make-condition)))

(define (nutex-lock! nutex)
  (define new-condition (make-condition))
  (define (update-condition old-condition)
    (wait old-condition)
    new-condition)
  (atomic-box-update! nutex update-condition))

(define (nutex-unlock! nutex)
  (signal-condition! (atomic-box-ref nutex)))

(define (nutex-wait nutex)
  (wait (atomic-box-ref nutex)))
Andrew Tropin

Asyncronous programming feels like a quantum mechanics, you can't know the state of a particular object without touching it.

#programming

Rasmus Lindegaard

@abcdw well, it was fun figuring out how to write tests for it the first time 😁

Andrew Tropin

How to delimit an undelimited continuation?

I want something like this to work without going into infinite loop (I don't want call/cc to capture context outside of quoted code):

(begin
(define (my-eval exp)
"Maybe some other eval implementation here?"
(primitive-eval exp))

(my-eval `(define kont #f))
(my-eval `(+ 1 (call/cc (lambda (k) (set! kont k) 5))))
(my-eval `(kont 41)))

#guile #scheme #lisp

How to delimit an undelimited continuation?

I want something like this to work without going into infinite loop (I don't want call/cc to capture context outside of quoted code):

(begin
(define (my-eval exp)
"Maybe some other eval implementation here?"
(primitive-eval exp))

(my-eval `(define kont #f))
(my-eval `(+ 1 (call/cc (lambda (k) (set! kont k) 5))))
(my-eval `(kont 41)))

Andrew Tropin

Text files don't take much space. Meanwhile 12GB mail directory: 🤔

nthcdr

@abcdw It's all the mime-encoded pantomime videos you've been receiving...

Andrew Tropin

Ordered a new 2tb storage for my laptop. It means that we will test the reproducibilty of my rde config and overall installation experience of rde soon :)

For quite some time, I didn't have enough space to maintain VMs, gnu/store and couple of movies at the same time, so I had to cleanup and GC often. Soon it should become much more comfortable to work and live.

#guix #rde

Andrew Tropin

For people interested on how much storage you need for comfortable work on systems powerd by GNU Guix: I have around 300GB total on all btrfs subvolumes and while it's manageable, it feels quite tight for my everyday research and development duties.

#guix #rde

Andrew Tropin

Fun fact: After calling `join-thread`, you still can get #f from `thread-exited?`

#guile #scheme #lisp

Emacs.

Buffer on the left contains the code with join-thread, usleep 0, thread-exited?, usleep 1, thread-exited?

buffer on the right contains the respective values of the calls.
graywolf

@abcdw That is... weird. Is that a bug? Or an expected behavior?

Andrew Tropin

I have half an hour trip to climbing gym and back 3 times a week. Not to waste this time I take my laptop with downloaded materials with me and watch courses.

Previously it was OCaml course, now it is Advanced Compilers course:
cs.cornell.edu/courses/cs6120/

#llvm #gcc #compilers #scheme #racket #guile #lisp #clojure

blake shaw 🇵🇸

@abcdw score, this one is going in my bookmarks, even if I'm admittedly not prepared for advanced compilers.

Andrew Tropin

How about completions in guile-nrepl?

Drafted it in a few minutes.

But it seems I need to start working on a client as well to make it more capable (for example to show completion types like procedures, symbols, modules).

#guile #scheme #lisp #clojure

Emacs with two windows. Left contains a compilation buffer with guile-nrepl log. The right contains rail buffer with corfu child frame with a list of completions.
Olical

@abcdw oh nice! Might be a great candidate for conjure, the guile over stdio support we currently have isn't great. github.com/Olical/conjure

Go Up