Skip to content
Permalink
Browse files

## 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
  • Loading branch information...
Steve Krouse
Steve Krouse committed May 20, 2019
1 parent 2f948de commit d1afccb60a40b06c3721ac1ca75a351c68b7e06c
Showing with 229 additions and 0 deletions.
  1. +2 −0 drafts/statement.md
  2. +125 −0 notes/flight-5-15-19.md
  3. +39 −0 notes/jonathan-edwards/05-11-19.md
  4. +63 −0 notes/tudor-girba-5-20-19.md
@@ -127,6 +127,8 @@ There is no *creating*. From the first valid expression you put together, it's m
-------------------------

## Questions

Let's build a community chat app. Let's start as simply as possible:

1. Displaying a single message `Message -> HTML`
@@ -0,0 +1,125 @@
---
title: Flight Notes 5/15/19
---

# Flight Notes 5/15/19

\t ->
\mouseStreams ->
\keyboardStreams ->
\cameraStreams ->

\cpu?? ->
\screen?? ->

Abstract over hardware
Logical, mathmatical relationships
Plug and play able (de and re composable)

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
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

Assumptions:
- start, stop
- CPU's, RAM, filesystem, battery power
- screen, mouse, keyboard, etc
- sequential evaluation
- mutability
- instantaneous RAM access and maths

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.

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.)

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.

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

Motivation is expressivity. Unleashing the potential of currently-unexpressable thoughts.

Research 3 hours every morning
3 hours lunch, email, run
2 hours work

Need to find a way in 2 hours per day to earn increasing amounts of money.

5*2*52*175 = $91k pre tax money

Increasing hourly rate can get me to

5*2*52*400 = $208k pre tax money

Another way is PE consultant for IT shit like Dan Shipper suggested

Ideally aligned with mission

Build podcast / community into business, paywall or bigger Patreon (10k * 12 = $120k pre tax)

Consulting with VC firm on emergent technology, maybe even publishing research

Getting grants or sponsorship for research

Going into academia

Starting a nonprofit research lab

----

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.

works with polygot hardware devices via adapters.

The bottom most layer is the theoretical semantics, then the C code (or whatever) that runs the first supervisor and adaptors.

Initially the supervisor has the simplest UI of just accepting pre configured semantics and running it.

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.

Metaphors:

Turing machine, hindley milner --> semantics that will be way to verbose on paper like FRP but also the hardware input and output stuff

Low level operating system, C compiler, language interpreter --> piece of code to run on specified hardware, hooking up relationships

text editor --> Interface for constructing code

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)

High level OS interface --> many different ways of constructing the base UI

Apps --> de- or partially- hydrated functions/expressions from hardware to hardware over time (all interfaces above low level hardware are apps/expressions)

--------

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.

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.


----

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? (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.)

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?

----

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.

---

Not expressivity over computation but over machines: expressivity of machines.
@@ -0,0 +1,39 @@
---
title: JE Meeting 05/11/19
---

# JE Meeting 05/11/19

* dangerous enough to be suppressed
* 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
* community organizing, VC pre-seed?, recruiting, sponsorship, donations, conferences (switching from Slack)
* might be something there, don't dismiss this
* 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
* 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
* and it seems to be working, and people are coming in and asking for more of it, strong signal that it's working
* lots of strategic questions of how to do it,
* recruiting angle a la recurse center but this is tough going
* 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
* dave thomas of OTI and YOW! would be the perfect person to talk to about this. really good guy


* approach is starting from point A and here's where I got to and here's what I don't understand
* it's not one grand narrative yet, it's 2-3 vignettes, the connections will arise later
* 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
* the FRP of editing of code is very fruitful field and at an interesting boundary point of PX and PL
* 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
* JE: capability model people, Mark Miller, now at a smart contract place, E language http://www.erights.org/
* but first enable good things and then disable bad things
* 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
* JE: the approach you want to take needs to solve this problem, so it's a good chunky problem to solve
* 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
* 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?)
* JE: look at paul's and cyrus's work and propose what you want to do
* JE: have a meta level where you have the Type type of all types in the base language
* we both agree that closures are an editor feature, not language feature
* JE: the vision is the 3 year plan and now let's pick a problem to start
* 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.
* 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
* JE: i want a better way than AST editing
* not like if statement is a node and if and else --> subtext
* JE: the key vision statement should be extracted and put in /about
@@ -0,0 +1,63 @@
---
title: Tudor Girba Call 5/20/19
---

# Tudor Girba Call 5/20/19

* all little prototypes in separate places. very different effort than system
* at what date would a working system be acceptable?
* me: 10 or 20 years
* him: 10 isn't so far. 20 is
* they use moldablity (instead of malleablility) because it's more google-able
* they aren't defining what it is to allow all sorts, like blocks
* they want to allow others to build prototypes on their platform so they aren't prototypes
* PX is focus on programmer. they are DX (develop-*ment* experience)
* there should be no place between the end-user and programmer
* spreadsheets have a hard black box boundary
* they start with low level developer world and add user stuff, because developer has to deal with all details
* "programming sprinkled on top"
* always you need a thesis at any given time so you know where you are
* 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.
* 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
* needs to be clear, maybe contrarian
* 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
* example of his thesis: systems are specific so the development must be (there is no other way) customized.
* he has a method: demo driven design
* [http://demodriven.com/](http://demodriven.com/)
* he discovered working with researchers
* humane interface chapter: locus of attention
* we cannot do multiple things at same time, so subconscious does things
* but hard to bring back to consciousness, hard to reason about
* issue with research: you're doing/reading same as everyone else so little chance of producing something new
* make all assumptions you are reading explicit is a great trick to get feedback
* demo the thesis once per week for years: find a story and show it as concretely as possible to deal with details
* 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
* ask people for their thesis at next conference I go to
* he will be at CurryOn
* ask people if they enjoyed the last 6 months, partially because papers leading up to it don't really gel/mesh together
* thesis is similar to writing test first
* you can always change test
* at any given moment you have assertion that can be true or false
* most people write assertion at very end
* ideas for thesis
* modularity / composability
* something with fp
* color picker changer
* what about changing parts inside the color picker?
* Tudor: GT is the platform in the world for this now
* single render tree
* editor/environment is a language (can be programmed)
* they have a reactive engine (graph dependencies, infinite loop issues)
* GT
* all remote
* no meetings ever
* people work as much they want and on anything
* they don't even have a backlog
* how do they synchronize?
* any synchronization system is a bottleneck
* rely on eventual consistency
* their issues on github tell a story
* 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
* the story of what they are doing is an engineering product
* different than MVP
* not to validate/invalidate but find what is missing

0 comments on commit d1afccb

Please sign in to comment.
You can’t perform that action at this time.