About me | Lifespan | Projects
Hello, I'm Jim. I'm a cofounder of Logic Magazine. I co-wrote a strange book with lots of red text in it. So far it's been published in three languages. I am currently the CTO at Amino, whose mission is to create the clearest picture of the American healthcare system and connect everyone with the best care possible.
I enjoy programming, particularly on creative projects.
My partner and I have adopted retired racing greyhounds, and currently have a cute little Staffy mix named Piglet.
I co-wrote a book called The Lifespan of a Fact, which was published in 2012 by Norton. The blurb is:
How negotiable is a fact in nonfiction? In 2003, an essay by John D’Agata was rejected by the magazine that commissioned it due to factual inaccuracies. That essay—which eventually became the foundation of D’Agata’s critically acclaimed About a Mountain—was accepted by another magazine, The Believer, but not before they handed it to their own fact-checker, Jim Fingal. What resulted from that assignment was seven years of arguments, negotiations, and revisions as D’Agata and Fingal struggled to navigate the boundaries of literary nonfiction.
You can buy it at your local bookseller, or online at Bookshop.org.
It was published in Germany by Hanser, as Das kurze Leben der Fakten.
Find a German-language review in Das Spiegal here.
It was published in France Vies Parallèles, as Que Faire De Ce Corps Qui Tombe.
Find a French-language review in Libération here.
“A fascinating and dramatic power struggle over the intriguing question of what nonfiction should, or can, be.” — Lydia Davis
“...[H]ere is the genius of this little book, for as it progresses, D'Agata and Fingal turn everything around on us, until even our most basic assumptions are left unclear. Who says writers owe readers anything? Or that genre, such as it is, is a valid lens through which to consider literary work? ...[T]he book is "an enactment of the experience of trying to find meaning"— a vivid and reflective meditation on the nature of nonfiction as literary art.” — David L. Ulin, L.A. Times
“Very à propos in our era of spruced-up autobiography and fabricated reporting, this is a whip-smart, mordantly funny, thought-provoking rumination on journalistic responsibility and literary license.” — Publishers Weekly
“A singularly important meditation on fact and fiction, the imagination and life, fidelity and freedom. Provocative, maddening, and compulsively readable, The Lifespan of a Fact pulses through a forest of detail to illuminate high-stakes, age-old questions about art and ethics—questions to which the book (blessedly!) provides no easy answers.” — Maggie Nelson
“...The Lifespan of a Fact... is less a book than a knock-down, drag-out fight between two tenacious combatants, over questions of truth, belief, history, myth, memory and forgetting.” — Jennifer McDonald, New York Times Book Review
“A riveting essay delving into the arcane yet entertaining debate within the writing community over the relationship between truth and accuracy when writing creative nonfiction....” — Kirkus Reviews
“...Thus begins the alternately absorbing and infuriating exercise that is the book The Lifespan of a Fact, a Talmudically arranged account of the conflict between Jim Fingal, zealous checker, and John D’Agata, nonfiction fabulist, which began in 2005 and resulted in this collaboration.” — Gideon Lewis-Kraus, New York Times Magazine
“If you like compelling, emotional stories set in wild, business-friendly locales, this book delivers.” — Daniel Roberts, Fortune Magazine
These are interviews that I have participated in discussing The Lifespan of a Fact.
Sound of Pursuit Podcast. 9/17/2014, with Adam Ragusea and Anthony Brooks
Radio Boston. 3/13/2012, with Adam Ragusea and Anthony Brooks
The Kathleen Dunn Show. 3/13/2012, with Kathleen Dunn
Morning Edition. 3/8/2012, with Travis Larchuk
The Colin McEnroe Show. 3/7/2012, with Colin McEnroe
Radio Berkman. 3/6/2012, with Dan Jones
On the Media. 2/24/2012, with Brooke Gladstone
To the Best of Our Knowledge. 2/12/2012, with Anne Strainchamps
Originally this was a project to create a twitter bot each week, then it just turned into making a bunch of bots. Done primarily in Python, with all source online. My favorite one so far, @HwaetBot, uses a Markov model to auto-generate Old English riddles, trained using the Exeter Book as source material.
The full listing of the bots can be found on our Tumblr page.
To view the app, using Chrome (or maybe Firefox, anything else at your own risk) go to: http://skynetheremin.herokuapp.com/.
Click and drag on the screen to make your own music.
For Music Hack Day Boston 2012, Brian Fife and I made Echobreakout, a brickbreaker clone built in LÖVE, using Echonest APIs to chop up a song into fragments, which are rendered as a game state of dynamically colored bricks that play the source sound clip when hit.
A version of Echobreakout compiled for Love 0.9.x can be found here. (Requires a download of Love2d to run, but will run on any platform that supports it.)
Songs in that version are: "Anne Lisa goes to bed" by Ballpen. (Ballpen) / CC BY-NC-ND 3.0. "You Kill My Brother - GoGoGo" and "Crazy Games - Wake Up" from Micro Invasion - East Jakarta Chiptunes Compilation (Indonesian Chiptunes) / CC BY-NC-SA 3.0. If you're looking to the FMA for CC music there is a search filter "By Use."
I previously played around with the Love2d game engine as part of a Music Hack Day project with a friend. I did this project as a way to teach myself more about game development, so that I could try my hand at a few indie game projects to see whether or not it was something I was interested in seriously pursuing. (It wasn't.)
I'm not sure how I came across it, but Martin Jonasson & Petri Purho's "Juice It Or Lose It" video was pretty eye-opening for me in terms of how small aesthetic design choices can greatly influence how fun a game seems. After watching that, I wanted to see what it would be like to implement some of those "juicy" features into EchoBreakout.
A good deal of coding, and three or four rounds of full refactoring later, I came up with an implementation that I'm moderately happy with. It can be found on github here. I'm about ready to move on to playing with other frameworks, so figured I'd do a bit of a post-mortem here. Post-Mortem Time!
Specific Juicy Features
Support code to get us there:
Over the course of development, I refactored the codebase I was working on a few times to continually clean things up. Eventually I settled on creating a basic Entity-Component framework inspired by Artemis and posts by Adam Martin. Just about everything in the game is an Entity; every data attribute is packaged in a Component; and everything that happens to update or react to those Components happens in a System. For a basic overview of the theory behind this, check out this post.
When coming up with my own scheduler / tween systems, I was heavily influenced by code in Matthias Richter's HUMP libraries. Other specific code I directly used can be found on the github page.
Thoughts on the code / development process
Screenshots of a few experiments in Love2d. Code for these can be found at my Github account.
Minimalist "Game of Life" implementation with some pretty colors.
Test game for shotting bullets, placing them in a quadtree, and testing an (invincible) opponent with AI steering behaviors.
Code to visually test my implementation of quadtrees.
Test implementation of real-time audio synthesis. Press up or down to change wave types, and press "w" or "s" to change note.
An audio toy that uses real-time audio synthesis and a looping window to create and play simple set of notes/chords. Click on a square to set a note. Press up or down to change wave types.
Test implementation of mapping the screen into tiles.
A 3d warping grid projected onto a 2d plane, a la Geometry Wars. Press enter or space to warp the grid. Concepts drawn from Game tutorials and ported to lua.
Moderately dissatisfactory experiment in using springs to simulate water effects. Based on http://gamedev.tutsplus.com/tutorials/implementation/make-a-splash-with-2d-water-effects/