Thoughts on Programm - Reuseability
Hi Jessica!
I just heard your interview here: http://blog.cognitect.com/cognicast/082. Its interesting to hear about your thoughts, as always. I want to share some thoughts about two topics from the interview:
Prezi
I find it very natural that you use that tool. The first time I saw it it created an imidiate reaction about a tool that could be usefull. I mean we have computers which are compared to other (analog) media nealry unlimited. But creating a text file with just endless lines is a weak impression of infinity. Prezi uses a nice mix of 2D/3D perspective. So when I had to prepare a talk, I used it and so were some good and also bad things. For me the flash format is a quite a problem, to upload all your content to the site. To not be really portable. Ultimately this also forbids that you embedd prezis in other prezis. Which if you think about it is absolutely vital, the concept of transclusion. All in all this is not to much off, from ted nelsons vision of Hypertext: xanadoo (https://youtu.be/En_2T7KH6RA?t=213)
So after that of course I looked for alternatives to prezi andi found sozi: http://sozi.baierouge.fr/ Sozi is a single person effort. But version 15 is finally usable for me too! With that you have quite a bit more flexibility since its build on open formats like : SVG, JSON, HTML. The Authoring UI is quite simple but once you get used to the avaiable transformations and mix that with layers avaiable in SVG documents it works great! So if you like prezi you should most definetly give sozi a shot.
On libbits
Do you remember when we had a short discussion with https://twitter.com/silentbicycle on a tool called titanpad.com? I think I dragged you two in to brag about how grat clojure codeq (https://github.com/Datomic/codeq). I didn't try it out (because of datomic) that time. It appears to me that my intent for chat that time and yours to create that lein template circle arround that (similar) problem.
This idea of this kind of resuse is not new, and there are trade offs to be made, I read about it for example here: http://www.joelonsoftware.com/articles/fog0000000007.html
The idea is indeed not new, I have personal Research repository for topics like that, here is what I found so far:
- joe Armstrong erlang ML http://erlang.2086793.n4.nabble.com/Why-do-we-need-modules-at-all-td3546413.html
- McCarthy (S-Expr)
- pchiusano and his Unison efforts http://pchiusano.blogspot.de/2013/05/the-future-of-software-end-of-apps-and.html
- david barbour and his awelon efforts(https://awelonblue.wordpress.com/), he has done alot of technical research, as spend time communicating (see his ML)
- see also gilad bracha on ban on imports (http://gbracha.blogspot.de/2009/06/ban-on-imports.html)
- smalltalk systems also this
from luke palmer, you will love his hand drawings : https://lukepalmer.wordpress.com/2010/07/22/programming-for-a-culture-approaching-singularity/ see his github notes
- Mark Hibberd - facts based dependency managemeent - annex :
-https://speakerdeck.com/markhibberd/towards-annex-a-fact-based-dependency-system-icfp
- no closed world asumptions, dependency costs too much
- introducing new terminology: fact, atom, world
- world changes over time
- zeitgeist observation: camlistore, datomic - clojure codeq, mirage workflow and annex: hash based data store
- queries can be ditributed ( on dep graph) server OR Client
- deeper analytics -> the similarities with datomic, codeq are striking
- morte from gabrielg439 is another very interesting approach which is also quite evolved when it comes to implementation:
- http://www.haskellforall.com/2014/09/morte-intermediate-language-for-super.html
- http://www.haskellforall.com/2015/05/the-internet-of-code.html pandoc for prog. languages!!
- what would the implications for programming languages be? Well they wouldn't have a std. lib: https://twitter.com/natpryce/status/609093048027504642
- I dicused morte and ethereum also with @puffnfhresh and John De Goes
- Did you see by chance Joe Armstrongs talk at strange loop? : http://www.youtube.com/watch?v=lKXe3HUG2l4 (The mess we're in) it discusses some root problems but also propose the solution at a very high level: reducing entropy
- I think this is essential we want to write less code and achive more reuse, we want to reduce entropy!
- So how do we go even further then the above aproaches ( or combine?) Joe Armstrong blogged about this: http://joearms.github.io/2015/03/12/The_web_of_names.html
- ipfs is not primary directed at code but I found its mechanicsm of hashing to be related to the topic : ipfs.io
- finally quite totally another domain which yet implements the idea :ethereum (www.ethereum.org), its a distributed VM model based on blockchain technology, their white paper on github gives more detailed information
- I also dicused morte and ethereum briefly with @puffnfhresh and John De Goes
So thats it all I have to that topic (your lein template for function in pulling), I think there are really interesting ideas and also implementations. I think we will soon reach a critical mass were people have the words to talk about the problem ( reduce the entropy) and also implementations. And this will finally enable simpler, yet more powerfull systems. So when I think about your talk with the complexities represented as bats, it seems we can cut off some those.
Exciting times ahead!
regards Andreas
thanks! This is some useful information!
I'll have to check out Sozi, and also some of the links you made.
I think there are places for all the different kinds of dependencies. I did see Joe's talk, but it was right before mine so I couldn't pay full attention.
There aren't many new-new ideas, but it doesn't matter, because old idea + new context = new idea!