[racket-users] Re: Listing All Programs
On Thursday, September 5, 2019 at 3:05:48 PM UTC+2, Adam Golding wrote: > What is the shortest/smallest racket program (ithat enumerates all and only valid racket programs? Given that "valid" means "a Racket program that compiles correctly". As the Racket compiler is Turing Complete and can be changed by the compiled program itself. Then there would be no way to know if the compiler will finish executing or get stuck into an infinite loop. Which means it would resume to the https://en.wikipedia.org/wiki/Halting_problem Right? -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/7da5dd29-d335-4e26-ae91-c12eea5da06c%40googlegroups.com.
Re: [racket-users] on reducing barriers in the Racket community
On Thursday, July 25, 2019 at 9:39:08 PM UTC+2, Atlas Atlas wrote: > For example men in general more aggressive then women, they also pursue different social goals. You cannot ignore this, or blame the men for what they are. You also cannot ignore the fact that people in general driven by their sexuality. This kind of idea is the heart of the problem I'm trying to highlight. Recent (and old) studies show that considering men and women as having different motivations driven by their gender is false and was created by most modern societies as a way to justify social differences by finding a fake reason in "the laws of nature". In the beginning of IT, writing computer programs was considered a low value job and was assigned to women (as always). Then men started to realize that it might be an important task after all, and got rid of women as soon as they found out it was some kind of "engineering", therefore a highest valued job. Barriers were closed, women were left behind. If a woman wants to work in IT today, she has to: - Work twice as hard - Let men get the rewards from her work - Bear with the fact that every time she says something in a meeting, a man will repeat it and get more traction - If she has a blog or a social media account, bear with sexual harassment and rape threats every single day - Bear with more aggressive code reviews - Accept to earn less money and don't get promoted - Be told that she was not able to "seize opportunities" When a woman tough enough to cope with this comes into an open source community.. guess what? She faces the same issues! After having experienced all that, will she accept to be told that "it's natural", that "men and women have different social goals", that "people are driven by their sexuality" ? I'm a man, but I couldn't accept that if it happened to me. I couldn't accept to see the violence perpetuated on me justified by my gender and some kind of "law of nature". I got into IT because I love programming and solving problems. But I must never forget that I got here easily because I'm a man. I must accept that I benefited from some kind of artificial privilege. This is not a blame on me, but a responsibility I must take to make sure that I can help people who don't benefit from such privilege. This is why saying "look, we are open" will never be enough. Companies which say they are "open" are the same which say that they fired this woman because "she didn't fit well", "she didn't have the right spirit", "she didn't come to after-work parties because she can't take jokes". "Look, it's not our fault, she is the one not being open enough". Enough of this, please. Racket is one of the communities in which I feel the most at home, because of threads like this one. Because people actually take the time to think about what we are doing collectively and question our direction every day. I am confident in Racket to be the perfect community to experiment new ways of being an open source community. I am confident in Racket to be exactly the playing grounds in which we can differentiate ourselves from the classic white-male-tech-bro culture that is commonly found in every open source groups. I am NOT trying to make this community restricted to such or such minority group. Everyone is welcome. But we need to acknowledge that even if we welcome everyone, we don't welcome people with the same story, the same background, the same culture. We tend to think that everyone who come here are by default "a smart guy who like lisp languages and has comfortable income". We need to shift from that lens to a broader one. We need to accept that some people might come here with memories of rape threats and bad racist jokes. We need to understand that there is no "one-size-fits-all" way to welcome people in a community. I'd like some parts of the Racket ecosystem to involve women, some part of Racket to involve black people...etc This is in no way a restriction, but an evolution. There is enough room for all of us. Black women programmers are already there. They are just told everywhere they go that they don't "seize opportunity". If we can be the first open source community to prevent that, we can be the best open source community that ever was. Some links to go further (I recommend this wiki to anyone trying to get more insight about this issue): - https://geekfeminism.wikia.org/wiki/Women-friendly_events - https://geekfeminism.wikia.org/wiki/Promotion_to_women - https://geekfeminism.wikia.org/wiki/Women-friendly_forums -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/d94c4624-9e66-40ef-9bda-f3259d3f6702%40googlegroups.com.
Re: [racket-users] on reducing barriers in the Racket community
Thank you very much Matthew and Neil for those refreshing write-ups! I'm really glad to see the question of inclusion, diversity (not the politically charged American meaning), and overall well-being in an mostly online community. DISCLAIMER: Please take what I'm going to say with a distance. It might be shocking for some, or politically inclined/incorrect for some. I am dedicated in fighting racism and sexism in my life and everything written down below is oriented toward that goal. In my personal life, I'm involved a lot into improving the inclusion of women, black people and other often excluded communities into the technology field. >From my experience, I'd say one of the most important point is not saying "we are open, just come", but showing it through visual and overall public communication. Examples: - Show the faces of speakers in conferences, in which we can clearly see that some are black, some are women..etc - Explicitly create some Racket events/workshops dedicated to women (this is NOT so called "reverse sexism", please) - This is more of a personal feeling, but I think embracing functional programming as "a more feminine way" (because you let the program flow naturally) compared to "imperative programming" (which sound very masculine, in control, by shouting orders to a computer) can also be a way to show Racket is different. My point is: Since our society is inherently biased and unequal, simply saying you are open is not enough. To really counterbalance the inequality, we need to *actively* reach a different audience. I know some of you don't agree with that because it feels "political". It feels like Racket is taking side in a fight. But everything in life, especially big human communities, are inherently political, whether they want it or not. If we don't side for women, for black people, for excluded people, we automatically side for the dominators. This is my personal point of view, it has been stated now as an advice in the direction I personally feel is right for any community trying to improve its diversity. You are now free to throw stones at me and happily share your disagreement. I am a thousand times thankful for all that the Racket community has achieved so far. Thank you for making the best language in the world, not only for it's technological background, but especially for it's community and the values of freedom of speech and expression it promotes. I look forward to seeing this community grow and I am happy to be a part of it. Jérôme -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/f58aec8c-bc50-420e-bad9-3a77822f0ebe%40googlegroups.com.
Re: [racket-users] I wrote my first macro ever!
> https://www.mail-archive.com/racket-users@googlegroups.com/msg40201.html This was effectively the best writing I could read about syntax-parse templates and the quirks of using ~@ and ~?. Thank you so much Alexis for those explanations! You rock. On Tuesday, April 30, 2019 at 10:12:15 PM UTC+2, David Storrs wrote: > > Congratulations on dipping into the macro world! It is an interesting, > terrifying, and often frustrating experience. :> > > I see that you've already read Fear of Macros, which is great. In > addition to FoM, one of the most useful resources I've found for > understanding ... in macros has been Alexis King's module 'struct-update', > the code for which is linked below. In addition, she provides a very good > explanation of ... in this thread: > https://www.mail-archive.com/racket-users@googlegroups.com/msg40196.html > which could supplement what Jérôme Martin said below. > > HTH, > > Dave > > struct-update docs: https://docs.racket-lang.org/struct-update/index.html > struct-update code: > https://github.com/lexi-lambda/struct-update/blob/master/struct-update-lib/struct-update/main.rkt > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Re: I wrote my first macro ever!
Looks good to me! On Monday, April 29, 2019 at 9:06:53 PM UTC+2, wanderley...@gmail.com wrote: > [(_ name (~var e element-exp) ...) > Here you can replace the `~var` call with the more classic form `e:element-exp`. `~var` is only required when you want to pass arguments to the class (which, as I was saying, is rare, I discovered it not so long ago). > I am amused by the > power of `...` in templates. > It's definitely powerful! The way `...` works (I'm not gonna explain that right so take it with a pinch of salt) is by examining the previous expression and trying to find syntax bindings inside that expression that have a "depth" and repeat them. So for example, if you bind a syntax attribute with `#'(element ...)`, you give `#'element` a depth of 1 (basic bindings without ellipsis have a depth of 0). If you create a binding inside an ellipsis bound form, you nest it one level of depth further: `((element ...) ...)` has depth 2. If you try using a syntax binding with depth > 0 without attaching `...` somewhere at the end, the macro will crash saying that the ellipsis is missing. So basically, you are free to put `...` anywhere as long a the expression just before contains syntax bindings with the right levels of depth. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: I wrote my first macro ever!
Hello there! I'm really glad you're picking up Racket and enjoying it! I've been through the same paths and struggles before, so thank you very much for posting that piece of experience here :) For your information, here is a syntax-parse version of your macro, which I find simpler to write and understand: (it's basically syntactic sugar over syntax-case, but it's really useful!) #lang racket/base (provide define-enum) (require (for-syntax racket/base racket/syntax syntax/parse)) (define-syntax (define-enum stx) (syntax-parse stx [(_ name (element value) ...) #:with (name-element? ...) (datum->syntax #'(element ...) (map (lambda (elem) (format-id elem "~a-~a?" #'name elem)) (syntax->list #'(element ... #'(begin (define element value) ... (define (name-element? v) (eq? element v)) ...)])) (module+ test (require rackunit) (define-enum unit (dry #\d) (empty #\.) (rock #\#) (water #\~)) (check-true (unit-dry? #\d)) (check-false (unit-empty? #\#)) (check-false (unit-rock? #\~)) (check-true (unit-water? #\~))) To remove that ugly map, which requires transforming syntaxes to list then back to syntaxes, you can use a syntax-class: (begin-for-syntax (define-syntax-class (element-exp unit) (pattern (element value) #:with pred-name (format-id #'element "~a-~a?" unit #'element) #:with variable #'(define element value) #:with predicate #'(define (pred-name v) (eq? element v) (define-syntax (define-enum stx) (syntax-parse stx [(_ name (~var e (element-exp #'name)) ...) #'(begin e.variable ... e.predicate ...)])) It's a bit more complicated at first, but it becomes really powerful once you understand how syntax-parse and syntax-classes work. (the tricky part here is that I'm using a syntax-class that takes the unit name as an argument, which is not so common) Have fun ;) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] How can I include a literal ellipsis in a macro?
On Wednesday, April 10, 2019 at 12:46:49 PM UTC+2, David Storrs wrote: > > Great, thanks! > > On Wed, Apr 10, 2019 at 6:35 AM Sorawee Porncharoenwase < > sorawe...@gmail.com > wrote: > >> Use either (... ...) or (quote-syntax ...). >> > Also if you are using syntax-parse, what I usually do is: #:with *** (quote-syntax ...) Or #:with ooo (quote-syntax ...) Or any symbol you fancy. I find it helps by visually differentiating between the current macro phase and the phase of the macro you are generating. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Struct subtype with default/fixed value of super-type
To go further, if you wonder how to make this work for `match` and inheriting, see this stackoverflow question: https://stackoverflow.com/questions/55262818/how-to-override-a-struct-constructor-while-still-providing-the-struct-metadata-f On Mon, Mar 18, 2019 at 3:08 PM Marc Kaufmann wrote: > While I did know that I could define my own, I was going to do it while > providing-out another function make-fish and make-shark, but it's nice to > know that this allows me to locally define make-fish, while it looks to the > outside like (fish ...). > > Thanks to including sufficient numbers of mundane bugs in my code (all > well-maintained in version control, for quick deployment on docker), I > rarely get to worry about phases - it just isn't where the highest gains > are. :-) > > On Mon, Mar 18, 2019 at 2:46 PM Jérôme Martin > wrote: > >> Once you discover that the default constructor for a struct is just a >> simple procedure that was generated for you, it's not that big of deal to >> just make your own and export it like this: >> >> (provide >> (except-out (struct-out fish) fish) >> (rename-out (make-fish fish))) >> >> All the code relying on it will still work. >> Except I guess if you pass through different phase levels, it becomes a >> bit more complicated because you have a syntax attached at compile-time to >> the identifier. But that's another issue. >> Correct me if I'm wrong. >> >> On Monday, March 18, 2019 at 2:11:46 PM UTC+1, Marc Kaufmann wrote: >>> >>> Yes, I saw that, the problem is that I want to be able to set a >>> (potentially different) default value for the sub-type shark than for the >>> sub-type guppy. So if I set the value to 'big for all `fish`, then I can't >>> do that. Essentially, I'd need an #:auto for every sub-type, but the #:auto >>> refers to a parent/super field. >>> >>> I'll just run with defining a custom constructor. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "Racket Users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/racket-users/TthsE0FZDB0/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> racket-users+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Re: Racket News - Issue 4
On Tuesday, March 19, 2019 at 9:29:00 AM UTC+1, Paulo Matos wrote: > Sure! That's great. I will add it to the submissions for issue 5 or 6. > Thanks! > I can obviously have one more section but the reason I would prefer not > to is because at about ~26 issues per year, I would like to have good > content for a long time coming, if you know what I mean. :) > > Therefore I would prefer to schedule those great langs in the project > spotlight for issues up ahead. What do you think? > Makes sense! Let's put quality before quantity ;) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Simple conditional in web template
On Monday, March 18, 2019 at 4:45:19 PM UTC+1, Brian Adkins wrote: > > Yes, using code would certainly make some things easier, but for the > moment, I'm looking for a template solution. > Oh sorry, I didn't quite catch that! I never used templates, so I don't know. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Simple conditional in web template
Some precisions: You ever need to have a "p" procedure to generate the paragraph (for example from html-lib) or quote it in my example, otherwise it won't work. The trick is to use a quasiquotation (backtick) to render your HTML template, and unquote (comma) to put logic in the template. On Monday, March 18, 2019 at 4:41:41 PM UTC+1, Jérôme Martin wrote: > > (define (my-server-response show-cat?) > (response/xexpr > `(div ([class "my-content"]) > ,(if show-cat? >(p "Welcome to my blog about cats!") >(p "This blog is definitely not about cats.") > > On Monday, March 18, 2019 at 4:26:16 PM UTC+1, Brian Adkins wrote: >> >> How would one translate the following Ruby template into a Racket web >> template (including multiple lines for the if and else clauses) ? >> >> <% if true %> >> >> This will be displayed if true >> >> <% else %> >> >> This will be displayed if false >> >> <% end %> >> >> I've read a fair amount of doc and was unable to find a simple example >> like the above. I think this is a pretty common need, so an example in the >> docs would be awesome. The "for" example with the recommendation to use >> "in" was helpful. >> >> Thanks, >> Brian >> > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Simple conditional in web template
(define (my-server-response show-cat?) (response/xexpr `(div ([class "my-content"]) ,(if show-cat? (p "Welcome to my blog about cats!") (p "This blog is definitely not about cats.") On Monday, March 18, 2019 at 4:26:16 PM UTC+1, Brian Adkins wrote: > > How would one translate the following Ruby template into a Racket web > template (including multiple lines for the if and else clauses) ? > > <% if true %> > > This will be displayed if true > > <% else %> > > This will be displayed if false > > <% end %> > > I've read a fair amount of doc and was unable to find a simple example > like the above. I think this is a pretty common need, so an example in the > docs would be awesome. The "for" example with the recommendation to use > "in" was helpful. > > Thanks, > Brian > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Racket News - Issue 4
Thank you so much for this! If I can suggest a project for next month's spotlight: - Christopher Lemmer Webber, co-editor of the ActivityPub specs, is working on a distributed social network library based on Racket: https://gitlab.com/spritely It's still in early development, but I think it's an important project to give visibility to ;) Maybe we could also have a spotlight section for #lang languages too? - The brag parser generator is obviously a good project. - The video lang by Leif is also pretty awesome. - The slideshow lang might be a great pick too. - Obviously scribble. On Friday, March 15, 2019 at 12:03:47 PM UTC+1, Paulo Matos wrote: > > I have just published Issue 4 at > > http://racket-news.com/2019/03/racket-news-issue-4.html > > Grab a coffee and enjoy! > -- > Paulo Matos > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Struct subtype with default/fixed value of super-type
Once you discover that the default constructor for a struct is just a simple procedure that was generated for you, it's not that big of deal to just make your own and export it like this: (provide (except-out (struct-out fish) fish) (rename-out (make-fish fish))) All the code relying on it will still work. Except I guess if you pass through different phase levels, it becomes a bit more complicated because you have a syntax attached at compile-time to the identifier. But that's another issue. Correct me if I'm wrong. On Monday, March 18, 2019 at 2:11:46 PM UTC+1, Marc Kaufmann wrote: > > Yes, I saw that, the problem is that I want to be able to set a > (potentially different) default value for the sub-type shark than for the > sub-type guppy. So if I set the value to 'big for all `fish`, then I can't > do that. Essentially, I'd need an #:auto for every sub-type, but the #:auto > refers to a parent/super field. > > I'll just run with defining a custom constructor. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: London Racket Meet-up ?
Interested! To make it worth the trip, I'd suggest we put up a list of topics to discuss, so that people can ponder whether they should buy an expensive ticket to go there. I'd suggest the following topics I'd be glad to talk about: - Innovative use of syntax-parse, with tips and tricks to make macro code readable - New #lang DSLs in the wild: present the one you've built - Successful use of Racket in the industry - Racket for the web Feel free to suggest topics too! -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Season of docs participation
It looks great, but I have a hard time understanding the gist of it. The rules are written in fine prints like the Terms of Service of an insurance company. What benefits does Google actually brings in that event? Couldn't we just make a campaign on our networks to ask students in summer vacation for help or something? Helping write documentation is becoming one of my main goal in Racket because I really enjoy writing doc (so every time I see a package that I want to use, but is not documented, I make a PR with some basic scribble files). So this looks like a great opportunity to get more people involved, but it looks like I'm missing something. Is Google paying for that time? Do they bring some "technical experts" as "mentor" or something? Is it something well known in the US? (that would explain I don't get a thing about the vocabulary used) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Recording of conference talk: Make your own language with Racket FOSDEM19
It was my first talk so some things are off (I'm planning to correct them when the youtube video is up). I'm open to any comments, next talk will be better ;) I also had a lightning talk at FOSDEM the morning of the same day, which is kind of a "teaser" for this one. You can find it here: https://fosdem.org/2019/schedule/event/jsonwhendsl/ Thanks to all the Racket community for allowing me to present such amazing tools :) If you want to help me build a web development framework using DSLs in Racket, you can join the web-galaxy project: https://github.com/euhmeuh/web-galaxy On Tuesday, February 26, 2019 at 8:53:54 AM UTC+1, Stephen De Gabrielle wrote: > > FYI Recording of conference talk > Make your own language with Racket > by Jérôme Martin at FOSDEM 19 > > (I didn’t go) > > https://fosdem.org/2019/schedule/event/makeownlangracket/ > > -- > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: the list of languages made with racket [Hacker News]
I'm currently working on different open source projects, and every one of them features at least one or more #lang languages. Some use s-expressions, some have their own syntax using the "brag" parser generator. The thing is, most of them don't show up in the results because I didn't submitted them as Racket packages (I usually do that only with libraries) or because there are no scribble docs written yet. But I'm planning to make even more languages. Thanks to Racket, Language Oriented Programming has become my tool of the trade for pretty much everything. I guess I'll take some time to package some of them as standalone packages so that they can show up there, but it's not my priority. Do you folks think we should do some guide about "How to contribute languages to the Racket ecosystem" which would go through all the nuts and bolts of making a package "language-friendly" ? Something along the lines of "Hey, you have a project using Racket on Github, but you want it to show up in the Racket docs search? Here are the steps to register your package. You have languages inside? Don't forget to add this and that..." I know there already a lot of good documentation about that for people who know what they want. But I feel it's more about getting Racket developers aware that they can show up there in the first place (myself included, I just realized most of my projects don't show up there). It could also be a small blog post showing up the good parts of the doc... Or both. What do you think? (in fact, i'm definitely gonna write that blog post anyways) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] FOSDEM: Flyers, posters, and overall Racket visuals/communication material
Hello Racketeers! I'm going to FOSDEM in February, giving some talks and workshops about Racket in the "Minimalistic Languages Room". https://fosdem.org/2019/schedule/track/minimalistic_languages/ In order to promote our beloved language there, I'd like to print out some big posters. Do you have some promotional material and/or ideas we could display? I'm thinking of catch phrases like: - Racket: the language-oriented programming language - Racket: visit the new Tower of Babel today! - Can't code it? Did you try your own language? I'm open to any suggestion, may it be phrases or visuals. See you around, folks! Jérôme -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] hackernews
I'm also occasionally writing posts about Racket on my blog. Only one is public for now, and is a multi-parts tutorial about writing DSLs in Racket. I'm trying to summarize and reformulate some of the things I learned by making small languages in Racket. If you already read Beautiful Racket, I guess there's nothing new to learn, because I'm mostly targeting developers not aware of lisp languages. You can find the first part here: http://rilouw.eu/article/the-programming-language-of-your-dreams-part-1 Feel free to contact me if you want to share some advice and feedback! I'm not confident the article is worth a post on HN for now, and I don't know if my Racket server will sustain a mention on HN anyway, but if you feel it's worth posting, feel free to do so. On Monday, December 17, 2018 at 2:30:55 AM UTC+1, Alex Harsanyi wrote: > > > > On Sunday, December 16, 2018 at 12:48:09 AM UTC+8, Peter Schmiedeskamp > wrote: >> >> I’m probably guilty of already being part of this task-force. To add, I >> wonder if there’d be value in some longer, blog-form replies to interesting >> HackerNews queries. >> >> For example, someone was extolling the virtues of some new system for >> building and packaging simple GUI apps for Linux using Python. I’ve poked >> around with the GUI and packaging facilities of Racket enough to feel like >> Racket has a pretty good story to tell, at least for smaller cross-platform >> apps. A short blog showing the end-to-end creation of a small GUI app, with >> emphasis on showing the symbiosis of the GUI library and the excellent raco >> packaging and distribution facilities would be a great “reply” to such an >> article on HN. > > >> I wonder if there's a way that these use cases could at least be >> collected... maybe as an RFB—Request For Blog. Time is always at a premium, >> but I could imagine picking off a blog post here and there even though I’m >> a decidedly rank novice Racketeer. >> >> Maybe there’s already a list somewhere? Maybe RFBs could be a section of >> the Racket Blog? >> > > > I have written a few blog posts on Racket GUI topics and I have a few more > planned. They cover some more advanced uses of the GUI library -- I think > the basics are already well documented. You can find them here: > >https://alex-hhh.github.io/tags/racket.html > > Alex. > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Racket application servers
Just so you know, I started some months ago a Racket project that would help monitor different Racket web servers and load-balance them, using systemd-nspawn as a native container system, and an optional nginx server to load balance everything, serve static content and cache dynamic one. It's called Bonny: https://github.com/euhmeuh/bonny It's in a very early stage right now but I'm actively working on it so that I can deploy and monitor my servers without having to rely on some big overkill container app du jour. I'd be really glad to talk about some approaches you use and what seems the easiest to implement. My main objectives are minimalism, use as much native systems as possible, and as much Racket as possible. Plus, containers in Bonny are called "pirates" (cause you're "shipping them", ahah). -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Announcing Minimalistic Languages track at FOSDEM 2019
Update: I submitted a lighting talk called "Why JSON when you can DSL?". The challenge is to make it fit into 15 minutes, but if we don't have other talks, I guess I could do it multiple times in the day or just make it longer. I also submitted a workshop to actually practice what I talk about. It's called "Make your own language with Racket" and should be sessions of 3 to 5 people during about one hour, so that they can come and learn how to make a language with Racket. I'm also writing a tutorial on my blog to go further: http://rilouw.eu/article/the-programming-language-of-your-dreams-part-1 If you have other ideas or plans, just contact me :) On Monday, November 12, 2018 at 8:27:01 AM UTC+1, Manolis Ragkousis wrote: > > Hello all, I am resending my previous mail as I can't find it in the ml > logs, and I am not sure it was sent properly. > > On 10/18/18 7:22 PM, Manolis Ragkousis wrote: > > Hello everyone, > > > > We are organizing a devroom for languages like Guile, Lua and Racket: > > > > https://libreplanet.org/wiki/FOSDEM2019-devroom-minimalism > > > > I saw at [1] that you are already aware of it. It would be nice if we > > had a couple of presentations from Racket there!! > > > > Ping me if you have any questions. > > > > Manolis > > > > [1] https://groups.google.com/forum/#!topic/racket-users/MehPv0ugBI4 > > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Announcing Minimalistic Languages track at FOSDEM 2019
Hello! I'm currently working on a presentation and a workshop for this devroom :) @everybody: The deadline for registering activities is the 25th of November, don't miss it! See you there :) On Monday, November 12, 2018 at 8:27:01 AM UTC+1, Manolis Ragkousis wrote: > > Hello all, I am resending my previous mail as I can't find it in the ml > logs, and I am not sure it was sent properly. > > On 10/18/18 7:22 PM, Manolis Ragkousis wrote: > > Hello everyone, > > > > We are organizing a devroom for languages like Guile, Lua and Racket: > > > > https://libreplanet.org/wiki/FOSDEM2019-devroom-minimalism > > > > I saw at [1] that you are already aware of it. It would be nice if we > > had a couple of presentations from Racket there!! > > > > Ping me if you have any questions. > > > > Manolis > > > > [1] https://groups.google.com/forum/#!topic/racket-users/MehPv0ugBI4 > > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: 2018 SIGPLAN Software Award
Congrats everyone! It's a refreshing experience to see the work of people involved in not only programming, but teaching programming. You put a lot of focus on user and student experience, and have a sensibility for listening and bringing fun into programming. This creates a community and a programming environment in which it feels great to be a part of. I'm excited to see how the recent engagement in the language from newcomers like me can push the language and the environment further, and eventually make people discover that programming is more than technical, but also inspirational, artistic, sometimes useless and beautiful, and deeply tied with our way to express ourselves. I wanna bring programming back into people's hands, because computers are taking over our lives, and we need to take back control. I feel that Racket is one of the best languages for that purpose, because it allows to design the languages that corresponds to each of us. Each of us can have our own Racket, our own way of expressing ourselves, through that magical #lang, and I find this beautiful. Sorry for the lyrical tone, I tend to get philosophical when talking about programming languages :P Anyways, congratulations everybody, and keep up the good work :) On Thursday, September 27, 2018 at 12:53:34 AM UTC+2, Matthew Flatt wrote: > > Dear Racketeers, > > Racket has just received the > >2018 ACM SIGPLAN Software Systems Award > > We are honored by this award, but it belongs to more than the core > group of people named in the citation. Many people have invested time > and energy into this language. > > The language is what it is now because of you. > > Looking back at the modest beginnings in January 1995, we want to > acknowledge some contributors specially: > > John Clements, for constructing the incredible stepper back in the > late 90s and thus helping distinguish DrScheme from all other > pedagogic IDEs, for maintaining the beast for 20 years, and > taking on many other library projects; > > Cormac Flanagan, for using PLT Scheme to create MrSpidey, which > placed our little language into the web of SIGPLAN research and > awareness way way back; > > Matthew Butterick for "Beautiful Racket", code, languages, volunteer > teaching, and faithful evangelizing; > > Vincent St-Amour, Ryan Culpepper, Paul Steckler, and Mark Krentel > for managing the Racket world of software for many years; > > and Vincent also for his tender love and care for RacketCon. > > Many, many others have contributed to Racket over the past two decades > through implementation, teaching, and research. We have collected many > names at the end of this post, but our memories are probably flawed > and, in recent years, the contributor community has grown > tremendously. This doesn't mean we aren't thinking of you and thanking > you today --- and not just today, but every time we launch our > wonderful DrRacket and run beautiful Racket programs. > > THANK YOU ALL. We are looking forward to many more years of > Racketeering! > > - Matthew with Eli, Matthias, Robby, Shriram, Jay, and Sam > > Contributors: Claire Alvis, Leif Andersen, Yavuz Arkun, Ian Barland, > Gann Bierner, Stephen Bloch, Filipe Cabecinhas, Corky Cartwright, > Stephen Chang, Richard Cleis, Richard Cobbe, Greg Cooper, Christos > Dimoulas, Eric Dobson, Carl Eastlund, Moy Easwaran, Will Farr, Dan > Feltey, Michael Filonenko, Burke Fetscher, Kathi Fisler, Spencer > Florence, Daniel Friedman, Tony Garnock-Jones, Sebastian Good, Paul > Graunke, Kathy Gray, Ben Greenman, Dan Grossman, Arjun Guha, Dave > Gurnell, Tobias Hammer, William Hatch, Bruce Hauman, Greg Hendershott, > Dave Herman, Jim Hollan, Blake Johnson, Andrew Kent, Gregor Kiczales, > Alexis King, Casey Klein, Alex Knauth, Geoffrey S. Knauth, Mario > Latendresse, Xiangqi Li, Guillaume Marceau, Gustavo Massaccesi, Jacob > Matthews, Mike T. McHenry, Philippe Meunier, Albert Meyer, Scott > Owens, David T. Pierson, Jon Rafkind, Prabhakar Ragde, Norman Ramsey, > Jamie Raymond, Grant Rettke, Guido Rößling, Emmanuel Schanzer, Paul > Schlie, Dorai Sitaram, Francisco Solsona, Sarah Spall, Mike Sperber, > Stevie Strickland, James Swaine, Jens Axel Søgaard, Neil Van Dyke, > David Van Horn, Anton van Straaten, Asumu Takikawa, Kevin Tew, Neil > Toronto, Milo Turner, Dale Vaillancourt, Dimitris Vyzovitis, Mitch > Wand, Stephanie Weirich, Noel Welsh, Adam Wick, Danny Yoo, Shu-Hung > You, and ChongKai Zhu. > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] Re: Let's organize a Scheme European Event at FOSDEM 2019
> > I'd love to talk about how easy it is to write DSLs in Racket, and about > > how you can replace your data with DSLs. > > Isn't there a tutorial (in text, not video) somewhere about this? > It shouldn't require going to a meeting. I know right. It's more about promoting Racket through a concrete example than about teaching something (it needs more than a 30 minute talk to learn that kind of thing anyways). I wanna say "Hey, Racket is around and it's a great tool to express yourself freely". This is the main message. On Monday, August 27, 2018 at 2:43:30 PM UTC+2, Hendrik Boom wrote: > > On Mon, Aug 27, 2018 at 02:41:52AM -0700, Jérôme Martin wrote: > > I live not so far from Bruxelles so I'd be glad to be a part of it! > > > > I'd love to talk about how easy it is to write DSLs in Racket, and about > > how you can replace your data with DSLs. > > Isn't there a tutorial (in text, not video) somewhere about this? > It shouldn't require going to a meeting. > > > Something like "Who needs JSON when you can DSL?". > > One of the examples would be Scribble, but I'm also thinking about > showing > > some DSLs I wrote (a CPU emulator language, an ASM, a WebAssembly > > transpiler...). > > Those might be nice examples. > > > > > If you have any ideas about a cool DSL made in Racket we could show off, > > don't hesitate to suggest it here! > > I've got an ancient program (assuming I can stil find all the pieces) > written in an ancient esoteric offshoot of Lisp I'd like to have going > again. It involves slight changes to the syntax and a few > seriously conflicting function definitions. (like a different syntax for > 'let') > > -- hendrik > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Let's organize a Scheme European Event at FOSDEM 2019
I live not so far from Bruxelles so I'd be glad to be a part of it! I'd love to talk about how easy it is to write DSLs in Racket, and about how you can replace your data with DSLs. Something like "Who needs JSON when you can DSL?". One of the examples would be Scribble, but I'm also thinking about showing some DSLs I wrote (a CPU emulator language, an ASM, a WebAssembly transpiler...). If you have any ideas about a cool DSL made in Racket we could show off, don't hesitate to suggest it here! We could also do workshops about leveraging the power of syntax-parse or something along those lines. It's one of the most powerful constructs in Racket, so for already seasoned schemers, it might be the selling point. Talking about web development could be nice too, but I'm not feeling confident enough in my exploration of writing Racket for the web to be able to survive the flow of questions about load-balancing and server rendering buzz. (I'm an experienced enough web developer to know that I shouldn't talk about web development unless I'm willing to get torn apart and eaten alive by the rest of the industry. It's a wild world.) But if someone has more than one year of web development with Racket under his belt, feel free to step into the arena. Concerning the format, does somebody have experience about whether we should do Main Track Talks, Developer Rooms, Stands or Lighting Talks? - The Main Track is 50 minutes talks (including questions). - Developer Rooms are focused on open source projects collaboration (mostly presentations it seems). - Stands are a table, two chairs, a power socket and an internet access. - Lightning Talks are 15 minutes talks. I am okay with all of them. I'd be glad to organize and animate workshops on a stand or in a room, and eventually do a lightning talk. Are there more people willing to come? On Friday, August 24, 2018 at 6:59:43 PM UTC+2, amz3 wrote: > > Hello *Racketeers,* > > Let's organize a Scheme event at FOSDEM 2019 in Bruxelles. > > I started a page on the wiki @ http://community.schemewiki.org/?FOSDEM2019 > > You can edit the wiki page. The goal of that page is to gather enough talk > ideas to be able to submit a proposal for a developer room at FOSDEM. See > the CFP https://fosdem.org/2019/news/2018-08-10-call-for-participation/ > > > Best regards, > > > Amirouche aka. amz3 > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Thank you Racket!
I just read the article by Matt that was posted on Hacker News (http://felleisen.org/matthias/OnHtDP/index.html) and I wanted to take the time to thank you all in the PLT/Racket team. Thank you for trying (and achieving!) to bring a new approach to teaching computer science. Improving teaching methods is a hard process and you have the courage and will to fight for it, against all odds. I'm glad some people are here to train students into a broader approach to program design and eventually become way better programmers than we are. I discovered Racket one year ago and had the feeling I finally found the language, and most importantly the community, that brings me hope and make me feel like computer science is more than just about computers. You are making a language that feels like writing code is actually a form of art sometimes, and it makes me see my profession with a new eye. (define congrats (map thank plt-team)) I wish all of you a great time teaching with Racket. I'll be sticking around improving some libs (especially web-server). See you around folks :) -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: RWind - Racket X window manager - by Laurent Orseau
This project is awesome! I was looking for something like that for quite some time. I keep some old telephones nobody wants in a drawer, in the hope that I could one day write some OS for them. This looks like the perfect occasion. I'll see how I can help :) On Friday, August 3, 2018 at 5:40:37 PM UTC+2, Neil Van Dyke wrote: > > If you're a Racketeer on a GNU/Linux, BSD, Solaris, etc., and like to do > cool nerdy things like try a custom tiling window manager... you might > want to join me in using Laurent Orseau's RWind window manager, which is > written in Racket. > > You can install RWind from the Racket package repository, or do a `git > clone` and `raco pkg install`. Documentation is here: > https://github.com/Metaxal/rwind/blob/master/README.md > > Out of the box, it's a good foundation, but it needs your personal > customizations, at least to "~/.config/rwind/config.rkt", and possibly > also to your Git checkout. > > I initially started looking at adapting RWind for a handheld Racket GUI > for PostmarketOS ("https://www.neilvandyke.org/postmarketos/";), and > decided to also use RWind atop my workstation, to speed up development. > > To use RWind on your workstation, you might craft your own "~/.xsession" > or "~/.xinitrc" file, and include a loop that keeps swapping between > RWind and a stable other window manager while keeping your X session > running (in case you break RWind while hacking on it), something like > this: > > # Loop between X window managers, infinitely. > # Note that there's neither `exec` nor `&` here. > # The X startup script is waiting on the window manager to exit > # and then starts the other window manager. > while true ; do > xmonad > racket -l rwind > done > > If you have a window manager development setup like this, remember that, > if all else fails, you can always `kill -HUP` and `killall -HUP` (your > window manager process, script process, X server process, individual X > clients, etc.). If you can't type that shell command from within the X > session at the moment, Ctrl-Alt-F2 will probably get you a text mode > console login from which you can type that command, and/or start other X > clients -- then switch back with Ctrl-Alt-F1 or Ctrl-Alt-F7 or one of > the others. You might not ever have to do this, but you can. > > Please consider sharing your customization to RWind, whether it's > posting small config tweaks on "racket-users", making a Racket package > to supplement the `rwind` Racket package, or making a Git pull request > to `rwind` if you discover a bug. > > BTW, if you've already worked on a Matchbox-like layout and subtleties > for RWind (one "app" visible at a time, plus a static bar across the > bottom, and permitting a popup screen keyboard tiled window), please let > me know. For the Racket handheld, I want to do that, plus a combination > app launcher and app switcher (that makes both functions look the same > to the user, and might also let us sleep/wake busy non-handheld-friendly > legacy programs we haven't yet replaced with ones written in Racket). > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[racket-users] Re: Parameters considered often harmful
I use parameters a lot when designing a library which provides customizable behaviors. Instead of having an (init) procedure in which users can setup stuff for the library, I provide parameters, which are way more flexible. For example, I'm designing an emulator in which you can have memory addresses mapped to different devices. I allow users to provide an (address-decoder) as a parameter so that they don't have to think about where it is used (pretty much everywhere inside the emulator) but can still provide a custom behavior. I find parameters really useful when you want to provide a way for your users to change parts of the inner code of a library without having to actually change the code. Of course, this usage is mostly interesting in impure code. This way also promotes developing small and iterative libraries. Because you can leave responsibility you don't have the time to tackle yet to your users, and fill the gap later on in the development process. One can say "ok, I need a way to allow users to provide address mapping for the emulator, I need to design a big and complex interface to do so", but instead, you just go like "I'll do that later and let the user provide its own code for now". Just my two cents about how I use parameters :) On Friday, August 3, 2018 at 3:52:56 AM UTC+2, gneuner2 wrote: > > > On 8/2/2018 1:24 PM, 'John Clements' via Racket Users wrote: > > I hate to turn a little question into a big one, but… are parameters the > right choice, here? It seems to me that optional parameters would be more > suitable. > > > > Unfortunately, I’ve been on the other side of this fence, too: > parameters are vastly more convenient for implementors than adding optional > parameters to every one of the internal calls. This certainly came up for > me in the construction of a CSV writing library. > > > > I can imagine a bunch of programming patterns that might assist this; > the most obvious one would be an object-like metaphor where parameter > values are represented as an object to which calls are made. Do others have > ideas on a “best practice” for this situation and others like it? > > > > John > > In the case in question, I probably would go the object route as well. > > > Personally, I don't find a lot of use for parameters: my biggest need > for them is in threaded web server code where there may be multiple > instances of a given handler and they need unique identifiers for client > messages, log entries, etc. Generic logging code doesn't know what > thread it's running under, and Racket threads don't have a printable > identifier themselves ... so I parameterize each handler thread with a > useful [to me] identifier. > > But parameters aren't useful for sideways communication between > threads. Almost all my use of continuations is for abort / escape > purposes, and I don't find a lot of need there for the "special var" > stack behavior of parameters. For most code where I might possibly use > parameters, I find they just don't add anything over using "global" > variables. > [I put "global" in quotes to mean only "accessible to all the code that > needs and/or shares the variable" - not necessarily that it is defined > at the top level or exported from its module. Even within modules, not > infrequently I use the idiom of defining multiple functions within a let > that defines their shared state. Generally I prefer to limit an > object's visibility to only that code that needs to see it.] > > But I imagine there are other people who find parameters invaluable in > their work. Their utility for file I/O using standard ports is obvious > ... I just don't tend to write a lot of that kind of code. > > YMMV. > George > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.