
@philip.mcgrath In general, those types are tricky because 3d syntax exists

I have a Racket application that currently outputs a lot of text to command line. I don’t really care where this text is output to. It could be command line, browser, or GUI application, but it is running in a remote server, so GUI seems to be out of option? What I want is the ability to see output in real time, search and filter messages (with or without tags), support rich structures (colorizable and collapsible structures a la syntax object printing in DrRacket), and save and load. It should be efficient and can handle a lot of messages.
If I run my application in DrRacket, I would get a lot of these features for free, but again, GUI application doesn’t work over remote server. Also, it’s quite lagging and doesn’t have filtering.
Do you have any recommendation? (I feel this should be a pretty standard thing in software engineering). Has anyone implemented this? And if not, what would be the easiest way to implement it?


Maybe, I will take a look more closely, thanks!

Cool. IRL I manage Splunk/ELK stacks which also sound similar (but with a lot more infrastructure.)

One of my colleagues wants to allow requiring a racket file from another user account that the user has read access but not write access to. It’s failing because racket is trying to create a compiled/
folder in that directory. Is there a way to prevent this?

Get the colleague to compile his files?

ah, hm, ok, I sincerely don’t know how to do that from drracket?

sorry, ok, I’ll look into this. This is definitely something I should know how to do but I don’t really know how he’s set it up so it’s hard for me to say how easy that would be

I guess the idea is that once he’s compiled it once, this folder will be there and drracket will no longer attempt write-access to the folder..?

I got lost in the documentation around here: https://docs.racket-lang.org/reference/eval.html?q=compiled#%28def._%28%28quote._~23~25kernel%29._current-load%2Fuse-compiled%29%29

Oh interesting..

If he is using DrRacket he can disable automatic compilation in the “Language” menu.

Yeah, unfortunately I think he is definitely not expert enough to be able to effectively use these, but I will try to digest them :slightly_smiling_face:

ah ok, that’s a good concrete answer. Let’s see if it works.

It will load a bit slower, but it will work (I think).

Do you know where to change it?

So the use case here is: he writes some files in a folder students have read access but not write access to. The students require those files.

What about making a local copy (in a folder with rw access) of the file before calling it?

yeah, that’s not a downright bad idea but it would force him to write some machinery to do this

I think the local copy is a better idea.

I agree but this seems like this should be something that should be easy. Not to imply anything critical, I’m just genuinely surprised it’s so hard to include a file you can read but not write :stuck_out_tongue:

(I love Racket and am surprised I don’t know the answer to this actually, so it surprised me as much as anything.)

What about publishing the file as a package so the student can require it the usual way?

ah possibly but I think it changes way too much for this to be feasible

really the answer would be to integrate it into a set of grading scripts, the point is that the user shouldn’t be able to change the file at all

can you symlink?

hm.. How would symlinking help? I guess I figured the permissions would still be the same.

I agree he’s doing something a bit hacky here but also something I think isn’t too surprising

How about he has a private folder with his files. When done, he copies the folder to a puclic folder, where the students has write access.

that would be fine, but i think in general it’s not good to give students write access to things that could influence others.

so I agree this copying locally idea is better

The student symlinks the file into a folder they have rw access to?

so not a copy

ah! Yes, I see your point. So the observation is that only the folder’s permissions matter

And updates automatically?

yeah, that’s a good idea actually.

I like this one the most

(Ive not tried it!)

I can’t find it the docs, but (require (git …)) worked at some point.

Do symlinks work across disk volumes?

Yes

Hard links don’t

What about Windows?

(I’m assuming the students all have accounts on a Linux box to do their labs or assessment?)

I think windows does symlinks too.

But I’ve never used symlinks on win

yeah, using windows generally breaks things.

although there is a pretty decent solution for students running windows these days, as the WSL stuff is very good

although I definitely just wish none of my students had windows, I think there are concerns there about being exclusionary, so I think WSL has really helped.

Updating the file may break the symlink(depending on how the file is updated) on both win & Linux

I always found that weird in undergrad,; other students were very Windows entrenched

learning linux was like releasing a shackle from my neck or something

I think the most stable soln is to copy the file locally each time the code is run.

@keenencates ugrads are windows entrenched because windows dominates highschools. It’s not their fault.

We’ll see what happens

the test server I use now uses docker and boots up fresh directories, so I don’t really have this issue as much