alexeld
2017-1-23 11:27:53

Hello! I’ve been doing quite a bit of 3D work with Racket + pict3d, but since upgrading to Racket 6.7 I’m seeing the following ~error~ warning:

cpointer?: contract violation any-wrap/c: Unable to protect opaque value passed as `Any` value: #<cpointer> This warning will become an error in a future release.


alexeld
2017-1-23 11:28:45

Looking around on google/mailing lists, it seems that there isn’t a single “nice” fix for such things. Is anyone well-versed enough in Typed Racket to help me figure out what the interpreter is unhappy about?


seamus
2017-1-23 11:54:40

@seamus has joined the channel


samth
2017-1-23 11:58:10

@alexeld this issue will be fixed for that library in the upcoming release


samth
2017-1-23 11:58:34

If you want to try, you could use one of the nightly snapshots


samth
2017-1-23 11:59:22

Also, note that it isn’t a bug in your code


alexeld
2017-1-23 11:59:41

@samth Yeah, apologies for that — I should’ve said it was coming from the pict3d lib.


alexeld
2017-1-23 12:00:01

I’m glad to hear that it’s a candidate for being fixed in the next release, though!


alexeld
2017-1-23 12:00:45

I rolled back to 6.5 because things “just worked”, but I’ll give a snapshot a try and see how it works. Cheers!


fahree
2017-1-23 12:54:22

@leif apparently, the textcomp woes come from scribble using \renewcommand{\rmdefault}{ptm} though I’m not sure which part of the code do that. git grep rmdefault shows nothing in acmart and not relevant things in the main plt repo. This is also bad because it undoes a crucial element of the acmart class file.


fahree
2017-1-23 13:05:09

The culprit seems to be pkgs/scribble-lib/scribble/scribble-load.tex and pkgs/scribble-lib/scribble/scribble.tex


leif
2017-1-23 13:06:24

@fahree sigh….yay latex. :confused:


leif
2017-1-23 13:06:30

Really needs hygeen


leif
2017-1-23 13:06:53

Out of curiosity, what does textcomp do?


fahree
2017-1-23 13:07:44

it allows things like \textrightarrow, a \rightarrow usable outside $$


fahree
2017-1-23 13:08:51

We need to override somehow the scribble.tex file…


leif
2017-1-23 15:29:16

oey…hmmmph…okay


leif
2017-1-23 15:29:18

:disappointed:


pootler
2017-1-23 15:38:05

@pootler has joined the channel


dstorrs
2017-1-23 16:15:56

