Posts
3400
Following
129
Followers
702
software tinkerer and aspiring rationalist. transhumanist and alterhuman

I have strong opinions about #Lisp but love S-expressions. I also have strong opinions about video games, TTRPGs, software, and programming in general and I post about them a lot

I like to use curly braces to {group words together} to make my sentences easier to parse. for example, try reading the garden path sentence "the complex houses married and single soldiers and their families", and now try reading it with curly braces: "{the complex} houses {married and single soldiers and their families}"

I try to thoroughly CW anything that I post or boost which might be triggering, or just cause strong emotions like outrage or fear. sometimes I make mistakes but I want to make my posts as safe to read as possible. I even CW when I'm {complaining about} or {making fun of} something in case you don't want to hear a stranger criticize something you love

replying to messages is very energy-intensive for me, so I may not reply to certain messages at all, or it may take me a long time. DMs are especially hard

I still think that the concept of a Lisp language is incredibly elegant and powerful, and I think it’s such a shame that every popular Lisp I’ve tried has been so unpleasant to work with. and that even some of the more niche Lisps like Janet have serious fatal flaws that need to be addressed. I don’t think Lisps have to be this way - I think this probably comes from the decades of baggage that these languages are still carrying around from the 1960’s

and I hope that someday a Lisp will be created that isn’t afraid to throw that baggage away and start from scratch, with modern language features, good documentation, and static analysis as a first-class feature. in the meantime I might use Fennel when I want to write Lua, just for fun and to remind myself that it exists. but otherwise I guess I’ll stick to Python

1
1
8

I’m about ready to give up on Racket. the lack of LSP features and the often-unhelpful error reporting make it pretty difficult to work with - especially as a project gets more complex, and especially when refactoring (it’s so labor-intensive to track down what all broke because I changed a function’s signature)

Typed Racket seems to fix a lot of these problems, but creates so many more of its own - like the inability to use a ton of libraries that I had been relying on up to this point, including threading which is such an amazing threading library T_T

so I’m not sure what I’m going to learn next. I might go back to Python and learn some GUI programming instead - and remake my clicker game there. Python isn’t as nifty as Racket with its macros and Lisp syntax and its amazing threading library. but Python works incredibly well for me, has really good tooling, and I know it very well

1
2
6
repeated
🔞 lewd, lingerie, girlcock
Show content

Felt good, took a photo~ 🎀

6
2
1
Edited 1 month ago

here’s a great example of the problems that I always run into with static typing

so I’m playing with Typed Racket and I have a function called hash-invert which takes a hash table (a dictionary) and returns a version with the keys and values flipped:

(define (hash-invert [h : (HashTable Any Any)]) : (HashTable Any Any)
  (for/hash ([(k v) (in-hash h)])
    (values v k)))

currently I have it annotated as taking a (HashTable Any Any) and returning a (HashTable Any Any) - but that’s not as specific as I’d like it to be. because actually, if K and V are generic types then it takes a (HashTable K V) and returns a (HashTable V K) (it flips the keys and values)

but if I try annotating the function like this, Typed Racket complains because I guess it thinks that the result of (for/hash) must always be a (HashTable Any Any) for some reason?? and I don’t know how to convince it otherwise, or even why it thinks that at all. so if I were using a statically typed language right now, I would be screwed because I wouldn’t have Any to fall back on

1
0
3

@zeichenreihe woahh - that is really hard to wrap my head around lol. I’m not sure if I understand at all in that case. but that’s okay! this type of stuff tends to be difficult for me anyway hehe

0
0
1
repeated
NSFW art (multi breasts, tentacles)
Show content

Even more smug tenta panda djinn goddess fun!!

2
2
1
Edited 1 month ago

https://www.keshetonline.org/movetothrive/

I just discovered this program: interest-free loans up to $10,000 for any LGBTQIA+ person in the US who needs money to leave their current home

I thought I’d post about it in case anyone can make use of it

1
60
26
repeated
room temperature take
Show content

Chat Apps with message-level "mark as unread" >>>>> Chat Apps without "mark as unread" / Chat Apps with chat-level "Mark Chat As Unread"

2
1
2
repeated

someone should make a Rust-inspired Lisp, and by that I do not mean “pedantic about the tiniest implementation detail”

0
0
1

I’m starting to think that maybe the trick to making a statically-analyzable Lisp is to do what Rust does and figure out as much stuff at compile-time as possible. or in this case, transpile-time because it would be transpiling to a simpler subset of the language’s own forms (which are then analyzed by the LSP)

Rust actually does a ton of smart things in terms of language design so it’s a shame that it’s *gestures vaguely*

1
0
1

@cinnamon I believe it - I guess by calling it a “shitpost” I meant that the program itself was a shitpost, despite the fact that it worked. but yeah I love that this existed

honestly now that ZDoom can handle non-Euclidean spaces it shouldn’t be too hard to have arbitrarily-organizable process lists that are in fractally-nested rooms. or even file lists where each room is a directory

maybe someone should remake this

0
0
0

@cinnamon omgg this is a seriously impressive shitpost lol

1
0
0
repeated

Octavia Con Amore pink_moon_and_stars Succubard's Library

Edited 1 month ago

boosts_ok In light of the continued enshittification of Youtube, I've finally scrounged together the energy to get files shrunk down and uploaded to a peertube account frog_blush

@octaviaconamore@vid.northbound.online

It won't include any full streams since there's a 20GB total data limit, but I've uploaded every stand-alone book reading I've recorded bugcat_nod Most of them are still waiting to be transcoded server-side, but the whole YT library will be up in a few hours~ hug_love oh, and despite the potato video quality (only 1500 kb/s), the audio quality is a full 320 kb/s shiba_love

add. if you follow the peertube account from your Fedi account and turn on notifications, you can get a notification every time a new video is uploaded~ furret_excited

5
5
1

if the problem with Lisp static analysis is that macros can expand at runtime, I wonder if this could be fixed by having a Lisp where macros expand at compile-time instead (which is what Fennel does)

although this means that macros would have to be more limited, and that’s a bit of a shame (though I’m not sure exactly what the use case of runtime macro-expansion is anyway)

1
0
2

the Racket LSP is pretty bad so I thought I’d try editing my Racket code in Emacs instead of Neovim, since Emacs has racket-mode

but unfortunately it seems like racket-mode is every bit as bad as the Racket LSP at figuring out wtf is going on in this language lol. it can’t even tell if I’m calling a function with the wrong number of arguments (which the LSP can’t either) and has a lot of the same quirks and missing features

so that’s a shame. it seems like you can’t really have a good editing experience when writing Lisp code. I wonder if the highly-dynamic nature of Lisp languages (macros, dynamic typing, etc.) makes most kinds of static analysis impossible. it’s pretty annoying though, I’m ngl

the main feature that I’m really missing is being able to press K on any function and pull up a bunch of helpful info on that function (contracts, arguments, and its docstring (which Racket doesn’t even have :/)). instead I have to search through my files manually to find the definition of that function, every time. super annoying

1
0
3

@cinnamon aww that sucks, but it’s still such a cool concept for managing files in general

1
0
0

@cinnamon yooo this is so fucking cool! how does it handle bigger filesystems with lots of files and folders?

1
0
0
repeated

Sinnamon (despicable arc 😈)

It’s a UNIX Linux system, I know this!

(Got the sources from https://github.com/mcuelenaere/fsv/releases/tag/fsv-0.9-1)

2
1
1

I’m pretty proud of myself for solving a problem that Racket folks apparently never even considered, or couldn’t solve on their own

https://pastebin.com/1tGydApd

0
0
5
Show older