Couldn't agree more. If the behaviour or outcome of a function depends on the current time, then the current time is an input to that function. Inputs to functions should be declared explicitly as arguments where possible.

The existence of Time.now and the fact that it's possible to stub this method are not in themselves a good enough justification for excluding the current time from the list of explicit inputs. The length of the list of a function's inputs is one of the indicators of whether a function has too many disparate inputs and therefore too many responsibilities. Obscuring this number is likely to lead to more cluttered code.

In DHH's example, Time.now should be called somewhere higher up the call stack where its return value doesn't matter to the outcome of the function in which it resides. It should look like this:

def publish!(time) self.update published_at: time end

That way the inputs are clear. It also happens to mean that you can test it without requiring the linguistic flexibility provided by Ruby, but that doesn't mean that testability in inflexible languages is the only reason why it's the right thing to do.

Mostly disagree. Pure functions are beautiful and have their place, but not every function should be a pure function. And a Rails controller method is the opposite of a pure function - it has a database connection, several file descriptors and hundreds of objects at its fingertips. That is its strength, and DI has no place there.

That said, if you have a pure function, and you need to know the current time, consider keeping it pure with DI.

That was effortlessly the worst keynote I have ever sat through, with the added bonus of a grotesque "gamer babe" interlude that saw a married 49 year old CEO pretending to hit on a model at a tiki bar. Rancid 1993 puke.

All that said, their Shield handheld console looks pretty spectacular, if vaporous.

5" ~retinesque~ touchscreen clamshelled onto a full-size game controller with all the bells and whistles. Outrageously powerful, has HDMI, USB, headphones, and holds a 5-10 hour charge. Runs pure Android with full Google Play access and a specially curated library built for the console itself. Can also wirelessly stream games off of a PC, including from Steam Big Picture. Cloud storage of game state comes free.

Not announced: price, storage, availability, who's making it, sales channels, or anything. So whatever. But this -is- the Sony PSP slayer, and it is another sign that all roads lead to Android+OpenGL ES on ARM as the future default game platform.

While a somewhat valiant effort from a specs/control perspective, I think this is going to be a pretty big flop. Primarily because it doesn't have much of a market, which means that they won't be able to overcome the chicken-and-egg issue.

There's a reason why the main gaming console manufacturers also have large development studios as well. Every new gaming device needs a killer app to launch it past the critical mass where it becomes economically beneficial for outside developers (3rd parties) to also release software for said platform.

nVidia doesn't have game studios (that they've announced anyway) so they're going to be relying on the broader Android gaming developers. However, Android developers are going to be targeting the hundreds of millions of phone/tablet Android devices and not unknown number of Shield owners.

So if very few developers are going to take the development resources to make games that take advantage of the Shield then how many gamers are going to want to spend the kind of money this will cost, when there are MANY other great alternatives (E3 this year will see the announcement of PS4 and the next Xbox).

If the hardcore gamers aren't going to be purchasing this system, then that leaves the so-called casual gamers. However, by definition this thing is targeting hardcore gamers so it doesn't have much appeal to casual gamers at all. Which means there's a very narrow market segment that is seriously interested in this.

>In a side-by-side Web page loading test with Google's Nexus 10... Tegra 4-based prototype loaded a set of Web pages nearly twice as quickly... the Tegra tablet appeared to be running the stock Android browser, however, while the Nexus 10 was running Google Chrome

Scumbag Nvidia? I would doubt that either browser makes significant use of >2 threads, leaving most of the performance difference that was not due to the 200mhz clock increase explained by the different browser.

Can't wait to see that chip in the Nexus 7 2 or however they brand it. Or maybe the Nexus 10 2? A15 cores are such a noticeable boost over A9.

I'm really hoping once this thing gets benchmarked that Nvidia finally hits it out of the park on the graphics side, for being the foremost GPU company of the last decade they sure screwed up ULP Geforce with 7000 series gpus from a decade ago. I think these are Kepler cores, and they have proven themselves fantastic on the desktop.

It's really a pity that Android makes it so difficult to get down to the metal on this hardware. If I want to take advantage of Neon intrinsics I have to use the NDK and write them by hand. On iOS I just use the Accelerate framework directly.

