Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Devtools #82

Open
paldepind opened this issue Nov 26, 2018 · 2 comments
Open

Devtools #82

paldepind opened this issue Nov 26, 2018 · 2 comments

Comments

@paldepind
Copy link
Member

This issue is the place for brainstorming and discussing devtools for Turbine and Hareactive. Some of the features that such a devtool may include are

  • Visualizing the dependency graph between streams and behaviors.
  • Making it possible to inspect the history of streams.
  • Time travel.
  • Manually pushing occurrences to streams and changing behaviors.
stevekrouse pushed a commit to futureofcoding/futureofcoding.org that referenced this issue Dec 12, 2018
* TOC
{: toc }

### Last week

Last week was productive in terms of publishing two podcast and recording a third. I also worked a bit freelance. I only need to do a dozen hours freelance at this point in conjunction with the money from the podcast sponsorship to make ends meet. Eventually with more sponsorship and Patreon, maybe I can slowly lower the number of hours freelance towards zero. 

### Github Issues / Projects

I also started my Dec Regroup Projects, including moving my todos to Github Issues / Github Projects. I now have three Github projects:

* [To Do](https://github.com/stevekrouse/futureofcoding.org/projects/3) is my pipeline of tasks
* [To Research](https://github.com/stevekrouse/futureofcoding.org/projects/2) is my pipeline of links and topics
* [My podcast pipeline](https://github.com/stevekrouse/futureofcoding.org/projects/1) is where I organize my guests

I'm a bit worried about how this new system will interact with this log. While it felt silly to copy and paste todo lists over and over in this log, it's also a bummer doing things in my new system doesn't show up in here. This log is supposed to be a log of all my work on this project, so I'd love to pull in Github issues activity somehow... Now that I say it "out loud" I wonder if I can do that automatically... For now though, I may just copy and paste some things from Github issues here when relevant.

### Jekyll refactoring

I get really fustrated with Jekyll sometimes. My main issues were:

* I was having trouble with importing page snipets 
* I wanted to be able to preview my site locally with all the CSS. (Github Pages had some setting I didn't have set.)

After many annoying hours I was able to make both of these things work. My main next big issue is a navbar on all my pages of: 

* Home
* About
* Podcast
* Log
* Community
* Contact
* Fork

Of course new styles and logo would be nice as well, and maybe a commenting system, but it's not top priority.

And to be honest, starting the Patreon is bigger priority than all of these but I'm a bit scared so I keep procrastinating...

### Turbine 7GUIs!!

After doing 3 hours of emails yesterday (I was sick towards the end of last week, so I took Thursday off and didn't do my emails Friday, sat, or Sun), I spent a few hours messing with Turbine, and then ~7 hours today in it. So fun! Despite being rough around the edges, it feels like there's really something wonderful here - I'm very impressed with the design. Polishing this is a million times better than having to start from scratch.

To take it for a spin, I've been doing the 7GUIs tasks in Turbine, and whenever I get stuck or find a bug, I write it down, and sometimes open an issue. I'm tracking all the progress in [this Github issue](#96), which I will copy and paste here:

#### Issue opened

* [typescript issue on starter kit](funkia/turbine-starter#2)
* [combining model and view](funkia/turbine#81)
* [devtools](funkia/turbine#82)
* [a single page documentation cheatsheet](funkia/turbine#84) 
* [Text input bug](funkia/turbine#86)
* [versioned documentation and various styles of `output`](funkia/turbine#85)

#### To open issue

##### Issues using `lift`:

1. Do I import it from `jabz` and do `lift(f, b1, b2)`? Or I use it as `b1.lift(f, b2)`?
2. It doesn't work in the view with error `Attempt to sample non-replaced placeholder`
3. Doesn't seem to work for 4 behaviors but the documentation says "You can also combine in this fashion any number of behaviors"

##### Constructors need to be documented across all projects

* I need the constant behaviors, streams, `IO.of` to be easier to get at than going to the tests to find them.

##### filterApply bug

`filterApply(Behavior.of(undefined).map(() => () => true), stream).log()` upon an event from `stream` errors: `predicate.at(...) is not a function`. If you replaced `undefined` with `1`, the error goes away.

##### * `time.log()` does nothing

It should at least error if it's not going to show you anything, but I might prefer it to show me all the milliseconds.

##### when doesn't log correctly

`when(Behavior.of(true)).log()` errors `Cannot read property 'Symbol(Symbol.iterator)' of undefined` but `yield sample(when(Behavior.of(true)).map(x => console.log(x)))` outputs an `OfFuture` value

#### To look into more

* What is the `moment` function (described [here](funkia/turbine#51 (comment)))?

* Use [`loop`](https://github.com/funkia/turbine#loop) successfully without `this.source.addListener is not a function` error

* What's the difference between `go` and `fgo`? Also, the placement of arguments here is confusing:

```javascript
const tempView = ({ c, f }) =>
  go(function*() {
```

* When you can do infix dot vs prefix

* I want a dummy model so I can see the view while I mess with stuff and not get `The generator function never yielded a monad and no monad was specified.` without

```javascript
const tempModel = fgo(function* ({  }) {
  yield Now.of(10)
});
```

* Need to call the function created with `performStream` or `performStreamLatest` (I don't get the difference): `performStreamLatest(book_.map(() => withEffects(() => alert('hi'))()))`

* It's also quite annoying to keep the output and inputs in sync always. 

### Priorities 12/12/18 - 12/21/18

* freelance 10 hours
* Patreon   20 hours
* Turbine   20 hours
  * finish 7GUIs
  * work on various issues

### Push to vacation or 2019

* publish Tudor and Vlad episodes
* p4 stuff
* website design and improvements
@stevekrouse
Copy link
Contributor

I am planning on starting work on a stream visualizer thing in the spirit of the CycleJS devtools https://github.com/cyclejs/cyclejs/tree/master/devtool

It seems like it'll be able to traverse the hareactive/turbine streams to get a sense of the underlying stream architecture to display the streams. I wonder how I'll "hook into" the running streams so I can live-visualize the values as they flow through.

@stevekrouse
Copy link
Contributor

Another open question is whether the devtools will render onto HTML, SVG or canvas. If either of the latter two, I'd probably want to start by building a Hareactive library for SVG or canvas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants