
Hi Everyone, Looking forward to see all at Racketcon.

I am especially excited because it will be my first racketcon online.

there are two ways of joining -one is just your email for using the group via email. It probably hasn’t associated the group with your google account

@mbdeutschmann has joined the channel

@lelerabi has joined the channel

Thanks that did it.

I just checked out the gather.town link for next week’s RacketCon. Is that it, just sign into Gather next week, no registration needed? Question: If I sign in with just my name, how do you know it’s me? (BTW, apparently FSF staff just got an email from me, they forwarded a copy to me, I said “I didn’t write that!“, they said “We know.” Apparently it happens all the time.

@badkins I don’t actually understand your configuration sample. Mine turned out like this:
server {
listen 1116 ssl;
server_name <http://api.metroymcas.org\|api.metroymcas.org>;
ssl_certificate /etc/letsencrypt/live/api.metroymcas.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.metroymcas.org/privkey.pem;
location / {
proxy_pass <http://localhost:1117>;
}
Anyway, thanks very much for this idea. I think this might really solve the problem for me here. (I’ll monitor it for two weeks then report back to you guys.) I will also continue to try to pinpoint how to reproduce the problem. Thanks again!

Registering is not required

I don’t know where I got mine from originally, but maybe the difference is being able to use multiple Racket web server processes. By using proxy_pass with upstream racket, nginx will distribute requests to as many servers as are listed in the upstream racket block. Glad you got something working.

The try_files
statement is what causes nginx to handle static files. If it can find the file, it just returns it; otherwise, it’ll delegate to Racket.

Got ya. That makes sense — multiple Racket web servers. (I’ll hope I get to need that some day. It’ll mean I have more income!)

how does one build a struct with keyword args? (struct person (first last))
(person #:first "bob" #:last "smith")

@jestarray, struct
doesn’t allow for that. You could try a third-party package, like https://docs.racket-lang.org/struct-plus-plus/index.html.

Also in rebellion https://docs.racket-lang.org/rebellion/Record_Types.html

Ah, I didn’t realize rebellion had its own structs.

An alternative is to define the structs in separate file. Then omit the default construct when exporting - and export a smarter construct that wraps the default one. Using rename-out
it looks like the default constructor from the outside.

Yeah, this ^^ is what I did in gregor
. There are a few things that can trip you up if you decide to go the DIY route, like getting a match expander attached to the same identifier as the constructor and getting the struct printing how you want it.

attaching the match expander and getting the printer to include field names are both things that rebellion records do automatically :grin:

@jasonqxu has joined the channel

Regardless of your web traffic volume, it’s probably a good idea to use 1 Racket web server process per CPU core, so even if you’re on a small VPS, you might still have more than one CPU core.

Good point. I’m gonna do that then. I’ve got 8 cores.
%cat /proc/cpuinfo \| grep processor
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7