Mostly followed the following suggestions for the solution:
https://stackoverflow.com/questions/41052538/git-error-gpg-failed-to-sign-data
(However, pinentry-mac works just fine and seems to be more convenient than plain old pinentry.)
at the end, my config files look like this:
~/.gnupg/gpg.conf
# no-emit-version
use-agent
~/.gnupg/gpg-agent.conf
pinentry-program /usr/local/bin/pinentry-mac
~/.gitconfig
[commit]
gpgsign = true
[user]
signingkey = <>
name = Dan Burton
email = [email protected]
[gpg]
program = gpg2
$ brew install pinentry-mac
$ echo ‘use-agent’ >> ~/.gnupg/gpg.conf
$ echo ‘pinentry-program /usr/local/bin/pinentry-mac’ >> ~/.gnupg/gpg-agent.conf
Cool, I didn’t actually know you gave a talk on Stack. I came to your blog out of sheer coincidence while clicking around reading Haskell stuff, and am reading through your archives full of really interesting material :-).
]]>I’m pretty excited, too. I gave a talk on stack recently, but I’m guessing that’s what linked you to my blog in the first place.
Note that stack wasn’t “just created”; it’s actually been a long time coming. Yes, a lot of it was just written over the past month. But a lot of the code was also drawn from FP Complete’s internal build tool that has been around and evolved for quite some time.
]]>I’m not; I haven’t had the opportunity to use Typed Racket lately. I have had the chance to work in Haskell, and I think the “defer type errors” option that GHC got in 7.8 adds a useful capability similar to gradual typing. Another interesting contribution in this area is Liquid Haskell, which adds a layer of refinement types on top of Haskell’s type system. It’s like gradual typing, except that the baseline is already typed, and refinement types can be gradually added to make the contracts even stronger.
]]>