Uncaptcha2: Defeat ReCaptcha with Google Speech2Text - <AUTHOR> https://github.com/ecthros/uncaptcha2 <comment><USER2> This is irrelevant. Speech-to-text costs $0.006 per invocation (for < 15 seconds) [1], or you can solve 166 captchas for $1. There are already services out there which will solve captchas for $0.50/1000 [2], an order of magnitude cheaper. The fact that Google has a service which will do this inefficiently changes nothing about the threat/cost ecosystem. CAPTCHAs aren't about being a perfect defense, they're about increasing cost to operate at scale.

[1] [https://cloud.google.com/speech-to- text/pricing](https://cloud.google.com/speech-to-text/pricing)

[2] [https://2captcha.com/](https://2captcha.com/), the first hit I found with the search [captcha solving serving price]

Disclosure: I work for Google on security and cloud, but not on anything related to captchas or speech to text.

<comment><USER3> I would _love_ to pay money (or do some sort of proof-of-work hashing) rather than solve Google's infuriating, privacy-hostile CAPTCHAs. I rather suspect that Google, as an advertising and consumer-surveillance firm, gets rather a lot of information out of the system.

<comment><USER4> I definitely preferred it when recaptcha was helping archive.org digitize books for the good of humanity. Felt much more altruistic than helping Google train neural network.

<comment><USER5> The rules were also so much easier.

It's a bit difficult to miss two words displayed on an image.

It's incredibly easy to miss a traffic light 30 meters away from the camera on such a tiny photo.

</comment></comment></comment></comment><comment><USER6> Funny story: I can no longer moderate Disqus on my site because it pops up reCaptcha, and I don't even attempt reCaptcha anymore. And I can't ask for support because it pops up reCaptcha. And I can't export my data and delete my account because -- you guessed it -- it pops up reCaptcha.

One of these days I'll gird my loins and go into battle to convince a bot that I'm not a bot. One last time.

<comment><USER7> Sometimes it won't accept correct answers either and you're just wasting time training their classifier for minutes. I found the audio challenge to be much faster to get past, so I've started switching to it a couple of months ago, then finally decided to automate it with a browser extension.

[https://github.com/dessant/buster](https://github.com/dessant/buster)

<comment><USER8> If you manage to force google to serve you the noscript version, it tends to accept correct answers the first time with no re-challenges. The javascript version of recaptcha won't let me through no matter how many times I give it correct answers.

However websites must specifically allow the noscript version to be used; by default it's disabled for all websites.

<comment><USER9> What do I have to do to force the noscript version to activate? At this point it's getting impossible for me to pass captchas, and the audio challenge is no help since I just get half a word or some other unintelligible utterance.

<comment><USER8> Sometimes disabling javascript using e.g. umatrix can do it, but only in cases where that website operator has elected to use the most permissive setting (this seems to be rare.)

4channel.org is one site that allows noscript captcha, you can try it out there. But I've rarely seen it possible on other sites.

</comment></comment></comment></comment></comment><comment><USER10> I've seen this a week ago on reddit. The researched told google about this vulnerability and Google doesnt care about it, they are totally OK with it. You can see here that captcha doesn't block robots, but blocks people and makes browsing inconvenient. reCaptcha is a way google mines data from us for free.

<comment><USER11> Oh please, what a total joke of a comment.

> Google doesnt care about it, they are totally OK with it

Google hasn't said they don't care about it, where did you see any of that ?

They merely allowed the code to be released despite it still working against the current. Previous experience (namely the original uncaptcha) prove that they intend to find a way to fix it.

> You can see here that captcha doesn't block robots, but blocks people and > makes browsing inconvenient.

Total BS, remember it's not Google that uses it, it's website owners (us), if what you claim was indeed true we wouldn't be using it, we would use something else that did what we wanted.

> reCaptcha is a way google mines data from us for free.

Of course, through the visual selection it displays when "unsure", although I do not know the detail it seems pretty obvious that once it's sure you're human it sometimes ask you to detect things in picture anyway so as to provide training data (for maps, waymo, image search, whatever ...)

<comment><USER12> I have literally never been asked to solve one of those image recognition recaptchas in my main browser profile. (While it happens once a month in incognito windows.)

So it's not at all obvious that known humans are being asked to solve captchas just for the purposes of training.

<comment><USER13> It barely asks you if you use Chrome and/or are logged into a Google account. ReCaptcha is how you make Firefox and IE/Edge users without a google account hate you.

Because believe me, if I get asked to click another 50 cars without good reason, (3 failed logins would be a good reason) I'll blame your site for being dumb and not google.

<comment><USER14> And here's my anecdotal evidence:

I have only been served image captchas since forever. I literally thought the warped text captchas had been phased out. I literally never see anything but image captchas.

<comment><USER8> > _I literally thought the warped text captchas had been phased out._

It has been since March.

[https://developers.google.com/recaptcha/docs/versions#v1](https://developers.google.com/recaptcha/docs/versions#v1)

</comment></comment></comment></comment></comment></comment><comment><USER5> I'm using Buster[0] for this purpose, and it relies on the same method. Available on Firefox, Chrome and Opera in their respective add-on stores, and no additional steps are needed (like in this project).

From my experience, it works perfectly in a default session and not at all in the private browsing mode. I've never bothered to figure out why is that (possibly some other add-on interfering).

[0] [https://github.com/dessant/buster](https://github.com/dessant/buster)

<comment><USER15> reCAPTCHA relies on things like Google cookies to lower the "user is a bot" risk score. Higher risk scores (such as when you go via a blank slate browsing session) result in more/more difficult challenges.

<comment><USER8> > more difficult challenges.

That's just code for "it rejects correct answers to frustrate you." If you manage to get the noscript version of the captcha _with otherwise the same browser state_ it will accept a correct answer the first time nearly every time. Presumably this is because they didn't bother to implement their "hassle the user" code in the noscript version; it's probably neglected by google since it's disabled by default.

For instance, the _sloooow_ fade in of challenge tiles... what legitimate purpose does that serve? That's not there to make it harder for bots. That's there just to hassle and punish real humans that google dislikes because they don't buy into the google 'ecosystem'. The more they dislike you, the slower the fade in gets. The fade-in can be several seconds long in severe cases.

<comment><USER16> I run a combination of uBlock Origin, Privacy Badger and Firefox's tracking protection. Can confirm, tiles take 5 seconds to fade in, I have to do 3-5 rounds of it, and unless it's really important I'll just tell reCaptcha to piss off.

</comment></comment></comment></comment><comment><USER17> I've built the same in the past to solve ReCaptchas and my question is:

Why on earth did they publish this?

I've kept it secret because Google will close this loophole and probably make it more difficult for disabled people to verify that they're humans. And Google is not dumb: They already know that speech recognition "breaks" their bot detection, just like screen readers - this is about accessibility. Publishing stuff like this will increase the pressure so they will be forced to "improve" their bot detection system - which simply means that even more people won't be able to solve those captchas.

Heck, some weeks ago I've tried to solve a ReCaptcha for literally 10 minutes! My answers were right, it was a matter of discrimination. My point is: My bot automation is able to solve a Captcha faster than a human being. This is silly and ineffective.

And about the people who've published this: they think they do someone a favor with this. But I can't see how it's in anybody's interest to release this into the public (especially on a site like HN where Googlers are reading). If they would propose a better solution for website owners to secure their sites, fine.

But everyone who's talking about "vulnerabilities" like this makes it more difficult for real people to access the websites that they want to use. I know disabled people who can't solve those captchas - it's just too much of a hassle while it's easy for my bot automation to do it.

We should really ask ourselves what we're really trying to improve here.

</comment><comment><USER18> I used to work at SoundHound and 3 years ago we had some weird illegitimate looking accounts using our Houndify platform.. turns out they were for breaking recaptcha. It was a bittersweet verification that our voice recognition was ahead of Googles but we had to put in protections against that sort of abuse so we weren't enabling spammers...

<comment><USER19> Did you end up using recaptcha?

</comment></comment><comment><USER20> Here is a similar attempt from 7 years ago (LayerOne 2012). Reveals how 'simple' life was back then.

Bonus: the talk is HIGHLY entertaining. Their approach gets counter measured by Google an hour before the talk and so they can't demo it anymore.

[https://youtu.be/Mj3thHKeKyg](https://youtu.be/Mj3thHKeKyg)

<comment><USER21> > [https://youtu.be/Mj3thHKeKyg](https://youtu.be/Mj3thHKeKyg)

This was entertaining. Thanks for posting it.

<comment><USER22> The importance of recording your demos haha!

</comment></comment></comment><comment><USER23> From what I can read on the twit and GitHub, the researcher hasn't proven this works at scale.

The point of recaptcha is blocking "captcha farms" or automated bots from abusively creating accounts, buying tickets, etc.

The author hasn't demonstrated that this attack is effective in those scenarios. The only thing he has shown is a very convoluted way for a human to solve a recaptcha (harder for 99.9% of humans than the standard recaptcha experience)

That would explain why Google didn't care about them publishing this.

</comment><comment><USER24> why not use the project link? [https://github.com/ecthros/uncaptcha2](https://github.com/ecthros/uncaptcha2)

<comment><USER25> Because the twit summarizes the interesting bit, while the project page not so much. Which is good to motivate people to learn more about the project, right?

</comment></comment><comment><USER26> Ironically sad that this protection is thereby most easily defeated by its purpose of accessibility. Pessimist in me thinks there is no good deed possible in this world.

</comment><comment><USER27> Can god make a stone so heavy that he can not lift it?

</comment><comment><USER28> 1\. In OSX, enable VoiceOver (CMD+F5).

2\. Navigate to a RECAPTCHA.

3\. Click the "I Am not a bot" checkbox.

How is this not an exploit? Is Google doing something extra when it detects a screen reader?

<comment><USER29> What do you mean? Enabling VoiceOver on OSX is being white-listed by ReCaptchapa?

<comment><USER28> Yes. Or at least it appears that way.

<comment><USER30> I don't doubt that Google employees are reading this thread and this might make the life of sight-impaired a bit worse.

</comment></comment></comment></comment><comment><USER29> This exploit has been known for a while.

Example: [https://github.com/mikeyy/nonoCAPTCHA](https://github.com/mikeyy/nonoCAPTCHA)

</comment><comment><USER31> I'm guessing Google will start using some sort of steganography to prevent this from happening.

<comment><USER32> You would think they could apply a hidden track at a certain frequency that is inperceptable to a human or a pattern of changes in volume to prevent it being passed through their API.

Of course the next step will be to resample the sound to remove the steganography...and the arms race continues.

<comment><USER33> Or simply use other speech to text api not provided by Google

</comment></comment></comment><comment><USER34> Very impressive!

Verification seems really hard.

How do you go about verifying very other not the user is an actual person?

</comment><comment><USER35> captcha is a lie.

</comment><comment><USER36> Google doesn't care, they just want free training data. The team behind uncaptcha even gave them 6 months notice and Google still did nothing

their own sites are protected by additional measures to detect bots like monitoring mouse movement

<comment><USER37> Isn't the text based ReCaptcha pretty ancient at this point? Google's current version is either the simple checkbox (which I assume is checking various things) or the image based version where you have to click on traffic signs. I like to assume that's a live feed from a Waymo car and I'm saving lives.

<comment><USER8> > _" Isn't the text based ReCaptcha pretty ancient at this point?"_

That was v1, they shut it down in March 2018. You won't see it anymore anywhere.

> _" Google's current version is either the simple checkbox (which I assume is > checking various things) or the image based version where you have to click > on traffic signs."_

That's v2. v2 will present you with a simple check box if you're very compliant with the google surveillance system, or will present you will image challenges if you're not (or if it's just in the mood.) v2 is very capricious and will reject correct answers from users google wishes to punish for, e.g. using firefox, using adblockers, using resistfingerprinting, blocking google's cookies, etc.

The recently released v3 is the worst of them all; it does away with the image challenges of v2 completely. The user never interacts with it directly, never has an opportunity to persuade v3 that they're a real human by answering any sort of questions. It's nothing more than a measure of how compliant you are with google's surveillance.

<comment><USER38> > The recently released v3 is the worst of them all; it does away with the > image challenges of v2 completely. The user never interacts with it > directly, never has an opportunity to persuade v3 that they're a real human > by answering any sort of questions. It's nothing more than a measure of how > compliant you are with google's surveillance.

I did a very quick experiment with reCAPTCHA v3:

      * using Firefox in private browsing mode (not logged-in to anything)
      * with a VPN
      * using uBlock Origin
      * Do-Not-Track on, disabling 3rd party trackers
      * Only went to one page and filled one form with garbage data

My score was 0.7, which is pretty decent I would say.

I did a similar experiment using Ghost Inspector (a platform for automating browser testing, something similar to Selenium, but not sure what they use exactly), and my scores were consistently 0.1.

I'm also a bit suspicious of Google, and have trouble with the fact that this is the only solution on the market, and it's free for websites to use. But I'm not sure your statement is entirely accurate judging from my very limited experience.

<comment><USER39> On Firefox, if disable 3rd party cookie, it never accepts my correct answer. I have to fight 5 minutes with google to prove that I am human. Same when I use vpn. Allow 3rd party, logged in to google account, no vpn and just one check.

Edit: If try to use audio challenge in the first case, it directly tells me that I am using some method to solve captcha and they won't allow it. So much fun.

Google is evil.

<comment><USER38> I was talking about reCAPTCHA v3, which doesn't present any challenges at all. It lets the site owner decide what to do based on the score.

<comment><USER39> I think nothing appears if my score is above google's (because they decides my mark in the end) pass mark. If not recaptcha appears which is what happens to me and I go through the same process.

<comment><USER38> This sounds like reCAPTCHA v2

<comment><USER39> My mistake. I checked now. With vpn, firefox, 3rd party cookie block I got 0.3 score which is too bad. Google logged in, allow 3rd party and vpn gives 0.9.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER40> > Sorry, you are rate-limited. Please wait a few moments and try again.

I don't know why twitter blocks my Android Firefox, but I feel as if we both benefit.

<comment><USER41> Same problem for me on Android with Firefox.

<comment><USER42> Wow, so it's not just me! I'll ask around Mozilla and see if anyone knows why Twitter does this.

<comment><USER5> A refresh usually helps, and this "feature" isn't exclusive to Firefox.

For some reason, it is exclusive to the links opened from another apps and doesn't appear when accessing a link directly (via a refresh). That might narrow down your search a bit.

<comment><USER43> I always was rate limited until I signed into Twitter. Problem solved.

I think they cap guest views/minute.

</comment></comment></comment></comment></comment><comment><USER44> "The team has allowed us to release the code, despite its current success."

First off permission was never needed to release the code. Second, Google's interest in captcha is not to protect websites but to further their machine learning algorithms. Unless the captcha mechanism was destroyed to such an extent nobody used it they will be happy to accept captcha requests from automated systems. Google may seem like it sometimes but it is not your friend.

</comment><comment><USER45> Url changed from [https://twitter.com/FGRibreau/status/1080810518493966337](https://twitter.com/FGRibreau/status/1080810518493966337), which points to this.

</comment><comment><USER46> Tldr:

Captcha -> request Audio verification-> download mp3 and send to google API for recognition -> 91% accuracy</comment>


Show HN: Build simple reusable checklists for your team - <AUTHOR> https://firesub.com <comment><AUTHOR> Hello hackers!

For the last year or so I've been building a checklist management app for teams called Firesub.

The idea is to help make recurring tasks easy to remember and perform in a consistent way across the team.

It is an app that let you create and manage checklists that you and your team can follow whenever you need to perform a repetitive task like product development, code deployments, code reviews etc.

There is a ton of awesome features like assign people to checklists, scheduled checklists, email notifications when checklists is completed and so on, too much to write here, so please "check it" out. =)

I would love to hear your thoughts and feedback.

Thanks!

/Frej

</comment><comment><USER2> This is for sure a problem. Especially when a lot of the existing solutions like asana are overly complex and tend to try to run the entire dev cycle. I think you've got a good starting point, keep it up, and congrats on the launch

<comment><AUTHOR> Thanks navd!

The goal is to keep it simple, a lot of Asana like products tend to be feature bloated over time.

My solution is to work more with 3rd party integrations instead of trying to fit all features imaginable into Firesub.

</comment></comment><comment><USER3> great idea, I have something similar I built in 2006 on our internal network. It is supper useful to have a list that is reused on a frequent basis.

<comment><AUTHOR> Thanks tmaly!

I hear a lot of teams have lots of different ways to manage simple repetitive tasks across the team, like Google docs, email lists, schedules and so on. So I built Firesub to try to simplify the work for teams.</comment></comment>


The Revolution May Not Be Tweeted, But Al Jazeera English Sure Will Be Promoted - <AUTHOR> http://borasky-research.net/2011/01/29/the-revolution-may-not-be-tweeted-but-al-jazeera-english-sure-will-be-promoted/

<comment><USER2> Very interesting. A lot to learn for startups and activists.</comment>


MySQL v. PostgreSQL - <AUTHOR>

I've been a long time user of MySQL.  I neither love it, nor hate it; but I do find that it meets all my database needs.  I was reading the Reddit job posting the other day and I see that they use Postgres as their database and I thought to myself, "is there something I'm missing?"  I've never really looked into Postgres, but it seems like I see it popping up all over the place.  What's the consensus?  Is Postgres superior to MySQL in some way I'm unaware? <comment><USER2> Historically, Mysql was "faster" than Postgres (it's called Postgres or PostgreSQL) in the same way that a bicycle without brakes was faster at going down hills. These days, Postgres is a lot faster, and Mysql, with InnoDB, has things like transactions that make it an actual database. I've always been partial to Postgres because it was an actual database with more features and without any of the licensing weirdnesses of Mysql.

</comment><comment><USER3> Data integrity?

</comment><comment><USER4> postgre used to be superior due to the fact that it had a ton of features that mysql didn't have. now they're approximately even, although postgre does still have more robust features.

mysql, i believe, performs better in most situations and configurations. in the black art of performance tweaking, you can tweak them both down pretty well, but mysql still stays better performing (edited to add:) in general. YMMV based on the needs of your app.

<comment><USER5> ... it depends ...

<comment><USER4> yeah, there's no doubt about the fact that its situational.

just like picking a language</comment></comment></comment>


We Can Break Up Big Tech (Elizabeth Warren) - <AUTHOR> https://medium.com/@teamwarren/heres-how-we-can-break-up-big-tech-9ad9e0da324c <comment><USER2> Is there a party that gives a shit about climate change?

This isn't a bad proposal, but I feel like a lot of stuff in politics right now is just so off-topic.

<comment><USER3> > Is there a party that gives a shit about climate change?

Yes, the Democratic Party does, but that doesn't differentiate Democratic candidates from each other.

<comment><USER4> Jay Inslee has basically made it his platform so far, but I don't think it's all that likely he goes far in the race.</comment></comment></comment>


Google Design - <AUTHOR> http://www.google.com/design/# <comment><USER3> Am I the only one who gets a headache trying to decipher tile layouts like this? My eyes bounce back and forth and I still have no idea how the information is structured or what's important.

I appreciate that Google is sharing all of this though.

<comment><USER4> It's gonna get worse before it gets better....

[http://beta.united.com/](http://beta.united.com/)

It it a button? Or a dialog box? Maybe it's an ad. Flip a coin!

<comment><USER3> Exactly...I don't understand it :(

The new Azure portal looks very similar and it's borderline unusable. Unless I'm just resistant to change and will eventually warm up to it but it seems to violate a lot of fundamental design principles.

<comment><USER5> Kinda of topic but from the PoV of a third-party developper who had to test a lot of workflows in this new Azure portal: it's indeed a nightmare. Why do I have to click so many times and watch so many panel opening/closing animations before getting to basic features?

Also closing 5 panels before opening a new one feels like a huge waste of time.

</comment></comment></comment></comment><comment><USER6> The design gives no indication of what's clickable. Reminds me of those Flash games where you frantically click on things trying to find out what does something. Except now, everything is a flat-shaded rectangle.

The input side seems confused. In their guidelines, they talk about buttons having a drop shadow, and less shadow when depressed.[1] Fine. But not all buttons have a shadow, and not all objects with a shadow are clickable. On interaction, they write "What will happen if I touch this screen? And then this icon?"[2] That's a game-like interface. It might be tolerable if there was an standard, easy way to undo whatever you just did. There's no sign of that in the guidelines.

There are 84 standard input icons.[3] But no icon dictionary. Help text is so last-cen. You're supposed to know.

When they finally get to "Buttons"[4], they have a reasonable set of controls. However, one of them is plain text, with no indication that it is clickable. That contradicts their principles of material design. If they're going to have all this pseudo-3D, it ought to be used for all things which behave differently from their surroundings. But no. Google does suggest the use of a distinctive floating action button for "promoted actions" (i.e. "Buy").

The output effects are pretty, but that's all this is. Pretty. It's all output-side. There's no innovation on the input side. It's what you get when you put graphic designers in charge of a user interface.

[1] [https://www.google.com/design/spec/what-is- material/elevatio...](https://www.google.com/design/spec/what-is- material/elevation-shadows.html#elevation-shadows-shadows) [2] [https://www.google.com/design/spec/animation/responsive- inte...](https://www.google.com/design/spec/animation/responsive- interaction.html#) [3] [https://www.google.com/design/spec/animation/icons.html#](https://www.google.com/design/spec/animation/icons.html#) [4] [https://www.google.com/design/spec/components/buttons.html](https://www.google.com/design/spec/components/buttons.html)

<comment><USER7> > It's what you get when you put graphic designers in charge of a user > interface.

You're wrong. That's what you get when engineering-companies start to care about design: they think design means decoration and don't focus on how it works, just on how it looks. A real graphic designer would know better than to fiddle around rippling effects when real issues are at stake.

</comment></comment><comment><USER8> [http://www.google.com/design/videos/making-material- design/](http://www.google.com/design/videos/making-material-design/) \- cannot make up my mind if this video is purposely designed to come across as farce. I could easily imagine this being in a satirical comedy film.

<comment><USER9> The whole video felt like something Apple would put out.

<comment><USER10> That's precisely the point: Google is trying to convince everyone that they're as design-driven as Apple.

<comment><USER11> I can't tell if it's a 'grass is greener' thing, but after buying a Moto G in order to enjoy Lollipop/Material thinking the iOS flat redesign was lame. After a year of usage, I think lollipop isn't an improvement over KitKat, and worse than iOS (I do believe Apple knows some dark magic when it comes to user interfaces desktop or mobile).

More and more I'm thinking there are 3 levels of usage for a mobile device.

      - Fixed and instant: calling/answering/taking a picture
      - Semi instant: finding directions (often less urgent than the previous)
      - Complex: browsing, reading

the ~iPhone displaced the first level, which was the norm of dumbphone, fixed hardware interfaces. More and more OSes are aiming at making everything as the third. I can't get the lollipop phone interface in my mind, I'm even jealous of my mother's Bada based samsung.

</comment></comment></comment></comment><comment><USER12> The most iconic feature of "material design" to me is the "create" button in the lower right-hand corner. Except if you're in landscape in, say, Gmail, it's in the center bottom since it's a part of the message list.

Can someone explain why a create button is given this privileged and inconsistent position instead of being in a menubar like every other button in every app ever?

<comment><USER13> This thing is infuriating, I never remember how to create a new file in Google Drive now (it's the bottom right FAB located at a place yet unexplored in every desktop UI ever).

<comment><USER14> Huh? This is a screenshot of my google drive: [http://imgur.com/oGjzhTJ](http://imgur.com/oGjzhTJ)

as you can see, "new" is in the same place its always been. No FAB.

EDIT: in retrospect, you might be talking about the docs site. (docs.google.com rather then drive.google.com) I spose the only thing I have to say about that is that no design guidelines are a magic bullet, and that I have no idea why they even have that separate docs site.

<comment><USER13> > you might be talking about the docs site

That's the one! Google's products are so confusing sometimes.

</comment></comment></comment></comment><comment><USER15> Material design doesn't scale up very well. On desktop we end up with huge flat areas or chunky images stretched beyond their size.

Massive scaled chunks. Even on mobile it's just a stack of coloured boxes.

I like some aspects of material design like the paper philosophy, the fine shadows, buttons, and other things that do well on mobile. But more work is needed to improve the desktop interface.

Remember seeing iPhone apps scaled up to iPad screen size? That's how a lot of websites look now on desktop screens.

<comment><USER16> It doesn't scale down well either, on mobile everything is too spaced out so the information density is terrible. The calendar app on android is a farce.

They've also released the 'improved' notes app, you now have to press buttons twice just to add a note, it's frustrating and totally idiotic. A hard to use notes app, great job Material.

<comment><USER15> Could be just poor implementation for those apps of material design - <USER2> you'd hope is fundamentally good at heart.

It does seem fairly casual. Even the Google designers in the video weren't unified in a definition, so it sounds open and unconstrained. Although I wouldn't put it past Google to hide an on-brand agenda right there in the colour theories. One thing I'd move away from is the obsession/requirement of bright colours. Muted earthy colours would work well too in the right combinations for maximum emotional effect on unsuspecting visitors!

<comment><USER16> Not really, like mentioned elsewhere in the thread the add button in the bottom right is supposed to be a menu instead of an action.

That means in Material there is no way to do the most common actions if you use that as designed. Like the mail app I am using at the moment has made that button both "reply" and "fwd" when you're in an email, which is frustrating as hell when 95% of the time I want to reply.

But if they just made it reply, where do they put fwd?

<comment><USER17> "the add button in the bottom right is supposed to be a menu instead of an action."

Not according to Google's Material Design "spec", it isn't: "A floating action button represents the primary action in an application." ([http://www.google.com/design/spec/components/buttons- floatin...](http://www.google.com/design/spec/components/buttons-floating- action-button.html#buttons-floating-action-button-floating-action-button))

Additional actions should go on the action bar.

</comment></comment></comment></comment></comment><comment><USER18> Hmm. Material design is clicking twice on the play button to launch a Youtube video.

<comment><USER19> You have to click play _three_ times on mobile. Try it.

<comment><USER20> On Google Chrome on my Android no less. What a joke. The video controls kept appearing unprompted too.

</comment></comment></comment><comment><USER21> For strange reasons I am getting the same vibe I got when I was viewing Google's Wave promotion, as if Google had uncovered the best thing ever. Everyone at Google seems super excited about their new things. I suppose when they're in their own little silo universe everything seems exciting and right.

Again I am only speaking about the feeling I got after watching the promotion video.

<comment><USER22> You are totally right. I would just add that the meme "designers are rockstars and vital to the information age" doesn't originate from Google. It originated from designers themselves. The designers have now fully infected Google... None of these problems are new. People have now contemplated them for an entire generation in science fiction books and movies, video game interfaces, CAD interfaces, music instrument interfaces, art, Xerox, Media Lab, etc.

Really though, animated interfaces are a short-term fad which is subject to boom and bust cycles just like 90s icons graduated to high-res icons and then back to microsoft tile icons. When peoples' hardware can no longer handle the animations and they learn to associate animation with skipped frames, impeded workflow, etc., the cycle will revert itself.

<comment><USER6> Visual feedback from user actions is a good idea, provided that 1) it happens every time, and 2) it happens right now every time, even if it takes time for the action to complete. Not seeing that mandated.

</comment></comment></comment><comment><USER23> Our design team is trying to use Material guidelines in an upcoming app. I needed to remind them that while there are good elements in the guidelines, there is a lot that isn't good and they need to leave those parts behind. This certainly reinforces that feeling for me.

<comment><USER23> lol, downvoted for expressing anti-Material sentiment.

Google design guidelines as put in place by Google are hit-or-miss. Just look at switching between accounts on say, Google Analytics. Multiple view refreshes and double the user actions to do what once could be done from the same view with a click to logout and a click to login followed by typing your credentials.

<comment><USER24> Analytics (the app and the site) don't look like they've been updated to Material Design, they look basically like they always have.

</comment></comment></comment><comment><USER25> Idk but I'm not the biggest an of the implementation of Material Design. I like the principles but some of the elements are just really ugly–i.e. the huge heroes.

</comment><comment><USER26> The first time I saw material design, I thought it's a cool concept. I liked it. I also liked applications built with this concept. At first, those apps looked...different. After several months, today, when I see anything designed with a material design idea behind it, I have a strange feeling. All the material applications/websites look like they were designed by the same designer. Imagine there are 10 websites and only one of them is designed with material concept. How hard would it be to find this 1 out of 10? It seems a fairly simple task to me. I'm not a designer, but I never had exactly the same feeling before (i.e. surfing through thousands of flat web sites). I'm not sure if I want to see thousands of material websites. Does anyone else experience the same?

<comment><USER27> I think that's the point of material design. It's the design equivalent of egoless programming. You should not be able to tell who wrote/designed something if it is done properly.

<comment><USER28> It's also hugely beneficial for Google if all apps/sites get sucked into looking the same, so their platform becomes a platform, rather than a gateway to individual companies.

Beneficial for them, and dangerous for others I fear.

<comment><USER26> Agree. They are basically trying to "monopolize" the design.

</comment></comment></comment></comment><comment><USER29> _We 're no longer controlling every pixel. It's more like jazz improvisation._ \- Matias Duarte

Source? What does that mean?

<comment><USER30> Either meaningless nonsense, or displays a complete ignorance of jazz. You pick.

<comment><USER11> No fixed / hard-coded information; everything reacts adapts, is fluid, interacts with other parts. Compared to how things were done in the past it seems improvised and free. Not far from jazz.

<comment><USER30> My objection is the conflation of [sloppy <\---> precise] with [improvised <\---> specified]. In reality they're more or less orthogonal qualities; Elvin Jones, for example, is about as close to a musical equivalent of "controlling every pixel" as I can imagine.

<comment><USER11> I guess jazz is too fuzzy, I heard Miles Davis never played the same note twice, not sure if conscious or not. Roy Haynes says he's not a metronome and everything flows with almost no structure.

All in all, it's hard to say if it's controlled or not. These guys have highly refined skills, even when they change course almost randomly, they know how to bend time and harmony, nothing is random.

</comment></comment></comment></comment></comment><comment><USER31> [http://www.google.com/design/spec-vr/designing-for-google- ca...](http://www.google.com/design/spec-vr/designing-for-google- cardboard/a-new-dimension.html)

My browser window is 1350 pixels wide and the headline is still cut off: "Designing for Google Cardboar"

</comment><comment><USER32> Is this the Design world's equivalent of the Engineering world's 'over- engineered' syndrom? I appreciate that these people are trying to innovate, but it`s almost like they are Designing as for design's sake ... Hope I don't come off as too negative.

</comment><comment><USER33> I find myself liking the Roboto typeface more and more... It's got a lot of, dare I say, character?

And I love that it's 100% free for any use.

</comment><comment><USER34> [http://i.imgur.com/OnlKapS.png](http://i.imgur.com/OnlKapS.png)

Sure looks like it was improvised and not thoughtfully designed.

</comment><comment><USER35> Well done Microsoft: inspiring not one, but two major competitors. Metro aka Modern aka Material rocks!

<comment><USER36> Fortunately, people really like Material design. Metro was rejected and ridiculed by the public.

<comment><USER37> No, they don't. Look at this thread.

</comment></comment></comment><comment><USER38> there exists the term "overengineered" for technical products. There should be a term "overdesigned" for user interfaces too.

Material design is a good example for this.

<comment><USER39> I think it's overengineerd design.

</comment></comment><comment><USER40> I like it!

A good test of an organization or person isnt how they are, but how they adapt. And the signs are promising here.

</comment><comment><USER41> Wow that's bad. That's like microsoft bad. Which, is actually fairly insightful; is that what happens when an organization gets too big, they lose sight of what's actually good anymore and just do design by committee?

Also, it's as if... there is only one design. Like, they figured everything out for you and you should just use that. Bootstrap is not so different in this, but i get the vibe that this isn't so meant to be tweaked; that's the air I get about it at least. That what's there is what you should use. Which, is really arrogant, because it googlfies the web, and by no means for the better.

But really, I don't know what they're thinking, and I hope this doesn't become more of a thing; but they only seem to keep pedaling it.

<comment><USER42> It's not even design by committee, it's design by clique. It's the Project Runway of UI design.

At least in the video, nobody is talking about metrics or testing or any practical consideration. In fact one of the designers says they "are used to working more practically. This is the first time where we're being pushed and told, 'don't worry about that'". Yes, don't worry about practicality...

Another says it "is a way for designers to get what they want. [laugh]"

<comment><USER41> > It's not even design by committee, it's design by clique. It's the Project > Runway of UI design.

Well put; and possible even worse!

</comment></comment></comment><comment><USER43> Looks like the monospace font on that page is "Roboto Mono", which seems to be new.

</comment><comment><USER44> Google and Apple have both been trolled by the critics of so called skeuomorphism.

While leather binders and bookshelves are excessive, Apple's pre-flat iOS design was really good, and all the criticism that lead to flat/material design was unjustified.

</comment><comment><USER45> I hate how the little 'action dot' or whatever they call it moves around. On their colour palette video[1] you can see it sliding all over the place depending on the screen size. Why can't it just go in the top right like it always has been, instead of playing a game of 'hunt the dot'? I always have to remember to look at the bottom of my diary on my phone to add a new entry now which is pretty unintuitive for me :-(

[1] [http://www.google.com/design/videos/palette- perfect/](http://www.google.com/design/videos/palette-perfect/)

</comment><comment><USER46> Ah yes, modern web design; too much for my 6-core Xeon workstation to render smoothly.

<comment><USER47> It seems to be rendering at 60 fps without dropping frames on my old laptop, using Chrome.

It's still not worth seeing, though, other than as a warning about what can happen if you think adding graphical features is more important than solving problems.

</comment></comment><comment><USER48> Web page is nice-looking, but isn't snappy (at least not on my laptop).

<comment><USER49> Scolling is smooth in IE on a Surface Pro 3, but not in Firefox. That's pretty typical.

What's unusual is that it's visibly janky in Firefox on this desktop with an i7 and a Quadro FX 580. Sure, it's not a _brand new_ workstation, but it should be able to scroll a webpage...

<comment><USER48> Also using Firefox here. It's a MacBook Pro that's a few years old, but is still fast.

</comment></comment></comment><comment><USER50> I'm using the HTC One (M7 a few years old) with Android 5.0. I am a lover of Android and material design. Unlike a lot of people here, I've found the overall UX / usability to be very intuitive and easy to use.

One aspect of the new design I really like is native sharing. With as little as two taps, I can share any photo, video, selected text or other media to almost any other app (text, gmail etc) with ease.

I am not a huge fan of 'tiled layouts' but I also don't feel as though it is as tiled focused as Microsoft or others.

<comment><USER51> Wasn't native sharing always a feature of Android? Did Material Design change it somehow?

</comment></comment><comment><USER52> Putting dots in the space between words makes it harder to distinguish word boundaries, which makes the text difficult to read.

If design hinders usability, it's not good design.

<comment><USER53> Indeed. I work in accessibility/assistive-tech and the dots between words is a disaster.

</comment></comment><comment><USER54> I appreciate material's approach to replicating real world physics look. I'm curious though what other designs could be very productive even if they aren't intuitive out of the box and require some training to use them. Interfaces like the command line, APIs, text and even human languages require significant time to learn but they are worth the effort as they allow us to express an incredible range of concepts succinctly.

</comment><comment><USER55> IMO Material Design is going to have the same problem as Bootstrap. There will be so many apps and websites with that look and feel that the spec will become boring in no time.

For a serious app I'd never use plain MD, the same way I never use plain bootstrap. Each web/app experience should have its own identity. When everything looks and feels the same way, the "wow factor" disappears.

</comment><comment><USER56> I enjoy material design a lot on my Android phone and in the Inbox web app.

Other than that, I find that it can be really overwhelming, as is the case here. I think it's a problem of constraint. The animations are just so _heavy_. And everything feels large, including the drop shadows. I actually experience some minor sense of "claustrophobia" on pages like this.

</comment><comment><USER57> I'm always amazed at how much people can say about pretty much nothing.

</comment><comment><USER58> This website is overwhelming with a full screen.

</comment><comment><USER59> I'm someone very comfortable with the internals of things.

But my design sense is awful. My sites never look as polished as I'd like them to. How can I get a design sense?

<comment><USER60> It can be learned, by the same techniques you use to learn system internals: You can first do a quick scout for the big items (e.g. grid systems, typography instead of data structures, algorithms) so that you get the big picture, and then study designs that you like for the details of how they used these items together (like how you study frameworks, libraries or OSs)

</comment></comment><comment><USER61> For those of you who weren't aware: this seems like an adaptation to the work their interns were doing for MaterializeCSS (materializecss.com)

</comment><comment><USER62> So many Google sites have 1/3-of-a-page fixed headers; fixed headers suck.

</comment><comment><USER63> Besides the website, have there been changes made to the specifications?

<comment><USER63> [https://www.google.com/design/spec/whats-new/whats- new.html](https://www.google.com/design/spec/whats-new/whats-new.html)

The changelog.... found it

</comment></comment><comment><USER64> The video sounds really like [http://vooza.com/](http://vooza.com/) video's.

</comment><comment><USER65> Why does a design website have a model in an orange sweater right up against a salmon-colored tile? That hurts my eyes and my brain.

</comment><comment><USER66> Hmmm, this minimalist style looks very familiar.

</comment><comment><USER67> "Maybe it's too complex of an idea" a very interesting / perhaps telling remark from one of the designers

</comment><comment><USER68> "We're no longer controlling every pixel. It's more like jazz improvisation." Matias Duarte, VP Design @ Google.

Super interesting concept. The abstraction of design.

<comment><USER69> That seems super wand wavy and ambiguous. What is that even supposed to mean? Anyone have a guess?

<comment><USER70> It means programmatic design. You design relations and interactions between things instead of coloring pixels.

<comment><USER69> But ultimately the pixels are colored, are they not? To me this reads as a way to acceptably talk about degrading designers...

"Well we aren't employing those pesky 'Pixel Pushers' anymore. No. We are moving towards a jazz inspired design, it's more important and sophisticated than just coloring pixels"

Please. Give it a rest.

(^ In case it needs to be pointed out that's not an actual quote from anything anyone said.)

There's no better case for Google putting zero thought into design than this new website.

I mean what is this? [http://i.imgur.com/dGCCLzx.png](http://i.imgur.com/dGCCLzx.png) (my attempt at balancing the grid on the bottom.)

<comment><USER71> Hover the search icon and you have the grid you wish.

I would also do the same thing, isn't because a thing is hidden or need a gesture/action (in this case, the hover status), that the thing doesn't need to be in the grid.

<comment><USER69> That's not a very graceful way of handling that though. I'm not saying it's not ok to break the grid, but at least make it logical. The element isn't even visible without interaction.

</comment></comment></comment></comment></comment></comment><comment><USER72> design eh? [http://developer.android.com/google/play/billing/billing_ref...](http://developer.android.com/google/play/billing/billing_reference.html)

(spoiler: page renders really poorly in chrome)

<comment><USER14> Looks like some CSS or something was broken earlier today, because I had the same experience, but now everything looks fine.

</comment></comment><comment><USER73> Did Google fire their UI and UX team? Wow. Is this Web 3.0 - the final chukkah for full-on awful craptastic interfaces that finally drive us back to lean text sites?

<comment><USER74> Isn't 'Google Design' a bit of an oxymoron to begin with?

I mean isn't their entire hiring process designed to weed out people whose strength is design, to the point where now when they need to compete on design they go out and spend $20 million to acquihire a team ala Sparrow or get a big name like Duarte.

People laughed at Marissa choosing fonts at Yahoo but forget that she was the only person holding down the design fort at Google and was undervalued and passed over.

</comment></comment><comment><USER75> Google's only design philosophy is to arrange content in a way that maximizes the profit. If on top of that you can make it look good, cool. If not... ¯\\_(ツ)_/¯

</comment><comment><USER76> Google bragging about design is like the nazis bragging about human rights

<comment><USER77> Don't be so hard on them, they've done a fantastic job. Material design is a purely graphic framework, not a way to decide which feature is going where (which googles still desesperately sucks at).

The guys that created material design should be put in charge much more, because they're obviously the only one that have a true vision for that company. To me, that reflection should have been made on the very first iteration of android. Much like microsoft went with tiles, and ios initialy went with skueumorphics ui.

<comment><USER7> > Material design is a purely graphic framework,

Exactly! And, as such, they should advertise it as it is. Merely graphical stuff, not an UI revolution, not better usability nor UX (where are the tests saying so?). I wish they just admit that they're trying to make something which looks cool (nothing wrong with that), not necessarily better UX-wise.</comment></comment></comment>


Tiny Variation in One Gene May Have Led to Crucial Changes in Human Brain - <AUTHOR> http://opac.yale.edu/news/article.aspx?id=8559

<comment><USER2> Fox publishes some of the most sensationalistic science reporting I have ever seen. The paper itself is an extremely interesting result, since it provides some information about the folds in our brain (as Gunel is quoted as saying at the bottom of the article), but Fox's story is an insane distortion.

First, the only thing they're reporting on is a link between changes in LAMC3 and " complex bilateral occipital cortical gyration abnormalities". They make no mention of intelligence. In the conclusion the scientists draw parallels between this finding and the unpredictability of other genes that work on the same structures, with the intent of highlighting how little we understand about the relation between genetics and neurology.

Second, the scientists identified a grand total of four individuals out of a population of over 1000 that was already relatively at-risk. This is barely twice the incidence of Down Syndrome, and certainly not a large enough sample size to make any conclusions, especially about something as ill-defined as intelligence.

Third, both of the test subjects mentioned in detail had average intelligence. One had minor neurological issues. There is no data to support the headline or the reporting.

[edit: I may have found this from a different source or the link may have been changed. This post was in response to a Fox News story about the same paper, not the Yale press release.]

<comment><USER3> I think they swapped the link and changed the title.

Both changes were huge improvements.

</comment></comment><comment><USER4> Paywalls for scientific research are evil.

Here's a copy of the paper: <http://126.96.36.199/misc/lamc3.pdf>

(See my profile for why I do what I do.)

</comment><comment><USER5> I am curious why they call the variation "tiny." The mutation they describe is "the deletion of two genetic letters" — since genes are read in groups of three, a deletion of two letters results in a completely different protein after the site of the mutation (called a "frameshift" mutation because of this property). It seems as if they're trying to cast the result as somehow surprising, when it isn't (this aspect of it, at least).

</comment><comment><USER6> _These fissures expand the surface area of the cerebral cortex and allow for complex thought and reasoning without taking up more space in the skull. Such foldings aren't seen in mammals such as rodents or other animals._

So, maybe this is just a gene which will enable a real life "Secret of NIMH?"

How folded are parrot brains? They've always struck me as being very smart for their size.

</comment><comment><USER7> folds would increase the surface area at the expense of a small amount of volume...

Why would increasing the surface area increase intelligence? Is it to increase the amount of contact with the surrounding medium? (Fluid?)

I thought current ideas about intelligence were about the number of connections between neurons?

</comment><comment><USER8> > _...the Yale School of Medicine and Turkey..._

Medicine and Turkey, that's an interesting area of study!</comment>


The Expression Problem and Tables - <AUTHOR> http://joelburget.com/the-expression-problem-and-tables/ <comment><USER2> Clojure has the best solution to expression problem I've seen in a real programming language

[http://clojure.org/multimethods](http://clojure.org/multimethods)

        (defmulti sound class)
        (defmulti eat class)
        (defmulti attack class)

        (defmethod sound ::cow [c] "Moo!")
        (defmethod sound ::dog [c] "Roof!")
        (defmethod sound ::cat [c] "Miau!")

        (defmethod attack ::dog [c] (bite c))
        (defmethod attack ::cat [c] (scratch c))

        (defmethod eat ::cow [c] ...)
        (defmethod eat ::dog [c] ...)
        (defmethod eat ::cat [c] ...)

        ...

        (derive ::mad-cow ::cow)
        (defmethod sound ::mad-cow [c] "MooOOOooooOOOOoooo!")
        (defmethod attack ::mad-cow [c] (stampede c))

The layout problem remains, and I would like to be able to do sql- or prolog- like queries on code, but IMHO it's IDE and tooling problem more than missing language feature.

Also in clojure you can add arbitrary [http://clojure.org/metadata](http://clojure.org/metadata) to each value, so marking your function as deprecated/in-progress/whatever is easy (but it seems you can't easily add metadata to separate implementations of multimethod right now).

        ...
        (defmulti "Attacks."
                  {:deprecated "Use eat instead.",
                   :author "me"}
                  attack class)
        ...

Also - to confirm that people want to specify rules in tables - I've been working at 2 different companies where we had code generators with .xlsx files as input and .java as output.

<comment><USER3> How so? You ignore that the expression problem is about using static types. See the original problem statement.

In languages like Smalltalk or Lisp, the Expression Problem has easy solutions - but they are not statically typed.

<comment><USER4> The point is to not violate the type safety of the language used. There are plenty of dynamic languages that don't offer a solution to the expression problem.

With that said, you can add gradual typing to Clojure with Core.Typed and still solve the expression problem using multimethods without violating type safety.

</comment></comment></comment><comment><USER5> Everything looks like a good idea in a blog post. Your homework, if you are serious about this, is to crack open a non-trivial, but not huge, program and apply this idea to it. See how the table looks when you're trying to fit a few dozen elements into it in each direction, where the contours of some real problem created the structure (very important!). You can tweak the organization of the program a bit, because changing paradigms often requires tweaks to the best solution, but it's important that whatever the problem was is still solved at the end of the tweaking (i.e., no fair "simplifying" until you've simplified the entire problem away).

I say this not because it will prove impossible or useless, but because you will learn things in the process that will help you refine the idea. Refinement into "what I want is not really possible at scale" is certainly one possible outcome, but there are many other possibilities.

(Certainly one problem you'll encounter is that real code is horrifyingly non-"normal", in the statistical distribution sense. A program of 100 classes is very likely to have 90 of them part of one hierarchy, with the remaining 10 each doing isolated things. Understanding the table representation of such things may have the MEGO ("my eyes glaze over") problem, but then, perhaps you can find something for that.)

</comment><comment><USER6> As others have said, the key is to solve the expression problem without discarding type safety. :)

I think that this problem is basically a simple structural relation on sum types in disguise. That's how I interpret the "Data Types a la Carte" paper anyway.

So if you have:

      class Foo a where
        foo :: a -> String

And say:

      instance Foo A+B where
        foo A = "a"
        foo B = "b"

And:

      instance Foo C+D where
        foo C = "c"
        foo D = "d"

Then if you extend your data type to A+B+C+D, then a simple instance generator should be enough to tie it all together:

      instance (Foo v, Foo w) => Foo v+w where
        foo (inl v') = foo v'
        foo (inr w') = foo w'

I have a (currently internal to my company) Haskell-like language with structural sum/product/variant/record types where we can do this kind of thing. Otherwise "Data Types a la Carte" has the solution in the typed setting of vanilla Haskell (even if it's a little wordy).

</comment><comment><USER7> Sum types + exhaustiveness checking already do this, right? For this example:

      type animal = Cat | Dog
      type action = Sound | Eat | Attack

      let cat_sound () = printf "meow"
      let cat_attack () = printf "scratch"
      let dog_sound () = printf "woof"

      let act animal action = match animal,action with
      | Cat, Sound  -> cat_sound ()
      | Cat, Attack -> cat_attack ()
      | Dog, Sound  -> dog_sound ()

Compiling this yields:

      Warning 8: this pattern-matching is not exhaustive.
      Here is an example of a value that is not matched:
      (Dog, (Eat|Attack))

just as we'd like.

<comment> Ono-Sendai The problem is not so much if the compiler will catch it, but how to lay out the new code/types in an editor, hopefully all in one place or accessible from one place.

C++ will catch a missing combination at compile time as well.

<comment><USER8> Note that the given example has only one place where all combinations are defined. Not sure if this could be done in C++.

</comment></comment></comment><comment><USER9> A staticly-typed solution:

[https://oleksandrmanzyuk.wordpress.com/2014/06/18/from- objec...](https://oleksandrmanzyuk.wordpress.com/2014/06/18/from-object- algebras-to-finally-tagless-interpreters-2/)

[https://news.ycombinator.com/item?id=8904182](https://news.ycombinator.com/item?id=8904182)

</comment><comment><USER10> Multimethods, introspection and a good IDE can get you very far in this direction. For an example, see [https://opendylan.org/history/apple- dylan/screenshots/browse...](https://opendylan.org/history/apple- dylan/screenshots/browsers.html) [There likely are older Lisp or Smalltalk implementations of this idea]

</comment><comment><USER11> "we gain the power to query: implementations calling a deprecated function, implementations marked TODO, unimplemented cases, animals which eat, functions written by me, with no tests"

I think what you're looking for is a good IDE and Scala or Java

<comment><USER12> No IDE needed with Common Lisp, you can get most of this data via standard language features and Metaobject Protocol, and for whatever else you need to keep track of, just write a few macros and you're done.

</comment></comment><comment><USER13> Go's implicit interfaces are one possible solution to this problem.

> animals which eat

        type eater interface { eat() }
        somEater, isEater := value.(eater)

Or something, my Go isn't very good.

</comment><comment><USER14> This text reminds me of row polymorphism in OCaml object system. Or maybe I got it all wrong.

</comment><comment><USER15> Reminds me of TOP - Table Oriented Programming - as discussed in the c2 wiki. I use those simple but helpful ideas to this day.

<comment><USER16> I thought of this too. I remember reading it years ago and wondering why this idea had no traction. I honestly think some sort of tuple oriented programming paradigm will eventually emerge at the forefront. Look at R datatables for example.</comment></comment>


Just say no to Ruby on Rails (or at least think about it) - <AUTHOR> http://blog.pairwise.com/2007/06/27/oh-god-dont-date-ruby-on-rails/ <comment><USER2> While Ruby and Rails are slow, the issue is overblown. There is at most an order of magnitude difference between RoR and reasonable alternatives (php, python, etc.), and realistacally the difference is closer to a factor of 3. This might sound important, but there is bigger fish to fry when talking about performance. All of the above are dead slow, 3-4 orders of magnitude slower than optimal C implementation.

In a typical web app, HTTP optimization and doing O(1) queries rather O(n^2) per page is where performance lies. You can develop web apps quickly these days, and the code can be clean, but you end up going from Palo Alto to Menlo Park through Paris. Sure, a supersonic plane can do that route quicker than a handicapped turtle, but the trick is not going through Paris altogether. RoR makes rewring the code to avoid the Paris trip easy, fast and resulting code remains reasonably readable. And that's the holy grail.

Having said that, that 3x performance boost to RoR would sure be nice, and would put more areas of our application into "Roundtrip through Paris OK" category.

<comment><USER3> "In a typical web app, HTTP optimization and doing O(1) queries rather O(n^2) per page is where performance lies"

Yes, I have found 99% of my speed increases from good database indexing and using hashtables to store data you need more than once.

<comment><USER4> Indeed, databases are real root of all performance problems. I rewrote a site to use the database much less frequently (mostly just for the initial loading and write operations) and I've been incredibly satisfied with the results.

</comment></comment></comment><comment><USER5> If you don't like Ruby no Rails don't use it. There doesn't have to be some religious debate every time someone 'takes it for a spin'. Ruby on Rails makes you more productive, end of story. (Edited to remove unnecessary flame. Sorry about that, it's been a long week.)

<comment><USER6> No need for personal attacks ("I don't think the authors rip off of hot or not with pictures of kittens is really a good use case for scaling a popular site." in case it disappears).

Also, I'll just point out that there is certainly a religion of RoR unlike that of any other web framework. Thus, whenever someone makes disparaging comments, some RoR fan takes serious offense. You seem like you were personally offended, for example.

<comment><USER5> I just get tired of everyone that writes a website becoming an authority on all things Internet related. That said, my comment was off the cuff and I'll retract it. I'm sorry if I hurt any feelings.

<comment><AUTHOR> And I get tired of people with 6 months RoR under their belt proselytizing it as the last word in programming languages. And in regards to the "omg you're just like hot or not!" comment, um, yeah, sure. Keep thinking that. Good.

<comment><USER5> Fair enough, but I've been using RoR for 2 years and it is amazingly useful. It's a far better web programming environment than php or django. If you didn't like it that's cool, I really don't care, but don't submit your language bashing blog post to newsy. Also, it doesn't really matter if you're a rip off of hot or not as a user that's the first thing I thought as I clicked the back button away from your site.

<comment><USER7> Geezus, the guy is entitled to an opinion about a technology that he has used to deploy a website. You must really care because you bothered to post some dickish response.

</comment></comment></comment></comment></comment></comment><comment><USER8> So, the blogger is building a business for which conceivably he would like to succeed and sell for millions and one of his gripes is that he doesn't want to pay $26 for the Rails book?

Besides the fact that it is a great book and can answer 95% of your Rails questions, I have a hard time taking him seriously with this statement. Can't shell out $26 for a manual to the platform you are basing your business off of?

What next? Are they hosting their site on Geocities?

<comment><USER9> I also always gripe with Ruby's lack of documentation. It just doesn't feel right. In comparison: I have never spent a dime on a Java book, in the 10 years that I have been using the language. On the other hand, I can't count how often I have downloaded the various available online docs, for example when I did consulting and used the clients computer. I also travel a lot, which has hampered my progress in Ruby (that book is heavy, so it stayed home) - OK, I should have bought the e-book, but still...

26$ is not a lot, but it is a lot if you are not sure if it is worth your money, or if it will fulfill all your needs. Is that the only Ruby book you'll ever need, or are more investments coming up (Rails book(s))? It's all about risks, in a way. Why else use Open Source Software? With Java, I know my needs are taken care of, and if I ever have a problem, I will find the answer for free, and fast.

<comment><USER8> There are certainly enough examples out there that will get you up and running with Rails and will at the very least allow you to make an appropriate assessment as to whether it will improve your development productivity.

If you're at the point where you're thinking of buying the book my assumption is that you're already passed the point of assessing Rails and are looking to understand the more advanced functionality.

If you're at that point, $26 is nothing.

<comment><USER9> I can afford 26$, but for a student it might be a lot of money. Just a thought.

</comment></comment></comment></comment><comment><USER10> _"... And there's no documentation to the point of seeming intentional ..."_

Python documentation is on my continuous reading list & is one of the pluses for python usage. But lack of it hasn't stopped Rails adoption. Why? Is it that Rails is that simple to use (for experienced developers)?

<comment><USER11> There are several great Ruby and Rails books. The only "problem" is that many of them cost more than $0.

Some programmers think that $50 is a lot of money, but that time is basically free. Frankly, these people _deserve_ PHP.

</comment></comment><comment><USER12> my impression was that likebetter's troubles weren't really problems with rails so much as problems with their hosting co, bandwidth, and maybe the usual db scaling issues. correct me if I'm wrong, though.

</comment><comment><USER13> I think titles like this post deserve a harsh response from Rails enthusiasts. It's meant to provoke, so why complain when the provoked respond passionately? If you so choose, you'll also find a lot of well thought out Rails posters (B. Tate, S. Halloway, D. Thomas, etc).

</comment><comment><USER14> ah more FUD about Rails, hardly original anymore. If you couldn't manage more than one user you clearly don't know what your doing or were too lazy to try to figure it out.

</comment><comment><USER15> to each his own. he has some valid arguments but isn't rewriting the case with pretty much every language?</comment>


TextWeight Tracks Your Weight Loss Progress, Bugs You Through SMS - <AUTHOR> http://techcrunch.com/2011/01/01/textweight/ <comment><USER2> This is the app that was launched on HN this morning after my husband stayed up all night coding, fastest turnaround to front page of TechCrunch I've ever seen. Nice job honey. <http://news.ycombinator.com/item?id=2057706>

<comment><USER3> Thanks dear :)

<comment><USER4> Aaaawww, true love.

</comment></comment></comment><comment><USER5> While I applaud another honest attempt to help people lose weight, I am also skeptical that an app written in a single day managed to get TC'd the next. I feel doubly so when there are far more interesting apps in this space such as Lose It or Lose It (<http://loseitorloseit.com>).

FTR, I have no affiliation w/ LIOLI other than that I'm a user who finds it valuable and believe it more deserving of PR than this app.

</comment><comment><USER6> Sharing privately with a trainer or nutritionist can be supplemently awesome. As well as getting tip of the day texted back based on the results. Well done.

<comment><USER3> All good ideas. We work with partners in academia to study exactly those kinds of things. This service is just a very simple example. It's surprising how just one question and raising your awareness can make a huge difference. We've seen this in a number of published studies.

<comment><USER7> Public graphs are movitational for me.

I made similar personal app at <http://fatgrapher.com> and one of the key features for me is the that my graph is public.

We used the principles: weigh/graph everyday, skip dinner whenever more than 1 pound behind the 'pace line'. The 'pace line' graphs ideal progress towards weight loss goal.

</comment></comment></comment><comment><USER8> Question: \- US phone numbers only or other?

Ideas: \- Provide an interface via twitter, either personal msg or DM. \- You could also provide an optional weekly public tweet of weights reported.

Btw, I have twitter set to SMS me on receipt of a DM, which you could exploit to provide broader SMSs and save a few $s. Just sayin'.

I really like the simplicity of the app.

<comment><USER3> US phone only, for now.

Longer term, we're looking to understand better people's sensitivity around sharing weight. It's a tricky area. There are several studies in academia exploring this where we've partnered with investigators.

<comment><USER3> Sorry I misspoke. Canada works too.

</comment></comment></comment><comment><USER9> Very nice. What service are you using to send the SMSs?

<comment><USER3> Twilio

<comment><USER10> $.02 / sms. Have you hashed out any monetization plans?

<comment><USER11> His wife works at Twilio :)</comment></comment></comment></comment>


Tabs come to every window in Windows 10 "Sets" - <AUTHOR> https://arstechnica.com/gadgets/2017/11/tabs-come-to-every-window-in-windows-10-sets/ <comment><USER4> Fluxbox has those ([http://fluxbox.sourceforge.net/features/tabs.php](http://fluxbox.sourceforge.net/features/tabs.php)) and Haiku too ([https://www.haiku-os.org/docs/userguide/en/gui.html#stack- ti...](https://www.haiku-os.org/docs/userguide/en/gui.html#stack-tile)).

<comment><USER5> The tiled WMs also have this after a fashion.

Honestly i get the feel that MS i looking at how devs like to do things over at _nix, and looks for ways to import that into Windows to attempt to entice said devs.

After all, Windows these days can tile windows, have a build in desktop switcher, has gained a _nix cli and related toolchain, and now will be getting this.

</comment></comment><comment><USER6> Finally! Nice to see some innovation on the Windows desktop (although, as others have noticed, MS moved only after Apple added per-app tabs first).

I like that it (seemingly) can group related documents from different applications - like I can switch between vi and a command line in tmux with Ctrl+a,a. Why couldn't I do the same with graphical applications?

Interestingly, the GNOME 2 human interface guidelines recommended way back that you shouldn't use tabs in your application, because it was expected that the window manager will "soon" get native tabs.

<comment><USER7> What per-app tabs are you talking about? This whole idea is actually cross-app tabs.

<comment><USER6> On recent macOS, you can group multiple windows from one app together.

It's quite clever, because the convention was already to have simple toplevel windows for each document. Apps can simply opt in and you can get tabs for free.

</comment></comment></comment><comment><USER8> The other day, I was just thinking about the old Multi-Document Interface that used to be so common in the Window 3/Windows 95 era. MDI was done well in old versions of mIRC and very poorly by StarOffice (OpenOffice.org/Libre Office's ancestor).

MDI has all but vanished. Now we see basically three paradigms: \- Simple, all-in-one applications (notepad, calculator) \- Tabbed interfaces (Browsers, sublime, atom, etc) \- Tool and document windows (GIMP's default, Pidgin)

Tabbed interfaces are clearly on the upswing so this makes sense as a window/document management technique. Still, I wonder if there is still a place for MDI that we are missing out on because it is out of style.

<comment><USER9> "Still, I wonder if there is still a place for MDI that we are missing out on because it is out of style."

It would be an interesting experiment to run, because MDI died around the time that 1024x768 was a big screen. A lot has changed since then.

Although, arguably, one can get most or all of the benefits with a multi- workspace window manager and a workspace running a tool & document program by itself.

<comment><USER8> That's a fair point - there isn't really a major difference in that case.

Thinking back, I remember using the MDI mIRC and having an active channel in its own window. The rest of the channels and lists were inside the mIRC application. I then had my chat up with whatever document I was working on.

The thing from that kind of setup that is hard to come to today is a simple way to designate some windows a less important than others. The important ones get into the task manager/dock. The unimportant ones are grouped with other similar windows.

I can't think of a major desktop that I've used that lets you do that. It seems to be all or nothing. I've seen docky and some KDE plasmoids get kind of close.

<comment><USER10> I think that speaks to the big reason I think MDI fell by the wayside: the OS took on a more active role in window management. MDI makes sense in Windows 3.1 when your application can easily provide the exact same management tools as Windows itself: the classic Tile/Cascade menu items and not really all that much more. The steady progression in the power of the taskbar starting in Windows 95 I think corresponds somewhat directly in the drop off of MDI applications, as it started to get harder and harder to mimic the taskbar in your own application and Windows at least never offered much of an out-of-the- box application framework for that. Part of that was philosophical; Microsoft didn't provide a strong MDI framework because they didn't see a need (and probably felt MDI was too confusing users). (Mac OS did provide more options over the years and there are still MDI-ish applications there, so it is interesting to compare the philosophical divergences over the years.)

"Sets" are interesting here because it is a return, the long way around to MDI in a way, but with years of learning/experience of task management from modern taskbars, IE/Edge tabs, and other thoughts on task switching. I like the idea that in Microsoft's opinions Sets are more useful as diverse collections of heterogeneous applications (a Word document and its OneNote notebook and its Edge browser research tabs together in one window) rather than the classic MDI homogeneous approach. I think that may be the welcome modern twist the MDI concept was missing originally.

</comment></comment></comment></comment><comment><USER11> I think this is a very interesting move from Microsoft. Although it is a good multitasking innovation, I cannot help but notice the fact that - <USER2> integrates Edge on every application there is, and with a search bar right there, people might start using edge more often than what they currently do now. At least I never open edge voluntarily.

<comment><USER12> I'm ok with Edge and Bing being the default "web tab" providers for this new tab functionality, but I'll be instantly changing it for a different browser and search engine. If it's not possible to change this I'll probably ignore tabs entirely until it is.

</comment></comment><comment><USER13> Step one, move the task bar to the top of the screen. Step two, maximize all your app windows. Tada! Tabs!

I'm joking of course, but this is the problem with Windows in general. Microsoft always adds new UI features on top of old functionality that usually does sort of similar things, making the end result more complicated and disconnected.

<comment><USER14> Step three: Right click taskbar, 'Taskbar buttons:' -> 'Never combine'. Result: both app _and_ document tabs. :-)

</comment></comment><comment><USER15> Tabs in browser are a problem for me generally because the basic implementation is tabs along the top of the screen. Once you open more than about 10 tabs, that design fails horribly.

Also, in web browsing at least, new tabs opened off of one have relevance to to the tabbed opened from, so ultimately tabs should be a tree structure.

For this reason I use "Tree Style Tabs" for Firefox...

The thing is, I can only imagine that Microsoft isn't going to implement what I am describing. They are going to implement tabs at the top, and possibly side tabs at the best, but they will certainly not make tree tabs... As a result I fail to see how this will be an improvement.

</comment><comment><USER16> I've been asking for this for a decade.

I'm glad it is finally coming.

<comment><USER17> Me too!! I have so wondered why none of the OS makers was going in this direction. This is a complete gamechanger.

<comment><USER18> macOS has tabs as an OS feature available in most apps:

[https://support.apple.com/kb/PH25079](https://support.apple.com/kb/PH25079)

But I see the main new thing Windows is doing is different apps grouped into one window. That should be handy!

<comment><USER19> It's not the same thing. In macOS, it has tabs within one application. It's about tabs across different apps inside one window.

<comment><USER20> Could you explain the reason why this is better? If we have different App Tabs within the same Window, isn't that a duplicate of Task bar?

Because I see this as very confusing for most users.

<comment><USER18> It's serving the same function that Mac users can do via virtual desktops ("mission control", formerly "spaces"), you group the related things together even if they're in different apps. This is just doing it in a window instead.

Windows 10 got a similar multiple desktops feature in a previous update, so this seems like a a second layer of doing the same thing. Whether it's better, or if people will use one or the other or both, who knows?

I can say that I use multiple desktops on my Mac all the time and never do on Windows, but that's partly because my Mac is a laptop where screen space is more scarce and the trackpad gestures are very fast.

There's definitely some diminishing returns of more and more layers of grouping. Firefox had a "Tab Groups" thing going for a while that let you toggle between different sets of tabs within one window. Doing something at the window manager level where it's a consistent way of packing more stuff into a window across the OS strikes me as more useful.

I'm not convinced I'd use this instead of multiple desktops though. If I'm single tasking there aren't usually things I want to group with it, and if I'm multitasking I'll typically want the other window to be visible (or at least sometimes visible) alongside the main task.

</comment></comment></comment></comment></comment></comment><comment><USER21> You should be able to drag the tabs around the window so they stick out of any edge! Tabs on the left and right edges are great because you can stack many of them in a column and read all their titles -- more tabs fit on the screen that way.

[https://www.youtube.com/watch?v=tMcmQk-q0k4](https://www.youtube.com/watch?v=tMcmQk-q0k4)

[https://dev-videos.com/videos/tMcmQk-q0k4/NeWS-Tab-Window-De...](https://dev- videos.com/videos/tMcmQk-q0k4/NeWS-Tab-Window-Demo)

[http://www.donhopkins.com/home/archive/NeWS/tab-3.0.2.ps](http://www.donhopkins.com/home/archive/NeWS/tab-3.0.2.ps)

[https://en.wikipedia.org/wiki/File:HyperTIESAuthoring.jpg](https://en.wikipedia.org/wiki/File:HyperTIESAuthoring.jpg)

[https://en.wikipedia.org/wiki/File:Psiber- tabs2.gif](https://en.wikipedia.org/wiki/File:Psiber-tabs2.gif)

[https://en.wikipedia.org/wiki/Tab_(GUI)](https://en.wikipedia.org/wiki/Tab_\(GUI\))

Large numbers of tabbed windows scale better with the tabs along the left or right edges of the window, instead of the top or bottom edges. That is because tab labels are usually much wider than they are tall, and because it is now common to use displays which are considerably wider than needed for displaying documents and web pages. The NeWS version of the UniPress Emacs text editor placed tabs along the right window edge, and laid windows out in a vertical column, so each tab was initially visible, and the user could use them to raise and lower the windows, drag them around in the column, or pull them out to anywhere on the screen.

PSIBER visual PostScript programming environment for NeWS, with tabbed windows around objects on and off the stack. Better yet, tabbed window interfaces can give the user the freedom to position the tabs along any edge, so all four edges are available to organize different groups of tabs as the user or application sees fit. The PSIBER visual PostScript programming environment for NeWS had tabbed views that you could stick onto the stack (represented as a "spike"), and you could move the tabs to any edge. The NeWS pie menu and tab window manager enabled users to position the tabs anywhere along any edge, and the tabs popped up pie menus with window management functions, to uncover and bury windows, etc.

</comment><comment><USER22> ConEmu[0], a Windows console emulator, offers something like this - <USER3> any number of windows GUI apps into one window ConEmu instance. I don't always use Windows, but when I do, I use ConEmu. It's one of the few apps I install to make windows tolerable for myself, UX and functionality a wise.

[0] [https://conemu.github.io](https://conemu.github.io)

</comment><comment><USER23> Will Ctrl-Tab and Ctrl-Shift-Tab work productively like they did in MDI days (cycle thru most recently used tab rather than the arbitrary, but "aesthetically pleasing", left-tab and right-tab?)

Can the tab's currently edited document be associated with the tab beyond simple "title" metadata? For example, can I get an icon on the tab representing the tab's in-progress document that I can drag to drop sites like Slack or an email being composed?

What statuses can be visualized on the tabs out of the box? (Percentage complete? Ancillary status icons?)

How's accessibility going to work with tabs? What happens to the client area when you switch tabs? What gets read on the tabs when you cycle through them?

I suspect these Sets are not going to make MDI great again because they will be underspecified as a UX standard or will be denuded of any productivity features (mobile first), and thus will be abused by developers who resort to hacking to get the results they want.

<comment><USER24> Ctrl-Tab and Ctrl-Shift-Tab already work on Edge (as does Ctrl- PageUp/PageDown) so i'd expect this to work in a similar way. Not sure how it will handle applications that need those keys for themselves though... but probably if an application lets the event reach DefWindowProc, it'll be assumed it doesn't use the shortcut for itself (for Win32 programs at least).

<comment><USER25> Apparently, the Tab control is is lifted directly from Edge. [https://twitter.com/h0x0d/status/931595009177960449](https://twitter.com/h0x0d/status/931595009177960449))

</comment></comment></comment><comment><USER26> About time.

I tire of how slowly the dominant platform can move due to network effects. Facebook will probably add some similarly obvious features to their interface as soon as it starts its slide into obscurity.

</comment><comment><USER7> This looks like a really cool feature!

But in its current form it does not seem to fit code editing scenario on large screens: I need to keep IDE project open next to browser so they are visible at the same time. On multiple screens this would require something like task- based full-screen multimonitor layers (as in Photoshop layers).

</comment><comment><USER27> That's an awesome feature I've been dreaming about for macOS. I wear many hats and have several clients. It'd super nice to be able to organize into these virtual sets everything related. Eg term, Chrome, editor.

</comment><comment><USER28> Tabs on explorer or GTFO

<comment><USER29> From the article:

Tabs won't just be for browsers; they'll be for Notepad, or Word, or Visual Studio, or Explorer, or Minecraft.

</comment></comment><comment><USER30> I am not a fan the window tab uses too much screen real estate. Also bad for stardock who released an addon providing this functionality earlier in the month.

</comment><comment><USER31> Watch this only work with MS Edge

<comment><USER32> It only works for UWP apps to start.

</comment></comment><comment><USER33> Kind of redundant since win 10 has proper virtual desktops now.

</comment><comment><USER19> Finally, ion3 concept implemented in a mainstream OS.</comment>


Sorry, Malcolm Gladwell: NYC's Drop in Crime Not Due to Broken Window Theory  - <AUTHOR> http://blogs.smithsonianmag.com/smartnews/2013/02/sorry-malcolm-gladwell-nycs-drop-in-crime-not-due-to-broken-window-theory <comment><USER2> A quote: "He added that he has no idea why the crime dropped—only that it had nothing to do with broken windows."

One theory -- and it's only a theory -- is that the increased availability of birth control methods resulted in fewer unwanted children, which in turn produced fewer criminals:

[http://www.freakonomics.com/2005/05/15/abortion-and-crime- wh...](http://www.freakonomics.com/2005/05/15/abortion-and-crime-who-should- you-believe/)

Obviously this isn't science (no meaningful controls), and it could be a meaningless correlation between two unrelated things. But it's disingenuous for the author to say he has "no idea" why the crime rate dropped.

<comment><USER3> This is yet more junk science by the same (correction, a different) author. There's no meaningful correlation, at best there's a sort of coincidental timing relation, but once you dig deeper you find it doesn't actually make any sense.

The almost certain cause of the crime reduction is the crack epidemic. It first caused a massive boom in violent crime then it leveled out to a bit lower than previous levels. This could be because communities finally got tired of gang violence, or it could be that gangs had simply finished consolidating their territory and then the reduction in crack use reduced revenues and reduced incentives for new gang violence. Also, the economy improved, which tends to reduce crime rates.

If you look at the data you see that it wasn't just homicide counts that spiked, the crime rate per capita for different age groups went up then down in the critical teen to mid-20s demographic. That has nothing to do with abortion rates whatsoever.

Edit: Look at this graph and tell me where the abortion rate kicks in? [http://www.justice.gov/archive/mps/strategic2000_2005/oage.g...](http://www.justice.gov/archive/mps/strategic2000_2005/oage.gif)

How is it that the impact of abortion on birth rate kicks in simultaneously for people 30, 20, and 15 years old?

Also, apologies for the authorship confusion on my part. I have actually read both books, and while occasionally quite interesting both do suffer from being extremely intellectually shallow, which might explain my mistake.

<comment><USER4> Yet another statistical correlation is the removal of lead from the environment, mostly from paint and gasoline:

[http://www.motherjones.com/environment/2013/01/lead-crime- li...](http://www.motherjones.com/environment/2013/01/lead-crime-link- gasoline)</comment></comment></comment>


Portland startup Treehouse eliminates the boss - <AUTHOR> http://www.oregonlive.com/silicon-forest/index.ssf/2013/12/portland_startup_treehouse_eli.html

<comment><USER2> I think a lot of these 'eliminate the boss' people ought to read The Tyranny of Structurelessness ([http://www.jofreeman.com/joreen/tyranny.htm](http://www.jofreeman.com/joreen/tyranny.htm)). It's an article whose basic premise is that if you eliminate explicit hierarchies, social groups will tend to instead develop _implicit_ ones, which are more difficult to challenge because they ostensibly don't exist.</comment>


Show HN: GDOM – GraphQL for DOM traversing - <AUTHOR> https://github.com/syrusakbary/gdom/? <comment><USER2> very nice. one thing i'm missing tho is a callback functionality.

for example i did a quick scraper for tesco.com

      {
        page(url:"http://www.tesco.com/groceries/product/browse/default.aspx?N=4294793330&Ne=4294793660") {
          items: query(selector:"li.product") {
            title: text(selector:"span[data-title=true]")
            price: text(selector:"span.linePrice")
            url: attr(selector:"a:eq(0)", name:"href")
          }
        }
      }

now the url field on the page is relative. it would be nice to have a callback param where i could execute a function on the result and prefix the url with "[http://www.tesco.com"](http://www.tesco.com")

trying to make a pull request now

</comment><comment><USER3> This is a nice and interesting project!

Obviously, I had to do it for HN:

        {
          page(url:"https://news.ycombinator.com") {
            items: query(selector:"tr.athing") {
              rank: text(selector:"td span.rank")
              title: text(selector:"td.title a")
              site: text(selector:"span.comhead a")
              url: attr(selector:"td.title a", name:"href")
              attrs: next {
                score: text(selector:"span.score")
                user: text(selector:"a:eq(0)")
                comments: text(selector:"a:eq(2)")
              }
            }
          }
        }

In order to do that, I had to fork to add the support for "next" which will retrieve the immediately following sibling (ala jQuery), due to how HN is structured as table rows.

<comment><AUTHOR> Makes sense! Merging soon :)

</comment></comment><comment><USER4> The DOM is a tree not a graph

<comment><USER5> Well, a tree is a type of graph.

</comment></comment><comment><USER6> Interesting!</comment>


Mindset: The New Psychology of Success Book Club Review - <AUTHOR> https://kiwipassport.com/2017/02/20/mindset-the-new-psychology-of-success-book-club-review/ <comment><USER2> Love this book. Especially after Bill gates gave it such a great review

<comment><AUTHOR> Thanks - Link for the interested [[https://www.gatesnotes.com/Books/Mindset- The-New-Psychology-...](https://www.gatesnotes.com/Books/Mindset-The-New- Psychology-of-Success)]

</comment></comment><comment><USER3> Did you find this book had real world practical application?

<comment><AUTHOR> Most of the book is giving examples of different mindsets - Dweck more or less gives examples so that you are able to identify them yourself. She also gives a few practical steps you can take to apply more of a growth attitude</comment></comment>


The ultimate postgres vs. mysql blog post - <AUTHOR> https://di.nmfay.com/postgres-vs-mysql <comment><USER2> The author is incorrect about JSON in mysql. You can in fact index individual columns in your JSON. They end up being generated columns that you then index. Not as slick or mature as postgres, but it does exist.

Edit: audited the rest of the post. Author is otherwise correct. Occasionally ignores some (admittedly ugly) workarounds for some issues. All in all, great post.</comment>


Ask HN: How do you teach robotics to a 5-year-old?  - <AUTHOR>

My son is 5 and wants to learn how to build robots. Anyone know of age-appropriate books, resources, or kits that have worked well for their kids? We're homeschooling, so curriculum tips are also appreciated. <comment><USER2> For a five year old who wants to build robots, I would recommend cardboard, duct tape, poster paint, encouragement, and staying out of their way.

Let them express their understanding of robots, not yours.

<comment><AUTHOR> Yes, I agree with you, and we did that for 5 years. That's why he wants to learn how to build "real robots" now. His words, not mine. Basically he wants to learn how to make the cardboard and duct tape follow his commands. He's fascinated by the Mars Rover (and space in general) and wants to know how it all works.

I'm trying to teach him as gently as possible while still keeping the interest up. We'll probably build some cool things together that are over his head just for the wow factor, but I want to give him things he can accomplish too while we explore the fundamentals of math, physics, electricity, tools, and machines.

</comment></comment><comment><USER3> Lego Mindstorms. The great thing about them is that they combine both the mechanical design aspect (why use wheels or tread? what happens if the robot is too big and isn't stable enough? etc.) with the programming side of things.

For something more "pure electronics" oriented, I also highly recommend the book Junkbots, which focuses on building small robots (that do fun things) out of household items:

[http://www.amazon.com/JunkBots-Bugbots-Bots-Wheels- Technolog...](http://www.amazon.com/JunkBots-Bugbots-Bots-Wheels- Technology/dp/0072226013/ref=sr_1_1?ie=UTF8&qid=1337622319&sr=8-1)

<comment><AUTHOR> I'm also aware of the Lego WeDo kits. I was under the impression that Mindstorms might be a little advanced. Is that not the case?

<comment><USER3> Never heard of the Lego WeDo. They seem new, and pretty cool, albeit pretty limited.

The nice things about the MindStorms is that they are very flexible— you can build simplistic project (a basic 4 wheel car that you can program to move around) or extremely advanced projects (people have built rubik's cube solver using mindstorms).

If your 5 year old really gets into them, he'll probably use them for years.

</comment></comment></comment><comment><USER4> Aside from the lego route, you have another option.

Parallax, the basic stmap guys have a robot for beginners. Its already built and the body is covered with a plastic shell. It is programmed using basic.

Great people too.

<comment><AUTHOR> Those look neat. Thanks for sharing.

Link to Parallax Robot Comparison Chart for reference: [http://www.parallax.com/RobotComparisonChart/tabid/524/Defau...](http://www.parallax.com/RobotComparisonChart/tabid/524/Default.aspx)</comment></comment>


Paramedical Tattoos - <AUTHOR> https://www.nytimes.com/2020/02/17/style/paramedical-tattoos.html <comment><USER2> More pictures of reconstructive tattoos by the same guy:

[https://www.instagram.com/p/BxgTfcYg1K2/](https://www.instagram.com/p/BxgTfcYg1K2/)

Another that's NSFW: [https://www.facebook.com/eternalink/photos/beautiful-3d-nipp...](https://www.facebook.com/eternalink/photos/beautiful-3d-nipple- job-done-free-of-charge-by-our-inked-mag-featured-artist- and/1697307727056661/)

</comment><comment><USER3> [https://archive.is/vMnhh](https://archive.is/vMnhh)

</comment><comment><USER4> Those fingernail tattoos are pretty dope! Remember reading years ago about the artists that do nipple art for breast cancer survivors. Great cause.

</comment><comment><USER5> Wow, ublock origin blocks 42 trackers on this one page, and if it does, you can't read the article.

<comment><USER6> Disable _all_ javascript, including first party. None of it is necessary to read the article: [https://0x0.st/iZgh.png](https://0x0.st/iZgh.png)

</comment></comment><comment><USER7> Before reading this I thought this might be a tattoo for paramedics to read. Something that would state:

Blood Type Medical Allergies Any special conditions (diabetic, prone to seizures, etc)

</comment><comment><USER8> I thought the title was "Paramedical Tacos" now I'm let down.

</comment><comment><USER9> This article is paywalled and somehow the website manages to stop reading the article in private mode too.

Can we please stop posting paywalled articles?

<comment><AUTHOR> For now, the NYTimes paywall is implemented in JavaScript. I use the Quick JavaScript Switcher extension in Chrome to turn it off for that domain. Some of the images don't load, but I can read all the text.</comment></comment>


A Short History of Apple's Manufacturing in the U.S. - <AUTHOR> http://blogs.wsj.com/digits/2012/12/06/a-short-history-of-apples-manufacturing-in-the-u-s/?mod=WSJBlog&mod=

<comment><USER2> hopefully the first move of many more to come...</comment>