Posts tagged Racket
Racket’s new package manager is great. It debuted with Racket 5.3.5. Although officially still in beta, it was already good enough to use for real projects. Racket developers wanted people to use it for real projects, to get the experience needed to make it even better.
Over many months, the Git
HEAD version of Racket — what would become Racket 6 — gradually introduced a few new and changed features for package management.
However, you might not want to use the newer features, yet. Not if you want your package to be usable by people still using Racket 5.3.5 or 5.3.6 — or usable by other packages that wish to support such people.
Fortunately, the older features are still supported in Racket 6, and it’s not very difficult or inconvenient to use them. You just need to know what they are.
Whew. About 2 weeks and 86 commits later, I have a branch I’m almost ready to merge to master: a completely redesigned markdown parser using Parsack.
At RacketCon when I gave my short talk about Frog, I had a slide:
“How hard can it be to…”
— Me, too often.
When I learned Racket, one of the first things I wanted to try was doing HTTP requests. And Racket’s
net/url module is great.
Racket was the first real Lisp/Scheme family language I ever learned. As a result I was focused on building blocks like ports, and assuming I would need to open and close them directly all the time. At that early stage, I also didn’t really appreciate the value of higher-order functions. So I overlooked the value of
call/input-url. I sometimes see other folks do the same, and wanted to write this short blog post.
In my experience, the way to become a better programmer is to:
- write lots of code
- skim lots of reading material, and
- defer answers until you have questions.
To learn why you should skim this post, please read it carefully.
Travis CI is a continuous integration service for open source projects that has nice integration with GitHub.
Whenever you push a commit to GitHub, a build/test can launch. Notification of the result comes via a variety of methods. Also there’s a “badge” to show the build status, which you can link to in your
Jay McCarthy posted about a macro to do a C-style
case, where clauses fall through to the next unless you use a
break. His post is a great look at Racket macrology. Jay’s implementation is elegant. If you haven’t yet, go read it.
I’m writing this blog post on a Chromebook Pixel. In Emacs. On Ubuntu, as a chroot, thanks to crouton.
Why do I have a Chromebook Pixel? Google gave one to every Google I/O 2013 attendee.1
Although I was happy to get such a cool new gadget, I honestly wasn’t sure what I’d do with the thing. I really like my MacBook Pro Retina and wasn’t looking for an alternative. Also, although I love web apps and 45% of my day is in the web browser, another 45% is in Emacs using Racket — what about that?
Although I prefer Racket, there are a few idioms from Clojure I like. I’m particularly infatuated with the threading macros,
I was surprised how little documentation I could find for these. So although I’m writing this for Racketeers, it’s possible a few Clojure folks might find it interesting, too.
Recently I wrote about my my Google Reader successor, using rss2email to push feeds to Gmail.
In the month since, I was still running it on my laptop. To make it work best, it should run on a dedicated server. That way, it would push emails even if I’m away from my laptop, and I could read them on e.g. my phone. But before committing to setting this up on Amazon EC2, I wanted to be sure I liked the approach.
Do the following apply to you?
Maybe you want to contribute something to Racket: You’d like to improve the documentation, or you’d like to add a small feature.
Maybe you’re comfortable with Git, but haven’t made a pull request before.
Maybe you’ve made a one-off pull request, but haven’t tried to contribute to the same project over time and stay in sync with the upstream project.
If so, you may find my guide helpful. I was hopelessly confused about how to handle the branches and merging. After I figured it out, I wrote this down in a Gist as a note to my future self. Today I figured I’d dust it off and make it into a blog post.