Skip to content

Commit

Permalink
# Fith version of plan
Browse files Browse the repository at this point in the history
Very rambly so far. Had to even siphon of a thousand words into [its own essay](/essays/invented-or-discovered). I found myself unable to figure out where my next header should go or be so I googled around for [how to auto-generate a table of contents](http://www.seanbuscay.com/blog/jekyll-toc-markdown/). The downside to this method I am trying now is that it only works after committing and pushing to Github pages, which I why I am committing this plan in mid-working session. Let's see what happens!
  • Loading branch information
Steve Krouse committed Dec 1, 2017
1 parent 82a4195 commit 167d7e8
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 101 deletions.
51 changes: 51 additions & 0 deletions essays/invented-or-discoved.md
@@ -0,0 +1,51 @@
---
title: Invented or Discovered
---

# Invented or Discovered

*Is mathmatics invented or discovered?*

*Does Michelangelo create statues from marble or find them already existing inside the marble?*

No matter what Michelangelo says, we know he didn't find *David* inside marble. He made it out of marble. The only reason there's any doubt in our minds of this fact is that the physical act of sculpting marble happens to be removing pieces of marble from a single block. If he had built the statue by casting bronze or sculpting clay, we would clearly see the act of construction. It's merely a clever illusion that *David* was an act of creation.

And now on to mathmatics. 1 + 1 = 2. Was that invented or discovered. You may say, well of course it was discovered. If I have one thing and other thing, then I have two things. That has always been the case. By definition!

Ok, but who made the definiton? For that matter, who made the words or symbols for "1", "one", "+", "plus", "=", and "two"? Clearly those smybols and words were invented. It's a more clear case with the number 0. While many people have had none of a particular class of items since there were people, the abstraction 0 didn't exist for a long time until someone thought it up and used it. How about imaginary numbers. They first disqualified as numbers and then included, but only with the nomer of imagionary, which is literally to say, "these are creations of the human imagionation, not real math-things," which I would argue is ironic through our current lens that sees imagionary numbers as real as it gets for mathmatics. All math is human invention.

No, that can't be right, you may say, because what about the beautiful way that it all fits together? Or what about the way in which we are able to leverage mathmatics to understand our phsysical world and build things in it, like architecture or engineering?

Firstly, it all fits together because that's how much of mathmatics works. You design a system of symbols and the rules to produce more symbols and then you use the rules upon the axiomatic symbols to produce more symbols. We literally have a rule -- proof by contradiction -- that says if you are able to find a rule that break the cohesiveness of the system, that rule is not allowed in this mathmatical system.

Secondly mathmatics is able to help us understand and tame our phsyical world, again, because we build it that way. We have constructed 1 + 1 = 2 because in the physical world that's how quantities work. That doesn't have to be how quantities work in a mathmatical system. However mathmatics is often used as an abstraction for reality *because* we designed it to model reality.

Same goes for e=mc2 and for the lightbulb. These were constructions, not discoveries.

This is why I strongly dislike the phrase "find yourself" or "find myself," because there is no "you" out there to find. Searching is the wrong metaphor. It sends young people out wondering the earth looking for... *What?* What could you hope to see with your eyes that would mean that you've "found yourself?" Clearly no such moment of epiphany is possible.

While we may not be born as blank slates, we are born with little understanding of our world or ourselves. As Piaget says, we then construct knowledge of our world inside our own heads. We build small concepts through trial and error, and then we test those concepts out in the real world like mini-scientists. Then we build bigger concepts out of the smaller concepts. We are constructing how the world works, and in turn, we are constructing our very minds.

As Hosfader says, analogy is the core of cognition. In the most literal sense, we, adults and children, can only understand those things that we can relate to the concepts that are *already inside our brain*. We build new structures in our brain by *combining existing structures.*

The way we understand anything in our world is through constructing knowledge about it. There is no trasmission of knowledge. You cannot pour your knowledge into my brain because the way the knowledge is *hooked up to other ideas* inside your brain may not *fit within the configuration of ideas* inside my brain. Thus to get an idea from your brain to my brain we must first find *relevant ideas we share in common* and relate the concept you are trying to transfer to each of those ideas in turn. **The trasmission of knowledge is a series of analogies built upon knowledge already inside the recipient's brain.**

This is why it's of utmost importance to *know one's audience* when trying to communicate a point. It informs which analogies we can and cannot use. (Relevant points here: Chicken soup for the teenage soul and i18n.)

We learn about everything and everyone through construction. We, ourselves, are no exception. We learn about ourselves by constructing knowledge about ourselves in our heads. The proccess of learning about onesself is literally an act of "constructing" or "building oneself" inside one's own brain. It's the act of relating yourself to ideas that you already have inside your brain. A clear correlary of this idea is that **you can literally only *be* as good as the ideas inside your brain.**




<script>

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-103157758-1', 'auto');
ga('send', 'pageview');

</script>
<script repoPath="stevekrouse/futureofcoding.org" type="text/javascript" src="/unbreakable-links/index.js"></script>
148 changes: 47 additions & 101 deletions plan.md
Expand Up @@ -4,9 +4,15 @@ title: Future of Coding Plan

# Future of Coding Plan


## Table of Contents

* TOC
{:toc}

Last month, I set aside a single day -- October 16th, 2017 -- to write [my life plan](http://stevekrouse.com). It summarized my past and current philosophies on life. It also help me set my priorities. My work is #8.

Speaking of work, creating this Future of Coding plan has proved difficult. I produced a number of different versions over the past few weeks. This is the 4th.
Speaking of work, creating this Future of Coding plan has proved difficult. I produced a number of different versions over the past few weeks. This is the 5th.

## Versions of this plan

Expand Down Expand Up @@ -48,140 +54,80 @@ The open questions from this plan are:

4. Will I enjoy being a full time "researcher", instead of an entrepreneur?

### 4. /plan v3 - the current version, below

Go ahead and read it for yourself ;-)


## The Mission

While my strategy still needs work, my mission is becoming clearer.

Yesterday, November 9th 2017, I interviewed Emmanuel at Bubble.is. It was useful to think about my goals in relation to theirs. Bubble's goal is to *empower businesses to create apps without code*. That's an amazing goal. But it's not my goal. Why? When I use Bubble, I don't feel joy. I don't feel myself getting smarter. I'm not thinking powerful ideas in the Seymour Papert sense. Bubble is the cheapest way to get something done. It's about the end-product, the business solution. That's not what programming is for me.

For me, programming is a medium for creative expression. Just like writing. It's how I articulate what's in my head, refine my ideas, and communicate them with others.

All media -- writing, pictures, coding -- can be used either for business or art. You can write advirtisement copy or a fictional short story. You can create an entreprise software company or share a simple animation with friends.

The same goes for bicyling. Steve Jobs saw the computer as the "bicycle for the mind." You can bike to get somehwere faster or to workout or to simply have fun.

[Pencil Code](https://pencilcode.net)'s mission is to "make programming as simple and powerful as using a pencil." That's pretty close to what I'm going for.

Let's go with this for now: "empowering creative expression through programming"


## The Vision

If that's the mission, what's the vision?

Here are some quick phrases I've found effective at communicating what I'm trying to do:

1. "Squarespace for apps"
2. "A tool as powerful as JavaScript and as easy to use as Facebook"
3. "A tool as easy to use as Scratch but with a really high ceiling"

### Principles

Those phrases more or less sum up the picture I have in my head. However, there are a few additional principles that are important. If we made a "Squarespace for apps" that didn't embody these principles, I wouldn't consider the job done.

You can read them [here](./principles).

## Strategy

How do we get from here to there? Elon made it seem so simple in his first plan for Tesla:
### 4. [/plan v3](https://github.com/stevekrouse/futureofcoding.org/blob/fcb70a6ebb26033a3dcb308929ca277145f286b8/plan.md)

> Build sports car
In this version of the plan I started keeping this running tab of past versions of the plan. (Something that the [unbreakable-links library](https://github.com/stevekrouse/unbreakable-links) may one day do for each of my files automatically.)

> Use that money to build an affordable car
I also articulated my mission as "empowering creative expression through programming" and my design principles, [which I refactored out to their own page](/principles).

> Use that money to build an even more affordable car
The central question is *to build or to research?*

> While doing above, also provide zero emission electric power generation options
But first, I need to make sure things are wrapped up at The Coding Space, WoofJS.

I think it's safe to say that I don't know enough to declare my plan so succiently. Yet!
Then I need to do research on FRP or a blockly competitor.

There are so many pieces to this puzzle that need work. Think about all you need to learn now to code:
And also think about sustainability.

* the language and syntax
* the comptutational model
* the underlying technology stack (the internet, the web, the app store)
* setting up their workflow to allow for fast iteration (webpack, hot reloading)
* connecting to databases (SQL, NoSQL, ORM, deployment)
* setting up user accounts and authentication (Rails, Devise)
* setting up deployment (heroku)
* eventually helping with scalability (redis, load balancing)
* collaboration with other developers (git, github, pull requests, issues)
* version control (semantic versioning, releases, cache busting)
* package and dependency management
### 5. /plan v4

No wonder coding bootcamps take three months!
This is the current version below...

### Build or Research?
## Crusade

My main strategy question is whether I want to build or research long-term.
### Inventing on Principle

On the one hand, builders get shit done. Do I imagine myself starting a company like Looker or Bubble? Creating a new open-source langauge/platform like Linux, Clojure, or Scratch? One benefit of working on a single project is that it could consolidate further innovation on the remaining problems (listed above) by employees and/or the open source community.

On the other hand, it all starts with research. Do I imagine myself staying in research-mode in perpetuity, like Alan Kay or Bret Victor? Would I be fufilled doing research, making prototypes, and publishing papers?

It's clear that both models move the world forward. Without foundational research, people wouldn't know what to build. Without people starting projects, none of the great ideas from research would get built. I guess it comes down to *what am I best at?* and *what do I enjoy most?*
The lens for this version of the plan is Bret Victor's Inventing on Principle.

Those are two questions that I don't know that answers to. Yet! Luckily, I don't have to decide now for forever. I can take each strategy out for a test-drive, see how it goes, and change later if necessary.
#### Delicously Embaressing

### Wrapping up The Coding Space & WoofJS
I haven't watched this video since I was a freshman in college, five years ago. I can still remember buzzing with excitement as I wrote an email to Bret Victor immediatley watching, saying something to the effect of, *That is how I want to live my life. Tell me what to do next.*

Besides, I'm getting ahead of myself here. Before I take on "building the future of coding" as either a builder or researcher, I need to wrap up my work with The Coding Space and WoofJS. This means communicating what I learned about teaching kids to code over the past years. Writing this will take at least a few weeks, maybe even a few months if I do it justice.
I wish I had a copy of that email. I bet is deliciously embaressing... oops I found it:

### Sustainability
> Hey Bret,
>
> I just watched a few of your lectures and was especially impressed by Media for Thinking the Unthinkable and your DBX talk. At the end of Media For Thinking The Unthinkable talk, you mentioned that if we'd "like to help you find [this new medium], let me know." So this is me letting you know that'd I like to help you find it.
>
> I'm not exactly sure what that'll entail, but you've convinced me that it is an incredibly worthwhile project.
>
> Best,
> Steve
I will also now start looking into various funding options for my work here, particularly for the research and non-profit models because I have much more questions about it than the for-profit model. My current thinking includes:
So it seems like my memory is failing me here. While I did love *Inventing on Principle*, it sounds like I waited for a few more videos -- and an "invitation" -- to email him.

* starting a Patreon
* talking with foundations
* talking with corporate sponsors
* talking with research groups
* talking with think tanks
* talking to media companies about get paid for my writing content directly
Anyways, last week I rewatched it last week and was blow away all over again. There was so much that I had forgotten!

I'd love to have $1k per month coming in in a sustainabile way within the next few months. I really admire [Nicky Case](http://ncase.me) and he seems to have figured out how to [support himself through Patreon](https://www.patreon.com/ncase).
#### Fighting for a cause

### Next Research Topics
First of all, the main point of the talk is the concept of "crusade" or "fighting for a cause," which I've recently been refering to as "living for an outcome," without realizing the similarty. I thought I was doing an Elon Musk, Juan Benet thing. If forgot about Larry Tesler (no modes), Bret Victor (immediate connection to creation), and even my hero Seymour Papert (microworlds). I have been having trouble figuring out Alan Kay's.

After I finish writing about teaching and learning coding, my next step will be *picking what to research next*. Regardless of whether I'm a builder or researcher, I'll still need to do research as my next step.
Last night in discussion with Jonathan Leung, we articulated Elon's as "averting existential disaster." Juan Benet's is something like, because Elon's taking care that, I'll work on "accelerating innovation via Bell-Labs-style research."

#### Visual Metaphors for Functional Reactive Programming
For contrast, I don't think Steve Jobs or Bill Gates had a cause they were fighting for.

Because of how easy it is to *understand* a program written in the FRP-style, I am intrigued by finding a way to make functional reactive programming more intuitive via visual metaphors. Doing research here would mean:
#### Trick question: how do you find your cause?

* reading Conal Elliot, playing with Fran
* playing with Haskell's Reflex
* prototyping Streamsheets
* prototyping FRP Scratch, FRP Woof
That's not the right question because your cause doesn't exist somewhere nebulous "out there", either somewhere else or some time else in the future. You don't have a cause. There is nothing to find. You must *create* your cause based on your beliefs and priorities about the world. (In fact, nothing is discovered. Everything is constructed. I just wrote [almost a thousand words on the subject](/essays/invented-or-discovered).)

#### A Library For Visual Expression Building
#### How do you construct your cause?

Andre Staltz made an interesting research suggestion [two months ago](/futureofcoding.org/notes/andre-staltz-call-9-11-17). Clearly the coding platform of the future will have some "expression builder" that, as Glen Chiacchieri says, will look more like math on paper than math in Google Sheets:
Bret gives some good advice: do things. Interact with the world. Try a lot of different things. Reflect on your reactions, your responses. What attracts you? What repels you? What lights you up? See what you create. Keep a list. It make take years.

![image](https://user-images.githubusercontent.com/2288939/32679315-04384694-c634-11e7-89f6-207aa873be23.png)
![image](https://user-images.githubusercontent.com/2288939/32679317-075ba280-c634-11e7-94b8-27fda41a7505.png)
Then reflect on it. Can you synthesize all of what you've created and what lights you up into a unifying vision?

Given that this is a core component that *every* tool in this space will need, why not build it into a library that we can all use? The Ace and CodeMirror text editors are underratedly helpful in enabling innovation here. WoofJS would be significantly worse and more fustrating to build without them.
##### Insight

I imagine this library would be quite similar to Blockly, which enabled me to build two prototypes ([Cycle v1](http://cycle.thecodingspace.com/#bo4zu4) and [Cycle v2](http://stevekrouse.com/cycle/#todo-mvc)) very quickly. The downsides of Blockly were 1) that it was built on top of Google Closure, and 2) that it didn't provide enough customizibility, particularly around the shape of the blocks, which greatly limits the level of innovation that can be done on the computational metaphors.
A cause can not simply be to *make simple products*. That's too general. There's no insight. There's no umpgh. You can't wage a crusade on a platitude.

## Summary
```(Disclamer: The actual historical Christian crusades were horrific in basically all ways, save the one: fighting with ones life for what one believes in. However, if this wording bothers people for all of the negative connotations, I will look for a better metaphor.)```

In summary, here's my tentative plan:
If you want to fight with your life for something that everyone already agrees with you on, you're going to have a boring life. You need to have an insight that others disagree with because they don't have the context to appreciate your vision. As YC says, the insight that Airbnb has was that strangers would pay to stay in other strangers' homes. Imagine Airbnb without this insight: making travel accomidations better. It's un-actionable.

~~1. Launch a Patreon. This will happen in the next week or three (because I'm taking off next week for Thanksgiving).~~ *Will punt on this for now.*

2. Write. Mostly about teaching and learning to code. 4-8 weeks, so Dec and Jan.
"No modes." Now that's an insight. "Creators need immediate connection to what they create." That's an insight. "Microworlds can be what the gears were for Papert." That insight is responsible for making me who I am.

3. Research. Possibly into visual metaphors for functional reactive programming, or a library for visual expression building. 4-8 weeks, so Feb and March.
I think Elon's is something like "save the planet from existential risks as a by-product of selling people what they want." It's the Tony Stark method, funding your superhero exploits by selling weapons, only Elon is combining them, which if I recall Tony Stark eventually did too.

4. Build or Write. Figure out whether my research will turn into a project or essay. If it's a project, build it. If it's an essay, write it. 4-12 weeks, so April, and possibly May and June.

6. Iterate. Re-evaluate progress and create the next draft of this plan.


<script>
Expand Down

0 comments on commit 167d7e8

Please sign in to comment.