Less Wrong is a community blog devoted to refining the art of human rationality. Please visit our About page for more information.

Programming the LW Study Hall

31 Post author: ShannonFriedman 15 March 2013 06:28PM

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.

Comments (54)

Comment author: dreeves 14 March 2013 11:22:47PM *  17 points [-]

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!

Comment author: TheOtherDave 15 March 2013 12:32:08AM 13 points [-]

I'm really curious to know how many people connect to that domain having confused "m" and "rn".

Comment author: brilee 15 March 2013 08:04:06PM 5 points [-]

...I'm reading every "pomo-" word in this comment section as "porno-" now. Thanks a lot.

Comment author: TheOtherDave 15 March 2013 09:19:27PM 0 points [-]

You should see what I can do with a varsity sweater.

Comment author: curiousepic 15 March 2013 02:30:38PM 6 points [-]

Pornodoros might actually be particularly effective for some.

Comment author: dreeves 15 March 2013 12:50:04AM 1 point [-]

Gah! :) I did not think of that! Kind of like how I did not think of how much "beeminder" looks like "beerminder".

Comment author: TheOtherDave 15 March 2013 01:16:58AM 6 points [-]

"101 uses for serifs"

Comment author: army1987 15 March 2013 01:04:08PM 3 points [-]
Comment author: BerryPick6 14 March 2013 07:42:00AM 11 points [-]

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.

Comment author: Mqrius 14 March 2013 11:29:01AM *  8 points [-]

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.)

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.

Comment author: Error 19 March 2013 04:47:01AM 1 point [-]

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.

Comment author: Zian 16 March 2013 08:17:23AM *  7 points [-]

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.
Comment author: Error 19 March 2013 04:32:42AM *  2 points [-]

A small team has started the project. We're currently working out what we need; you'll probably hear from us soon.

Javascript/XHTML/etc. experience

This in particular might be very useful.

Due to personal things, I don't have the time to lead or contribute -hugely- to this effort.

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.

Comment author: Curiouskid 28 March 2013 03:57:45AM 4 points [-]

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.

Comment author: EvelynM 20 March 2013 05:03:23PM 1 point [-]

https://developers.google.com/drive/realtime/application uses google drive for realtime collaboration

Comment author: curiousepic 15 March 2013 02:34:17PM 7 points [-]

A "Don't Break the Chain" feature would be nice, to rack up consecutive pomodoros.

Comment author: Tenoke 15 March 2013 02:42:41PM *  6 points [-]

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

Comment author: Mqrius 15 March 2013 09:54:19PM *  8 points [-]

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:

I'm not sure if it's a good idea to redirect people here if tinychat is still better until this gets done correctly

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.

is there a way to make the chat part larger?
&
bah, this chat window should be nr1 priority to fix

I'll have to edit the source code for it. I haven't been in the source code so far. Difficulty: Easy

I signed up with a username. Why is it not displayed?

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

hm I dont think I can make public rooms

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?

I don't like that the no [chat] notifications part, though

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.

it is making my computer work a lot harder [compared to tinychat] though

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

Confusing webcam selection screen

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.

Right now, the user experience delta to tinychat is: Login form. Manual resizing of every single video required. Loads of buttons and options to get lost in.
&
The barrier to entry is much higher than tinychat.

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.

Comment author: Mqrius 16 March 2013 09:37:50PM *  5 points [-]

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

Comment author: Michelle_Z 22 March 2013 11:50:27PM 2 points [-]

So it's now 3/22... is this idea dead or still going? And where are people doing this now?

Comment author: BerryPick6 15 March 2013 10:36:31PM -2 points [-]

An upvote isn't quite what I'm looking for here. Why is there no "this post is the best" button?

Comment author: Viliam_Bur 14 March 2013 09:14:59AM 6 points [-]

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)

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.)

Comment author: ModusPonies 14 March 2013 05:08:03PM 3 points [-]

If this were implemented, you'd risk seeing only one end of a conversation, and things could quickly get weird.

Comment author: Tenoke 14 March 2013 10:44:29AM 1 point [-]

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.

Comment author: curiousepic 15 March 2013 02:29:16PM 5 points [-]

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)

Comment author: fiddlemath 18 March 2013 11:09:38PM 8 points [-]

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.

Comment author: Error 19 March 2013 04:24:07AM 2 points [-]