Funny to see something even more locked down than Windows being cheered by the Linux crowd. There are no native apps,you need a Google account to access it(don't know what happens if your Google account happens to get disabled for whatever reason). Google neither releases the source for it's online offerings, not is it very useful even if they do.

The kicker is that the 100GB free storage on Google's cloud is only free for 2 years, after which you have to pay for it.

How is any of this better for consumer freedom than just Windows 7? The answer is not "because it has a developer switch on the back to install Ubuntu"; you can do that on a Windows PC as well. And an overwhelming percentage of normal consumers buying it won't be installing Ubuntu on it. In fact, I suspect that this kind of device that is absolutely at the mercy of a corporation is much closer to RMS dystopian vision than any Windows PC.

Would it make any difference to the user or even developers if it ran GoOS as the kernel instead of Linux? This is pretty much like a Tivo or a router.

I have the first CR-48 Chromebook that Google sent out a few years ago. The first iterations of Chrome OS were a disaster. It was basically a full-screen version of Chrome browser behind a login window. Ugh.

However, for kicks and grins I pulled out the CR-48 a little while ago and was pleasantly surprised that I was able to update to the latest version and - gasp - it was actually quite usable!

I have been using it on and off ever since (it sits in our conference room as a general note-taking and projector device) and I must say - there's absolutely something to this thing. The battery life is great (like 9 hours), screen is OK, keyboard is nice. Trackpad is still miserable.

For the most part my non-professional-work-life lives in a Chrome window anyway (gmail, google docs). If it had a decent text editor (I guess there's a SSH app you can get) I could see it working pretty well as a web development machine.

But for the proverbial "Aunt Tillie", this would be not a terrible device if the iPad was a little too simple. Auto-updates, Chrome syncing, Google docs? Pretty compelling.

Ah, let's remember one thing real quick. When people talk about macbooks being the best selling laptop line by a large margin, someone else always points out that that is because it represents the entire access to that ecosystem (i.e. the total sales are not split between brands).

In this case, you're also looking at a very cheap laptop in an OS where there are only two MODELS even on sale, one of which is older. It does not necessarily, or even probably, signal a sea change in the way people think about OSes.

Microsoft may not last as long as we (I) have always assumed â€" on the PC front at least it seems to be bad news and more bad news. Mobile sales already dwarf desktop, and installed base will soon follow. Even if MS is successful in mobile, there's far less fat to play with â€" it can't sustain licensing costs (netbooks already dinged it) either for OS or applications, and its network effect lockin is pretty much broken.

This is sort of like when netbooks took over a significant marketshare for a brief period. It's new, it's novel, more importantly it's cheap and that's a big motivator. When netbooks were selling like hotcakes a lot of them came with Linux distros pre-installed, so it's not like Linux doesn't get its moment in the sun every now and again.

Funny that Linux is everywhere in the form of Android and Chrome OS, but for all the efforts of Linux on the Desktop, it just isn't terribly successful. Is it a marketing thing? By all measures, Ubuntu (preinstalled) on a laptop is more functional than Chrome OS, or is the continuation of the dumbification of computing interfaces?

Having played around a bit with the original 1998 Mindstorms hardware, I found that the main factor restricting what I could build was the limit of three input and three output ports. Its a bit disappointing to see that the EV3 has added only one more input and one output port.

If Lego had made the physical connectors smaller then I don't see why eight or more sensor inputs couldn't have been allowed. I appreciate that outputs are limited by the on-board power, though.

I'm glad to see Lego continuing this line of logic - it's amazing what can be done with these mindstorms with the proper tools.When I was much younger (about 12 years ago), I built a bipedal walker with gimbaled hips and articulated ankles and knees out of two first gen RCX units, and it managed to get me a free trip to ISEF, which in itself was pretty neat. I was using NQC [1] to program them in tandem, which at the time was pretty neat sauce. I've fallen way out of the loop with these, but it seems like Lego is encouraging good work that removes a lot of the stumbling blocks you'll see when using more bare-bones components like raw servos and arduinos.

My only wish was that Lego would start selling 'engineering' sets for those of us that grew up with them to use for prototyping - I got through a few hairy sessions in college using the tub I'd kept from when I was younger, but with the sets these days there's a lot of stuff you don't need. Something like the fischertechnik toys but with lego's distribution and selection of parts. Alas.

I remember a site on MacOS vs Windows dialog boxes from way back in the late 90's, a time in which many confusing UI patterns abound. It's too bad it's still not around as it is a great guide on how to display the question to the user correctly.

It went on to display a few common(windows 95 I think) dialogs that would leave most users confused. Then showed the Mac dialog in similar operations where it was very clear what the intended outcome of each button would be.

A random idea, maybe an alternative is to label the buttons w/ the actions themselves, i.e. no message + Y/N,Ok/Cancel labels. For Example, instead of:Would you like to cancel this transaction? {Yes,No}just have: {Continue Transaction|Stop Transaction}

As long as you feel the benefits outweigh the downsides the only person you can complain to is yourself. You're still going there aren't you?

I've had an episode quite comparable to this one and it was the last time I visited the US. I don't bitch about it, I don't begrudge the border guards their jobs or attitude (I assume they get a lot of shit heaped on them every day, not an excuse for a non-professional attitude but I'm sure that it eventually wears you down). I simply took my few-hundred-K per year benefit for the US elsewhere, their loss.

Don't like US immigration? Good, don't emigrate to the US. Once enough people do this that it starts to affect the US GDP I'm sure there will be some change. As long as everybody accepts it this will continue or it will even get worse.

I had a pretty lucrative offer about two years ago to become involved in a company. The catch: the work had to be done in the United States. No thanks... But call me when the TSA is abandoned and the border guards are no longer treating immigrants like shit. You know, the way it used to be before everybody went crazy.

And on an off-topic and non-related note, additional conditions would be that Guantanamo is closed, the US ceases its drone program and the CIA gets thoroughly reamed for their 'renditions' program, including full exposure of all parties that were involved domestically and abroad.

Until then the US will have to do without me, I'm quite sure they don't care one bit.

I had many similar run-ins with immigration when I worked for Microsoft in the Redmond area (brown guy with a beard, likes to travel the world [sometimes taking trips as short as one weekend]). I've missed more than my share of flights (at one time my name was in the do-not-fly list because it partially matched the name of someone they wanted).

Final straw came when one time I was returning from an international trip with my x-wife and kids when the immigration officer decided she didn't qualify to accompany me (we were married at the time).

"No big deal, she'll just fly back to Canada" (we're Canadians). We were told she couldn't do that, she had to be deported to the country she came from. "But sir, we just had a single entry visa and cannot re-enter"."That's not my problem, the law is the law. You need to be deported back to countryX". "But sir, we have no ties to countryX. We dont have visa to countryX. We have a Canadian passport, if you dont want to admit us then let us just turn around and go to Canada". "Oh y'all can come in, but she can't".

So I ask for a supervisor and he refused (I later learned he wasn't allowed to do that). Had us sit there for many hours with cranky kids after a transatlantic flight and then said:

"You can take her now (take her??) but I'll hold on to her passport. She can come before the judge in 30 days with the document and collect her passport or she'll be deported to countryX".

I had to unnecessarily waste time and money hiring a lawyer to figure out what the heck went wrong. She showed up 30 days later with our lawyer and the judge couldn't figure out why she was there. Gave us the passport. My x-wife dropped me home, told me to pack up and drove up to Toronto the same day. Even though I was about to get my green card (everything including labour cert was done) I told my employer to halt the process and moved back. For next few years I continued to work for US companies but remotely from Canada and pulled in close to $1 million in salary and stocks over the years that IRS wasn't able to tax at all. Canadian economy (not the American economy) benefited from my well over average spending over these years.

I can wrap my mind around "your name is similar to xyz we are looking for [even though xyz was a different ethnicity with a different age, height and everything]. But for me this made me realize how vulnerable non-citizens are when it comes to US immigration and border patrol. To this day I have no idea what ticked that guy off to single us out like that but I decided I did not want to live in a country where I had such little rights. I am well educated, make a lot of charitable contributions and spend a lot of time volunteering in the local community. Everything the US used to benefit from but now Canada does.

I am a US citizen and I had a similar experience. About a year ago I spent a few months in Asia while working remotely for my US employer. Reentering the states (after an almost 24 hour trip), the border agent really didn't like the fact and went out of his way to find a hole in my "story" - "So you did work in Asia?", "But your company did not send you there?" This dragged on for a while.

This was the climax of the confrontation:

- "Have you been in trouble with law enforcement before?"

- "No, but you make it sound like I am now. Am I?"

- "We'll see"

- "I am a law abiding citizen and I've been giving honest answers to all of you questions. What can I possibly be afraid of?"

Ever since, I DREAD reentering the states. I have dual citizenship, work flexibility, and friends and family all over the place. I find myself spending less and less time in the US.

I'm a Canadian citizen and get this type of treatment all the time. Every time I enter the US, which is about once a month or so, they send me to a back room for secondary screening. The reason? Their system thinks I overstayed my visa once back in 1995. What actually happened was my family took a road trip to New England, and nobody bothered to check our passports on the way out, so there was no departure record.

So for the last 18 years, they've sent me back for questioning every single time, wasting countless hours of both my time and their time. They always ask me if I worked illegally in the States in 1995 and I just tell them, "No, I was nine years old." When I ask them if they can remove the flag on my account, they say it's impossible because only the government department that created the flag can remove it, and that department no longer exists.

I hate how hostile and incompetent the US immigration process seems to be for foreigners. It's sad to go by an embassy basically anywhere in the world, see the fortress that is the US embassy, and the huge lines and amount of documentation needed for people to get US visas. Even worse is the non-deterministic hell on actual arrival.

I'm glad I've never had immigration or customs problems anywhere, despite going to some really sketchy places (flying into Iraq as a civilian at the civilian airport with no visa a few times after the invasion...) or otherwise bending the rules ($200k in computers, including 6 big 21" CRTs, on my way to set up an office in Anguilla...).

If you have a green card you can avoid this by signing up for Global Entry[1]. Then you can avoid customs lines and just swipe your card at the kiosk - enter the country without ever talking to anyone. As an extra benefit the kiosk is always empty so you are through in minutes... hmm maybe I shouldn't be spreading the word about this :)

>They keep taking breaks to crack off-color jokes about each other's sex lives, and moan about how hard they're having to work tonight.

The jokes might be uncalled for, but you just told us they were under-staffed and had hundreds of extra people to process. I can see why they'd be upset. Especially when absolutely zero of the hundreds of people they talk to in a day are happy to see them.

I get the impression you've never worked in the service industry or in retail. The immense fuckup that is United States immigration is not the fault of its lowest level employees.

I know everyone hates on the US Immigration people, but as a fairly regular traveller to the US (normally at least twice a year, mixture of business and pleasure), I've never had a bad experience. The guards I've dealt with have never been less than professional, and some have gone out of their way to make smalltalk ("You have nice handwriting" (?), "Your birthday is the same as mine.") etc.

I even got let back through immigration from baggage control as I had a bad stomach and really badly needed to use the toilet, No guns were drawn on me.

Of course, it probably helps that I'm white and British, but I thought I would offer up at least one counterpoint.

As someone who went though lengthy (10+ years) immigration process, from student visa to work visa to Green Card to Citizenship, with extensive travel in between - there is nothing particularly unreasonable about the experience described. OK, so he was delayed for a few hours, due to some error or inconsistency in the USCIS database... There's no reason to freak out.

And the condescending remarks about the officer not knowing the difference between "web developer" and "software developer" were unnecessary.

I like particularly the sneering attitude of superiority towards the initial immigration officer in this article. I'm no apologist for the US immigration system (Canada's, on the other hand, I have nothing but good words for), but Jesus creeping Christ, having to deal with that sort of entitled horseshit ten hours a day would turn the Buddha into Dick Cheney.

Let's look at the incentives. The picture here is not pretty. There's a big incentive to squeeze budgets, of course, anybody who watches US politics knows you can't just get any money you want, especially when there's 2 dozen another 3-letter agencies competing for the same. There's some incentive to serve citizens better - since once in the country, the citizen can call his congressmen or his local paper and raise hell if he was mistreated, and if bureaucratic middle-management hates something it is being featured in bad press and asked unpleasant question by his superiors. But when it comes to visitors, there's pretty much zero incentive to treat them better. I'm not saying that immediately leads to bad treatment - I am a non-citizen, I crossed US border more than a dozen times last few years and always was treated with courtesy and respect, which I assign to the good nature of the people that worked there. But there always are bad apples, and there's very little that can keep those in check. If the immigration officer mistakenly denies entry or costs a person 5 hours of their life, there are no consequences, ever. So these things are bound to happen, unless some kind of incentive to become better will be found.

So I've experienced something similar minus the overcrowded room with British immigration. I watched the immigration official turn from apathy the moment I handed my passport over into passive agression with loaded questions ("When was the last time you were deported?" answer: "never") into apologies ("Sorry for making you wait sir there clearly has been a misunderstanding") to vague answers to the question of future prevention.

After being told "and there's nothing you can do to stop this happening again", I tell every British immigration official I stand before briefly what happens every time I want to come back here and they're usually understanding about it all.

There is nothing unique to the US about this in my experience. There is literally one part of the government that deals (by definition) with people who cannot vote and do not have elected representatives.

If you want to know what it's like dealing with government agents in highly undemocratic countries, it's precisely this. Except it's every day and it's in your own country.

I think few people would consider border controls to be any of these things.

You were flagged somehow and that sucks, but if you don't like the immigration procedures of the US you are free to either a) live elsewhere or b) try to take action to change it (we are a democracy after all). On the other hand, venting on a blog isn't going to do anything but irk people who wish they were fortunate enough to hold a US green card, or come back to haunt you if this happens again and some cranky overworked agent google's you.

FWIW I'm a former, now naturalized, US green card holder and this happened to me twice in six years. It sucks, but I considered it a very small price to pay for being able to freely travel and work (or not work!) in this country.

His experience doesn't seem all that bad. It looks like they were merely doing their jobs trying to ascertain that they aren't making a mistake letting him in. If the immigration officer isn't sure of something (either because of an unclear answer to a question or a nervous vibe), it's not abnormal for him/her to ask for a more thorough check of the person. I wouldn't expect them to clear everyone with a quick, cursory glance of a passport or a green card.

I sympathize with him, but it doesn't look like his rights were violated in anyway.

I would not want to be a non-citizen in America. I love my country, but I agree with the general sentiment that we have things very wrong when it comes to treatment of non-citizens. I believe that much of it stems from fears about 9/11. The Bill of Rights does lots to protect US citizens from an agressive/repressive government. The spirit of the law is that there are basic human rights that the government can't remove without due process. Unfortunately those "human" rights in practice only barely apply to US citizens.

There's somebody on the US no-fly list that has the exact same name as me. I can't check-in online with any airline, and checking in at the desk anywhere in the US results in some sort of warning on their computer, and a quick call to somebody to come out from the back and check it out. Unfortunately I have to fly at least once a month.

A quick look over the passport shows it's obviously not me (though I don't have any details of the real bad guy). Must happen to quite a few because I have a fairly bland, common British name.

It's embarrassing how poorly people are treated when entering the US. We should put pressure on the government to improve that, but also pragmatically if we want to keep attracting talented people from around the world we really need to change this.

Immigration processes millions of people each day. There are going to be mistakes.

This sounds like they got a false positive, investigated, and released him. That's how the process is supposed to work. Making this into some massive anti-American rant says more about the author than America. This experience sounds unpleasant, but like it was handled professionally.

I've spent an hour being searched by customs. I don't know why - perhaps because I was returning from India and hadn't shaved in a month. It was inconvenient, but also the job of customs. This did not bother me.

I fly domestically and internationally at least 20 times a year. I get caught up briefly in all sorts of different ways all over the world. It's part of travel, and it's really not that bad. This is how nations protect their borders and enforce their laws, because not everyone is a saint like you.

All you idiots saying you won't work in or travel to the US because of the TSA searches - give me a break. EVERY country in the world I have ever been to has nearly identical search procedures as the TSA and most countries have stringent immigration checks. Many asking far more probing questions than American immigration, including Netherlands, Israel, and Britain. I was nearly denied entry to Britain because I didn't know the address of a friend who I was staying with.

Sorry, I'm tired of all this false outrage about minor f-ups with the TSA and DHS. These organizations have some major policy and procedural problems, but a few hours one time while immigration officials do their job of making sure you don't have false documents is not among them. If you don't like it, go somewhere else where a $20 bribe instead of an objective investigation gets you admitted - which is most countries in the world.

As a non-US citizen, I've had similar experiences where I was taken apart and asked some more questions by border patrol. However none of those experiences, although very similar to yours, came over as unnecessary harassment. I don't quiet understand why you would be 'terrified' crossing the border if you have all your shit together, which it seems you have.

The people "whose educational attainments have qualified them to sit behind a desk stamping passports" were simply doing their job and from what you described they did it without causing more inconvenience for you than necessary.

Like some others commented, if you don't like to abide by the rules of your new country of residence, nobody is forcing you to be there. Oh, and downplaying other people's intellectual abilities does come across quiet snobbish :)

Seems like you name might be similar to a name they had in their database who might have the criminal/arrest record. These are false hits and irritating but once the verify, they let you go. Hope they correct it soon for you.

Also, sometimes they randomly (not sure how random though) select individuals for what they call "secondary inspection". Here, you are just asked "extra" questions to ensure you are not a threat. I was pulled over once and the guy had a great time asking me all kinds of questions.

This is precisely the sort of nonsense that made me decide to leave my job a few years ago. I used to work for <household name Internet technology company>. After some re-structuring I would have had to travel to the US a lot more often, or possibly even move to the US. For me it wasn't really worth it. The dehumanizing experience of subjecting myself to dangerously stupid, underpaid, over-empowered, assholes on a bi-weekly basis made the decision easy.

While I do love California, and the Bay Area in particular, it is still inside the US. And I do not enjoy travelling to the US. To get to the US you have to go through the twilight zone that is immigration and customs. Not to mention the TSA.

I can remember travelling to germany as a kid during the Baader-Meinhof terrorist era. I can remember that I felt it was somewhat unpleasant being pointed at by germans with sub-machine guns. But you know what: they were not even half as frightening as the sort of personel you encounter when travelling to, from or within the US. Because with the germans you at least have the sense that the people holding the gungs are not the lowest life-forms of their society.

But I am not complaining. Taking this choice meant that I had to figure out what to do. And now, some years later, over 100 people have jobs because I don't want to travel to the US ever again.

I am Canadian citizen and for two years I was traveling every second week to US on TN visa. In all that time I got 1 "bad" experience from US side and 2 from Canadian side. (it wasn't that bad just longer questioning with 'trick' questions)Question which confused me a most entering Canada was "How long you plan to stay ?" , WTF , I have Canadian passport ?It took me a moment not to say "Not your damn business." and just play nice.... But in general crossing border is 99% no issue

I entered quite a few times under visa so far and my experience has been more than fine (in fact, it's even been pleasant). Hopefully, it'll never get to what you've had.

It happened a couple of times that the officer wasn't sure if I was doing what I said I was, for whatever reason, and they generally just asked a follow up question like "do you have an access card for this company and can I see it?" which resolved the matter every time. Didn't realize it was so close to "wait in the horror room for hours".

This is not an immigration issue. There is no place for common sense in government matters. Some day computers will take over the decision making and we will have a joyous experience coming in or happily avoid this country because the decision will be known.

2) Did customs do their job and scrutinize the person's paperwork? Yes

3) Was the person held for an inordinately long time? No -- 3 hours is not a "long time." If you can't deal with the fact that you just flew (potentially) halfway across the world in an airplane

4) Was the author unduly molested or given harsh treatment, perhaps by being denied food, water, medication, or otherwise harassed? No -- the author points out that there was a water fountain and snack machines, and the author was not strip searched, nor was he otherwise harassed/degraded. Sitting in a waiting room while your paperwork clears is "not a big deal."

