4 ms·
I miss pg. Lisp commentary has never recovered from his departure. Ten hours with no comments about the project or a tangent about Lisp itself is a darn shame.
by sillysaurusx 3y ago
I miss pg. Lisp commentary has never recovered from his departure. Ten hours with no comments about the project or a tangent about Lisp itself is a darn shame.
Why not write one myself? Drained. Lisp is near and dear to my heart, but midnight when I have to do our morning time routine with our 7mo at 6am isn’t the time to wax poetic.
The most worrisome thing is actually the most ironic: no one is posting any hate comments either. Back a decade ago, you’d get into long battles about whether it was a good or bad idea to choose any Lisp, or at least some jeers from the sidelines. But that, counterintuitively, was one of Lisp’s strengths. When I was younger, that kind of thing originally sparked my curiosity: if most people were jeering, and most people weren’t too smart, then could there be something to this whole Lisp trend (even if it seemed like more of a university project than a trend)? And it turns out there was.
Loved or hated, you’re noticed. The pit of indifference is a bad place for an ecosystem to be. It’s long past time someone write about it in… well, in a way that can only be described as pg style. He had a knack for making young devs hungry for more. https://paulgraham.com/avg.html https://paulgraham.com/avg.html
The essays still hold up. They’re as true today as they were then. But no one will believe them without an example. I wouldn’t have believed it if pg hadn’t released Arc, and sometimes it feels like I’m the only one in the world that actually uses it to solve problems that I personally have.
But the nice thing about Lisp is that it’s always there, waiting to be discovered. It’s arguably one of the few types of programming ecosystems that can be discovered rather than designed. It’s precisely why there are so many choices. And it also doesn’t matter that nobody else uses it, just that you like it, that it solves your problems, and you find it endlessly fascinating. Hopefully our generation won’t be the last, at least for a long while.
- 082349872349872 3y agoOK, I'll jeer: I'm a big fan of [McCarthy60], but everything-is-a-list implicitly introduces order, and the 21st century ought to explicitly accommodate the unordered as well. (there ought not be any is-more-basic-than relation between ordered and unordered)
- sillysaurusx 3y agoI agree! That’s actually not a jeer, it’s one of my main criticisms of lisp. You don’t need lists to have lisp. In many respects it works better without them; https://github.com/sctb/lumen https://github.com/sctb/lumen proves it, since hash tables and arrays are the fundamental data structure. They have to be, because that’s the only way lumen can run in JS or Lua. Every time I can’t delete the first element of a list in lisp (I.e. del x[0] in the python sense) I get annoyed with racket. The reason I look past it is because the benefits are so good that they outweigh the annoyances. I wouldn’t trade it away.
- deleted 3y ago[deleted]
- cess11 3y agoOr do you specifically mean that you want to free memory where the first cell is without waiting for GC or similar? $ pil + : (cdr '(1 2 3)) -> (2 3) :
- sillysaurusx 3y agoAnswered in a sibling comment just now: https://news.ycombinator.com/item?id=39815471 https://news.ycombinator.com/item?id=39815471 (Sorry for not being clearer to begin with. I realized as I was falling asleep that it would cause some confusion.)
- zelphirkalt 3y agoInsisting on a single linked lists as the fundamental data structure is not necessary, that much I agree, but I would say, if you need del x[5], then in some cases you should not be using a list, but potentially a persistent data structure/PFD. This is an area that Lisps should invest in: Batteries included for good functional data structures.
- eggy 3y agoTry April (Array Programming Reimagined In Lisp)[0] then. Sorry, I am both an array language and Lisp fan for many years. You use Lisp for all of its goodness, and drop into APL to do numerics and array work in a language better suited for the problem at hand. Hmm, maybe a marriage between Gerbil and J -> Jerbil! I've been a fan of Gambit for a long time too. Love to see it being utilized this way. [0] https://github.com/phantomics/april https://github.com/phantomics/april
- deleted 3y ago[deleted]
- zck 3y ago> ...sometimes it feels like I’m the only one in the world that actually uses it to solve problems that I personally have. My personal static site generator (https://hg.sr.ht/~zck/site-generator https://hg.sr.ht/~zck/site-generator, generating https://zck.org/ https://zck.org/ and https://theflyingbuffalo.com/ https://theflyingbuffalo.com/) is written in Arc. It's a very fun place to program. I've used other Lisps, but Arc for me fits a very enjoyable programming space. There's a small enough core that I don't have to spend a lot of time figuring out, say, how to change logging levels or why Spring isn't parsing a POST body into the object it's supposed to be. But it's also large enough that I don't need to rewrite an http handler.
- sillysaurusx 3y agoNeat! How do I run it? Is it using https://github.com/arclanguage/anarki https://github.com/arclanguage/anarki or something else?
- zck 3y agoI've tried to keep it Arc-compatible, but I always run it on Anarki. Run it like `(gensite "path/to/site/base")`. The site root is a folder with the following things in it: 1. a config file `conf.arc`, with config for the site. It has these keys (but I don't think they're all required): 1. sitename -- title for the homepage 2. site root -- url; mine is "https://zck.org" 3. description -- used in the RSS feed. 4. slogan -- used in the sidebar 5. navbar-entries-at-top -- extra links at the top, as a hashtable. Mine is ((tagged table ((href "art") (content "my art")))) 6. mailing-list-cta -- A thing put at the bottom of each page (except the homepage) that is a call-to-action for my mailing list. 2. a folder called `published`. This contains the entries in the site. Each file is the html contents of the body of the entry, and I don't believe it matters what you call the file. Each entry also has a bonus set of options in it, which I'll explain later. 3. a folder `pregenerated` that has things in it copied verbatim over to the output. I use it for things like my favicon, css, images, and some html games (https://zck.org/numberdle/?variant=rationerdle https://zck.org/numberdle/?variant=rationerdle). 4. a folder `frontpage`. This contains entries that do not directly result in a page; they merely result in entries placed on the frontpage and rss feed. They have the same options that the published entries do. I use it for things like announcing when I've given a talk, or launched something that's in `pregenerated`. This can be empty; it just won't generate any entries like this. 5. a folder `codegen`. This folder contains files that contain arc code. Each file, when executed, results in a list of pages. There's some busy work in passing args into it, and getting the results back. Don't start by using this; like `frontpage`, it can be empty, or maybe even nonexistent. Now, the important part of each page entry -- the "options". This is a serialized arc obj that is put at the top of each entry. It has keys `url-slug`, `title`, `date` (in YYYY-MM-DD format), `navbar` (set it to t to put this entry in the navbar), `frontpage` (the string that gets put in the frontpage for this entry; an <a> link with no href gets set to link to the entry), and `tags` (a list of strings that tag that entry; see https://zck.org/tags https://zck.org/tags). So my latest entry (https://zck.org/ruby-hashmap-syntax https://zck.org/ruby-hashmap-syntax) looks like: ``` file begins ((url-slug ruby-hashmap-syntax) (title "til: Ruby's hashmap syntax") (date "2024-03-20") (navbar t) (frontpage "Ruby's hash syntax is confusing. There are two different syntaxes, and they <a>work surprisingly differently</a>.") (tags ("til" "ruby"))) <div> <p>I was writing some Ruby for the first time, and I made a hashmap with some data in it.</p> ```rest of file snipped The arc hashtable is not printed as part of the html output; it's only used for its values, and the page itself starts after it. In this case, the page starts at the <div> tag. I write my blog in Emacs org files, for which I've also written my own org-mode exporter (https://hg.sr.ht/~zck/ox-zhtml https://hg.sr.ht/~zck/ox-zhtml). I've done this because the built-in html exporter creates some really ugly html. You shouldn't be able to tell what html exporter created your html; the org one puts in a lot of "org" properties that are terrible. I'd love to know if you get this working! Feel free to email if you want to talk off-thread or get more help. I'm sure there is more I missed.