I have a library of database functions (generic_db.rkt) that was built for my current project, but a lot of the functions are generic things that I’ll want to use in the future. I’d like to lift those functions out into a new library but require / provide them from generic_db.rkt so that the change is transparent to existing code. The problem is that most of these functions have a signature like this: (define (foo … [db (dbh)]) so that you can call them without having to explicitly pass a database handle and they will generate one if needed. I would like to do something like an interface, but not OO — “hey Racket, these functions are intended only for being imported into another library which will provide the dbh function, so don’t worry about that” Is there a way to do that?


dstorrs
2017-1-23 16:16:45

Again, the goal is to be transparent to existing code.


dstorrs
2017-1-23 16:34:28

In other topics, is there anything equivalent to C / Perl / etc’s <stat> function, that will return multiple pieces of information about a file in one call? I’m writing a file-monitoring system that needs to walk down a potentially enormous file hierarchy (millions / tens of millions of files) and record the path, modified date, and size of everything it finds. I’m using (fold-files) and I’d rather not have to do two extra calls / check the file system twice per entry to get modified date and size.


leafac
2017-1-23 16:54:53

I guess one solution to your first question is to have dbh as a Racket parameter of a function. Then the other modules can parameterize at their will.


dstorrs
2017-1-23 17:38:44

That would require all the other functions to change though, right?


dstorrs
2017-1-23 17:43:22

Let’s say I factor all this into “new_db.rkt” and I declare a stub, (define (dbh) #t). Could I then (require “new_db.rkt”) into generic_db.rkt and redefined the dbh function?


dstorrs
2017-1-23 17:45:04

Ah, woot! I can do that with (set! dbh (lambda…)) Cool, problem solved.


dstorrs
2017-1-23 17:49:15

Damn. Nope. Not if I required it in from another module. Argh.


samth
2017-1-23 17:49:53

@dstorrs you can use a parameter and then set the parameter from the other module


lexi.lambda
2017-1-23 17:58:36

a parameter sounds like the right thing here, yes


leafac
2017-1-23 18:05:30

If dbh is a parameter, you can set it with parameterize or by calling dbh like a function with the new value ((dbh (lambda …).


leafac
2017-1-23 18:06:00

Note that the latter has a global effect on the program, so multiple modules might step on each other.


dstorrs
2017-1-23 18:10:33

I just tried this:

;; in test.rkt (define dbh (make-parameter (lambda () 7))) dbh (dbh)

Running it gives me this: #<procedure:parameter-procedure> #<procedure:y_>


dstorrs
2017-1-23 18:10:51

I’m expecting (dbh) to yield 7. What am I not understanding?


leafac
2017-1-23 18:11:41

The result of make-parameter is a function which returns the parameter value. Thus, (dbh) is (lambda () 7). What you want is ((dbh)).


dstorrs
2017-1-23 18:17:26

In that case, I’m not sure how this solves my problem. Here’s what I’m trying to achieve: ;; module: dstorrs/db (define (dbh) …stub…) (insert-row arg1 arg2 [db (dbh)]) …)

;; module: generic_db (require dstorrs/db) (define (dbh) …generates a DB connection…) (provide (all-defined-out) (all-from-out dstorrs/db))

;; module: foo (require generic_db) (insert-row “foo” “bar”) ;; uses the dbh from generic_db


dstorrs
2017-1-23 18:18:47

How do I use parameters to make this happen?


lexi.lambda
2017-1-23 18:20:29

you don’t want to change a single line of code from your library? that seems like an unreasonable requirement


dstorrs
2017-1-23 18:20:32

Actually, I think I need an except-out around the all-from-out dstorrs/db, but that’s a quibble.


dstorrs
2017-1-23 18:21:09

> you don’t want to change a single line of code from your library? that seems like an unreasonable requirement

I’m fine to change anything in the new dstorrs/db or previously-existing generic_db modules. I’m not fine to change anything that uses generic_db.


lexi.lambda
2017-1-23 18:21:57

then you’re probably stuck. it sounds like you currently have two things that are tightly coupled, and you want to make them loosely coupled, but you can’t really change that without at least a minor change in your consumer.


lexi.lambda
2017-1-23 18:22:59

that’s not really a big deal, though, is it? you’d only have to change one thing (the thing that defines dbh), so you could extract your library, then update your consumer in the one place.


dstorrs
2017-1-23 18:23:04

Suppose I have dstorrs/db offer a mutator for dbh and generic_db uses that mutator to redefine dbh to something workable?


lexi.lambda
2017-1-23 18:23:28

well, that’s precisely what using a parameter would get you


dstorrs
2017-1-23 18:23:49

> that’s not really a big deal, though, is it? you’d only have to change one thing (the thing that defines dbh), so you could extract your library, then update your consumer in the one place.

I think perhaps I’m confused. Are you defining ‘consumer’ to mean the generic_db module which will use dstorrs/db, or are you defining it to mean absolutely everything that uses the generic_db module?


dstorrs
2017-1-23 18:24:34

Because, like I said, I’m fine to change generic_db. I’m not fine to change every file that uses generic_db.


lexi.lambda
2017-1-23 18:25:17

ah, ok. generic_db is part of the client code, from a library/consumer POV


lexi.lambda
2017-1-23 18:25:46

but you could define dbh as a parameter, then change dstorrs/db to use the default value ((dbh)) instead of (dbh).


dstorrs
2017-1-23 18:27:16

Yes, that would be fine.

generic_db is the existing module. It is used by basically every file in our project. I want to move most of its contents into a new library, dstorrs/db. I need this change to be invisible to all consumers of generic_db, but I’m fine to change anything in dstorrs/db or generic_db


lexi.lambda
2017-1-23 18:28:06

that sounds like it would be feasible then, yes


dstorrs
2017-1-23 18:28:45

Note that most consumers of generic_db will call the dbh function as (dbh) and will expect to get back a working connection.


leafac
2017-1-23 18:29:08

@dstorrs: If I understand you correctly, what you’re trying to do is have generic_db change the meaning of the binding dbh from dstorrs/db. By design, the module system prevents that. For a good reason, too, otherwise the writer of dstorrs/db wouldn’t be able to reason about the module in isolation. Modules wouldn’t compose well.


dstorrs
2017-1-23 18:29:55

Yes?


lexi.lambda
2017-1-23 18:31:03

you could name the parameter something more descriptive, like current-get-db-connection, then define dbh as (define (dbh) ((current-get-db-connection))).


lexi.lambda
2017-1-23 18:31:18

that would keep the interface identical to your code


dstorrs
2017-1-23 18:31:33

Cool, that sounds perfect.


leafac
2017-1-23 18:35:16

And note that using parameters—and the façade proposed by @lexi.lambda—is relying on mutating what’s under the parameter, but the meaning of current-get-db-connection remains unchanged: it’s always a parameter of a function.


leafac
2017-1-23 18:36:56

That’s why the module system is happy. Because when defining dbh like @lexi.lambda proposed, you’re acknowledging that you don’t know exactly what the current-get-db-connection is going to look like.


leafac
2017-1-23 18:37:19

You just trust the users to parameterize it with suitable functions.


dstorrs
2017-1-23 18:38:03

If I understand correctly, this is how it would work?:

;; dstorrs/db (define current-get-db-connection (make-parameter thunk)) (define (dbh) ((current-get-db-connection)))

(insert-row arg1 arg2 (db [(dbh)] …stuff…) (provide (all-defined-out))

;; generic_db (require dstorrs/db) (define (dbh) (parameterize current-get-db-connection (thunk …make a real connection) ((current-get-db-connection))) (provide (all-defined-out) (except-out (all-from-out dstorrs/db) dbh))

;; foo (require generic_db) (insert-row “foo” bar")


dstorrs
2017-1-23 18:38:35

Or should I not be exporting dbh from dstorrs/db ?


leafac
2017-1-23 18:45:15

Not quite. Think of something more like: (module dstorrs/db racket (provide (all-defined-out)) (define current-get-db-connection (make-parameter (lambda () (error "...")))) (define (dbh) ((current-get-db-connection))) (define (insert-row arg1 arg2 [db (dbh)]) "...")) (module generic_db racket (require (submod ".." dstorrs/db)) (provide (all-from-out (submod ".." dstorrs/db))) (current-get-db-connection (lambda () "make a real connection"))) (module foo racket (require (submod ".." generic_db)) (insert-row "foo" "bar"))


leafac
2017-1-23 18:49:38

Please note that requiring generic_db has a global effect on the program. I.e., there can only be a single default database connection in the program at a time. But that makes sense, right? Otherwise, how would we know which connection to use when db hasn’t been explicitly set when calling insert-row?


dstorrs
2017-1-23 18:57:26

lang racket is the same as "(module foo racket", right?


samth
2017-1-23 18:58:01

yes


dstorrs
2017-1-23 19:02:31

Okay, good. What is the difference between (require foo) and (require (submod ".." foo)) ? I’m looking at the Reference article on submodules and it makes it sound like they are used when both modules are defined in the same file.


lexi.lambda
2017-1-23 19:18:08

(require foo) is equivalent to (require (lib "foo")), which requires the external library, so it has nothing to do with submodules. however, you might be thinking of (require 'foo), which is equivalent to (require (submod "." foo)).


dstorrs
2017-1-23 19:34:52

The docs say: “Although a submodule is lexically nested within a module, ” I’m reading this to mean that the submodule is in the same file as the module of which it is a submodule. Is that correct?


samth
2017-1-23 19:35:11

yes


leafac
2017-1-23 19:36:04

The reason I wrote the code this way was to show you the concept in a single runnable file :slightly_smiling_face:


dstorrs
2017-1-23 19:36:52

Ah. That makes a little more sense. I’ve been reading and re-reading the docs on submodules trying to figure out why the heck you’d done it that way, since it seems exactly counter to the goal. :stuck_out_tongue:


leafac
2017-1-23 19:37:56

:+1:


dstorrs
2017-1-23 19:38:22

I’m also finding the submodule docs to be clear as mud.


dstorrs
2017-1-23 19:38:34

Particularly thick mud at that.


leafac
2017-1-23 19:38:45

Which documentation are you reading, specifically?



leafac
2017-1-23 19:39:30

The reference is for the initiated. Try the Guide, instead: http://docs.racket-lang.org/guide/modules.html



dstorrs
2017-1-23 19:46:21

Yep, that makes much more sense. Thanks.


dstorrs
2017-1-23 19:47:52

> “The reference is for the initiated.”

This is a fact with which I have become painfully familiar. I find myself terribly ~smug~ pleased every time I’m able to use the reference and grok what it says.


leafac
2017-1-23 19:56:32

I’m not surprised to read that. I went through the same process when I started to learn Racket myself, a couple of months ago :slightly_smiling_face: I believe that the reference is useful when you already know what you’re doing, and just need to check the details while in the middle of a coding section. When learning new concepts, the Guide is best. I did a deep dive and read the Guide from cover to cover when first getting into the language.

It’s important to know which documentation to read, but I think that’s what makes Racket’s documentation so amazing. Most software only has one level of documentation, either tutorials or inscrutable man pages. Racket’s documentation caters to all needs.


dstorrs
2017-1-23 20:14:26

It is definitely the most attractive documentation I’ve ever read, the Reference is very thorough, and for the most part the Guide is very strong. I think their failing, however, is the way in which they are rendered. They are in the repository as tiny chunks of Scribble without obvious connection to how they exist in the final output. There are some pieces that I have wanted to suggest changes to, but the literate-programming way in which the docs are assembled makes that extremely difficult. The first time this came up I spent 5–10 minutes thrashing around the repo trying to find the relevant piece so I could submit a pull request, then gave up. Since then I haven’t bothered, which itches at me.


leafac
2017-1-23 20:20:25

Do you remember what it was? Or, at least, in which project it was?


samth
2017-1-23 20:21:02

@dstorrs would you find it easier to contribute if the whole reference was in one source file?


dstorrs
2017-1-23 20:22:29

> Do you remember what it was? Or, at least, in which project it was?

I don’t, sorry. There have been two or three such instances, though. One of them was a trivial grammar error, but the others were minor yet substantive.


dstorrs
2017-1-23 20:22:56

> @dstorrs would you find it easier to contribute if the whole reference was in one source file?

I would. Or, at the very least, if there was a single file with clear directions on how to locate the thing that I needed to update.


dstorrs
2017-1-23 20:24:14

I have no problem working with Scribble snippets as long as I don’t have to search around for them. If the correspondence between “where it is on page X” to “which repos and where in that repos” were obvious then I would be much more willing to take the time.


samth
2017-1-23 20:24:31

thanks, that’s helpful


dstorrs
2017-1-23 20:24:38

Maybe once I understand the current system it would be obvious, but it is very much NOT obvious to a newcomer.


leafac
2017-1-23 20:24:44

I ask that because maybe you hit a project that was particularly odd in structure. But, for most projects, a simple “Search in project” on GitHub suffices. Even that might not be necessary, since most documentation lives in the “scribblings/” folder of the particular project.

But I guess the best solution would be to have a “edit on GitHub” link in the documentation. Do you think that would help?


dstorrs
2017-1-23 20:25:18

> But I guess the best solution would be to have a “edit on GitHub” link in the documentation. Do you think that would help?

That would be ideal.


dstorrs
2017-1-23 20:27:05

> Even [searching] might not be necessary, since most documentation lives in the “scribblings/” folder of the particular project.

There are about a dozen different Racket repos on Github. If I wanted to edit the docs on ‘local-require’ (I don’t, but it’s open in front of me and therefore makes a good example), where would I look? https://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._local-require%29%29


ben
2017-1-23 20:27:53
  1. figure out what package exports local-require
  2. find that package on github
  3. search on github, or clone the package & search

ben
2017-1-23 20:28:09

there’s “almost” an algorithm … but yeah I’ve been thinking about how to add an “edit on github” button


ben
2017-1-23 20:29:00

I think an @github-button["github-url"] function would be easiest to implement


dstorrs
2017-1-23 20:29:05

Asking people to submit doc changes is a big ask. Given that they are willing, asking them to open Github in their browser is probably fine. Asking them to “figure out” ANYTHING from there is a huge ask.


samth
2017-1-23 20:29:06

here’s a somewhat different algorithm


dstorrs
2017-1-23 20:29:22

If you want contributions from the general community, it needs to be dead simple.


samth
2017-1-23 20:29:43
  1. go to the local-require docs page


samth
2017-1-23 20:29:54
  1. go to the top of the page

samth
2017-1-23 20:29:59
  1. click on the title

samth
2017-1-23 20:30:17

that will show something like “Link to this section with @secref["require" #:doc '(lib "scribblings/reference/reference.scrbl")]


samth
2017-1-23 20:30:25
  1. Open DrRacket

leafac
2017-1-23 20:30:40

Here’s how I do it: 1. Go to the top of the documentation page, find which part it talks about. In this case, Racket the language. 2. Go to racket/racket. 3. Seach 4. Find.


samth
2017-1-23 20:30:51

Hit Ctrl-Shift-O and type in “scribblings/reference/reference.scrbl”


leafac
2017-1-23 20:30:59

Coming to think of it, I agree, it’s not ideal :slightly_smiling_face:


dstorrs
2017-1-23 20:31:01

A) How would I know that? B) I don’t use Dr Racket and am not willing to open another application just to contribute a small bit of docs.


samth
2017-1-23 20:31:23

that’s the top of the reference, and unfortunately you have to find which part of it wrote that


samth
2017-1-23 20:31:39

B: if you use racket-mode, I think it’s the same keystroke


dstorrs
2017-1-23 20:31:42

C) How would I know that it’s in racket/racket?


dstorrs
2017-1-23 20:31:56

samth
2017-1-23 20:32:24

I suppose my algorithm only works for things you’ve cloned locally


dstorrs
2017-1-23 20:33:02

sardonic look Yes, well, I haven’t done that and I suspect that the majority of users have not either.


leafac
2017-1-23 20:34:01

The link you sent is part of the “The Racket Reference”, thus racket/racket. But that’s because I invested the time to learn this. Of course, you’re completely right, passing-by contributors wouldn’t go into the trouble :slightly_smiling_face:


samth
2017-1-23 20:34:25

sure, but just making it easy to contribute to docs for the things you’ve checked out (which are probably the things you know best) would be already valuable


leafac
2017-1-23 20:34:37

I wonder if there’s already ongoing work on a “Edit on GitHub” button?


samth
2017-1-23 20:35:04

@leafac I don’t know of any


dstorrs
2017-1-23 20:35:05

Given that this is https://docs.racket-lang.org/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._local-require%29%29 I would have expected it to be in either: Repos: scribble [first choice] Dir: reference/require/local-require.scbl


dstorrs
2017-1-23 20:35:09

Or something similar.


dstorrs
2017-1-23 20:35:27

Or: Repos: Racket Dir: reference/require/local-require.scrbl


leafac
2017-1-23 20:36:41

@samth: Would you say that this is the correct place to start moving in that direction? Or should I target somewhere else?


samth
2017-1-23 20:37:08

the scribble code is certainly the right place


leafac
2017-1-23 20:37:16

(Hang on a second, Slack’s Markdown doesn’t support links? :disappointed: )


samth
2017-1-23 20:37:44

you’d probably need to use the pkg system to figure out where a given file came from


samth
2017-1-23 20:38:08

and then figure out (using the same mechanism as raco pkg update --clone) what the relevant github repo is


samth
2017-1-23 20:38:47

and maybe add a similar drop down when you click the title



samth
2017-1-23 20:40:04

all of section 2 of the reference is in that file


leafac
2017-1-23 20:40:43

Hmmm, I’m kind of inclined in going on a different direction and following @ben’s idea: adding a @edit-link[”http://…”] instead of automagically generating the links. Yes, it adds the burden on the authors, but is explicit and correct.


dstorrs
2017-1-23 20:41:06

> @dstorrs it’s actually here: https://github.com/racket/racket/blob/master/pkgs/racket-doc/scribblings/reference/syntax.scrbl#L889

Without wanting to sound TOO snarky, I will suggest that perhaps that is not the most obvious place that a newcomer would look.


leafac
2017-1-23 20:41:32

Point taken :slightly_smiling_face:


samth
2017-1-23 20:42:35

I think the reality of the size of the code base makes it hard to have as simple a path as a newcomer might expect


leafac
2017-1-23 20:43:06

Furthermore, having a link subsumes the need of having a predictable path for the file.


dstorrs
2017-1-23 20:43:25

One cheap solution: Have a form somewhere with two big text boxes. People drop the existing text into the top one and the suggested text into the bottom. The form submits to a queue that community members with time and experience monitor. It’s their job to sort out whether the change should be accepted and, if so, to where.



dstorrs
2017-1-23 20:44:11

It would (a) capture most of the value very quickly and (b) provide significant incentive for a better system to be created.


leafac
2017-1-23 20:44:15

@ben: You beat me to it. I almost opened a duplicate issue :slightly_smiling_face:


ben
2017-1-23 20:45:11

@dstorrs can we use the mailing list instead of a form? (I realize that’s one more barrier to entry)


samth
2017-1-23 20:45:48

I think automated posting to a mailing list would be not so good


ben
2017-1-23 20:45:58

oh, I didn’t mean automated


dstorrs
2017-1-23 20:45:58

You can, but it will decrease participation. How about a form that sends email to the list?


dstorrs
2017-1-23 20:46:19

Put a button in the docs sidebar that pops up the form, you’re good to go.


dstorrs
2017-1-23 20:46:30

Definitely not ideal, but it’s cheap.


samth
2017-1-23 20:48:35

Matthew Butterick had a nice comment form on http://beautifulracket.com/, but it seems to be gone


leafac
2017-1-23 20:51:40

Not gone, just more subtle. Click on the flag on the left of the paragraph.


leafac
2017-1-23 20:52:11

I used that form a lot when first reading the book. It’s even more effective than a GitHub link. More noisy, too.


dstorrs
2017-1-23 20:53:43

You mean the flag that does not exist until I point my mouse, not at the thing I’m interested in, but to the left of the thing I’m interested in?


leafac
2017-1-23 20:54:11

Yes, that one :slightly_smiling_face:


dstorrs
2017-1-23 20:54:14

And doesn’t exist at all if I’m using NoScript?


leafac
2017-1-23 20:54:28

You got it. Exactly that! :slightly_smiling_face:


dstorrs
2017-1-23 20:55:01

A thing which I grant you relatively few people will be using, but the ones who are will disproportionately be programmers — the exact audience of this material.


leafac
2017-1-23 20:55:08

Previously, the form appeared just by clicking on the paragraph. I have to say I prefer it like it’s now. It was always getting in my way before :stuck_out_tongue:


dstorrs
2017-1-23 20:56:04

On the subject of UI, why does http://pkgs.racket-lang.org\|pkgs.racket-lang.org have such a non-standard system for account creation / password update / reset?


dstorrs
2017-1-23 20:56:10

And package upload, for that matter?


ben
2017-1-23 20:57:07

leafac
2017-1-23 20:57:18

Are you referring to how it sends a token on your email before it asks for a password?


dstorrs
2017-1-23 20:58:01

Standard UX for uploading something is: form appears, fill in fields on form, browse to file, click ‘submit’. Not “things magically update in the background and the package appears on the live listing with no notice to the user at some point during the updating process that I am not actually certain of.”


dstorrs
2017-1-23 21:00:44

> Are you referring to how it sends a token on your email before it asks for a password?

I hadn’t even noticed that one but yes, let’s go with it. Also, standard UX would be:

1) Click: Login 2) IF you have an account, fill in fields + click Submit ELSIF want-an-account, click “Don’t have an account? Register!” ELSIF need-reset, click “Forgot password?”


lexi.lambda
2017-1-23 21:01:18

Pull requests are welcomed. But my guess is that Racket does not have many UX designers contributing to the project.


lexi.lambda
2017-1-23 21:01:34

@ben’s link is better, though.


dstorrs
2017-1-23 21:01:35

That’s my point, though — this isn’t the standard.


dstorrs
2017-1-23 21:01:58

Basically every single site in existence does it the way I’ve described. Someone had to actually sit down and think this up. It feels like the person who wrote the page had just discovered async JS and wanted to use it for everything.


dstorrs
2017-1-23 21:02:20

Right? Can you name another site that handles login/register/reset the way pkgs does?


leafac
2017-1-23 21:02:34

My main UX problem with http://pkgX.racket-lang.org\|pkgX.racket-lang.org is one you didn’t mention: the page forgets that I was logged in, and I have to click on Login. But then it remember without me having to type in my password :stuck_out_tongue:


samth
2017-1-23 21:03:44

@dstorrs http://pkgs.racket-lang.org\|pkgs.racket-lang.org was indeed developed by someone who prefers that style of interaction


samth
2017-1-23 21:03:57

but most other people don’t


samth
2017-1-23 21:04:11

which is part of why a new UI was built, which will become the main one soon


lexi.lambda
2017-1-23 21:04:15

Racket does a lot of things differently from other programming languages. Can you name another language with the same macro system? (I agree with you, fwiw, but the site is open source.)


leafac
2017-1-23 21:05:15

But, regarding the signup process (I signed up two days ago) my thought was “hey, this is different; and it’s also cool! Prevents someone from signing up with my email on a service that I’ll someday want to sign up myself.” Admittedly, that never happened. But it’s cool anyway :slightly_smiling_face:


samth
2017-1-23 21:08:15

@leafac I haven’t seen the behavior you describe on http://pkgn.racket-lang.org\|pkgn.racket-lang.org, but if you do you can report a bug here: https://github.com/tonyg/racket-pkg-website/


leafac
2017-1-23 21:14:05

I guess I should, shouldn’t I? https://github.com/tonyg/racket-pkg-website/issues/37 :slightly_smiling_face:


fahree
2017-1-23 22:04:41

@mflatt Hi! It looks like racket/pkgs/scribble-lib/scribble/scribble-load.tex defines \newcommand{\renewrmdefault}{\renewcommand{\rmdefault}{ptm}} which defeats the settings of acmart. What is the recommended way to override this setting? (trying to get it working with @leif)


fahree
2017-1-23 22:47:30

OK, looks like I can put \renewcommand{\renewrmdefault}{\relax} in my acmart/style.tex and that takes care of it.


fahree
2017-1-24 01:06:56

But that gets evaluated too late. So instead I re-redefine \rmdefault to restore libertine with \renewcommand{\rmdefault}{LinuxLibertineT-OsF}