slim.computer Open in urlscan Pro
185.199.111.153  Public Scan

URL: https://slim.computer/
Submission: On December 30 via manual from US — Scanned from US

Form analysis 0 forms found in the DOM

Text Content

SLIM “SARAH” LIM

UC Berkeley Computer Science

Notion Labs

she/her/hers

slim [at] sarahlim [dot] com

 * CV
 * GitHub
 * Twitter
 * Mastodon
 * Bluesky
 * LinkedIn

 * Blog
 * News
 * Projects
 * Teaching

Eragon is the best compilers book


ABOUT

My name is Slim, and I am a computer scientist. Depending on my mood I am either
a software engineer at Notion or a PhD student at UC Berkeley, advised by Sarah
Chasins under the NSF Graduate Research Fellowship and UC Berkeley Chancellor’s
Fellowship.

My research interests span programming languages, human factors, and learning
sciences. I study programming languages as user interfaces: in short, how the
syntactic and semantic properties of a language shape the way people reason
about and write programs in the real world. For instance, I ask questions about
the usability of rich type systems, designing (co)algebraic abstractions for UI
programming, and how different evaluation strategies might promote or hinder
program comprehension in educational settings. As both an academic and
practitioner, my goal is to meaningfully improve the state of practice via
theoretically compelling formalisms, substantiated by rigorous empirical methods
and user-centered design.

Previously I collaborated with Ink & Switch on rich text CRDTs; helped build
tools for personal computing as an early engineer at Notion; worked in the Early
Product Development group at Khan Academy; and interned with the Human
Experience and Design group at Microsoft Research Cambridge.

I received my BA in Computer Science from Northwestern University, concentrating
in human-computer interaction and theoretical computer science. My studies were
supported by scholarships from Google, Microsoft, Palantir, Box, Quip, and
others, for which I am grateful, though these companies do not necessarily
represent my views. During undergrad I was affiliated with the following
research groups:

 * Design, Technology, and Research, where I researched CSS inspection with my
   co-advisors Haoqi Zhang and Nell O’Rourke. My work on semantic dependencies
   in CSS inspection was incorporated into both the Firefox and Chrome DevTools,
   and received Best Paper Honorable Mention at UIST 2018.
 * CS Theory Group, where I researched peer grading algorithms with Jason
   Hartline.
 * Center for Connected Learning, where I worked on NetLogo Web with Jason
   Bertsche.

I have a lot of hobbies:

 * I am a classically-trained flutist, currently studying with Evan Pengra Sult.

 * I have ridden every Amtrak long-distance route with a West Coast terminus:
   the California Zephyr twice, Coast Starlight seven times, and the Sunset
   Limited, Empire Builder, and Southwest Chief once each.

 * I coach competitive policy debate policy debate for Interlake High School,
   where I founded the team in 2011, and Northwestern University, where I was
   part of the team during our historic 15th national championship.
   
   Debate has shaped me profoundly, and bootstrapping a high school team with no
   resources or coaching remains the hardest thing I have ever accomplished.

My other interests include figure skating, midcentury furniture design,
typography, browser engines, type systems, text editors, Nix, WebAssembly, Rust,
Haskell, crossword puzzles, document preparation, coiling and soldering custom
USB cables, the Nintendo Switch, ultralight backpacking, jazz, wilderness
emergency medicine, and critical theory.

Here are a few of my 95 theses:

 * Stop using “uni-typed” pejoratively to dunk on dynamically-typed languages
 * Prominent individuals do others no favors by downplaying their own knowledge
 * Chunking mathematical notation helps with understanding
 * What is playing by ear, for mathematics?
 * I wish we understood why programmers have such poor intuitions about
   performance
 * Block vs. inline is a leaky and unintuitive abstraction for document editors
 * Code review should use a directed graph, not a linked list
 * Articulating injustice is more important than, but not mutually exclusive
   with, preserving your intellectual brand
 * Type errors are our friends and teachers (and corollary: Better error
   messages help users conceptualize compilers as friendly guides rather than
   angry jerks)

You can find more on my blog.


NEWS

Nov 2022

Chrome 108 ships with hints for inactive CSS properties, based on our research
with Ply.

Sep 2022

Peritext: A CRDT for Collaborative Rich Text Editing was accepted to CSCW 2022.
This work is a collaboration with Geoffrey Litt, Martin Kleppmann, and Peter van
Hardenberg.

Jun 2022

I’m back at OPLSS 2022 in Eugene!



I attended the Dagstuhl Seminar on Theories of Programming organized by Amy Ko,
Thomas LaToza, David C. Shepherd, and Dag Sjøberg.

May 2022

Geoffrey Litt and I gave a talk on Peritext at the UC Santa Cruz Languages,
Systems, and Data Seminar.

Jan 2022

I joined the Metamuse podcast to talk about rich text editing with Adam Wiggins
and Mark McGranaghan.



I ghostwrote a blog post on designing the Notion public API.

Nov 2021

New essay with Geoffrey Litt, Martin Kleppmann, and Peter van Hardenberg:
Peritext: A CRDT for Rich-Text Collaboration chronicles our efforts to create a
working CRDT for rich text.

Oct 2021

Attending SPLASH in Chicago. It’s good to be back!



I ghostwrote a blog post about my team’s work sharding Postgres at Notion.

Aug 2021

I started my PhD at Berkeley and transitioned to a contracting role at Notion.

Jun 2021

Spending the summer with Ink & Switch, collaborating with Geoffrey Litt on
CRDT-based approaches to rich text collaboration.

Mar 2021

I received an NSF Graduate Research Fellowship to support my forthcoming PhD.

Aug 2020

I’m co-organizing social sessions for the PL/HCI Swimmer School, along with
Yanyan Ren and Zeeshan Lakhani.

Jun 2020

I’ve finally implemented inline mathematics in Notion! (See the release notes.)
This was a very personally satisfying project, given my longstanding interests
in mathematics and document preparation. We’re using the wonderful KaTeX library
created by my alma mater, Khan Academy.

Apr 2020

I will be joining the UC Berkeley Computer Science PhD program in 2021, working
with Sarah Chasins and supported by a Chancellor’s Fellowship. I’m very excited!

Jan 2020

Notion 2.7 is released, featuring search that actually works. Previously, Notion
search was a major pain point: it was slow, inaccurate, and the interface was
clunky. I spent the past several months rethinking and rewriting this feature
from head to toe, and I’m really proud of what we came up with!

Oct 2019

Firefox 70 is released with Inactive CSS, a new inspection feature which
highlights ineffective CSS properties arising from unsatisfied implicit
dependencies. This work was directly inspired by Ply. Give it a try!

Sep 2019

Attending Papers We Love Conf and Strange Loop in St. Louis, through generous
support from Project Alloy.

Aug 2019

Attending React Rally in Salt Lake City, where I gave an invited talk on
WebAssembly entitled “All the memory safety of C combined with all the blazing
speed of JavaScript” (slides). The title is a reference to James Iry's timeless
blog post.

Jun 2019

Attending OPLSS in Eugene. Say hi if you’re around!

Apr 2019

New CSS inspection features inspired by our research are now available to test
on Firefox Nightly, targeting Firefox 69 for a stable release!

Oct 2018

Attending UIST in Berlin, where our paper Ply: A Visual Web Inspector for
Learning from Professional Webpages received Best Paper Honorable Mention. I
presented this work (recording; slides).

Sep 2018

Attending ICFP, Strange Loop, and RacketCon in St. Louis, via PLMW.

Jul 2018

Attending Curry On! in Amsterdam.



Started an internship at MSR Cambridge.

Jun 2018

I graduated! I was honored to be named Outstanding Senior in Computer Science.

May 2017

Spoke at the Northwestern Big Ideas Forum, “How We Learn About Learning,” with
professors Nell O’Rourke and David Uttal, and fellow undergrad Gabby Ashenafi.



Attending CHI in Denver. Ply won first place in the Student Research
Competition!

Apr 2017

Received a Microsoft Tuition Scholarship for 2017-18.

Jan 2017

Ply: Visual Regression Pruning for Web Design Source Inspection is accepted to
the CHI 2017 SRC.


PROJECTS

Escapades in research and development, ranging from serious research projects to
one-off diversions.


PERITEXT: A CRDT FOR RICH-TEXT COLLABORATION



research

Conflict-free Replicated Data Types (CRDTs) are commonly viewed as the holy
grail of collaboration algorithms because they are mathematically well-behaved
in comparison to approaches based on Operational Transforms (OT). Yet few CRDTs
provide first-class support for rich text collaboration. We study the design
principles for a rich text CRDT and present a prototype implementation,
including algorithms for inserting and deleting text with formatting
annotations. Collaboration with Geoffrey Litt, Martin Kleppmann, and Peter van
Hardenberg.

 * paper
 * link
 * code


RNG MECHANICS IN POKÉMON SWORD AND SHIELD



development

I wrote a tool for RNG manipulation in Pokémon Sword and Shield, written using
wasm-bindgen. Users enter a seed for an active raid den and the tool calculates
the corresponding stats for each possible encounter. Raid generation is
implemented in Rust, which is much faster than other Web-based seed searching
tools.

 * link
 * code


PLY: VISUAL WEB INSPECTION

Delta Lab

researchdevelopment

CSS is syntactically straightforward, but has a steep learning curve and
complicated semantics. Inspecting the source of existing webpages can help
illustrate concepts, but such webpages are typically too complex to serve as
useful learning materials. Drawing inspiration from prior research in both
software engineering and the learning sciences, we present a novel web
inspection tool and set of techniques for analyzing relevant CSS. We introduce
the concept of implicit dependencies between CSS properties, which represent a
major source of confusion for programmers. As a result of this work, Mozilla
Firefox 70 ships with Inactive CSS to help identify and surface implicit
dependencies within the Firefox Developer Tools. As of late 2022, Chrome 108
supports the same! Supervised by Haoqi Zhang and Nell O’Rourke. Honorable
Mention Paper at UIST 2018, Berlin.

 * paper
 * talk
 * code
 * slides


TRACING WEBASSEMBLY FUNCTION CALLS



development

With Meg Grasse and mentorship from Nick Fitzgerald and Jim Blandy, we developed
a proof-of-concept tool for instrumenting WebAssembly binaries written in Rust
to log function calls at runtime.

 * code
 * talk
 * slides


SPELLING CORRECTION WITH PREFIX TRIES



development

A more performant implementation of Peter Norvig's statistical spelling
corrector, written in Go using prefix tries.

 * code


THEOREMS IN MARKDOWN



development

Pandoc is my single favorite piece of software. I use it to compile Markdown
documents into slideshows, academic papers, course notes, blog posts, and more.
Pandoc already handles LaTeX very well, but I wanted to typeset my notes with
proper definition, theorem, and lemma environments using Markdown. This filter
compiles definition lists into amsthm environments. It's written in Haskell.

 * code


EVALUATING PEER GRADERS

Northwestern University

research

Existing models for peer grading borrow from the literature on crowdsourcing and
forecasting, using a random variable to represent the score reported by a peer
reviewer on a given submission. Most models attribute error in reporting solely
to the skill of the peer reviewer, which unfairly penalizes peers who report
noisy scores on unclear submissions. Building on the vancouver algorithm by de
Alfaro and Shavlovsky, we use low-rank approximations to factor out reviewer
skill and submission clarity. Supervised by Jason Hartline; paper in progress.


VISUAL REGRESSION PRUNING

Delta Lab

researchdevelopment

We introduce a visual significance heuristic for removing irrelevant CSS source
code during web design reverse-engineering tasks. CHI 2017 Student Research
Competition Winner, Denver, Colorado.

 * paper
 * slides


GUIDING WEB INSPECTION WITH TUTORIAL KEYWORD FREQUENCY

Delta Lab

researchdevelopment

In order to bridge the gap between web design tutorials and real-world examples,
we extend a web inspector to highlight CSS properties frequently mentioned
across a given set of tutorials. Google Scholars’ Retreat 2016, Mountain View,
California.

 * demo
 * code
 * poster


TEACHING

I was a teaching assistant every quarter beginning my sophomore year, sometimes
for two courses at once. Terms marked with an asterisk (*) denote a head or sole
teaching assistant role.


 * EECS 396: SOFTWARE CONSTRUCTION
   
   Spring 2018
   
   Software engineering project-based course with an emphasis on codewalks. With
   Robby Findler and Christos Dimoulas.


 * EECS 474: PROBABILISTIC GRAPHICAL MODELS
   
   Fall 2017*
   
   Graduate-level Bayesian and Markov network representation, inference, and
   learning. With Doug Downey.


 * EECS 111: FUNDAMENTALS OF COMPUTER PROGRAMMING I
   
   Fall 2015, Winter 2016, Fall 2016*, Winter 2017*, Fall 2017*, Winter 2018*
   
   Functional programming using the Racket Student Languages, vacillating
   between How to Design Programs and SICP. With Ian Horswill and Sara Sood.
   
   * Guide for new EECS 111 TAs
   * Fall 2016 Complete Recitation Notes
   * Fall 2016 Quiz 1 Review
   * Fall 2016 Quiz 2 Review
   * Fall 2016 Structural Inheritance Review
   * Winter 2017 Quiz 3 Practice Problems
   * Winter 2017 Recursion Problem Set
   * Winter 2017 Recursion Hints
   * Winter 2016 Structural Recursion Notes
   * Winter 2016 Map and Filter Notes


 * EECS 214: DATA STRUCTURES AND DATA MANAGEMENT
   
   Spring 2016, Spring 2017, Spring 2018
   
   Data structures and algorithms in C#. With Ian Horswill.
   
   * Spring 2017 Final Topics Piazza AMA
   * Spring 2017 BFS vs. Dijkstra Slides
   * Spring 2016 Recursive DFS vs. In-Memory Stack
   * Spring 2016 ELI5: Big O

Designed and built by Slimberly Lim.

There are many imitations, but this one is mine.

 * CV
 * GitHub
 * Twitter
 * Mastodon
 * Bluesky
 * LinkedIn