HNHacker News
TopNewBestAskShowJobs

dfan

2,004 karma · joined March 17, 2010

I first worked at Blue Sky Productions aka Looking Glass Technologies aka Looking Glass Studios, and coded/designed/wrote/composed for some of their early games, most notably Ultima Underworld.

Then I joined Harmonix Music Systems, where I did code and game design on a bunch of music games, including Guitar Hero and Rock Band.

Most recently I did machine learning research in the Algorithmic Systems Group at Analog Garage, a division of Analog Devices.

submissionscomments
dfan··on Acquiring absolute pitch in adulthood is difficult but possible
In a lot of classical music, especially since 1900, pitch classes play a really fundamental role. When, say, G is a prominent pitch class for a while, and then I hear it come back a few minutes later, that lets me understand the structure of the piece better than if I didn't recognize it. So absolute pitch has a real use, and I don't think it's quite fair to put it on the level of "absolute hex color values".

Of course, there is a lot of subtle stuff going with color design in TV and movies that generally passes me right by, so maybe I should be spending more time trying to appreciate that and less time getting excited about identifying Gs in atonal music...

dfan··on Acquiring absolute pitch in adulthood is difficult but possible
My pitch started to drift in middle age too. Like you, I do better or worse based on timbre; piano is great (it's my instrument, which must help), stringed instruments are pretty good in general, wind instruments are not so great, organs are the worst.

Playing for ten years in a Balinese gamelan that was not remotely tuned to a Western scale probably didn't help.

Absolute pitch is still a really useful skill to have, in my opinion, and I don't understand it when people say it's just a parlor trick or actually diminishes your ability to appreciate music; being able to spell doesn't diminish my appreciation of language. It is occasionally slightly distressing to realize in retrospect that I've been off by a half step, like thinking you're walking north and then looking at a map and realizing you've been walking west.

dfan··on Forgotten Greats of Science Fiction
Science fiction futures exist in a two-dimensional space; one axis is the time the story is set in, and the other axis is the time the story is written. You just have to get used to the fact that "2000 as written in 1950" is different from "2000 as written in 1990".
dfan··on Leveraging the type system to avoid mistakes
I have a system set up in C++ to make it trivial to add new unique kinds of IDs (wrappers around ints) as well as vectors that can be indexed only with that kind of ID. So you can have a ShoeVec containing Shoes that is indexable only by ShoeIDs and a ShirtVec containing Shirts that is indexable only by ShirtIDs. It's zero-overhead in optimized builds, of course. You'd be surprised how rarely you have to convert to or from the underlying type.
dfan··on System Shock 1 source code released under GPL
Oh, that EDMS! I had totally forgotten its code name.

Seamus's physics system was really ahead of its time, but unfortunately a ton of the work of getting a physics system to work in a real game is dealing with edge cases, numerical stability, etc., and we had huge problems getting everything to an industrial-strength state. (You will probably not be surprised if you look at the code.) Terra Nova: Strike Force Centauri's full biped physics eventually had to be replaced by run-of-the-mill sphere physics just to make sure that things worked 100% of the time instead of 95%. Flight Unlimited was the real culmination of Seamus's physics work.

dfan··on System Shock 1 source code released under GPL
Done.
dfan··on System Shock 1 source code released under GPL
EDMS = Electronic Document Management System? Like source control? I honestly don't remember. These source files all have rcsid tags so probably we were using CVS? In our previous project (Ultima Underworld) our computers weren't even networked and I would go around grabbing floppies with changes from coworkers and merging their code into the master by hand.

Here are some of my Ultima Underworld stories:

https://dfan.org/blog/2011/02/20/the-dangers-of-self-modifyi...

https://dfan.org/blog/2011/02/21/ultima-underworld-bugs/

https://dfan.org/blog/2011/03/17/one-more-ultima-underworld-...

dfan··on System Shock 1 source code released under GPL
This is a trip, seeing code I wrote 25 years ago. It's actually kind of scary how identifiable my style is; in a lot of ways I am still the same coder, although I tend to work at a much higher level of abstraction now. There was a certain craft to weaving all sorts of linked lists back and forth all the time and maintaining invariants that looking at my old code makes me a little nostalgic for, but I can't say I really miss it much.
dfan··on Book: Mathematics for Machine Learning
Yes, this is so useful when it is present. Whenever I read an even moderately mathematical paper I end up making one myself (including the meanings and types of all the variables).
dfan··on Book: Mathematics for Machine Learning
It looks to me like it's pitched approximately at third-year undergraduates who have a couple of years of a college math background, and is meant to pull them up to a level where they can fluently work with the more advanced concepts used in machine learning.

The route for someone with no (or very little) math background is a lot longer, and I don't think this book is trying to provide it. I think that one either has to 1) bite the bullet and learn a year or two of undergrad math first, which provides the necessary foundation for this stuff, then learn this for real; or 2) be content with understanding and using machine learning at a hand-wavy level (which I am not denigrating). It might be nice to have a "hand-wavy machine learning" book around (there are certainly enough blog posts of that sort), but this isn't trying to be it.

dfan··on Show HN: Convert screenshots of equations to LaTeX
I tried this on some of my (fairly neat) handwritten physics notes and it was mostly pretty impressive. Failures: a lot of lowercase deltas became 8s and it had no idea what to make of hbar (converting it to n, pi, k, or most often refusing to convert the equation entirely). A fair number of little typos, but you'd want to check all its work anyway.
dfan··on Ask HN: Best way to learn modern C++?
I usually recommend Effective C++ as the C++ book that everybody should read second. I'm still not sure what the best book to read first is, though...
dfan··on Ask HN: Best way to learn modern C++?
As someone who programmed in "classic C++" for decades, I feel like modern C++ is pretty different, and that it's not just syntactic sugar to make some ugly things easier. The biggest example is that my natural inclination to use raw pointers everywhere and manage all memory myself, while idiomatic modern C++ is full of unique_ptrs and shared_ptrs everywhere, and raw pointers seem to be regarded as a code smell. Converting to this style is not an automatic process.

For people who are coming from a classic C++ background, I find Bancila's Modern C++ Programming Cookbook to be a good first stop for discovering modern C++ idioms.

dfan··on Quantum Machine Learning: An Overview
If you have enough knowledge of quantum computation to be annoyed by that sentence, you will not get anything out of the rest of the article.
dfan··on MiniZinc: free and open-source constraint modeling language
There's a good MOOC on Coursera on applied discrete optimization that uses MiniZinc: https://www.coursera.org/learn/basic-modeling
dfan··on Theoretical Impediments to Machine Learning with Seven Sparks from Causality
I agree that this article came off as a bit condescending.

Pearl has a more general-audience book coming out this year coauthored with Dana Mackenzie called The Book of Why: The Science of Cause and Effect. I'm hoping that it will be a more gentle introduction to the topic. I'll check out Dawid in the meantime.

dfan··on Leela Zero – Go engine with no human-provided knowledge
The game came to Europe and America from Japan, and for decades the only translated foreign literature on it was Japanese.

Whenever I do a google search I use "baduk" instead. I think most people writing about go are smart enough to throw that word in there somewhere.

dfan··on Alpha Go Zero: How and Why It Works
Here is the latest publicly available draft of the 2nd edition (June 2017, 538 pages): http://incompleteideas.net/sutton/book/bookdraft2017june19.p...
dfan··on How We Built the ARKit Sudoku Solver
Crosswords are pretty tough, partially because many puzzles (such as the Tuesday, Thursday, and Sunday puzzles in the New York Times) have enough wordplay in their answers (not just the clues) that they break normal crossword rules, in a specific way that the solver has to determine. I think Dr. Fill (https://arxiv.org/abs/1401.4597) is still the state of the art.
dfan··on A Comparison of Four Algorithms Textbooks (2016)
It's odd to me that the author describes CLRS as graduate-level. It (back when it was CLR and in its first edition) was the text in my undergrad Introduction to Algorithms class (taught by L!).

I agree that Sedgewick belongs in this comparison, but I can't fault the author for not having read it. I think it's the book I would most easily recommend to others; it's quite clear and has lots of very nice visualizations. I do think that Skiena deserves a special mention for explicitly being about how to come up with your own fundamental algorithms and data structures rather than just plug an existing one into your program.

dfan··on The Longest Possible Chess Game
The 50-move rule was extended for certain types of endgames, but then it was felt that keeping a list of exceptions like that was kind of silly, and they reverted back to the 50-move rule in all situations.
dfan··on The Longest Possible Chess Game
All that the 50-move and threefold repetition rules do is permit one player to claim a draw; the game may continue if both players wish to play on. (It has happened, particularly threefold repetition where the repetitions are spaced far apart and the players don't have much time.)

There are actually new FIDE rules as of 2014 or so, where after 75 moves, or a fivefold repetition, the game is immediately declared drawn without the need for a player to take action.

dfan··on Pascal at Apple
In order to run Apple Pascal on my Apple ][+, I had to buy a "language card". This was bigger than an index card (maybe 3 by 6 inches) and added sixteen whole kilobytes to your computer's RAM, beefing it up to a massive 64K and rendering it capable of running such a system hog as Apple Pascal. I think it was about a hundred bucks in the early 1980s.

Meanwhile, the Apple ][+ could only display 40 columns on screen, where of course by "screen" I mean "television". (You could buy another big card to give you enough memory to display 80 columns at a time, but who had the cash to make another huge purchase like that?). Of course, 40 columns isn't enough to write in a structured programming language with indentation like Pascal, and in fact the Pascal program itself supported logical lines of up to 80 characters.

This issue was resolved as brilliantly as you might expect. You could toggle between looking at the left half of your program (cut off at the 40-character mark) or the right half. I'm not kidding.

dfan··on Incomprehensible job titles are an elitist affectation
My first job was doing programming / game design / writing / composing / audio design at a startup computer game company in the 1990s. No one really had a title. When we finally decided that we should really have business cards, I got mine printed with the job title of Chaplain.
dfan··on Mathematical Chronology
Garry Kasparov is a Fomenko fan! As conspiracy theories go, I have to admit that it is pretty good.
dfan··on Chess Tactics Explained in Plain English
The closest thing in English is Tesuji by James Davies (http://senseis.xmp.net/?TesujiTheBook). It already presumes that you know a bit about Go, though (the very simplest tactics are taken for granted).
dfan··on Exploring the mysteries of Go with AlphaGo and China’s top players
Carlsen himself certainly realizes he would have no chance in a match against the top computer engine. Its effective rating is probably at least 400 Elo above his.
dfan··on Fourteen Months with Clojure
Seasoned Clojurians: is

  (every? #(= % “success”) (map :status (:state task)))
actually considered crappy code? It looks perfectly natural to me, but my Lisp background is more generic.
dfan··on Stockfish – Strong Open-Source Chess Engine
Pull requests are regularly rejected for increasing the size of the codebase, even if they slightly improve the strength of the engine. It's hard to argue with the results.
dfan··on Abstract Algebra (2016) [pdf]
I went through all of these a few years ago, including the homework, and it was a great experience.
← PreviousPage 4 of 12Next →