Hacker News new | comments | ask | show | jobs | submit login
About those lava lamps (gist.github.com)
360 points by ColinWright on Dec 21, 2015 | hide | past | web | favorite | 66 comments

Left alone to our own willpower, most of us would be less accomplished. We'd live in dirtier houses, wash the dishes less, and treat ourselves less well. It's the promise of others seeing our accomplishments, being around our mess, or seeing us naked that keeps us doing right by ourselves. Doing chores is a chore, but social pressure and acceptance is a powerful drug.

I disagree. I clean my home because I like it that way. I work better in a clean, organized environment. I exercise because it makes me feel better and stronger, and is just a good idea for long-term health. I work on personal projects because I want the results of those projects to exist. About the only thing I do for other people is my actual job, which pays the bills for the larger home and more involved lifestyle that comes along with a wife and children. (Well, I guess the whole raising of children and participating in a marriage is done for other people. And charity work. But hopefully you get the larger point.)

Have you ever cleaned up because company was coming over? Then clearly external motivation was useful.

Now, you may have internalized a lot of this motivation, but at that point it's not a question of willpower just habit.

Believe it or not, some people clean because they like things clean, not because they want to impress other people. I am one of those people. A dirty environment makes me miserable, regardless of whether anybody else ever sees it (and I have many multiple-month spans of a clean apartment seen by nobody else to prove it.)

> Have you ever cleaned up because company was coming over?

Yes, but irrelevant. Note that I don't make an special effort, I just move my regular chores forward a bit so my place is seen at the peak of the cycle, rather than the trough.

the peak of the cycle

That's normal behavior. The point is by moving up the cleaning cycle you’re reducing the time in a trough which increase the average level. Aka 100,95,90,100,95,90... has a lower average than 100,95,100,95,90,100...

PS: Anyway, this is most people. If you’re an introvert that does not have guests it's a non-issue.

>Have you ever cleaned up because company was coming over?

I clean routinely and haven't had company over in nearly 3 years. I have absolutely no external motivation to clean my house other than I want my house to be clean. I exercise 3/4 times a week and my garage has become more or less a home gym.

I disagree with /u/ kaiuhl's examples and I'm not sure I understand their point.

My yards are a complete mess because I don't give a crap about how my yards look. I don't remember what my backyard looks like and I see the front yard twice a day getting in/out of my car to commute to work. I cut it from time to time when the sandburs become a problem.

I don't really consider the lack of lawn care to be less accomplished.

> My yards are a complete mess because I don't give a crap about how my yards look.

I think that's the core observation. Some people care about how their house looks. Personally, I don't, so I usually clean stuff up only when someone is coming over. Some, like me, care about how their documents look, or about using interpunction, paragraphs, etc. Others (most of the people I know) don't. There's limited amount of things one can care about, and different people care about different things.

Lawn care does matter at least a little, for entirely practical purposes. Chest high grass is a wonderful place for vermin to move in, for example.

Why have a grass lawn in the first place?

In many parts of the country, it will turn into grass (not Kentucky Blue, but some grass or another) on its own if you really ignore it.

Or, it was grass when Nadya bought it, and I assume he doesn't care enough about it to go to the effort to put something else in.

Something other than grass implies caring, which the "I don't give a shit about yards" people axiomatically don't.

I wouldn't call myself lazy, but extremely apathetic. If it involves effort on my part for something I really don't care about. I'm not going to do it because I actually value my time and would rather spend my time on something I actually care about.

Plus I'm not the home owner.

I don't feel like calling the estate management for them to contact the home owner to get permission to tear out the yards and put in a chip or rock then have to go through the hassle of calling a place to order chip/rock, killing off the grass, and... eh.. I just don't care. That's already 5 steps too many to change something I don't care about. Without even getting into the cost of doing so (which is just another layer of "I don't care enough to pay to have this changed")

To be fair, previous poster said "most of us". I'd be inclined to believe the majority are wired that way.

I wanted to say I disagree - I actually like cleaning up my house, taking care of things, keeping all maintained. And I do it for myself (do not live with anyone else).

But... as it turns out... it is all for show anyways. When I dig deep into "why" It comes out that I like to be seen as someone who cares and can do things right.

So, agreed.

Adam Smith in the Theory of Moral Sentiments (as paraphrased by Russ Roberts in How Adam Smith Can Change your Life): We all desire not only to be loved, but to be lovely. ("Lovely" being used in an older sense, meaning deserving of love.)