Please stop blowing things out of proportion, and criticizing the US for no reason. I've immigrated to and lived in 3 different countries, and BY FAR the procedure described here is not difficult or tedious. If you can't deal with a a 3 hour wait, how can you deal with anything? Patience is a virtue.

BTW -- I was a paying awe.sm customer -- I just cancelled my account due to this overblown blog posting. Enjoy.

The title seems a tad misleading. The author describes some relatively major lifestyle changes (huge changes in diet, sleeping habits, large increase in aerobic/anaerobic physical activity), of which the elimination of caffeine is but a small part.

I used to have some very bad problems with acidity as well, to the point where my doctor thought I might have had acute ulcerative colitis, but what fixed it for me was sleeping more, eating better, and exercising more frequently.

I still drink 1-3 cups of coffee a day (every few months I go for a week without coffee, just to make sure I can still function without it), and have had no flare-ups or problems since I changed the rest of my lifestyle habits.

This is pretty inspiring. It is always amazing to people how much diet and exercise affect their health, which I find amazing that they are amazed. Its fundamental. Of course the ulcers could have been cleared up with the right antibiotics [1] but regardless, Bryan is in a much better place than he was and it doesn't matter which path he took.

I personally have never been a caffeine user. I had always assumed that if I used it regularly, my body would eventually counteradjust so that I would require coffee just to bring me back to my original baseline level of alertness. Can anyone comment on whether this is the case?

Reading this gave me chills - the symptoms of withdrawal described here are not unlike those of a heroin addict gone cold turkey.

I can't imagine normal healthy people routinely taking a drug and teaching their children to take one. And yet this happens with coffee all the time. Many are even proud of their addiction ("coffee snobs").

Never having liked the taste of coffee, I rarely drink it. I think the first time I had one was in a school field trip where everyone decided to pull our first all-nighter. Now I only use it when I need to finish something with a deadline and I can't possibly sleep to do it (this would be mitigated with better time management, but alas, this is how it is).

Never having made an habit of it though, a single espresso (1 once) gives me the jitters, a slight disturbing feeling in my heart area and keeps me fully pumped up for about ~4 hours if I am falling asleep when I take it.

I think this way of using it is much more valuable than "wasting" it by accustoming my body to a morning "pick-me-up" ritual.

I've been without coffee for two months now. Having been someone that loved coffee and needed it to "survive" the daily work environment, if I was to have just quit it voluntarily, it wouldn't have happened.

For me I was on a business trip where I fell ill prior to the flight home. Lets just say that it wasn't pretty, my girlfriend picked me up from the Airport struggling to stand up. The next week I wasn't able to eat anything surviving on water.

Seeing that I consumed an unhealthy amount of coffee daily, and how I hadn't had one in a week, I decided to make the break while I could. I was already weak from what ever I had picked up on that trip, but it was nothing to the next few weeks. I was lucky to only get mild headaches, but the lethargy and the sleepless nights drove me insane.

Having read this article, I'm now re-thinking what I eat as well. I too challenge the heat of my curries... and thanks to desk jobs I don't get out that much. Looks like I'll be changing things shortly.

