All Posts


feeds2gmail

2013-05-06 :: Google, Racket, Atom, RSS

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 ...

A guide for infrequent contributors to Racket

2013-04-16 :: Racket, Git

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 ...

Planet vs. the new package system

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 repoI'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 ...

Roger Ebert, not engines

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 ...

Parameters in Racket

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.

Continue reading ...

My Google Reader successor

2013-03-29 :: Google, Atom, RSS

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 ...

Host your own web apps?

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 ...

Serve static files

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.

Continue reading ...

Feed stats in Frog (without FeedBurner)

2013-03-19 :: Frog, Google, Atom, RSS

In light of Google shutting down Google Reader and removing feed-following UI in Chrome, it probably can't be long until they shut down FeedBurner, too.

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 ...

The year Google became "Evil"?

2013-03-15 :: Google

Via Daring Fireball I found Google, destroyer of ecosystems. Aldo Cortesi writes:

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 ...

Killing Google Reader

2013-03-14 :: Google, RSS, Atom

Last night I learned the news that Google is killing Google Reader July 1.

This morning I'm feeling like this.

Continue reading ...

Keyword structs

2013-03-11 :: Racket, macros, software

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.

Continue reading ...

Frog overview

2013-03-11 :: blog, Frog, Racket, software

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 ...

Live with Frog

2013-03-10 :: blog, Frog, Racket, software

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.


Lull while I prepare to change tires

2013-03-08 :: software, Racket, blog, Frog

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 ...

greg^.head --> (first greg)

2013-02-26 :: software

A college classmate's nickname for me, after we learned linked lists in Pascal:

1
greg^.head

Updated, for many years it would have been:

1
greg->head

Not long ago I did quite a bit of:

1
2
3
SELECT TOP 1 part
FROM greg
SORT BY height

Nowadays:

1
(first greg)

Answers:
C/C++.
SQL.
Lisp/Scheme/Racket.


Fucking "Suggested Post" (why web apps matter)

2013-02-20 :: software, technology

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 ...

Walking in the steps of soft interrogation

2013-02-19 :: life, politics

For many years I visited Frankfurt Musikmesse. Roughly speaking, Musikmesse is Europe's equivalent of the NAMM show in the US.

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 usthe obviously American, odd musician typesand 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

2013-02-14 :: software, technology

My Chrome extensions these days, from left to right...

Chrome Extensions

Continue reading ...

Clear interrupts

2013-02-12 :: life, nostalgia, technology

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.

Roland MPU-401.

Continue reading ...

We need a prior art database

2013-02-07 :: patents, politics, software, technology

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 techniqueswhether patented or not?

Continue reading ...

Compare apples to oranges with the Nexus 4

2013-02-05 :: technology, Android

About a month ago I got my Nexus 4. My observations follow.

Google Nexus 4

Continue reading ...

Computing like component stereo systems

2013-02-01 :: technology

Which of these do you use, and in what proportion?

  • Phone
  • Tablet
  • Laptop
  • Desktop
Continue reading ...

Series A round: Human worker theme park

2013-01-24 :: technology

I am seeking funding for a new venture: A theme park featuring "human workers".

The theme park will be similar to Old Sturbridge Village or Plimoth Plantation, but focusing on the last half of the 20th century.

Continue reading ...

Fear of Macros

2013-01-14 :: macros, Racket, software

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 ...

Ancient history

2012-08-15 :: life, nostalgia

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 ...

Google+

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.


Domain registrar switch

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:

  1. 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.)

  2. GoDaddy seemed to be dragging their heels releasing transfers.

  3. 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.