Skip to content

Commit d1afccb

Browse files
author
Steve Krouse
committed
## May 22, 2019
* TOC {: toc } ### 5/20/19-5/24/19 Schedule I've been noticing over the past couple of months that my stated priorities don't match how I'm spending my time: I say I prioritize my research but I end up doing it last, if at all. The obvious reason may be that I'm not getting paid for it, so I don't take the deadlines as seriously. But another reason is that I was doing the work *after* my paid work, so it sometimes never happened. Inspired by my friend Dan Shipper, who's been successfully writing a book for ~4 hours every morning and doing paid consulting work in the afternoons, I am going to go (back) to a schedule of research in the mornings. I am also going to go back to trying to plan out my week on the calendar to ensure I am spending the right amount of time on various projects. This week: * research: 20 * woofjs: 3 * TCS curriculum: 3 * community: 2 * podcast: 3 * meetings: 5 * french: 2.5 * running: 5 * inbox & backlog priorities: 2 * frc: 0 * investing: 0 * dark: 0 As you can see, I'm trying to list out all of my projects every week even if I choose not to spend time on them. It's harder but I think possible to run 11 small projects. I want to invest some time this week in considering a better platform for managing that than Workflowy, but I don't want to get dragged into making one myself... Waking up at 10am this morning was really hard with jet lag but I did it! Tomorrow will try for maybe 9am but that sounds hard... Maybe I will get to bed before midnight... ### JE Meeting 5/11/19 [JE and I met last weekend](/notes/jonathan-edwards/05-11-19) (not this past one) to discuss my research statement and next steps. The summary: 1. I should maybe consider becoming more of a community organizer (conference organizer, recruiter, VC, etc), especially because I'm getting positive feedback in this direction. Keep noodling on it. 2. The vision-y research statement I have so far is pretty good as a vision statement. It should be incorporated into [/about](/about) probably. 3. What we need now is for me to pick a problem to sink my teeth into for the next 3-12 months. We mostly discussed the immutable FRP semantics of editing code. Next steps here are reading more about Cyrus's Hazel and Paul's Unison and reaching out to both with questions. However, I don't want to forget [the other 7 interesting questions I came up with in writing this statement](/drafts/statement#questions)! Maybe it would make more sense to start with one of those. ### Cyrus & David Meeting 5/14/19 Lucky for me, Cyrus and David came to NYC last Tuesday and let me explain my immutable FRP semantics of editing code shtick and gave me feedback on it for an hour! The meeting's notes included: * macro hygiene * Sarah Chasins has interesting work on structued editing * The Use, Misuse of Automated Software Refactoring The main takeaways were: * Look into how IPFS and Unison deal with mutability and identity over time * Be clear about *where* (at what level) change happens * values that change * definitions that change * types that change * What is the type of "the world"? * How do you create new expressions? ### Flight Notes 5/15/19 I used to have bad back plane on airplanes (until I mostly mastered it with the Alexander Technique) so I treated myself to junk food and movies. However this flight from NYC to London I ate no junk food and watched no movies. I did work the entire time! I spent a couple hours [taking notes on my research](/notes/flight-5-15-19). It was fun and productive. I meant to answer JE's and Cyrus/David's questions about my immutable FRP semantics of editing code but it instead morphed into a session where I daydreamed about what a truly expressive *operating system* could look like. Some highlights: * Motivation is expressivity. Unleashing the potential of currently-unexpressable thoughts. * Not expressivity over computation but over machines: expressivity of machines. * All hardware are functions from power over time to something. * The easiest way to snip the recursive knot would be an allocator that runs on a separate array of hardware which can direct the inputs and outputs. (Of course it in turn could be controlled by another allocator so it's turtles all the way down.) * Apps are de- or partially- hydrated functions/expressions from hardware to hardware over time (all interfaces above low level hardware are apps/expressions) * A thing is itself. It don't change. Things in the world change. * Counting clicks: Persist in X place for Y time the count of events produced on merge Z hardware, connected to via A connections. * Could I start an OS company (almost as risky as basic science) for this similar to Android or Red Hat? Some questions: * What about mutable identity? Really about referencing, resolution * What about social applications? Model the cloud as a series of high availability hardware devices? * What about Blockchain or peer to peer like dat or ipfs? Can people put $$ into the types of what resources cost which you can authenticate via cryptocurrency? * Can we give variable resources to apps/expressions depending on their output or resource consumption? Loopy! * Compare and contrast to Dynamicland, Smalltalk, STEPS * Related to effect types? ### Tudor Girba Call 5/20/19 I just got off the phone with Tudor, who was very kind to take [over an hour to hear my very messy thoughts about what I'm working on and give me advice](/notes/tudor-girba-5-20-19). Some highlights: * Because it's so easy to get lost in this field, he recommends I have a thesis that isn't so narrow that it's boring, but also not so wide that I can't defend * There's a big difference between a vision / mission, and a thesis * He has a method he recommends: [demo-driven development](http://demodriven.com/) ### Thoughts on $$ I've been thinking a bit about the financial sustainability of my work. Currently I achieve this by living super cheaply but what if I want to support a family one day? The obvious first step I could do is stop the podcast / community organizing and spend that time on more consulting work. (Or stop my personal research for consulting time and keep doing the podcast and community organizing.) That, mixed with charging more for higher-paying clients, would allow me to earn a lot more. Another idea is that I could change the financial structure of my work, such as start recruiting, working with venture investors to start companies in this space, or start a startup of my own. However after speaking with my girlfriend, we decided to hold off on all these discussions for the time being. The plan is to continue "living cheaply" until the end of 2020 at least, which gives me another year and a half to focus on my research, podcast, community organizing, strange self-directed PhD thing. This is exciting! (Speaking of the podcast, I really want to release more episodes! I will hopefully release Cyrus this week, and make time for editing a bunch more this month.) ### The Online Community Showdown Probably 30 people (including myself) have complained about Slack as the platform for the Future of Coding community. So the question is: what do we do about it? It's important to first acknowledge that there is no perfect platform. There are always trade-offs. There is no way to make everyone 100% happy, particularly for a large group now approaching 500 total users (closer to 114 monthly active members, which I found by going to upgrade my Slack because they only charge you for active members). In other words, there's significant risk that after moving to another platform, people want to move back or want to move again to yet another platform. One thought I had would be to make it a bit of a "competition" where I construct how to "pitch" an alternative platform so people can argue for where we should go, and give a date on which a vote will take place. And you can only vote if you participate in the showdown to a certain level. [The purposes of the Slack I have on the readme are](/slack-readme#purposes): > 1. Sharing of ideas, debate, feedback, constructive criticism, and collaboration > 2. Encouragement, high fives > 3. Organizing IRL meetings and meetups Questions: 1. Can a forum like Spectrum or Discource work? 2. What about a [garden (vs a stream)](https://hapgood.us/2015/10/17/the-garden-and-the-stream-a-technopastoral/) like [Are.na](https://www.are.na/) or Notion? 3. What about various groups on meetup.com for meetups? ### Unfinished half-thoughts & todos 5/20/19 I have a lot more that I want to think and write about, so I will put those things here for tomorrow morning: * Reach out to Carl for coaching or do by myself: ask why, motivation, priorities, and see what that is and let others fall away to make room for that project * Think about research abstract vs concrete. I don't want to solve a small problem but I do need a more specific thesis or angle than I have now. I also want big thoughts and lots of reading. And broad reading like mcluhan and alan kay / curious reader / risd class stuff. Type theory (books I have in kitchen) too but not just papers from recent conferences. * put vision statement on /about * JE, immutable editing + cyrus + unison + ipfs, also other 7 questions * reach out to talk to Paul C * consider helping REBLS with publicity
1 parent 2f948de commit d1afccb

