Posts
3401
Following
129
Followers
701
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
repeated

On the next episode of Sweaty Bearded Men Cussing a Lot While Doing Manly Jobs (only on the Discovery Channel): another mechanical failure threatens the livelihoods of the sweaty men! Can they overcome this equipment failure throw sheer force of swear words and turn a profit?

1
2
1
re: frustrating reddit attitudes toward programming
Show content

@tempest I really am too. until I found Fedi I thought that the entire internet was like that, and I even thought that it was normal. but I’m glad that I have some perspective now and I’m not steeped in that toxic culture anymore

1
0
1
repeated
Edited 2 months ago
frustrating reddit attitudes toward programming
Show content

code is a pidgin language between computers and people. computers are very logical and consistent, but people are incredibly messy and chaotic and diverse

there’s such a wide variety of programming languages and styles (imperative, object-oriented, statically-typed, functional, etc.) because those styles are meant to serve different cultures of problem-solving, which value different things (speed, various definitions of “elegance”, various definitions of “safety”, etc.)

I grew up on reddit, though, where every user has to find a reason why they’re smarter and better than all of the other users. so I grew up hearing sentiments like:

  • “functional programming is objectively superior. it’s so easy to understand and use and if it’s ever hard for you that means you’re stupid and don’t understand its deep elegance and precision mathematical design. [derails the conversation to show off their knowledge of Monads™]”
  • “Rust is literally the best possible language because it’s just as easy as Python except everything is so safe and fast and if you ever have trouble with it that just means you’re stupid and shouldn’t write code. Rust is always completely effortless to write and read because of how superior it is”

and I learned to be very defensive about what works for me, because the cultural assumption was that one of these languages must be the superior choice and only a chosen few geniuses can understand which it is and use it properly - and I didn’t want to be one of those ignorant plebs using an inferior language for idiots instead. so that’s why I am the way I am towards Rust and anything related to functional programming

1
0
5
repeated
repeated

🩵 Bwee the Fluffdragon 🩵

*skitter skitter skitter scamper SCAMPER SCAMPER*

*claws on wood floor scrabbling sound*

*CRASH*

....

....

*SCAMPER SCAMPER SCAMPER*

🩵🩵🩵

3
2
1
repeated
repeated
Teto the Anitifa: https://www.youtube.com/watch?v=LEjftPKjkI8

If the comments are to be believed Teto is used for some Antifa-Songs lately

#Vocaloid #Antifa
0
3
1

@tempest I would definitely love to play it with y’all!

0
0
1
repeated

@geonz @corbden It's a very good strategy, at least in computer science. If you know what's going on, you can often guide the conversation without them realizing it. If there's a bug or a hole in their design, you just ask them to explain it until they step in the hole.

2
1
1
Edited 2 months ago

reminder that Archipelago exists and is absolutely incredible:

https://archipelago.gg/

it lets you create “multiplayer games” where you and your friend play two completely different singleplayer games and find items for each other in your games

for example I could be playing Doom ‘93 and instead of getting the super-shotgun and a soulsphere, I might find the PokeFlute and some rare candies for my friend playing Pokemon

and then they might be exploring a cave and find the BFG and the red key for E1M4

I can’t believe that something like this can exist. and there are a surprising number of supported games too

7
52
87
repeated

https://www.gamedate.org/ this site is awesome this feels like how the internet should be
plain and simple ways to connect with people. i love it

1
3
1
US politics
Show content

god damn this protest sign goes hard

0
1
10
re: Epstein, actual news, Prince Andrew, all-caps
Show content

@ifixcoinops holy shit it’s almost like countries other than the US have justice systems that work

0
0
0
repeated
Epstein, actual news, Prince Andrew, all-caps
Show content

SO THEY FUCKING ARRESTED PRINCE ANDREW THIS MORNING

Not asked him to appear for a chat, not invited him to assist the police with their inquiries, they pulled up round front and back and just fucking nicked him

And now they're searching his house

and, safe guess, his hard drives

2
3
1