I was a non cleaner for a long time (until early 30's).

I realised something after having with someone who likes cleaning. A clean house made me feel better.

Not just the way it looks, but untidiness translated into a tiny little worry-bubble in the back of my mind.

I realised I felt free in a way I hadn't before. So now I clean.

This is a little off topic, but I was watching Seinfeld last night and Jerry was cleaning up his apt for a girl and he said he needed to clean the bathroom. George said, "No! You think rockstars have clean bathrooms when girls come over?"

I think they do. I also think they hire maid/butler services.

As much as some of us may gripe, social conventions are usually established because they're for the best.


I slept and dreamt / That life was joy.

I awoke and saw / That life was duty.

I acted, and behold— / Duty was joy. [0]


(Wish HN treated single line breaks appropriately.)

[0] http://workingwithwords.blogspot.com/2009/12/on-duty-and-joy...

And when you have bad enough depression, s/We'd/We/. You'd be surprised how little any of that shit matters when you are more or less disconnected from the society that wants you to take care of those things.

You've touched a nerve. Apparently HN is full of people who need very desperately to believe that they are purely rugged individualists.

This is a great story, but describing the lava lamp as a "completely irrelevant stimulus" misses a key insight into why this worked: it introduced (or strengthened) social pressure to fix a tragedy of the commons.

"Everyone knew broken builds should be fixed quickly", but each individual felt a benefit of being able to push code without waiting for compilation / tests to run. Breaking the build had a cost, but that pain was being distributed across the team (other programmers finding the problem), and delayed (waiting for them to complain). So the feedback loop was too weak to discourage breaking the build.

This is a classic tragedy of the commons, and far from being "unreasonable" as the author suggests, it's a fairly rational inclination for each individual actor. Other people will find my bugs and breakages for me, and probably do some of the diagnostic work for me too - why wouldn't I pass off that work to them?

Since a team is (hopefully) a society rather than a competition, one answer is "because I don't want to be known as a careless individual who creates work for others". That's why paying attention to the lava lamp isn't "unreasonable" either - everyone can see it, so it makes that social pressure much more visible. It also means the cost of a broken build is less likely to get spread across the team - if someone hits a problem, instead of puzzling for half an hour whether the build is broken or they did something stupid, they can just glance up and see the red lava lamp, and immediately exert social pressure.

By making social pressure stronger and more immediate, the lava lamp pushes the cost of breaking the build back onto the person who broke it. That restores a missing feedback loop, which is often an effective way to change a culture.

In addition to all of the above, it creates one of the greatest impetuses (impeti?) for programmers, an arbitrary and voluntary constraint. I don't really have any evidence other than anecdotes, but every programmer I know loves them in some form or another.

A better way to state this, rather than a reason/unreason lens:

"In every job that must be done / there is an element of fun. / You find that fun and snap! The job's a game."

Wait, so every task I undertake will become a piece of cake?

I'd say a lark, a spree, it's very clear to see

Games don't have to be easy for you to enjoy them (ever play Super Meat Boy, or any old Nintendo game?).

Making a game out of fixing a bug before a lava-lamp bubbles up doesn't make bug fixing easier. It just makes it into a more compelling option than taking off for an early lunch after deploying.

Apparently there's a Mary Poppins' joke that went over my head.

...You ruined it. It was so perfect and you ruined it.

Just because games are fun, doesn't mean they're easy :)

If someone makes it into compeling game, yes. But it is very hard to do it, and in this case it happened by accident.

Any company big enough to hire I-O Psych people to do efficiency/ergonomics/morale/whatever studies, should also have the budget to afford to keep a game designer or two on staff to design the game that is "working at this company."

I don't expect the average startup to get anywhere with that (unless they're a games startup), but the bigcorps should be doing this sort of thing, and should be producing tons of evidence in how this-or-that idea works out that startups could just learn from/copy/steal.

It won't work. Game made with intention to trick you into working loses its fun value the minute people figure out its intention. Which, in this setting, means your game is a waste of money even before it's deployed.

Or worse, it could backfire and turn teamwork into a die-hard competition. That happens when you tie the "game" with serious monetary or status rewards, and I think it's considered a pathological situation.

I think you're thinking of a very specific meaning of "game design." Game design is the design (and the craft) of systems of incentives, and you can really [dis-]incentivize pretty much anything you can imagine. The government has some game designers (though they didn't hire them under that job title) responsible for figuring out new tax credits to incentivize certain patterns of purchasing, spending, home-ownership, family-starting, whatever.

In this case, consider LoL's honor system[1]: an incentive system designed explicitly to reward good sportsmanship, which apparently works quite well.

You own company could make a game out of, for example, technical debt: imagine the equivalent of "carbon credits" handed out for good work, that team-members must then buy from their peers (not necessarily with money) to be able to commit technical-debt-creating code.

[1] http://www.themarysue.com/so-far-so-good-league-of-legends-t...


