I'm an independent researcher.
In the past I've built database engines, query planners, compilers, developer tools and interfaces for Materialize, RelationalAI, LogicBlox and Eve, as well as for myriad consulting and personal research projects.
Currently all my writing, research and code is funded by my sponsors.
Retrospectives:
Community:
- Have you tried rubbing a database on it? A day of lightning talks about turning a data-centric lens onto familiar problems to yield strange new solutions (and maybe exciting new problems).
Relational programming:
- droplet
- ~2012
- Goal: concisely specify distributed systems.
- Conceived as a non-embedded version of bloom.
- Didn't have the skills to complete it.
- eve
- 2013 Dec - 2016 Jan (the others continued until 2018 Jan)
- Goal: 'end-user programming'.
- Shipped many demos
- Lack of concrete questions/problems.
- Plagued by performance problems.
- imp v0
- 2015 Aug - 2016 Oct
- Goal: Write a webapp end-to-end in a relational language.
- A practical query compiler in 500 lines
- Relational UI
- reltron
- 2018 Aug - 2018 Dec
- Goal: Can we find a graphical interface for exploring the relationships in a SQL database?
- Collaboration with Kevin Lynagh
- Writeup by Kevin
- imp v1
- 2018 Apr - 2020 Mar
- Goal: 'A better SQL' (see Against SQL)
- Features:
- Denotation + type system fit on a single page.
- Compiles to relational algebra.
- First-class/nested sets.
- Functions are infinite sets, function application is a join.
- Subqueries are a join against an anonymous function.
- Core language
- Denotational semantics
- Types
- Simple interpreter
- Decorrelation
- Solving functions
- Boxes
- imp v2
- 2020 May - 2022 Jan
- Goal: Push v1 towards being a capable general-purpose language.
- Same core language as v1, new runtime.
- Improved type inference and error reporting.
- First-class transactions.
- Iteration
- Implicit ordering in relational languages
- Making live repls behave
- Live repl demo
- Heterogenous types and gradual typing
- imp v3
- 2022 Jun - ???
- The shape of data
Streaming/incremental systems:
- An opinionated map of incremental and streaming systems
- Internal consistency - most streaming systems can produce unboundedly wrong outputs
- Why query planning is hard
- Thoughts on benchmarking
- dida - differential dataflow for mere mortals
SQL:
- Against SQL - SQL is inexpressive, incompressible, non-porous and under-specified, and this creates drag on everything downstream.
- How Materialize and other databases optimize SQL subqueries
- SELECT wat FROM sql
Interfaces:
- focus - a low-latency text editor which I use for all my writing and coding
- reltron - an interface for exploring relational databases, in collaboration with Kevin Lynagh
- monolog - monolog is to logging as spreadsheets are to accounting?
- unnamed - experimenting with VR game mechanics on the HTC Vive
Programming languages:
- Better operator precedence
- How safe is zig?
- Memory-mapped IO registers in zig
- Open multiple dispatch in zig
- Assorted thoughts on zig (and rust)
- blobs - a library for zero-copy deserialization in Julia
- Julia as a platform for language development
- Staged interpreters in rust
- Three months of rust
- strucjure - combining pattern matching, parsing and visitors
- Parallelizing the core.logic solver
Distributed systems:
- Causal ordering
- msc thesis - tweaking the timing model of a gossip algorithm to collapse the size of the state space and allow model checking important fairness properties
Practices:
Rambling:
- What is a database?
- Scaling down
- Imperative thinking and the making of sandwiches
- Pain we forgot
- Local state is harmful
Indie:
Cogsci:
- Quick and dirty review of Psychology of Programming Interest Group 1989-2015
- Contrast codes are an implementation detail
- Psychology vs the graphics pipeline
- Decision points and utility
Misc:
- Canada's Express Entry program
- Looking for debugger
- Looking for more debugger
- texsearch - a search index for the >8m LaTeX equations in the Springer corpus
- scampy - conversations between scammers and a very stupid chat bot
Notes:
- Ultralearning
- Bullshit Jobs
- Utopia of Rules
- Debt
- A Small Matter of Programming
- The Mature Optimization Handbook
- Digital Minimalism
- Working in Public
Older notes for which I have lost the source but still have the old html:
- Espresso Lessons: From The Rock Warrior's Way
- Prediction Machines: The Simple Economics of Artificial Intelligence
- The Robot
- Tribe: On Homecoming and Belonging
- The Inner Game of Tennis: The Classic Guide to the Mental Side of Peak Performance
- The Case against Education: Why the Education System Is a Waste of Time and Money
- Data Analysis: A Model Comparison Approach To Regression, ANOVA, and Beyond
- Building the Intentional University: Minerva and the Future of Higher Education
- The Rock Climber's Training Manual
- The Elephant in the Brain: Hidden Motives in Everyday Life
- Radical Technologies: The Design of Everyday Life
- Inadequate Equilibria
- A Guide to the Good Life: The Ancient Art of Stoic Joy
- PSYCGR01: Statistics
- PSYCGD02: Principles of Cognition
- Infinite Distraction
- How to Become a Straight-A Student
- Designing with the Mind in Mind
- You Are Not a Gadget
- Reality Is Broken
- Nonviolent Communication
- The Mind Illuminated
- Breakdown of Will
- The Self-Coached Climber
- Training for Climbing
- Statistical Rethinking
- The Rock Warrior
- Bonds That Make Us Free
- The Seven Deadly Sins of Psychology: A Manifesto for Reforming the Culture of Scientific Practice
- The Distracted Mind: Ancient Brains in a High-Tech World
- Governing the Commons: The Evolution of Institutions for Collective Action
- The Rationality Quotient: Toward a Test of Rational Thinking
- Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed
- The Origin of Consciousness in the Breakdown of the Bicameral Mind
- Intelligence: All That Matters
- Uncontrolled: The Surprising Payoff of Trial-and-Error for Business, Politics, and Society
- The Universal Pastime: Sleep and Rest Explained
- Everything is fucked
- The Beginning of Infinity: Explanations That Transform the World
- The Logic Of Failure: Recognizing And Avoiding Error In Complex Situations
- The Future of Decision Making: How Revolutionary Software Can Improve the Ability to Decide
- Strangers to Ourselves
- Peak
- The World Beyond Your Head: On Becoming an Individual in an Age of Distraction
- Flow
- So Good They Can't Ignore You
- How Not To Be Wrong: The Power of Mathematical Thinking
- Drive
- How To Read a Book
- A Small Matter of Programming: Perspectives on End User Computing
- Made to Stick: Why Some Ideas Survive and Others Die
- Stumbling on Happiness
- Natural-Born Cyborgs: Minds, Technologies, and the Future of Human Intelligence
- Intelligence and How to Get It: Why Schools and Cultures Count
- The Curse of the Self: Self-Awareness, Egotism, and the Quality of Human Life
- The Mind is Flat
- Switch: How to Change Things When Change Is Hard
- Calm Technology: Principles and Patterns for Non-Intrusive Design
- Deep Work: Rules for Focused Success in a Distracted World
- Decisive: How to Make Better Choices in Life and Work
- Essentialism: The Disciplined Pursuit of Less
- Waking Up: A Guide To Spirituality Without Religion
- What Intelligence Tests Miss: The Psychology of Rational Thought
- Reinventing Discovery: The New Era of Networked Science
- The Man Who Lied To His Laptop
- Your Brain at Work
- The Signal and the Noise
- The Checklist Manifesto
- Superforecasting: The Art and Science of Prediction
- Nudge: Improving Decisions About Health
- Mindware: Tools for Smart Thinking
Log (follow via atom, email or twitter):
- 0001
- 0002
- 0003
- 0004
- 0005
- 0006
- 0007
- 0008
- 0009
- 0010
- 0011
- 0012
- 0013
- 0014
- 0015
- 0016
- 0017
- 0018
- 0019
- 0020
- 0021
- 0022
- 0023
- 0024
- 0025
- 0026
Contact:
- email - jamie@scattered-thoughts.net
- github - jamii
- atom feed - scattered-thoughts.net/atom.xml
- mailing list - tinyletter.com/jamii
- twitter - sc13ts