what really sucks is that Janet is so close to being perfect for embedding in games as a scripting language, or etc. since it’s meant to be a small, simple Lisp with modern sensibilities, and Lisp’s whole thing is letting the users extend it into whatever they want with no limits

so you could very easily embed Janet into your game, and then generations of modders after could smooth over all of the quirks and bad API decisions and even incorporate whole new programming paradigms and DSLs. it would literally be completely future-proof

it’s just that Janet is a very unfinished language (especially when it comes to documentation) and it seems to me like nobody is spending the substantial effort it would take to fix its shortcomings

although, thankfully we still have Fennel which turns Lua into exactly what I described above. I fucking love Fennel - I have literally zero complaints about it as a Lisp or as a language in general 💙

0
0
3

for those curious here are the design decisions that I find confusing or just bad:

the (frequencies) form (which is meant to count the number of occurrences of each element in a list) completely ignores all nil values, and this isn’t documented anywhere

#Janet has a really cool concept where there are separate types for mutable or immutable data structures. for example "asdf" is an immutable string, but @"asdf" is a mutable string. but the problem is that for some reason, @"asdf" != "asdf" and also @"asdf" != @"asdf" - even if you do a deep/recursive equality check? and this is true for all data structure types

since the above means that the difference between mutable and immutable is very important if you want to compare things, you would think that all of Janet’s forms would be very clear about whether they return a mutable or immutable data structure, right? nope! there is no documentation of this whatsoever, which means that every time you want to compare two data structures you have to manually convert both of them - recursively - to immutable structures, just in case

the (complement) macro is meant to take a function and return its complement (a function that returns true when the original function would return false and vice-versa) but I think it’s just straight-up broken if you run it on a function with an arity of more than 1, and this is not documented anywhere

Janet’s random number generation is deterministic by default because the random seed defaults to the same number every time. you have to manually set the random seed yourself if you want to fix this. this isn’t documented either btw

Janet has a built-in error system using fibers (this is really cool!) but almost none of its forms actually throw errors when they should. instead they return values like nil or false and expect you to check this every time (even when this isn’t a documented behavior)

Janet’s docstrings use terms like “strictly equal”, “strictly less than”, etc. but the documentation calls this “primitive comparison” instead and never uses the word “strict”

in general there’s a pretty big disconnect between the language that Janet’s docstrings use, and the language used in the documentation. it feels like they were written by separate people who didn’t communicate very much

a lot of Janet’s docstrings say that they only take an indexable type but this seems to never be true - they can take any data structure type just fine, including strings

also, Janet either has no documentation for, or extremely limited documentation for:

  • any basic file operations
  • the existence of Lua-style metamethods which apparently this language has?
  • how to get a list of an object’s methods (you need to use (keys «object») in the REPL, even though a lot of objects are a bespoke type imported from C so there’s no indication that they might have methods or keys at all)
  • which features are supported by its regex implementation and how to use them (for example: if I regex/replace, is there any way that I can access the text of the capture group in my replacement?)
1
0
2
Edited 2 months ago

I’m falling out of love with Janet. it seems to have a lot of very good ideas and design choices but:

  • the documentation is missing a lot of important information and is sometimes just outright wrong
  • it seems like nobody really works on the documentation except for small maintenance tasks, and I wonder if the whole project is petering out similarly
  • it has some design choices that are either flat-out bad, or I just don’t understand the logic behind them

it’s been fun to work with it but I think I might try learning Typed Racket next

I’m ngl I’m starting to wonder if there are any Lisp languages that I would consider good enough for my hobby projects

it’s weird because I think that S-expressions and Lisp-style macros are incredibly good ideas, and yet exploring these languages feels a bit like exploring the fossils of an evolutionary dead end. like maybe there’s some fatal flaw in Lisps that I’m just not seeing, and that’s why all of these languages die. maybe the noisiness of the parenthesis and the potential for hard-to-diagnose syntax errors is a much worse issue than I think, and Lisps just aren’t worth it because of that alone. idk. but I still want to try Racket

1
1
5
repeated

Post your ominous signs

15
5
2
Show older