One kicker that has happened to my health since this change, an ailment that I had never had prior to the removal of coffee, has caffeine as a way to help reduce the effects. My body... hates me.

This is scary to read. GERD, Barrett's Esophagus and acid reflux is not to be taken lightly. It is life altering. I have a relative who has to take 3 days every year to be sedated and have their throat stretched, another 3 later to have it scoped and this is after the surgery that effectively tied her esophagus in a knot (she can't physically vomit).

Sort of an odd question, but have you found that the flora of your mouth changed when you cut out all of the acidity and sugary drinks? Less plaque \ bad breath?

How long does it take you to go from first opening your eyes when you awake, to being 'normally awake'? One of my big things is to get out of bed ASAP and get a dose of caffeine right away (powdered, usually). It's a fairly small dose (50mg) but I found that I really despise the first few waking moments enough to keep it up.

I was expecting to read an article about understanding human nature without morality and respect clouding your judgment. Instead I read that psychopaths are clever at thinking up nefarious schemes to get what they want. I don't buy it as "wisdom." Anyone can think of evil ways to get what they want, as long as the situation is hypothetical. Just yesterday I posted a comment describing how if I ran a dating site I would screw over my customers by giving them the exact opposite of what was good for them because it would be more profitable for me [1]. Most people have fantasized about violence from time to time, and half the internet seems to advocate being a psychopath as the best way to get laid. It's the reality of a situation that stops people from being as "wise" as a psychopath, and, I would argue, there's no loss, because in a practical situation there's no point in seeing solutions that you won't execute in real life. Did the author's friends use the asbestos solution? I think not. It would be awkward to explain to friends, they would have moral scruples, and it might very well be illegal. If a non-psychopath and a psychopath both limit their imaginations to plausible options, the psychopath isn't any more wise for seeing options the non-psychopath doesn't.

If the Scientific American article is representative of the book the world would probably have been better off had it never been written. For psychopaths other people are means, not ends. If wrecking your life will get them a more pleasant afternoon with no/small chance of danger to themselves they'll do it.

Psychopaths are indeed charming, ruthless and focused. They are charming because they got more practice at lying, cheating and stealing before they were fifteen than most get by the time they turn thirty. Vastly diminished anxiety helps too.

They are ruthless because to them other people are objects. You relate emotionally more like a dog than like a psychopath.

And mostly they are not focused on any long term goal. Their focus is very much on the now. They rarely have any long term goals or projects and if they do, remember, people are things. White collar or professional psychopaths may not go to prison for assault but they will lie, cheat and steal their way to any goals they may have.

For further reading on psychopathy read anything by Rober D. Hare, the dean of the field. I can recommend Snakes in Suits: When Psychopaths go to Work

I find psychopaths incredibly interesting. Probably because I recognize that I am about the furthest thing from one. I incessantly worry about the future and the consequences of what I'm currently doing. I always wonder what people are thinking, what they are thinking about others, and what they are thinking about me. It takes me 50 minutes to type a short email because I'm constantly playing out the scenarios of how it comes across to others in my mind. In fact, I'd say I edit almost all the posts I make on HN multiple times after I've posted them. And finally, I have a tendency to become really sad upon hearing sad news. I avoid the news for this reason. And although I love reading about startups, I could never imagine myself leaving a secure, stable job unless I had very high confidence that my startup would succeed.

This sort of thinking has obvious negative drawbacks. Social interaction becomes a chore because you think you're never going to come across positively, so why interact at all?

I've always wished that for just a day, I could have a psychopathic personality -- just to see how things work out differently. (Realize that psychopathy is not the same thing as evil or immoral by the way).

The ability to abstract oneself from the problem in a way that enables you to think about the problem is certainly something many would wish to be able to do better in at least one area in there lives. I find it easy to handle most things but anything personal, well I just end up like most and think about every negative permuation more than resolving the issue.

Though in a sence it is the ability to regret things that too me is the seperation that divides most.

I often say if 51% of the population were psycopaths then they would not be psycopaths but normals and the other 49% would be the exceptions and outcasts in many ways.

Ironicly in todays society that is against drugs and can't cope with somebody saying I've had a good life, can it end now we seem too impose the majority will upon them. Indeed if you said I want to die to a doctor and even explained why, many would probably push you to drugs that remove the emotional negatives and or section you in a mental hospital until you towed the line if I want to live even if the World is utterly insane.

Many a wise word is said by what people lable as `mental` patients and with that it is good to see the lable removed and the flash laid upon the bones so to speak with regards to psycopathic traits. When you break it down and look at various jobs and roles in society then you can certainly see that it is a set of skills most would envy. Then only negative is the big gotcha of impossing your will upon others to the detrement of there quality of life. That all said many bankers and financers happily ruin peoples lives in a more agonising way than any mental of phsical torture as we know it and with that have defined legaly allowed means to do what is in effect psycopathic traits. When a bank reposses a house do they send in councelors and break the news over a hot beverage, no they do it in a letter and with that are about as cold as any psycopath could ever come up with.

But we are talking about psycopaths who have crossed a legal moral line like murdering somebody and getting caught. Yet the same actions can be done in far more legal and less liable ways and means if you take the right approach. I'm sure there are psycopaths who have done such things and others who just maybe work in jobs like banks or important positions which enable them a more fine control upon there enviroment too effect others in more subtle indirect ways. After all for those of us who think about what can go wrong and waste that 90% of the time worrying about the unhappened, maybe that in itself is used to out own detrement if leveridged by somebody mindful of such weakness's.

After all not all psycopaths are criminals, we as society have just labeled them by default and with that there exist alot of predispositions that society places as a collective upon others and in many ways when you apply labels and blanket definitions and sterotyping then isn't that how racisism started.

So society could learn and should learn from them, after all everybody has something unique about them and with that you can learn something from every single person on this planet a impossible task but certainly one that should not be dismissed in a way that you ignore by default whole area's/groups/types/variations. That is probably the first leason you can learn and with that the most important one in my book.

How would the psychopath's lack of empathy differ from the autistic / asperger's lack of emapthy?

It reminded me of the axis of hypo-mentalist <--> hyper-mentalism from here http://edge.org/conversation/the-imprinted-brain-theory second figure, ignoring the genetics parts for this discussion) ...but I don't know where would autism and psychopathy would relate and differ. They are certainly very very different things, but I can't think of a simple conceptaul framework that would show their similarities and differences.

On campus, CS50 has a cult-like reputation. You'll regularly see CS50 t-shirts worn on campus; upperclassman insist that CS50 is one of those classes "you just have to take"; Malan is practically a celebrity. (I'll admit I was excited to spot him in CVS one day.)

But I've watched students struggle through CS50 on-campus and come out barely understanding C and never wanting to touch computer science again. A small percentage, but enough to make me wonder if CS50 is the best approach. There's no "intro to programming" course at Harvardâ€"this is it. There's also no advanced first-semester CS course: only four or five kids a year will skip 50. So CS50 is forced to teach both kids who've never touched more than an internet browser and kids who've lived on the terminal. Starting with C isn't easy, and HTML/CSS/Javascript (and goddamit, PHP) are shoved into the last 20% of the class.

There was a study done a while back about why programming is so hard to learn. Wish I could find it. The researchers discovered something like a third of people picked up programming with little effort, a third could grok it with hard work, and the last third never had a chance. I think CS50 is great for the first two-thirds, but completely lacking for the last third. There's just too much material in too little time.

Based on your reaction to edX, I think there's significant potential here. A one-size-fits-all class works much better online since you can move at your own pace. I'm excited to see where this goes. First place might be an option to pay for human grading. It's awfully hard to learn from automated grading.

Also, David Malan and his TFs have literally dedicated their lives to this class. I went to a talk by Tommy MacWilliam (one of the head TFs and lead developers of the CS50 edX platform), and they've been working tirelessly for months to develop the UX at scale. They scrapped the standard edX format to truly optimize the experience for this class, and I'm glad it worked. [1] (Some of the apps were used on-campus first and had a few years in the wild.) Most of Malan's recent research has been on large-scale pedagogy. Interesting stuff. [2] [3]

PS. The appliance really is complete crap, isn't it? (For those unfamiliar, Malan puts together a VMWare Fusion image with a heavily stripped-down version of Fedora. It's got a command-line auto-submission tool and some other CS50-specific stuff as well.) Do yourself a favor and use a vanilla install of your favorite linux distro. It's a necessary effort to normalize hundreds of thousands of development environments, but god they managed to cripple Fedora.

The difference between CS50 and others is that CS50 gives you a similar experience of taking a class in flesh and blood, while offering all the flexibility of online education; in other courses, it feels like the professors are held at gun point and are asked to teach the material in 10-15 mins intervals.

It is awkward to both the teacher and the student, because teaching with a camera up so close to one's face is so, and just because Salman Khan (Khan Academy) did so, doesn't mean every Udacity, edx, and Coursera should. Remember that in the beginning, Salman Khan intended those videos for his cousins.

Just look at SEE[1], to see how effective a traditional class room style teaching can be. SICP[2], SEE and CS50 are hands down the best lectures I ever had the pleasure to learn from.

