freenode/lisp - IRC Chatlog
Search
21:11:21
jfb4
sjl: so to deploy in production on a remote server, would you use the same mechanics of having swank running on remote?
21:20:12
jmercouris
phoe: I'm trying to organize a group of people on github to fork/share responsibility in accepting/reviewing PRs from orphaned repositories
21:24:00
jmercouris
jackdaniel: I assume you are correct about it's purpose, therefore this would seem to serve a different one
21:28:15
jmercouris
Xach: What are your criteria for forking/accepting new projects? What is your process?
21:28:48
Xach
jmercouris: if someone notices a project with no maintainer, or a maintainer who is actively giving up maintenance, we will add it to sharplispers on github.
21:29:02
Xach
There isn't much process. Sometimes it is done by email. Sometimes it is done through issues or irc.
21:30:06
Xach
jmercouris: "can i join sharplispers" and i respond "ok, what is your github user id" and then i do it.
21:30:54
jmercouris
Xach: can i join sharplispers? can you also make me an admin so that I may add new people?
21:31:27
Xach
In this case, I missed some context. Why do you want to join? Is there a specific project?
21:33:05
jmercouris
phoe: Yes, this is the discussion Xach and I right now, I am asking him to join the group with admin rights so I may add people
21:33:07
Xach
jmercouris: Is there a specific orphaned project you wish to maintain via sharplispers?
21:34:22
Xach
jmercouris: It would help. The goal of sharplispers is not to grow and expand sharplispers, but to keep useful things from falling entirely by the wayside into neglect.
21:35:22
jmercouris
Xach: In order to satisfy goal 1: Keep useful things from falling entirely by the wayside into neglect, it is necessary to 2. Have a large community of members that can sustain themselves over time and maintain a consistent knowledge pool
21:35:42
jmercouris
When you have such a small group of only 8 people, it only takes the loss of a few members for the percent churn to be so great that so much knowledge is immediately lost
21:35:47
galdor
from an outsider who has barely the time to hack some lisp for fun, I'm much more concerned about maintaining quality than having more developers
21:36:23
jmercouris
galdor: This isn't about expanding and developing new projects, one doesn't need to be an expert Lisper to review PR fixes and tests
21:36:51
jmercouris
Of course one must always be careful to avoid misstep, but it is certainly an easier task than programming novel systems
21:37:55
jmercouris
Xach: Sharplispers to me sounds more like a guild than anything else the way you are describing it
21:39:01
sjl
jfb4: if I wanted the thing to be debuggable in production, I could run a swank server in the production process and just make absolutely sure it's only listening on localhost, yes
21:40:22
rumbler31
sjl: I think by default its listening on localhost, you need to explicitly change a global to make swank listen on a specific interfaces
21:42:16
sjl
the only stuff I've "deployed" in CL so far has been some games running under a telnet server. for those I just disable the debugger entirely -- if they crash oh well
21:42:33
galdor
I now just fork what I need, and add everything as submodules in my "site-lisp" repository
21:43:00
Xach
jmercouris: Maybe a guild is a good description. The existing people are those who know and trust each other. People who have asked to join have had a good reputation and history.
21:43:22
galdor
in general you cannot really expect your PR to be merged as fast as you need it (i.e. right now), so having your fork and sending the PR separately seems to be a good idea
21:44:06
jmercouris
Xach: Then what you have, and what I would like to have are two different concepts, groups with a similar mission, but I would like to be significantly more inclusive
21:45:21
Xach
jmercouris: Would you still like to be added, and add cl-string-match and maintain it?
21:45:57
Xach
jmercouris: can you tell me more about the neglect of cl-string-match? Its author seems to be recently active on other projects.
21:46:37
jmercouris
Xach: Yeah, there's a several compiler warnings when loaded, and some incomplete sections of the API IIRC
21:47:38
sjl
jmercouris: https://bitbucket.org/vityok/cl-string-match/pull-requests/ doesn't have any open PRs I can see
21:48:24
jmercouris
and without an update in many many months, I am inclined to believe those things will not be completed
21:48:47
sjl
in the CL world I treat anything that's had commits in the past couple of years as "still active"
21:49:55
sjl
but yeah, if it's missing stuff you want, the first thing to do would be to PR the original repo
21:50:35
sjl
If it turns out that the author doesn't want to maintain it anymore, okay, fork it to an orphanage org (ideally with their blessing)
21:51:32
jmercouris
sjl: What do you think, do you prefer Xach's "guild" approach to a code orphanage, or do you think it should be a larger, growing organization that shares responsibility?
21:52:21
jmercouris
I guess one of the issues with github is there doesn't appear to be some sort of democratic pull request review (as far as I can tell) in which a group of people agreeing on consensus could merge changes, this makes it necessary to find "expert, trusted" reviewers
21:54:20
sjl
I generally prefer finding a particular person who's interested in a project and passing maintainership off to them
21:54:40
jmercouris
sjl: These "project" leaders could emerge in what is part of a project organizations
21:54:43
sjl
having a team of people means no one person owns anything, and there's always an air of "someone else will get around to reviewing it"
21:54:55
jmercouris
I think naturally individuals withn an organization will adopt sections of the "codebase" and take ownership
21:55:13
jmercouris
but in this case, the unit of granularity would be a "repository" within a group of repositories
21:56:21
jmercouris
sjl: After reviewing one or two PRs for a particular repository, I think a user will feel a sense of ownership towards that repository, while at the same time having a group of other individuals to support them
21:56:55
jmercouris
Plus if there is anything I know about Lisp users, I know they will not hesitate to tell you when they think you are wrong, so maybe the group review thing could work quite well anyway :P
22:02:10
jmercouris
I'm looking here, and there seems to be a few interesting features: https://help.github.com/articles/enabling-required-reviews-for-pull-requests/
22:04:19
jmercouris
More of the same topic: https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
22:10:24
jmercouris
Using this API here: https://developer.github.com/v3/pulls/reviews/ I could program somethig that says something like "when there is 75% agreeance on merging a PR, and min 3 users, allow a merge" or something like that, thoughts?
22:26:30
Xach
jmercouris: To be frank, I think you are cuckoo and your ideas won't work out. But I also felt that way about drmeister when he started making a new CL, and that is proving me wrong for a long time now. So I guess I am more inclined to wait and see and cheer if things work out.
22:29:09
jmercouris
A lot of people already told me that nobody would use my browser, but I discovered somebody with a dot-file for my browser! So at there's at least one person using it :D
22:29:28
jmercouris
phoe: I haven't embarked on this journey quite yet, I am still thinking about it, but thank you nonetheless
22:29:40
phoe
Xach: a single person cannot feasibly maintain a central package repository for years with some degree of stability, you are completely bonkers
22:31:02
jmercouris
On one hand, I wish for a bigger Lisp community, on the other I like how it seems to be restricted mostly to experts, I don't wish for eternal september
22:31:35
jmercouris
However "small" the Lisp community is, I think there are enough members to maintain a core set of useful packages as part of an organization
22:35:38
fourier
I guess at the end of the day most used packages are maintained by the same group of lisp enthusiast who know each other for years (via internet of course)
22:37:56
fourier
also there were a couple of community-sharing-etc projects, last one I can remember was cl ultraspec
23:16:39
pjb
tom34: if you're already a programmer. If you're a total newbie, Common Lisp: A Gentle Introduction to Symbolic Computation http://www.cs.cmu.edu/~dst/LispBook/ http://www-cgi.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html
23:49:41
sjl
Is there any standard way to peek at a binary stream in CL? There's peek-char and unread-char for character streams, but I can't find anything for binary streams
0:41:49
sjl
I think I'll probably end up using flexi-streams. My next question is how to check whether a stream supports binary i/o.
0:42:20
sjl
(subtypep (stream-external-format s) 'integer) is close, but doesn't pick up e.g. SBCL's bivalent streams
0:58:58
Xach
fwiw: binary adj. 1. (of a stream) being a stream that has an element type that is a subtype of type integer.
0:59:44
Xach
i agree that sbcl bivalent streams don't look like they can be sussed out by the element-type
1:03:35
jasom
suggestions for wall-clock profiling of sbcl? I am getting about a 1:4 ratio of CPU to wall-clock time, and assume it's I/O bound in foreign libraries, but am not sure if there's a better way than manually instrumenting my code.
1:41:01
jasom
blargh. So sb-sprof has a :mode :time option, which should do what I want. However, I have 8s of wall-clock time and only ~2s worth of samples. If I add a (sleep 2) to the main body of my with-profiling, I get ~4s worth of samples. Anybody know what sorts of thing(s) sb-sprof can't discover runtime from?
1:53:54
sjl
my goal is to have a function users can call which takes a stream and reads the image from it, and returns a Lisp array with the pixel data
1:57:06
Xach
sjl: when i am faced with problems like that, i deal only with binary streams but make it easy to express the ascii codes as characters to be translated to code for parsing.
1:58:09
sjl
which brings me back to my request: how do I detect that they've given me what I've asked for, so I can fail with a nice error message if they don't
1:58:43
Xach
so, a character, a bare code, or a symbolic thingy could match, but obviously only against an integer underneath
1:58:49
sjl
I could live with (assert (stream-supports-binary-ops-p ...) ...) at the beginning of the function
1:59:13
sjl
but I don't want someone to pass a character input stream and get a stack trace from wherever the hell my first `read-byte` function call happens to be
2:00:04
sjl
I was hoping either flexi-streams or trivial-gray-streams might have something, but couldn't find anything
2:01:16
Xach
it's basically a way to get rainer joswig to dig into it, or sam steingold, or a handful of other prolific commenters who aren't usually here.
2:03:02
Xach
sjl: i like the noble goal of a nice direct error like "use a binary stream" but it feels somewhat out of reach to me in this situation
2:03:16
sjl
Streams are used all over the place in CL -- I don't want to have to force users to figure out how to use some weird byte-reading interface
2:04:06
pjb
sjl: this is idiotic. Will you be able to parse the image if the stream is a binary stream of (unsigned-byte 3)?
2:05:37
Xach
sjl: one thought is you could try to read the magic with a read-byte and if it fails, try a read-char, and if that succeeds signal a nice error of some sort.
2:05:59
dmiles
well one thing that is possible (thinking about what pjb is saying) is that you might be able to create a small sanity test for the stream type you get provided and test if certain bytes come back accurate based on a file that you know what should be therer
2:07:05
pjb
sjl: the point is that it's not up to your client to choose the stream type! You must open the file yourself using the kind of stream you want!
2:07:17
Xach
there are a handful of reasons read-byte could fail, so it would be speculative to mention non-binary-ness
2:08:18
pjb
sjl: alternatively, you could parse a in-memory string (or byte vector), and let the client do the I/O.
2:08:59
dmiles
ahah, what pjb said is really agood idea.. copy the stream data to a stream you know the details of
2:09:09
pjb
It's always a good idea to separate the concerns and avoid doing the I/O in the processing code.
2:09:21
sjl
sure, I could provide alternative interfaces. But it should also be able to take an input stream. What if they've implemented their own kind of stream (via trivial-gray-streams) and want to use its functionality?
2:10:39
sjl
I can't avoid interleaving the processing and the reading -- I need to know how much data to read, which is encoded partway through the file header
2:10:54
dmiles
(though i guess is just getting the stream copied correctly is the basic underlying problem)
2:10:56
sjl
I'm not just gonna copy the entire stream contents into a buffer or something. There could be more things in the stream after the file
2:12:39
dmiles
*not* what i am wondering is if you wanted to copy the data out of the stream is even really possible
2:13:16
sjl
Xach: I read an article somewhere that mentioned them, and they seem like a simple way to get graphics in/out, using e.g. imagemagic to reencode at the boundaries
2:13:40
Zhivago
sjl: Presumably you don't care about streams -- just about reading the next N bytes -- so why not just provide a function which does that?
2:14:31
sjl
Zhivago: I care about providing a simple interface to the user, not working around the streams problem by making them provide a function
2:14:42
dmiles
Zhivago: i assume slj is wanting to be able to in most cases be able to extract which accessor will make sense
2:14:58
sjl
I want them to say (read-ppm-from *standard-input*) not (read-ppm-with (alexandria:curry #'read-byte *standard-input*))
2:18:21
Zhivago
sjl: You have stream-element-type which should allow you to automatically select an appropriate accessor, no?
2:19:28
sjl
Zhivago: I want to ensure binary streams, but not exclude bivalent streams like sbcl's standard-input
2:19:33
Xach
it did give me some lemonodor-fame over 10 years ago though! http://lemonodor.com/archives/2004/06/flashy.html
2:22:29
dmiles
actualy what almost sounds reasonable is for the user to &key stream-type for bivaliant streams
2:23:12
sjl
I think Xach's idea of trying to read the magic byte with read-byte first is a good compromise
2:32:12
dmiles
i would have expected the user to use the wrong type of stream even out of no choices so reading for a magic would be required most cases
2:47:59
dmiles
in a program i work with, a user supplies concatenated ascii and binary mixed from FASLs over a socket opened as either ascii or binary .. so in most transmitions i must change the element types based on some headers and even then they tend to lie
3:03:05
Zhivago
dmiles: Just imagine how much simpler it would have been if they couldn't do that. :)
7:19:59
fiddlerwoaroof
So, I've noticed there's been a lot of talk about abandoned libraries and libraries that are about to be abandoned.
7:20:40
fiddlerwoaroof
I'd love to be able to be able to help maintain some libraries, but I don't have much spare time these days
7:56:33
Fare
so no big breakage expected. Actually, Xach and stassats will probably be relieved that I'm not there anymore... unless someone even more radical than I replaces me, of course.
8:35:36
jackdaniel
code doesn't belong to "self-documenting" type either, so maintaining it would require some motivation and time