100 Opinions on this -- prompted by @vgr

Will have to break for a call any minute, but will do best to free associate in meantime.
@vgr 1. Johnny Von Neumann isn't nearly as deep a genius as people seem to think.

If he was, he wouldn't have said bullshit like this
@vgr 2. Code is crystallized thought
@vgr 3. Object Oriented Programming (as practiced today) is bullshit.

Hedgehog paradigm.

Requires you to have taxonomic overview of the program you're writing before you start writing it.

Inevitable that will end up as spaghetti of incidental complexity.
@vgr 4. Nobody really has been doing OOP since SmallTalk (maybe RealTalk and the shit they've been doing at HARC and Dynamicland are exceptions)

Java and Ruby (God forbid Rails) and Objective C for sure aren't following Kay's footsteps.

wiki.c2.com/?AlanKaysDefin…
@vgr 5. The purpose of a programming language (and the programs you write) is to build up useful abstractions that extend the realm of thinkable thought and hold otherwise intractable problems in your head.
@vgr 6. The measure of a good programming language is the speed at which you build DSLs for the problems you want to solve

The measure of good code is whether you and the people you work with are able to reuse it for problems you weren't anticipating when you wrote it initially.
@vgr 7. Syntax matters, a bit.

One simple reason Clojure is better than CommonLisp is that it is easier to read

Vectors are [ ]
Let bindings in a vector
Maps are { }
keywords :this

In CL (vector a b c) (hashmap x 1 b 2) -- way harder to skim.
@vgr 8. Polish notation is way better for reading and writing code than things that try to look like english

en.wikipedia.org/wiki/Polish_no…
@vgr 9. The ternary operator in Javascript is pretty dope though -- I do sometimes miss it when writing simple if statements in my let bindings.

Sometimes have thought about making a macro for it, but something tells me this is a sin I would live to regret.
@vgr 10. Sapir-Whorf hypothesis is true -- but the effects are far more pronounced for programming languages than for spoken languages.

The language you write code in ends up shaping huge parts of you worldview even when you're not programming

en.wikipedia.org/wiki/Linguisti…
@vgr 11. Rich Hickey is a better guru than the Pope or the Dali Lama.

He understands exceptionally deep truths about the universe, and converts them into actionable tools for building a better world.

Learn about Whitehead's metaphysics through him

infoq.com/presentations/…
@vgr 12. The coolest thing about Javascript is prototypical inheritance.

Totally mind bending when you think about it, and how it maps to your mind.

Steve Yegge nailed it in this post

Better intro to Douglas Hofstadter's work than any I've seen by Doug.

steve-yegge.blogspot.com/2008/10/univer…
@vgr 13. Any program could be theoretically written on in any turing complete language, but it is not actually possible for humans to write a complex web app in brainfuck

Same applies for modeling paradigms for problems and data

Some problems suit a given paradigm, some don't
@vgr 14. One of the best things about Clojure (as an "immigrant community") is that people bring paradigms and patterns with them from other languages.

APL, J -- very cool ideas there from array programming langs. Can play in that headspace via core.matrix

@vgr 15. Pattern matching in Erlang gives a totally different style for writing and thinking about recursive functions.

You get to step into that world thanks to Sean Johnson when you use core.match

@vgr 16. Clojure as a programming language community might be what really good post-racial Fascism looks like.

Everyone is there because they really love and trust Rich's aesthetics and principles. Glorious leader.

Great ideas brought in from everywhere, but filtered through a lens.
@vgr 17. Bruno Latour's paper "Visualization and Cognition" is relevant to understanding the emergence of of Science in the west, and what works and doesn't work in programming languages, and in our sense-making institutions today

bruno-latour.fr/node/293
@vgr Ok, time for a break
@vgr 18. The best purpose of language in general, and programming languages in particular is to expand the domain of thinkable thoughts
@vgr 19. Excel is a purely functional reactive programming language and environment with a built in database.

It is far better than most languages and IDEs
@vgr 20. The folks working on Visual Programming Languages, Low Code, or No Code, to try to make programming more accessible to people are... I dunno, focused on not the best goal..

Rather than make it easier to do what you can do with JS, better goal is to make a better excel.
@vgr 21. Eve started in the right direction: combine the database, a UI for human I/O, and a nice declarative language

showed lots of promise @ 1st



you could tell they went off the rails when the demo was how to build Flappy Bird.

futureofcoding.org/essays/eve/
@vgr 22.

10.7 Million Javascript developers
(most popular " programming language")

500-750 Million people use Excel
(actual most popular programming language + env)

Why? Excel lets you treat you thoughts as data.

Easy to get started, can ALWAYS upskill to solve harder problems
@vgr 23. Weaknesses of Excel

Really only works for quantitative thoughts

But there are all sorts of relationships between qualitative thoughts, and algorithms you can run on them

We need a programming language for meta-cognition, + db + io

ideas here

@vgr 24. Advances in programming languages reduce incidental complexity -- the complexity of talking with machines that doesn't relate to problems you're trying to solve.

Big advances: garbage collection/not having to worry about memory management, performant immutable datastructures
@vgr 25. Big ideas that shape whole languages have made their way into Clojure through libraries

The paper Communicating Sequential Processes inspired the creation of Golang (Go) -- very popular at google.

In Clojure, core.async library gives you all that!

@vgr 26. Bret Victor is right about direct manipulation generally.

Specifically: CSS is a flaming pile of garbage.

Messing with margins and padding to try to get a layout to look the way you want is 100% incidental complexity.

@vgr 27. Just parroting his quote from above talk

"So much of creativity is discovery, and you can't discover anything if you can't see what you're doing"

Similarly, programming languages should not only be conceived of as text or symbol based

see

worrydream.com/KillMath/
@vgr 28. Getting beyond abstract symbols does not mean getting beyond abstract ideas.

The power of programming languages (and why you may want to learn them, even if not intent on building software) is that they let you get you hands dirty with building and using ur own abstractions.
@vgr 29. Cheating and linking an old thread

@vgr 30. Datalog is a much better query language than SQL, and will be more widely used than SQL in 2050

But might be only if you count people using natural language datalog, which will go mainstream in next 10 years

web.archive.org/web/2018110211…
@vgr 31. Urbit is an interesting project, but won't actually take off unless/until someone writes an X -> Hoon or X -> Arvo or X -> "whatever" compiler because no one actually wants to think in Yarvis' pig latin.
@vgr 32. Hosted languages that provide nicer abstractions over the libraries from their host language have a huge huge advantage over new languages starting from scratch.

The ability to work with libraries from an existing/broader ecosystem is damn near table stakes for a new lang
@vgr 33. The world is a worse place because MIT switched from teaching LISP in the intro CS courses to teaching Python.
@vgr 34. If you haven't learned a programming language for a reason other than

A) It was a assigned to you in school