If there will be effort put into actually building something.

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.

Later. Keep the project requirements small until it's working well.

Absolutely. Version 1 will be as minimal as possible. (probably equivalent to tinychat plus one or two features)

Comment author: curiousepic 19 March 2013 02:39:16PM 1 point [-]

Agreed in retrospect. Scope creep creeped up on me.

Comment author: Vaniver 15 March 2013 02:27:34AM 4 points [-]

Actual enforcement of the "no chatting unless the Pomodoro is on" and/or muted microphones.

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).

Comment author: Tenoke 14 March 2013 10:38:57AM *  4 points [-]

First of all, Thank you for doing this Shannon and everyone else who is involved.

Maybe one chat room with 20/5 and one with 45/5.

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.

Actual enforcement of the "no chatting unless the Pomodoro is on" and/or muted microphones

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.

Comment author: Error 14 March 2013 01:54:06PM 3 points [-]

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.

Comment author: BerryPick6 14 March 2013 03:11:17PM 2 points [-]

People were using webcams but not voicecomm, even though tinychat supports it. I'm not sure if that's an intentional norm or not.

I'm pretty sure it's intentional. Chatting is just less disruptive when it's only text-based.

If we go with OpenMeetings and have need of a server, that may be of use.

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.

Comment author: Mqrius 15 March 2013 10:15:58AM *  2 points [-]

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:

-Xmx1024m -Xms128m -Xmn512m -Xss512k -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=128m

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.

Comment author: Mqrius 15 March 2013 01:45:30PM 1 point [-]

It's working quite well. It's been going all morning without any issues.

Comment author: Error 14 March 2013 03:54:56PM 2 points [-]

I'm pretty sure it's intentional. Chatting is just less disruptive when it's only text-based.

I meant during the breaks (when presumably disruption is allowed) but yes, good point.

Comment author: ShannonFriedman 14 March 2013 11:58:17PM 1 point [-]

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.

Comment author: ShannonFriedman 16 March 2013 05:55:57AM 0 points [-]

Okay, sent you a message with the calendar link to schedule a call to discuss.

Comment author: Mqrius 14 March 2013 11:23:56AM *  3 points [-]

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.

Comment author: blob 14 March 2013 06:12:56PM 2 points [-]

Somewhat customizable: It supports widgets, but I'm not sure to what degree the layout is editable.

Rearranging the internal video canvas layout seems to be not supported.

Comment author: RomeoStevens 14 March 2013 05:18:40AM 3 points [-]

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.)

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?

Comment author: ialdabaoth 16 March 2013 11:34:15PM 4 points [-]

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?

Comment author: bsterrett 18 March 2013 09:24:34PM 3 points [-]

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.

Comment author: Tenoke 17 March 2013 05:02:17PM 1 point [-]

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?

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.

Comment author: Mqrius 17 March 2013 10:04:56PM *  1 point [-]

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 :)

Comment author: iconreforged 07 April 2013 11:01:20PM 2 points [-]

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.

Comment author: ShannonFriedman 27 April 2013 03:01:52PM *  1 point [-]

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.

Comment author: patrickscottshields 17 March 2013 07:26:29PM 2 points [-]

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.

Comment author: katydee 14 March 2013 04:24:18AM 3 points [-]

This is a good post but I think it would be more appropriate in the Discussion section.

Comment author: KatieHartman 20 March 2013 03:02:35AM 1 point [-]

I'd like to see gamification components - a point system, leaderboard, badges/achievements, etc.

Comment author: malcolmocean 15 August 2013 09:54:05AM 1 point [-]

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.

Comment author: curiousepic 14 March 2013 05:55:38PM *  1 point [-]

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.
Comment author: Tenoke 14 March 2013 06:02:46PM *  2 points [-]

A way to "buzz" people who you notice slacking, producing a non-mute-able sound on their end (with a cooldown timer).

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 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 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.

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.

Full screen sharing has more benefits than this and requires less/no further work.

Perhaps a bot that, upon joining, asks you to post what your task is for the current pomodoro, and otherwise actually kicks you.

Kicking for inactivity might provide a purpose but I am not sure if this is the best way to do it.

Comment author: Vaniver 15 March 2013 02:25:10AM 1 point [-]

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.

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."

Comment author: Tenoke 15 March 2013 02:43:41AM *  3 points [-]

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.