Hunting Down My Son's Killer
To find it, a team of scientists at Duke University used whole-exome sequencing (a protein-focused variant of whole-genome sequencing) on me, my wife and my son.
I'm a computer scientist that became passionate about precision medicine in a quest to diagnose my son Bertrand .
Visit matt.might.net → On Hacker News Apr 2010 – Jan 2025
Software Engineering 18Life, Learning & Writing 11Career & Management 8Math & Algorithms 7Tools & Productivity 6Programming Languages 6
To find it, a team of scientists at Duke University used whole-exome sequencing (a protein-focused variant of whole-genome sequencing) on me, my wife and my son.
Given the expansive growth in the field, it's become challenging to discern what belongs in a modern computer science degree.
It’s important for programmers to continuously challenge themselves in order to avoid creative and technical stagnation.
This post is part of my “Unix fundamentals” series. Recent posts in this series include settling into Unix , standalone lexers with lex , and sculpting text with regex, grep, sed and awk .
There's a bit more below, but I also wrote a follow-up 5 years after the illustrated guide which may be of interest -- HOWTO: Get tenure .
These structures are so universal that most research papers in the theory of computation, programming languages and formal methods present concepts in terms of discrete mathematics rather than code.
There's a bit more below, but I also wrote a follow-up 5 years after the illustrated guide which may be of interest -- HOWTO: Get tenure .
Even before I got tenure, folks have told me they’re “looking forward to an academic advice post on tenure.”
The point of these scripts is not to ban all use of constructs like the passive voice. (When it comes to writing, there are exceptions to every "rule.")
Since making a sudden leap from computer science to academic medicine about seven years ago, I haven’t programmed as much.
Students often ask for a recommendation on what language they should learn next. If you're looking for a job in industry, my reply is to learn whatever is hot right now: C++, Java and C#--and probably Python, Ruby, PHP and Perl too.
I'm supervising a lot of new grad students this semester, so for their sake, I'm cataloging the common reasons for failure.
I recently wrote about completing Advent of Code 2022 using a different programming language (or two) every day for 25 days.
Many of the tips below are already widely followed in academia, where debate and discussion over email have been taking place for decades.
Then, after realizing I was too weak to lift my son and his wheelchair in and out of the car, I spent just over a year gaining strength and muscle.
As an interactive shell, bash is a terse language for initiating and directing computations.
Unix is a bestiary of ad hoc databases: comma-, colon-, tab- and space-separated tables. Think of /etc/* or /var/log/* , or of columnar commands.
My colleagues and I realized this over beer: dry erase markers cost almost nothing, yet a lecture hall never contains functioning dry erase markers.
Continuations are the least understood of all control-flow constructs. This lack of understanding (or awareness) is unfortunate, given that continuations permit the programmer to implement powerful language features and algorithms, including exceptions, backtracking search, threads, generators and coroutines.
Generative AI tools like ChatGPT and Midjournery are able to replicate (and often exceed) human-like performance on tasks like taking exams, generating text and making art.
Implementing a programming language is an experience no programmer should go without; the process fosters a deep understanding of computation, and it's fun!
Racket provides a simple yet flexible web framework for serving dynamic web content.
My reply crossed the threshold for a blog post, so I'm posting it here to be consistent with my own principles on academic blogging .
Unix is an alliance of loosely structured text files bound together and governed by scripts. Unix is the United Confederation of Strings:
One's sentiment toward JavaScript flips between elegance and disgust without transiting intermediate states.
Though it contains forms only for function applications, variable references and anonymous functions, it is equivalent to a Turing machine.
These recommendations are sorted from general to specific: from resources for any kind of graduate student to resources for graduate students in my own field, static analysis.
I prefer functional languages like Scheme, Scala or Haskell over C++ for most tasks. So, when I'm forced to program in C++, I write functional C++.
The halting problem asks whether the execution of a specific program for a given input will terminate.
In terms of unreasonable effectiveness, the transformation to continuation-passing style (CPS) ranks with the Y combinator .