I wholeheartedly agree with the OP. I took Prof Malan's course via the Harvard Extension School my junior year of high school while trying to get into programming. I first tried to get into PHP and C++ the prior summer (I had no clue, and had no idea of how clueless I was). Enter MIT's OCW and CS50. I quickly watched all of the lectures in about a week or so, and decided to take the course for the following fall shortly thereafter.

Prof Malan is one of the best lecturers I have had the pleasure to learn from, knowing how to keep an audience interested in just about anything. Malan and his army of TAs have also done a fantastic job of creating a community around CS50, and have provided a plethora of resources for their students. Their assignments and problem sets were also perfect. They were challenging and interesting without being inaccessible; teaching both programming skills and being relevant to important CS concepts. We also got a special lecture from Brian Kernighan at the end, which was a real treat.

I'm extremely appreciative for the skills and knowledge CS50 has given me, and would highly recommend it to anyone willing to take on the challenge. It's the reason why I have my current interest in and basic understanding of CS.

I'm really excited for what online education can offer if many other classes can be brought up to the high standard Prof Malan and his team has set. With 5 years of community college (8th-12th grade) and a semester at a top liberal arts college, all taken in-person, CS50 remains one of my favorite classes (in terms of interest, challenge, fun, etc).

I should also mention I took CS75 with Malan as well, and while it wasn't quite as enjoyable for a number of reasons, it was also an excellent course.

Maybe I'm being insensitive, but why would anyone burst in to tears for making a reasonable request that _indirectly_ causing somebody to have a crappy day at work? Furthermore, it's not even apparent that she really did ruin the day of these delivery folks. They probably got paid nicely to go through all that trouble. The fact that it took all day for the social media team to find somebody willing to go that extra mile implies to me that there were likely several people who turned down that sale/delivery.

Even if they were pressured in to that delivery by some contract or power-play, it's not her fault that she demanded quality service. Twitter et al are making companies accountable for their shortcomings. As a result, the treatment of customers is improving steadily across many industries. Like with anything, sometimes you need to break a few eggs to make an omelet.

From the comment section: "Oh my god, New York is going to eat this nice lady alive."

It's not a problem with twitter, it's a problem with the store you're buying from. Next time buy your ac unit from a place that treats their employees right. If you want to take an even longer view of this, you'll probably run smack into the economy at large and the desperate situation that minimum wage big box stores can force upon their employees as a result of the unemployment rate. They treat you like dirt and hold you responsible for failing to meet goals that were never possible in the first place.

An alternate view TFA could take would be that since you've discovered that public complaining via irascible tweet seems to be effective--tweet again about your horror regarding their treatment of their employees. There's no reason they shouldn't have some sort of infrastructure in place to deal with this sort of thing if they are going to attempt immediate reparations brought to their attention via twitter.

The store could have offered over time pay to stronger employees willing to volunteer the next day, perhaps; the salaried managers likely didn't receive any compensation for their after hours efforts. I'm sure the AC unit could have waited another 24-48 hours.

Now for a reason why you shouldn't use it to respond to customer complaints: The second word gets out that using Twitter gets you better customer service, everyone will use Twitter. And unlike the occasional good PR that comes with Twitter, you now have a reputation for not doing things right in the first place. Availability bias is a bitch.

This is self indulgent crap. Where's the bit where she tweeted back to Home Depot saying that she thought it was terrible to make their employees do that? Is she afraid that doing that would cause someone in the chain to get fired for having upset her?

Personally, I've found twitter to be hugely useful for getting responses from companies and because of this I don't plan to stop using it. Often I've found the response time I get on twitter is far far better than what I would get if I phoned in (few mins - hour) or emailed (never) the customer support department.

It's one of the few ways that new social media is actually providing value for me.

Some specific examples where I can recall using it:(1) Engaging the Microsoft developer team to fix up an issue with my account(2) Engaging Air Canada to ask about using my Aeroplan points(3) Engaging Commonwealth Bank to say thanks for great customer service and recommending someone I did deal with in person at a branch (to which they replied they would pass along the commendation).

All times I had a faster and more satisfactory engagement than if I had used phone, email, etc (as I'm reminded when I have to revert to these methods)...

Funny thing is, I originally joined Twitter to try to get customer support when it looked like the company I was trying to contact (Vonage, if I remember right) was replying in minutes on Twitter when their email support never got answered (and phone support kept getting rerouted to people who didn't know any answers). Then, I used to do tech support for Metalab's Flow, and we used Twitter for customer support via Desk.com daily. It works good for rapid response to simple questions in my experience, and I'd recommend companies take advantage of it. There's no reason Tweeting for customer support is more entitled or demanding than seeking customer support via any other means.

Not what I was expecting at all! I was expecting an article about customer service fragmentation by giving disproportionate emphasis on social media rather than brand-specific infrastructure - something I have seen and experienced often.

That said, while I understand her emotional perspective, I tentatively disagree with the sentiment. If the use of social media does produce efficiency gains that would otherwise have been difficult or impossible to attain, then everyone benefits, including the company gaining a competitive advantage, perhaps ala Theory of Constraints.

Of course, there is more than one way to use social media. The company could have used it only for information broadcasts. I presume if they set it up to actively seek to improve their customer service, then they are happy to accept all the consequences for it too.

I don't think this situation is unique to twitter. Any person with a sufficiently large public following will instantly receive special treatment and pandering behavior (like Home Depot in this case). Joe Average won't get his backordered AC by 11pm on the same day if he complains on twitter.

1) mosh lowers the average latency, but it causes the perceived latency to be highly variable.

The issue is that there are various moments where the algorithm somewhat-correctly decides it cannot predict what will happen due to new incoming keystrokes. An example of this is after you hit enter: you might be running an entirely different program at this point.

In essence, the algorithm "warms up" as it makes correct decisions, and once it decides "ok, my decisions seem accurate: when he types a character they seem to echo back to the terminal" it makes a sudden transition from "slightly slower than raw SSH" to "much faster than SSH and only slightly slower than a local screen session".

These sudden transitions are jarring: when they happen to you with normal connections the expectation is "oh, my connection is failing", a feeling that with mosh you have every time you type a command.

Meanwhile, for the interactive-shell or complex-text-editor use case, these "unpredictable events" always happen at the worst possible moment: when you first start doing something; the result is that the perceived incidence of latency is actually worse than with normal SSH, as every "new event" has a higher latency... by the time it starts prediction, you are probably "in the flow" enough to not even be paying attention.

2) it relies on a specific range of UDP ports

Because it operates over a custom supposedly-mobile-optimized protocol, it tends to end up being inaccessible when you actually need it due to pervasive modern firewalls. You'll start a session at home, go to the office, and... nothing... because you can't communicate over that UDP port. This happened to me quite often while evaluating mosh.

3) it doesn't have a good way to reconnect later

While it supports sitting down at a different computer and taking over your session, it requires you to drop to a rather low-level mechanism based on knowing the secret session key that was established at the time the server was setup. This actually undermines the "mobile" use case, as it only lets the connection be mobile, not the session.

(I also have some specific issues with a library it relies on for spoofing hostnames in wtmp: just having that library installed on your system opens a vulnerability where any non-privileged user can spoof their hostname as anyone else... their opinion differs, but it seems to mostly be due to a knee-jerk reaction of "you don't get fired for avoiding setuid" than "this is actually secure".)

The result is that after spending a bunch of time testing it, working with the codebase, getting frustrated at a bunch of the design decisions, and then having it both totally fail to work in real-world network settings and become yet another source of infuriating latency, I pretty much dropped all interest in the project and replaced it with autossh, which worked great.

The primary downside of this is that it doesn't handle the packet loss problem well, as you are really just still using normal SSH to do the connections. The session might get weirdly slow and even lock up in these packet-loss situations.

However: it doesn't require any special code on the server, which is a downside of mosh I didn't even list above (as it is fairly obvious and something you know going in): this means you get to use it for every connection to every server you might ever care about.

Otherwise, you get everything you expect from normal ssh and screen: it works everywhere you might theoretically have been able to connect to the server anyway (so no ending up at the client site and finding out that they firewall UDP), it is obvious how to reconnect to (or even share) the screen session from a different computer or a different client without special software, and you don't need to even contemplate "what if this introduces a security vulnerability by running a new daemon on my server?".

The other annoyance of using autossh is it is pretty adamant about doing exponential back-off on reconnect, and in the naive way I have it setup in that function it is also going to be doing slow-to-fail DNS requests as it attempts to do the reconnection sequence, so the result is that the "open laptop, wait for all terminals to connect" sequence doesn't always click perfectly.

