Programming the LW Study Hall
We’ve had considerable interest and uptake on the Less Wrong Study Hall, especially with informal timed Pomodoro sessions for everyone to synchronize on. Working together with a number of other visible faces, and your own face visible to them, does seem effective. Keeping the social chat to the 5 off minutes prevents this from turning into just another chatroom.
We’ve been using this Tinychat room, and implementing everything Pomodoro-related with manual typing. Is there anyone out there who’s interested in taking this to the next level with some custom code, possibly via the Google Hangouts API (Javascript), so we can have the following nice features?
Synchronized, software-implemented Pomodoros for everyone.
Maybe one chat room with 20⁄5 and one with 45⁄5.
Actual enforcement of the “no chatting unless the Pomodoro is on” and/or muted microphones.
Chat rooms with an N-person limit (several people report being more productive in smaller groups, so we’re not sure if N should be 5 or 10) and new chat rooms being spawned as earlier ones get full.
Moderatability (we’ve already had one troll). One person suggested the ability to +1/-1 one person per day, with a kick at −5. (Eliezer remarks that he expects this to be completely ineffective and that you need actual mods, maybe a group of trusted users.)
We only wish and dream that we could integrate with LW logins, but this would require LW development resources that apparently don’t exist. Maybe with enough grotesque hackery we could have a page somewhere that you comment to confirm you’re a Study Hall user, and the system could look up your karma from there to decide if you can cast +1/-1 user votes.
A custom page layout (which you don’t get if you use Tinychat!) which has the watching participants lined up vertically on the left, so we can work on something while still easily seeing our friends.
A small line underneath everyone’s image saying what they’re currently working on.
Maybe a common room where people can initially talk about what they intend to work on. (Eliezer says: This needs either strong group norms or built-in limits on talk time to avoid becoming a social chat timesink.)
The ability to branch off small sub-chat rooms (maybe with limit 2 or 3) in case somebody wants to talk (about work!)
A welcome page (mockup) where people see the group norms the first time they visit the Study Hall that serves as a portal.
This doesn’t “seem” very complicated from a programming perspective (yes, we all know about things that don’t seem complicated). The Google Hangouts API (possibly OpenMeetings) seems like it should provide almost all of the basics already. But unless some particular programmer steps up to do it, it won’t get done. If interested, comment below or email shannon.friedman@positivevector.com, and please mention your relevant Javascript experience.
- Announcing the Complice Less Wrong Study Hall by 2 Mar 2015 23:37 UTC; 75 points) (
- 22 Jan 2014 7:01 UTC; 12 points) 's comment on Open Thread for January 17 − 23 2014 by (
- 4 Apr 2013 20:36 UTC; 6 points) 's comment on Welcome to Less Wrong! (5th thread, March 2013) by (
I have a donation to the cause: the domain “pomochat.com”. (I owe the LessWrong community bigtime—I don’t think Beeminder would’ve gotten off the ground without it!)
I bequeath the domain with no strings attached. I can transfer ownership of the domain or just point it at wherever folks suggest. Assuming of course that no one comes up with a better domain!
I’m really curious to know how many people connect to that domain having confused “m” and “rn”.
Pornodoros might actually be particularly effective for some.
...I’m reading every “pomo-” word in this comment section as “porno-” now. Thanks a lot.
You should see what I can do with a varsity sweater.
Gah! :) I did not think of that! Kind of like how I did not think of how much “beeminder” looks like “beerminder”.
“101 uses for serifs”
Or kerning.
I think the more popular options for pomo times would be 25⁄5 and 50⁄10. That’s what we’ve been doing in the tinychat, anyways...
I really, really hope this goes through, since this co-working experiment is currently paying huge dividends for me.
Could this be somehow cheated? I mean, it’s not like you are in a real room with real people, so how about just hiding the extra people from your screen? You could set your maximum group size to 5, so only the first 5 people are displayed to you. Additionally, you could “follow” some other participants, which means that they alway appear in the top of the list, so they are more likely to get to the selected 5. (“Following” is one-directional, not mutual.)
If this were implemented, you’d risk seeing only one end of a conversation, and things could quickly get weird.
I think that it will start feeling more impersonal on its own and in addition to that the chat will probably get flooded during the pomodoro breaks which will discourage some people from chatting and that will make it feel even more impersonal.
I might be able to help build the site due to the following bits from my past:
Javascript/XHTML/etc. experience
WAMP/LAMP/ASP .NET experience
Coordinated >20 people across multiple time zones using web forums/online chat
Ran a website with a chatroom and used it to hold meetings
Slight obsession with user interfaces (built web applications/desktop applications)
Downside:
Due to personal things, I don’t have the time to lead or contribute -hugely- to this effort.
Ideas:
Keep the project management side of things relatively transparent (perhaps using Github, SourceForge, or at least keeping the spec in a wiki).
Have a public bug tracker.
A small team has started the project. We’re currently working out what we need; you’ll probably hear from us soon.
This in particular might be very useful.
You mention a wiki and/or bug tracker. I am thinking that setting up and running one might distract the programmers, but may not take much time for a single person to manage. Something to think about if it turns out you don’t have enough time.
I’m using workflowy to map out all my programming projects. I find it more useful than a wiki.
Others on LW have found it useful.
https://developers.google.com/drive/realtime/application uses google drive for realtime collaboration
I discussed this a bit with tsakinis, and I think that we can indeed create group norms that do the following:
Suggest people that are having a (long) discussion to do so in a private room
Welcome new people, find out what they’re working on, and then go off together to do a pomodoro in one of the study rooms
This will mean that someone who joins “just to have a look” will be positively welcomed, and get his first taste of the social work encouragement. The alternative, no lobby room, means that a new person will have to choose between arbitrary study rooms, then “drop in” on people that are working. For someone who’s unsure about the entire thing, this doesn’t help at all.
A potential alternative: No lobby, but have people note what they’re working on when they enter the room, and display it next to their name. Then establish a norm of discussing what’s shown during the breaks.
It doesn’t cover “just having a look”, but does cover “introducing your work” and “no tempting timesink.” And the prospect of being expected to talk about what you said you were working on may help keep participants on task.
This is a good post but I think it would be more appropriate in the Discussion section.
People are still coming to tinychat, so:
We have moved to mqrius’s openmeetings server at least for now. You need to make an account but there is no verification so you can just fill in everything randomly. And please when you register put something in either the ‘first name’ or ‘last name’ fields otherwise we will have a bunch of people in the chat with no visible names.
Edit; We are back on tinychat Edit2: Me and a few other users are also currently doing the pomodoros with screensharing on google hangouts
Since I fixed this, it seems OpenMeetings is stable. It has been running for at least 10 hours, with at some point 8 people in there, all streaming video. There have been a few notes in the chat which I’ll address publically:
Agreed. The redirection today was only for stresstesting it. If it’s not stable, putting further effort in it is useless. It turns out it’s stable though, so I’ll hack some more at it, and see what I can make of it.
I’ll have to edit the source code for it. I haven’t been in the source code so far. Difficulty: Easy
It uses the First & Last name as display names. I intend to gut the entire registration form to just ask for username & password, and use the username as a display name. Difficulty: Easy
Indeed, only the admin can. However, you can make personal rooms, and then give someone else an invitation link. I can make a few more public rooms, if there’s demand for that?
Agreed. I don’t know if it’s supported. If it’s not, I, or the devs, will need to add it. Don’t know how difficult that will be.
I don’t know if that’s because there was an unusually large amount of people there, or because the video quality is higher than tinychat. I can put a limit on the video resolution you can select, if people want that. Difficulty: Easy
I mentioned that to the devs 2 days ago, they fixed it the same day, and put out a new release candidate. However, running it, it doesn’t work for me. I’ve just notified them, I expect this to be fixed soon.
Login form will be gutted, I’ll cap video resolution, and the webcam selection will be simpler. That should get the barrier to entry on a similar level as tinychat, while retaining the potential of multiple public rooms and such.
Login form: Gutted
Video resolution: Capped
Chat area height: Increased
Webcam selection: Eh. The devs changed it, it’s a bit better, but not quite there yet. Maybe they’ll work on it more after the weekend. Edit: It’s fixed! :)
Chat notifications: Haven’t looked into it yet. Edit: Have looked into it, but haven’t figured it out yet.
I’ll have it running most of the time. Feel free to look around!
For the programmers, patches are available here: ftp://lesswrong:openmeetings@forecast.student.utwente.nl
So it’s now 3⁄22… is this idea dead or still going? And where are people doing this now?
An upvote isn’t quite what I’m looking for here. Why is there no “this post is the best” button?
A “Don’t Break the Chain” feature would be nice, to rack up consecutive pomodoros.
I would like to participate in the programming process, but I don’t know if I’m up to the task of taking it on single-handedly, due to current mental health issues.
The system will of coursed be used recursively, right? As in, the current tinychatroom, and soon the program that is developed to replace it, will be used to keep the programming team on-track and motivated?
This project now has a small team, but we’d love to get some more collaborators! You wouldn’t be taking this on single-handedly. Anyone who is interested should PM me.
I plan to use one of the current mockups like tinychat while development is underway. We are still evaluating different approaches, so we won’t be able to use the product of our work to host the study hall in the very short term. We’ll definitely make a public announcement when we have something that users could try.
Well, so far as far as I know only mqrius is working on it and he often does so while being in the room so yes.
For the record: A number of programmers have applied and, as far as I know, will be discussing with Shannon and beeminder people to discuss actually programming the required parts.
I, meanwhile, am just hobbying a bit to see if OpenMeetings can be turned into something useful. But indeed, I’m often in the room when I do that :)
If there will be effort put into actually building something, we might want to look into what other purposes it could serve, such as virtual (persistent?) meetups, remote CFAR sessions, etc. with features such as a “talking totem” that can be passed to enable audio from that person.
(Split from a previous comment for concept independence)
Later. Keep the project requirements small until it’s working well. Get it to serve one desired purpose very well. Only then look at extending its use.
This is true for any coding project, but an order-of-magnitude more true for a volunteer project. If you want to get a programmer to actually volunteer for a project, convince them that the project will see great rewards while it’s still small. In fact, you basically want to maximize intuitive value, while minimizing expected work. It feels so much better when your actual, original goal is achieved with a small amount of work than it feels when your tiny, first step is only the start of achieving your goal.
Yes, effort is going into actually building something. :-) Shannon got the ball rolling, and we’ll be contacting some of the other volunteers in this thread over the next few days. We’re currently exploring our design options. I’ll make a post on the subject once we figure out the proper approach.
Absolutely. Version 1 will be as minimal as possible. (probably equivalent to tinychat plus one or two features)
Agreed in retrospect. Scope creep creeped up on me.
One suggestion here: have during-pomodoro chats be queued (and, ideally, the queue is visible and editable). I often came across something in my reading that I wanted to share during the break, but didn’t want to have to store in a second location (like typing it somewhere else, or remembering it, or so on).
First of all, Thank you for doing this Shannon and everyone else who is involved.
Or maybe it should be voting based with the room switching to whatever mode the majority wants. Especially if there are limits to the amount of people per room this might please a bigger portion of the study hall’s participants at a time.
Maybe instead of no chatting it should be made so you can write 1 line a minute during a pomo or something like that so you can greet people or say bye if you are leaving mid-pomodoro etc. After all this is a social hack.
In addition maybe we should make some polls to figure out what most people desire before any work on this is actually started?
Anyway in the end it all rests on the decisions of the programmers who are going to try implementing any of this.
All right, where can I commit time-sensitive monetary rewards to those working on this? I’d like to see it done by next week, and I’d like to see it by about $50.
There are volunteer programmers working on this. They are working on it in their free time while having day jobs, and having not attempted similar projects previously. While I think that offering financial incentive is a great idea, I don’t think it addresses their stuck point (unless you could find a way to raise enough to hire someone experienced to solve the problem).
For an idea of what its like to take on a volunteer public good project, have a look at this post. I anticipate that they’ll succeed in getting the alpha launched within the next month or two. If you know any programmers who are experienced with the Google Hangout interface and/or team leadership positions and want to point them at the group to help, that would likely speed things up.
I’ve dropped in on a couple of these and found them quite worthwhile. One thing I did notice: People were using webcams but not voicecomm, even though tinychat supports it. I’m not sure if that’s an intentional norm or not. Given the brevity of the breaks it may not matter much.
As far as looking for developers...I have no javascript experience (I do Python and C mostly), but I’m a fairly competent programmer and I would be willing to step up if no one else better-qualified does. A good programmer can pick up any language they need to. I’ll mail you with some evidence that I don’t entirely suck at this.
Also, I’m a sysadmin IRL and have a couple servers lying around. If we go with OpenMeetings and have need of a server, that may be of use.
Awesome, I’ll be in touch shortly. We’ve had a couple of volunteers so far, so I’m giving it a little time for responses to filter in and then will start organizing.
I’m pretty sure it’s intentional. Chatting is just less disruptive when it’s only text-based.
We tried out mqrius’ server and encountered a few difficulties, but I have no idea what was causing them, so it could just be that OM is a bit shaky.
I poked around a bit more.
Basically, I got “java.lang.OutOfMemoryError: PermGen space”, so I figured it was a lack of allocated memory and increased the allocated heap space (Xmx and Xms). However, I did some further googling, and apparently the PermGen space is separate from the heap space. If it goes out of memory, it might be caused by either a normal process, or by a memory leak. It might be solved by having java unload its classes. I’m running it with the following flags at the moment:
Since I now applied a fix that might be specific to the problem, it warrants giving it another test.
But honestly, ideally, I should not be the one to test OpenMeetings: I don’t have enough knowledge to judge if I’m doing things wrong or if OpenMeetings is. The “fixes” I try are just suggested by random googling, not by careful consideration.
It’s working quite well. It’s been going all morning without any issues.
I meant during the breaks (when presumably disruption is allowed) but yes, good point.
Okay, sent you a message with the calendar link to schedule a call to discuss.
For programmers who are curious about OpenMeeting, I’ve set up a mockup server on my PC. It’s is not entirely stock install, I’ve changed a few configurations to make it more like what we want. No source code changing yet though. You can have a look at it here:
http://forecast.student.utwente.nl:5080/openmeetings/
Go there, wait for a few seconds for it to load, make an account (no verification or anything required), and then you can join the public room. You’ll get a popup for video settings: it shows a black screen initially, even though your cam does work when you hit “Start recording test”. I’ve notified the devs that this is very non-intuitive, and they’ll be changing it.
Instead of joining the public room, you also have the option to make personal rooms, and invite people in with a link.
My impression about OpenMeetings:
Pros:
Open source
Very customizable, because it’s open source
Doesn’t require a google account
It’s in active development, with an active mailing list on which people reply quickly
Easy to limit rooms, get a room overview, and create new rooms
Cons:
I find the documentation not very intuitive
It needs a server to run on
Screensharing is a bit clunky: You can’t really use it instead of your webcam, as in google hangout. Should be fine for 1-on-1 video chats though.
Compared to Google hangouts:
Pros:
Easy to set up
Doesn’t need a server
Supports screensharing
Somewhat customizable: It supports widgets, but I’m not sure to what degree the layout is editable.
Cons:
Needs a google account
Permanent rooms are a bit of a hack (by creating an event far in the future)
Neither is a clear winner. I’ll personally be looking at if it’s easy to change the layout on OpenMeetings. If that’s doable, then it’s already at or beyond the “baseline” level we have with Tinychat.
Rearranging the internal video canvas layout seems to be not supported.
What I understand from that is that there can’t be more than one video canvas. What we would like is to move the elements around: get rid of the large video (just the strip of smalls is fine), move the strip up, get the chat in the center. That kind of thing.
for now I’d recommend just using http://tinychat.com/lesswrong-social or something similar.
A bunch of people expressed interest in virtual meetups anyway, perhaps this could do double duty for that?
I had this idea the other day, and am throwing it here to get it out of my GTD inbox:
Once we have a dedicated system for this, have it include a leaderboard with stats like:
most-consecutive days logged-on
most pomos in a single day this week
all-time-pomos completed
Kind of like this habits site.
This seems like an opportunity for a startup. It could be a fun project to build startup weekend-style. The concept doesn’t seem particular tied to the Less Wrong community, and (based on a couple minutes searching for “online study halls”) there don’t seem to be other prominent startups taking on this specific challenge.
Some other Study Hall nice-to-haves:
A way to “buzz” people who you notice slacking, producing a non-mute-able sound on their end (with a cooldown timer).
I’d like a way to post easily visible rules to enforce on myself (“Buzz me only if you can see me at my computer an I appear to be websurfing—lesswrong.com is OK”).
It seems to me that having overlapping “shifts” of people on/off a pomodoro would be nice—such that those on break could keep an eye on those working, and buzz them if they’re slacking.
It would be very nice to have some way to broadcast the URL or program title of whatever window you have focused on your screen, especially for people who do not have or want to use a camera.
Perhaps a bot that, upon joining, asks you to post what your task is for the current pomodoro, and otherwise actually kicks you.
There is abuse potential as mentioned earlier. Pointing out in chat that someone is procrastinating should be beneficial enough through social pressure in this setting and it does not have any obvious drawbacks like non-mutable sounds do.
It defeats the purpose to some extent—the idea is that all of you work at the same time and rest at the same time. In addition breaks only account for 1/6th of the total time.
Full screen sharing has more benefits than this and requires less/no further work.
Kicking for inactivity might provide a purpose but I am not sure if this is the best way to do it.
This conflicts with the ‘no chatting during the pomodoro’ rule, and notifies every one instead. It looks like we’d either want private messaging, buzzing, or Rescue Time-style “this is what tabs this person had open during their pomodoro, everyone mock them for going on facebook for 30 seconds.”
The ‘no chatting during the pomodoro rule’ shouldn’t be too strict in my opinion. I think that most people are alright if there is some minimum talking during pomodoro times especially for relevant things like this or greeting people, am I wrong? In addition, immediate feedback has been shown to facilitate learning thus scolding the person immediately as you see them slacking off should help to change their behavior faster.
There is no need of any notifications of the chat unless you want them as well. Private messaging is also a desired feature but in my opinion it is better (but not neccessery) if everything related to the task at hand is out in the open in order to create a ‘community’ atmosphere.
A way to “buzz” people who you notice slacking, producing a non-mute-able sound on their end (with a cooldown timer).
I’d like to see gamification components—a point system, leaderboard, badges/achievements, etc.