And, on a tangent, here's a bit of a rant: game designers are really wasted on the current trend of "casual game" slot machines. Game design isn't about "how to make people addicted to a game" any more than industrial design is about "how to make people keep pressing the buttons on your radio." Inspiring addiction is what CEOs want, but it's not what game designers are trained in. Companies like Zynga could have done much better hiring people with experience in designing the layouts for casinos and theme parks.

I agree with your points about incentive management, but I think it's not me who thinks about a very specific meaning of "game design". I think about the usual one, which is making games - stuff people do for fun, as opposed to work. I read your comment as extending the meaning of "game" to encompass all the stuff that can be gamified. So for instance, technical debt as carbon credits is an example of gamification, not of creating a game - game as in fun, something you participate in as a choice, not an obligation to an external party (not meeting which you can be punished for).

Ah, I don't think we disagree: "game designers" as a profession are almost solely employees of games companies. "Game designer" isn't even a job role you can hire for; it's just what you call someone (usually a programmer or writer or project manager in a games company) when they have enough experience to put on the game design "hat."

But experience in game design—making games/toys/puzzles engrossing, fun, educational, or whatever-else—teaches game designers a set of skills that are applicable outside of games. It's not just "gamification" (which is almost only used in reference to systems of points and rewards used to bait the Achievement-oriented Bartle types[1]); it's the architectural level of "systems engineering", the same thing done when e.g. NASA tries to figure out what goes into a working satellite: designing the satellite itself, designing the support systems for it, designing an ongoing training system for the ground crew, creating training policies so that new lessons are incorporated back into new training, sourcing replacement parts and sourcing budgets for part-replacing missions and sourcing suppliers when other suppliers go defunct and setting up competitive supply-chains so a monopsony isn't created that chokes the budget... and so forth.

Figuring out how to make a cohesive system, composed of both humans and technology, get something done together, is mostly working out incentives so that the system doesn't fall over from one of a thousand ills. There's more expertise in the pinky finger of an MMORPG Live Team content designer on this sort of topic than in the entire apprenticeship of a civil engineer.

[1] https://en.wikipedia.org/wiki/Bartle_Test

Until employees decide those games aren't fun anymore and start their own game, involving outgaming the game designers. There is a limit to every psychological trick and big corps sometimes have trouble noticing when stuff that worked for them for years ceases to work anymore.

The cake is a lie.

Indeed, it was the lie that was delicious.

If you were to use a higher wattage bulb with a dimmer that lets you adjust the melting time and then deliberately set that time to 15-20 minutes, would people still try to beat it?

My guess is no. Once a person gets involved in picking the time, it stops being a fun thing to challenge yourself against, and starts being your annoying boss trying to micromanage failed builds.

That's true, I think it's human nature to get defensive when there's any personal element. Same reason it's ineffective to say, "you're wrong about X", but rather more effective to say, "the thing you said about X is wrong". If it's about the person that said the thing rather than the thing that was said (even if it's just the slightest whiff of it being about the person), even the most confident and self-aware brains can get super defensive without even realizing it.

Maybe you could fix it a bit by making the time semi-random. It's not nearly as fun if it's a static clock and accurate down to the second.

It won't work either. You still have a person trying to play tricks on others, people resent that. You've transitioned from a self-imposed PvE challenge to an arbitrary one imposed by your boss. The game stops being a game and starts being work with weird rules.

Right, I think it works because it's arbitrary. It just happens to be in a sometimes realistic timeframe for a fix, so you can make a game out of it. If somebody else is setting/influencing the benchmarks, suddenly it stops being fun. You'd complain about "This is terribly balanced. Timer should be at least 30 minutes. Nerf wattage next patch!"

For a naturally occurring timer, you just work within the constraints you're given. That's what they are and there's nobody to blame or change it. (I mean, you could easily put a lower wattage bulb in, but that won't occur to most people)

Or maybe it's like the placebo effect where you know what's going on but somebody could control the timer and it works anyway. Who knows?

At one company I worked, we had a rubber chicken. When you broke the build, the rubber chicken lived on your desk until somebody else broke the build.

One developer got a little annoyed at this so he cut the chicken's head off, then repaired it with hose clamps. It was sort of a Frankenchicken.

> One developer got a little annoyed at this so he cut the chicken's head off

That's exactly what happens when such games are overdone or (ab)used in attempt to "compensate" for programmers being unsatisfied with whichever aspects of the project.

I also feel like this potentially unfairly makes the deva who have to work on more sensitive and critical sections look worse than they are. Perhaps it breaks because its a far more critical and sensitive space? Or am I way off base on this thought

The chicken was intended to be a silly friendly thing among our team, but not everyone seemed to take it that way. Yes, I and my team earned the chicken more than anyone mainly because 1) I seemed to check in the most code, and 2) our projects all started with the letter 'a', so we got the blame on days that multiple projects were broken.

