[racket-users] Re: Listing All Programs

2019-09-05 Thread Jérôme Martin
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

2019-07-26 Thread Jérôme Martin
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

2019-07-24 Thread Jérôme Martin
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!

2019-05-03 Thread Jérôme Martin

> 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!

2019-04-30 Thread Jérôme Martin
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!

2019-04-29 Thread Jérôme Martin
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?

2019-04-10 Thread Jérôme Martin
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

2019-03-20 Thread Jérôme Martin
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

2019-03-19 Thread Jérôme Martin
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

2019-03-18 Thread Jérôme Martin

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

2019-03-18 Thread Jérôme Martin
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

2019-03-18 Thread Jérôme Martin
(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

2019-03-18 Thread Jérôme Martin
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

2019-03-18 Thread Jérôme Martin
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 ?

2019-03-18 Thread Jérôme Martin
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

2019-03-13 Thread Jérôme Martin
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

2019-02-26 Thread Jérôme Martin
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] FOSDEM: Flyers, posters, and overall Racket visuals/communication material

2019-01-09 Thread Jérôme Martin
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

2018-12-17 Thread Jérôme Martin
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

2018-11-26 Thread Jérôme Martin
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

2018-11-21 Thread Jérôme Martin
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

2018-11-12 Thread Jérôme Martin
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

2018-09-28 Thread Jérôme Martin
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

2018-08-27 Thread Jérôme Martin
> > 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

2018-08-27 Thread Jérôme Martin
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!

2018-08-24 Thread Jérôme Martin
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: Parameters considered often harmful

2018-08-03 Thread Jérôme Martin
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.