lexi-lambda changed the topic of #racket to: Racket v7.1 has been released: http://blog.racket-lang.org/2018/10/racket-v7-1.html -- Racket -- https://racket-lang.org -- https://pkgs.racket-lang.org -- Paste at http://pasterack.org
efm has joined #racket
efm has quit [Ping timeout: 250 seconds]
rlavery has quit [Quit: Page closed]
ng0 has quit [Quit: Alexa, when is the end of world?]
FreeFull has quit [Quit: kernel update]
FreeFull has joined #racket
ZombieChicken has joined #racket
sebastianlin has joined #racket
lavaflow_ has quit [Ping timeout: 245 seconds]
ym555 has quit [Quit: leaving...]
_whitelogger has joined #racket
Nomenclatura has joined #racket
Sgeo_ has joined #racket
Sgeo has quit [Ping timeout: 264 seconds]
jonh has left #racket ["WeeChat 1.9.1"]
laxask has quit [Ping timeout: 258 seconds]
laxask has joined #racket
dddddd has quit [Remote host closed the connection]
jao has quit [Ping timeout: 244 seconds]
sebastianlin has quit [Ping timeout: 256 seconds]
orivej has joined #racket
pie___ has joined #racket
pie___ has quit [Remote host closed the connection]
pie___ has joined #racket
pie__ has quit [Ping timeout: 268 seconds]
FreeFull has quit [Quit: Off to sleep]
_whitelogger has joined #racket
Nomenclatura has quit [Quit: q]
zmt00 has quit [Read error: Connection reset by peer]
endformationage has quit [Quit: WeeChat 2.3]
davidl has quit [Ping timeout: 258 seconds]
davidl has joined #racket
soegaard has joined #racket
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
soegaard has quit [Client Quit]
pierpal has joined #racket
soegaard has joined #racket
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
Falacer has joined #racket
pierpal has quit [Quit: Poof]
pierpal has joined #racket
dddddd has joined #racket
jao has joined #racket
pierpal has quit [Quit: Poof]
pierpal has joined #racket
sebastianlin has quit [Ping timeout: 256 seconds]
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
orivej has quit [Ping timeout: 258 seconds]
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
jao has quit [Ping timeout: 272 seconds]
ubLIX has joined #racket
widp_ has quit [Ping timeout: 245 seconds]
widp_ has joined #racket
ubLIX has quit [Quit: ubLIX]
pierpal has quit [Ping timeout: 255 seconds]
eush has joined #racket
soegaard has quit [Quit: soegaard]
soegaard has joined #racket
_whitelogger has joined #racket
soegaard has quit [Quit: soegaard]
pierpal has joined #racket
pierpal has quit [Quit: Poof]
pierpal has joined #racket
q9929t has joined #racket
orivej has joined #racket
ym555 has joined #racket
jao has joined #racket
badkins has quit [Remote host closed the connection]
badkins has joined #racket
badkins has quit [Ping timeout: 246 seconds]
q9929t1 has joined #racket
q9929t has quit [Ping timeout: 245 seconds]
q9929t1 is now known as q9929t
baldfat has joined #racket
<baldfat> I want to make a simple program where I have macros that uses shortcuts to paste text into a specific window
<baldfat> Should I start and stay in clipboard https://docs.racket-lang.org/gui/clipboard___.html
<baldfat> or is there a library I don't know about?
endformationage has joined #racket
badkins has joined #racket
badkins_ has joined #racket
keep_learning has quit [Remote host closed the connection]
badkins__ has joined #racket
badkins has quit [Ping timeout: 264 seconds]
q9929t has quit [Quit: q9929t]
badkins_ has quit [Ping timeout: 264 seconds]
badkins__ is now known as badkins_
efm has joined #racket
Lowl3v3l has quit [Remote host closed the connection]
Lowl3v3l has joined #racket
zmt00 has joined #racket
phoenixdarkdirk has joined #racket
<phoenixdarkdirk> Hey, is there a room or community for Pollen users?
integralyogin has joined #racket
phoenixdarkdirk has quit [Quit: Textual IRC Client: www.textualapp.com]
ng0 has joined #racket
ym555 has quit [Ping timeout: 250 seconds]
phoenixdarkdirk has joined #racket
<phoenixdarkdirk> whoops, accidently closed my client; is there a room or community for Pollen users?
jao has quit [Ping timeout: 250 seconds]
ubLIX has joined #racket
soegaard has joined #racket
aeth has quit [Ping timeout: 244 seconds]
soegaard has quit [Client Quit]
soegaard has joined #racket
soegaard has quit [Client Quit]
aeth has joined #racket
phoenixdarkdirk has quit [Read error: Connection reset by peer]
soegaard has joined #racket
sagax has quit [Ping timeout: 245 seconds]
phoenixdarkdirk has joined #racket
badkins_ has quit [Ping timeout: 244 seconds]
DGASAU has joined #racket
<bremner> phoenixdarkdirk: I don't think so. I've seen the odd discussion here, but you might have to wait a while for an answer
<phoenixdarkdirk> @bremner thanks!
ym555 has joined #racket
phoenixdarkdirk has quit [Quit: Textual IRC Client: www.textualapp.com]
eush has quit [Quit: ERC (IRC client for Emacs 26.0.50)]
soegaard has quit [Quit: soegaard]
codebam has joined #racket
sagax has joined #racket
badkins_ has joined #racket
Arcaelyx has joined #racket
jao has joined #racket
Falacer has quit [Ping timeout: 245 seconds]
pera has joined #racket
androclus has joined #racket
<androclus> hey, all.. i am an old programmer, but new to racket, and have also played with guile and clisp a little. I love the functional languages. I've have inherited an old nodejs web game that the higher-ups want to pick up again.
<androclus> Since the old version of their web/game program is so old (nodejs/angularjs), it will have to be completely re-written from scratch
efm has quit [Remote host closed the connection]
<androclus> so i was considering doing the server-side in racket
<androclus> would this make any sense?
<androclus> how does racket's web libraries compare to nodejs? and especially when scaling, etc.?
<s455wang> I love racket but I don't want you to get fired for choosing racket
<androclus> any thoughts?
<androclus> hahah
<s455wang> For all of nodejs's shortcomings you can't beat the ecosystem and community around it
<androclus> okay, good. well, but put it this way: they are letting me do whatever i want. if you were in that boat, what would you do?
Falacer has joined #racket
<s455wang> with no fear of failure, I'd use racket and learn a lot
<androclus> ok, thx. and in the "learn a lot" category, what did you have in mind? in other words, would the "learn a lot" refer more to you building up your skills in racket? or more to building up racket's web skills (i.e., filling in the holes in racket's web libraries / framework(s))?
<s455wang> both
rain1 has quit [Quit: WeeChat 1.6]
<androclus> ok. so in regards to the 2nd part: in your opinion, racket -- as it is now -- cannot compete (yet) with nodejs for speed/ease/organization of (server-side) web projects?
rain1 has joined #racket
<s455wang> I would say yes but also that I haven't done a lot of racket for web
<s455wang> Here is a project I worked on way back in the day, early in my career, that I pretended to understand https://github.com/cs136/seashell/tree/master/src/collects/seashell/backend
<androclus> hmm... this was a cs project? what did it do?
<s455wang> online IDE for editing and running C and Racket programs for a first-year CS course
<androclus> interesting..
<s455wang> back when I worked on it was angularjs and racket with contracts, and it's since been migrated to typescript, react, and typed racket (partially)
rain1 has quit [Client Quit]
ubLIX has quit [Ping timeout: 240 seconds]
<s455wang> hopefully it gives you an idea of what a big racket web project looks like
rain1 has joined #racket
<androclus> okay, so it's doing racket on the back-end, and react/typescript on the front-end (browser)?
<s455wang> yes
<androclus> interesting.. fun?
<s455wang> fun :) and it works
<androclus> good to hear!
<androclus> and how about performance? you probably didn't do any comparisons/tests, but -- given nodejs's single-thread event-loop for handling many requests efficiently (and with callbacks) -- just off the cuff, how do you think your project would do handling many requests, compared to if it had had a nodejs back-end?
aeth has quit [Ping timeout: 246 seconds]
<s455wang> Here's the general architecture: http://i.imgur.com/u1wcxUl.png
<s455wang> Since it runs a process per-user we had to take care to reduce memory usage
aeth has joined #racket
<s455wang> So unfortunately it's not a fair comparison
<s455wang> fastest way to get an answer on the internet is to say something wrong and have someone correct you
<lexi-lambda> androclus: I think for most purposes, Racket web server performance will be on par with Node.js, especially given most web servers are I/O bound
<s455wang> so hopefully someone comes in and corrects me soon :)
ubLIX has joined #racket
efm has joined #racket
<lexi-lambda> Racket is single-threaded at the OS level, but so is Node.js. Both can handle several requests concurrently, but not in parallel; both can be run as several processes to achieve parallelism.
<lexi-lambda> Instead of using an event loop for concurrency, Racket uses green threads.
Falacer has quit [Ping timeout: 240 seconds]
<androclus> s455wang: hah, true. and thanks, i will look at your project
<androclus> lexi-lambda: thank you.
<androclus> lexi-lambda: when racket gets chez in upcoming version, will this also speed up racket's web responsiveness, as well?
<lexi-lambda> probably not, at the moment Racket-on-Chez does not seem to be meaningfully faster than the existing C implementation
<androclus> interesting.. you mean in regards to racket/web only? or to all of racket? (i had read r-on-ch is several times faster..) (?)
<lexi-lambda> I’m not sure where you read that, but the most up to date, comprehensive set of performance benchmarks for Racket-on-Chez is described here: http://blog.racket-lang.org/2019/01/racket-on-chez-status.html
<lexi-lambda> One of the more important takeaways from that blog post is that the I/O system in Racket-on-Chez is not very optimized at the moment, which I would expect to especially negatively impact a web server.
<androclus> yes, i'd read that (or, well, admittedly: skimmed it). it looks like the main benefit is actually the codebase with chez is preferred for maintenance and flexibility (?)
<lexi-lambda> Yes, that’s right.
<androclus> i'm trying to remember where i'd seen someone say 4-20 times speed up.. and often approaching compiled-c speeds.. maybe reddit or something..
<androclus> but i guess opinions are a dime-a-dozen..
<lexi-lambda> To be clear, I don’t think Racket-on-Chez performance is terrible, but I also don’t think Racket 7’s performance is terrible.
<s455wang> Maybe you were reading about Chez's perofrmance in general?
<lexi-lambda> Yeah, pure Chez Scheme code can be really fast, but Chez Scheme code also tends to do a lot less than Racket code.
<androclus> that rings a bell
<androclus> do a lot less?
<lexi-lambda> Racket code often brings in things like the contract system, which adds a lot of indirection that just doesn’t exist in idiomatic Scheme.
<androclus> <--- over my head ('contract system', 'indirection')..
<androclus> but interesting..
<lexi-lambda> The contract system is used in Racket to dynamically enforce invariants. So, for example, to add runtime checks to ensure functions are invoked with the right types of arguments.
<androclus> gotcha. seems that would be a nice feature to have, assuredly.
baldfat has quit [Read error: Connection reset by peer]
<androclus> on the other hand, once those checks are done, also a nice feature to exclude in production?
<lexi-lambda> To date, the Racket contract system has not provided such a feature, though it has sometimes been requested. I think the problem is that contracts can, in theory, do more than “just” add sort of safety checks, and even then, you often want the safety checks on in case things do happen to go wrong.
<androclus> (oh, wait.. you said, 'runtime'.. nm)
<androclus> ok
<lexi-lambda> Racket’s contract system is more complete than traditional runtime type check-based assertions, since it can handle things like higher-order functions or mutable data structures. But it adds some indirection through proxy objects to do so, which makes optimizing Racket code much more difficult.
<lexi-lambda> That said, you can always opt not to use contracts in your code if you don’t want to. Plus, some contracts are more expensive than others, and simple ones tend to be pretty cheap. There’s also a contract profiler to see how much time contracts are taking in your program.
<lexi-lambda> I don’t think the performance of contracts is a big problem, just one (of many other) challenges that make Racket more difficult than, say, Chez Scheme to make go really fast.
<androclus> i can see it might be very nice to have those options at times..
<androclus> yes.. i could see that.
<lexi-lambda> If Node.js performance is acceptable to you, than Racket performance probably will be, too.
<androclus> hey, while i have your attention: i originally liked guile a lot (and andy, of course, who is a great teacher/explainer, and is having a lot of fun with guile).. but...
<lexi-lambda> If you need C++ speeds, then maybe less so.
<androclus> i am wondering why GNU/linux adopted guile, which was (and still is) in a much more infant stage than racket?
<androclus> (perhaps 'infant' is not a good word.. )
<androclus> okay (regarding nodejs)
<lexi-lambda> Well, one (perhaps cheeky) answer is than GNU tends to have a particularly bad case of Not Invented Here syndrome. But I think that’s not the only reason. :)
<androclus> it's just that now, it will be 1-5 players on a single game.. but later, there may be thousands of games being played simultaneously with 1-5 players each game.
<androclus> it just seems there is so much more "fleshed out" in racket: good devs, an open community, GREAT documentation, lots of libraries, and still open source.. etc etc etc..
<androclus> while andy is still trying to catch up in all these areas, as well as execution speed..
<lexi-lambda> Racket can handle concurrent requests well, and the green thread scheduler will run threads while other threads are blocked on I/O. And if you need more performance than a single core can handle, you can always just run more processes and balance requests between them.
<androclus> (and again, i really like guile and andy!) .. it just seems there was/is so much more advantage to racket, instead of re-inventing the wheel, you know?
<androclus> okay..
<androclus> and how about development hours? would you put racket ahead/behind/= to nodejs in terms of development time, for a web project?
<lexi-lambda> I don’t know. I’ve used both, and I strongly prefer Racket. I think I’m meaningfully more productive in it. But as s455wang mentioned, the Node.js ecosystem is hard to beat. If you need to do something fancy that exists in an off-the-shelf npm package, then it might be faster to use Node.
<lexi-lambda> In any case, I don’t think you’ll be wildly more productive in either system, and I think the concrete differences in productivity probably come down to which experience/development approach you subjectively prefer.
<androclus> yeah, and i'm new to both..
<lexi-lambda> Wrt Guile vs. Racket, aside from the aforementioned point that GNU’s mission tends to result in reinventing wheels as a matter of course, I think there are some reasons that Guile might be preferable for their needs than Racket.
<androclus> but already i subjectively prefer racket.. even just at a syntax level, i hate 'reading' callbacks, especially when multi-level
<lexi-lambda> Racket is really big and complicated, it does a lot of things, and it has been used for decades as a research vehicle. Guile seems to have originally been conceived as a small scripting language that’s easy to embed.
<androclus> yes, and andy seems to have chez as his speed benchmark target.. again, a lean system compared to all racket has in it..
laxask has quit [Ping timeout: 245 seconds]
laxask has joined #racket
<lexi-lambda> To be sort of fair to Node.js, callbacks aren’t as necessary as they once were since the advent of promises and async/await. But it is definitely still a different model.
tilpner has quit [Quit: WeeChat 2.4]
<androclus> is there any equivalent to promises in racket?
<lexi-lambda> You don’t need promises in Racket because Racket has threads.
Falacer has joined #racket
<androclus> #Yay
<androclus> +1 for Racket, then
<lexi-lambda> To me, the big differences between the Racket and Node web development experiences is that I find Racket a more pleasant language, at a sort of fundamental level, than I find JavaScript. More things are runtime errors instead of just silently doing the wrong thing.
ubLIX has quit [Ping timeout: 255 seconds]
<lexi-lambda> But that is a subjective difference.
<androclus> well, i personally share (and we know also many others also) share the distaste of silent-die
orivej has quit [Ping timeout: 240 seconds]
<androclus> does racket/web have a 'framework', like nodejs?
<lexi-lambda> It does. It’s the web-server package.
<androclus> #Yay x 2
<lexi-lambda> Racket also, of course, has many other nice things, such as the macro system, which I am personally very fond of. But again, many people disagree over whether or not that is actually an advantage. :)
<androclus> well, part of what i am going to have to do server-side is to run 1 or more computer players.. and sometimes this will involve a lot of code, to figure out what move these players want to make next. in fact, their decisions might even be somewhat recursive.. so i would look forward to doing that more in racket than in js/ts
<androclus> yes, macros.. :/
orivej has joined #racket
<androclus> btw, i did (just this morning) start looking at that page.. but that's actually what brought me here.. questions i had after reading..
<lexi-lambda> I think the heart of s455wang’s advice was good: if you are trying to minimize risk and aren’t familiar with any tools, go with Node; far more resources are available for it and more people are likely to know how to use it.
<androclus> btw, do you know of any major web apps out there that are racket web-server - based?
<androclus> or is there a list or registry kept anywhere?
<androclus> hmm.. ok
<lexi-lambda> I don’t know of any “major” ones, but I am also not entirely sure what qualifies as “major”.
pera has quit [Ping timeout: 245 seconds]
<lexi-lambda> There’s a list of organizations using Racket here, but I don’t know how up to date or exhaustive it is: https://github.com/racket/racket/wiki/Organizations-using-Racket
ym555 has quit [Ping timeout: 268 seconds]
efm has quit [Ping timeout: 246 seconds]
<androclus> okay, thank you
orivej has quit [Ping timeout: 240 seconds]
<androclus> that may be the *wisest* advice.. but what i really *want* is to write the back-end in racket.. just seems so much more fun..
<lexi-lambda> By all means, if you have the opportunity, give it a try! Just make sure it’s a responsible decision. :)
<androclus> well, maybe i am/was also drinking the 'lisp is faster to develop in' kool-aid (paul graham: http://www.paulgraham.com/avg.html )
<androclus> which -- if true -- would be ideal, as it would be both fun *and* responsible, time-line-wise :P
efm has joined #racket
<lexi-lambda> I think PG’s claims are quite exaggerated.
<lexi-lambda> I offer another essay as a counterpoint, “The Bipolar Lisp Programmer”: http://www.marktarver.com/bipolar.html :)
badkins_ has quit [Ping timeout: 250 seconds]
FreeFull has joined #racket
<androclus> i've been nailed
<androclus> :P
pera has joined #racket
Falacer has quit [Ping timeout: 245 seconds]
<lexi-lambda> I don’t think either essay is wholly right or wholly wrong, for what it’s worth, but I think it’s best to evaluate Racket as you would any other programming language. And while I do think Racket is a remarkable language, as languages go, it’s also not magic.
<androclus> well, yes, and to be fair, javascript did make functions into first-class citizens..
<androclus> maybe it is more the syntax i don't like.. a bit ugly.. to my eye, brackets around everything with the function name on the *inside* has become more readable
<androclus> cleaner.. just on principle.. easier to see/read the call-tree.. i don't know..
codebam has quit [Ping timeout: 272 seconds]
ym555 has joined #racket
<lf94> Has anyone come across lisp with lots of runtime type checking?
<lf94> I'm looking to get into a style of programming with a very small lisp/scheme and doing this
<lexi-lambda> What precisely do you mean by runtime type checking?
tilpner has joined #racket
<ZombieChicken> Can anyone who is subscribed to the users@racket-lang mailing list give me an idea of how many emails have been sent over the past 24 hours?
<lexi-lambda> ZombieChicken: Looks like about 8.
<ZombieChicken> okay, thanks.
<ZombieChicken> New email account and wasn't sure if it was dropping emails or not
<lexi-lambda> You can browse the list here: https://groups.google.com/forum/#!forum/racket-users
phoenixdarkdirk has joined #racket
<ZombieChicken> yeah, I tried that but I could find any way to get it to give me mail send times to work with.
<ZombieChicken> anyways thanks
<lexi-lambda> I see times in the top-right corner of the messages, but maybe I see something different.
<phoenixdarkdirk> Got a simple Pollen question for anyone that is familiar. I'm just getting started trying to build a book. I've posted a gist with the particulars. I might lose my connection here, so if possible, replies to the Gist itself would be super helpful: https://gist.github.com/bstro/a7ab051c6aa76087f94effb6f38e02e9
tilpner has quit [Remote host closed the connection]
tilpner has joined #racket
lavaflow has joined #racket
<phoenixdarkdirk> ^^^ thanks in advance!
Falacer has joined #racket
hjek has joined #racket
dmiles has quit [Ping timeout: 244 seconds]
orivej has joined #racket
logicmoo has joined #racket
amz3 has quit [Ping timeout: 245 seconds]
badkins_ has joined #racket
Fernando-Basso has joined #racket
Falacer has quit [Ping timeout: 240 seconds]
<greghendershott> ZombieChicken: Not sure exactly, I think about 5 to 10
<greghendershott> Oops, thought I was scrolled to the end. That wasn't recent.
<ZombieChicken> greghendershott: Always nice to have something resembling confirmation in any instance. Thanks
tilpner has quit [Quit: WeeChat 2.4]
tilpner has joined #racket
efm has quit [Ping timeout: 255 seconds]
efm has joined #racket
Sgeo_ has quit [Read error: Connection reset by peer]
pierpal has quit [Ping timeout: 244 seconds]
Sgeo has joined #racket
mario-goulart has quit [Read error: Connection reset by peer]
mario-goulart has joined #racket
hjek has quit [Quit: Leaving.]
hjek has joined #racket
hjek has quit [Client Quit]
laxask is now known as sudden
Arcaelyx has quit [Ping timeout: 250 seconds]
Arcaelyx has joined #racket
badkins_ has quit [Ping timeout: 250 seconds]
lavaflow has quit [Ping timeout: 245 seconds]
androclus has quit [Remote host closed the connection]
paroneayea has joined #racket
dustyweb has quit [Ping timeout: 250 seconds]
lavaflow has joined #racket
tfb has quit [Ping timeout: 250 seconds]
tfb has joined #racket
orivej has quit [Ping timeout: 255 seconds]
amz3 has joined #racket
badkins_ has joined #racket
paroneayea has quit [Read error: Connection reset by peer]
paroneayea has joined #racket
ng0 has quit [Ping timeout: 256 seconds]
phoenixdarkdirk has quit [Quit: Textual IRC Client: www.textualapp.com]
amz3 has quit [Ping timeout: 246 seconds]
Fernando-Basso has quit [Remote host closed the connection]
juanfra has quit [Remote host closed the connection]
juanfra has joined #racket