Live data from Hacker News

Racket 6.0: New package system, new doc CSS, JIT support for ARM

blog.racket-lang.org

71–78 of 78 posts

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#71

I like that the docs look less like they jumped out of the geocities era. Still could go a long way though. Signalling is important, and if you signal "old and unupdated" to your users, that's not a great start. (e.g.: http://docs.racket-lang.org/pkg/Package_Concepts.html ) "prev", "next" (when the table of content is right there next to it) and "top" (usually the header / logo link these days) and collapsible TOC tr…

I think we just disagree on taste for documentation pages. For example, I find the Vagrant docs somewhat garish and hard to read.

The current look of the Racket documentation was designed by Matthew Butterick. You can see his excellent book on typography and design here: http://practicaltypography.com/ -- and it was made with Scribble, the same system that generates Racket's documentation.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#72

Earlier quoted context omitted.

When Racketeers talk about documentation, they're not talking about the sort of documentation that you are holding out as better. They're not talking CSS and markup and formatting. No. When Racketeers talk about documentation, they are speaking in Lisp and the context is code as data and data as code. When Racketeers talk about documentation they are talking about Scribble. http://docs.racket-lang.org/scribble/index.…

My critique was more on the visual side of things. I think it matters. That said, onto your comment: I liked the presentation. The @ notation is kinda neat and elegant, and no doubt enabled by the ridiculous power macros give you in terms of modifying how everything is parsed. It's cool that it's implemented as a DrScheme lang, and it can run and is all code-is-data-y, and it's not a totally separate language. Howeve…

What sets scribble apart are:

* That it's a full programming language, unlike systems like Markdown, or Sphinx, or JavaDoc, or other similar systems. But it also doesn't sacrifice being easy to write, the way that text is easy to write.

* That is works properly with binding. If you're documenting a function, you want to document the correct one -- that's handled with binding, the same way it works when programming. When you're writing an example, the same should be true -- again, handled with binding in Scribble. This works for _programs_, not just identifiers, which is what it looks like Sphinx does. That's why, for example, every single identifier in the examples on http://racket-lang.org is hyperlinked to its documentation. If you go to http://docs.python.org/3/tutorial/controlflow.html , the examples aren't hyperlinked at all.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#73

Earlier quoted context omitted.

My critique was more on the visual side of things. I think it matters. That said, onto your comment: I liked the presentation. The @ notation is kinda neat and elegant, and no doubt enabled by the ridiculous power macros give you in terms of modifying how everything is parsed. It's cool that it's implemented as a DrScheme lang, and it can run and is all code-is-data-y, and it's not a totally separate language. Howeve…

Beware the Blub Paradox. http://www.paulgraham.com/avg.html

