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.Continue reading ...
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.Continue reading ...
2013-04-11 :: Racket
Recently I've shared some new libraries using the new package manager, but not uploaded them to Planet.
What about my existing Planet libraries? Yesterday Danny Yoo pointed out a bug in the Dynamo module of my Amazon AWS library on Planet.
The bug wasn't present in my GitHub repo—I'd neglected to go through the steps of making a new version and uploading to Planet.
By contrast, with the new package manger, it would have been automatically up-to-date.Continue reading ...
2013-04-05 :: technology
I've owned a couple TiVos over the years. The first thing I do on setup? Turn off the suggestions.
The HBO series Mind of the Married Man joked about this a decade ago: "My TiVo Thinks I'm Gay".
Although I love NetFlix I also find their recommendations underwhelming.
About the only film recommendations I ever find valuable are from a friend or someone like Roger Ebert, who sadly just passed away yesterday.
Why? Precisely because the recommendations aren't limited to what I already like.Continue reading ...
2013-04-02 :: Racket
Racket parameters let you manage stateful global variables in a way that feels more functional and is also thread- and continuation-safe. A convenient
parameterize form lets you change and restore them. I'll discuss this and show how I map parameters to a configuration file.
Just a brief update about what I've settled on as my replacement for Google Reader. I'm using Rss2Email, following the instructions in Turning Gmail into Google Reader.
I tried Feedly, NewsBlur, and Reeder. Each of them wasn't bad, but each felt "heavy" compared to Google Reader. So W. Caleb McDaniel's post really clicked with me.Continue reading ...
2013-03-26 :: Software
In general I'm a big fan of web apps for many reasons:
You don't need to migrate data when you buy a new computer or mobile device.
You don't spend a bunch of time updating apps for security or improvements. Doing so may be easier on a mobile device than on a desktop. But there are days when my phone does more work updating apps than me actually using it.
Synchronization sucks. Using multiple native apps with local stores requires synchronizing state. Essentially this is N/A with a web app because the data is stored in one place. (Note: Caching doesn't suck; just synchronizing.)
Developers can iterate and experiment – "release constantly". This may sound like it's an advantage for devs, but to the extent it makes better apps and saner feature accretion, it's good for us, too.
Easier to hack, by which I mean customize for individual needs and preferences.
- Easier (and generally safer) to use hacks created by others (in the form of browser extensions).
So great. But obviously the Google Reader shutdown brought me up short. Shook my faith. Am I wrong to prefer web apps?
On reflection, there are two reasons why it's still OK to prefer web apps.Continue reading ...
2013-03-22 :: Racket
I wanted Frog to provide a "preview" feature: Launch a local web server with a version of the site, and open a web browser.
This local web server simply needs to serve static files. No server-side applications. (Not even features you'd likely want in a production static file server like gzip compression or
If-Modified handling.) It just needs to start quickly, and preferably not be a lot of work to code.
Although I'm using Google Analytics for this blog, I'm not using FeedBurner. But imagining what feed readership stats I might want, I came up with a short list, and thought about how to get them without FeedBurner.Continue reading ...
2013-03-15 :: Google
The truth is this: Google destroyed the RSS feed reader ecosystem with a subsidized product, stifling its competitors and killing innovation. It then neglected Google Reader itself for years, after it had effectively become the only player. Today it does further damage by buggering up the already beleaguered links between publishers and readers. It would have been better for the Internet if Reader had never been at all.
What struck me is the obvious search-and-replace:Continue reading ...
Last night I learned the news that Google is killing Google Reader July 1.
This morning I'm feeling like this.
Continue reading ...
A good rule of thumb in Racket is to use a
struct instead of
list when you're juggling more than two or three items.
UPDATE: This was an early post. For up-to-date info, see Frog.
When the code settles down a bit I'll put it in a GitHub repo, and write a full README.md. Meanwhile, here's an overview.Continue reading ...
OK, I have my site generated using Frog and pushed it to GitHub Pages for www.greghendershott.com.
I want to tweak the CSS. It's vanilla Bootstrap. Most importantly, I wish the headings were a few points smaller and the body text a few points bigger.
The other remaining item is to do the 301 redirect from Blogger to here. It turns out that this should be ridiculously easy to do with Amazon S3. You can make a bucket that does nothing but perform 301 redirects. I've created such a bucket already, and the redirects work fine. I simply need to update my DNS, for which I'm using Amazon Route 53.
I'd been trying to stick to a roughly Tuesday and Thursday schedule for posting here.
I haven't this week because I've been trying to work up a replacement for using Blogger.
Basically, I want to write posts in simple Markdown, and generate the blog statically. To be hosted on GitHub or S3 or whatever. And I want it to use Bootstrap so I don't have to reinvent that wheel.Continue reading ...
2013-02-26 :: software
A college classmate's nickname for me, after we learned linked lists in Pascal:
Updated, for many years it would have been:
Not long ago I did quite a bit of:
1 2 3
SELECT TOP 1 part FROM greg SORT BY height
So speaking of AdBlock, sometimes I forget it's there.
I was using the Facebook app for iPad today. Which I hardly ever do. And I'm getting a lot of this in my feed:
And I'm all like:
And I'm clicking "report spam" on each of the little fuckers. Tap, tap, please bugger off. Tap, tap, suck my balls and bugger off. And so on.Continue reading ...
Folks from my company would stay north of Frankfurt at the Mövenpick Hotel in Oberursel. It was more affordable and very comfortable. The front desk staff remained the same for many years. They got to know us—the obviously American, odd musician types—and were very friendly.
A couple years ago, I'd scheduled to fly home on Sunday, in case I needed to have more meetings on Saturday. The meetings never materialized, and I took it as a free day. The April weather was unseasonably warm. I walked into Oberursel's small "downtown" and explored it like I never had before. At some point I ended up wandering into paths that led through parks and open fields. It was very beautiful.Continue reading ...
My Chrome extensions these days, from left to right...
Continue reading ...
For some reason CLI popped into my head the other day.
CLI is the 808x instruction to clear maskable interrupts. If you're writing a routine to service a hardware interrupt, you do a
CLI early in your routine — to prevent another hardware interrupt from causing your routine to be re-entered. Neglecting this invites the most delightful form of bug, the intermittent bug.
.Continue reading ...
Last week I visited Electronic Frontier Foundation in San Francisco. Mark Cuban and Minecraft creator Markus Persson had recently funded an additional staff attorney position, the "Mark Cuban Chair to Eliminate Stupid Patents".
Considering this after I got home, I had an idea about an additional angle from which to attack this problem.
What if there were a sort of "prior art database"? Where people could submit and find information about first-use or discovery of techniques—whether patented or not?Continue reading ...
About a month ago I got my Nexus 4. My observations follow.
Continue reading ...
2013-02-01 :: technology
Which of these do you use, and in what proportion?
2013-01-24 :: technology
I am seeking funding for a new venture: A theme park featuring "human workers".Continue reading ...
I learned Racket after 25 years of mostly using C and C++.
Some psychic whiplash resulted.
"All the parentheses" was actually not a big deal. Instead, the first mind warp was functional programming. Before long I wrapped my brain around it, and went on to become comfortable and effective with many other aspects and features of Racket.
But two final frontiers remained: Macros and continuations.Continue reading ...
I played trombone and piano in high school. I played electronic keyboards (including a Moog Prodigy, my first synth) in a couple bands. I wasn't a very good musician but I enjoyed it.
I went to Oberlin College 1982-1986. I did a major in philosophy and a minor in religion. Although the Oberlin Conservatory didn't offer a major in electronic or computer music back then, I did a major's worth of those courses. I took just two computer science courses: assembly language and Pascal. That turned out to be good preparation for teaching myself C later.Continue reading ...
2012-02-16 :: blog
In case you hadn't noticed, I'm not exactly posting here, much.
This is not a firehose of information.
This is not a bountiful font of wisdom from which you can aspire merely to glean a glimmering glimpse of insight.
This is not a haystack containing needles such as the secrets to wealth, popularity, and whiter teeth.
This blog will not cause Comcast to send you a warning that you are about to exceed your 250 GB of unlimited data.
Why? Simply because (a) I don't have that much to say, and (b) what I do have to say, I'm saying on Google+. That is my de facto "blog", for now.
See you there.
2011-12-27 :: technology
My domain wasn't working for ~24 hours due to my switching from GoDaddy to Namecheap. Although it's possible to make that kind of switch with minimal downtime, in my case:
It was an impulse decision on my part. (Finally got some time to reflect on GoDaddy's support for SOPA. As well as the elephant killing and the tacky "babe marketing". SOPA was strike three.)
- Namecheap seemed to be struggling with an unexpected number of transfers, inconveniently over the holiday weekend. (In fairness to GoDaddy, maybe their delay was at least partly due to the same reason.)
Fortunately it's not as if greghendershott.com is a hot destination for millions of fans. Or dozens.
Also, I wanted to mention that I did a couple live chats with Namecheap support and they were very helpful and quick.