-
Notifications
You must be signed in to change notification settings - Fork 54
Commit fa7a4a7

Steve Krouse
## Mid Nov 2018 Many Thoughts
* TOC
{:toc}
### SPLASH 2018 recap
I normally don't like to travel but this trip was possibly the best thing I've had to travel for in my life. I'm very excited to do more things like this, maybe a couple times per year.
#### Internet friends IRL
I've been referring to this period of my life as my "Twitter Friends Phase" because I am making so many friends and then I also get to see them in person. Just in last week in Boston alone, here are all the amazing people I got to spend time with:
Will Chriton, Joel, Jonathan Edwards, Ravi, Brian, Cyrus, Glen, Sean McDirmid, Paul Chuisano, Geoffrey Litt, John Maloney, Charles Roberts, Chris Granger, Eyal Lotem and Yair Chuchem from Lamdu, Roben Kleene, Daniel Moon, the ReScala team from Technische Universität Darmstadt (Ragnar, Pascal), Josh Horowitz, Roly Perera, Caleb Helbling, Evan Czaplicki
Sadly I only have one photo from the event. I should do better next time!

#### LIVE 2018
I have trouble with lectures. I'd much prefer sitting at home in my sweatpants, listening at 2x speed and bouncing if it's not for me right now. However, LIVE 2018 was one of the best days ever, not in spite but *because* it was a day full of mind-blowing demos one after another.
I recorded them on my phone and uploaded online to a lot of thank-you's. The Bootleg page had a fun run, including Jeremy Asheknas's transcript which landed on the front page of HN for the day (not when I posted it, but when he posted it a few hours later).
### Next Research
I really have two very interesting directions to go in: making FRP experience better, or expanding the FRP universe to multi-node. We choose FRP experience for now, but I'm thinking about the other thing on the side.
#### p4 11/14/18
(Tracked at #86)
The goal is to submit this work to \<Programming\> in Feb and a good title for the PX workshop (says JE) is "FRP eXperience".
There are a few different levels here:
* the abstraction / code
* the streams, including data and how they fit together
* the output UI
##### Infinite canvas drawings

##### Other tools for inspiration
* WYSIWYG hybrids such as Sketch-n-Sketch
* Aprt.us, which would be a more visual language. Key question is how to do higher-order & cyclic, and other abstractions
* Facebook Origami
* Lamdu/Luna/Dark and all the projectional editors
* principle - design tool with timeline editor
* framer
##### Worst parts of Reflex/Haskell
But then I thought: let's focus on the really key issue here. What's the highest-leverage improvement to be made? What's the *worst* part of using Reflex/Haskell now? In the shower note on the right below, it says:
1. feedback loop: knowing if the syntax is right, if the types make sense, what the code I'm looking at *is* from both a type, data, and UI perspective
2. knowing what's possible (syntax, API, types)
##### p4 prioritized features
1. With this framing, a quick compile time (or intepreter time) could be key. Reflex seems to take 4+ seconds. Can I do sub 1? Or faster? How about hot reloading?
2. Great docs, autocomplete, type annotations everywhere
3. Automatic plumbing: can we semi-automatically lift transforms inside monadic contexts? Ditto for automatic type coersion plumbing like int to string, etc
4. Stream visualization, including how streams make other streams, the shape of streams, and also the data for each stream
5. (Bi-directional) Direct manipulation of UI

##### Implementation
JE send me an email:
> Can you implement your FRP eXperience using FRP, and apply it to itself? That might be challenging, but would also be very impressive. It will be seen as a limitation if it can't apply to itself, although that might be unavoidable in the first phase. But I think that at the very least you need to implement it in some FRP framework to avoid the charge of hypocrisy.
My response: The only implementation of the FRP I argue for in my paper is Reflex/ghcjs. It doesn't exist in PureScript, Elm, F#, etc. Turns out laziness makes it a lot easier to implement. My next experiment is to try to do it in JS with CycleJS. I've tried this in the past. It's not easy -- it's not built for this use case -- but it seems possible, even cycles. More to follow...
* I did a very naive implementation of streams stuff in JS here: https://codesandbox.io/s/81225lrop2
* It'd probably be better to build off cyclejs. Over a year ago I tried to do something similar so maybe I can start there? https://codesandbox.io/s/xlrynkqoqp Inspecting the types of streams is key. Maybe I can use the cyclejs devtools and/or augment them somehow. Could typescript or something similar help me encode the types of streams of streams of streams? Could monaco help with autocomplete suggestions?
Some other ideas for building this:
* racket turnstule dsl for building typed langauges
* L. Kats and E. Visser. The spoofax language workbench.
* C. Omar. Reasonably Programmable Syntax. PhD thesis, Carnegie Mellon University, 2017.
* Build a JS interpreter with laziness based on [Stephen Diehl's work](https://futureofcoding.org/log#stephen-diehl-lunch)
#### Cloud FRP 11/14/18
(Tracked at #85)
* At SPLASH, I was really excited to find [ScalaLoci](https://scala-loci.github.io/) which was about placement types of reactive programming in Scala. Very related to this work. I need to peruse their Related Work section for more details.
* I found a way to make sense of reading (which I was having trouble with above). All data is "public" but by default anything you do is encrypted so only you can read it. You can also encrypt it with others' private keys if you want them to have access. We'd probably want to make who can have access be a `Behavior` so that we can change this if we want to revoke access.
* Eventually, the next step here will be implementing this, probably in Haskell
#### Name ideas 11/14/18
Now that I'm clear I am building a system, and not just producing research, I am thinking on a name. Here are some themes it could embody:
* malleability
* conviviality
* casual
* customizability
* cooperation
* denoational
And here are my favorite names of the moment:
1. Potluck
2. viv
3. Stride (probably can't do because there's already a similar-ish thing)
And here's what Twitter thinks:
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Preferences on potential new programming language name..?</p>— Steven Krouse (@stevekrouse) <a href="https://twitter.com/stevekrouse/status/1061441377890942976?ref_src=twsrc%5Etfw">November 11, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
#### 2019 Conference deadlines
- \<Programming\>: Salon de Refuge (Jan 7, April 1) Genoa, Italy
- \<Programming\>: PX/19 (Feb 1, April 1) Genoa, Italy
- PPIG (June-ish, Aug) UK
- SPLASH: Onward! (mid-April, end-Oct) Athens, Greece
- SPLASH: LIVE (June/July, end-Oct) Athens, Greece
### Possible Dec 2018 Re-group Projects
I got this project started a year ago as fast as possible, and it seems like now-ish is a good time to regroup a bit and work on a few upgrades... Maybe I'll set aside Dec in do some of these things...
#### Meetups more a thing
It seems like there's interest in hosting/attending these in lots of cities, and with a bit of effort (a website with guidelines) we can have them in a bunch of cities. I can do London and maybe New York, Caleb Helbing has been talking about starting for Boston, Amjad Masad (of Repl.it) says he can take SF...
#### Branding
* Amjad suggested that a cool logo could go a long way. I actually had a dream a night or two ago about making the logo a interesting color blue...
* Relatedly, the webiste styling could use an upgrade, a color scheme, top nav, footers, make it clear I accept pull requests on github, comments on pages
* The podcast could really use intro and outtro music
* Change the Slack URL to futureofcoding.slack.com, and make a doc explaining channels (maybe fix this up a bit) with descriptions and threading
#### Re-organize systems
* This log system is a bit janky (too much git integration, adding date to headers, hashtag based system could be nice for collecting for topics, todo system could be better than constant appending)
* Jekyll seems simple but is actually quite complex and I've found it to be a nightmare to get things the way I want. Maybe I switch to a different platform. Maybe I slowly roll my own static site generator. Maybe I do it on now.sh...?
* Especially now that Google Inbox is dying, I need to get my FoC research + FoC Thinking lists out and into another system
* Relatedly, Github Issues could use some love. Potentially I could move everything here, and then come up with a better input mechanism to github issues...
#### Sustainability
* I have had a number of people strongly encourage me to set up a Patreon so they can support my work. This is terribly exciting! Top priority.
* Here's a probably silly idea: a future of coding job board. A place where people in the community can connect with companies in the community. Maybe if it gets big enough, companies can sponsor it to get listed higher?
### Todos 11/14/18
* Dec regroup projects (above)
* p4 storyboards (maybe 2-3 totally different takes, shallow, brainstorming mode)
* schedule JE podcast in late Nov1 parent 9905ea0 commit fa7a4a7Copy full SHA for fa7a4a7
File tree
0 file changed
+0
-0
lines changedFilter options
0 file changed
+0
-0
lines changed
0 commit comments