I've read "beating the averages" about a billion times, along with all the other PG essays. I was (and still am) a fan. I took several classes using PLT scheme and I've used PLT scheme for a reasonable amount for other tasks (wasn't called racket then). I've also dabbled with some lisps. I've read the little schemer, I've went through the wizard book. I've written the obligatory metacircular evaluator. All this got me excited.

Over the years though, I've done my best to learn the lessons and move on.

Is it really a surprise that lisp, an aged tool of refined elegance, was a competitive advantage over the other popular languages in 1997, which were still in their neanderthal phase? I'm not sure if the difference is that huge these days though. While in the olden days languages seemingly refused to learn from the teachings of lisp, it seems today they steal from lisp like pop artists steal from each other. Say, a ruby DSL with blocks and other tricks is not as flexible as a defmacro based lisp one, but could there maybe be a tradeoff here?

Writing in lisps give me what I call the intellectual warm-fuzzies. I get to use many elegant tools to form abstractions upon abstractions to create the DSL for my problem domain. I like that. Some call it doing the Right Thing. The polar opposite of duct-tape programming if you will. A quote from the article: "to translate this program into C++ they literally had to write a Lisp interpreter [so basically a lisp-to-c++ compiler]". This is exactly the sort of thing I'm talking about. It's cute. It's the Right Thing. Rewriting the code by hand in C++ is for plebians.

And, given enough code, maybe writing the lisp-to-c++ compiler is less effort than a rewrite initially. Maybe. I'll allow the benefit of the doubt. But what about the machine-outputted C++? Is the code idiomatic? Is it performant? Who wants to maintain machine generated code? Who wants to maintain a custom compiler? Maybe none of these are problems, but my vote is that it's unlikely.

The blub paradox applies much more strongly (or maybe I could say "only applies") when you haven't been exposed. When you, in your arrogance, refuse to try something different. I've traveled up and down the proverbial ladder, and I know where I'm comfortable. For now. I suspect it'll change sooner or later.

What astounds me is the arrogance to claim that lisp(s) is the One True Language, and anyone who doesn't agree Just Doesn't Get It. It's like the audacity a religious person has in claiming that their god is the one and only, in effect taking for idiots all the millions of remaining people who ever existed and sincerely believed in their own creation stories. What are the chances that everyone is stupid and you're the only enlightened one?

In response, I give you the Bipolar Lisp Programmer: http://www.lambdassociates.org/blog/bipolar.htm

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#74
post #72

Earlier quoted context omitted.

My critique was more on the visual side of things. I think it matters. That said, onto your comment: I liked the presentation. The @ notation is kinda neat and elegant, and no doubt enabled by the ridiculous power macros give you in terms of modifying how everything is parsed. It's cool that it's implemented as a DrScheme lang, and it can run and is all code-is-data-y, and it's not a totally separate language. Howeve…

What sets scribble apart are: * That it's a full programming language, unlike systems like Markdown, or Sphinx, or JavaDoc, or other similar systems. But it also doesn't sacrifice being easy to write, the way that text is easy to write. * That is works properly with binding. If you're documenting a function, you want to document the correct one -- that's handled with binding, the same way it works when programming. W…

I think the binding is really the big thing here. That basically the whole module environment is also available to scribble since it is also legitimate code, and it's being executed by the same interpreter, in essence.

I'm unconvinced that this is not possible otherwise though. If you're parsing the darn language to get to the AST to generate all the module names, contents, etc, I don't see why you couldn't have access to all that info when generating an example code block.

Example:

http://wtf.tw/etc/pygments/pygments/formatters/html.py.html

Although I don't know why it's not more common.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#75

Earlier quoted context omitted.

> a network service sigh solving the same problems over and over and over inetd, xinetd, djb's tcpserver, probably others and heck, even systemd have all offered well tested and hardened solutions this this problem. Every generation rewrites Unix badly

Couldn't he just wrap his Haskell executable in inetd? I don't know whether m0nastic is doing that, but I don't think writing a program in Haskell precludes the use of inetd, etc.

Yes, that was my point.

Although I might suggest that inetd is an bit anachronistic.

Here's DJB's take - http://cr.yp.to/ucspi-tcp.html

" Many sites are replacing inetd with tcpserver, for several reasons:

* inetd is unreliable under high loads. It cuts off service for 10 minutes if it receives ``too many'' connections in 1 minute.

* inetd does not provide effective resource management. It will happily use up all your memory if you are running a popular service.

* inetd has trouble with sudden bursts of activity. Its listen() backlog is typically only 5 or 10 and cannot be raised.

"

Personally I use tcpserver. I have an SMTP server I wrote in awk - http://www.proweb.co.uk/~matt/awk/smtpd.awk I ran this as the main SMTP server for production web site for about 5 years.

and a web server in rc shell script http://www.proweb.co.uk/~matt/rc/webserver.rc

They don't have to know anything about being network programs.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#76
post #72

Earlier quoted context omitted.

What sets scribble apart are: * That it's a full programming language, unlike systems like Markdown, or Sphinx, or JavaDoc, or other similar systems. But it also doesn't sacrifice being easy to write, the way that text is easy to write. * That is works properly with binding. If you're documenting a function, you want to document the correct one -- that's handled with binding, the same way it works when programming. W…

I think the binding is really the big thing here. That basically the whole module environment is also available to scribble since it is also legitimate code, and it's being executed by the same interpreter, in essence. I'm unconvinced that this is not possible otherwise though. If you're parsing the darn language to get to the AST to generate all the module names, contents, etc, I don't see why you couldn't have acce…

Right, people have certainly implemented hyperlinked versions of code by re-implementing the parser etc. LXR is an excellent example of this. What sets Scribble apart is that

* It's a documentation system, not just a code formatter.

* It's a programmable documentation system, and the code that _implements_ your documentation is kept appropriately separate from the code that you are documenting. This makes use of Racket's support for phases.

* That it doesn't re-implement the parser etc, but can use the built-in one, because of Racket's macros.

And, as you say, even if none of this was unique, there's the fact that Racket does it, and has 500k lines of documentation, all done comprehensively in this style.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#77

Earlier quoted context omitted.

While I haven't read HtDP, I've read similar things. I'm in my late 20s going for a second BS (this time in comp sci), and wanted to go through SICP on my own (plus the online lectures). I felt that I needed a bit of a warmup, though, and chose 'Concrete Abstractions' instead of HtDP. I'm satisfied with it so far.

It may seem obvious but HtDP emphasizes designing programs. It's not really trying to teach theories of computer science or abstractions. It's about developing coding habits - in terms of SICP it's all about good wishful thinking. SICP, and this is not a criticism, is more like a stamp collection of computer science topics. It provides a point of reference when I've read about operating systems, state machines, compi…

Thank you for the thorough reply.

I do own another Felleisen text (Realm of Racket) that I do intend on reading. And I'm sure, since it's free, I will at least look through HtDP.

Re: Racket 6.0: New package system, new doc CSS, JIT support for ARM

#78

Earlier quoted context omitted.

Couldn't he just wrap his Haskell executable in inetd? I don't know whether m0nastic is doing that, but I don't think writing a program in Haskell precludes the use of inetd, etc.

Yes, that was my point. Although I might suggest that inetd is an bit anachronistic. Here's DJB's take - http://cr.yp.to/ucspi-tcp.html " Many sites are replacing inetd with tcpserver, for several reasons: * inetd is unreliable under high loads. It cuts off service for 10 minutes if it receives ``too many'' connections in 1 minute. * inetd does not provide effective resource management. It will happily use up all you…

amusingly I've just spotted a bug in the smtp code. a missing _ for logging unexpected EOF reading from the client. Not fatal but maybe useful for spotting spammers.

I've inspired myself to resurrect using this instead of Postfix for incoming mail. See if I can get it hooked up with spamassassin.

Post reply on HN