
Beautiful Racket v1.0 - Curiositry
http://beautifulracket.com/
======
jolux
I'd just like to say that I admire Matthew Butterick's creative
experimentation with business models for web publishing and absolutely adore
_Practical Typography_ to the extent that I've purchased several of his fonts
and intend to purchase Beautiful Racket as well. It can be hard to imagine
that there's a world for type design on computers outside the formulaic
mundanity and advertisement-laden nature of the rest of the web, but then you
get brilliant stuff like _Practical Typography_ and now _Beautiful Racket_ and
you can see the world we don't have in contrast to the one that we do...

~~~
throwaway399
I don't know. It looks non-functional and ugly to me.

[https://i.imgur.com/DmPKqhM.png](https://i.imgur.com/DmPKqhM.png)

This is in contrast to something like nytimes.com which is really well
designed.

~~~
saadat
Are you using Firefox? I see the same black box in Firefox too (which is
actually an SVG inside an <img> tag), but in Chrome, it renders fine:
[https://imgur.com/a/NdvKN](https://imgur.com/a/NdvKN)

~~~
Munksgaard
I get the same thing in Firefox

~~~
cat199
yep. ff/lnx here, all good.

------
untangle
Cool. I'm always game for a good discussion of DSL's and Lisp (Racket).

But what struck me immediately was the quality of the "Why Lisp Why Racket"
essay. This is probably the most compelling that I've seen as it gets specific
and cites near-term benefits – not just the elitist "it's good for you" or
"it'll make you smarter" stuff. Nicely done.

~~~
tremendo
Thanks for recommending that essay. Reading through it I found myself first
agreeing, every other attempt sings about Lisp's wonders without showing you
the what/why/how, only woo. Then, here I was halfway through this essay also
not yet knowing what the fuzz is about, and when the author finally gets
around to it I end up not really sold on it. I have given Racket and CL my
time before only to end giving up, not having found "enlightenment" or even
the motivation to keep at it. Another day, with more free time I expect I'll
give Beautiful Racket also a try.

~~~
JimmyM
So glad to see him articulate what I've always felt about x-exprs.

It often gets overlooked because we all understandably want to hype something
in a language that's really cool, original, abstract or otherwise reflects
well on us. But being able to intuitively, iteratively and rapidly work on XML
& HTML files is lush, and the IDE with built-in REPL is just gravy for this
purpose.

Even if working on XML and HTML files is boring and a technically solved
problem in most languages, it feels better in Racket to me, and the essay did
explain why it feels better.

------
e12e
Looks like an interesting book. And, on my surface pro, it's pretty. It's not
very readable, as it is only dark-on-light, high contrast -- I prefer "night
mode" for reading long-form.

And it's unreadable on my Android device (both Firefox and Chrome), due not
being a responsive design - the text is simply too small to read. For
comparison I've read a handful of books on my Android - both epub and Kindle.

A minimal test of design for reading on the web, should be - how much easier
is this to read than the Linux Documentation Project's HOWTOs, or the Debian
install guides? If the answer is "it's harder", something's wrong.

(Although, that is a nice idea for a side-project, a simple (set of)
stylesheet(s) for LDP/Debian/Plain html documents that adds responsive styling
- fonts, choice of light/dark, perhaps CSS columns on a wide screen like the
Surface).

~~~
simonh
It's only readable on my iPhone because it's a 6+, on anything smaller it
would be infuriating and it's not ideal for me anyway. Not only that but in
'reader mode' the formatting is completely wrecked such the the content
actually disappears. This is all a shame because my preferred way to read
something like this is on a mobile device, although I suppose it could be
semi-deliberate to nudge you towards buying.

Edit: I was assuming buying would get you an ebook version that would solve
the mobile readability issue, but I don't see any mention of that on the 'why
I should pay' or 'how to pay' pages. In fact it only mentions the 'web based
book you see here'. Exasperating.

~~~
Veen
For some reason, Butterick is averse to both making a PDF available and to
responsive design. Perhaps — as a typographer and book designer — he prefers
to control how the layout looks even if it means it looks bad on smaller
screens.

From the FAQ:

* Will you ever release this book as a PDF or e-book? No.

* Do you plan to opti­mize this book for mobile? No.

~~~
e12e
I could care less for a PDF - but epub is a pretty useful format for actually
reading a book. And a Kindle book is also rather nice (mostly due to kindle
syncing location in the books across devices etc - I would prefer to buy
ebooks without the DRM, as there's the worry one will lose access for various
technical or business reasons).

And I'd like an offline copy - I do sometimes read in places without Internet
access.

Without _any_ of these - I'd be hard-pressed to buy - even if the content is
excellent.

~~~
criddell
Butterick cares deeply about typography and Amazon doesn't so I can see why he
doesn't make a Kindle version. I too buy mostly Kindle books because it's easy
to remove the DRM. It's been a while since I looked, but that was more
difficult on Apple and Google ebooks.

------
mod
> I con­cede that the thump­ing noise is bet­ter for you with a paper­back.
> But oth­er­wise, the web-based book is bet­ter for every­one.

The author's style seems to be very opinionated and blunt, and I appreciate
that, but a web-based book is not better for me.

The reasons listed are great examples of the benefits of web-based books, but
I do not find web-based books readable.

I read the FAQ, and I get it: he's not releasing a paper version. Ever. I may
power through it on a screen, someday, if it is well-received.

~~~
rbjorklin
Have you considered an eReader such as the Amazon Paperwhite?

~~~
barrkel
I've found linear navigation to be a bit of a blocker with e-readers; they're
great for narrative, but with something more reference-like, you often need to
hop back and forth and the interface is more limiting.

------
jack_jennings
Matthew recently moved off of twitter and publishes an email newsletter:
[http://tinyletter.com/mbutterick](http://tinyletter.com/mbutterick)

It is one of the few newsletters that I actually enjoy reading and is
satisfyingly infrequent.

------
minikomi
There's a lot to like about racket. The cross-referential documentation is
amazing - thanks to Scribble built in as a documentation language. Another
thing which makes it super fun to write is module+ - the ability to interleave
a submodule within another module. Writing unit tests in line with what
they're testing is a great way to provide examples of what a function does.

------
fizixer
I'm an intermediate scheme programmer (experienced in C, Python, etc), and one
thing I really didn't like about R6RS in general, and Racket in particular, is
the amount of bloat.

I'm a staunch minimalist and one of the things that appealed to me learning
scheme for the first time was the minimalism of the language syntax. Then I
started learning about Racket (and Clojure) and realized they give you the
kitchen sink of syntax and language features and take all the minimalism away.

So my question is: How much extra effort would it be if I wanted to do
whatever is described in this book in an R7RS implementation, like Chibi,
instead of R6RS?

~~~
mballantyne
First, a small defense of Racket. Racket has a small core relative to its
apparent size; most of the bloat is in optional library code. All the fancy
special forms for pattern matching, classes, contracts, etc are just optional
macros from the libraries, and everything eventually expands down into this
rather small core language:

[https://docs.racket-lang.org/reference/syntax-
model.html#%28...](https://docs.racket-lang.org/reference/syntax-
model.html#%28part._fully-expanded%29)

The default `#lang racket` is a big batteries-included language including all
that stuff, but the core `#lang racket/base` isn't very big. I always program
in `#lang racket/base` and pull in just the libraries I need. For me the most
beautiful part of Racket is this juxtaposition of a small core language and a
big extended language implemented through a standard library of macros.

You can also install a distribution of Racket that leaves out bloat like
DrRacket, Slideshow and the teaching language packages from the release
variants page: [https://download.racket-
lang.org/releases/6.8/](https://download.racket-lang.org/releases/6.8/)

As to your question, Beautiful Racket appears largely a guide to the language
extensibility features that are specific to Racket and not shared by other
Scheme systems like Chibi. Things like the `#lang` system, lexer library, and
syntax highlighting integration in DrRacket. I imagine you'd get the most
benefit out of it by working through it in Racket, and subsequently thinking
about how to apply the ideas in other systems like Chibi.

------
gradschool
I'm no marketing guy so please excuse what may be some naive questions
prompted by his how-to-pay page. I gather that tiered pricing is considered
good practice, but how effective is it to use a jokey, edgy and possibly
sarcastic or insulting tone when explaining the rationale? Does it not
undermine his professional credibility, or is there some new trend in this
area that I'm unaware of?

Is it a good idea to tell people how much to pay based on how much you think
they should be able to afford, or is it better to let them decide for
themselves with just a little subtle help? I'm thinking of how Apple sells
iDevices at several price points separated by big increments for small
increases in memory rather than directly asking people how rich they are.

On a related note, if you were in charge of a budget for acquiring books on
behalf of an organization, would you be able to justify spending any of it on
a web published book like this one with no hard copy? Would it raise any
eyebrows to opt for a higher price tier with exactly the same offering as a
lower one?

------
zitterbewegung
I have read part of this book and it is a really well written book especially
to use racket to construct computer languages . I didn't understand how to use
racket to make languages until I read this book.

~~~
mike986
read the first tutorial and I don't think it's lisp/scheme newbie friendly

------
phowat
Very interesting. I'm currently going through the little schemer using Racket.
I'm tempted to read this one after it.

------
LookASquirrel
I cursory read the FAQ, somewhat funny that it's a series of questions with a
"no" answer, that made me curious about the author, so I looked for public
speakings on YouTube. Right now the first hit is a 18 minutes presentation of
this book (so I think as I haven't watched it yet) called "(sixth RacketCon):
Matthew Butterick -- The Making of “Beautiful Racket”".

I thought that someone else here could be interested...

edit: clarifications

------
raspasov
Question for someone experienced with Racket: does Racket offer
immutable/persistent data structures?

~~~
atgc
I'm not sure about persistence, but it definitely has immutable data
structures. See e.g. the docs on hash tables: [https://docs.racket-
lang.org/reference/hashtables.html](https://docs.racket-
lang.org/reference/hashtables.html)

As mentioned in the comments here, Racket's documentation is wonderful. I've
yet to come across a better mix of technical reference, guiding narrative and
a wealth of usage examples.

------
ertucetin
_The lux­ury of ignor­ing details is one of the great plea­sures of
pro­gram­ming._

That's perfect :)

------
rnikander
Has anyone used Racket for a long running application server? Last I remember
it did not have native threads (ie, it could only use one core), and I don't
know about it's reliability compared to something like the JVM.

~~~
dragonwriter
It uses separate native threads with shared state for futures, though there
are limitations on supported operations without defeating parallelism; it also
offers message passing parrallelism with places, which I think are implemented
as native processes.but may be threads (it's conceptually shared-nothing
processes, but so are Erlang "processes" which are multiplexed onto native
threads.)

But, in any case, Racket can use multiple cores, though the APIs for doing so
are different than conventional threading APIs.

------
0xFFC
Is there any pdf version for this ?

p.s. thank you for wonderful job anyway.

~~~
Curiositry
Unfortunately, no: [http://beautifulracket.com/about-the-
author.html#faq](http://beautifulracket.com/about-the-author.html#faq)

------
vasira
Each one is very different !

