---
title: About Gwern
description: "Who am I online & what have I done? Contact information; sites I use; computers and software tools; things I've worked on; psychological profiles"
created: 2009-08-05
modified: 2020-06-14
status: finished
confidence: highly likely
importance: 3
css-extension: dropcaps-de-zs
backlink: False
...

This page is about me; for information about Gwern.net, see [About This Website](/about).

# Personal

<div class="epigraph">
> A transition from an author's book to his conversation, is too often like an entrance into a large city, after a distant prospect. Remotely, we see nothing but spires of temples and turrets of palaces, and imagine it the residence of splendour, grandeur and magnificence; but when we have passed the gates, we find it perplexed with narrow passages, disgraced with despicable cottages, embarrassed with obstructions, and clouded with smoke.
>
> [Samuel Johnson](!W); _[The Rambler](!W)_, No. 14 (1750-05-05)^[This is a literary way of saying I am not as interesting as my writings, and in some respect, it should not matter who I am or what I have done because [argument screens off authority](https://www.lesswrong.com/posts/5yFRd3cjLpm3Nd6Di/argument-screens-off-authority).]
</div>

<div class="epigraph">
> Behind a remarkable scholar one often finds a mediocre man, and behind a mediocre artist, often, a remarkable man.
>
> [Friedrich Nietzsche](!W), [_Beyond Good & Evil_](!W "Beyond Good and Evil: Prelude to a Philosophy of the Future") §137
</div>

<div class="epigraph">
> The reader lives faster than life, the writer lives slower.
>
> James Richardson, ["Even More Aphorisms and Ten-Second Essays from Vectors 3.0"](/doc/philosophy/2010-richardson-bythenumbers-vectors30 "'Vectors 3.0: Even More Aphorisms and Ten-Second Essays', Richardson 2018")
</div>

## Work

I am a freelance American writer & researcher.
(To make ends meet, I have a [Patreon](https://www.patreon.com/gwern), benefit from Bitcoin appreciation thanks to some old coins, and live frugally.)
I have worked for, published in, or consulted for: _Wired_ (2015), [MIRI/SIAI](!W "Machine Intelligence Research Institute")[^SIAI-work] (2012--2013), [CFAR](https://rationality.org/) (2012), [GiveWell](!W) (2017), the FBI (2016), [_Cool Tools_](https://www.amazon.com/Cool-Tools-A-Catalog-Possibilities/dp/1940689007/ "ed. Kelly 2013") (2013), [Quantimodo](https://web.archive.org/web/*/https://quantimodo.com/) (2013), [New World Encyclopedia](https://www.newworldencyclopedia.org/entry/Info:Main_Page) (2006), [Bitcoin Weekly](https://web.archive.org/web/20181229003208/http://bitcoinweekly.com/) (2011), [Mobify](!W) (2013--2014), [Bellroy](https://bellroy.com/) (2013--2014), [Dominic Frisby](https://www.frisbys.news/) (2014), and private clients (2009-); everything on Gwern.net should be considered my own viewpoint or writing unless otherwise specified by a representative or publication.
I am currently not accepting new commissions.

[^SIAI-work]: When I say "research assistant", I mean it in the older sense of someone who does detail work for another person's original research---so I spent a lot of time reading up on specific areas and making notes about stuff my boss needs, and only occasionally do independent work. Not all my work can be made public, but some of it is. A partial list in rough chronological order:

    - ["Intelligence Explosion: Evidence and Import"](https://intelligence.org/files/IE-EI.pdf), Muehlhauser & Salamon 2012?

        One of my first projects was working on this paper---digging up citations for various claims and giving general feedback; most of my changes or comments are private when we switched to working through Google Docs, but some of my [initial comments](https://www.lesswrong.com/posts/rWwmRvp8FEKDZ49d6/intelligence-explosion-analysis-draft-2-snippet-1#oeJhkSBhkzqveEsrj) were public.
    - [finding predictions/estimates for whole-genome sequencing costs](https://www.lesswrong.com/posts/cit3HYXehBsr4d36Q/open-thread-january-15-31-2012#rWkZ3TGRsL7DhSsNR)
    - ["The Personality of (great/creative) Scientists: Open and Conscientious"](https://www.lesswrong.com/posts/9vKRHBCLvwqN26LLs/the-personality-of-great-creative-scientists-open-and)

        Summarizing some of the existing research; besides being intrinsically interesting, this is also relevant to computer intelligence---if achievement is just a reflection of IQ, then any computer intelligence will improve on humans only to the extent it has greater raw intelligence, but if achievement is limited past 130s IQ, then the picture becomes more complex. (Computer intelligence may be far more more powerful than predicted for a given intelligence level because there's no apparent reason you couldn't easily make its 'personality' open-minded---it not really being clear that truly random exploration and computing power don't yield [creativity](https://www.lesswrong.com/posts/5vogC4eJ4gXixX2KJ/should-i-believe-what-the-siai-claims#Mich92awM4J2htpqp) in some fields already---and a computer can be tireless and self-disciplined, which takes care of Conscientiousness. On the other hand, Openness and Conscientiousness may correspond to subtle high-level dynamics which can't be easily designed into an AI and can't be produced by throwing computing power at the problem, in which case the AI will underperform whatever measure of intelligence we ultimately use, like [AIXI-style IQ tests](https://www.lesswrong.com/posts/mz6RSqEYoTQJ3Rk8g/aixi-style-iq-tests).)
    - [Remote monitoring](/note/note#remote-monitoring)

        Some quick notes on remote monitoring software MIRI could use to monitor freelancers such as myself. (It's a good thing, really---trust but verify.)
    - [Some](https://www.lesswrong.com/posts/DyZuewJMopqfEnQmo/get-genotyped-for-free-if-your-iq-is-high-enough#PYRhkrvFybZFfa24q) [info](https://www.lesswrong.com/posts/DyZuewJMopqfEnQmo/get-genotyped-for-free-if-your-iq-is-high-enough#s6NMhaAheS7FtAHWT) on the big Beijing genomics project, and estimates about personality and IQ, and past Chinese abuse of genetic information
    - [Are Sunk Costs Fallacies?](/sunk-cost "'Are Sunk Costs Fallacies?', Gwern 2012")

        A detailed examination of one cognitive bias asking whether it has been misinterpreted as a problem for individuals.
    - ["Against Utilitarianism: Sobel's attack on judging lives' goodness"](https://www.lesswrong.com/posts/ovLpQqpRLtpXPdKKP/against-utilitarianism-sobel-s-attack-on-judging-lives)

        Philosophy essay summarizing and attempting to analyze a recent class of objections to utilitarianism (that one cannot judge utilities of lives, and hence the utilitarian ethical project is impossible).
    - Neuroscience additions to Wikipedia; I had a hard time finding references for a MIRI paper, and donated my results to Wikipedia so at least no one else has to suffer so much:

        - [Exactly how big are chimpanzee & human brains, anyway?](https://en.wikipedia.org/w/index.php?title=Chimpanzee&diff=next&oldid=475451653)
        - [Primate and human brain size correlates with IQ](https://en.wikipedia.org/w/index.php?title=Neuroscience_and_intelligence&diff=next&oldid=471173931) (No, really. The correlation isn't terribly big, though.)
        - [Rat IQ](https://en.wikipedia.org/w/index.php?title=Rat&action=historysubmit&diff=475838983&oldid=472309056) (mixed evidence, thankfully)
    - [polyamory review](https://www.lesswrong.com/posts/gowLWvZfri5XKiy9n/open-thread-february-1-14-2012#Ao9YaT8QBzEkBFKuh)

        Not really enough data to do anything but point out problems for reliable assessment. My subjective impression is that [polyamory](!W) is complex enough that it may not be a good idea even for polyamorists.
    - ["Cashing Out Cognitive Biases as Behavior"](https://www.lesswrong.com/posts/dMDmED5LyqZtTTh5A/cashing-out-cognitive-biases-as-behavior)

        Spin off from "Are Sunk Costs Fallacies?"---2 studies examining consequences in personal life from vulnerability to cognitive biases in questionnaires
    - ["Experiment: a good researcher is hard to find"](https://www.lesswrong.com/posts/evyBmPw9ZnzmoFmP6/experiment-a-good-researcher-is-hard-to-find)

        A simple email experiment on making applicants feel that their admission test is not a waste of time: they seem to do better work.
    - [Geopolitical intelligence failures](https://www.lesswrong.com/posts/pqDCfahoRfshQkW98/open-thread-june-16-30-2012#FtGToMLyfT37WQkcD)---notes from some reading in the history of intelligence failures
    - ["Notes on the Psychology of Power"](https://www.lesswrong.com/posts/Ft2Cm9tWtcLNFLrMw/notes-on-the-psychology-of-power)
    - ["Notes on Psychopathy"](https://www.lesswrong.com/posts/ktr39MFWpTqmzuKxQ/notes-on-psychopathy)
    - ["Notes on Autonomous Cars"](https://www.lesswrong.com/posts/8ZrQkBDptXhumhP3S/notes-on-autonomous-cars)
    - [LSD](https://en.wikipedia.org/wiki/LSD#Mental_disorders) & [Modafinil and schizophrenia](/modafinil#schizophrenia)
[^LW-disagreements]: Of course, I don't agree with *every* MIRI or LW position. The intellectual homogeneity has been much over-estimated by outsiders who have not [bothered to look at the annual surveys](/slowing-moores-law#lesswrong-survey), I think. Here are some major points for me:

    #. [MWI](!W "Many-worlds interpretation"): I think that LWers who were persuaded by [Eliezer's MWI writings](https://www.lesswrong.com/posts/hc9Eg6erp6hk9bWhn/the-quantum-physics-sequence) are wrong to do so, as they are unfamiliar with even the rudiments of any alternatives interpretations and cannot judge in the matter; how many LWers have ever seriously looked at all the competing theories, or could even name many alternatives? ("Collapse, MWI, uh..."), much less could discuss why they dislike [pilot waves](!W) or whatever. Lacking any real understanding, they ought to simply adopt the expert consensus, where MWI seems to have a plurality or bare majority of adherents (with the weak confidence that implies).
    #. Heuristics and cognitive biases: I am not much convinced that knowledge of heuristics & biases help in ordinary life. Feedback & learning are powerful tools in eliminating error, calibrating predictions, and justify committing what may look like the [sunk cost fallacy](#gwern-sunk-cost); and feedback is what one gets in ordinary life.

        Per [Moravec’s paradox](!W), where our knowledge of heuristics & biases will pay off most is in what Hanson would call ["Far"](!W "Construal level theory") scenarios: evolutionary novel situations with few precedents and only costly or non-existent feedback. (For example, the question of whether artificial intelligence will be developed by 2040: it will only happen or not once, there are few comparable events, the consequences may be dramatic, and our ordinary lives offer no useful insights.) As it happens, this describes much of futurism & forecasting but we cannot justify our futurism by claiming its techniques are incredibly valuable in ordinary life!
    #. [Cryonics girl](https://www.lesswrong.com/posts/fLaKKRZckYtrrcz7m/link-reddit-help-me-find-some-peace-i-m-dying-young): The donations appall me, for reasons I lay out at length there---they are a complete abandonment of core ideas like utilitarianism & optimal philanthropy.
    #. Alicorn's ["Living Luminously"](https://www.lesswrong.com/posts/9o3Cjjem7AbmmZfBs/living-luminously) paradigm struck me as dubious, not backed by even token research, and likely idiosyncratic to her; I thought her [_Luminosity_](https://luminous.elcenia.com/) e-novel was merely OK despite the endless discussions on LW (rivaling those for _Methods of Rationality_ itself) and that her followup, [_Radiance_](https://luminous.elcenia.com/all2.shtml), was just terrible. Nevertheless, her novel career seems to continue.

## Websites

<div class="epigraph">
> "I don't speak", Bijaz said. "I operate a machine called language. It creaks and groans, but is mine own."
>
> [Frank Herbert](!W), _[Dune Messiah](!W)_
</div>

- [Github](https://github.com/gwern)
- Social news, discussion:

    - [LessWrong.com](https://www.lesswrong.com/): my [submitted posts](https://www.lesswrong.com/users/gwern)[^LW-submissions][^LW-disagreements] & [comments](https://www.lesswrong.com/users/gwern)
    - [Reddit](!W): my [submissions](https://old.reddit.com/user/gwern/submitted/) & [comments](https://old.reddit.com/user/gwern/comments/) ([by score](https://old.reddit.com/user/gwern/?sort=top))
    - [RSS feeds (OPML)](/doc/personal/rss-subscriptions.opml)
    - [Hacker News](!W): [submissions](https://news.ycombinator.com/submitted?id=gwern) & [comments](https://news.ycombinator.com/threads?id=gwern)

- [PredictionBook](https://predictionbook.com/users/gwern)
- [Book reviews](/review/book) (defunct: [Goodreads](https://www.goodreads.com/user/show/11004626-gwern))
- [Anime reviews](/review/anime) ([MyAnimeList](https://myanimelist.net/profile/gwern) ratings: [anime](https://myanimelist.net/animelist/gwern&status=2&show=0&order=4) ([XML](/doc/personal/gwern-myanimelist-export-anime.xml)) / [manga](https://myanimelist.net/mangalist/gwern&status=2&show=0&order=4) ([XML](/doc/personal/gwern-myanimelist-export-manga.xml)))
- I have a [theme song](https://reddragdiva.dreamwidth.org/556568.html) ([MP3](https://web.archive.org/web/20110711231247/http://reddragdiva.co.uk/lj/gwern.mp3)), courtesy of [David Gerard](https://davidgerard.co.uk/)^[There is a [slightly funny story](https://www.lesswrong.com/posts/Cq4KKE4Xg6xdeoSJZ/what-are-you-working-on#LYPBs8L4S74hu44yJ) about how Gerard came to write it, based on my musical incompetence.]

[^LW-submissions]: The following is a list of my submissions to LW I regard as substantive or particularly good, excluding content which can be found on Gwern.net, in chronological order with interesting ones highlighted:

    - ["Poker Playing"](https://www.lesswrong.com/posts/mWXxsBLngfgH6iRdT/poker-playing)
    - ["Lifelogging: the recording device"](https://www.lesswrong.com/posts/o6BfKyWQC6yv8G7bc/lifelogging-the-recording-device)
    - ["*AIXI-style IQ tests*"](https://www.lesswrong.com/posts/mz6RSqEYoTQJ3Rk8g/aixi-style-iq-tests)
    - ["*Is Kiryas Joel an Unhappy Place?*"](https://www.lesswrong.com/posts/Fy6JoSn4sozvNYaDA/is-kiryas-joel-an-unhappy-place)
    - ["SL4 META: list closure 2 month followup"](https://www.lesswrong.com/posts/7mCusQu7ZXprbYfYc/sl4-meta-list-closure-2-month-followup)
    - Life extension:

        - ["Living Forever is Hard, or, The Gompertz Curve"](https://www.lesswrong.com/posts/GytPrQ9cT46k9etoz/living-forever-is-hard-or-the-gompertz-curve)
        - ["Living Forever is Hard, part 2: Adult Longevity"](https://www.lesswrong.com/posts/zRKW7LotZxJi6Cyeg/living-forever-is-hard-part-2-adult-longevity)
        - ["Prediction is hard, especially of medicine"](https://www.lesswrong.com/posts/qNxPRh5jzrLorak6B/prediction-is-hard-especially-of-medicine)
        - ["Living Forever is Hard, part 3: the state of life extension research"](https://www.lesswrong.com/posts/igLtDADspHudvNuQJ/living-forever-is-hard-part-3-the-state-of-life-extension)
    - ["(Philosophical) Disagreements are not Rational"](https://www.lesswrong.com/posts/nnAZBLfKBnF276cqe/philosophical-disagreements-are-not-rational)
    - ["A good volunteer is hard to find"](https://www.lesswrong.com/posts/ZWxE96G84m6LotXfg/a-good-volunteer-is-hard-to-find)

        followup: ["*Experiment: a good researcher is hard to find*"](https://www.lesswrong.com/posts/evyBmPw9ZnzmoFmP6/experiment-a-good-researcher-is-hard-to-find)
    - ["On the unpopularity of cryonics: life sucks, but at least then you die"](https://www.lesswrong.com/posts/mkrvsNi8cYGSjGqkh/on-the-unpopularity-of-cryonics-life-sucks-but-at-least-then)
    - ["How to be Deader than Dead"](https://www.lesswrong.com/posts/xM4MLzaTnMA7AQbSM/how-to-be-deader-than-dead)
    - ["*Case Study: Reading Edge's financial filings*"](https://www.lesswrong.com/posts/PmrD2T6F82RkRkhQv/case-study-reading-edge-s-financial-filings)
    - ["Atheism & autism spectrum"](https://www.lesswrong.com/posts/RNSYDitY6688rP3Fb/atheism-and-the-autism-spectrum)
    - ["Stanislav Petrov Day"](https://www.lesswrong.com/posts/79g662fdusDsXWK67/stanislav-petrov-day)
    - ["*Not By Empathy Alone*"](https://www.lesswrong.com/posts/vAsQNjW3gbiskP9Wf/not-by-empathy-alone)
    - ["On the Openness personality trait & 'rationality'"](https://www.lesswrong.com/posts/CXZK4cixfnKJF5Ycy/on-the-openness-personality-trait-and-rationality)
    - ["*Social status & testosterone*"](https://www.lesswrong.com/posts/uRg5Q2vAteDem5b5S/social-status-and-testosterone)
    - ["*Amanda Knox: post mortem*"](https://www.lesswrong.com/posts/Jx4gGbPi7GuydwvzB/amanda-knox-post-mortem)
    - ["Cryonics costs: given estimates are low"](https://www.lesswrong.com/posts/dQWCDERoZjLLHWpys/cryonics-costs-given-estimates-are-low)
    - JET paper reviews:

        - ["'Ray Kurzweil and Uploading: Just Say No!', Nick Agar"](https://www.lesswrong.com/posts/agbSrvyL3tDh3ZP7h/ray-kurzweil-and-uploading-just-say-no-nick-agar)
        - ["'Vulnerable Cyborgs: Learning to Live with our Dragons', Mark Coeckelbergh"](https://www.lesswrong.com/posts/eKFHNmCcmuogQifQN/vulnerable-cyborgs-learning-to-live-with-our-dragons-mark)
        - ["'Misbehaving Machines: The Emulated Brains of Transhumanist Dreams', Corry Shores"](https://www.lesswrong.com/posts/zswEixLariPTgxLcC/misbehaving-machines-the-emulated-brains-of-transhumanist)
        - ["'Personal Identity and Uploading', by Mark Walker"](https://www.lesswrong.com/posts/G3hxkSeDCMBucYsp6/personal-identity-and-uploading-by-mark-walker)
    - ["Does Hyperbolic Discounting Really Exist?"](https://www.lesswrong.com/posts/MDSt7vSqFPZRzk26B/does-hyperbolic-discounting-really-exist)
    - ["Cryonics is Far, Cord-blood is Near"](https://www.lesswrong.com/posts/yDqQ9P23yubmoxLD4/cryonics-is-far-cord-blood-is-near)
    - ["*Inverse p-zombies: another direction in the Problem of Consciousness*"](https://www.lesswrong.com/posts/wzj6WkudtrXQFqL8e/inverse-p-zombies-the-other-direction-in-the-hard-problem-of "‘Inverse p-zombies: the other direction in the Hard Problem of Consciousness’, Gwern 2011")
    - ["The Personality of (great/creative) Scientists: Open and Conscientious"](https://www.lesswrong.com/posts/9vKRHBCLvwqN26LLs/the-personality-of-great-creative-scientists-open-and)
    - ["The Conditional Fallacy in Contemporary Philosophy"](https://www.lesswrong.com/posts/35P62KXiqR2DfG8e7/the-conditional-fallacy-in-contemporary-philosophy)
    - ["Cashing Out Cognitive Biases as Behavior"](https://www.lesswrong.com/posts/dMDmED5LyqZtTTh5A/cashing-out-cognitive-biases-as-behavior)
    - ["On the etiology of religious belief"](https://www.lesswrong.com/posts/DuM5d7stfbm4KksM2/on-the-etiology-of-religious-belief)
    - ["To Learn Critical Thinking, Study Critical Thinking"](https://www.lesswrong.com/posts/MGtKNd5GBXN5oNj7p/to-learn-critical-thinking-study-critical-thinking) -(general philosophy studies are not as efficient in improving critical thinking as critical thinking courses)
    - ["*Against NHST*"](https://www.lesswrong.com/posts/ttvnPRTxFyru9Hh2H/against-nhst) -(the statistical controversies over the _p_-value paradigm)
    - ["Notes on Brainwashing & 'Cults'"](https://www.lesswrong.com/posts/TiG8cLkBRW4QgsfrR/notes-on-brainwashing-and-cults)

I have no connection to the French singer or with `gwern.com`, any locations in Wales, the gwern on MySpace, or either account on `Pivory.com` (which are connected to an [attempted extortion of me](/blackmail "'Blackmail fail', Gwern 2013")).

### Wikis

I have been active on the English Wikipedia and related projects since January 2004. Cumulatively[^sock], I have over 90,000 edits and have written or worked on [hundreds of articles](/wikipedia-resume "'Wikipedia Résumé', Gwern 2010"); during my time as an English administrator, I performed thousands of [administrative actions](https://en.wikipedia.org/wiki/Special:Log/Marudubshinki); I am an admin on the Haskell wiki, handling [routine spam & vandalism](https://wiki.haskell.org/index.php?title=Special:Log&user=Gwern):

- [English Wikipedia](!W "User:Gwern")
- [English Wikibooks](https://en.wikibooks.org/wiki/User:Gwern)
- [Haskell wiki](https://wiki.haskell.org/User:Gwern)

[^sock]: That is, summing up the (surviving) edits of my various accounts over the years: [User:Gwern](!W), [User:Marudubshinki](!W), & User:Rhwawn

I also ran a [custom Google search tool](!W "Google Co-op") at ["Wikipedia Reliable Sources for anime & manga"](https://cse.google.com/cse?cx=009114923999563836576:1eorkzz2gp4); this is a custom Google search with >4542 websites on its [black](!W "Blacklist (computing)") and [whitelists](!W).
(The source/lists are [publicly available](/doc/personal/google-cse.xml).)
It returns much more useful^[Compare the [CSE results](https://cse.google.com/cse?cx=009114923999563836576%3A1eorkzz2gp4&q=Wings+of+Honneamise) with the [Google Results](https://www.google.com/search?q=Wings+of+Honneamise) for the anime _[Wings of Honnêamise](!W)_. Which is more useful for an editor?
For more details, see my [release announcement](https://www.mail-archive.com/wikien-l@lists.wikimedia.org/msg09145.html).] results for topics in popular culture, and as the name suggests, anime & manga in particular.

## Uses This {.collapse}

<div class="abstract">
> I'm sometimes asked about my tech "stack", in the vein of ["Uses This"](https://usesthis.com/ "A collection of nerdy interviews asking people from all walks of life what they use to get the job done.") or The Paris Review's _Writer At Work_.
> I use FLOSS software with a text/CLI emphasis on a custom workstation designed for deep learning & reinforcement learning work, and an ergonomic home office with portrait-orientation monitor, Aeron chair, & trackball.
</div>

### Software

<div class="dropcap-dropcat">
I run Ubuntu Linux with a tiling window manager & CLI-centric habits.
(I prefer Debian but the support of NVIDIA drivers has been better with Ubuntu, so as long as I need GPU acceleration, I will be using Ubuntu).
I began using tiling window managers with [ratpoison](!W) and helped drive the initial development of [StumpWM](!W) and then [xmonad](!W) ([my config](https://wiki.haskell.org/Xmonad/Config_archive/Gwern's_xmonad.hs)), which I still use in conjunction with [MATE](!W "MATE (software)"), a fork of the last good GNOME desktop environment version before the crazy GNOME 3 ruined everything.
</div>

I spend most of my time in [Emacs](!W) editing [Markdown](https://jblevins.org/projects/markdown-mode/) ([my config](!W "User:Gwern/.emacs")), Firefox (extensions: [Evernote](!W) [plugin](https://addons.mozilla.org/en-US/firefox/addon/evernote-web-clipper/), [HTTPS Everywhere](https://www.eff.org/https-everywhere), [NoScript](https://noscript.net/), [uBlock origin](https://github.com/gorhill/uBlock), [LastPass](https://lastpass.com/lastpassffx/), [RECAP](https://free.law/recap)), or [urxvt](http://software.schmorp.de/pkg/rxvt-unicode.html)/[Bash](!W "Bash (Unix shell)")/[screen](!W "GNU Screen").
Most of my programming of R/Haskell/Python is done in a REPL+Emacs.
(Friends don't let friends use heroin or org-mode---are you ever *really* going to [make back the time](https://xkcd.com/1205/ "Is It Worth The Time?") it takes to learn & customize org-mode?)

Miscellaneously: I use [Mnemosyne](!W "Mnemosyne (software)") for [spaced repetition](/spaced-repetition "'Spaced Repetition for Efficient Learning', Gwern 2009"), [Liferea](!W) for RSS, Evernote/[Nixnote](https://github.com/robert7/nixnote2) for clippings/notes, [rTorrent](!W) for downloads, [mpv](!W "mpv (media player)")/[Clementine](!W "Clementine (software)") for media playing, [irssi](!W) for IRC, [arbtt](https://arbtt.nomeata.de/) for time-tracking, [ledger](https://ledger-cli.org/) for finances & [Google Calendar](!W) for scheduling/reminders, [Redshift](!W "Redshift (software)") for screen tinting at night [to help bedtimes](/zeo/redshift "'Redshift sleep experiment', Gwern 2012"), and [duplicity](!W "Duplicity (software)") for backups.

### Hardware

#### Computer

As of June 2020, I use a workstation PC (which I built myself), a large [Dell monitor](https://www.amazon.com/dp/B00PC9HFO8/ "Dell P2715Q 27.0-inch 60Hz Monitor, $438") [mounted](https://www.amazon.com/WALI-Adjustable-Capacity-Optional-WL-M001/dp/B018MT6ZEK/ "WALI Single LCD Monitor Desk Mount Stand Fully Adjustable, $25") in portrait mode for reading^[A trick I discovered when visiting FHI in 2015---I had used widescreen laptops for so long I had forgotten how nice portrait-orientation was for reading.], a [200-foot Ethernet cable](https://www.amazon.com/Ultra-Spec-Cables-Connectors-Installed/dp/B00ONA7UMY "200 foot Cat6 Outdoor Dry Gel Filled Direct Burial Ethernet (Self Healing) (Connectors Installed), $90") (which required I [dig a trench to the next house](/wifi "'Internet WiFi improvement', Gwern 2016")), a Logitech thumb [trackball](https://www.amazon.com/gp/product/B0043T7FXE/ "Logitech 910-001799 Wireless Trackball M570, $25"), a [G.SKILL KM360](https://www.amazon.com/gp/product/B07X4Y5RDC/ "G.SKILL USB KM360 Professional Tenkey-less Mechanical Keyboard, Cherry MX Red, ABS Dual Injection Keycap (Black)") mechanical keyboard[^keyboards], and [Bose noise-canceling earphones](https://www.amazon.com/Bose-QuietComfort-Acoustic-Cancelling-Headphones/dp/B00X9KV0HU "Bose QuietComfort 20 Acoustic Noise Cancelling Headphones, $249").

[^keyboards]: I had a [Kinesis Advantage keyboard](https://www.amazon.com/KINESIS-FBA_KB500USB-BLK-Advantage-Keyboard-KB500USB-BLK/dp/B000LVJ9W8), but struggled with the keymapping & large physical size making it difficult to find a comfortable desk & chair height which left my arms high enough to use the thick Kinesis. In July 2020, I switched to the split [ergonomic](!W "Ergonomic keyboard") [mechanical keyboard](!W) [Ergodox EZ](https://ergodox-ez.com/) ([$325]($2020)), but that wound up having similar issues.

    At this point, I began getting frustrated with the time & money I was spending dabbling in exotic keyboards---the biggest problem with the generic keyboard was the switches, and that the ten-key island took up a lot of space & made it hard to reach for the trackball. So in September 2022, I looked through a keyboard search site until I found a cheap [$50]($2022) thin ten-key-less keyboard with good low-travel mechanical switches (to help forestall RSI from heavy keypresses) from [G.Skill](!W), and called it a day. It is thin enough to fit my posture, didn't require painful relearning of decades of muscle memory, and has been satisfactory.

The workstation is plugged into a [900W UPS](https://www.amazon.com/CyberPower-CP1500AVRLCD-Intelligent-1500VA-Mini-Tower/dp/B000FBK3QK/ "CyberPower CP1500AVRLCD Intelligent LCD UPS 1500VA 900W AVR Mini-Tower") for protection against the not-infrequent lightning storms here, and a [6TB external drive](https://www.amazon.com/Book-Desktop-External-Drive-WDBFJK0060HBK-NESN/dp/B00KU686HI "Western Digital My Book 6TB External USB Drive, $206") for daily incremental backups, supplemented by Backblaze B2 (~\$4/month) & miscellaneous external drives.
While traveling, I use my [ThinkPad P70 laptop](https://web.archive.org/web/20220430225206/https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadp/thinkpad-p70/22tp2wpwp70), which replaced an [Acer Aspire V17](https://www.newegg.com/acer-america-aspire-v15-nitro-black-edition-15-6-nvidia-geforce-gtx-960m-intel-core-i7-4720hq-8gb-memory-1tb-hdd/p/N82E16834314849) (which died in [a most unfortunate way](/note/note#november-2016-data-loss-postmortem "'Miscellaneous § November 2016 data loss postmortem', Gwern 2009")), which replaced a Dell Studio 17, which replaced a PC I built ~2008.

I designed the workstation to be useful for deep learning, reinforcement learning, and Bayesian statistics, which made it much more expensive than I would've liked, settling on a [Threadripper](!W)+dual-GPU design (while not forgetting that IO is often a bottleneck), but unfortunately those are fairly contradictory requirements (DRL wants RAM+CPU while DL wants just GPU), and the result wound up being expensive.
(I went overboard on RAM in part because I was frustrated how I kept hitting RAM limits while testing out various dynamic programming algorithms for the [Kelly coin-flip game](/coin-flip "'The Kelly Coin-Flipping Game: Exact Solutions', Branwen et al 2017"), and because that much RAM means that entire datasets can be cached or worked with in-memory in R/Python, saving the considerable complexity of out-of-core algorithms or optimizations.)

The workstation is a liquid-cooled AMD Threadripper CPU build on a Gigabyte X399 Designare EX motherboard, 2×1080ti NVIDIA GPUs, 110GB RAM (nominally 128GB but final stick is unusable due to apparent BIOS issues), a 1TB [NVMe](!W "NVM Express") drive for OS/home, and an 8TB internal HDD for bulk storage, all in a (unnecessary but too fun to not have) tempered-glass case.
The process of putting it together was difficult---motherboards/CPUs/GPUs have gotten more complex since I last built a PC back in 2008---and the first motherboard stubbornly refused to boot, and after I RMA'd it to Newegg (at a cost of \$36), the second one initially worked but then died overnight.^[My best guess is that my problem initially was that I seriously underestimated how much pressure it takes to insert a Threadripper CPU into its socket---it required a truly terrifying amount of force and I only got it right after triple-checking online tutorials & videos & discussions---and that was why the first motherboard never worked at all, and the second one was killed by static electricity or a short.] After tinkering & procrastinating for months, I gave up on the Asus motherboard, checked what [Puget Systems](!W) was using for their Threadripper builds ([ThinkMate](https://www.thinkmate.com/) was still not offering any), and copied their choice of Gigabyte X399 Designare EX motherboards, reasoning that if they were shipping hundreds of such systems, it must be relatively reliable; that motherboard, plus much more forcefully inserting the Threadripper CPU, finally worked, and I was able to switch everything over in June 2018.
While the final result was as powerful and useful as I hoped (especially for working with [Danbooru2018](/danbooru2021#danbooru2018), where the 16-cores+2-GPUs allows me to create many different specialized datasets & experiment with many different GAN architectures) the experience of *building* it has soured me on building my own PCs in the future: I clearly no longer know enough about PC hardware to do a good job, and the more expensive the components, the less I enjoy the risk or fact of bricking them.
In the future I will probably either rely more on cloud solutions or bite the bullet & buy prebuilt systems.
The workstation parts list ([PCPartPicker.com sketch](https://pcpartpicker.com/list/nwQnZ8)):

- Case: [Phanteks Enthoo Pro M Brushed Black Tempered Glass Window ATX Mid Tower](https://www.amazon.com/Phanteks-Tempered-Glass-Black-PH-ES515PTG_BK/dp/B01LRVHH6K/ "Phanteks Enthoo Pro M Series PH-ES515PTG_BK Brushed Black Tempered Glass Window ATX Mid Tower, $128")

    !["Photo of workstation showing GPUs in the dark."](/doc/personal/2018-06-26-gwern-workstation-gpusatnight.jpg "A 'stylish' June 2018 photograph of my workstation at night with the 2 Nvidia 1080ti GPUs lighting up the transparent-glass computer case and looking 'cool'."){.float-right}
- motherboard: [GIGABYTE X399 Designare EX](https://www.amazon.com/GIGABYTE-X399-Designare-EX-Motherboard/dp/B07662S766/ "$394")
- CPU: [AMD Ryzen Threadripper 1950X 16-Core (3.4 GHz)](https://www.amazon.com/AMD-Threadripper-32-thread-Processor-YD195XA8AEWOF/dp/B074CBH3R4/ "$800") ([thermal paste](https://www.amazon.com/Arctic-Silver-AS5-3-5G-Thermal-Paste/dp/B0087X728K/ "Arctic Silver 5 High-Density Polysynthetic Silver Thermal Compound AS5-3.5G, $6"))

    - liquid cooling: [Corsair Hydro Series H115i Extreme Performance Liquid CPU Cooler, 280mm](https://www.amazon.com/Radiator-Advanced-Lighting-Software-compatible/dp/B077G3C6HH/ "$110")
- GPU: 2× [Asus ROG GeForce GTX 1080ti GPU](https://www.amazon.com/STRIX-GeForce-Gaming-Graphics-ROG-STRIX-GTX1080TI-11G-GAMING/dp/B06XY25VTC/ "$800")
- RAM: 4×: [G.SKILL Ripjaws V Series 32GB (2 × 16GB) 288-Pin DDR4](https://www.amazon.com/G-SKILL-Ripjaws-PC4-25600-Platform-F4-3200C16D-32GVK/dp/B0171GQR0C/ "$300")
- SSD: [Samsung 960 EVO M.2 1TB NVMe](https://www.amazon.com/Samsung-960-EVO-Internal-MZ-V6E1T0BW/dp/B01LXS4TY6/ "$470")
- HDD: [Toshiba X300 8TB 7.2k RPM 128MB HDD](https://www.amazon.com/Toshiba-Performance-Desktop-Internal-HDWF180XZSTA/dp/B074BTZ2YJ/ "$255")
- PSU: [Corsair HXi Series 1200W Fully Modular ATX Power Supply](https://www.amazon.com/CORSAIR-HX1200i-Platinum-Certified-Modular/dp/B00U6GTONM/ "$265")
- Total (December 2017): ~[$3,800]($2017). (I ordered most of the parts in December 2017, which turned out to be a high water mark for both GPUs and RAM, due to the cryptocurrency bubble, unreleased next generation of GPUs, and the RAM price-fixing cartel; between that and the usual price decreases, an equivalent system would've cost at least 15% less by November 2018.)

#### Other

For scanning books, I use a [12-inch guillotine paper cutter](https://www.amazon.com/gp/product/B00NO7PYYI/ "HFS (R) New Heavy Duty Guillotine Paper Cutter - 12-inch Commercial Metal Base A3/A4 Trimmer, $107") to debind books evenly (a big upgrade from using X-Acto knives with Fiskars curved blades), an [Epson sheet-fed scanner](https://www.amazon.com/Epson-WorkForce-ES-200-Portable-Sheet-fed/dp/B01MQ4H35N/ "Epson ES-200 duplex ADF sheet-fed document scanner, $265") with `imagescan` for scanning & [`gscan2pdf`](https://gscan2pdf.sourceforge.net/ "'gscan2pdf: A GUI to produce PDFs or DjVus from scanned documents', Ratcliffe 2019") for post-processing.

My desk is an old desk made out of plywood & plumbing hardware by my great-grandfather for my aunt; I repurposed it when I realized it was the perfect size and height.
In July 2020, because I failed to find any good standing desks I could buy used locally to test it out, I gave up and bought a [48x30 curved bamboo Jarvis standing desk](https://store.hermanmiller.com/brands-fully) ([$609]($2020)).
I experimented with a [treadmill desk](/treadmill "'Treadmill desk observations', Gwern 2012") but found it distracting, chronically unpleasant, and distressing to my cat.
I put the desk in front of my bay window so I could enjoy the view and rest my eyes, while watching what happens on the river.
The bay window unfortunately often has direct sunlight through it, so I added [reflective sheeting](https://www.amazon.com/gp/product/B00CWGIHBE/ "BDF S05 Window Film: One Way Mirror Window Film Silver-Silver 5 (36in X 12ft), $25"), which greatly reduces the heat during the summer (at the cost of making it gloomier in winter, of course, but that is why I have bright LED bulbs).
The chair is a used Aeron chair I bought off Craigslist for [$225]($2016) in November 2016 (a bargain, although I doubt I would pay the list price); I replaced the mesh when it tore through in April 2021 for [$60]($2021), which is much cheaper than the usual recommendation of replacing the entire seat-pan ([$200]($2021)).
The sisal cat tree (Petco) provides an excellent perch for my cat, and I have added a [pet flap](https://www.amazon.com/gp/product/B005PP4EVG/ "Two-way Screen Door Pet Access Snap Flap by Discount Ramps, $14.78") with a [cat window sill](https://www.amazon.com/Thermo-Kitty-Sill-Window-seat/dp/B00061RHO0/ "K&H Thermo Heated Kitty Sill, $20") so he can more easily come & go, with acrylic sheeting to reduce air flow.
(He turns out to greatly dislike soft surfaces, so half of the cat window sill was useless! I had to replace the foam padding & cover with a sheet of plywood I cut to fit.)
The box fan by my feet (Walmart, [$19]($2017)) & the workstation both rest on [rubber-cork anti-vibration pads](https://www.amazon.com/gp/product/B01IU6WT5O/ "Pack of Anti Vibration Pads 4-inch x 4-inch x 7/8-inch Rubber/Cork Vibration isolation pads, $8.49").
To reduce RSI, I keep a [grip exerciser](https://www.amazon.com/Hand-Finger-Exerciser-Heavy-Tension/dp/B000UMHURY/ "Gripmaster Pro Hand Strengthening System") around to use during idle moments like watching videos.
For making [tea](/review/tea "'Tea Reviews', Gwern 2011"), I boil water in a simple adjustable [electric tea kettle](https://www.amazon.com/T-fal-Balanced-1750-Watt-Electric-Temperature/dp/B0086UJQN8 "T-fal BF6138US Balanced Living 1-Liter 1750-Watt Electric, $24") which I've made 'programmable' by drilling a hole into the clear plastic & inserting a [meat thermometer](https://www.amazon.com/Taylor-Precision-Products-Classic-Thermometer/dp/B00004XSC4/ "Taylor Classic Instant Read Pocket Thermometer, $5.14") (which combination is far cheaper than electronic kettles and more trustworthy); I then steep the tea in a [Finum filter](https://www.amazon.com/gp/product/B000I68NCS/ "Finum Brewing Basket, medium, black, $9") inside a big Colonial Williamsburg ceramic fox mug.

![My cat would like to remind you to take a typing & computer break every hour.](/doc/personal/2018-10-08-gwern-cat-keyboardbreak.jpg)

### Mailing lists

- [Dual _n_-Back, Brain Training & Intelligence](https://groups.google.com/g/brain-training) (see [DNB FAQ](/dnb-faq "'Dual n-Back FAQ', Gwern 2009"))
- Haskell:

    - Darcs: [users](https://www.google.com/search?q=site:lists.osuosl.org/pipermail/darcs-users/+gwern)/[devel](https://www.google.com/search?q=site:lists.osuosl.org/pipermail/darcs-devel/+gwern)
    - [Haskell libraries](https://www.google.com/search?q=gwern+site%3Ahttp%3A%2F%2Fwww.haskell.org%2Fpipermail%2Flibraries%2F)
    - [Haskell-cafe](https://www.google.com/search?q=gwern+site%3Ahttp%3A%2F%2Fwww.haskell.org%2Fpipermail%2Fhaskell-cafe%2F)
    - [XMonad](https://www.google.com/search?q=gwern+site%3Ahttp%3A%2F%2Fwww.haskell.org%2Fpipermail%2Fxmonad%2F)
    - [Yi](https://groups.google.com/forum/#!searchin/yi-devel/gwern)
- [mnemosyne-proj-users](https://groups.google.com/g/mnemosyne-proj-users) (see [Spaced repetition](#gwern-spaced-repetition))
- [SL4](https://www.google.com/search?q=gwern+site%3Ahttp%3A%2F%2Fwww.sl4.org%2Farchive%2F)
- [Urth](https://www.google.com/search?q=gwern+site%3Aurth.net)

### MOOCs

Finished:

- [Google "Power Searching"](https://www.codespaces.com/power-searching-with-google.html) (2012); review: [negative](https://www.lesswrong.com/posts/Bsa325tntncXWX4uJ/learn-power-searching-with-google#ZqY64PqXZGFL4fkps) (I am probably [too good](https://www.lesswrong.com/posts/RspqaNmJKKBnXTqwk/open-thread-april-1-15-2013#sWpsaRHPG4rtc8mxt) at searching to benefit much from it; I have written [a tutorial on more advanced Internet search skills](/search "'Internet Search Tips', Gwern 2018") which goes beyond "Power Searching"'s basics.)
- [CMU "Probability & Statistics"](https://oli.cmu.edu/courses/probability-statistics-open-free/) (2012); review: [positive](https://www.lesswrong.com/posts/jG74S37Y6x8odJ3BF/open-thread-october-16-31-2012#mK8nwXXzmohWKcWZb)
- [Code School "Try R"](https://www.pluralsight.com/search?q=R) (2012); review: mixed (short, basic introduction; cool interface, but my R knowledge was already past it)
- [MRU Development Economics](https://mru.org/development-economics) (2012--2013); review: [mixed](https://www.lesswrong.com/posts/RWMRDE9aRWoSRiYx6/open-thread-january-16-31-2013#XksWmWEBbbHe4wsx2)
- Coursera "Data Analysis" (2013); review: [positive](https://www.lesswrong.com/posts/u7sKRzQ5jC7KXPPsh/open-thread-march-1-15-2013#LQNCNBob6eETitj9a)

Incomplete:

- [_SICP_](/sicp/introduction "'SICP Introduction', Gwern 2009") (2009--)

Abandoned:

- [Coursera "Drugs and the Brain"](https://web.archive.org/web/20161022044905/https://www.coursera.org/learn/drugs-and-brain) (2012); review: [negative](https://www.lesswrong.com/posts/AaCjoWaHQzCJKheFi/open-thread-february-1-14-2013#XtCGvcrsddeSWBNjd)
- [Coursera "Probabilistic Graphical Models"](https://www.coursera.org/learn/probabilistic-graphical-models) (2013); as hard as its reputation (I couldn't handle the material *and* learning [Octave](!W "GNU Octave")), and now probably a bad use of time compared to DL

## Profile

This section covers some of the most important things possible to know about me: my personality and mental description. No doubt some readers expected a carefully airbrushed & potted biography describing where & when I was raised, what my familial & tribal affiliations are, or what famous institutions I am affiliated with; even though this information is almost entirely useless---what can one predict about me if one knows that I was born in Illinois and raised on Long Island, but (*maybe*) my accent and a general liberalism? The irony---that people want most the information they will learn from least---will not be lost on those familiar with [signaling](!W "Signalling (economics)"). In contrast, standardized & validated psychometric instruments like the [NEO-PI-R](!W) or [RAPM](!W "Raven’s Progressive Matrices") really do have predictive validity for many life outcomes.

(Much of this data comes from [YourMorals.org](https://yourmorals.org/). I plan to retake the surveys, if possible, every decade; it will be interesting to see what changes.)

### Personality

<span id="iq"></span>

To describe my personality briefly: I am introverted, calm, neither particularly industrious nor lazy, contrary, and pathologically curious.
I have made a copy of [my 2011--2014 responses to the YourMorals.org corpus](/doc/personal/2011-2014-yourmorals.maff); discussed in more detail below.
My scores on the "Big 5 Personality Inventory" ([1](/doc/personal/2012-gwern-personalityproject.html "Personality-project long Big Five report; early 2012")/[2](/doc/personal/2012-gwern-personalityproject-2.html "Personality-project long Big Five report; late 2012")/[3](/doc/personal/2013-gwern-personalityproject.html "Personality-project long Big Five report: early 2013")):

#. [Openness to Experience](!W)^[See also "Actively Open-Minded Thinking Scale", "Clarity Scale", "Engagement with Beauty", & "a measure of what types of stories you enjoy".]: high (short) or 87/87^th^ [percentile](!W) (long)
#. [Conscientiousness](!W "Conscientiousness#Personality models")^[See also "Zimbardo Time Perspective Inventory". Brent W. Roberts criticizes these two inventories when used to measure Conscientiousness.]: medium or 64/69^th^
#. [Extraversion](!W)^[See also "Relational Mobility scale", "Empathizing and Systemizing scales" & "Rational vs Experiential Inventory".]: low or 6/7^th^ percentile
#. [Agreeableness](!W)^[See also "Self-Report Psychopathy Scale".]: medium-low or 3/3^rd^ percentile
#. [Neuroticism](!W)^[See also "Experience in Purchasing Behavior Scale" & "Kentucky Inventory of Mindfulness Skills".]: medium-low or 16/13^th^ percentile

For those who enjoy playing the game of 'ad hominem via lay psychiatric diagnosis', may I suggest not accusing me of [Asperger syndrome](!W)---which is *so* overdone---but something more novel & scary-sounding like [schizoid personality disorder](!W)?

### Philosophy/morals

The relevant results

<div class="columns">
- ["Moral Foundations Questionnaire"](/doc/personal/2011-gwern-yourmorals.org/5f_new2_process.html)
- ["Moral Foundations Sacredness Scale"](/doc/personal/2011-gwern-yourmorals.org/sacredness_cartoon_process.html)
- ["Ethics Positions Questionnaire"](/doc/personal/2011-gwern-yourmorals.org/epq_process.html)
- ["Moral Identity Scale"](/doc/personal/2011-gwern-yourmorals.org/mis_process.html)
- ["Schwartz Value Survey"](/doc/personal/2011-gwern-yourmorals.org/schwartz_process.html)
- ["The Disgust Scale"](/doc/personal/2011-gwern-yourmorals.org/disgust_process.html)
- ["Morality and Relationships Questionnaire"](/doc/personal/2011-gwern-yourmorals.org/rel_norms_process.html)
- [Business ethics](/doc/personal/2011-gwern-yourmorals.org/busethics_process.html)
</div>

#### Politics

- [questions from Polling Report](/doc/personal/2011-gwern-yourmorals.org/current_events_process.html)
- ["a General Political Knowledge scale for American politics"](/doc/personal/2011-gwern-yourmorals.org/general_political_knowledge_process.html)
- ["a measure of attitudes about whether government should manage its budget based on macroeconomic or basic budget principles"](/doc/personal/2011-gwern-yourmorals.org/gov_econ_process.html)
- ["Comprehensive Justice Scale"](/doc/personal/2011-gwern-yourmorals.org/justice_process.html)
- ["Activism Orientation Scale"](/doc/personal/2011-gwern-yourmorals.org/aos_process.html)

# Contact

- Email: [gwern@gwern.net](mailto:gwern@gwern.net); I do not use Skype or Zoom.
<!-- - Bitcoin: `1Gb89tyJq3P5K5M3GcpFvPrMsw33cik9wX` (canonical address; used for [`#bitcoin-otc`](https://bitcoin-otc.com/viewgpg.php?nick=gwern) trading) -->
- PGP key ([mirror](!W "User:Gwern/Key"); fingerprint: `0329E13129E08F19EDBA7250678AC516DD6A88CF`)

~~~
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGNBGEs5RgBDADVRdbC0D0LfQwpQFvTNJLZX6s3Ew/Tk5LW8VgK32Z1zhQr6YdB
nm0/U/mlm32SsoqEY+u5O/zvfF9GNA7sbatZwTPFlO5+Inq/FNqMq+dht52TSqiz
I6Oya1ryuI7142nga90nQhXlHLkwkIZODdb6QYIcgIOrc0yI3bEDmFw5bVHXAMH5
J6rjADi27ZALZxLoU4L+u4vgtHOVBOWsuTOaXR4z0zTJ/Wi3Emi1EqZXu8Z4dTfq
YbVLqpL//z3B8ZZLc+1dY8lzacPXWulFhGN9yHeMz/vXgXdOSZfHMQYytqTL3Z3k
prv11QLSF3UaE4Fncm7FZkX2YjVP3vGghinZ3Uvv71bJdU3FbwM7KK6wbby2cBo0
9xaZlyYrv8e8MxqTa5LYJw+j84DOE6bQq2KyyJewjc0Q0vz+t43rNr5uwxD1DJuZ
90jb3ylvDPu6qMX/AVlgODXTmV+8GIKiJP0UytpDi549ZatjTJLTMHHySxytFONZ
jlcu0+88MBpMcSEAEQEAAbQfR3dlcm4gQnJhbndlbiA8Z3dlcm5AZ3dlcm4ubmV0
PokB1AQTAQoAPhYhBAMp4TEp4I8Z7bpyUGeKxRbdaojPBQJhLOUYAhsDBQkDwmcA
BQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEGeKxRbdaojP4tIMAIMkP60FS3Nm
HZbwk0t48zJDGLzpqK0UWnz+BxLRxJPOgZY7+0P53nfcpSFiwiG+cFB+06eaK5Hg
ttcGJd6NcLnAyHdHDqUOSF3Yf/8vIXIzggC9jt+mc2ug27GGHAT5asY4CNX8N5Ho
VH1cnCvrTMDINRrir8BX1puPnsfRIshG8cVaKW/hXpDHRvpq3v2UbMULHUBTLPBE
PDDH/O2VUG2hj267TIcM/dvaBwfC74R47Phkiis+nwcFr7OsYs3mIkCsZ4RNxYns
xuNkv1aNSFI6agmvBSfsoLg9Ch2Viw6CEfLpeAwzFH/DIljzHWJJ3JqCYYEEEGkI
eb7cAzfdCoR2iISSGR4GH1XNujaFSTXnuvX/vUsxdvmaxnwm2VkbNDLEwCAv8gxA
O/eA6JJGZl1jbQq/oUouYWqGmLjMBVVjR2r3Y9KNJMsLOT6xOXKwDWAsdNS6N1uv
d4B7ZyE16mPfpH0SB8uNpT155FSlvRGo9rWvAWIPZh3X9Ko3/aX8u7kBjQRhLOUY
AQwAycf9rk7GFRm7d7EE38GnUzwrkEWug4uczdRhknXN5rP4/a2aBOaUEX8WE7Lu
vyyiCWyI2qca3koVCzOt8DR3zUGhAAIZruHJmC8zWMSM9Bu4oLxmK1EvZ8zKpWKT
1vsfIwKd3NsjEFTWvC19BI1S5NRWRiK97Kx6IPGcchSRk8SV1dbLpMNFM/u1oUuZ
lS0DGydjvl+mcDHRL4Zk2Xkj3XcmJ8kQIAT0814UtuOSHvbcEkVU7fDs64MgE6Z1
6J9nUZYv6nN870N7QHBWmoKhipGEeNNimHZ4OdZuJdsSS19iHKYu9LVM68YMtBC2
FypgLs7BOmaiqtfE/NpIOeJGkxW8S7UQtzsZwzfLzD81k0fXZectsMhS1Cf4aLMR
vcWkucLHGW4QcvuUDOHCjtNPSX5MTHngI6qZOHQfVDV2bsc4Gge7TRtj8ghkhkDh
g3ElnFExJQkzwQcd2lTy3vXx4Ne1bxtcqNJIYiGZ+HCYaBvD3y2QgtckfxxBt1D5
MRu/ABEBAAGJAbwEGAEKACYWIQQDKeExKeCPGe26clBnisUW3WqIzwUCYSzlGAIb
DAUJA8JnAAAKCRBnisUW3WqIz7axC/9SDOtdsW/H2PezxDAEHasQvMJsS6/CxPL+
MvEEMx7GTQBUk2Ktz538lJhxUirw9UfixcxuIuaBwta/pDbeqqpHFg7gJbU+pvDQ
ROqgv84gsvUcAYfOIFFKfKmyE1NO+dSGmyDvCaUr8Z5xKWWwAg5MEHNDi0zJWV/F
lCRCb4Q6o7lkzHWljzzAAN+UHs2lq0089WMor/D7CXD5yQGUjcXGbLvoxJl5mDtQ
0TwRdGlF7RQDOSEvNro0eooed80im4bXW+ahhuZsylocVPIlgRoOjCkSNKQTnbd/
ysTzPhCdi59UYIvOuogRxGGBr/uDBcq53amZeVIsxHyT6v3njw0oGC8+2F1fPuSp
5A234E2+lNBmO1TZaM9SH5G0V0mDaV+35JS+gVWQ0R7qRix33+yXHcSCdpoIQTRj
wnuJtQ6JQ4ToVdZsGyfnn6N6fkTvYFx3bYl2EV5d30cb5oQpcd4QiFDXzZg2yjCE
p5IV9yhbHXXHKYyLpLwJN8KpBO4oM0s=
=1NJ8
-----END PGP PUBLIC KEY BLOCK-----
~~~

# Collaboration style

Once on `#haskell`, I was asked why I have no large programs to my credit; I replied, "My problem is that most programs I use already exist."

I am not a bad Haskell programmer (although I am no guru like Simon Peyton-Jones, Apfelmus, or Don Stewart), but given how long I've been using Haskell, my contributions probably look pretty slim. This isn't because I don't like Haskell---I do,  I find functional programming natural: defining transformation after transformation until the result is what I need. And of the functional languages, Haskell seems the best combination of power beyond basic arithmetic or list processing, one of the best ecosystems, and good basic language. (Which is not to say it's perfect: there are some sharp edges in the basic math which irritate me when I'm messing around in the REPL.)

This is partly because of my style of contribution. I've always preferred to work on existing applications and libraries than to go write my own. I've always preferred to take someone else's work and bring it up to snuff than write a clean implementation of my own. I've always preferred prodding the author or maintainer to do the right thing than to drop a large batch of patches onto them. Likewise, I view it as better to use Haskell standards like Cabal or Darcs than to use something like Autotools even if the latter lets us manage just a little more automation. I view it as better to upload to [Hackage](https://hackage.haskell.org/) than to use any fancy site like [Github](!W) or [Sourceforge](!W).

It's better to do yeoman's work taking two similar modules in two applications and split them out to a library than to write even the fanciest [purely functional](!W "Purely functional data structure") [finger tree](!W) using [monoids](!W). Better to commit changes that reduce user configs by a line than to demonstrate once again the elegance of monads. Better by far to file a bug than wank around in `#haskell` [golfing](!W "code golf") expressions.

It is much better to find some people who have tried in the past to solve a problem and bring them together to solve it, than to solve it yourself---even if it means being a footnote (or less) in the announcement. What's important is that it got done, and people will be using it. Not the credit. It is a high accomplishment indeed to factor out a bit of functionality into a library and make every possible user actually use it. Would that more Haskellers had this mindset! Indeed, would that more people in general had this mindset; as it is, people have bad habits of [repeatedly failing](https://www.overcomingbias.com/p/the-wisdom-of-othershtml) when they think they have special information, are highly [overconfident](!W "Overconfidence effect") even in [objective areas with quick feedback](https://www.nber.org/papers/w13711), and badly overestimate how many good ideas they can come up with[^fire]---indeed, most good ideas are [Not Invented Here](!W). One should be able to draw upon [the wisdom of others](https://www.overcomingbias.com/p/the-wisdom-of-othershtml).

This is an ethos I learned working with the [inclusionists](https://meta.wikimedia.org/wiki/Inclusionism) of Wikipedia. No code is so bad that it contains no good; the most valuable code is that used by other code; credit is less important than work; a steady stream of small trivial improvements is better than occasional massive edits.

> A leader is best when people barely know that he exists, not so good when people obey and acclaim him, worst when they despise him. Fail to honor people, They fail to honor you. But of a good leader, who talks little, when his work is done, his aims fulfilled, they will all say, 'We did this ourselves.'[^tao]

This is not an ethos calculated to impress. Filing bug reports, helping newbies, commenting on articles and code, cabalizing & uploading code---these are things hard to evaluate or take credit for. They are useful, useful indeed (shepheb or, eg. myself, never boast in `#xmonad` of having helped 5 newbies today, but over the months and years, this friendliness and ready aid is of greater value than any module in all of XMonadContrib.) but they will never impress an interviewer or earn a fellowship. Is that too bad? Did I waste all my time?

I don't think so. I value my contributions, and the Haskell community is better for it. It may have made my life a little more difficult---all that time spent on Haskell matters is time I did not devote to classes or jobs or what-have-you---but ultimately they did help somebody. One could do worse things with one's time than that.

# Coding Contributions {.collapse}

<div class="abstract-collapse">
I mostly contribute to projects in Haskell, my favorite language; I have contributed to non-Haskell projects such as [StumpWM](!W), [Mnemosyne](!W "Mnemosyne (software)"), [GNU Emacs](!W)[^emacs] etc. but not in major ways, so I do not list them here.
After starting this website, I wound down my regular coding activities in favor of my writings; when I code, now it tends to be tools documented or hosted on this website (eg. [Archiving URLs](/archiving "'Archiving URLs', Gwern 2011"), [Resorter](/resorter "'Resorting Media Ratings', Gwern 2015")) or integrated into writeups (eg. [Generating Anime Faces with StyleGAN](/face "'Making Anime Faces With StyleGAN', Gwern 2019")).
For that code, you can browse by language tag: [C](/doc/cs/c/index)/[CSS](/doc/cs/css/index)/[Haskell](/doc/cs/haskell/index)/[JS](/doc/cs/js/index)/[Python](/doc/cs/python/index)/[R](/doc/cs/r/index)/[Scheme](/doc/cs/lisp/scheme/index)/[shell](/doc/cs/shell/index).

Below is a more detailed list of my old Haskell contributions, most of which is now of only historical interest.
</div>

## Haskell

<div class="columns">
- **arbtt**

    - wrote tutorial on configuring the time-tracker & defining rules: ["Effective Use of arbtt"](https://arbtt.nomeata.de/doc/users_guide/effective-use.html)
    - documented dependencies, similar software, configuration syntax mode, CLI flag corrections
- **Darcs**

    #. Switched from FastPackedStrings to ByteStrings
    #. Low-level C optimization
    #. Initiated Cabalization (my work initially appeared as [darcs-cabalized](!Hackage) and then was merged into HEAD and `darcs-cabalized` deprecated)
    #. Refactoring of shell tests
    #. Initiated switch from [MoinMoin](!W) wiki to Gitit
    #. Identified performance issue & instigated addition of `--max-count` option for Filestore
- **XMonad**

    #. regular XMonadContrib patch reviews
    #. [Config archive downloader](https://wiki.haskell.org/Xmonad/Config_archive#Downloading_all_configs)
    #. Contributed modules:

        i. `XMonad.Util.Paste`
        ii. `XMonad.Actions.Search`
        iii. `XMonad.Actions.WindowGo`
        iv. `XMonad.Util.XSelection`
    #. Maintained previous[^commit]
- **Yi**

    #. Contributed modules:

        i. Yi.IReader
        ii. Yi.Mode.IReader
        iii. Yi.Hoogle
    #. Improved Emacs keybindings
    #. Initiated 'Unicodify' or 'Pretty Lambdas' feature for Haskell syntax highlighting
    #. Added movement-related functions for improved incremental search
    #. Cleanup[^clean]
    #. Comment support to cabal-mode
- **Lambdabot**

    #. (Re)Cabalized[^cabalized]
    #. Adapted to use Mueval
    #. Refactored out code in multiple packages:

        i. [show](!Hackage)
        ii. [lambdabot-utils](!Hackage)
        iii. [brainfuck](!Hackage)
        iv. [unlambda](!Hackage)
    #. Implemented run-in-any-directory functionality (previously Lambdabot could only run in the repository directory)
    #. Cleanup
    #. Maintained it (with Cale Gibbard)
- **Gitit**

    - Wrote Darcs backend (which was moved to the filestore package and became Data.FileStore.Darcs)
    - Did some optimization work (images, JavaScript & CSS minification, wrote gzip encoding & initiated expire headers, JS relocation, fewer calls to expensive filestore functions)
    - Wrote RSS support
    - Wrote Interwiki plugin
    - Wrote Date plugin
    - Wrote WebArchiver & WebArchiverBot plugins (see later [archiver](#gwern-archiving) standalone tool/library)
    - Wrote Unicode plugin
    - Wrote HCAR entry
    - Misc. bug reports & suggestions
    - Added PDF export functionality
    - Integrated JQuery-based [floating footnotes](https://ignorethecode.net/blog/2010/04/20/footnotes/)
- **Filestore**

    - Instigated its development/use in Gitit & [Orchid](https://hackage.haskell.org/package/orchid)
    - Maintained the Darcs backend (debug & optimize)
- **archiver**: Wrote and maintain it (see [release ANN](https://web.archive.org/web/20130128105157/https://www.haskell.org/pipermail/haskell-cafe/2010-December/087158.html))
- **Mueval**: Wrote it
- **wp-archivebot**: Wrote it (see [release ANN](https://web.archive.org/web/20130128105201/https://www.haskell.org/pipermail/haskell/2009-June/021388.html))
- **Change-monger**: Wrote it
- **Base**

    - Added [`Control.Monad.void`](!Hoogle "Control.Monad.void")
    - Helped replace [`Data.List.sort`](!Hoogle "Data.List.sort") with YHC's more efficient implementation (see [Ticket #2143](https://gitlab.haskell.org/ghc/ghc/-/issues/2143 "YHC's sort is faster than GHC's"))
    - Improved [`System.Environment` doc](https://web.archive.org/web/20130128105154/https://www.haskell.org/pipermail/libraries/2012-February/017520.html "Improve System.Environment haddocks")
- **Unix**: fixed a possible runtime crash in `mkstemp`; added `mkstemp` docs
- **Autoproc**

    - Cleanup
    - Improved basic functionality
    - Implemented an XMonad-style reload system to allow actual customization
    - Maintained it
- **Frag**

    - Updated for GHC 6.8 & 6.10[^ghc]
    - Cleanup
    - Replaced the non-Free level data and graphics with Free ones
- **Hint**

    - Improved examples, docs
    - Added UTF8 support
    - Made use ghc-paths library
    - Enabled QuickCheck support
    - Added GHC-options support
- **Hlint**: added GHCi integration
- **Pugs**

    - Cleaned up their third-party modules
    - Fixed up various Cabal issues
    - Helped maintain it
- **QuickCheck**: `Data.Complex` instance
- **Tagsoup**: replaced old custom HTTP download code with standard library functions
- **Hashell**: Updated for 6.8's GHC API; Cleanup; Cabalized
</div>

### Cabalization

As part of my effort to help shift the Haskell community to the use of centralized packaging repositories pioneered by CPAN, which is a fundamental requirement for any modern language, I made a systematic effort to get all extant Haskell code into Cabal format & uploaded to Hackage---whether the original authors wanted it or not.
(For all the ruffled feathers and continued infelicities of Haskell packaging, a decade later, no Haskeller would go back to the pre-Cabal/Hackage Autotools days.)
I cabalized and/or uploaded (according to the 2013-05-10 [Hackage upload log](https://web.archive.org/web/20130510012249/https://hackage.haskell.org/packages/archive/log)):

<div class="columns">
- [Barracuda](!Hackage)
- [DBus](!Hackage)
- [DisTract](!Hackage)
- [DrIFT-cabalized](!Hackage)
- [FermatsLastMargin](!Hackage)
- [Flippi](!Hackage)
- [HFuse](!Hackage)
- [HRay](!Hackage)
- [Hashell](!Hackage)
- [HsJudy](!Hackage)
- [TypeIlluminator](!Hackage)
- [ZMachine](!Hackage)
- [adhoc-network](!Hackage)
- [bio](!Hackage)
- [botpp](!Hackage)
- [clustertools](!Hackage)
- [condorcet](!Hackage)
- [conjure](!Hackage)
- [dephd](!Hackage)
- [estreps](!Hackage)
- [fst](!Hackage)
- [genericserialize](!Hackage)
- [goa](!Hackage)
- [greencard](!Hackage) & [greencard-lib](!Hackage)
- [harp](!Hackage)
- [haskell-src-exts](!Hackage)
- [helisp](!Hackage)
- [hetris](!Hackage)
- [hgeometric](!Hackage)
- [highWaterMark](!Hackage)
- [hinstaller](!Hackage)
- [hjs](!Hackage)
- [hopenssl](!Hackage)
- [hs-fltk](!Hackage)
- [hscurses](!Hackage)
- [hsdip](!Hackage)
- [hsdns](!Hackage)
- [hsdns](!Hackage)
- [hsemail](!Hackage)
- [hsgnutls](!Hackage)
- [hsgnutls](!Hackage)
- [hsntp](!Hackage)
- [hsp](!Hackage)
- [hspr-sh](!Hackage)
- [hybrid](!Hackage)
- [infix](!Hackage)
- [interlude](!Hackage)
- [ivor](!Hackage)
- [lazysmallcheck](!Hackage)
- [linkchk](!Hackage)
- [mohws](!Hackage)
- [mpdmate](!Hackage)
- [nanocurses](!Hackage)
- [nymphaea](!Hackage)
- [pesca](!Hackage)
- [pkcs1](!Hackage)
- [plugins](!Hackage)
- [popenhs](!Hackage)
- [powermate](!Hackage)
- [pugs-HsSyck](!Hackage)
- [pugs-hsregex](!Hackage)
- [rbr](!Hackage)
- [reify](!Hackage)
- [roguestar-engine](!Hackage)
- [roguestar-gl](!Hackage)
- [rsagl](!Hackage)
- [simseq](!Hackage)
- [smallcheck](!Hackage)
- [tetris](!Hackage)
- [thih](!Hackage)
- [trhsx](!Hackage)
- [type-equality-check](!Hackage)
- [vty](!Hackage)
- [xml-parsec](!Hackage)
- [xml2x](!Hackage)
- [xmonad-utils](!Hackage)
- [xsact](!Hackage)
- [yi-gtk](!Hackage)
- [yi-vty](!Hackage)
- `ArrayRef`
- `Baskell`
- `GenI`
- `Greencard`
- `HArchive`
- `HList`
- `HTF`
- `HaLeX`
- `HalFS`
- `Haskell In Space`
- <span id="hssyck">`HsSyck`</span>
- `Mage`
- `PArrows`
- <span id="shu-thing-monadius">`Shu-thing`, `Monadius`</span>
- `Smallcheck`
- `Topkata`
- `Whim`
- `ZFS`
- `blockio`
- `child`
- `flow2dot`
- `hinvaders`
- `monadenv`
</div>

[^emacs]: For example, my clean-up and extension of the [`browse-url`](https://www.emacswiki.org/emacs/BrowseUrl) module was completely rewritten by [RMS](!W "Richard Stallman"); so I can hardly take credit there.
[^clean]: Henceforth, 'cleanup' should be taken as referring to extensive miscellaneous changes which include (in no particular order):

    - fixing GHC's `-Wall` or hlint warnings
    - replacing OPTION pragmas with LANGUAGE pragmas
    - tracking down licensing information
    - switching from Haskell98 imports to the standard hierarchical module imports

        i. eg. `import Char` → `import Data.Char`; nontrivial in some cases where Haskell98 modules were dispersed over multiple base modules
    - reorganizing the file tree
    - improving the Cabalization
    - whitespace formatting, and so on.

[^cabalized]: Henceforth, this typically implies that I uploaded it to Hackage as well
[^ghc]: Henceforth, this implies that I made whatever changes necessary to get it compiling on GHC 6.8.x and 6.10.x
[^commit]: Henceforth, this implies I have a commit-bit (or equivalent) for that project.
[^tao]: [Chapter 17, _Tao Teh Ching_](!Wikiquote "Tao_Te_Ching")
[^fire]: For further reading on overconfidence, see [all LW articles so tagged](https://www.lesswrong.com/tag/overconfidence/). I once read in a book of a study in which subjects were asked to generate ideas for, IIRC, putting out a fire, and to stop only when they were convinced they had thought up all good ones, and usually stopping when they had thought up only a third; but I have been unable to refind it and would appreciate knowing details if this description rings any bells for a reader.
