How about being able to create chat rooms really quickly.
Thought of this too, though I think it needs to be even faster than a git branch lol, it needs to be a single click - Like in the context menu (along with AGREE, BUTTON X, Y) there should be a CREATE NEW DEBATE or something. And then once that's done, a statement should just be a link to the new debate
(I'm also trying to get https://github.com/jpillora/cloud-torrent functional - so many projects so little time...)
bed time for me
maybe all this quoting could be simplified to some nice UX work flow... anyway, onto the debate:
Yeh I find chat/quoting frustrating for these kind of async chats. I have to scroll up to top. Quote. Reply. Then scroll up again. Following a thread further back in time is impossible. Something like the threaded conversation view like Google Wave feels like it would help — but it adds its own complexity. I’ve always wanted to compartmentalize discussions around topics. The difficulty is they always leak into other topics, and there’s friction involved in moving conversation to another thread/room. Slack offers this and its been wildly successful. I still find a lot of the actions too slow.
I just keep thinking that raw chat is the most natural and must always be there. I don’t think there is a holy grail interface. It will be about making a trade off.
I thought that too for a while though I didn't actually have much of a usecase.
Code sharing not so much. Server-side rendering is the main thing. Makes interfaces super-snappy. There’s no choosing SPA vs website anymore. You get both for free.
When we had someone start, in order to keep being productive, I had to put him on side projects while I build the main chunk of the ship.
Haha. This is exactly where I am right now. Just had a new guy join. And I had this massive mess.
However, over the years I’ve had this idea about how Node code should be organised, and last weekend I finally refactored our whole codebase to it.
The main philosophy is that you should be able to remove a module and the app still works. And you should be able to add a feature by typing npm install my-feature
and its auto wires itself into your project.
I call it Live. Its just a plugin system you can drop into any codebase with a few conventions. At startup, it scans all your module dirs for live.js
and/or live.browser.js
file. Inside the file you can put a exports.register = (app) => {}
. app
is the app container where you can hook into events using app.before
, app.after
, and fire your own events app.perform
. Each module also has a config
folder. You can override any config using your top-level config
folder.
The goal is to be able to scaffold an app super quick using npm install
. At the moment there are so many bootstrap scripts called like “webpack-react-koa-starter”, “react-flux-bootstrap”. I am shimming all the popular modules, creating sensible config defaults, exposing all the main config in a consistent config format.
So when I start a project I can just run npm install live-webpack live-koa live-react live-flux
etc.. and everything is wired up and working.
If you want to change something you can just copy the module from node_modules
into modules
and its in your source control and you can make changes. However most of the time you just create a new module, and hook into some events.
I’ve also applied project structure and plugin system to an industrial STM32 embedded C++ project.
The goal is to make everything reusable modules. I think this wasn’t possible before, but now that we have Webpack and React, its possible.
As you can guess :stuck_out_tongue_winking_eye: definitely Go on the backend, though not so fussed about the frontend - would be happy to give ES6/7 (babel) + react + flux a whirl on the frontend. From what I've seen ES6/7 are basically just coffeescript features ported into JS?
Cool. I always love an excuse to try out something new. Flux+React on front-end is a safe bet. I’m looking for an excuse to try out ClojureScript and the Om Framework though - but the learning curve would be too large for the time I would have available.
I'm running on a pretty tight schedule at the moment though I'll aim to get this started next week.
Yeh me too. I’m back in Aus July 5th for a month. We should catch up. I think once we get the project building and deployed - it will be a fun project to hack on for a few hours each week.
later a plugin system to experiement with different approaches
Atlassian's Jira does this, it's got a ton of features and modes which you can choose from. Yet there are a few core pieces which are omnipresent.
Definition sidepanel, Show a pro/con table in the sidebar, etc
I think some of these would need to be baked into v1, though definitely start sparse in beta and then make data driven feature decisions
like Google Wave
I never used Google Wave, I heard it was good though never caught on because of its unorthodoxy/complexity. I'm sure there are good lessons to be learnt from it though.
compartmentalize discussions around topics. The difficulty is they always leak into other topics
Agreed, keeping discussions focused will be really important. Some people I know diverge away from the topic of debate easily and quickly becomes unproductive. For example, two people might diverge while others have moved to a new thread. The problem is, as with many we've discussed, the only real automated solution is true AI. We'll just have to experiment with different UX solutions for this. I have a feeling user flagging will become the solution, just need to hone the heuristics.
Don't want to get into the UX weeds again though just as an idea for the future while I'm thinking of it. Maybe given some heuristic, we could convert a branch (sub-tree) into a new debate (the root of a new tree). People from the first debate would still see the converted comment as a comment, though you can no longer reply, you must follow the link to the other debate.
I don’t think there is a holy grail interface. It will be about making a trade off.
Agreed
Server-side rendering is the main thing. Makes interfaces super-snappy.
I see the benefits of this for SEO, though using standard href/a-tags with pushstate/historyapi you get crawlability. I agree load times are improved, though with resource caching (and the more extreme - appcache) and data caching (localstorage) you can reduce load times significantly (not possible with legacy browsers unfortunately though). Pure client-side rendering creates a nice separation between frontend/backend, run frontend on (www.foo.com) and backend on (api.foo.com). Allow a CDN to handle www and it'll relieve your backend from much of the superfluous traffic.
The main philosophy is that you should be able to remove a module and the app still works. And you should be able to add a feature by typing npm install my-feature and its auto wires itself into your project.
I think this a good strategy and I've dreamed of various ways to solve the Node code organisation problem. I've arrived to the opinion however the problem is Node/npm itself. The fact that we are able to monkey patch anything, place code anywhere, and load it in any way we like is the problem - this ability instant causes multiple solutions to arise, which then leads to divergence in the language, the excessive invention of DSLs and therefore never-ending list of "sub-languages" to learn. Not saying your solution is bad, only that it would be extremely difficult to make it (or any other organisation solution) mainstream Node practice.
I think this is an issue in all languages though Go (sorry about the Go bandwagon) was actively designed to prevent this kind of situation. There is exactly 1 way to format code, organise modules, organise tests, run tests, and there is an overarching philosophy that gets (sometimes harshly) drilled into users by the Go community.
now that we have Webpack...
I do like Webpack, I was using for a while in my startup to attempt to create a "single binary" (single js file) for distribution and obfuscation.
Yeh me too. I’m back in Aus July 5th for a month. We should catch up.
Sounds good! it'll give me a chance to chat to you about Europe, my girlfriend and I plan to go for a few months next year.
I think once we get the project building and deployed - it will be a fun project to hack on for a few hours each week.
Agreed, once we've got continuous deploy up and running - free Heroku should be enough - we can just hack around on Github and slowly progress, testing it ourselves on family/friends, hopefully recruiting others to the cause.
Sean Parker’s Brigade App Enters Private Beta As A Dead-Simple Way Of Taking Political Positions
This looks very interesting, looks like a cut down version of debator, focused on capturing user positions on things. Looks like each card has a comment button so there is discussion, though I'm guessing it's just plain chat.
It'll also give us a direction not to go in, so we're not just a clone. It looks like Brigade is a topic voting app, where I feel like we're decided on being chat app - with some pretty argument structuring and debate focused sub-chat forking.
Some thoughts Brigade.
Pros:
Cons:
I do like Webpack, I was using for a while in my startup to attempt to create a "single binary" (single js file) for distribution and obfuscation.
;) webpack/webpack#135
About a month ago I was researching deploying Node apps and came across this. Great idea btw! I still want to do it.
Disourse
(and the additional demise of NinjaBlocks - poor guys)
https://discuss.ninjablocks.com/t/ninja-blocks-whats-been-happening-whats-happening-next/3608
Seems like discourse is G+/Youtube 2-level style
The Stack Exchange chat is interesting too
http://chat.stackexchange.com/rooms/36/mathematics
Seems it's 1-level with user highlighting, maybe I'm missing some extra features?
Arrgh so many threading models!!
I'm personally a fan of Reddit style trees (with threshold default hide/show), I know some find it complicated and i could be wrong however I feel it necessary to have functional debates (combined with branch linking of duplicate arguments)
We need a way to experiment...
Agreed, we've got some great ideas tucked away in above sea of words, just need to get something going lol - I just made a tech stack document in the Debator folder https://drive.google.com/drive/folders/0B4i-6nXTaca7dlF1TmpZa2dnbmM (make any comments/edits) - also I've enabled public read so anyone can follow along
https://discuss.ninjablocks.com/t/ninja-blocks-whats-been-happening-whats-happening-next/3608
Damn. They built such a cool product. Hardware is crazy though. Everything overruns. I’ve seen it happen. Weeks turn into months so fast. I could list so many things that have overrun 4x with our current hardware product.
User highlighting is good for these rapid fire, many user, chat rooms. I don’t think its that useful for us.
Weeks turn into months so fast. I could list so many things that have overrun 4x with our current hardware product.
I just scheduled in 4x hours for this consulting work for this exact reason lol - we may get done sooner though better that than late
posts are not organised in chronological order
do they need to be? i guess we do want the user interaction to feel like a natural conversation...