Skip to content

Commit

Permalink
## Newfound excitement
Browse files Browse the repository at this point in the history
* TOC
{: toc }

### Direction lost

After my visit to Dynamicland at the end of Jan 2018, I [decided to pause this project](http://futureofcoding.org/log#journal-break). I think there are a few reasons I lost direction here:

1. I saw a lot of really smart people that I look up to have a hard time in this space (Bret, Alan, Chris Granger)
2. I felt that my chances of success were dim
3. I found it difficult to explain what I was doing to friends, family and strangers at parties
4. I lost track of who or for what use-case I was doing this work

So I started looking for full time work as an engineer. Got a job offer. Turned it down. Then found some part-time work...

### Dark (Paul and Ellen's new startup)

Paul Biggar (of CircleCi) has started a new company with Ellen Chisa. They reached out to hire me to do some consulting work for them part time, like 5-10 hours per week. It's actually been amazing, potentially exactly what I needed to get re-invigorated here. I started working with them in early Feb, doing analysis of developer companies, like Eve or Luna. Would love to get some of this work on here in a productive way.

It's actually been really heartening doing this analysis. I am beginning to see how companies like Eve made mistakes that I could avoid, such as spending years iterating on visual programming interfaces or overly optimizing for beginners right off the bat.

### Fuck the learning curve

In other words, I am finally beginning to come around to Paul Chuisano's view that learning a new system is a one-time cost. Of course we want to onboard users as fast as possible but it's not the most important thing to get right on day 1, and it's definitely not the thing to optimize for. Instead, let's fuck the learning curve and optimze for the producitivity in the medium-term. (We can always build a better interface later, maybe even a syntax-less one, but text is great for iterating quickly.)

### Working on Woof

However, probably the thing that has got me most excited about returning to this project is [the work I did on Woof last week](stevekrouse/WoofJS@04a7ce1). It took me ~6 hours and was mostly super fustrating, but also fun and addicting, like a video game. It reminded me how much I both love and hate programming, and hinted at how amazing it could be with the right abstractions.

### Overloading

A few weeks back, r0ml was kind enough to give me a guided tour of both APL and Squeak Smalltalk. Both were incredibly fascinating and inspiring!

While the APL overloading and concise mentality is admirable in some respects, I also wonder if it could be the root cause of much evil. The thought goes something like this: if you use the same concepts for multiple different contexts, you end up artifically boxing yourself in unneccesarily. Instead if you could be more specific about the "shape" of your app, and all possible *semantic* states it could get it, you could more purely represent your app as a system of relationships, and then understanding and extending it would be greatly simplified.

This builds upon my ideas of the past such as "booleans are too generic," to include such ideas as "integers are too generic."

![overloading](https://user-images.githubusercontent.com/2288939/37614064-9828a254-2ba1-11e8-899f-59385ade596d.jpg)


### Thoughts about where to spend time

I think I need a new framework for this work. I made a list of the type of activities that I do here:

![time](https://user-images.githubusercontent.com/2288939/37614063-980234f2-2ba1-11e8-9470-196128b4c73c.jpg)

I wonder if it would be better if I structured my work around publishing stuff and trying to get views or upvotes on HN. I like it because of the social proof and it would feel good, but I am worried it's too much click-bait-y and focusing too much getting attention.

Another thought is to focus my attention on a really small problem that I think I can solve well.

Another thought is to find a mentor or some structure in the context of other people.

Another thought that gives me solace is that this stuff is really deep and complicated and the key is optimzing for long term productivity and excitement, so I need to find a structure that lets me have fun here for a while, while staying productive...

#### Throw out HTML, CSS

And a final thought is to pick a big ambitious project to spend most of my time on. One idea that I keep returning to is "throwing out the DOM (HTML, CSS) and starting over on the canvas," including building input boxes, etc, from scratch. This project is quite similar to Morphic (more specifically, morphicJS) so I'd start with research there, and try to find other attempts at this vision. Potentially, the canvas is not the right compile target and something more modern or cross-platform would be better, like openGL. 

I really admire Elm (and Fran, but need more research here). Also Brent's Diagrams is interesting for inspiration. The dream would be a very mathmatical language, one in which centering stuff, laying it out, would be super simple. Ditto for animation. All maths and relationsihps. All very pure. And cross platform is by default because so abstract. And reactive by default because canvas is immediate mode already. Also, it will be "turtles all the way down," like Smalltalk, in that there's no browser magic elements, like <input>. Everything is hackable. Don't just change the CSS: change the actual thing or whatever.
  • Loading branch information
Steve Krouse committed Mar 19, 2018
1 parent 653b947 commit 299337d
Showing 0 changed files with 0 additions and 0 deletions.

0 comments on commit 299337d

Please sign in to comment.