Hi, I’m Lindsey. Welcome to my blog.
From 2013 to mid-2022, this site lived at composition.al, and then I lost control of that domain. I’m pretty bummed about it! But life goes on. If you’re trying to find an old blog post of mine and you have a broken link to composition.al, just stick a “de” at the front, so you’re pointing to decomposition.al, and that should fix it.
Here’s everything, from newest to oldest:
- September 22nd, 2024: When is causal broadcast not enough for causal memory?
- July 24th, 2024: Join us for !!Con, and help spread the word!
- June 12th, 2024: The last !!Con!
- December 31st, 2023: A CAP tradeoff in the wild
- August 18th, 2023: Talk at Sunday Assembly Silicon Valley: "What could go wrong?"
- August 1st, 2023: Research roundup, 2022-2023
- April 8th, 2023: Who invented vector clocks?
- January 23rd, 2023: An underwhelming conversation with ChatGPT
- January 18th, 2023: Enforcing causally-ordered message delivery on the sender's side
- December 20th, 2022: Course announcement: Distributed Software Systems: Global-First and Local-First Perspectives
- September 7th, 2022: Verified causal broadcast with Liquid Haskell
- August 11th, 2022: An example run of a matrix-based causal unicast protocol
- July 21st, 2022: Teaching roundup, 2018-2022
- July 20th, 2022: My FLOPS 2022 keynote talk: "Adventures in Building Reliable Distributed Systems with Liquid Haskell"
- January 31st, 2022: CAREER: Building Reliable Distributed Systems with Refinement Types
- October 19th, 2021: Two papers at HATRA
- July 26th, 2021: Join us at the Programming Languages Mentoring Workshop at ICFP next month
- July 14th, 2021: How to create an .srt caption file for a video
- May 15th, 2021: !!Con 2021 starts today!
- March 30th, 2021: CSE138 returns to Twitch today!
- November 25th, 2020: How not to email prospective grad school advisors
- September 20th, 2020: Course retrospective: SMT Solving and Solver-Aided Systems
- July 20th, 2020: Yet another post telling you to apply to PLMW
- March 31st, 2020: Twitch plays CSE138
- November 30th, 2019: Call for talk proposals: !!Con West 2020!
- October 31st, 2019: Why you should come to UC Santa Cruz to do LSD research
- September 27th, 2019: Apply to PLMW
- August 31st, 2019: Course announcement: SMT Solving and Solver-Aided Systems
- July 31st, 2019: My first year as a professor
- June 29th, 2019: My students made zines, and so can you(rs)!
- May 31st, 2019: How I learned about Merklix trees (without having to become a cryptocurrency enthusiast)
- April 26th, 2019: An example run of the Chandy-Lamport snapshot algorithm
- March 31st, 2019: "Toward Domain-Specific Solvers for Distributed Consistency" will appear at SNAPL 2019
- February 28th, 2019: Jane Street Tech Talk: "Abstractions for Expressive, Efficient Parallel and Distributed Computing"
- January 31st, 2019: Way number eight of looking at the correlation coefficient
- December 31st, 2018: Course retrospective: Languages and Abstractions for Distributed Programming
- November 29th, 2018: Call for talk proposals: !!Con West 2019!
- October 31st, 2018: An introduction to replica conflict resolution
- September 18th, 2018: Course announcement: Languages and Abstractions for Distributed Programming
- August 31st, 2018: Understanding the regression line with standard units
- July 31st, 2018: You don't need a 4.0 to go to grad school
- June 29th, 2018: Where and when should you go to PLMW?
- May 13th, 2018: Back to school
- April 29th, 2018: Call for talk proposals: DSLDI 2018
- March 31st, 2018: Four kinds of talk proposals that get rejected from !!Con
- February 14th, 2018: "Toward Scalable Verification for Safety-Critical Deep Networks" at SysML 2018
- January 31st, 2018: Celebrating five years of this blog, and a change of pace
- December 31st, 2017: The call for papers formerly known as ICFP
- December 30th, 2017: Call for submissions: PaPoC 2018
- November 30th, 2017: Three times the Internet Archive helped me this year
- November 29th, 2017: The power of blogging with plain old versioned text
- October 31st, 2017: Using the simplex algorithm for SMT solving
- October 30th, 2017: Notes on Halide and Distributed Halide
- September 30th, 2017: The case of the missing frames
- September 29th, 2017: The optimization that wasn't
- August 31st, 2017: Upsides and downsides of "women in..." lists
- August 30th, 2017: Participating in ICFP remotely
- July 31st, 2017: My first fifteen compilers
- July 30th, 2017: What do people mean when they say "transpiler"?
- June 30th, 2017: How to write a timeline for a !!Con talk proposal
- June 9th, 2017: "Parallelizing Julia with a Non-Invasive DSL" will appear at ECOOP 2017
- May 31st, 2017: Proving that safety-critical neural networks do what they're supposed to: where we are, where we're going (part 2 of 2)
- May 30th, 2017: Proving that safety-critical neural networks do what they're supposed to: where we are, where we're going (part 1 of 2)
- April 30th, 2017: What isn't a high-performance DSL?
- April 29th, 2017: Call for talk proposals: DSLDI 2017
- March 31st, 2017: Scaling !!Con
- March 30th, 2017: Should you do an MS before doing a Ph.D.?
- February 28th, 2017: Call for talk proposals: !!Con 2017
- February 27th, 2017: Why does a Turing-complete type system make type checking undecidable?
- January 31st, 2017: The fine print in the ICFP 2017 call for papers
- January 30th, 2017: Reflections on four years of research blogging
- December 31st, 2016: A simple but difficult arithmetic puzzle, and the rabbit hole it took me down
- December 30th, 2016: My adventures with git-filter-branch
- November 30th, 2016: Thoughts on "Safety Verification of Deep Neural Networks"
- November 17th, 2016: An economics analogy for why adversarial examples work
- October 27th, 2016: Where does OBT research go after OBT?
- October 17th, 2016: Call for talk proposals: OBT 2017
- September 30th, 2016: Thoughts on "An Abstraction-Refinement Approach to Verification of Artificial Neural Networks"
- September 29th, 2016: Thoughts on "Adversarial examples in the physical world"
- August 31st, 2016: 'Experiencing computing viscerally': my PG Podcast interview about !!Con
- August 30th, 2016: The saga of Accumulo bug 4379
- July 31st, 2016: Publicity chair tip: use ruby-gmail to send bulk emails via Gmail
- July 28th, 2016: Getting into a Ph.D. program without previous research experience
- June 30th, 2016: s/S/C/
- June 29th, 2016: The first ten minutes of my JuliaCon talk
- May 30th, 2016: Do 'all Java type checkers have bugs'?
- May 18th, 2016: Call for talk proposals: DSLDI 2016
- April 30th, 2016: What even is OpenStack?
- April 29th, 2016: Help the !!Con 2016 attendees eat breakfast
- March 31st, 2016: That time my tweet got cited in a scientific journal
- March 5th, 2016: "An introduction to ParallelAccelerator.jl" on the Julia blog
- February 29th, 2016: Don't "invite" people to your program committee; ask them to serve
- February 28th, 2016: Call for talk proposals: !!Con 2016
- January 31st, 2016: Why review papers?
- January 25th, 2016: Off the Beaten Track 2016 program chair's report
- December 29th, 2015: Refactoring as a way to understand code
- December 28th, 2015: Call for participation: Off the Beaten Track 2016
- November 30th, 2015: Some notes from SPLASH 2015
- November 29th, 2015: A better way to add labels to bar charts with matplotlib
- October 31st, 2015: My talk on Prospect and ParallelAccelerator.jl at SPLASH-I 2015
- October 30th, 2015: Two announcements about OBT: invited speakers and funding for speaker expenses
- September 30th, 2015: Call for submissions: Off the Beaten Track 2016
- September 19th, 2015: I finally finished my dissertation!
- August 31st, 2015: What's the difference between inflationary and monotonic functions?
- August 30th, 2015: I'm speaking at SPLASH 2015
- July 31st, 2015: How to learn to do determinism proofs
- July 30th, 2015: A month of daily check-ins
- June 30th, 2015: Captioning videos: a fun and easy way to contribute to !!Con right now
- June 2nd, 2015: Embedding, deep and shallow
- May 31st, 2015: Call for papers: IFL 2015
- May 29th, 2015: What's the difference between LVars and CRDTs?
- April 30th, 2015: Say "experts" instead of "smart people"
- April 29th, 2015: A few notes from PaPoC 2015
- March 31st, 2015: What isn't a key-value store?
- March 30th, 2015: Call for proposals: !!Con 2015
- February 27th, 2015: Browser extensions are kernel modules for browsers
- February 24th, 2015: To OpenCL from JavaScript via js-ctypes, or, how we rewrote the River Trail Firefox extension
- January 30th, 2015: Call for papers: Onward! 2015
- January 27th, 2015: Reflections on two years of research blogging
- December 30th, 2014: One last CFP to wrap up the year: Tiny ToCS
- December 26th, 2014: What I do all day, as told to a first-year CS student
- November 30th, 2014: Call for submissions: PaPoC 2015
- November 24th, 2014: Yet another blog post about how parallelism is not concurrency
- October 31st, 2014: The Programming Systems Lab is hiring research interns for summer 2015
- October 30th, 2014: Notes from the "Energy and Performance" session at OOPSLA
- September 30th, 2014: Call for submissions: Off the Beaten Track 2015
- September 29th, 2014: My thesis defense talk
- August 31st, 2014: Frame problems and frame properties
- August 18th, 2014: Dissertation draft readers wanted!
- July 31st, 2014: Call for papers: IFL 2014
- July 28th, 2014: Draft: "Deterministic Threshold Queries of Distributed Data Structures"
- June 29th, 2014: A one-minute talk about "Taming the Parallel Effect Zoo"
- June 27th, 2014: Things you can do to get ready for PL grad school
- May 31st, 2014: Your next conference should have real-time captioning
- May 28th, 2014: The LVar that was, after all
- April 30th, 2014: What I'm doing after graduation
- April 29th, 2014: Rejections
- March 31st, 2014: "Taming the Parallel Effect Zoo" and the PLDI artifact evaluation process
- March 29th, 2014: Call for submissions: 2014 Haskell Symposium
- February 27th, 2014: Two LVars papers at WoDet
- February 18th, 2014: Disorder and determinism
- January 31st, 2014: How to freeze after writing
- January 10th, 2014: New paper draft: "Joining Forces"
- December 28th, 2013: Music as preparation for a computer science career
- December 24th, 2013: The LVar that wasn't
- November 30th, 2013: My thesis proposal, and my second Hacker School residency
- November 11th, 2013: Thoughts on CRDTs and threshold reads
- October 31st, 2013: What's the deal with LVars and CRDTs?
- October 3rd, 2013: "Freeze After Writing" will appear at POPL 2014
- September 30th, 2013: Some FHPC and Haskell Symposium highlights
- September 22nd, 2013: Some example MVar, IVar, and LVar programs in Haskell
- August 30th, 2013: Interpreting LVar effects as resources
- August 26th, 2013: Default methods and negative diffstats
- July 31st, 2013: Some misconceptions about Hacker School
- July 17th, 2013: Two LVars papers
- June 29th, 2013: Write an interpreter: variables
- June 23rd, 2013: Write an interpreter
- May 31st, 2013: One-character patches
- May 25th, 2013: How to read from an LVar: an illustrated guide
- April 30th, 2013: Hacker School residency
- April 21st, 2013: Writing macros that write Redex
- March 31st, 2013: A new paper draft, and a debugging story
- March 2nd, 2013: FizzBuzz revisited
- February 17th, 2013: Determinism abides
- February 4th, 2013: I can't believe I was allowed to say "relationships between ordered sets"
- January 18th, 2013: A ten-minute talk about my research
- January 10th, 2013: Hello, world!