freenode/#lisp - IRC Chatlog
Search
21:00:54
fiddlerwoaroof
mfiano: one really clarifying thing for me about Lisps/FP/etc. was listening to the episode of Cognitect's podcast featuring Matthew Flatt (of Racket fame)
21:01:33
mfiano
I am not familiar with it, but given the number of talks I've seen on FP and the like, and my short-term meory, that isn't surprising
21:01:50
fiddlerwoaroof
At one point the host just sort of asserted the Clojure dogma `data > functions > macros` and Matthew Flatt responded, "actually I think functions > macros > data"
21:03:09
fiddlerwoaroof
Clojurians like to say "try to solve a problem by representing it with data, then use functions if that doesn't work and finally use macros"
21:03:54
fiddlerwoaroof
I've come to think that one should almost always prefer functions and macros to data representations (especially raw data literals in code)
21:04:11
no-defun-allowed
I found this excellent rule engine called EVAL, you should totally use it with...data yes that's data
21:04:36
fiddlerwoaroof
My experience is that a codebase built around domain-specific abstractions ends up being much more maintainable long-run, than a code base built around data
21:05:37
fiddlerwoaroof
Because when you need to make an architecture change, you don't have to spend as much time tracking down data dependencies, you just re-implement the abstractions
21:06:28
mfiano
Maintainable code comes from understanding the domain. How you use the constructs available matters less.
21:07:16
fiddlerwoaroof
I don't think that's really true: your understanding of the domain should be reflected in the language you build to write your software
21:07:50
fiddlerwoaroof
Domain knowledge should, almost always, be reified into the constructs of your programming language so you can program in the language of your domain
21:08:35
fiddlerwoaroof
Not following this principle creates huge messes for the people that maintain the code
21:09:21
no-defun-allowed
Something rubs me the wrong way about using maps and sequences for everything. Maybe I don't do the kinds of problems where those are fine.
21:09:52
mfiano
The point is general purpose abstractions, like design patterns as they are called in other languages, are just usually the result of one caring too much about the code and not how it should be structured for your domain. Maintainability just sort of falls out from a deep understanding of your field/and lots of whiteboarding.
21:10:06
fiddlerwoaroof
The biggest issue is you create an implicit dependency between line 40 with {:a 1 :b 2} and line 80 with {:a 1 :b 2}
21:10:21
no-defun-allowed
(Though for it to be "everything", we should define #{} to be 0, #{#{}} to be 1, so on and so forth.)
21:11:34
fiddlerwoaroof
mfiano: I agree with that, I just think saying "how you use the concepts available matters less" misses the point: understanding the domain is not enough, you need to write code that reflects your understanding of the domain
21:11:46
mfiano
There are whole periods of weeks where I can't write code because I'm still understanding the math, logic and how it all permutes to be written in a maintainable fastion. POD, mixins, design patterns...none of that matters until the domain is well understood
21:12:29
fiddlerwoaroof
Yeah, I'm sort of the opposite: I can't understand the domain without having a repl open to mess around with
21:13:41
mfiano
I've had to work on serious projects professionally where we couldn't afford to make these types of mistakes that arise from "just coding"
21:14:01
Odin-
There are still people who think there's really something called "plain text" in computers.
21:15:03
fiddlerwoaroof
It's just that I find iterating with prototypes designed to explore one corner of the search space ends up being more efficient than trying to think through the domain
21:16:25
TMA
I have an experience that is in the middle between fiddlerwoaroof and mfiano. there is the exploration to learn something of the domain, which is usually ill specified and therefore not available with a priori reasoning alone
21:17:14
TMA
but there is also the need to pause and whiteboard, to build the model in the head prior to coding
21:17:38
fiddlerwoaroof
TMA: yeah, when talking about these things I find that I occasionally express a position that sounds more extreme than it actually is
21:18:34
fiddlerwoaroof
I do spend time whiteboarding/learning, I just have also had the experience of a project where we spent weeks planning only to discover that what we thought was possible wasn't
21:19:31
fiddlerwoaroof
Or, in one case, a team insisting on like a month of onboarding training before I was allowed to write code
21:19:55
fiddlerwoaroof
Most of which was basically useless because I didn't really understand the context until I tried to change the code
21:20:50
mfiano
I could write a whole book on debunking the ECS paradigm some time...and I probably will. It amazes me how people flock to shiny things that just shift the shift the complexity around (and add new issues because they hadn't considering their design may require a new architectural model coupled to the domain.
21:21:50
TMA
mfiano: I will refrain from ignoring your opinions, if I may. There is certainly much to be learned, even if there are minor corrections to be applied.
21:22:09
no-defun-allowed
I still need to write my implementation of "ECS" using CLOS for serial parts just to spite someone. But I forgot who I'm supposed to be spiting.
21:22:54
Shinmera
ACTION wonders if he could find a way to use no-defun-allowed's time for his own projects by coercing her into spiting him for something
21:23:32
mfiano
A true ECS is impossible anyway, so can only go so far before you have stateful code
21:24:21
no-defun-allowed
Sorry, I have a waiting list of about three months, if you wouldn't mind writing your name and project down here then I'll get back to you then
21:25:04
fiddlerwoaroof
no-defun-allowed: it sounds to me like you're just saying we have to make you angry enough
21:26:43
nij
If I get a cl system from guix, how do I load it? QL:QUICKLOAD doesn't look at those paths by default after all.
21:27:15
no-defun-allowed
mfiano: Right now, I just finished the first part of redoing my regular expression compiler, which was to use (and debug) someone else's technique for submatching with a DFA. Next is to add a protocol for letting the client provide optimisations (e.g. optimising constant string searching). Then I have to look after two lock-free hash table implementations.
21:27:35
fiddlerwoaroof
nij: you have to figure out how guix expects you to configure ASDF's registry
21:27:36
mfiano
no-defun-allowed: Did I not see a post a couple weeks ago stating you were not contributing to open source anymore or something of the sort?
21:28:21
no-defun-allowed
I announced I am taking a break from Netfarm because, wow, I'm actually too fed up with people there to bother improving their lives in any meaningful way. But now I also have a paper on that to edit.
21:28:43
no-defun-allowed
mfiano: Yes, now I've decided to work on other things because otherwise I have too much spare time :)
21:29:06
mfiano
The only mention I ever heard of it is from you, so I'm curious who these people are that annoyed you. Getting the torches ready
21:30:26
mfiano
Ok then. Well one thing I know all too well is breaks are good. I would never be able to commit to one project and stay sane.
21:32:01
mfiano
Mostly because I have to figure out hard problems on my own that require subconscious thinking
21:34:28
fiddlerwoaroof
yeah, my guess is that reading guix expressions for something like nyxt might be helpful too
21:34:58
fiddlerwoaroof
my guess is that it involves `guix environment` but, unfortunately, I can't use guix because of their stance on mac support/free software
21:35:38
no-defun-allowed
In short, despite many differences of opinion on design, only one CL person has come close to saying that all my work is worthless.
21:47:55
Shinmera
no-defun-allowed: I've had people almost word for word say all my libraries are worthless. The good thing is that doesn't actually matter.
21:49:28
no-defun-allowed
Shinmera: That was a slight simplification, they said any free software was worthless. Normally I'd be laughing, but no one there disagreed there. On the other hand, they could have been laughing internally as well.
21:50:27
mfiano
All my work is worthless, in the fact that it isn't usable by others, is broken until I finish it, and is unknown by others...but I still think it is very _worthwhile_ to work on given my goals of bettering myself and the hopeful one day it will at the very least be usable to me (and others would be a bonus)
21:51:41
no-defun-allowed
Pretty sure there is no network stack (and/or operating system) without any open-source components, including proprietary ones, so I wonder how they didn't contradict themself by being able to write that.
21:53:06
no-defun-allowed
What I read was straight slander, and there's no point discussing that in itself, but that it was taken remotely seriously is telling.
21:58:15
no-defun-allowed
My thought process went something like "Here's my audience I suppose, if anyone would immediately be interested in e.g collaborative filtering for moderation it'd be them, and they're now saying no open-source program has done anything good for society. And half my time these days is spent cleaning up code and writing documentation. How kind of you!"
22:31:51
dim
I just cleaned my cache, too, so that might be related (in that it's trying to compile something?)
22:32:59
dim
anyway I wanted to hack in CL and/or pgloader this vacations, but I guess I'll do something else instead :/
22:39:49
fiddlerwoaroof
dim: what are you using? I'm on an x86-64 MBP, my M1 sees a lot more SIGABRTs with sbcl
22:41:18
dim
yeah except if you use/develop anything that doesn't know how to process EINTR when doing open(2), like Postgres and most of the source code I work with
22:41:49
dim
and except if you have hardware that doesn't support BigSur yet, too (I'm still waiting for drivers updates for an audio interface)
22:47:02
dim
Condition of type: SIMPLE-ERROR ; Unable to create pipe C ; library explanation: Too many open files.
22:47:30
dim
I had a nice shot tonight, won't happen again anytime soon if I must first fix all those things
3:19:31
nij
[crossed-post from #guix] Any guixers :)? Is there any idea how to use quicklisp on a guix system? NixOS seems to have a work-around.. but I haven't found any for guix - https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lisp-modules/quicklisp.sh
7:14:14
rain3
hi is the source for this available anywhere ? https://common-lisp.net/project/erlang-in-lisp/
7:38:37
varjag
is there special wisdom in intercepting socket-errors in postmodern's with-connection instead of letting the application handle it?