Agenda
- Where are you in the world?
- In NY ever?
- In finland
- Scuttlebutt
- How's it going?
- How to help?
- Open collective?
- My master plan
- Programming languages
- Prototypes
- Advice on master plan
- People I should talk to?
- FRP for kids?
- Animation
- Reading list?
Notes
-
Make things easier
-
Adding constraints
-
Like Lego
-
Advice on strategy
-
Hardest part is getting traction - Marketing / growth hacking
- Making home page
- README
- "I don't know where early cyclejs users came from" - Things that helped the adoption
- Picking the right keywords, buzz words
- Reactive RxJS Functional VirtualDom - Marketing needs to have a big role
- "How do I deal with people?"
- "How do I get people to understand?"
- Needs to be an early dialogue - Early adopters
- Interested in new stuff
- But ephemeral interest, so need to evolve enough to get next level of developers interested
- Unintended use cases are key, see how people use things - Choose buzzwords to choose target audience
- When you want to make something for everybody, don't market it this way in the beginning
- The late majority doesn't look for things like them. They just follow the early community - Buzzwords not going to help
- Reactive - 2013-2015
- But people realizes that this doesn't mean anything
- Reactive Manifesto - When it was new it was confusing people and they liked it
- FRP - would bring a bunch of Haskellers
- Elm used FRP when Reactive was a buzzword
- But not sure that will help
- Spreadsheets
- AI is a good buzzword
- Stream is a good buzzword
-
How is the world going to be in 10 years from now? - AI could be
- What would be the accessible computing platform for everyone be using AI? - Blockstack could be
-
When choosing a paradigm, there are not that many options -
- http://wiki.c2.com/?ThereAreExactlyThreeParadigms
- Does not exist - requires AI?
- "Please do what I want"
- Turn off the light
- Make it cozy
- Put on a nice movie
- Humans don't like dealing with someone that's pedantic
- Elm is pedantic with British culture: nice when it corrects you
- TODO think about the upsides and downsides of each paradigm
- FP - Difficulty of expressing things in unfamiliar way
- Logic programming - Explosion of search space so things are slow - Precision
- Don't necessarily need AI
- That's logic programming
- The computer could guess what you mean with defaults
- In the future you could guess with AI
- Could also crowdsource these default values
- One option is a conversational
- Chat bot style
- Human programmers are like this currently
- "Expert systems" AI
- For detecting diseases
- TODO figure out why this was abandoned?
- Maybe because you have to add all the questions by hand - Functional programming and logic programming Hybrid
- (Relation is generalization of a function if you allow relations inside functional program)
- Picks some default values
- Maps from output back to input
-
Advice on how I spend my time - First a chaotic period
- Very hacky
- And this is good
- Keep this so you can quickly experiment with ideas
- Try not to make it a process or too formal too early - Make sure you really define a use case
- Make games
- Eve - help companies that have a lot of spreadsheets - Make a hacky tool that maximizes value for that use case and customer - Don't be afraid to make it hacky that delivers value quickly - Use Typescript, not JavaScript
- Will be easier to refactor with a typed language - Spend more time with the problem
- Not with the solution
- This is what the problem is / this is how the problem looks
- Get a shape of it
- Then you'll see what the solution is
- Need more than a vague idea of it
- ** TODO THINK ABOUT THIS**
- It's only after 248 comments they found a solution here
- staltz/cycle-onionify#28 - Make simple things so people can give feedback on small details
-
CycleJS roadmap for next year
-
Move away from functional and reactive buzzwords
-
Abstraction behind: stream graph - Don't even need to say that the nodes are streams
-
Use case for reactive Scratch is there
-
But might take more time
-
Could make this more small
-
Would be able to iterate faster on text
-
But how novel would the library be or just use existing
-
Is this just fran? - Glitch avoidance
- Happens when you do a combine
- Systems need to have an idea of what's "happening at the same time"
- CycleJS doesn't have this
- Provides absolute guarantees everywhere
- But glitches rarely happen when you allow them and there are ways of solving them
- https://staltz.com/rx-glitches-arent-actually-a-problem.html
-
What should I read or look up? - https://ds300.github.io/derivablejs/
- Similar to mobX
- https://mobx.js.org/ - Often described as spreadsheets - Plugging one thing for another - Allow people to change things imperatively
- They do avoid glitches
- Allow you to give "same time" at pragmatic level - http://www.di.ens.fr/~pouzet/bib/chap_lucid_synchrone_english_iste08.pdf
- One of the only dataflow languages
- Recommended from Evan from Elm
- Notion of things happening at the same time: synchronous
-
Conal Elliott - He's solving for good garuntees in 100% of cases - As opposed to 98% like CycleJS - So feels like wasted effort to provide guarantees for 2%
-
Woof vs Scratch
-
There is great respect for Scratch
-
Does blockly exist? - Showed cycle v2
-
Blockly or scratch descibes imperitive with nested commands
-
CycleJS stream graph as IDE - Some parts are not part of the graph
-
Declarative scratch with blockly - Two different tools and you could use them together in a bigger tool
- One is declarative
- One is imperative
-
One of the most important building blocks - ** Scratch-like thing but for evaluation**
- ** Expression editor**
- ** Blockly alternative**
- ** TODO THINK MORE ABOUT THIS**
- ** Is the most important problem to solve now?**
- ** This could improve things for kids by a lot**
- ** Could be used in a lot of projects**
- ** How to build this?**
- ** Do this on SVG**
- ** Can do custom**
- ** SVG and HTML**
- ** Maybe just use React because good error**
- ** CycleJS uses typeerrors**
- ** Elm has great errors** - Elm blockly that writes elm that you teach to kids
- Then from that something else grows
-
Should I work on http://glench.com/LegibleMathematics/? - Symbolic computing - But only useful for math - This but for update functions so it wouldn't look like this?
- Look like Cycle v2
-
Like this https://pumpula.net/foolproof-html/?
-
Compile to cyclejs
-
Typescript? No that would be weird
-
What to work on next?
-
Streamsheets - no, too much unknown
-
Blockly for Elm or CycleJS - Could spend an hour here thinking about how to
-
Expression editor - Legible mathematics - Foolproof html - Thing to go inside every other app I ever made in this space
- Also go inside spreadsheet expressions
- Basically like codemirror but for expressions - Could eventually turn into a blockly alternative
- Which I could then use to make into a UI for cycle or elm or anything
- Need to think about why building elm blockly or cyclejs blockly doesn't work
- Maybe has to do with sequential nature of the blocks vs how they fit inside each other
- Think about how to make this infinitely customizable - Question: is this the highest leverage thing to build now?
- Can always approximate with VBA expressions or like with what aprt.us has - Next steps
- Good extensive googling to see if this exists
- Compile a list of similar things, like aprt.us, google sheets, what numbers on mac does, soulver, etc
- https://github.com/viskell/viskell
- Think about the projectional editor tradeoffs
- Lamdu
- Isomorph
-
FRP WoofJS - Read
- https://ds300.github.io/derivablejs/
- Similar to mobX
- https://mobx.js.org/
- Often described as spreadsheets
- Plugging one thing for another
- Allow people to change things imperatively
- They do avoid glitches
- Allow you to give "same time" at pragmatic level
- http://www.di.ens.fr/~pouzet/bib/chap_lucid_synchrone_english_iste08.pdf
- One of the only dataflow languages
- Recommended from Evan from Elm
- Notion of things happening at the same time: synchronous
- https://www.pyret.org/ - Make some games
-
What to work on this week
-
Getting feedback on master plan and what to work on next
-
Continue developing plans for ideas of things to work on next - Marinate in problem - Think through solutions