B) You thought it would make you money

Then I doubt your
a) curiosity
b) open-mindedness
and as a result
c) competency as a engineer
@vgr 35. There are two problems for programming languages to solve

1) Performance on machines

2) Usefulness as a tool for thought

Right now those are complected -- Intentional Software was doing something interesting toward separating those two out

en.wikipedia.org/wiki/Intention…
@vgr 36. **Technical people** are just people who "try to understand"

Killing conversations with "I'm not technical" is a dangerous practice that will hurt you (and those around you) in the long run.

roamresearch.com/#/v8/help/page…
@vgr 37. Your type system won't save you
@vgr 38. Provably correct doesn't mean it works
@vgr 39. Contracts and gradual typing > strong types

@vgr 40. Many people with 10 years of experience in software engineering haven't actually grown or learned much in that time.

They've done the same first year 10 times on repeat.

Polyglots generally avoid falling into this pattern.
41. Reagent (A Clojurescript wrapper around React) is way easier to read, write, and maintain than vanilla react.
42. Dan Abramov has said that Redux is not a javascript clone of Re-frame (the CLJS framework for writing SPAs in react), it is just that both were inspired by elm and arrived at similar pattern...

But even so... Re-frame was first and still much better in almost every way
43. The Re-frame documentation is most informative/entertaining read-me on github

github.com/day8/re-frame/…
44. Clojurescript is an EXCELLENT choice for consumer or SaaS internet startups.

If you are starting a new company and can afford it, you should spend invest a few months in learning it first and building in it vs your normal stack, will pay huge dividends over time.
45. A great engineer can learn Clojure well enough to be productive in under a month.
46. Setup for react development (Webpack/Babel/100 other tooling things) was a dumpster fire in 2015.

It's probably still bad.
47. Create-React-App and Gatsbyjs probably have made setup for Javascript projects much better.

Still probably not as easy to use or as powerful as shadow-cljs.
48. Typescript is mostly hype.
49. VScode is a typescript IDE, is probably pretty magical, and I am likely missing some cool sources of tools for thought inspiration by not playing in that ecosystem.
50. Airtable is on track to be the Wordpress of relational databases.
51. Graph databases are far better than relational databases for most things.
52. Amendment to 4. No one who is loud about OO is doing real OO.

Agree Erlang is OO

53. In general, folks thinking about programming languages and computing more broadly, don't know enough history.

Folks interested in the topic should read "The Dream Machine" to start and not blindly trust shitposters like me.

VN def over-hyped tho

54. One reason to know history is so you can see what elements of your language were put in place to deal with constraints in your environment that no longer exist

