Show HN: Floobits – Remote pair programming done right
floobits.com
floobits.com
I didn't realize it would be as hard as it's been. Operational transformation is hard. Persistent network connections in editor plugins are hard. OT + network connections in editor plugins is comically hard.
I think it's important to be able to trial the private session. As I am doing work for my company, I don't want anyone else looking at the work, but I want to try out the product on something real.
Also, I was alarmed that my session started off as publically listed and viewable as it was created from a private codebase. Ideally it wouldn't ever be public unless explicitly set to be.
We will also change new workspaces to be private if at all possible given the user's limits.
I did try though and was very impressed.
Very, very cool! Thank you for charging money so you can build a real business and keep improving on it.
Please, please work with the JetBrains folks to integrate w/their suite of products? Please?!
We haven't written any discovery stuff yet, but it'll happen eventually. I was playing around a while back and wrote https://floobits.com/code_roulette, but it isn't linked to anywhere on the site.
(Also, a copy-writing suggestion: on https://floobits.com/plans, the words 'free plan' link to the signup page. I clicked on the link looking for a blurb about the free plan. Y'all should add such a blurb. Or link to the signup page from the words 'sign up' instead.)
Finally giving it a go in emacs, I just get a Floobits buffer that continually spits out "floobits agent says: ... select(): No socket." non-stop.
Edit: Trying it again a second time seems to have worked. Temporary bug, or pebkac perhaps?
Is there a github repo for the individual plugins so we can track issues/possibly enhancements?
1. The backend is non trivial and is getting more complex as we move forward. It sucks to make users run their own service. Running a full blown server out of a editor plugin also isn't feasible.
2. As a user, I don't want to have to deal with firewalls. As a founder, I don't want to have to deal with supporting users punching holes through their firewalls.
3. Peer to peer is very hard for this system; keep in mind, we get cascading failures with increasing latency as patches fail to get merged and instead cause conflicts. Conflicts make us drop patches, or try to do the equivalent of a rebase.
4. Accounts of some sort are required for access control.
5. Finally, we are trying to make a sustainable business.
We understand your concerns- we've also been burned by services that shut down: https://floobits.com/pledge/
Currently I'm using sqwiggle + screenhero and it'd be killer if they could somehow have a baby together.
Screenhero allows me to share my emacs (or any window). Works like a charm.
diff --git a/floobits.el b/floobits.el
index 5f05d33..029e6bd 100644
--- a/floobits.el
+++ b/floobits.el
@@ -451,3 +451,5 @@ See floobits-share-dir to create one or visit floobits.com."
(cons 'added added-text)
(cons 'deleted deleted))))
(floobits-send-to-agent req 'buffer_list_change)))))
+
+(provide 'floobits)However A 12 week class with 30 students is 1.5k, if I am understanding how your plans work correctly, and I don't see that happening. Given that it's less likely to be always on programming when it's students and teachers, I think a significant deduction would be reasonable.
Alternatively, you could spin off a classroom focused version.
Maybe something that will need to wait for when you are more profitable, but if you get people used to your service as a student, they will carry it with them.
As someone who's past tutorials, yet not quite confident enough to seek employment with my hobby language, I'd love some small-group or individual pairing experience (sort of like golf or skiing lessons, only for programmers.) As long as the cost for facilitating this is reasonable, I wouldn't have a problem paying for it.
discarding because event origin is
Object
?follow=1:62
Connecting to https://floobits.com:8448/ ... b8cb474e2761.js:427
Joining workspace Floobits / hn_feedback b8cb474e2761.js:445
room_info
Object
b8cb474e2761.js:4535
Uncaught TypeError: Cannot read property 'path' of null b8cb474e2761.js:205
(anonymous function) b8cb474e2761.js:205
x.event.dispatch jquery-2.0.3.min.js:3
y.handle jquery-2.0.3.min.js:3
Chrome on Windows 7. Seems like none of the buttons (like delete) work, either. I don't see any activity other than people in the chatroom. Just a black center screen.We are scrambling to fix the problem right now.
1. I renamed the default FLOOBITS_README.md to teach.py, but the path at the top of the page still showed the README filename. teach.py showed up in the left nav, so I don't really know what was going on there.
2. When I was loading one of the workspaces under https://floobits.com/u/ggreer, clicking on the files in the left nav took really long to load, about 8-10 seconds. I almost thought that all the files were blank at first and were there just to show the nested directory structure.
Apart from that, I think this is really cool! I'm definitely going to be using it over the next few days.
2. Yeah... it turns out that one EC2 medium instance isn't the best thing to show HN with. I booted 4 servers to split out services, but I doubt we'll have everything moved until tonight.
Thank you for your feedback and your patience.
But with a lightweight protocol like ssh with tmux/vim things feel much more responsive.
The responsiveness is the problem I assume they're trying to address with the individual editor plugins..
I described a similar solution to remote pair programming about a year ago : https://gist.github.com/aantix/1999816
1. Both users are confined to looking at the same thing. 2. Only one user can input at a time. 3. One person may be stuck in an unfamiliar IDE. 4. Only 2? people can work on a thing.
We started to build Floobits after pair programming for 8 months or so because nothing else worked. Floobits also has a web based editor and basic support for terminal sharing. We also get to do really neat things because our protocol understands changes in source code; for instance, Floobits is self hosting and streams our changes to staging in hard real time. You can imagine other integration around source control, continuous deployment/integration too.
I think ScreenHero has its uses, but pair programming isn't its strongest.
This is my use case: I work with designers who are hesitant to use git and make changes really quick and test them on a live WP or similar site. Often times we have two or three people needing to edit a single css file and everyone has to open/close the file often to not overwrite the changes of others. Maybe there is a better workflow, but a collaborative editing tool like this will go a long way in streamlining this process.
In cases like these, i think this could actually help.
I prefer CLI to be honest. I will check out SmartGit, never really heard about it before. Thanks.
edit: I'm taking down this link as we are completely crushed- I suppose getting DOSed by our own users is the best way to go down.
edit: Ah I see you can hold alt and click with mouse to get your own cursor
Really want to see this working well!
person 1:
screen -t "foo"
person 2: ssh person1@blahblah.com
screen -x "foo"
??You mean
screen -S "foo"
right?edit: Never mind. Looks like I can't.
Forcing N users to share one screen and one editor sucks.
Finally, absolutely no one wants to deal with private keys and setting up users/groups.
$ mvim -v filenamePerson 1 (in screen):
^a:acladd person2
Person 2
screen -x person1/
I don't know how well it would work, but it would be cool to use a platform like this to try it. Maybe some open source app. It would be like an Amish barn raisin'
As for the barn raising, its not too uncommon for ggreer or I to spot bugs in other peoples code on Floobits. There is probably an entirely different business somewhere in there.
David Socha from the University of Washington is looking for teams to video for his research into collaboration.
twitch.tv does a nice job of notifications, and in providing the opportunity to observe how other people play.
(Instead of game channels; programming languages, problem spaces, ratings of team members...)
Package Control: Error downloading package. URL error unknown url type: https downloading http://github.com/Floobits/floobits-sublime/archive/0.17.5.z....
If you're curious how the work-around code works, see https://github.com/Floobits/floobits-sublime/blob/master/flo...
The shared objects that code tries to load are all in https://github.com/Floobits/floobits-sublime/tree/master/lib
Could it be that my system default python is 3 (not 2)?
See manual installation.
With some more polish, this could become a real wave-maker.
You could consider making it a bit more of a "freemium" model. Something like allowing users to set up 1-2 private coding collaborations for free, but without any version control, terminal-sharing, or the other bells and whistles.
Sadly, we didn't use any anchors so you'll have to scroll to "How does Floobits work under the hood?" If you have further questions, let me know.
I don't know why, but I was expecting a place to get in touch to other programmers to do Pair Programming (i.e. for small katas or side projects). Does it exists?
If it doesn't, does anyone wants to have a bit of fun doing Pair Programming to create it together? :)
Have tried both the master branch and teh 0.17.5 tag. Same issue.
The package control install was not working so just copy pasted the directory into sublime packages. Could this be the issue?
Could be good for remote education. In fact I would be willing to pay someone to teach me objective-c this way.
My colleague was using the ST integration, and found that sometimes he would be locked out of a file completely after I'd done some visual block changes. I'll give it another whirl some time and provide proper feedback if it still exists.
I am not missing anything, am i ?
"Sorry, but an error made this operation impossible."
Is this feature not enabled here, or is the site slashdotted?
I'll have to look into it more. Sorry about that. :(
I wonder which will be more common in a few years - something like this, or collaboration fully in the cloud, like c9.io.
In the mean time, I think we should use the best of both worlds.
Response = "it's nice"
People will show how focused they are, or frustrated, with small facial expressions. They are unlikely to talk about these transient states. But, these states will tell you: this bit of code is ugly; I'm tired and need a break; Wow, that's great!
"Error handling room_info event with data {... }: path is on mount 'd:', start on mount 'c:' "
have fix this?
and back up.