gknauth
2017-11-22 11:37:16

Regarding PLAI, there was a time when Shriram’s CS 173 course at Brown, which used PLAI, was online, and I took the online public version the one time he made that an option. The material was interesting but one thing I remember vividly was how engaged and excited the Brown students were—they were bright and lively to a degree that exceeded what I’d seen at Harvard, where by comparison it seemed professors had to encourage students more to participate. Maybe that is Shriram’s style, to make a class exciting, to make it impossible for students to not engage, but the Brown students certainly responded with great enthusiasm. As for the PLAI material itself, I guess the takeaway for me was that it got you to think out of the box, to go in language directions uncharted and new, to see Racket as the toolkit that could help you design and implement whatever crazy idea might be in your head. I guess from a practical (“industry”) point of view, if you were designing a DSL, PLAI would help you see how to do that.


alexharsanyi
2017-11-22 11:59:55

@alexharsanyi has joined the channel


gknauth
2017-11-22 12:03:21

Regarding DrRacket as an IDEA, it’s improved a lot in recent years, to the point where I do most of my Racket coding in DrRacket now, and less in Emacs. Emacs is still my go-to tool to do anything that other tools can’t do, but where my Emacs:DrRacket ratio for Racket coding used to be 50:50, it is now 90:10 or maybe even 95:5. The arrows in DrRacket are pretty cool, but sometimes there are so many of them and I find myself wondering which ones lead where. The ability to jump to a definition or go to any number of the bindings, and to do rename-all, is very helpful. It’s not as powerful as I find in IntelliJ with Scala in terms of refactoring power, but it’s getting there. There are ways to put in debugging/evaluation breakpoints in DrRacket, but that’s where I find things clunky compared with IntelliJ, where I feel I have very fine control when bugs need to be found and fixed; in the DrRacket world, I find myself resorting to printf-style debugging more often. Things like the macro-expander in DrRacket are pretty bloody amazing and mind-blowing. One thing I found myself wishing for yesterday when I was coding in DrRacket: I was deep in some code, and what I wanted was to click on a function or structure name and be able to launch a little “sticky” (as in the old Mac stickies) window that just had the definition of that function or structure so I could keep it on my screen without having to leave where I was. I asked myself what it would take to implement such a feature. IntelliJ has an auto-complete that is great for typed languages, it shows you the options along with the full type signature. I know auto-complete is controversial in the Racket community but I’ll just say that IntelliJ’s auto-complete speeds my work, at work, appreciably, and that makes the bosses happy, developer “velocity” being the buzzword of the year. What do I miss about Emacs when I use DrRacket? I do use Emacs key-bindings (not everyone does), so I miss the kill-ring and the ability to assign points to registers sometimes. The DrRacket version of Emacs’ set-mark is strange in that if you’re not careful, after you copy a region from here to there, the region is still active, so if you do more typing without doing something to unhighlight the region first, you can accidentally blow it away (and then you get it back with Undo or a second paste). One little DrRacket feature I love is the ability to highlight s-expressions with an easy key chord and move them from where they are to where I’ve just decided they need to be instead. Every time I do that, which is literally dozens of times a day, in refactoring usually, I wish the parenthesis-hating people were nearby so I could ask them, “So how do you do such easy grouping and rearranging without parentheses?”


samth
2017-11-22 16:54:22

@dustin if there are particular things you’d like changed in DrRacket, then that would certainly be a reasonable thing to discuss


samth
2017-11-22 16:54:49

Also, the logo is quite recent — I don’t think we’re likely to change it again soon


ben
2017-11-22 17:03:25

I have a “reference to a module that is not available”. The way to fix that is adding more requires (somewhere), right?


samth
2017-11-22 17:05:01

@ben yes


samth
2017-11-22 17:05:30

basically you generated an identifier that the residual program does not require


samth
2017-11-22 17:05:43

usually because there’s a dynamic-require of the module doing the actual generating


dustin
2017-11-22 17:06:02

@samth I could probably give better feedback after using it more. But I will say, after going through Racket’s documentation, I don’t think there’s a better language to learn programming in. My goal is to learn Rust, and then move into a bit of Haskell. I don’t feel like with Racket that I’m completely perplexed. With Haskell, I could stare for hours trying to figure out why something works and doesn’t.

The logo is decent, and as mentioned, maybe it’s not a priority. It’s hard to complain with such good documentation and practicality is better. I see Racket also has a section for systems programming, which is great. My brain is slowly digesting certain concepts, and I think going from super-hard to slightly easier and less verbose, is something that makes me appreciate languages like Racket.


samth
2017-11-22 17:07:25

@dustin I think most of us quite like the current logo


dustin
2017-11-22 17:09:53

No, don’t get me wrong—it’s great.


dustin
2017-11-22 17:14:55

When everyone was talking about logos a few weeks ago, I proposed something for Hackett, but I know Alexis has other priorities than logo design, like, language design. I can see now why she wouldn’t want to focus on that just yet. As a front end person, I think we focus too much on aesthetics and not as much usability. But if you want to see what I had someone come up with, here’s the logo. I think it’s decent but maybe someone can provide better feedback. There were 3 other variations but I chose this one out of uniqueness. We’d sort of just played around with this.


dustin
2017-11-22 17:15:09

me1
2017-11-22 19:24:45

is there a DrRacket keyboard shortcut to go to the end of a line, even when the line is word-wrapped at the edge of the window? The End key seems to only go to edge of window.


me1
2017-11-22 19:25:28

^pardon if that’s answered somewhere easily; I looked in the editor itself and didn’t see anything


slack1
2017-11-22 23:06:50

I’m curious myself how Racket people do the nitty gritty of editing


dustin
2017-11-22 23:34:11

I’d wondered about that myself, but it looks as though there’s some documentation on it: https://docs.racket-lang.org/drracket/


abmclin
2017-11-22 23:36:55

We just grow extra fingers over time.


greg
2017-11-22 23:48:14

@me1 C-e (CTRL + e) works for me? (If it doesn’t for you: I have Emacs keybindings on for DrRacket, plus I just tried that on macOS where C-e tends to do that generally.)


greg
2017-11-22 23:54:20

un-checking the Enable keybindings in menus option. I attached a screenshot because this is kind of buried under preferences and it just took me a long time to find it again, so trying to save you the same. :slightly_smiling_face:


dustin
2017-11-22 23:55:11

Also, I think column width is a matter of preference in Racket. I know some languages provide a recommended length in their style guide. It doesn’t look like Racket adheres to one. Personally, I like somewhere between 70–80 characters, but I’m seeing recent commits in the Racket repo nearly 120. I think a lot of it depends on your screen resolution, and preference really.

In DrRacket where to set a preferred width:

https://i.imgur.com/kgFyQ7J.jpg

More info in the documentation:

https://docs.racket-lang.org/style/Textual_Matters.html#%28part._.Line_.Width%29

That’s cool; I didn’t know you could use Emacs keybindings!


greg
2017-11-22 23:56:47

@dustin Yes I agree that “consider not having the line run off the right edge of the window” is the ideal answer when possible. :slightly_smiling_face:


dustin
2017-11-22 23:58:17

I only know that because Haskell has some very strange rules for things, and I think Rust has a preferred column length.


greg
2017-11-23 00:00:36

I’ve seen some quite old Racket source code where things nest very deeply (and off the right). But in fairness I think that’s at least partly because old Racket (back when it was called PLT Scheme) lacked certain constructs, or it’s a part of Racket that’s more primitive than where the constructs are defined. And so there’s a lot of nested let-values and so on.


greg
2017-11-23 00:01:31

When I encounter that kind of code, I bow respectfully, back away slowly, and close the window.


apg
2017-11-23 00:22:32

ok, so in scribble, @tabular is …. not awesome :smiley:. Is there a better approach to making nice tables that can maybe have headers and things?


apg
2017-11-23 00:28:48

OK, so digging in it’s a little better than I thought, but still pretty rough.


apg
2017-11-23 00:30:05

but it does support “headers” with generouse use of ’cont


apg
2017-11-23 01:03:22

ALSO: thanks to all the people who have contributed such great documentation over the years. As someone who is trying to get my team into a mode of documenting the design of new features as a prereq of actually developing said features, I’ve found myself slowly building out documentation to describe what we currently have.


apg
2017-11-23 01:03:30

it’s a lot of work.


notjack
2017-11-23 01:04:46

@apg honestly I think of Scribble as rackets truly unparalleled killer feature


apg
2017-11-23 01:05:17

except for it’s table support. :wink:


notjack
2017-11-23 01:05:21

;)


notjack
2017-11-23 01:05:47

I think some well-chosen additions to the pict library might help with that


apg
2017-11-23 01:06:57

I think the problem here is actually the fact that scribble supports so many output formats


apg
2017-11-23 01:07:03

(well, in theory)


apg
2017-11-23 01:07:25

you need to define a minimum set of useful features that can easily be rendered everywhere.


apg
2017-11-23 01:07:38

so you can’t just rely on what HTML provides.


apg
2017-11-23 01:08:15

I wouldn’t want pict here, though if I could easily draw UML ER diagrams, then I wouldn’t need tables in the first place.


apg
2017-11-23 01:10:07

I could probably make something not horrible in graphviz for this… so maybe that’s a non-horrible option.I’ve already got other diagrams via graphviz in this set of docs.