It still frustrates me that we can't just interactively bootstrap a self-sustainable programming system from a blank, interactive Unix process with a hex editing interface. Like DEBUG.COM but for the age of the GUI, which you may have realised is around 40 years old by now. I refuse to create what I desire through successive … Continue reading Can We Add Reflection to Machine Code?
Thesis mysteries and frustrations
Ahead of my PhD defence tomorrow, I'm digging out this half-finished draft and getting it posted. At the end of June, I finally submitted my PhD thesis. As the work-over-time curve went up in the preceding months, I became increasingly struck by the sheer open-endedness of the thing I'm writing. Many aspects of writing and … Continue reading Thesis mysteries and frustrations
Musings on Layout, Part 1
Of all the mysteries I've pondered over the years, the "Problem of Layout" is one I've still made little progress on. Imagine a static world: you have to design a poster. You can place boxes and text and images, move them around, and rely on a continuous cycle of feedback until you're satisfied. The poster … Continue reading Musings on Layout, Part 1
Connections between self-sustainability, self-hosting, meta-circularity, and reflection
More thesis headscratchers I have to finally iron out 😦 Warning: personal notes, rambling, stream-of-consciousness even more than usual! Self-sustainability, Unix Paradigm, Large Scope: we start with a text editor T written in language L. We open T's source code in T and make some improvement. We compile a slightly improved text editor T'. The … Continue reading Connections between self-sustainability, self-hosting, meta-circularity, and reflection
What is Explicit Structure?
I really care about three properties in my thesis, and this is the hardest one to nail down. I've satisfied myself on Self-Sustainability and Notational Freedom, but Explicit Structure is very tricky. I'm particularly struggling to define "more" or "less" explicit structure beyond a simplistic data/code split. My intuition for it is a combination of … Continue reading What is Explicit Structure?
A “File” is just a common address space for processes
(Binary) Files are the* common format for inter-process** communication across space and time***. (*) Because they are compacted; the only (uncompacted) alternative has too much risk of insane space cost. (**) Where the relevant part of the "process" is a flat, numerical address space. Things might be very different in a nested or name-based address … Continue reading A “File” is just a common address space for processes
My Two Absolute, Hands-Down Least Favourite Things in Programming
This essay was sparked by me struggling to write my thesis' Background chapter and finding I had to comprehensively explain several concepts. Hopefully some appropriate slice through it will end up in the actual chapter. (Did I get something wrong? Do set me straight in the comments.) As we all learned in Computing 101, volatile … Continue reading My Two Absolute, Hands-Down Least Favourite Things in Programming
Draft Introduction
This is a draft thesis introduction chapter. Some things here may be wrong, badly named, suboptimally written or otherwise not make it into the final thing, but it's an important thing to draft now. When we have an idea for some computer software, and try and make this idea a reality, we are forced to … Continue reading Draft Introduction
Five Heuristics Guiding My Research Interests
(Alternate title: Five Theses Against The State of Programming?) In summary, they are: Premature Commitment delenda est. Implementation, not design, is the bottleneck. Seek the appropriate level of generality. Transcend the ancestral environment. Code is an optimisation of manual change. 1. Premature Commitment delenda est Everything should be malleable and reversible by default; the subtraction … Continue reading Five Heuristics Guiding My Research Interests
What is a Programming System?
It's been a while since I realised that programming isn't inherently about languages. That is, unless you adopt a rather expansive definition of "language" so it includes things like diagrams, sequences of interactions, and so forth. The general effect of programming, i.e. of creating or modifying computer software, is often conflated with the specific means … Continue reading What is a Programming System?