File tree

4 files changed

+229
-0
lines changed

4 files changed

+229
-0
lines changed

drafts/statement.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ There is no *creating*. From the first valid expression you put together, it's m
127127
128128
-------------------------
129129

130+
## Questions
131+
130132
Let's build a community chat app. Let's start as simply as possible:
131133

132134
1. Displaying a single message `Message -> HTML`

notes/flight-5-15-19.md

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
title: Flight Notes 5/15/19
3+
---
4+
5+
# Flight Notes 5/15/19
6+
7+
\t ->
8+
\mouseStreams ->
9+
\keyboardStreams ->
10+
\cameraStreams ->
11+
12+
\cpu?? ->
13+
\screen?? ->
14+
15+
Abstract over hardware
16+
Logical, mathmatical relationships
17+
Plug and play able (de and re composable)
18+
19+
I have a bunch of inputs (via hardware), such as camera, mouse, touchscreen, cpu units, internet connection, Bluetooth, battery (power or just level?), fingerprint sensor, accelerometer
20+
I have a bunch of functions I can saturdate with hardware to produce all sorts of outputs, which I can choose to direct into outputs, such as screens, speakers, vibration, camera light
21+
22+
Assumptions:
23+
- start, stop
24+
- CPU's, RAM, filesystem, battery power
25+
- screen, mouse, keyboard, etc
26+
- sequential evaluation
27+
- mutability
28+
- instantaneous RAM access and maths
29+
30+
Good design would allow us to be as abstract as possible about hardware so as to allow easy substitution. For example, if you want mouse clicks, you can say Event (x,y) so it works with mouse, touchscreen, etc. If you want Behavior (x,y), you can similarly constuct it from a default (x,y), the next finger drag, and hold until the next finger drag (or some such computation over tough screen input). I'm not sure how we'd scaffold such type conversions.
31+
32+
All hardware are functions from power over time to something.
33+
34+
The easiest way to snip the recursive knot would be an allocator that runs on a separate array of hardware which can direct the inputs and outputs. (Of course it in turn could be controlled by another allocator so it's turtles all the way down.)
35+
36+
Can we handle all the explicitness through clever editor UIs with smart defaults that are expandable? It must be unbelievably easy to discard parts of an output or a type and also to covert between types (plumbing); live values always at every computation will help with this.
37+
38+
A thing is itself. It don't change
39+
Things in the world change.
40+
41+
Counting clicks.
42+
Persist in X place for Y time the count of events produced on merge Z hardware, connected to via A connections
43+
44+
Motivation is expressivity. Unleashing the potential of currently-unexpressable thoughts.
45+
46+
Research 3 hours every morning
47+
3 hours lunch, email, run
48+
2 hours work
49+
50+
Need to find a way in 2 hours per day to earn increasing amounts of money.
51+
52+
5*2*52*175 = $91k pre tax money
53+
54+
Increasing hourly rate can get me to
55+
56+
5*2*52*400 = $208k pre tax money
57+
58+
Another way is PE consultant for IT shit like Dan Shipper suggested
59+
60+
Ideally aligned with mission
61+
62+
Build podcast / community into business, paywall or bigger Patreon (10k * 12 = $120k pre tax)
63+
64+
Consulting with VC firm on emergent technology, maybe even publishing research
65+
66+
Getting grants or sponsorship for research
67+
68+
Going into academia
69+
70+
Starting a nonprofit research lab
71+
72+
----
73+
74+
Starting a OS company (almost basic science). Could do andriod model of open source but paid for liscening or collaborating with OS or hardware companies.
75+
76+
works with polygot hardware devices via adapters.
77+
78+
The bottom most layer is the theoretical semantics, then the C code (or whatever) that runs the first supervisor and adaptors.
79+
80+
Initially the supervisor has the simplest UI of just accepting pre configured semantics and running it.
81+
82+
We'd then bootstrap the interface for expressing semantics via the supervisor itself. This would allow it to be later modified by others - we would expect there to be some really interesting innovation at this layer by the community, probably consolidating around various "patterns" or "standards", so it'd be important to epouse the culture of chasm crossing as key no matter our perspective.
83+
84+
Metaphors:
85+
86+
Turing machine, hindley milner --> semantics that will be way to verbose on paper like FRP but also the hardware input and output stuff
87+
88+
Low level operating system, C compiler, language interpreter --> piece of code to run on specified hardware, hooking up relationships
89+
90+
text editor --> Interface for constructing code
91+
92+
bash shell --> interface for specifying hardware into and out of code (likely integrated with the one for constructing code, so we have have live values flowing through while constructing)
93+
94+
High level OS interface --> many different ways of constructing the base UI
95+
96+
Apps --> de- or partially- hydrated functions/expressions from hardware to hardware over time (all interfaces above low level hardware are apps/expressions)
97+
98+
--------
99+
100+
A Behavior X must live in some hardware (powered by time power over time) over time, and can be referred to as such over some connection.
101+
102+
Basically in shoving all ugly parts of code to the outer edges so the inner ones can be beautiful. The closer you get to the edges, the uglier things are.
103+
104+
105+
----
106+
107+
What about mutable identity? Really about referencing, resolution
108+
109+
What about social applications? Model the cloud as a series of high availability hardware devices?
110+
111+
What about Blockchain or peer to peer like dat or ipfs? Can people put $$ into the types of what resources cost which you can authenticate via cryptocurrency? (Movie from someone on plane. We can even encode the legal rights somehow so you can show on the blockchain that you have paid the appropriate person for selling the movie to another. Maybe it even requires that you spread around that payment to X others before decoding the movie data for your screen.)
112+
113+
Can we give variable resources to apps/expressions depending on their output or resource consumption? Loopy!
114+
115+
Compare and contrast to Dynamicland, Smalltalk, STEPS
116+
117+
Related to effect types?
118+
119+
----
120+
121+
Hardware devices would like give analog and digital output depending on the device. Default to giving most at edges and then add converters to integrate into a more abstract system.
122+
123+
---
124+
125+
Not expressivity over computation but over machines: expressivity of machines.

notes/jonathan-edwards/05-11-19.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: JE Meeting 05/11/19
3+
---
4+
5+
# JE Meeting 05/11/19
6+
7+
* dangerous enough to be suppressed
8+
* REBLS publicity chair - find out how much work it is (in total it may be a 10 hour responsibility, email lists, tweeting how often and how many times) - only do if not a lot of work
9+
* community organizing, VC pre-seed?, recruiting, sponsorship, donations, conferences (switching from Slack)
10+
* might be something there, don't dismiss this
11+
* has much more leverage than freelancing, as a means of subsistence, could be a viable platform to support you, potentially not having to work hours for dollars
12+
* could have a lot of impact given the internet, and maybe it's better than older models, given how fast you can grow a community
13+
* and it seems to be working, and people are coming in and asking for more of it, strong signal that it's working
14+
* lots of strategic questions of how to do it,
15+
* recruiting angle a la recurse center but this is tough going
16+
* hooking up with VCs has pros and cons. they are always looking for deal streams. probably don't want to lock into relationship with just one. I can set up a seed fund I'm not totally in control of. VC firms also like people that evaluate tech and tech trends for vetting deals
17+
* dave thomas of OTI and YOW! would be the perfect person to talk to about this. really good guy
18+
19+
20+
* approach is starting from point A and here's where I got to and here's what I don't understand
21+
* it's not one grand narrative yet, it's 2-3 vignettes, the connections will arise later
22+
* you discover things along the way, you discover what your research is while doing other things. get a direction and start moving. serendipity happens. don't get paralyzed with super mega agenda. focus on a smaller interesting issue you think you can make progress on
23+
* the FRP of editing of code is very fruitful field and at an interesting boundary point of PX and PL
24+
* JE: anything interesting you are going to have trouble finding people to talk to about. by definition you want this so you are not looking under the lamp post
25+
* JE: capability model people, Mark Miller, now at a smart contract place, E language http://www.erights.org/
26+
* but first enable good things and then disable bad things
27+
* JE: the whole point of writing multiple problems is to pick one. and stick with it until stuck. at any one time you need a focus. the whole problem statement can just be the FRP of editing code. pick the problem for the next couple of months of deep thinking
28+
* JE: the approach you want to take needs to solve this problem, so it's a good chunky problem to solve
29+
* JE: first start with the semantics of what is a program, and what is an edit, maybe take cyrus's, and start without types because this might require a whole lot of machinery that's super research-y, hopefully the type theory falls out of it
30+
* SK: the trap door is a mutable dictionary of names to expressions (TODO wait can I have an expression that allows me to point it at other expressions? what would be the type of this?)
31+
* JE: look at paul's and cyrus's work and propose what you want to do
32+
* JE: have a meta level where you have the Type type of all types in the base language
33+
* we both agree that closures are an editor feature, not language feature
34+
* JE: the vision is the 3 year plan and now let's pick a problem to start
35+
* JE: look at what Paul and Runar have written and go to them with questions. If Cyrus wants to chat, first read his things and give him questions as well and see what he says.
36+
* JE: people don't realize this is a problem because text editors are standard, they don't see it as mutability, and git is trying to make it immutable
37+
* JE: i want a better way than AST editing
38+
* not like if statement is a node and if and else --> subtext
39+
* JE: the key vision statement should be extracted and put in /about

notes/tudor-girba-5-20-19.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: Tudor Girba Call 5/20/19
3+
---
4+
5+
# Tudor Girba Call 5/20/19
6+
7+
* all little prototypes in separate places. very different effort than system
8+
* at what date would a working system be acceptable?
9+
* me: 10 or 20 years
10+
* him: 10 isn't so far. 20 is
11+
* they use moldablity (instead of malleablility) because it's more google-able
12+
* they aren't defining what it is to allow all sorts, like blocks
13+
* they want to allow others to build prototypes on their platform so they aren't prototypes
14+
* PX is focus on programmer. they are DX (develop-*ment* experience)
15+
* there should be no place between the end-user and programmer
16+
* spreadsheets have a hard black box boundary
17+
* they start with low level developer world and add user stuff, because developer has to deal with all details
18+
* "programming sprinkled on top"
19+
* always you need a thesis at any given time so you know where you are
20+
* why is it a "thesis defense"? people will try to attack and invalidate what you are saying. your work can defend a single statement with a verb inside.
21+
* thesis defines a territory and it has to be important enough for someone to attack it. the paper is just the army/evidence to fight for the statement. if the statement is too wide, stretch army too thin
22+
* needs to be clear, maybe contrarian
23+
* how do I give enough evidence to show the vision is attainable? the sharper the thesis, the better I will understand what is missing and how to test it
24+
* example of his thesis: systems are specific so the development must be (there is no other way) customized.
25+
* he has a method: demo driven design
26+
* [http://demodriven.com/](http://demodriven.com/)
27+
* he discovered working with researchers
28+
* humane interface chapter: locus of attention
29+
* we cannot do multiple things at same time, so subconscious does things
30+
* but hard to bring back to consciousness, hard to reason about
31+
* issue with research: you're doing/reading same as everyone else so little chance of producing something new
32+
* make all assumptions you are reading explicit is a great trick to get feedback
33+
* demo the thesis once per week for years: find a story and show it as concretely as possible to deal with details
34+
* when you can't tell story and demo at same time, something is wrong because the system is telling a different story than you are
35+
* ask people for their thesis at next conference I go to
36+
* he will be at CurryOn
37+
* ask people if they enjoyed the last 6 months, partially because papers leading up to it don't really gel/mesh together
38+
* thesis is similar to writing test first
39+
* you can always change test
40+
* at any given moment you have assertion that can be true or false
41+
* most people write assertion at very end
42+
* ideas for thesis
43+
* modularity / composability
44+
* something with fp
45+
* color picker changer
46+
* what about changing parts inside the color picker?
47+
* Tudor: GT is the platform in the world for this now
48+
* single render tree
49+
* editor/environment is a language (can be programmed)
50+
* they have a reactive engine (graph dependencies, infinite loop issues)
51+
* GT
52+
* all remote
53+
* no meetings ever
54+
* people work as much they want and on anything
55+
* they don't even have a backlog
56+
* how do they synchronize?
57+
* any synchronization system is a bottleneck
58+
* rely on eventual consistency
59+
* their issues on github tell a story
60+
* this is how the bug looked before, here's the thing I built to test the bug, and people can relate to that in minutes
61+
* the story of what they are doing is an engineering product
62+
* different than MVP
63+
* not to validate/invalidate but find what is missing

0 commit comments

Comments
 (0)