Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
468 lines (372 sloc) 25.2 KB
description: Who am I online & what have I done? - Contact information; sites I use; things I've worked on
This page is about me; for information about ``, see [About]().
# Personal
> "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."^[Dr. Samuel Johnson; _The Rambler_, No. 14 (5 May 1750). 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](]
I currently work for the [Singularity Institute for Artificial Intelligence](!Wikipedia) think-tank as a research assistant.
- Social news, discussion:
> '"I don't speak", Bijaz said. "I operate a machine called language. It creaks and groans, but is mine own."'^[[Frank Herbert](!Wikipedia), _[Dune Messiah](!Wikipedia)_]
- []( my [submissions]( & [comments]( ([by score](
- [Reddit](!Wikipedia): my [submissions]( & [comments]( ([by score](
- [Google]( [Google+]( ([OPML of RSS feeds](/docs/gwern-google-reader-subscriptions.xml))
- [Hacker News](!Wikipedia): [submissions]( & [comments](
- [PredictionBook](
- [Evernotes]( -(clippings/references/citations)
- [MyAnimeList]( ([anime]([manga]( ratings)
- [LastFM (music)](
- [Dragon Go]( [profile]( ([turn-based Go](; need to be logged in)
- I have a [theme song]( ([MP3](, courtesy of [David Gerard](^[There is a [moderately funny story]( about how Gerard came to write it, based on my musical incompetence.]
(I have nothing to do with the gwern on MySpace or with
## 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](!Wikipedia "Signalling (economics)").
(Much of this data comes from [](, courtesy of the LessWrong post ["LessWrong group on"]( I plan to retake the surveys, if possible, every decade; it will be interesting to see what changes.)
### Personality
My scores on the "Big 5 Personality Inventory", [short](/docs/[long](/docs/2012-gwern-personalityproject.html "Personality-project long Big Five report") (they differ):
1. [Openness to Experience](!Wikipedia)^[See also ["Actively Open-Minded Thinking Scale"](/docs/, ["Clarity Scale"](/docs/, ["Engagement with Beauty"](/docs/, & ["a measure of what types of stories you enjoy"](/docs/]: high (short) / 87th [percentile](!Wikipedia) (long)
2. [Conscientiousness](!Wikipedia "Conscientiousness#Personality models")^[See also ["Zimbardo Time Perspective Inventory"](/docs/]: medium / 64th
3. [Extraversion](!Wikipedia)^[See also ["Relational Mobility scale"](/docs/, ["Empathizing and Systemizing scales"](/docs/ & ["Rational vs Experiential Inventory"](/docs/]: low / 6th
4. [Agreeableness](!Wikipedia)^[See also ["Self-Report Psychopathy Scale"](/docs/]: medium-low / 3rd
5. [Neuroticism](!Wikipedia)^[See also ["Experience in Purchasing Behavior Scale"](/docs/ & ["Kentucky Inventory of Mindfulness Skills "](/docs/]: medium-low /16th
### Philosophy/morals
The relevant results
- ["Moral Foundations Questionnaire"](/docs/
- ["Moral Foundations Sacredness Scale"](/docs/
- ["Ethics Positions Questionnaire"](/docs/
- ["Moral Identity Scale"](/docs/
- ["Schwartz Value Survey"](/docs/
- ["The Disgust Scale"](/docs/
- ["Morality and Relationships Questionnaire"](/docs/
- [Business ethics](/docs/
#### Politics
- [questions from Polling Report](/docs/
- ["a General Political Knowledge scale for American politics"](/docs/
- ["a measure of attitudes about whether government should manage its budget based on macroeconomic or basic budget principles"](/docs/
- ["Comprehensive Justice Scale"](/docs/
- ["Activism Orientation Scale"](/docs/
### IQ
At the risk of alienating readers even further, I will reveal that I have taken IQ tests 3 times that I know of:
1. At some point in 3rd-5th grade, I took the Abbreviated Stanford-Binet and scored ~135. (I came across the report cleaning up a room as a child and could not keep it.)
2. In February 2009, for the purpose of a before-after [dual n-back](DNB FAQ) comparison, I took the Raven's test at <> and scored 115. (Others report they too received low scores.)
3. On 5 August 2011, I signed up for and took the entrance survey to the prediction-contest [Good Judgment Project](Prediction markets#iarpa-the-good-judgment-project); the survey included among other things a short Raven's test. [My survey results](/docs/2011-gwern-gjp-psychsurveys.html) include the raw data but not any norm: of the 12 questions, I got 8, while the mean among participants was 8.81 and the SD 2.39.
Other ways to approximate IQ are standardized tests which are heavily g-loaded; they are broadly consistent with the 130s decile:
1. 2004 SAT: 800V/700M ([conversion](
2. 2004 ACT: 32
3. 2009 GRE: 730V/680M/5.5W ([conversion](
# Contact
- Email: [](
- [PGP key]( ([mirror](!Wikipedia "User:Gwern/Key"); fingerprint: F7E5D682)
Version: GnuPG v2.0.3 (GNU/Linux)
# Wikis
I have been active on 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); during my time as an administrator, I performed thousands of administrative actions; I am an admin on the Haskell wiki, handling routine spam & vandalism:
- [English Wikipedia](!Wikipedia "User:Gwern")
- [English Wikibooks](
- [Haskell wiki](
I also run a [custom Google search tool](!Wikipedia "Google Co-op") at ["Wikipedia Reliable Sources for anime & manga"](; this is a custom Google search with >4542 websites on its [black](!Wikipedia "Blacklist (computing)") and [whitelist](!Wikipedia)s. (The source/lists are [publicly available](/docs/gwern-google-cse.xml) & updated every 3 months.) It returns much more useful^[Compare the [CSE results]( with the [Google Results]( for the anime _[Wings of Honnêamise](!Wikipedia)_. Which is more useful for an editor? For more details, see my [release announcement](] results for topics in popular culture, and as the name suggests, anime & manga in particular.
# Mailing lists
- [Haskell-cafe](
- [XMonad](
- [Yi](
- [Haskell libraries](
- [SL4](
- [Urth](
# Collaboration style
> "My problem is that most programs I use already exist."^[Myself, on `#haskell`, answering the question why I have no large programs to my credit.]
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 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 superior 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 superior to upload to [Hackage]( than to use any fancy site like [Github](!Wikipedia) or [Sourceforge](!Wikipedia).
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](!Wikipedia) [finger tree](!Wikipedia) using [monoids](!Wikipedia). 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](irc:// [golfing](!Wikipedia "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]( when they think they have special information, are highly [overconfident](!Wikipedia "Overconfidence effect") even in [objective areas with quick feedback](, and badly overestimate how many good ideas they can come up with[^fire] - indeed, most good ideas are [Not Invented Here](!Wikipedia). One should be able to draw upon [the wisdom of others](
This is an ethos I learned working with the [inclusionists]( 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 superior to 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](irc:// 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
I mostly contribute to projects in Haskell, my favorite language; I have contributed to non-Haskell projects such as [StumpWM](!Wikipedia), [Mnemosyne](!Wikipedia "Mnemosyne (software)"), [GNU Emacs](!Wikipedia)[^emacs] etc. but not in major ways, so I do not list them here:
## 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](!Wikipedia) wiki to Gitit
#. Identified performance issue & instigated addition of `--max-count` option for Filestore
## XMonad
#. Contributed modules:
i. XMonad.Util.Paste
ii. XMonad.Actions.Search
iii. XMonad.Actions.WindowGo
iv. XMonad.Util.XSelection
#. Maintain 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
#. Maintain 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](#archiver) standalone tool/library)
- Wrote Unicode plugin
- Wrote HCAR entry
- Misc. bug reports & suggestions
- Added PDF export functionality
- Integrated JQuery-based floating footnotes
### Filestore
- Instigated its development/use in Gitit & [Orchid](
- Maintain the Darcs backend (debug & optimize)
## Mueval
- Wrote and maintain it
## wp-archivebot
- Wrote and maintain it (see <>)
## archiver
- Wrote and maintain it (see <>)
## Change-monger
- Wrote and maintain it
## Base libraries
#### 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 <>)
- Improved [`System.Environment` doc](
### 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
- Maintain it
## Frag
- Updated for GHC 6.8 & 6.10[^ghc]
- Cleanup
- Replaced the non-Free level data and graphics with Free ones
## HalFS
- Updated
- Improved cabalization
## Shu-thing, Monadius
- Linux portability fixes
- Cabalized
- Cleanup
## 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
## ZFS
- Cabalized
- Cleanup
## Greencard
- Updated
- Cabalized & did the package split
## ArrayRef
- Cabalized
- Cleanup
- Updated
## Hashell
- Updated for 6.8's GHC API
- Cleanup
- Cabalized
## QuickCheck
- Prototyped the Data.Complex instance
## GenI
- Improved Cabalization
## HArchive
- Cabalized
## HaLeX
- Cabalized
## HTF
- Cabalized
## PArrows
- Cabalized
## Baskell
- Cabalized
## Mage
- Cabalized
- Cleanup
## Haskell In Space
- Cabalized
- Cleanup
- Updated
## Smallcheck
- Cabalized
## Topkata
- Improved Cabalization
## HsSyck
- ByteString updates
- Improved cabalization
## HList
- Updated
- Cabalized
## flow2dot
- Updated
## hinvaders
- Cabalized
- Updated
## Whim
- Cabalized whim
## Tagsoup
- replaced old custom HTTP download code with standard library functions
## The others & the rest
I cabalized and/or uploaded (according to the [Hackage upload log](
- [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)
- `blockio`
- [botpp](!Hackage)
- `child`
- [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)
- `monadenv`
- [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)
[^emacs]: For example, my clean up and extension of the browse-url module was completely rewritten by [RMS](!Wikipedia "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 <tt>-Wall</tt> 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. <tt>import Char</tt> -> <tt>import Data.Char</tt>; nontrivial in some cases where Haskell98 modules were dispersed
- 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.
[^sock]: That is, summing up the (surviving) edits of my various accounts over the years: [User:Gwern](!Wikipedia), [User:Marudubshinki](!Wikipedia), & [User:Rhwawn](!Wikipedia)
[^tao]: [Chapter 17, _Tao Teh Ching_](!Wikiquote "Tao_Te_Ching"); ([alternate translation](!Wikisource "Laozi (Wikisource translation)#Chapter_17"))
[^fire]: For further reading on overconfidence, see [all LW articles so tagged]( 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.