We don't use punch-cards, we don't need a distinction between expressions and statements

paulgraham.com/diff.html
55. Questions are not a sign of ignorance, they are a sign you are paying attention.

It's more than OK to ask people to define terms or give a concrete example, and ok to stay in conversations you can barely understand.

Applies to conversations in and about all languages.
55. Meta opinion about my opinions on programming languages

56. Datomic is far and away the best graph database available today.

Has Java and Clojure APIs, non jvm languages can use rest apis.

If you're a startup, worth being in Clojure though.
57. Listen, I'm not saying he didn't have massive contributions, esp on the math side.

Just know too many AI bros (who I still love) who've said things like "We just need 50 Von Neumanns to build an AGI god and we're set"

No.

And he's not all that.

58. The most important idea in Datomic is that there is no reason to overwrite data just because it changes.

It is more than a graph database, it is a graph database with a notion of time and history built in.

What was Joe's address as of Dec 2017?
59. The main limitation of the EAV tuples (popular in Semantic Web land) is that you can't easily describe the relationships.

You get the FACTS, but it is a bit tricky to add information to those facts like "where did this info come from", or make statements like

If A then B
60. To model human thought in a computable way you need to solve the problem in 59, you move closer to this goal if you give each "fact" or "edge" in the graph a unique identifier.

Long history of this in Associative Databases

Example in @RoamResearch

roamresearch.com/#/v8/help/page…
My shit posting on Eve has evoked the ire of @ibdknox, whose work I do greatly respect.

So will offer my more nuanced opinions on Eve and programming languages related to tools for thought, esp related to @RoamResearch and see if that gets me the last 40

61. Designing a programming language - a medium for people to express their thought in a machine computable way is insanely hard.

Perhaps even harder to get the time and funding to do that level of deep work.

Exponentially harder to do on VC timescales.
62. The fact that Chris and team were able to get venture funding AT ALL is an insane testament to the them, and quality of prior work /vision.

The fact that they got funding from some of the top investors in silicon valley put the project in historic category.

Lot 2 liveup 2
63. Light-table (from Eve team) promised a smalltalk like IDE for devs using clojure or js

Easy access to docs, organize workspace by function not file, see values pass through

Huge potential for intelligence augmentation!

Easy switch for a userbase

64. Alpha sheets (later project, diff team) let you use R & Python code in a collaborative excel like spreadsheet.

Was like Light Table but from another direction.

Adds programming to Excel, versus adding better reactive env to programming

65. Light table had a very Bret Victor type feel

make it easier to explore what you could do

make it easier to get a handle on what is going on in the program in real time

give yourself a bunch of contextual information and focus your attention only on what matters
66. That project (Light Table) thus offered huge potential for "intelligence augmentation"

Allow people to solve problems that they otherwise wouldn't be capable of solving

Invent things they otherwise wouldn't have been capable of inventing

For beginners or experts alike!
67. With both AlphaSheets and Light Table, you started with a tool and paradigm people were familiar with, and you added in either more programming power or a more powerful environment.

Both gave the users a clear path from where they were to a better world.
68. Risk with both of those is incrementalism.

If you think that both excel and programming lead toward a dead end, perhaps you have to rethink things from first principles and go back to go forward.

Seemed like Chris's view

chris-granger.com/2014/03/27/tow…

I don't *exactly* agree
69. My take is you need co-evolution of tools and culture.

Tools shape us, then we shape our tools.

I believe in bootstrapping - in the Doug Engelbart sense.

Programming languages are as much about the community as about the underlying technology.
70. After Eve raised VC, appeared to me to take a hard reset approach to try to make programming level capability available to complete beginners

Inventing new UIs, new language, and new database - based on Dedalus

Incredible engineering lift that I would def not be capable of
71. When I say they went off the rails, really means they took a strategy that I didn't agree was a good one / was aesthetically opposed to.

But they weren't on my track

I was living in India at the time, lurking on their list serv, building prototypes of @RoamResearch
@RoamResearch 72. The prototypes of Eve I found most compelling where the ones that were more like a semantic Tiddlywiki with a natural language query engine.

I liked the ideal of Excel power applied to notes

Building full apps/games felt way out of scope to start

tiddlywiki.com
@RoamResearch 73. To be fair, I think I share a lot of @ibdknox's long term vision.

The big point of departure is that I don't think most "non-programmers" enter the world building games.

I'd rather help them build explorable/interactive models of the world.
@RoamResearch @ibdknox 74. On this point, there is another caveat I'll add to my OO shitposting in points 3 & 4.

I still hate Ruby (my first language) for web-dev, but Modelica is great example of how the principles make a ton of sense for modeling systems.

@RoamResearch @ibdknox 75. Similarly -- I think there are a ton of great ideas in Analytica for building quantitative models of systems

Problem there is the tool has like a $1,000 license and only works on Windows.

Mostly just used in places like the Defense Department.

en.wikipedia.org/wiki/Analytica…
@RoamResearch @ibdknox 76. You don't actually know a language until you've built something substantial with it.

Substantial is relative to what you've built before.

Often in new languages we start by trying to follow paradigm we're used to.

Anyone saying I don't know my shit is probably correct.
@RoamResearch @ibdknox 77. Disclosures:

I've built web apps with users (at least two!) in
- Ruby
- Javascript
- Javascript during a Haskell inspired phase where I did everything with Ramda.js and all my shit was curried and point free
- Clojurescript

Ramda is super fun imo
ramdajs.com
@RoamResearch @ibdknox 78. You should not trust my opinion on Python.

The only reason I learned it at all was to write a few scripts on an open source Python IDE called Leo, which had cool way of organizing knowledge in a graph, again similar to @RoamResearch

@RoamResearch @ibdknox 79. I have zero personal experience writing Erlang

However, I CAN tell you that

- The What's App team built a $1B company with 11 engineers using it.

- Joe Armstrong (a co-author) has some really incredible talks.

He even mentions Xanadu in this one

@RoamResearch @ibdknox 80. The Elm language has had a massive impact on the front-end web

There is now so so much information about Redux on the web I can't find it, but original writeup from Dan Abramov on his inspirations for the architecture was a treasure trove, and he credited Elm for main ideas
@RoamResearch @ibdknox 82. Good Programming Languages are DEFINITELY NOT about "Thinking Like a Machine"

@RoamResearch @ibdknox 83. Ivan Sutherland's "SketchPad" is what we should have

Ability to do direct manipulation to get to general area you want to go, and then ability to adjust code to normalize and get pixel perfect.



84. If a project not having recent commits on github makes you immediately think you cant use it, there is something fundamentally wrong in your language community.

Code shouldn't rot.
85. I haven't actually figured out how to use generative testing (test.check in Clojure, QuickCheck in haskell)

But when I do... and it generates millions of test cases my functions... I know in my soul it will be truly glorious

I'm so tempted to finish this out with Good Book / Bad Book opinions on learning various programming languages and be done, but I think I might pull a Venkat here and just wait till later in the week.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Conor White-Sullivan 𐃏🇺🇸

Conor White-Sullivan 𐃏🇺🇸 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Conaw

Feb 12
An angel of the Lord approaches you on a mountaintop.

They open with “Be not afraid”
Heaven gon be lit af. Fr fr
Read 5 tweets
Jan 30
Yeah sure resolving inner conflicts is cool, but have you tried deliberately starving yourself to death?
“Something in our soul has a far more violent repugnance for true attention than the flesh has for bodily fatigue. This something is much more closely connected with evil than is the flesh.”
“That is why every time that we really concentrate our attention, we destroy the evil in ourselves.”

Simone Weil
Read 4 tweets
Jan 30
Men will literally take acid and demand to see a priest after midnight mass instead of going to therapy.
Confession is by far the most underrated part of Catholicism.

Worst things you’ve ever done, shit you wouldn’t even tweet about, the priest has heard worse, possibly this week!
My 2022 grail quest is to inspire 1% of the lapsed Catholics that follow me to start going to confession on a monthly basis.
Read 5 tweets
Jan 29
When I was 19, at the only rest stop on the 250+ mile Fermont fire road in Canada, I met a trucker showed me pictures of his wife and his prized possession, a chrome blue semi he'd bought just for himself

I learned that when they aren't feeding cities, big rigs can pop wheelies
I think about that guy a lot. He taught me a lot about the joy of work.
The story is true, but I thought to share it today to test if tweets with Canada and Truckers in them are being throttled on timelines. Certainly seems they are.
Read 5 tweets
Jan 29
When someone says something as ludicrous as “I only care about GPD growth” the proper response is not to argue with them, it is to invite them to get some air and touch the grass.

Excessive rationality leads to madness

[[GK Chesterton]] understood this
Midwits always want more, but the kingdom of heaven in at hand.

Even Jimmy John’s understands this
Read 4 tweets
Jan 28
“If your eye causes you to sin, cut it out”

AKA: My biblical justification for prolific use of the block button.

Yes, it means I limit who I give attention to on here, but Twitter gamified mental illness and rage is contagious, and not conducive to creativity or curiosity
I block rather than mute for the same reason I would ask someone to leave a party, or kick them out of a bar (except bar for eviction is much lower… since it costs people nothing to ruin a mentions section)
Even 15 min of fame can drive you mad.
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(