Computer drawing in air, showing the earth, with the words Drew's website on top

HomeProjectsNewsletterEventsInterviewsEphemeraCV

Scientific: PublicationsPresentationsCHEEREIOGithubGoogle Scholar

Interdisciplinary: BooksWritingGamesMusic

A collection of things I decided to post online

Some things listed here are useful. Most are not.

The JoyceScript programming language: a tortured technologial tribute to Ulysses!

When I was a college first-year, I wrote up notes for an esoteric interpreted computer programming language based on James Joyce's novel Ulysses. Leopold Bloom acted as a pointer who wandered a 1D "tape" memory/command structure, representing Dublin. The arrangement of eight objects in his pockets represented 8-bit data, which could be manipultated with bitwise operators; items could also be dropped on the tape and returned to the pockets using a stack data structure. As a result, the language should be Turing-complete (though I haven't written the proof); however, a variety of "features" based on the novel make programming in the language near-impossible.

See our implementation notes for JoyceScript here. No interpreter has yet been written!

The iPfoho Chrome extension

The iPfoho extension replaces all f's with pf's and all instances of the word "millennial" with "Matt Young." The official description:

This app provides the missing support that Pforzheimer House residents need in their Chrome experience. Have you ever read an article and wanted the f's to be replaced by their true form, pf? Have you ever wanted the word millennial replaced with its archetype, Matt Young? Have you ever wanted Google to load improperly in order to meet the above requirements? Then iPfoho is for you!

Log on wheels

The hottest new startup in town.

Facts about corn or facts about Korn?

Click the line you think is about corn!

Example 1

Example 2

Example 3

Score: 0 • Streak: 0

All facts lovingly taken from Wikipedia.

Statistical Learning in Atmospheric Chemistry (SLAC) community

With a group of other scientists at universities across the US, I facilitate the Statistical Learning in Atmospheric Chemistry (SLAC) community. SLAC is an online space supporting scientists interested in learning about and applying machine learning and data science methods in their research. Because these methods are relatively new to the discipline, SLAC is designed to supplement the support scientists get from their own research groups and collaborators — many find themselves the first in their circles to use a particular algorithm. SLAC provides members three things: (1) a monthly one-hour virtual seminar series, (2) an online bank of video tutorials, code, and slide decks made by and for atmospheric chemists on machine learning and data science topics, including our public archive of past speakers, and (3) an email list for questions and discussion.

The monthly seminar is core to SLAC and is designed and moderated to be useful (not just another obligation). Seminars consist of a recorded 40 minute Zoom talk on recent research at the intersection of machine learning and atmospheric chemistry/science, followed by an off-the-record question session. We invite speakers to go in-depth on methodology, such as by including code walkthroughs, in addition to high-level discussion.

Anyone at any career stage doing work related to atmospheric chemistry is welcome to join. Email one of the coordinators to be added to the mailing list. All members have full access to the past speakers and tutorial archive which we have catalogued since Spring 2021. The public can access recorded talks through our YouTube channel.

More information available on the SLAC website.

One randomly-generated sorting algorithm, please!

These algorithms were written while waiting for our experiments to complete in my Advanced Lab class in the third year of my physics major.

Do you have an unsorted list of N natural numbers? Do you just hate it when programs are guaranteed to terminate? Do you get angry when algorithms do better than factorial time? Then you're in luck! The following algorithm has been generated just for you:

  1. Begin with a gaslighting strategy. Insist to everyone that the list is already in order, even if it is not. If they give up arguing with you, terminate the program. If they insist that you actually sort the list, proceed to the next step.
  2. Uh oh! You've triggered a penalty step. Before you proceed, you must perform a task. Obtain one (1) chess grandmaster. You are generous, so you let them go first. After they move their piece, move a random one of yours to a random cell on the board. If this move violates the rules of chess, flip the board in anger and start again. If it is a legal move, continue playing until either the board is flipped or checkmate. If the grandmaster has won, repeat the game. If you won, proceed to the next step. You've paid the penalty.
  3. Produce N blockbuster action films, each with an advertising budget proportional to a number in the list. For consistency, ensure each film is released in the same theaters at the same time of year. (Practically, this means the list cannot exceed a dozen or so items. If N>12, simply delete all but twelve items from the list). Take care to ensure that none of the films are better than the others. Gather the box office earnings for each film, sort them in order of earneings using bogosort, then print the number corresponding to each of your sorted box office earnings.

Congratulations! Your list is now sorted. You can find a permalink to this particular algorithm here.

Chemical data assimilation crash course

A long PowerPoint slide deck that examines major data assimilation algorithms (3D-Var, 4D-Var, Kalman Filter (KF), Ensemble KF (EnKF), Localized Ensemble Transform KF (LETKF, and a few others) from the perspective of developing tools for chemical data assimilation. Please email me any questions or corrections to the address in the PowerPoint!