This page is about me; for information about gwern.net , see About This Website.

For those who enjoy playing the game of ‘ad hominem via lay psychiatric diagnosis’, may I suggest not accusing me of Asperger syndrome —which is so overdone—but something more novel & scary-sounding like schizoid personality disorder ?

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 ; discussed in more detail below. My scores on the “Big 5 Personality Inventory”, /long 1 / 2 / 3 :

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

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 . In contrast, standardized & validated psychometric instruments like the NEO-PI-R or RAPM really do have predictive validity for many life outcomes.

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 ($609). I experimented with a treadmill desk 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 , 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 in November 2016 (a bargain, although I doubt I would pay the list price). The sisal cat tree (Petco) provides an excellent perch for my cat, and I have added a pet flap with a cat window sill 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) & the workstation both rest on rubber-cork anti-vibration pads . To reduce RSI, I keep a grip exerciser around to use during idle moments like watching videos. For making tea , I boil water in a simple adjustable electric tea kettle which I’ve made ‘programmable’ by drilling a hole into the clear plastic & inserting a meat thermometer (which combination is far cheaper than electronic kettles and more trustworthy); I then steep the tea in a Finum filter inside a big Colonial Williamsburg ceramic fox mug.

Total (December 2017): ~$3800. (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.)

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 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. After tinkering & procrastinating for months, I gave up on the Asus motherboard, checked what Puget Systems was using for their Threadripper builds ( ThinkMate 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 , 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 ):

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 +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 , 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.)

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 and helped drive the initial development of StumpWM and then xmonad ( my config ), which I still use in conjunction with MATE , a fork of the last good GNOME desktop environment version before the crazy GNOME 3 ruined everything.

I’m sometimes asked about my tech “stack”, in the vein of “Uses This” 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.

I have been active on the English Wikipedia and related projects since January 2004. Cumulatively , I have over 90,000 edits and have written or worked on hundreds of articles ; during my time as an English administrator, I performed thousands of administrative actions ; I am an admin on the Haskell wiki, handling routine spam & vandalism :

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

I am a freelance American writer & researcher. (To make ends meet, I have a Patreon , 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 (2012–2013), CFAR (2012), GiveWell (2017), the FBI (2016), Cool Tools (2013), Quantimodo (2013), New World Encyclopedia (2006), Bitcoin Weekly (2011), Mobify (2013–2014), Bellroy (2013–2014), Dominic Frisby (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.

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

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 than to use any fancy site like Github or Sourceforge.

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 finger tree using monoids. 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 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 even in objective areas with quick feedback, and badly overestimate how many good ideas they can come up with —indeed, most good ideas are Not Invented Here. 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 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.’

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.