Skip to content

Commit c93babd

Browse files
author
Steve Krouse
committed
## The rabbitholes never end!
* TOC {: toc } ### Artist-Centric Programming Tools Friday night, Twitter sent me a notification to look at this tweet: <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr"><a href="https://t.co/nqIwhoOc39">https://t.co/nqIwhoOc39</a><br>Recording of our presentation on Artist-Centric Programming Tools at <a href="https://twitter.com/hashtag/chi2018?src=hash&amp;ref_src=twsrc%5Etfw">#chi2018</a></p>&mdash; Jennifer Jacobs (@jsquare) <a href="https://twitter.com/jsquare/status/997267468774092800?ref_src=twsrc%5Etfw">May 18, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> First of all, I'm amazed and super grateful that Twitter was smart enough to let me know about this. I only got part-way into [the thesis](http://web.media.mit.edu/~jacobsj/resources/jjacobs_dissertation_final_optimized.pdf), but I'm pumped to finish it. I got distracted by one of her references, InterState... ### [InterState](http://interstate.from.so/) In [an earlier entry](http://futureofcoding.org/log#thoughts-for-next-week), I wrote: > how do Facebook’s Origami, CycleJS devtools, and statecharts somehow fit together? This protoype seems to answer that question! I was so excited that I [sent it over to the StateCharts community](https://spectrum.chat/statecharts?thread=535444a5-1743-4124-b767-ed7b490db7ec)! ### Finished re-watching Tangible Functional Programming Really wonderful! I missed the beauty here in the first watching. Notes [here](/nodes/conal-elliot). ### Some interesting links I found along the way: * [Concur - a new FRP library](https://github.com/ajnsit/concur) - Found by searching "Elm Fudgets" after reading about [Fudgets](http://www.cse.chalmers.se/~hallgren/Thesis/main.html#tutorial) on Conal's reccomendation. * [Forms/3](http://web.engr.oregonstate.edu/~burnett/Forms3/forms3.html) - I've heard of this before but checked it out after seeing it referenced by Conal, and it's cooler than I remember. * [Links Lang](http://links-lang.org/) - I found this after re-reading ["What next?"](https://graydon2.dreamwidth.org/253769.html) by Graydon Hoare. So cool! Unifies all layers of the stack into one language. Excited to check this out soon! ### Open problems as of 5/21/18 As I was falling alseep last night, I thought about the core problems with existing languages: 1. Redux, Elm, and CycleJS are a pain to code in. Small changes require big refactors. More importantly, emitting actions that can edit state in any way feels similar to the global mutable state we started with, that Andre Staltz argues against in [his arrow post.](https://futurice.com/blog/reactive-mvc-and-the-virtual-dom) 2. IO (and async) in an elegant way. Monads and streams kinda stink and feel imperitive the same way Redux does. ([Conal agrees.](http://conal.net/blog/posts/can-functional-programming-be-liberated-from-the-von-neumann-paradigm)) 3. In order to build a solution to these problems, it also needs to be somehow inter-operable with existing web frameworks. Relevant questions include whether its interpreted or compiled, etc, etc. 4. Another open questions is what the backend should look like in order to handle authentication, permissioning, persistance, etc. 5. Another open question: if you want to add phsyics to an object in your code, why not add the equations from your physics class to your program? In other words, how mathmatical and high-level can we get? What's the highest-levle we can get and still have something computable (with good performance) at the end? Additionally, can we make a declarative langauge that's readable and debuggable? (The Seymour Papert's distinction between LOGO's first-person `FORWARD 1, RIGHT 1`, and math's third-person `x^2 + y^2 = z^2`, and how they are really just two sides of the same coin via the derivitive feels relevant here.) 6. Soundness of the type-system from a Scott, Strachey, and Elliot perspective also feels relevant here. I don't want leaky or infinitely-complex abstractions. I'm not even sure if these problems are truly problems, or just things I don't yet understand. Yet, it feels very relevant to continue down the Conal Elliot, FRP rabbithole. I hope that the more I understand Elliot's and (also Hudak's Arrowized) FRP, the more I'll be able to explain why I dislike Redux, Elm, and CycleJS. (Yet, I am a bit nervous that I won't like *any* implementation of FRP out there. What then?!) ### Todos as of 5/21/18 I still haven't found a better way to manage these than listing them every log entry. Here are the remaining ones: * Prototype TodoMVC in [InterState](http://interstate.from.so/), and read the paper, and reach out for a conversation * Finish reading [Jennifer Jacobs's Dynamic Drawing](http://web.media.mit.edu/~jacobsj/resources/jjacobs_dissertation_final_optimized.pdf), and reach out for a conversation * Edit (or throw out) [plan v6](https://github.com/stevekrouse/futureofcoding.org/blob/3821ba9d0ad65a7f6aaea583be8283aba16558e5/plan.md) * Hareactive * Simon Friis Vindum, including [Let's reinvent FRP](http://vindum.io/blog/lets-reinvent-frp/), and possibly reach out for a conversation * [Facebook Origami Community](http://futureofcoding.org/log#facebook-origami-community) * Stratchey denotational design * Conal's Denotational design with typeclass morphisms, Fran, and basically everything he's done * [Verlet](https://twitter.com/stevekrouse/status/987339448064053249) and [ConstraintJS](https://twitter.com/coreload/status/989313738539909120) * Sean McDirmid (and [these](https://llk.media.mit.edu/papers/archive/ch-phd.pdf) [papers](https://www.cs.colorado.edu/~ralex/papers/PDF/Conversational_Programming.pdf) he referenced) * Reach out to Jonathan Edwards * make a better system for todos, things-to-research (FoC Research label in Inbox), ideas-to-ponder-on (FoC Thinking label in Inbox), projects/blogs-to-consider-doing
1 parent 01fa4fc commit c93babd

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

notes/conal-elliot.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ title: Conal Elliot
1919
* Precision forces you to be honest about your simpliciy and adequcy. Otherwise it might be more complex. (CAN I USE THIS TO ARGUE REDUX IS THE WORST?)
2020

2121

22+
## [Tangible Functional Programming](https://www.youtube.com/watch?v=faJ8N0giqzw&feature=youtu.be)
23+
24+
Functions as boxes and values as flowing across arrows:
25+
* "It's an inherently first-order visualization. In other words, the visualization itself makes a hard visually syntactic distinction between functions and values. Ouch! What's great about functional programing is that functions are values..."
26+
* "... [with] visual arrows, with every composition, you get something more complex than what you had before. Complexity grows and grows and grows. Visual langauges are very sparse, rather than a dense notation. So pretty quickly you get swamped... You use up a lot of space not saying very much."
27+
28+
"Fudgets is a FP library done in Haskell by a couple of guys at Chalmers. Boy, almost anything interesting that's done with user interfaces and functional programming has something to do with Fudgets. It was an incredibly rich dissertation."
29+
30+
## [All FRP Blogs](http://conal.net/blog/tag/frp)
31+
32+
I skimmed a few of these, but they were confusing. Will need to come back at some point and finish...
33+
34+
2235
<script>
2336
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
2437
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

0 commit comments

Comments
 (0)