toot.cat is one of the many independent Mastodon servers you can use to participate in the fediverse.
On the internet, everyone knows you're a cat — and that's totally okay.

Administered by:

Server stats:

412
active users

#commonlisp

9 posts9 participants0 posts today
Public

@simendsjo @jackdaniel #XMPP has all those features, and there's a fairly big #Lisp / #Scheme / #CommonLisp channel there - xmpp.link/#lisp@conference.a3.

It might not have everything that #Discord does, but it's vastly better than #IRC. And there's a cost to using #proprietary and #centralized services, which people constantly forget about in chasing convenience and shiny features.

Here's a guide to help you get started.
contrapunctus.codeberg.page/th

xmpp.linkXMPP Invitation
Public

Common Lisp - with its open-source implementation, SBCL, offers greater resilience against US tech export controls and sanctions compared to Go. Its stable, long-lived libraries can be easily archived locally. Go, however, undergoes frequent changes and depends heavily on GitHub, which is a US-based service, increasing its exposure to such restrictions. Furthermore, since our project is non-military, encryption algorithm limitations do not pose a concern for our use case.

Public

So this is what an accelerando looks like in #cl-collider using the very excellent #cl-patterns library:

(bt:make-thread
(lambda ()
(loop for i from 90 to 120 do
(cl-patterns:tempo (/ i 60))
(sleep 1))))

Public

@sigue @scream

Oh-kay. I have been foollowing the code down the rabbit hole, and I am a bit out of my depth here, but what I see are two things:

1) (ext:default-directory) calls another function CD, which can change the directory. If without an argument, the argument is created by merging (the non-argument) with defaults and doing logical path translation, then it actually changes the directory and returns the pathname calculated before (the new path to which it changed the working directory).

So querying the default directory comes about as a side effect, sort of.

2) I am not sure about what actually happens in this default thing, but what seems certain, we're doing a call to chdir(2) every time (which has no effect when the argument is the working directory already except when the dir is unlinked (**)). We would have to call 1 system call anywhere here, but this ... and then I don't know if it doesn't call getcwd anyway in this default/normalizing stuff.

And the version comes in from the place where the "empty argument" is expanded into a pathname.

I think I'll really be circumventing this all. Instead of UIOP:GETCWD (which calls EXT:DEFAULT-DIRECTORY) I'll just redirect my GETCWD wrappe to (osicat:current-directory). Which, BTW, does the right thing.

But really, I am not sure if I shouldn't try to raise a bug here (not for the implementation, I am understanding it not good enough to judge it, but rather for the spurious :VERSION which also cannot be deleted). Any advise?

Public

@shapr Tooter (github.com/Shinmera/tooter, by @shinmera) is a Mastodon client library for #CommonLisp. Very scriptable.

I wrote a layer on top of it for more convenience in writing client scripts: codeberg.org/khinsen/malleable

Using these libraries, I consume most of my Mastodon feed as a set of RSS feeds, defined by my own algorithms.

A Common Lisp client library for Mastodon instances. - Shinmera/tooter
GitHubGitHub - Shinmera/tooter: A Common Lisp client library for Mastodon instances.A Common Lisp client library for Mastodon instances. - Shinmera/tooter
Public

@screwtape

This will sound like sacrilege for #CommonLisp but in #DylanLang I no longer use plain symbols as a poor-man's enum. Instead I do this:

define constant $rock = #"rock";
define constant $paper = #"paper";
define constant $scissors = #"scissors";

define constant <tool> = one-of($rock, $paper, $scissors);

and then type things as <tool> where appropriate. Et voilà, I can no longer misspell symbol names without getting a compiler warning. More importantly, neither can clients of my library.

EDIT: fix Dylan bugs, add last sentence.

Public

#CommonLisp question: is anyone specifying dependencies for every single file instead of using :SERIAL? And if yes, how is this even used? I have never used anything but ASDF:RELOAD-SYSTEM which will reload all files anyway.

Public

In 2009, I had to cancel a scheduled keynote talk at the European Lisp Symposium (ELS) in Italy because I was due to be in surgery at that exact time for my thyroid cancer. (Surgery went well, and I've seemed thankfully free of it since.) They were kind enough to ask me to speak in Lisbon in 2010 instead. But I didn't at the time, in 2009, speak publicly about the surgery or the cancer. Instead I made a vague excuse about an illness in the family (not technically untrue) being the reason I couldn't do the talk.

On the evening before the surgery, I wrote a somewhat metaphorically cryptic post to my blog that I figured would at least capture my apprehension in case the surgery did not go well, or even if it did, I suppose. It's still interesting to have a window back into my thoughts.

netsettlement.blogspot.com/200?

Back to modern day, I do have a planned procedure (not tomorrow, not dire and far more routine, so not to worry, but please don't ask for additional details just now) that I've been reflecting about just a bit.

Though in all honesty, I and all of us are probably at more risk just walking around on the streets in our emerging fascism (here in the US, though other places are not exactly immune either), and that's on my mind all the time now as well. Any one of us could become an unperson, certainly anyone with decent ethics anyway, as that seems to almost be the criterion for who they're going after.

The tanka I wrote is not specific to one thing in particular, just the sum total of various such things that point to the ephemeral nature of each of our existences.

It's both frightening and infuriating to live in a society where we are at risk merely because of our very existence or nature being seen as a crime.

There may be some among us that don't feel at risk. I wish I could say that's good. But I worry it's obliviousness/denial, or privilege, or something darker, perhaps even being comforted by being on the winning side of bigotry. Maybe give it some thought, because I don't want people to be disempowered by what's afoot, but neither should they feel it's someone else's problem. We have real problems that need to really be addressed. It's a time to feel uncomfortable because no one should be comfortable with what's happening. It's a time for people to empathize and contribute to getting the world back onto an even keel.

Meanwhile we are all individually fragile, too. I had a philosophy class in which the professor told us we could not say with certainty that we would have lunch with someone tomorrow. The future is intrinsically less than certain, we're just talking degree here. But the things going on now are good cause to appreciate those we love, and make sure that we've got things in order in case things get wonky.

And even beyond the politics of the day, the state of climate is dire. I talk enough of that elsewhere, so won't belabor it, but its spectre is ever-present.

Still, it also makes it a time to live, not to put off living to some mythical future time when things will be better. (I wrote a different haiku about that earlier this evening as part of this same pondering.) Let's work toward creating a bright future, but let's also not fail to appreciate that today is all we know we have for sure. Make the best of it. And be the person you want others to remember fondly.

netsettlement.blogspot.comOver the EdgeKent Pitman's blog. Independent, progressive views on Society, Technology, Social Justice and Climate, or sometimes poetry, philosophy, or history.
Public

Lamber, my #LambdaCalculus -> Lisp compiler (github.com/aartaka/lamber) didn't handle big enough numbers (> 10-bit,) so I decided to implement some optimizations, reusing underlying #CommonLisp compiler to speed up and save space on numerics. It's not particularly reliable, because big LC numbers consume too much of the stack, but at least it's better than it used to be, almost reliably handling 12-bit numbers.

A functional scripting language compiling to pure Lambda Calculus - aartaka/lamber
GitHubGitHub - aartaka/lamber: A functional scripting language compiling to pure Lambda CalculusA functional scripting language compiling to pure Lambda Calculus - aartaka/lamber
Public

Web developer KILLIAN.arts posted a review of Common Lisp: A Gentle Introduction to Symbolic Computation by David Touretzky. They read the book because:

"While I like web development, I have worried about specializing too much as a frameworker or a UI builder, missing out on more fundamental knowledge of computers and programming."

killianarts.online/en/articles

killianarts.onlineCommon Lisp: A Gentle Introduction to Symbolic Computation | KILLIAN.artsKILLIAN.arts creates bold and engaging web experiences to help you and your business reach your customers.
Public

SpinPro™ was an expert system to design procedures for Beckman Instruments ultracentrifugation machines at biochemistry labs. Developed in Interlisp-D on Xerox 1108 workstations, SpinPro™ was deployed to IBM PC/XT computers as an application that ran under Golden Common Lisp by Gold Hill.

To learn more about SpinPro™ see this 1985 paper:

bitsavers.org/pdf/xerox/interl

Public
Public

#programming #McCLIM #commonLisp #emacs #animating #graph #video.

toobnix.org/w/qAnmJAKv1mhuwem7

Silent, two minutes thirty of just what me being at a computer is like. I write a closure that has an example graph tree in it, open the frame, hand-write a tree into the interactor the frame draws, start a background loop that randomly changes between graph frames.

The code demonstrates a way of asyncronously running animations in mcclim.
Source codeberg.org/tfw/lineage-traci

Comments, thoughts(, prayers)?