Hello, friend — welcome to my quasi-informal personal/professional page.
I have worked as a research scientist, software engineer and manager, and a startup executive. I have a lot of experience building product, as well as a strong scientific background. I am passionate about working on analytical and technical problems in order to create things that are noteworthy and, ideally, useful. My focus is ML/AI, and user experience.
These days I work at Google, where I lead an ML Applied Research team that develops new applications of ML/AI to fight fraud.
In general, I enjoy projects which allow me to draw on my mixed background in science and engineering to analyze a real problem, to do original modelling work to solve it, and to execute the engineering necessary to produce a solution that deploys in the real world. Great work requires great teamwork. But I'm proud to have assembled all the skills to play a kick-ass one-man band when the situation requires.
I now live in San Francisco, where I was born and raised. But I have also lived and worked in Cambridge, New York, Milan, Oxford, and London for about 20 years, mostly in Europe. I enjoy working with diverse teams.
For more info on my work history, education, research, and books and articles I've written or edited, etc., please check out this possibly outdated resume.
Perhaps you came here looking for one of my talks? Here are a few:
Talking to Swift
A talk about conversational user interfaces. I used Swift to build and demo a voice chatbot, with a personality based on the 17th century moral writer, François de La Rochefoucauld. This was 2016, when chatbot hype far outran AI capabilities but you could workaround this with interesting design. In 2023 we have amazing AI cabilities, and even more untapped design opportunities.
Value SEMANTICS (not value types!)
This is not a talk about value types in Swift. It's a talk about value semantics, how that's different, and why "copy-on-write semantics" is a misnomer. Explained via Alan Rickman and the thought experiment of the Mutation Game.
Protocols with Associated Types and How They Got That Way
A deep dive into Swift's protocols with associated types, their roots in other languages, and why they have a surprising relationship to Objective-C protocols (namely, almost none at all). This talk introduced the term PATs and got 25k+ views on YouTube, which I like to hope is solid "dog riding a skateboard" territory for a niche, unpromoted PL talk.
More talks are listed at my resume page.
I have a weakness (actually, let us say, a strength!) for projects which are grand, fundamental, or pathbreaking in some way. My PhD research, for instance, was on the likelihood of the evolution of complex life. That said, I have also spent meany years as the person in charge of getting down to brass tacks, figuring out what can actually be done, and just getting on with it. To be frank these two impulses live in a constant state of productive but occasionally uncomfortable warfare within my heart. If you have a solution to this perennial dilemma, please let me know!
I've coauthored a couple of books, on ML and on Swift, and tech edited dozens of articles, all described on my resume. I used to give answers on StackOverflow, mostly on the finer points of auto-layout, but also on ML.
Why do I do this? Same reason as talks. It makes me happy to think things through and make things clear.
(You know how some people are accused of overthinking things? IMHO many smart people underthink things.)
You can also find me on X/twitter, but not so much these days.
If you're looking for something more like a professional resume, here's a resume.