However, that is easily fixable by using a simpler wrapper (to be clear: use autossh when autossh is appropriate; it is designed, however, for server-to-server backend links to maintain persistent port forwarding), so I bring you cysh.sh, which is what I actually use (and which I've done some testing with others to verify works on random platforms):

(Yes: you are now downloading a random shell script from someone on a web forum. However, it's like 35 lines of very easily readable sh: you should just read it; hell, after reading it, you might consider it so simple you just want to rewrite it for yourself. ;P)

You use this in the same way as the function, which I didn't even document earlier anyway as I knew I'd just be replacing it with this shell script by the end of the comment ;P.

cysh saurik@server.saurik.com stuff

This will reconnect to the existing session named stuff on server.saurik.com with the username saurik. It will disconnect other clients when it connects: if you don't want that, change -dRS to -xRS. It also disables normal screen control with ctrl-A (so it feels more like "just a console"): if you don't want that, remove -e'\0\0'. If you want some other screen setting: just add it. ;P

(BTW, if you are curious why I have it set to do -dRS "by default" as opposed to -xRS, is that if you have multiple clients associated with the session the size of window can't be automatically updated; the result is that you often find yourself connecting back to copies of things like irssi or even bash prompts that are now the wrong width; -dRS works perfectly out of the box. Many people, however, know enough about screen that they love -x: if that includes you, you should definitely just change that.)

So, if you don't need the "severe packet loss" protection, I really think you are better off just passing on mosh and using something infinitely simpler cobbled over ssh. The latency mitigation feature are overrated or even annoying, and it seems many people actually just want mosh for "easily auto-reconnecting mobile shell", something you seriously can solve very well with a very short shell script and no special server-side logic.

(If anyone tries using that script, it doesn't work, and you want help debugging it, I'm happy to do so; that said, it is purposely not "a product" right now because different people seem to want different things, and it is frankly really simple to write this from scratch if you need it, or just kind of pull it apart and fix/change whatever you don't like about it: just attempting to get an automatically-reconnecting shell is a fairly simple problem.)

I've spent the past year using Mosh from high latency, unreliable satellite connections in Afghanistan. I would have been pulling my hair out without it. My only complaint is the scrollback buffer often gets jumbled.

After using mosh on and off for a year, I realized that what they wrote in their PDF is absolutely true:

mosh latency isn't much different from SSH latency, which is a common misconception. What mosh adds is:

- decent prediction (this is what mitigate most of the latency)

- integrated auto-reconnect (even thus auto-ssh and others do the same thing, they're not built-in)

- mostly asynchronous keystrokes thanks to UDP+stream protocol, so if you hit ^C it will abort stuff even if the screen is scrolling. Note that the way keystrokes are handled makes it susceptible to a timing attack, and there might have been work to mitigate this that i'm unaware of.

I just installed this on my Chromebook with Ubuntu, and on my EC2 instance. I've been very frustrated with the lag I was experiencing while typing in the shell, due to high/variable latency. In my very preliminary testing over the last hour, this has solved my problems almost completely.

Security is less of a concern because I'm running OpenVPN to my instances, so the UDP traffic mosh uses is encrypted anyway, and not open to the public.

One issue I did notice is that irssi isn't refreshing quite as quickly. Seems to lag behind the conversation a bit. I'll have to troubleshoot. I wonder if running byobu/screen is part of the problem.

While a nice idea, licensing issues are a problem for this project... I don't understand why they didn't use the standard MIT license, but instead went for GPL3, but still chose a proprietary encryption method.

iSSH on iOS now also experimentally supports it with an own independent implementation, with an in-app purchase, since the encryption uses a proprietary encryption method only freely licensed for opensource projects.

Mosh has been brilliant so far. I travel a lot by train but even SSH'ing over the trains WiFi can be problematic. Connecting through Mosh solves all the typical issues and with local echo you can continue to type as if the connection was still up.

What's with the negativity in here? This is a slide deck that was used by speakers at Google IO in 2011 to present a session about HTML5. They figured it may be useful so they shared it online so attendees and people who couldn't make it could see and play with the slides afterwards. It makes no sense to criticize these slides for not working in Firefox, Opera, on mobiles, or any other use case for which they were not developed. It's a slide deck. Be glad these guys felt like sharing their knowledge with you.

If you used this many gratuitous visual effects in a Power Point presentation I'd think you were an idiot with no sense of taste, but because it's being rendered in a web browser I think this is impressive for some reason.

Gah, I would pay HN monthly if someone tagged all such links [Best Viewed in Chrome-only] instead of me clicking through and fiddling with various things. As an Opera user, such kind of links are very prevalent on HN.

Or maybe it was just my fault for clicking on something with "HTML5" in the title.

I am on the verge of breaking ground on a large-scale corporate project in which WPF/XAML is the tech of choice for UI. I have received criticism for even suggesting that HTML5 is "up to the job" but I feel like this completely validates my point.

I think asking money for certificates of completion is disingenious, as is charging for textbooks.

It says in the article that the founders see education as a right, that means it should be absolutely free. 'exploit-the-students' kind of money can be an arbitrarily low amount, depending on the circumstances of the students, who could be in fugitive camps in somalia for all anyone knows.

Instead, the obvious way to make money is to make it where the money is, the industry. This is how student organisations in The Netherlands make money, and I bet it's like that elsewhere too.

Why not sell information about what student has what capabilities, or even contact with the student in the form of job adverts or whatever? I can see that as a nearly unbounded source of revenue, and in the process hurting noone and helping everyone.

I don't mean exploit-the-students kind of money, but still make money none the less. The teacher could sell the lecture notes++ as a printed book for 5$ per 100 pages.

A small textbook could cost 15$.

Imagine yourself taking the course -- I mean //really// taking it: spending lots of time watching the lectures, doing the exercises and trying to get into the subject.

If you want to print out the lecture notes and slides for the course (think SELECT .pdf FROM /course/name | print | bind) it would cost you about 300 pages 5c/page = $15 to get this printed at a local copy shop + $5 for spiral binding.

For the same price, you get a perfect-bound soft-cover textbook delivered to your front door (an extra $5 for S/H).

Boy, I really hate infinite scroll. I've never found it enhanced my experience over plain old paginated results for anything product related (sure, maybe it works for Google or HN home page).

I like knowing:

* how many items are in the results

* how many pages there are (a derivative of the first, sure, but helpful to know)

* where I was if I accidentally close the tab and re-open it, or follow a link and need to hit the back button, or share my position with a friend (yes, most paginated results aren't stable in the long run, but usually are in the short run)

* easily jump to either end of the list (or, near to the end of the list, e.g. < 1, 2, 3, ... 98, 99, 100 >)

For example, I follow way too many people on twitter (1700!). I know I'm getting tweets throttled so I miss out on people I care about.

I also know that when I first picked up twitter years ago I made some noob mistakes and followed things I, well, shouldn't have (@Tide? I think a friend was working at P&G or something...).

Anyway, "People you follow" on the web UI is an infinite scroll. Even worse, it's buggy so sometimes you can trigger it to not register you're at the bottom and it won't load. AWESOME. I just want to get to the LAST PAGE. BUT I CAN'T.

And since it seems to load about 10-15 at a time, given that it takes about 1/2 a second to scroll down and wait for it to load, that means it'll take at least 60-85 seconds to reach the bottom - IF it doesn't crash (a reload takes me back to the top). Which means I've never been able to do it.

I had to pay one of those "show the folks you follow that haven't tweeted in n-months" just to try and prune the list, which helped me go from 2,000 to my present number.

Yes, this could be solved by sorting and filtering, but in the truest MVP sort of the world, why do all that extra work just for the "infinite scroll" fad? Switch back to pagination and I could accomplish all I needed and have a nice pruned list. And I bet it's less effort and has far fewer bugs than the current implementation.

I hope that in a few years enough data against infinite scroll will have cemented it as a generally accepted bad idea, only working in a few particular cases.

> But the A/B tests showed various negative effects of the feature, including fewer clicks on the results and fewer items â€śfavoritedâ€ť from the infinite results page. And curiously, while users didn't buy fewer items overall, â€śthey just stopped using search to find these items.â€ť

How is this a negative effect? The amount of stuff that users are buying should be pretty much the _only_ metric you care about. And they are probably not using search as much because browsing is much nicer with infinite scroll.

It sounds like they just did infinite scroll wrong.

If you read the comments page on the forum, the biggest complaint is that you lose your place in the scroll when you return to the scroll page. If they had listened to their users and made it so that you return to the spot where you clicked on the item, perhaps it would have been a success.

Contrary to Dan McKinley's half-apology as quoted in the article, infinite scroll is stupid on your website.

Infinite scroll flies in the face of the way the human brain works with groups and sets, makes it virtually impossible to usefully search within the current page using the browser's search feature, etc. And the positives are? Nothing, other than novelty.

It is one of the many recent examples of webdev/designers doing something because it is possible and trendy and new rather than because it adds any value.

Paged results with a well designed indication of where you are plus good server-side categorization and server-side search to filter results is far preferable to infinite scroll in every practical situation.

Keep the infinite scroll for those purely arty non-commercial story-telling sites, if you make me try to use an infinite scroll interface to buy stuff from you I will buy nothing.

I think it's a bad idea to look at what Google does with their search results and then try to apply it to product search.

Users have a very different set of goals, with Google we know that the falloff from the top search result to the bottom is huge, people expect that the relevant results are the top couple.

With product search there's different goals, for example browsing an minimal set of criteria looking for a results--you're looking a pair of jeans and starting with 36x32; or the opposite you just want to know the price of a pair of New Balance 990s in a 11 4E.

In the latter case infinite scroll or not doesn't come into play, but the browsing case it does, and from the point of view as an Etsy customer, I have the most difficulties.

One of the things I've found the most is people do better with a task if they can understand how long it's going to take. If you know there's 100 search results over 5 pages, you can decide if that's too much to go through. As an aside, this is true of a lot of things, you'll do better with pull-ups if I tell you to do 20 and give you a count, than just tell you to keep going until I say "stop".

With infinite scroll you've got no idea how much effort looking through the total search results is going to take. Etsy don't make things easy, as an example Art > Custom Portraits[1]. I have no idea how many results there are, I can scroll all the way to the bottom and find out there are at least 8 pages, but that's it.

The search results themselves are pretty snappy, so I don't see a huge advantage of infinite scrolling. I do think the search results are pretty bad and the lack of filtering is a problem. From Art > Custom Portraits I can filter on just Pets or Silhouettes or More (which I assume is everything else). It's not obvious what these links do either, they are just floating at the top.

Some better filtering, e.g. by price, would help. I'm not sure what other metadata Etsy have that would be useful for an great faceted search.

As an aside, I've been working on (product) search for over a decade and I'm close by the Etsy offices; over a coffee I'd be happy to discuss search. Part of my New Years resolution is to do a better job of networking, so I'm happy to extend this offer to any other NYC based e-commerce shops.

Infinite scroll really annoys me on most sites where you're searching to find something (vs carefully reading each and every result). It's frustrating to not really have any sort of "progress" indicator.

The article mentions that infinite scroll is "prominent among popular Tumblr themes, Pinterest, and of course, at Facebook and Twitter". All of these are content consumption sites, and for at least Pinterest, Facebook, and Twitter, clicking on an item in the list opens it in-page -- for Pinterest and Facebook, it's in a modal box; for Twitter, it's expanded within the stream. The content you're browsing is all there; there's no problem with clicking on an item in the list to get a more detailed view.

At Etsy, introducing infinite scroll resulted in "fewer clicks on the results and fewer items 'favorited' from the infinite results page". On an Etsy search results page [1], clicking on an item bounces you to another page. And on sites with "infinite scroll", this is typically a very uncomfortable experience, particularly when trying to get back. Depending on the implementation, you're wind up back at the beginning of the result set; even if you don't, it's usually a fairly bumpy ride, with the time taken for the page to reload its data and the jumps in scrolling as everything loads in. Even if it technically works, the kind of sensation this brings about is enough to discourage someone from actually clicking through. There's an negative association that develops with clicking on these items, the foreboding feeling that you'll end up losing your place, such that one tries to do so as little as possible -- in line with what was observed from the Etsy experiment.

On the Etsy search page, you can indeed "favorite" items without going into the item's actual page. But that's not something one is likely to do based on a tiny little thumbnail -- one would usually first click through, see a bigger picture, and possibly read the description below. It doesn't help that, on the results page, the "favorite" button is but a tiny little icon, that only appears if you directly mouse over the thumbnail; meanwhile, on an actual item page, it's right there under "Add to Cart" [2]. Perhaps users weren't even aware that you could do this from the search page.

With a site like Etsy, where lists are a means to an end -- a way to get to information on other pages -- it's no surprise that infinite scroll performs quite poorly, as opposed to content consumption sites, where browsing is a self-contained experience of its own.

(As an aside, it's fairly silly to compare infinite scroll with Google's Instant Search. Instant is well-liked because it gets you to your search results faster; this being Google, the user isn't there to hang around and enjoy the scenery, but to get to the information they're looking for as quickly as possible. And Google's results pages themselves still use pagination, despite their experimenting with infinite scrolling back in 2011 [3] -- a change that, quite clearly, didn't make the cut.)

Warning: long comment ahead! Read at your own risk. If you ask me for a tl;dr I'll kick you in the shins.

I'm so happy to see them measuring "median item impressions" rather than "mean item impressions." Many of the underlying variables describing consumer behavior aren't normally distributed. Talking about "average number of friends invited" when 50% of your users invite 0, 25% invite 1, 13% invite 2, etc. but 3 users invite 5,000 will necessarily lead you to propose bad product ideas and decisions.

However, I'm curious about the experimental design. For example, was this tested on new users, old users, or both? Changing a fundamental part of a site's experience like this will have some cost as users acclimate. I'd wager Etsy's audience is less technically inclined, too, so it might take them longer to acclimate.

They also commit a small fallacy when they talk about how they should have done it instead, and IMO it's a fallacy that frequent A/B testing encourages people to commit. They suggest that instead they should have determined first whether more items are better and faster items are better.

On the most surface level, perhaps there's something about more items AND faster items that outperforms either one or the other in isolation. That's easy enough to accomplish, technically. You use different statistical tests, but it's possible at the cost of perhaps a larger sample size.

On a deeper level, you're providing the users with a fairly different overall user experience. Their sense of where things are placed, what they're supposed to do when they want to "see more," how they know they have the opportunity to "see more," etc. are aspects of the infinite scroll design that aren't encapsulated in either rendering more items or rendering those items more quickly.

For example, can users bookmark specific search result pages under the current design? Can they still do the same thing under the "infinite scroll" design? I imagine there are lots of little things like this and that the UX difference alone would have a larger impact on the results than just changing the number of products per page.

To get more meaningful results from this, I'd run this experiment under the following assumptions.

1. Assume that existing users will be more impacted by this change than new users. Therefore the cost of "failure" for existing users is higher.

2. Assume that at the end of the day the #1 thing Etsy cares about is "dollar throughput" of the Etsy platform. Engagement, favoriting, searching, etc. are all positive indicators of an increased dollar velocity.

3. Assume they have information about what aspects of a users' first visit are indicators of their long-term ability to contribute to Etsy's dollar throughput.

4. Assume that eventually every user will have the same experience, new or existing alike.

So, I'd start by running the experiment with new users only. Over the course of a week or a month I'd put a % of the users who joined each day into the "infinite scroll" bucket. I'd then run the study as a longitudinal study.

Assumption (3) can guide us as to whether we need to cut off the experiment early. The length of the study would be determined by the particularities of an Etsy user's life-cycle, e.g., maybe given a cohort of users, we care about the length of time it takes 75% of the eventual purchasers to make their first purchase.

Because of assumption (4) we know that if the "infinite scroll" design is terrible for new users, we never have to bother testing it on existing users.

[1]: Non-technical users, in particular, are sensitive to sudden change. I forget where, but I read a research paper once that implied that the worst thing you can do to harm a person's user experience is change the placement of links, buttons, etc. You can change the color, text, icons, etc. but if you change the placement, they essentially have to "re-learn" the interface.

IIRC, the users were given a task (e.g., "create a document") and they measured two core variables: time to accomplish the given task and time until their "performance" at a given task was equivalent to the control user interface.

Changing the placement of a certain action in the UI had a deeper and longer-lasting impact on users' ability to perform tasks than changing anything else about the UI by a large margin.

2. Infinite scroll exists solely to make it easier to scroll past the initial view.

3. Therefore, infinite scroll made it easier to scroll away from the results people care about.

There you go.

By the way, I don't get why Google's "instant results as you type" was cited as a reason to pursue this infinite scroll feature. Those are totally different things.

"Instant results" is for faster display of the first few results, which is great for search. "Infinite scroll" is for scrolling through long streams of information -- great for newsfeeds and timelines, but not for search results where you only care about the first few.

This reminds me of the age-old advice of not overwhelming customers with options. I.e., if you know the customer wants your product (say, a cell phone), you're much better off giving them one or two options to choose from (think iPhone). If you overwhelm them with 14 different models each a little different in some small (or big) way, you're more likely to lose the sale altogether.

This concept plays off the simple fact people are fundamentally bad at choosing between many options.

I'm curious if this is the factor that caused negative results with the infinite scroll. I'm also curious what would happen if you started only returning 5 results/search...

I wonder why this failed? I've seen infinite scroll work on some major websites, Facebook and Twitter, but then perhaps it's related to search only? FB and Twitter are loading a feed, a search page should give users what they expect to see, not randomly see more elements pop on screen, perhaps?

Wordpressdotcom added Infinite Scroll to blogs. I turned it off but it still has it when you want to see older posts. How much I hate it! I spend more time staring at a damn spinning wheel than seeing more posts when Search won't bring up what I need (due to not recalling an exact keyword). I wonder if this was the case with Etsy too? The only Infinite Scroll I've seen that works properly has been with Twitter. Even Bloglovin (which I use for RSS) has a one-second or so stutter that can be very annoying.

Seems like infinite scroll is a solution in search of a problem. Users don't want to see more results. They want to see the right results. Etsy seems to fail in this regard and has dozens of pages of irrelevant results. A better move would be to rethink search relevancy and discovery.

The technical considerations are uninteresting here: all of Blizzard's titles are optionally built to use OpenGL, letting them avoid the golden handcuffs of DirectX & Friends. So if porting is cost-effective, why would they do it when virtually all of their revenue comes from Windows systems?

I say: gatekeeper-free subscription gaming appliances.

There's no evidence the total Windows PC experience is getting any better or cheaper for the uninitiated, there's no evidence that Playstation or Microsoft will bend over and allow third party platforms on their consoles, and all of the new-era Desktop App Store UXes force significant technical and billing restrictions that would eat at Activision Blizzard's subscription and in-app business model and reduce their control over the game experience.

And I don't think this is a bet that desktop Linux/x86 is going to be relevant for gaming. It has no inherent advantages over classical Windows.

So I think this is a gamble that new-era quasi-consoles based on Android+Linux/ARM+x86 are going to succeed to some degree (be it the Ouya or Steam Big Picture or some Samsung Generico-Colossus that can spit out WiDi or whatever).

A keyboard, mouse, and controller capable Linux platform with no overarching gatekeeper and adequate gaming horsepower is going to be extraordinarily cheap in the near future. If Blizzard Activision gets their ducks in a row now, they'll be ready to jump into the first one that offers ten million users, a reasonable hardware target, and a bullshit-free content delivery mechanism.

Afaik Blizzard always had an internal Linux client [1] but never wanted to make it public.

One of the big problems with Linux, and this is from other game developers too, is the problem of targeting a specific version of the platform. Since everyone is free to create their own distros, they can become somewhat unstandardized. That makes "targeting linux" difficult.

Add on that there are far fewer linux users than windows/mac users, and that you can play wow on linux using Wine... and there isn't a lot of reason to target even a specific distro

Does he mean one of the existing games will be ported to Linux, or the new game they're working on will have a Linux version as well ? If the first, I'm not interested. Blizzard used to release games that would set trends, that other developers would imitate or draw inspiration from. These days are over.

Blizzard has to, Valve already has a Steam for Linux beta client and at least 41 games ported to Linux.

Team Fortress 2 for example plays better and faster with a higher frame rate on Ubuntu 12.10 Linux than it did on my Windows 7 Home Premium on my Acer laptop.

Oh yeah check out PlayonLinux http://www.playonlinux.com/ to run some Windows Video Games under WINE for Linux. The Windows Steam Client works great on WINE and most games can run on WINE just fine as well. For some reason Civilization V plays better under WINE than it did in Windows 7. I would like to see a Linux native version of Civilization V come out, it would rock. The PlayOnLinux Python client configures different WINE versions and profiles for you and it can even install Internet Explorer from version 1 to 8, and some versions of MS-Office (not all) if you really need them.

I see in the next five years a move to Linux as the next big gaming platform by major video game makers. The reason being Linux runs video games better than Windows, and does not cost as much as an Apple Mac OS X gaming machine. Microsoft is really killing themselves with Windows 8 and Windows RT, and software companies are considering moving to Linux as a result.

Nice to see, the more choices the better. I think it will be really interesting this year to see if the Steam console actually manifests itself and when/if it does, will it get any real traction? I hope it does because the more competition for Microsoft and Sony, the better off the gaming market will be.

Steam just needs to allow for trading/selling of used games, and it would be even better, but I'm sure the publishers have a lot to say about that. Hopefully the EU forces that feature on them.

It's always pained me that the only AAA publisher/developer to maintain strong Mac support through thick and thin has been the one whose games I have no interest in (no slight intended, just not into MMOs, strategy, and hack 'n' slash).

> From a reliable source at the company, I have been told at least one of their very popular titles will see a release for Ubuntu Linux this calendar year. I was told this in person and was a statement backed up by additional proof.

While this is great and helpful, it'd be really great if we could see more content in the ways of the theory behind what makes something beautiful. Something more on color theory, and more things on UX Design like what was posted earlier yesterday about dialog boxes and meaningful verbs.

I say this because I can read things like webdesign tuts all day, but I leave not knowing why I did something.

This article appears to be describing a type system without making use of anything type-theoretical. Maybe it's just my inexperience with mathematical language, but the presentation seems to suffer badly as a result. The system in question is actually rather simple.

â€śThere are several reasons why it is advantageous to retain the limitation to only perform dimensionally consistent operations. One is that of error correction: one can often catch (and correct for) errors in one's calculations by discovering a dimensional inconsistency, and tracing it back to the first step where it occurs.â€ť

This is basically describing the â€śstack traceâ€ť you get when typechecking a program.

â€śBy performing dimensional analysis, one can often identify the form of a physical law before one has fully derived it.â€ť

This is tantamount to saying that it's possible to glean an implementation from a type, which is trueâ€"the implementations of all total functions with a given type are (I think) recursively enumerable.

I created this based on how difficult I found it to be to follow conversations here, especially long ones. It's always been fairly easy to keep track of replies to your own comments, but if you haven't commented in a thread or subthread, you're basically stuck counting timestamps. Since I've gotten it working it's made the browsing experience better. Please report any issues here or on github.

The default background color for new comments seems too dark for me--the contrast is low enough that new comments are more difficult to read than previously read ones. What about making the background for new comments lighter than the HN default?

Is there any sort of directory for Hacker News skins/mods/hacks? I feel like there is probably a more efficient way for me to view Hacker News, but I've found no convenient way to compare the different options.

Amazing work. I have the best predictor of any product success - ask Steve (em)Ballmer what is the correct thing to do and find someone that does the exact opposite.

Surface RT and the whole metro store were very exciting until Microsoft unveiled the lockdown.

And even today I think that a reversal of course is possible and will be beneficial for the adoption of windows 8/RT. Just unlock the damn things - a lot of professionals are looking for a third device still.

Windows and PC succeeded because they were wild and buggy and moldable - that allowed them to deliver good solution now instead of perfect in 10 years.

The same things is happening with ARM/Android - I am having more fun switching roms than anytime since the late 90s. And from anecdotal evidence Raspberry Pis and the likes are busy taking over the world where mobility is not a concern - the moment you are asked by non geek about the Pi and can it move a home server, you know the rules of the game are changing and fast.

I am very impressed with the thread over at XDA - really impressive hacking skills and discussion between a talented few. Go to pages 20 and 21 to see things like PuTTY and 7zip compiled and running on a Surface. Utterly fantastic!

edit: I'm also a bit confused, the XDA thread seems to imply that a user could side load an RT app that would launch an unchecked application [1]... meaning some sort of side-loadable RT app that could springboard a launcher for other ARM compiled apps.

Ironically there could be a community package manager and accompanying RT app and beat MS to the punch (if they were ever to go in that direction which is arguable)

edit2: Ah, a bit later in the thread it's revealed that the resulting cmd prompt still runs from the RT apps context, with its limitations and lifespan.

[1] That presumably would be killed/revoked from the Store and/or would never pass verification)

Given how much I've had to fight with Automake and Libtool to get really simple things done, they're hardly the things you want to hold up as shining beacons.

1. Do you want to compile certain source files with different build flags? Hah, no! Automake only supports it through obscene hacks, and those break if you're using Libtool.

2. Do you want to make a plugin? Best way is to ditch Libtool completely, make an executable target in Automake, and add the linker flags yourself. It makes you feel like you're banging two rocks together and it's not portable but at least it gets the job done.

3. Do you have any linker flags? Hah, no! Libtool will mess with them and they won't work.

The other bit is that Libtool is basically all magic, and Automake is basically all macros. The amount of magic that Libtool does to fool you into thinking you're not writing dynamically linked code is enough to make you puke and makes a mess when it breaks, and Automake's macro system is terrible.

Just imagine, if you will, that you want to compile one file in your library with the flags -msse3, to produce a dynamic library that has to run on systems both with and without SSE3. You can use cpuid to call functions in that file or not at runtime.

All of my searching has lead me to the conclusion that this is impossible if you want to use Automake and Libtool, and easy if you ditch both of them.

Edit: I should also add that, as an expected corollary, if you use ghc -M to generate your Makefile dependencies parallel make works fine. I used ghc that way for years. I think there was a corner-case if you interrupted a parallel build, but it was easy to deal with.

The reason people do this is the C toolchain is terrible, especially on linux. Want to depend on a specific version of a library? Whoops, no, you can't do that. Want to extend make? Well, you either do it in make or in shell, neither of which are nice languages. Want to compile and link your code once? Good luck fighting libtool. Want a package with dependencies? You'll have to choose whether to work on debian or on not-debian. And actually the debian maintainers are going to move all your files around anyway, because the FHS committee certainly knew better than you where your program's files should go.

It's bad enough I start to wish everyone would just use the JVM, where you have maven. Truly reproducible builds, depend on whatever range of library versions you work with (and it's no problem if two programs want to use different versions), a structured and testable plugin system for extending the build system, and you can use it to build any language (there are some benighted fools who write their own tools like SBT, but they will at least stay compatible so can usually be safely ignored).

> The ultimate problem is that people insist on rolling their own sucky versions of build systems and package managers. (Though cabal and ghc --make suck less than most, I'll admit).

Cabal is probably the #1 thing keeping me from writing more Haskell code. I've had so many issues with conflicting versions of various libraries being required, and incredibly cryptic error messages upon failure.

Which is sad, because Haskell otherwise seems rather attractive.

It's also ironic, because I would have imagined that a package manager for a purely functional programming language would be a bit more robust[1].

Yeah, this happened to me when I was integrating Ur/Web and Haskell; Ur/Web generated C and wanted to handle linking, but to link against Haskell libraries I needed GHC to do everything. There's a happy ending to the story, though: we patched Ur/Web to use ghc instead of gcc to do compilation, and everything worked out great. :-)