Commonly we see many folks (particularly non-coding managers) treat a nightly build as some sort of indicator of developer competence or code quality. I have even heard anecdotes of devs being fired for breaking the build in a sufficiently large organization (but not the one with the chicken). A successful nightly build is one of those things that's trivially easy to measure and on the surface looks like progress. But of course, the easiest way to never break the build is to just never check any code changes in.

But I believe strongly that a nightly build should be treated as a tool like any other: in any large software project there will be times when a dev makes an honest mistake with the checkin process or simply cannot succeed at testing every interdependency by building on his own box beforehand. So give the devs something to break, and this ought to be the function of the nightly build. If the nightly is so critical to organizational progress that it simply must not be broken, then you need to give the devs something else.

The system should be made to serve its users, and not the other way around.

Not off-base at all. The rubber chicken shame totem would demotivate any team whose members might be assigned high-risk work. Too much stick, not enough carrot.

Shaming displaces camaraderie.

Beheading the chicken was a bold statement.

Apparently SpaceX uses a cardboard celebrity cutout for similar purposes:

"100% of software engineers don't like Justin Bieber"


So what's a good way to build a build lava lamp in 2015? I'm thinking wall adapter that has wifi and offers a simple webserver that switches on and off on POST.

Lots of off-the shelf "smart plugs" these days, with varying degrees of open-ness and convenience to their APIs.

Or for DIY, a cheap micro plus a opto-isolated relay board.

Something neat that I found out recently is the existence of solid-state-relays. They are basically opto-couplers that can directly switch a load. You can use them instead of normal relays, and drive them directly from a digital io pin. Pretty sweet.

Or just get a particle photon with the relay shield. Extremely easy to set up, and it comes with a REST API.

>Lots of off-the shelf "smart plugs" these days, with varying degrees of open-ness and convenience to their APIs

What are some good ones?

> Or for DIY, a cheap micro plus a opto-isolated relay board.

What does "micro" mean in this context? Microcontroller?

To be pedantic: you should use PUT. ;)

Actually, after thinking about it, I'd use a GET and I'd structure it something like

Then to get the state of the plug:

In jQuery this would be a easy call

Of course you'd have to code the plug server to add the appropriate CORS headers but that's true no matter how you structure the API.

You could either replace 'smartplug' with the local ip of the device or alias it in `/etc/hosts`. All pretty standard stuff these days. If you wanted to expose it to the outside world (which actually should be hard to do) you would use DHCP reservation based on it's MAC address and a DynDNS service.

The part that stymies me (and which no-one seems interested in addressing!) is what hardware to get.

> Actually, after thinking about it, I'd use a GET

Why? Using it to change state seems precisely wrong. PUT seems more appropriate.

as far as hardware for the actual lamp itself, it looks like melting some colored candles and some water in a glass jar over an incandescent bulb should suffice for starters. more advanced "ooze" formula including anti-freeze found here: http://oozinggoo.com/ll-form5.html

Yeah, that's not really the point. I meant something more like this:

I find it pretty incredible something like this doesn't already exist from a major manufacturer! I mean, I understand why Belkin/GE/etc want to lock you into their ecosystem, but it seems not that hard to build an open alternative - and eat their collective lunches.

We use a old traffic signal powered by a Raspberry Pi to similar effect. We have found it quite useful in providing timely feedback and encouraging the quick resolution of issues.

You can see pictures and source: https://github.com/tantalic/build-light

reminds me of the days when large computer hardware had warning lamps mounted on top, whether it was a printer or tape drive, so that it was obvious to even those unfamiliar with the systems that something was wrong. So it was almost a sense of pride among the operations staff the lights were always out

A problem light. Wow, Dad. What a super idea. No, you should always put one of those on the ninth wonder of the world.


At a video game studio I worked at a while ago I hooked up some (real) traffic lights to talk to our CruiseControl.NET server to report breakages. But actually it was just for fun and didn't make any difference - the main thing was that we managed to instil into the culture a desire to always have a working build. Pretty much all the programmers were very proactive about fixing breakages, even when it wasn't a programming problem. It was sometimes possible for artists and level designers to break the build, and the programmers would always be pretty quick to respond and help them figure out the problem and to fix it or build in safeguards and tests to ensure they couldn't check in broken stuff.

Programmers would be wise to understand how irrational people are and that reason rules very little of our lives.

Why do people treat a broken build as some kind of emergency, when you can just revert the commit? It's a trivial fix that anyone can make in about a minute.

Often this is done, manually. With a big enough team and code base, by the time the brokenness is detected, more commits which depend on it will have piled up.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact