
@samth I may have gone a little overboard…. but I’m now able to run the GUI tests while watching what the tests are doing to the X server in a browser

xvfb container + x11vnc container which turns x server into vnc server + websockify container which gives access to vnc server over websockets + nginx with novnc, which is a client web app somebody made that shows you a live feed of a vnc-over-websocket server in a browser window

Woot

@samth I haven’t figured out why the Travis build is hanging . I’ve tried a few Linux builds, including ones with the same package set as on Travis, but didn’t provoke the problem.

@mflatt I’ll push a PR which runs the file tests in non-quiet mode

can someone explain how this program typechecks? #lang typed/racket/base
(define (f (x : Integer)) #\|: Integer\|# x)
(ann f (-> Natural Natural))
(It doesn’t typecheck if I uncomment the return type — that part makes sense to me)

I tried this in the repl too, and (:print-type f)
is (-> Integer Integer)

I think it’s because TR knows that the output is the input

and uses that, together with the input type, in subtyping

(innovation due to Eric Dobson)

thank you Eric Dobson

does typed racket do any logging besides warnings about dead code?

@notjack it does a bunch of internal timing logging

with racket loggers instead of stdout / something else I assume?

I think making TR log everything with the topic typed/racket
or typed/racket/base
might be a good idea

@notjack the tr-timing
logger

yeah

If I wanted to write a library of common validation functions like valid-email?
would it be super cool or awkward and asinine to provide them as contracts?

I suppose there’s nothing to stop me from providing both

super cool

@royall I’d either provide them as contracts like valid-email/c
or use something that’s specifically only for flat data

but I’m usually happy with stuff like (-> valid-email? blah-blah-blah)

using the predicate as a contract

like expectations (self plug)

@ben I think for server programming in particular it’s really useful to have more than just a predicate so error messages for bad requests can be more informative

particularly when parsing string input

k, this is going into my sheet of notes for Obvious Web Stuff Racket Doesn’t Have Yet

@royall that must be a big giant list. :troll:

Yes, that’s why I like it! I’m greedy and vain enough to take all the easy problems for myself

that’s the way to do it :p

question: what “kids these days” editor has the best racket support currently?

do any of them?

i just installed VS code and it has two racket plugins

but I can’t really tell what they do

besides syntax highlighting

I use Atom a lot and vaguely recall a random racket plugin someone wrote that kinda sorta worked, but not by doing any of the stuff drracket does


I think emacs and drracket are the only editors where “racket support” includes actually macroexpanding the code to figure out how to properly highlight stuff

where’s the atom plugin that uninstalls it and installs emacs instead?

there was a time when I wanted to add all the drracket features to atom, and then I (1) realized I like having time to sleep and (2) stopped worrying and learned to love drracket

honestly I’d rather figure out a way for drracket to infer #lang
s for files based on file extensions and then just write #lang
s for all the stuff I’d normally edit in atom…

then I could just open .gitignore
and similar files in drracket and not need two editors

at least, not need two most of the time

I am not actually sure which of intellij, drracket, and atom consume the most memory on my computer

The Terrible Trio

ramsticks quake in fear as they boot up

I should switch to emacs, but I have never managed to stick with it for more than two weeks

@lexi.lambda it’s funny that you have memory issues. That’s always been the complaint against emacs!

oh how far we’ve come.

where emacs isn’t the memory hog.

I love DrRacket and use it all the time

I don’t actually think I have any memory problems, except when I decide to ask maven to do a clean build of my company’s entire monolithic jvm codebase

but I also think it’s important to make sure the experience in other editors is ok

I only just switched to it full time about a month ago after several months of part-time use. My need for editing gigantic yaml files drove me there from Jetbrains and racket-mode helped me to stay

I’m an emacs + geiser user. I think there are things in racket-mode that I’d like, but haven’t plunged yet.

that was my main motivation for wanting to get Atom integration

there’s that json-rpc language editor server project thing that got discussed at racketcon office hours briefly

plus I think it would be super cool to have DrRacket’s binding arrows in another editor, and I think Atom/VSCode could theoretically support that

@notjack specifically for racket?

I do love the binding arrows

@apg there’s a generic json-rpc protocol for language editor stuff that Microsoft was working on for vscode, and at office hours I think @jeapostrophe brought up a desire to get racket to integrate with it

@royall wrt validating email addresses, something I needed to do recently: https://gist.github.com/greghendershott/4019ddefeba6d928637f797e8f0f8ef6 (maybe outside the scope of what you wanted to do, idk)

at first I found the binding arrows sort of weird, but I’ve gotten used to them enough that I don’t really think about them at all except when someone comments on them in surprise while looking over my shoulder while I write racket

@notjack ah, interesting.

I like binding arrows because they’re a really easy-to-explain example of something incredibly cool that racket can do because of how it does things

or at least easy-to-demo

it’s especially fun to show off the binding arrows for (1) non-s-exp languages and (2) macros that do weird things with scope and/or 'sub-range-binders

At one point I considered trying to do the arrows in racket-mode. But I sat down for awhile until the feeling passed.

@notjack yeah, that’s the language server protocol or something like that

I mean there is ASCII art and “overlays”, and even images in some emacs builds https://www.gnu.org/software/emacs/manual/html_node/elisp/Images.html

But yeah. No.

racket-check-syntax-mode
lets you jump among the definitions and uses, that’s it.

I’m curious, @greg, how much did you have to replicate to do Check Syntax’s analysis outside of DrRacket? and how much of that could you just re-use without reinventing? I know Check Syntax does a lot of work to handle things like tail position analysis, inspection of syntax-original?
-ness, and props like 'disappeared-use
, 'disappeared-binding
, and 'sub-range-binders
.

I’ve wondered that too

could you basically just use drracket/check-syntax
directly?

Robby exposed it and I use a list of things produced by it.

neat. so the analysis is entirely reused, and racket-mode “just” has to do the work to map that information onto the current buffer?

The racket side is just https://github.com/greghendershott/racket-mode/blob/master/cmds.rkt#L779-L832

deletes the thing with the photo of me gah

The emacs side is creating a bunch of overlays using that list — and ignoring the arrow info


oh nice!

nice

this is using the json RPC protocol right?

also: hey cool it’s using my delimit-app
package!

@byrondavies has joined the channel