Why Hygienic Macros Rock
I've recently been reading a lot of excellent essays on programming language design by Paul Graham. Paul and I agree about a number of things: (1) LISP is beautiful and powerful family of languages,...
View Article"Why Hygienic Macros Rock" by Scott
To what extent can hygienic macros be implemented in non- and vice versa? I’m more familiar with Emacs Lisp-style macros than CL or Scheme macros, but it seems like the hygiene involves automatically...
View Article"Why Hygienic Macros Rock" by Eric
Scott: That’s a good question, and I don’t actually know the answer.Most Scheme implementations take a distantly-related approach. They generally have two different hygenic macro systems:A “low-level”...
View Article"Why Hygienic Macros Rock" by Daniel
I have actually read a lot about hygienic vs non-hygienic macros. I just cannot recall what blogs and sites I read them.You might try smuglispweeny and lambda-the-ultimate blogs, though. And...
View Article"Why Hygienic Macros Rock" by Scott
Daniel: Ok, thanks.I’m acquainted with Forth. I read both Starting Forth and Thinking Forth a few days after posting the above comment, actually; I love the concatenative approach, though I find Forth...
View ArticleScraping your Fitocracy score with capybara-webkit
Fitocracy is a great site for tracking exercise, one which manages to have both a very friendly culture and an impressively gung-ho attitude. But they've never gotten around to implementing any kind of...
View ArticleLearning Middle Egyptian with Anki, slowly
Although I don't usually mention it here, one of my hobbies is learning languages. French is my strongest by far, but I've been experimenting with seeing just how slowly I can learn Middle Egyptian....
View ArticleMy personal tool choices for rich JavaScript applications (May 2014)
Today, it's possible to build rich, sophisticated applications in the browser. Everybody's familiar with GMail and Google Maps, of course, but have you seen stuff like Mozilla's PopcornMaker?This just...
View ArticleInstalling Rust nightly builds on Ubuntu 10.04 Lucid
Rust is a systems programming language designed around speed and safety. It sits roughly halfway between Go and Haskell. In particular, it combines precise, safe control over memory with high-level...
View ArticleDeploying Rust applications to Heroku, with example code for Rustful
Update, 24 June 2014: I'm planning to add support for building projects with Cargo shortly. I'll announce it here and on Twitter when it's ready.Update, 12 July 2014: Highly experimental Cargo support...
View ArticleDeploying Rust applications to Heroku, with example code for Iron
Now with support for Iron, Cargo and Cargo.lock!You can deploy an example Rust application to Heroku using this button:If you'd prefer to use the command line, you'll need git and the Heroku toolbelt....
View ArticleRust lifetimes: Getting away with things that would be reckless in C++
Over the years, I've learned to be cautious with C++ pointers. In particular, I'm always very careful about who owns a given pointer, and who's in charge of calling delete on it. But my caution often...
View ArticleMigrating from Heroku (and Linode) to Docker on AWS
I've long been a huge fan of Heroku. They've made it super easy to deploy and scale web applications without getting bogged down in server administration. Also, their free tier has been very generous,...
View ArticleUnscientific column store benchmarking in Rust
I've been fooling around with some natural language data from OPUS, the “open parallel corpus.” This contains many gigabytes of movie subtitles, UN documents and other text, much of it tagged by...
View ArticleProving sorted lists correct using the Coq proof assistant
About 15 years ago, I was hanging out at the MIT AI Lab, and there was an ongoing seminar on the Coq proof assistant. The idea was that you wouldn't have to guess whether your programs were correct;...
View ArticleBare Metal Rust: Low-level CPU I/O ports
Want to build your own kernel in Rust? See the Bare Metal Rust page for more resources and more posts in this series.Rust is a really fun language: It allows me to work on low-level kernel code, but it...
View ArticleBare Metal Rust 2: Retarget your compiler so interrupts are not evil
Want to build your own kernel in Rust? See the Bare Metal Rust page for more resources and more posts in this series. There's just a few more posts to go until we have keyboard I/O!Hacking on kernels...
View ArticleBare Metal Rust 3: Configure your PIC to handle interrupts correctly
Want to build your own kernel in Rust? See Bare Metal Rust to get started.We're almost ready to write a keyboard driver in Rust! But first, we need to deal with two obstacles: setting up the PIC, and...
View ArticleShould Rust channels panic on send if nobody's listening?
Lately, I've been working on several real-world systems using Rust's async and tokio. As you can see on the areweasyncyet.rs site, this requires using nightly Rust and the experimental...
View ArticleIn nightly Rust, 'await!' may never return (dropping futures)
I've been using the proposed await! and Future features in nightly Rust, and overall, I really like the design. But I did run into one surprise: await! may never return, and this has consequences I...
View Article