Ask HN: What would make you want to work for a non-profit as an engineer? - <AUTHOR> I am the tech lead at a London-based non-profit agency in human rights abuse, conflicts and the effects of war. We are producing complex visual tools for analysis and documentation of high-profile cases. I am personally really excited and happy to be working for the agency. The team is growing and I am looking to hire devs in the next few months, but we can't pay anywhere near what tech companies pay or offer benefits like they do. I can offer the team enthusiasm and the reality of what we are accomplishing (which is why I'm there).<p>How can I convince talented engineers that this kind of work is important and worth doing? <comment><USER2> I've worked for non-profits before and have loved the experience. A couple of things stand out for me:

1) Remote Work & Flex Schedule - Quality of life is a major concern. Working in startups 100 hour weeks have happened. It's kind of a rush actually. But everyone needs to take some time off that. Allowing people the opportunity to work from wherever they want, whenever they want makes all the difference. A common miss of non-profit managers is adopting the idea that you need to be on the job from 9-5 and be seen being productive. Don't treat your devs like they're cashiers.

2) Community Engagement - Mid-sized companies and startups tend to be wildly jealous about their employees time, often requiring employees to work in a vacuum. Let your devs publish open source software that's derivative of your core business. Support their desire to establish development blogs. Encourage their extra curricular activities. I've often taken second jobs teaching software development just because I enjoy it. A lot of for profit companies don't like that.

3) Intrinsic Benefits - Be willing to hire off platform. Look for people interested in expanding their skill set. The mobile developer looking to learn web development. The web developer looking to learn API development. The boot camp graduate looking for their first job in the field. Find people who can figure out how to do the job. Have the practical experience make up for the lost direct income.

<comment><AUTHOR> Thanks a lot, these are really great suggestions to look into. I think 1 (the flex schedule part at least) and 3 are already there, but I hadn't thought about highlighting them as properties of the job that people might be interested in. And we need to consider remote work more seriously.

I've been planning to encourage 2 more in the tech side of things, considering it is already happening in relation to the social impact of our work, which we do share and communicate. I think sharing more of what we do technically would be great.

Thanks a lot, great advice.

<comment><USER3> What's the name of the non-profit? So maybe people from here could apply.

</comment></comment></comment><comment><USER4> While it's always nice to know your work benefits the world in general, the market is the market, so you'll need to pay for labor whether your company intends to make a profit or not.

So yeah, we're all happy to help. But please strike that sentence about not wanting to pay a market rate.

<comment><USER5> I didn't read a sentence about not wanting to pay a market rate. I read that they were not _able_ to pay a market rate, and yet there is still a need for the work. If that doesn't speak to you, I don't blame you, but its disingenuous to make out like its merely a choice as to whether they have the funds available.

<comment><USER4> A non-profit has a budget for hiring, just as a scrappy startup has a budget for hiring, just as Facebook has a budget for hiring. The first two may try to spin a story about how they need to spread that budget farther because of $narrative, but really all they're doing is trying to pay you less money for your work.

Notice how they're not _" not able"_ to pay market rate for things like power, rent, office furniture, and phone service to the building. Those things are only different from developer talent in that they are not willing to negotiate their rate down because of a story.

Developers should take a page from their book.

<comment><USER6> I worked at a non-profit that paid pennies on the dollar for their office space, specifically because the building's owner believed in their mission. If they had to pay the full price they probably wouldn't operate.

Do you not know what philanthropy is? Some people conceive of morality outside raw market forces.

</comment></comment></comment></comment><comment><USER7> Might want to consider remote.

Being in one of the top 20 most expensive cities in the world probably doesn't help.

[http://www.businessinsider.com/the-19-most-expensive- cities-...](http://www.businessinsider.com/the-19-most-expensive-cities-in- the-world-2016-6/#18-guangzhou-china--the-first-of-a-few-chinese-cities-on- the-list-guangzhou-drops-three-places-from-last-year-thanks-to-a-weakening- yuan-against-the-dollar-2)

</comment><comment><USER8> Not a software engineer, but my perspective might be useful.

My current job contributes positively to society, but I would love to have a job like this. Long ago, I joined the military because I naively thought we could help put a stop to human rights abuses around the world (too young and stupid at the time to realize we were only going to make things worse). So, this would be something of a dream job for me. I would even do it for a compensation package that's slightly below market rate. However, I couldn't justify either to myself or my family, financially crippling the rest of my life by taking a job significantly below market rate with little or no benefits. If I could do it all over gain, if I were young and single I would much rather have spent my military years working for an organization like yours. However, I have too many responsibilities at this point.

On a positive note, I think if you found a way to establish some kind of a part-time volunteer effort, many people would be willing to help for free. It might be difficult to manage, but I think it could work. I'd even be interested in volunteering at least a few hours a week (although my coding skills are approximately at the level of an intern.)

<comment><USER9> > My current job contributes positively to society, but I would love to have a > job like this.

Seconded. You [the OP] don't give numbers in your post, but I would jump at a job like this. Having lived in London for several years, whatever wage you're offering would have to be at least _liveable_ , but I (personally) would happily accept significantly less than a big tech company knowing that the work was important and impactful in a very real sense, and suspect many other people would also. Honestly, if I were still in London, I would love to apply for this: "complex visual tools for analysis" sounds just like my sort of thing.

To make this advice more actionable: perhaps you're best looking for academics/PhDs with programming experience, since they tend to be both more idealistic and accustomed to lower pay (this is a little cynical but sadly true, having come from this background myself). There is huge variability in programming ability amongst PhDs however (again, speaking from first-hand experience), but on the plus side many will have the other skills you need (knowing how to effectively distill and visualise complex information is often at the very heart of a good science PhD).

<comment><AUTHOR> Thanks a lot for your advice, this is great. Former academics / PhDs are good pool of people with wonderful skills (I didn't finish my own PhD, but I know the environment). Some PhDs might hopefully also be more attuned to the social problems like the ones we are looking into, so we will definitely be considering that.

The challenge we could have is more on looking for usability and frontend expertise, considering the type of tools we want to build, and these are not necessarily in the programming skillset you grow during a PhD (generally more about data analysis / engineering, but of course it depends on the line of work).

Anyways, thanks for the suggesting though.

</comment></comment></comment><comment><USER10> As a software engineer who has done a lot of non-profit work, try and engage your engineers with the community of other "do gooders" out there. Take them to the conferences and include them in the meetings that talk about the policy of the organization, future plans and the like. If they're working for you, it's probably because they care about the cause too.

</comment><comment><USER11> Right now I'm actually taking a pretty decent pay cut of what I could be getting. The things that got me:

Very flexible hours for normal work periods (could choose to not wake up to an alarm 3 weeks out of 4)

Relaxed interviewing process. (Though a lot of the testing for electrical, mechanical, fluid, and trouble shooting theory actually works. Haven't seen the same for IT stuff). got to actually see my bosses quickly in the process. And got to see what gear I would be working on before they knew I was sure.

Still get a lot of data center experience without the idiocy of working for the big three Or IT first company.

Got to work in a department of the company that was a profit generating part of the company (instead of costs generation). This affect everything for how a company interacts with an employee.

</comment><comment><USER12> Maybe you need to approach the problem differently: Your problem is not hiring people, your problem is getting your projects done.

How open are your processes? Can I go somewhere on the Internet and access your data? Do you have a public list of your projects on a place like GitHub so I can contribute? Have you considered a bounty for those less attractive tasks?

I think you can attract the best talent, but you don't need it full time, so why hire anyone? Make it easy to contribute, make it socially rewarding and maybe even throw some money at it.

Or maybe I'm just completely wrong - but I hope you can give these ideas at least a quick thought! :)

</comment><comment><USER13> As a (relatively young) software engineer who freelances as well, I personally like what you have to offer.

Needless to say YMMV but keeping that aside, if the wage you're offering is liveable for London (around £28,000-32,000 before taxes) and your work hours are reasonable enough for the person to freelance (outside work hours for any surplus £'s)... he/she who shares your passion would leap at your opportunity.

The most weighted variable in that case, would be the level of expertise you're seeking.

Good Luck!

(I also noticed that --Osmium-- has a point with PhD's being good candidates, but again, most of them leave academia in search of greater pay. But please dont let that deter you, as almost equally they are attracted to making an impact with their work.)

<comment><AUTHOR> Thank you! We are paying a liveable wage for London and are pretty flexible on many fronts, and the satisfaction and passion for the work we do covers the rest of it (at least for me).

I am confident there are people who find the combination reasonable and think similarly, so hopefully we'll be able work that out.

</comment></comment><comment><USER14> I did exactly this a few years back. I took a pay cut to around 30% of my previous salary to work for a health care sector non-profit. The main attractions were flexible work hours (including some work from home), being fed up with working for evil corporations, and the prospect of working with the two really smart people I met in my interview.

I think if you could offer a realistic shot at helping the community combined with a positive culture, you might be able to pull some talented engineers from more lucrative industries. Good luck!

</comment><comment><USER15> I'm ops lead at a non-profit. I took _huge_ pay cut when I moved from the private / government sector to NFP space but I'll tell you what - it was worth every dollar. You can't put a price on happiness, freedom and the value of the visibility of the impact to communities and disadvantaged / at risk people from them work you do. Do a good job with a real impact and work with (not for) an organisation that genuinely strives to make an impact and is transparent and you'll earn respect.

<comment><USER16> Did you mean "communities", or are Communists really that hard up in the states?

<comment><USER15> Hahaha I most definitely meant communities, thank you for pointing that out! Damn autocorrect...

</comment></comment></comment><comment><USER17> \- remote volunteer jobs (for fresh international US CS grads).

I have a work permit in the US but I am not interested in getting a full-time job. In order not to lose the permit I need to do remote volunteering job 20h/week at a non-profit. So, I was considering contributing to Mozilla but they don't provide any proof you are doing volunteer work with them.

</comment><comment><USER18> I'm interested in working for a non profit in the future and I expect to take a pay cut. I justify it by thinking of the good the org will be doing and other benefits likes more PTO, remote work, flexible schedule.

My ideal is working for a non profit in a developing country and being able to live there. Even a modest salary would go a lot further.

</comment><comment><USER19> Personally I would love to work with non-profits right now, regardless of pay implications. Recent macro events have really awoken my desire to do good in the course of my work. I'd like to think there are others with a similar outlook right now, but maybe I'm an outlier in this industry...

<comment><USER20> I feel much the same; in part I'm starting to feel like that because what I'd hoped would be a great tool for breaking down barriers and communication just seems to have accelerated our consumption and been coopted for things like ads and propoganda.

Part of the problem I think is some/a lot of people (that might otherwise entertain a more ethical career choice) have mortgages/family and don't have the luxury to take a pay hit to work for a NPO.

</comment></comment><comment><USER21> I'd be happy to discuss, feel free to contact me. My contact detail is on my profile.

Other than that I think as phaus just said, the fact to contribute positively to society is a big argument. If your company can't deliver on cash advantage, maybe remote work and social event shoudl be push forward.

</comment><comment><USER22> OP, I don't think you should go out of your way to convince anyone. Engineers who are keen to try something different will do so, irrespective of your coaxing/positioning.

Just post on the jobs thread once you are ready to hire and I think you should be good.

</comment><comment><USER23> I would suggest offering part-time work. Any time someone on hacker news posts about working a 24-32hr week there are always plenty of people begging the poster to tell them how they did it.

Also all the things all developer wants in a job like flexibility, autonomy etc...

</comment><comment><USER24> Sponsoring visa's for foreign devs would be a huge incentive, I think. Many people would like to live/work in a foreign country but find it hard/impossible to do so without an employer sponsoring their visa.

</comment><comment><USER25> When I was at a non-profit ~10 years ago, the salaries were ~30% below market, but employees regularly had 8+ weeks of vacation time. I think after 5 years there I had built up 5 weeks a year, and employees topped out at ~55 days of vacation a year.

</comment><comment><USER26> > but we can't pay anywhere near what tech companies pay or offer benefits > like they do

Why not? CEOs of non-profits often make competitive wages. Why shouldn't the worker bees?

</comment><comment><USER27> I do front-end development and I'd be interested to chat with you about this. Please contact me via my profile if you're interested.

</comment><comment><USER28> Shouldn't any charity be based on ethics, part of which is paying honest competitive market salary? Underpaying idealistic developers is a form of abuse.</comment>


German Hospital Hacked, Patient Taken to Another City Dies - <AUTHOR> https://www.securityweek.com/german-hospital-hacked-patient-taken-another-city-dies <comment><USER2> Hospitals are designed to operate without power by adding generators on-site.

Surely there should be some thought put into how to operate a hospital in case of a network/IT outage.

<comment><USER3> I think there are no plans because the risk the backup procedures create is high enough to make it more prudent to just shut down.

Miscommunications in hospitals are a significant risk, even with EHR (thus the original requirements for EHR). If we assume a full IT outage, then EHR is effectively a non-option. That means we're probably back to using paper. Except now, no one uses paper outside of emergencies, so the original risk of miscommunication with paper is now compounded by the lack of familiarity with it. That problem is going to get worse over time as the medical personnel who used to work entirely on paper retire and are replaced with younger people who have never worked on paper outside of emergencies.

Redundant systems are also harder to create for IT outages vs generators. Generators are simply providing an alternate source of a basic substance. In IT outages you have to consider supplying alternate sources of substances (Kubernetes is an example, as it manages many sources of CPU and network) as well as circumstances where the well of your substance is poisoned (i.e. someone put an infected file in an S3 bucket, or someone is running SQL injection attacks). Solving the first problem is easy, with things like high availability, Kubernetes, etc. The second problem still seems to be an open question; I've never seen a solution that really addressed it other than to backup frequently and try to make sure that your time to recovery is low.

I think the more sensible solution is to pursue what we're doing currently, and change your SLA from "hospital is available to patients" to "medical service is available to citizens within X minutes". We have redundancy in the form of multiple hospitals. Each hospital should be as reliable as possible, but a hospital failing is inevitable under some circumstances. Then we just need to focus on maximizing the efficiency with which we route patients to hospitals. The article says it took an hour to make a 20 mile drive. There has to be a way to improve that

</comment></comment><comment><USER4> Periodic reminder that trolling, griefing, etc, are not always just fun and games, I guess.

<comment><USER5> To mistake an attack on a hospital with trolling is stupid and can only be done in bad faith by someone who wishes to censor the internet.

<comment><USER4> I'm sorry you got hung up four words into my comment and were so upset you couldn't continue on to words five and beyond. I am amazed at your ability to divine, from four words alone, my passionate desire to censor the internet, whatever that means.

Or, you know, a hack that includes no ransom demand could easily be what is commonly called "griefing" (word #5), or perhaps something else in a similar vein, aka "etc" (word #6), and as I said, are _not_ lighthearted fun, despite being activities often engaged in by people who don't consider the effect of their actions on others.

It occurs to me now that pretending to deliberately misread my comment as the opposite of what it actually says is first-class trolling of the fun and games variety. Well done, you! Odd context, given the severity of the issue at hand, but carry on.

</comment></comment></comment><comment><USER6> The patient died because of bad IT. The affected software was citrix I think.

<comment><USER7> No, the hospital was held ransom, and a patient died because of a ruthless criminal's greed. I understand that there is a desire to improve security, but it does not mean that 'hackers' are innocent.

<comment><USER8> No, your parent poster is correct. Blame goes to the negligent persons responsible for the IT system and everyone else up the chain. They are at fault for getting in the first place into the situation where the ransom attack was possible. The state prosecution should have a field day.

To make this crystal clear: they did not patch their software that was already vulnerable for half a year, and there was no supervision to enforce it getting done.

</comment></comment></comment><comment><USER9> Somebody remind me: why does a hospital need to have their critical infrastructure interfacing with the public internet?

<comment><USER10> Hospitals need to be connected. They need to send and receive EMRs from other hospitals. They need to receive security updates for their own software (eg Windows has a Bluetooth vulnerability... someone could hack from inside). Medical providers need to look up information and consult doctors in other areas if a patient is being transferred.

The solution here does not need to be "operate hospitals in digital isolation."

<comment><USER9> I'd argue that hospital computers shouldn't even have Bluetooth, but that aside, you can still achieve outgoing communication without allowing incoming communication. Yes, a hacker might break into an office, hold an employee at gun point and gain access to their account and then move laterally, but that's a very different threat model than "somebody ran an exploit scanner on the university's AS and encrypted our servers".</comment></comment></comment>


Kanoa – Wireless bluetooth earbuds - <AUTHOR> https://www.getkanoa.com/

<comment><USER2> While these seem cool the 4-6 hours really kills it to me. I guess it's long enough if you are just using them while working out, but I want to just have one set of headphones/earbuds while I'm on the move and my current ones have 4 hours of play time and I feel like I need to constantly be charging them. I want something on the 8-10 hour range</comment>


Man arrested for parodying mayor on Twitter settles civil lawsuit - <AUTHOR> http://arstechnica.com/tech-policy/2015/09/man-arrested-for-parodying-mayor-on-twitter-gets-125k-in-civil-lawsuit/ <comment><USER2> "We took every step in accordance with the law. They appropriately went to the court to obtain warrants."

I can't believe this was by the book. Sounds like mayor, judge, and police all abused their powers.

<comment><USER3> It wasn't by the book, which is why they (or actually, the city) had to pay $125k to settle.

Popehat's take on the case: [http://popehat.com/2014/04/21/guest-post-peoria- mayor-jim-ar...](http://popehat.com/2014/04/21/guest-post-peoria-mayor-jim- ardis-on-the-rule-of-law/)

</comment></comment><comment><USER4> Url changed from [http://www.pcmag.com/article2/0,2817,2490762,00.asp](http://www.pcmag.com/article2/0,2817,2490762,00.asp), which points to this.</comment>


ZigBee IoT Recap BH2015 Security Holes [pdf] - <AUTHOR> https://www.blackhat.com/docs/us-15/materials/us-15-Zillner-ZigBee-Exploited-The-Good-The-Bad-And-The-Ugly.pdf <comment><AUTHOR> Expect an update on our protocol reviews with specific focus on electron transfer via power and chemical bonds: [http://www.sae.org/servlets/techSession?REQUEST_TYPE=AUTHOR_...](http://www.sae.org/servlets/techSession?REQUEST_TYPE=AUTHOR_BIO&PROD_CD=13HYBRD-0032&PRESENTATION_TITLE=Wireless+Charging+Guideline%2C+SAE+TIR+J2954%3A+Performance%2C+Safety+and+Interoperability+Considerations+for+the+wireless+charging+of+plug- in+vehicles)</comment>


Twenty Questions: A logic puzzle (2000) - <AUTHOR> http://www.icynic.com/~don/20q4.html <comment><USER2> Also see [http://www.icynic.com/~don/20qintro.html](http://www.icynic.com/~don/20qintro.html)

</comment><comment><USER3> Is answering B to everything a valid, low scoring solution, or is it an invalid solution because 20 is not an option for Q19?

</comment><comment><USER4> interactive version

[http://www.drunkmenworkhere.org/170](http://www.drunkmenworkhere.org/170)

<comment><USER5> Note that that's for Jim Propp's test, not Don Woods's test (the one that was linked here). (Woods says he was originally inspired by Propp.)

</comment></comment><comment><USER6> Looks like a good Prolog exercise.

</comment><comment><USER7> Url changed from [http://www.mathpuzzle.com/20questions.htm](http://www.mathpuzzle.com/20questions.htm) to what seems like the canonical source.</comment>


Show HN: First Contributions – Make your first OpenSource contribution in 5 mins - <AUTHOR> https://github.com/Roshanjossey/first-contributions/ <comment><USER2> This is the #6 repost in a month. A few repost are ok if they don't get traction, but somewhere between 5 and 10 is the threshold of too much. [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)

I think that it doesn't get traction because here people realize that this are not real open source contribution. This is a tutorial or a test project. (Imagine if someone else puts this as in the c.v. as a contribution to open source, the hiring team will not be happy.)

I think this could be better received if you rename it to add "tutorial" or something like that to the name/title. But I'm not sure.

Another possible improvement is to add a small technical challenging part, not only adding the name. It's difficult to get an easy to understand and easy to contribute and unrestricted project. Perhaps something like writing a program that writes the complete lyric of "One elephant went out to play. On a spider web one day." Each new contributor adds a new number. (Discourage explicitly solutions with `for`, and "smart" solutions with a complete objectfactoryfactory hierarchy. Just a bunch of printf.) You can add also make the equivalent version in different languages, but please don't post all of them here.

Bonus: Some open source projects have a page with bugs/projects/ideas that are good for first time contributors. You can try to collect them. The problem is that it is usually not very well maintained. (If it's easy enough, it's easier to fix it than to add it to the wiki page.)</comment>


Show HN: Discover New Discourse Communities with Discourse.Directory - <AUTHOR> https://discourse.directory/ <comment><USER2> Why do I have to click on a button to see any content?

<comment><AUTHOR> I'm not 100% sure how the homepage should be configured yet. Right now, the only type of content are just Discourse Communities (sites). However, i'm planning on adding plugins soon. They'll be a different content type with a different way of displaying, searching, etc.

So I just segmented the communities list off to begin with until I figure out something better.

Thoughts?</comment></comment>


Google CEO Schmidt: "People Aren't Ready for the Technology Revolution" - <AUTHOR> http://www.readwriteweb.com/archives/google_ceo_schmidt_people_arent_ready_for_the_tech.php

<comment><USER2> So there's so much data out there and one of the most important uses for that data according to Schmidt is to predict where I am going next.

If that's Google's best thinking about data, it shows very well why they have so far not managed to make money on anything outside their original ad business model.

And I have to say, if everything they are able to come up with is new ways of spying on me in order to create information that is useless to me then I'm going to prevent them from getting access to any of my data.

<comment><USER3> I wouldn't say they have not managed to make money on anything except ads.

For example, you have to pay for Google Apps for business and they say they have more than 2M customers. At 50$ per year per users, that's not negligible.

<comment><USER4> You are assuming that all 2 million customers are on the premiere edition I know at least a dozen businesses using google apps for business with less than 50 users and the standard version which they are paying exactly $0 for.

<comment><USER3> Agreed that this is not a reliable number, they also say 2M businesses and not the detail of end users.

But what I meant to say is that they do have other sources of revenue outside of ads that are not negligible.

<comment><USER4> You are probably correct that the other revenue sources are not negligible. I do wonder however how Google would fare if their ad revenue took a major hit. I don't think their other offerings could sustain the current juggernaut that they have become. I suppose given their cash reserves they could figure something else out. It certainly seems though that most of their new products are just more ways to push advertisements and of not that much utility in the first place.

</comment></comment></comment></comment></comment><comment><USER5> Finally someone from Google said it: _"If I look at enough of your messaging and your location, and use Artificial Intelligence," Schmidt said, "we can predict where you are going to go."_ No wonder people worry about the privacy implications of their Google accounts.

<comment><USER6> A very small niche worry about things like this.

Did everyone suddenly stop using facebook because a few vocal people worried about privacy a month or so back? nope. Most people just don't care one bit.

I'm really excited about all the fun things we'll be able to do and have.

I wonder how long it'll be before we're all wearing augmented reality visors/goggles bluetoothed to your smartphone with useful advertising/help/wiki etc. You could be walking down the street and an advert shows above a cafe saying "half off coffee today". It could show you customer ratings etc.

You could walk up to your friend, the goggles/smartphone would recognize their face as being your friend, analyze their emotions, show you their details next to their face and so on.

Having the future we want means we have to allow people access to some information, like 'where we are', where we've been, messages, demographics etc. Either you get cool stuff, or you get privacy - up to you.

<comment><USER7> Imagine the futuristic world of 1890!

You walk past a cafe and outside is a big sign, "Half off coffee!" And the awesome thing about Big Sign Technology is that it doesn't break your concentration: If you are intently listening to the organ grinder on the street corner, or talking with your friends about that new Oscar Wilde play, it does not interrupt you.

Then you meet a person on the street. For a whole millisecond you don't know who they are. But then your built-in mechanism for recognizing human faces - which has been QA tested on monkeys for millions of years - kicks in and tells you that this is a friend, analyzes their emotions based on their face, clothing, and tone, and shows you details about their life which you have been storing in your long-term "memory", along with (among other things) customer ratings for that cafe you just passed. This amazing internal "memory" is searchable and is indexed according to useful criteria like place, time, emotional state, and relevance - for example, as you are about to take a bite of that apparently tasty snack, your "memory system" will helpfully remind you that the last sausage you ate made you violently ill.

\---

For all its amusement value, though, this comment is certainly a pitch-perfect illustration of the Google mentality. It's like watching Martians learn to dance. "We do not understand the odd periodic motions of these hu-mans, but we believe that we can reduce their motivations to a series of ones and zeroes." This attitude is undeniably effective, sometimes, but it has real limitations. As when, for example, Professor Frink tries to exchange all of my privacy for a bunch of "features" that my great-grandparents were born with.

<comment><USER6> boring! I forget faces. I forget if I liked a certain place to eat. I want to see what the people inside think of the food. I want to see someones face, and a summary come up next to it saying "You forgot to reply to their email, their husband just left them, they know java, they're conservative" etc

Human memory is really pretty sketchy and lame. It worked well when all we had to do was hunt and have babies, but it simply doesn't cut it any more.

<comment><USER5> Why don't we just chip everybody? It would save us carrying the gadget that helps us remember people.

Also, there is a reason you didn't reply to their email. No use pretending otherwise for you or them.

</comment></comment></comment></comment></comment><comment><USER8> A quibble: he says "There was 5 exabytes of information created between the dawn of civilization through 2003". But this is misleading, far more than 5 exabytes of "information" were created during that time, but only about 5 exabytes of it was stored for posterity. This is an important distinction, I think.

Also, as to technological revolutions, nobody is ever ready for them. Revolutions are disruptive, no matter how prepared you are your life will be disrupted by them (if you are lucky it will be for the better).

<comment><USER9> It also kinda ignores many of the people with oral traditions. Some of those stories that were carried down for generations have been lost do to colonization. Let's also not forget a certain library that went up in flames.

</comment></comment><comment><USER10> "The only way to manage this is true transparency and no anonymity. In a world of asynchronous threats, it is too dangerous for there not to be some way to identify you. We need a [verified] name service for people. Governments will demand it."

I'm torn between thinking "wow, that's scary" & appreciating how much potential for good there is in a completely transparent world. I've been thinking about (genomic & medical) identity: research could benefit massively from a world of total transparency.

23andme is sitting on a growing collection of personal genomics data which they are trying to use for research purposes through their 23andwe program. That's great, but that is still a massive collection of data locked up in a single company.

Imagine a world where every single individual is sequenced at birth & his data is made publicly available for research purposes. Total transparency. Kind of the polar opposite of the current situation where the patient owns his data & permission needs to be gathered to use of that data for research purposes.

We're forgoing massive progress for fear of an artifact of current society (a.k.a. insurance companies).

<comment><USER11> The problem with utopian ideals is that they are often open to abuse by immoral individuals. We should be careful we don't make ourselves more vulnerable in our quest for efficiency.

However, I doubt that it's fear of insurance companies (by which I assume you mean medical insurance) that is holding back society from totally transparent world. The EU has stricter privacy laws than the US, but also has universal healthcare.

</comment></comment><comment><USER12> "Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety." Ben Franklin

</comment><comment><USER13> The reason why I get too uncomfortable around this kinda stuff is that they seem to treat human-beings like machines.. These entities seem to say, we know what you do, what you like, when you're hungry, what you're supposed to do... etc. We're gonna get you so bombarded with stuff that you lose whatever little consciousness you have and start spending wherever we ask you to..

From movie Network (1976): "I'm a human being, goddamn it. My life has value."

</comment><comment><USER14> 5 exabytes of mostly useless information. Information is not an end unto itself.

</comment><comment><USER15> Is that a bulletproof vest he's wearing in the picture in the article?

<comment><USER16> Yes:

[http://techcrunch.com/2010/01/04/eric-schmidt-twitter- pictur...](http://techcrunch.com/2010/01/04/eric-schmidt-twitter-picture/)</comment></comment>


The Raccoon Princess and the Fox Prince: A Bayesian Parable - <AUTHOR> http://cassandraxia.com/projs/raccoon/

<comment><USER2> This was a very fun story to go through! I wonder if this format could be used as an effective way of structuring lessons in school. Each juncture that requires a choice to be made would (ideally) encourage class participation and debate. After a period of discussion, a vote would be taken, a decision would then be made, and the next section of the lesson would begin.

I'm not a teacher, and I know from friends who are that being a good teacher is harder than what I can probably imagine, but I think kids would have fun working through these types of stories.

<comment><USER3> [edit; whoops you were talking about the format and I was talking about the material. Oh well, hopefully this is not too out of place.]

It could be made much more approachable by removing the math entirely. If you learned programming before algebra you might have solved it like this:

        from random import random
        from collections import defaultdict

        tally = defaultdict(int)
        for i in range(100000):
            thief = ['raccoon', 'fox'][random() < 0.3]
            bear = ['false', 'true'][random() < 0.8]
            hair = ['raccoon', 'fox'][random() < 0.3333333]
            if thief == 'raccoon' and bear == 'true':
                continue
            if thief == 'fox' and bear == 'false':
                continue
            if thief != hair:
                continue
            tally[thief] += 1

        print(sorted(tally.items()))

While crude it does give the correct answer, to within 1% or so.

<comment><USER4> Solving a bayesian parable with frequentist methods is heresy. ;)

<comment><USER3> I'm reasonably certain no camp would claim the statistical equivalent of BogoSort as a method. 98% of the loop cycles (and 98% of the random numbers generated) make no contribution to the result and are thrown away.

</comment></comment></comment></comment><comment><USER5> In the category of "games involving Bayes": [https://github.com/ksotala/BayesGame](https://github.com/ksotala/BayesGame), with description [http://lesswrong.com/lw/lad/bayes_academy_development_report...](http://lesswrong.com/lw/lad/bayes_academy_development_report_1/) and [http://lesswrong.com/lw/les/bayes_academy_development_report...](http://lesswrong.com/lw/les/bayes_academy_development_report_2_improved_data/)

</comment><comment><USER6> Her interactive last year on Cognitive Biases is another gem: [http://cassandraxia.com/projs/advbiases/](http://cassandraxia.com/projs/advbiases/)

</comment><comment><USER5> There's an unsupported assumption here: we don't know that raccoons and fox have the same crime rate. Without data, I'd say that the larger animals probably have a larger rate, so it shifts more in that direction.

<comment><USER7> That's racist.

<comment><USER5> It's not racist if it's true.</comment></comment></comment>


GRV ncurses interface for viewing Git repositories - <AUTHOR> https://github.com/rgburke/grv <comment><USER2> is this significantly different from "tig"?</comment>


Finally GoT ended and are we care more about the dog being patted? - <AUTHOR> https://www.nytimes.com/2019/05/20/arts/television/thrones-finale-reactions.html <comment><USER2> > Finally GoT ended and are we care more about the dog being patted?

Did a dog write this post title?</comment>


Show HN: TextPiper – shareable Unix-like text processing pipeline - <AUTHOR> https://www.textpiper.com/grep?hackernews/sort?desc/uniq? <comment><AUTHOR> Click on the slash to see a list of supported commands. You can compose a sequence of text processing operations, and share the resulting link with your coworkers/friends. Let me know if you wish to see certain operations supported!

<comment><USER2> If you can still edit the title, you could add "Show HN:" to the front to indicate it's something you made.

<comment><AUTHOR> Got it, thanks!</comment></comment></comment>


Hacker Monthly #6 + Free Special Issue - <AUTHOR> http://hackermonthly.com/issue-6.html

<comment><USER2> as I point out in the other HM #6 thread: <http://news.ycombinator.com/item?id=1856078>

since the debate PDF is free to download, Cheng Soon didn't make a clickable table of contents for it on the site, but here are links to original articles:

Programming Languages? [http://postabon.posterous.com/why-i-chose-common-lisp- over-p...](http://postabon.posterous.com/why-i-chose-common-lisp-over-python- ruby-and) <http://thecleancoder.blogspot.com/2010/08/why-clojure.html>

Key Decisions Google Founders Made? [http://www.quora.com/What-were- the-4-or-5-key-decisions-that...](http://www.quora.com/What-were- the-4-or-5-key-decisions-that-Larry-Page-and-Sergey-Brin-made-in-the-early- days-of-Google) <http://news.ycombinator.com/item?id=1502765>

New York or San Francisco? [http://adgrok.com/new-york-will-always-be-a-tech- backwater-i...](http://adgrok.com/new-york-will-always-be-a-tech-backwater-i- dont-care-what-chris-dixon-or-ron-conway-or-paul-graham-say) [http://kellysutton.tumblr.com/post/901431677/choosing-new- yo...](http://kellysutton.tumblr.com/post/901431677/choosing-new-york-over- san-francisco)

Git or Mercurial? [http://reprog.wordpress.com/2010/05/12/still-hatin-on-git- no...](http://reprog.wordpress.com/2010/05/12/still-hatin-on-git-now-with- added-actual-reasons/) <http://yehudakatz.com/2010/05/13/common-git- workflows/> [http://blog.extracheese.org/2010/05/why-i-switched-to-git- fr...](http://blog.extracheese.org/2010/05/why-i-switched-to-git-from- mercurial.html)</comment>


Startup School notes on GitHub - <AUTHOR> https://github.com/charlesfeng/startup-school-2013

<comment><USER2> Nice work!

Just for fun, I forked this git repo and pushed it to Penflip (github for non- developers). Might be useful if anybody is looking for a more consumable format (PDF, ePub, etc):

[http://www.penflip.com/loren/startup- school-2013](http://www.penflip.com/loren/startup-school-2013)

</comment><comment><USER3> Thanks for this. I made a quick and dirty web app with the notes where any one can edit/filter by speaker. source is here:[https://github.com/nicktesla/startup- school](https://github.com/nicktesla/startup-school) live version is here: [http://startupschoolnotes.meteor.com](http://startupschoolnotes.meteor.com)</comment>


HTTP 451 Unavailable For Legal Reasons - <AUTHOR> http://www.theguardian.com/books/2012/jun/22/ray-bradbury-internet-error-message-451

<comment><USER2> header('HTTP/1.1 451 Content Burned by Government');</comment>


Mono Developers start their own company - <AUTHOR> http://tirania.org/blog/archive/2011/May-16.html

<comment><USER2> It's awesome to see open source teams truly believe in what they do and stand up against, in lack of better name, "classic business model". First Jenkins CI, now Mono.

I wish you all the best guys...

<comment><AUTHOR> thanks! We appreciate all the love!

</comment></comment><comment><USER3> For those who didn't catch it, the "International Mono Support" aside is a reference to Miguel's earlier (first?) company, "International Gnome Support", renamed to Helix Code, then Ximian, and eventually purchased by Novell.

It's awesome to see Miguel running a scrappy startup again. I just read through an old interview with him and Nat from the old IGF days, and Miguel hasn't lost any of the hacker/entrepreneur spirit:

<http://linux.omnipotent.net/article.php?article_id=6967>

</comment><comment><USER4> Former Mono contributor myself from 2006-2008. Crazy day. It won't die. To many companies are invested in it. I always wished it would spin off earlier.

I wanted to meet up with Miguel when he was in SF a few days ago, but now I know why he was so busy.

</comment><comment><USER5> You know, I was an early skeptic of Mono. After all, what use is a copycat technology stack?

I'm later to admit how wrong I was. Suddenly mono was deploying into iOS, Android and places where the existing developer ecosystem couldn't have otherwise.

A hearty congratulations and wish you all the best. You deserve it.

</comment><comment><USER6> I am confused by this. If attachmate let go of Mono developers clearly it felt the product has not been profitable and won't be any time soon.

What investor with a sound mind would feel otherwise? Novell had already dumped millions in to it and look where they ended up.

<comment><USER7> I'm not sure you can make this assumption. Attachmate seems most interested in cutting Novell down to the bone and extracting whatever value it can from what is left. I don't see a whole lot of future growth opportunity from that company in the long term. Just because Mono is not necessarily profitable now doesn't mean that it couldn't be cultivated into a profitable company later. Mono seemed to be recently finding its niche with its Unity (games) licensing and its MonoTouch and Mono for Android products.

(Disclaimer: I used to work at Ximian and Novell with Miguel & others, and contributed some to Mono in the early days.)

<comment><USER8> What do you mean about Unity? Unity Technologies is a separate company. Do they pay (a significant amount) to licence the tech?

<comment><USER7> Unity uses Mono for scripting in their engine. As it runs on a variety of platforms where replacing the runtime (which is normally LGPL licensed) isn't possible, I believe they have a commercial licensing agreement in place with Novell.

I don't know what the terms are of that agreement.

</comment></comment></comment></comment><comment><USER9> THIS is the company Microsoft needs to fund. Not Skype or Nokia.

<comment><USER10> In an ideal world, yes. But from a strategic point of view monotouch/monodroid (or whatever their new equivalents will be called) don't really help MS, it just helps developers from the MS stack port their skills to other platforms. If developer division didn't have the 'strategy tax' of being part of MS they'd probably be trying to do this themselves (re-targeting their tools to support development on alternate platforms). So in a way MONO helps MS by helping MS customers that MS can't help directly themselves. If there was a corporate equivalent of the relationship status "it's complicated" that's what I'd be using to describe the relationship between MS and the MONO project, but the rub is I don't think MS will be funding Monotouch/monodroid stuff any time soon.

<comment><USER11> I thought Microsoft did help fund the project when it was part of Novel. In the end, having a healthy .net community is in Microsoft's best interest, even if there is not a direct set of sales involved.

<comment><USER10> I know they (MS) had an engineering agreement with the MONO folks while they were at Novell re:Silverlight, but I don't know of any instances where they've donated money. If you've got any links please share them.

From the Moonlight FAQ: <http://www.novell.com/products/desktop/moonlight_faq.html#j>

_This collaboration between Microsoft and Novell is a formal engineering development program. Novell is bringing the .NET-based Silverlight framework to Mono, an open source framework for running .NET applications on multiple platforms including Linux. Microsoft is providing a version of the necessary codecs for Linux._

</comment></comment></comment></comment><comment><USER12> Doesn't look like the Mono guys were able to keep the key IP. That's too bad. It's hard to see what Attachmate gains by keeping it.

<comment><USER13> My guess is it simply takes a lot of time/money to get IP issues solved, which the mono guys don't have.. they would rather rebuild it than wait indefinitely for those things to be resolved.

</comment></comment><comment><USER14> Any one have any statistics on Mono or know companies that use it, always wondered about Mono usage. What are some use cases?

<comment><USER15> My first thought is to run ASP.NET on a Linux server.

Also, some Gnome apps are written in C#: [http://en.wikipedia.org/wiki/Mono_(software)#Software_develo...](http://en.wikipedia.org/wiki/Mono_\(software\)#Software_developed_with_Mono)

<comment><USER16> Really? You gotta be pretty damn tight to deal with that nightmare I imagine.

I'd be more inclined to guess it sees more use in shops that are .Net but want to use something like a memcached or redis server and want to write small utilities on that server in a language they know.

Pure speculation though.

<comment><USER17> Fogbugz (<http://www.fogcreek.com/fogbugz/>) on Linux runs under Mono. We use it. It works well.

</comment></comment></comment></comment><comment><USER18> MS should support them with some funding.

<comment><USER19> It would also go a long way to assuage people that MS wasn't about to pull the rug out from under Mono with a patent suit. If MS was a shareholder in a company that commercializes Mono, it would be tougher (but not impossible) for them to sue.

<comment><USER20> Microsoft applied the "Community Promise" to the ECMA C# and CLI standards a couple of years ago.

<http://www.microsoft.com/interop/cp/default.mspx>

<comment><USER21> For C# and the core language, yes. But not anything higher on the .NET stack. Novell had some patents that was able to hold Microsoft at bay. But since Novell sold off their patent portfolio, who knows?

Personally, I wouldn't touch Mono would a ten foot pole, but that's just me....

</comment></comment></comment></comment><comment><USER22> his former company was called ximian, which was started to do commercial gnome development. this new company is called xamarin to do commercial mono development. those are some pretty confusing names.

<comment><USER15> From "simian" and "tamarin" in keeping with the monkey (mono) theme, presumably.

<comment><USER23> yup, that's exactly it

</comment></comment></comment><comment><USER24> Has something happened since Apple implemented the no interpreters rule? Didn't Apple outlaw MonoTouch?

<comment><USER25> Thank you for asking this. I came here to ask it. I'm not sure why you were downvoted for it (I assume that's why the comment has been dimmed). Sometimes I don't think I recognize HN. It's a shame, and I hope it doesn't keep you from asking questions here.

<comment><USER26> I'm speculating here, but I'm guessing the reason it was downvoted (if it was, I never saw it dimmed) was because the whole "section 3.2.2" thing seems to have been settled around a year or so ago. That is, anyone who was concerned about it being a problem should probably know by now that it ended up being resolved and left MonoTouch unaffected. For a lot of folks I presume it's "old news" and some folks may just think euroclydon is trying to spread FUD.

<comment><USER24> No FUD here. I remember the 3.2.2 thing being news that transcended the realm of just iOS developers, but the resolution, I don't remember that at all.

A year, wow, it doesn't seem like that long ago!

<comment><USER25> I don't remember it either, probably because I decided that I would just try to make my website work well on mobile and skip the app altogether. Became convinced of this strategy when A decided to take 30% of my sales through an app also (or did they rescind that also?).

Anyway, downvoting without comment on something like this is poor.

</comment></comment></comment></comment></comment><comment><USER27> This is the best news I've heard all week. Huge congratulations to Miguel and the entire Mono team!

</comment><comment><USER28> Does anybody know how they'll be funded over the next few years?

<comment><USER29> We should break even from the proprietary products, plus the consulting and support services.

That being said, we want to grow, we want to market, we want to expand, and for that we will be raising VC funds.

<comment><USER30> Great to see you here.

Any plans to have a 'Team' section for Xamarin? I'd love to know who jumped on board, tbh.

</comment></comment></comment><comment><USER31> How many of the former Novell developers will work in Xamarin?

</comment><comment><USER32> I guess this is a make or break moment for the Mono project. Who owns the copyright on Mono anyway - is it individual developers?

</comment><comment><USER33> startup + opensource = fun!

<comment><USER34> If you have enough money for the first days/weeks/months/years.

</comment></comment><comment><USER35> I still fail to see the commercial/hobbyist/* appeal of C#/.NET/mono.</comment>


1952: "Announcing a general purpose digital computer" - <AUTHOR> http://www.retronaut.com/2014/08/announcing-a-general-purpose-digital-computer/

<comment><AUTHOR> US $62,500 in 1952 dollars equals $561,910.38 in 2014 Dollars</comment>


First Object Teleported from Earth to Orbit - <AUTHOR> https://www.technologyreview.com/s/608252/first-object-teleported-from-earth-to-orbit/ <comment><USER2> Another sensationalized article. They "teleported" a photon which is 1) not an object and 2) not really teleported the way most people think of it. It's basically taking a quantum link and mirroring the properties of one photon to another. It's definitely cool and definitely useful, but it's not like we're taking some small object and sending it to space. It's more like taking a particle and changing the angle of that particle (even though that's not really an accurate description) and observing that the other particle has also changed to the same angle so, for most intents and purposes, it is the same particle (only it's not, it's a photon).

TL;DR - Star Trek is still a long ways off.

</comment><comment><USER3> Last I checked photons are not "objects". They don't even have mass.

An "object" being teleported even 1mm would be much bigger news than this.</comment>


The Benjamin Franklin effect - <AUTHOR> http://youarenotsosmart.com/2011/10/05/the-benjamin-franklin-effect/#more-1459

<comment><AUTHOR> _"... At 17, Franklin left Boston and started his own printing business In Philadelphia. At age 21, he formed a "club of mutual improvement" called the Junto. It was a grand scheme to gobble up knowledge. He invited working-class polymaths like himself who wanted to experiment in 1700s lifestyle design the chance to pool together their books and trade thoughts and knowledge of the world on a regular basis. They wrote and recited essays, held debates, and devised ways to acquire currency. ..."_

Sound familiar?

 _"... your attitudes came from actions which led to observations which led to explanations which led to beliefs. ..."_

Just the explanation behind these ideas make this article worth reading. It's been posted before but it's worth posting again to highlight ideas like behaviour-attitude conversion and cognitive dissonance.</comment>


Upgrading GitHub from Rails 3.2 to 5.2 - <AUTHOR> https://githubengineering.com/upgrading-github-from-rails-3-2-to-5-2/ <comment><USER2> No mention of the rails:update rake task, which is a very valuable tool to get your boilerplate updated. I'm guessing at GitHub there is so much customization over the years that they wouldn't get much out of it, but it's still a valuable exercise to run through, and it's worthwhile to keep your boilerplate aligned as much as possible since it makes gems, documentation, and everything else more likely to align with shared community experience.

Also, I want to add a big proviso to the lesson "Upstream your tooling instead of rolling your own". Historically in ruby, and now even moreso in node, the ease of pushing new packages and the trendiness of the language at times has led to a lot of churn and abandoning of packages. The trick is to include stable dependencies, and that requires quite a bit of experience and tea-leaf reading to do right. Often times maintaining your own stripped down internal lib can be a performance _and_ maintenance cost win over including a larger batteries-included lib that ends up being poorly supported over time. For example, a lot of people got burned by using the state_machine gem that at one time was very hot and actively maintained but went on to get left in an aggressive limbo ([https://github.com/pluginaweek/state_machine](https://github.com/pluginaweek/state_machine)).

<comment><USER3> > Also, I want to add a big proviso to the lesson "Upstream your tooling > instead of rolling your own".

I feel like this bit needed more of an explanation about how this applied to GitHub.

If I were to write a post about working in a 10 year old Ruby codebase I'd definitely include "Kill your dependencies" as a bullet point.

<comment><USER4> > I'd definitely include "Kill your dependencies" as a bullet point

Or at least your monkeypatches!

</comment></comment></comment><comment><USER5> For my team, this article comes at some interesting timing, since we're bumping into some of the same issues with Rails.

Rails is now a mature framework and part of the problem is its lack of consideration for large existing codebases running in production. While there are nice tools to help migrate (e.g. rails:update) that hit surface issues, the deep problem is that there are a lot of decisions made going from version to version that are obviously unfriendly to established projects. e.g.: [https://github.com/rails/rails/issues/27231](https://github.com/rails/rails/issues/27231)

Additionally, there are a lot of gems that are losing momentum, which are near-core to Rails. e.g.: [https://github.com/thiagopradi/octopus/issues/490](https://github.com/thiagopradi/octopus/issues/490). This is a side effect of the above issue, where the alternatives to Rails are taking a lot of the community away to focus on newer/shiner things. Fortunately, we have companies like GitHub and Shopify that are still very much invested in the success of the ecosystem.

All that said, it's still a great framework to go from 0 to production with a new idea or project.

Other ecosystems we're entrenched in (Node for example) have their share of issues as well, but we won't go into those.

<comment><USER6> > art of the problem is its lack of consideration for large existing codebases > running in production

To be fair - this has gotten a _lot_ better. Upgrading 2.3 -> 3.2 was terrible. 3.2 -> 4.0 was terrible. 4.0 -> 4.1 was rough. Since then, I've found the upgrades pretty easy - to the point I ran rails 5.2.0-rc's in production for a while.

As you fairly note, a big problem is that related gems lose momentum and they don't get updated - which blocks other updates. On the flip side, they usually aren't that hard to update and submit a PR on, either.

Even not having those patches merged quickly is not so bad in ruby - it's easy to tell bundler to look at your fork of a gem on github rather than pulling the upstream.

<comment><USER7> What was your problem with going from 3.2 to 4.0?

I think the upgrade path from 2.3 being terrible is generally accepted as being true. But I don't remember any hard problems from 3.x onward.

At least for Rails itself. Gems dependencies are another problem.

Like at one project we had pains every time Rails upgraded their minor version because the previous devs thought using Squeel instead of the builtin ActiveRecord a good idea. Just for being able to write slightly "nicer" queries and now this is a major stopper for going to Rails 5.

<comment><USER6> It's been a while, honestly I'm not totally sure.

Generally speaking at that job, though, we tended to not wean ourselves off the deprecated features - we'd use the extracted gem to keep the functionality going. Which works fine for one minor release, but doesn't work when you are 3 minor releases later.

Strong parameters is one that hurt bad. We used the workaround gem to avoid that for a long time, and it just made it more painful when we had to get rid of it.

I think generally there were a lot of related gems that were hard to get updated along the way from 3.2 to 4.0 as well. Seems like a fair amount of libraries were late to the 4.0 party, then jumped ahead to 4.1 or 4.2, and never really got ironed out well against 4.0, so you'd have goofy compatibility issues.

Squeel was a related problem that was horribly painful to remove from that stack as well, I forgot about that.

</comment></comment></comment></comment><comment><USER8> Similar post from Shopify about a year ago on their experience upgrading from Rails 4.2 to 5 [https://shopifyengineering.myshopify.com/blogs/engineering/u...](https://shopifyengineering.myshopify.com/blogs/engineering/upgrading- shopify-to-rails-5-0)

<comment><USER9> And some similar discussion on "Shopify now on Rails 5.0. started 12 years ago on 0.5, the First version released" [https://news.ycombinator.com/item?id=13448219](https://news.ycombinator.com/item?id=13448219)

</comment></comment><comment><USER10> It's scarily common for organizations to be running ancient versions of Rails in production. At my last gig we spent six months upgrading a Rails 2.3 application to 3.2 and before that I was working with a team that was maintaining an application written in Rails 1x. Kudos to GitHub for sharing this, I really hope they do future posts going into more detail. In my experience one of the hardest aspects to upgrading Rails is that so much of the really useful information has either fallen out of Google or succumbed to link rot.

<comment><USER11> This is true of literally everything.

People don't upgrade their dependencies across the board, and it's a massive problem for long-term security and maintainability.

<comment><USER12> My current company doesn't even lock most of their dependencies. At first I thought it was crazy (and it is crazy) but it does mean we address compatibility issues immediately. We are mostly running background jobs though so it's safer than anything customer facing

<comment><USER11> My opinions on this have changed a lot over the past few years. At this point, I think anything that pins dependencies to specific versions is asking for long-term maintainability nightmares. Updates of your dependencies, operating system, language version, etc. should happen _weekly_ , and any instance where you have to pin a dependency to an old version (e.g., a major version release that has some compatibility issues) should be dealt with ASAP.

Obviously this isn't a tenable position in every circumstance, but I think it should be the default. Particularly in a world where the vast majority of security fixes go without an announcement or CVE.

<comment><USER13> Isn't that similar to golang's (now deprecated) stable HEAD philosophy? On larger projects with tons of human resources that works out OK, but for a smaller team wouldn't living on the bleeding edge & dealing with every issue be a ton of work?

<comment><USER11> The only times I've ever run into issues updating dependencies (other than across major version upgrades of deeply-integrated deps) is when people have put it off for months or more.

Most updates aren't breaking. The overwhelming majority of updates that are breaking are trivially discovered and fixed with one or two tweaks. Almost all the rest can be fixed with a single search/replace.

Being eight minor versions (or two major versions) behind and having to find and fix _all of these at once_ is when people land themselves into trouble.

</comment></comment></comment></comment></comment></comment><comment><USER14> > Upgrade early and upgrade often

Not sure about the upgrade early. It's a different kind of pain to be one of the first to use a new Rails version vs lagging a couple of months behind.

<comment><USER15> I think there's two sane options:

* track master, and notice breakage as soon as possible (you get much smaller deltas when trying to figure out breakage, which is always a big help), and are able to fix it or report it upstream ASAP, or * hold off slightly till the new release has had more bugs found post-release.

<comment><USER14> Main issue is more with other gems that need to be updated as well. It may take take months. You can't do that on your own.

<comment><USER16> Fork, use your fork, send a pull request. Almost every rails upgrade I make forks and send patches on gems that I need that I forgot about. I get good responsiveness and merge rates. Most of the time a gem needs to be able to support multiple rails versions, so in that case I usually send pull request setting up the Appraisal gem to test for appropriate compatibility.

</comment></comment></comment></comment><comment><USER17> As a comparison, here's gitlab's journey (issue opened March, 2016): [https://gitlab.com/gitlab-org/gitlab- ce/issues/14286](https://gitlab.com/gitlab-org/gitlab-ce/issues/14286)

Looks like the first scheduled milestone was 9.5 (a year ago) and the current is set for 11.4 (next release).

</comment><comment><USER18> > Upgrade early and upgrade often

It seems daft to keep seeing this lesson being learned by tech companies, and keep seeing blog posts where most of the pain would have been handled easily by just making upgrading a key feature.

Instead, tech managers and engineers seem to make the same mistakes over and over again, delaying those upgrades, until suddenly they discover it's a hard task to upgrade. I get delaying to _some_ degree, it's better to let other people figure out those sharp bits on the bleeding edge for you, but you need to set an explicit target for upgrading.

At another large tech company I worked for, it took the security team swinging the sledgehammer to get teams to upgrade from known-vulnerable versions of Ruby on Rails. When they came to do it, they discovered the changes were so extreme that the effort involved in migrating was likely more than the effort involved in a complete re-write (they did at least have pretty comprehensive tests)

<comment><USER19> It is easy to say that in the abstract, but you always have a finite time/resource budget for doing work. Effort spent upgrading is effort not spent doing other important work. Is the other work more important in the long run? The answer is not trivial to answer.

This is why we call it 'tech debt'.. it is just like any other debt. You take it on because you don't have the current resources to avoid it, and you calculate that it is worth taking it on. But then, you are carrying the interest on it, and if you aren't careful it will grow to be unmanageable, and all your dev effort goes into just paying the interest without paying the principle.

<comment><USER18> It absolutely matters. Security is a feature. If you see upgrading as merely technical debt, you're never going to give it the appropriate attention.

<comment><USER20> Hrm, your statement seems to suggest upgraded versions are primarily security updates. Good projects backport security updates (for LTS versions anyway), and new versions with new features come with their own new security issues.

<comment><USER18> > Hrm, your statement seems to suggest upgraded versions are primarily > security updates

Not in the slightest. But security updates are part of them.

> Good projects backport security updates (for LTS versions anyway), and new > versions with new features come with their own new security issues.

There's a limit to how far back patches go, even on the good projects. Rails 3.2 hasn't received a patch in over 2 and a half years, and while there is some desire to backport security fixes, you're dependent on a single individual having spare time to work on it, where more up-to-date releases receive patches far faster, and are far easier to test and integrate in to your existing platform.

I've seen teams, and heard of companies, that are still running services on top of Rails 2 and the like. Now when they look at upgrading Rails the sheer number of changes is mind-boggling, and often represents a non-starter.

I'm certainly not arguing to keep up on the bleeding edge, but making routine upgrading part of your regular workflow is most definitely an important part of remaining secure.

</comment></comment></comment></comment></comment><comment><USER21> The regular thread of people piling in to criticise dynamic languages. Instead perhaps people could suggest a better language/framework that is more productive than Rails, and has had a long lifespan in a large codebase?

<comment><USER22> > Instead perhaps people could suggest a better language/framework that is > more productive than Rails, and has had a long lifespan in a large codebase?

I'd suggest most frameworks are better than rails for long lifespans. They just frontloaded productivity, and it shows. The UI and functionality of github is largely the same as in 2010.

<comment><USER23> On the UI, I'm kinda feeling like it's not a bad thing. GitHub UI _works_. It's neat, most things that need to be done often are easy to find, and otherwise it gets out of my way nicely. Oh, and it doesn't break my browser (links, Back button etc). Why change it?

<comment><USER24> Bitbucket and Jira use React and are far less usable

</comment></comment></comment></comment><comment><USER25> Super cool explanation of some of the real world difficulties of upgrading large rails applications. Really liked the transparency around process and timeline, as well as the lessons learned section.

</comment><comment><USER26> There are several "we upgraded Rails, it was huge, risky, and took months to years" blog posts from medium to large companies. I personally take this as a warning against using Rails. Ruby is one of the most dangerous dynamic languages to refactor, I don't see how struggling to do it for over a year is a selling point of the framework. It also feels counter to Rails's mantra of delivering value fast with little effort, until you need to upgrade, then you have months of no business value delivery and need to bring in experts to help.

<comment><USER27> Let me get this straight: you're arguing that a 10-year-old top-100-in-the- world website taking 4 full-time engineers and having them upgrade their core framework 2 major version over 18 months is some sort of massive failure, and that failure would be solved with static types?

Also, you're saying that Github hasn't added any new features in the last 18 months?

<comment><USER28> Yes, four FTE engineers taking 18 months to upgrade across two major versions indicates a massive problem, but not necessarily with Rails or Ruby. That's a cost of $1.5M give or take, just on the engineers, not including the opportunity cost in new feature development or paying other equally important tech debt.

<comment><USER29> $7 billion dollar company, $1.5M cost? $7 BILLION. Your order of magnitudes are waaaaayyyyy off.

This is the inverse of survivor bias, in that you are retroactively applying "best practice" at the wrong scale. What gets you from $0 to $7B may hurt you at $7B. Heck, may hurt you way earlier than that.

However, and YMMV on what problem you want to solve, but saving $1.5M, heck lets 10X it and call it $15M, saving $15M when worth $7B isn't the problem I'd personally be concerned with.

</comment></comment></comment></comment><comment><USER30> I had no idea that Github even used Rails. The things I learn.

<comment><USER31> If you didn't know that then let me share with you this interesting story from 2012. I'm going to repeat it from memory so my details may be a little fuzzy but I'll include a link which should tell the story more faithfully.

So back in 2012 rails had a default behavior where you could mass assign values from a POST to a user and there wasn't any scrubbing of that, by default. Someone realized this was a Bad Idea and issued a pull request that would have fixed it. Instead of accepting the PR, DHH (I think it was him) said something along the lines of 'competent programmers would not leave that setting in place' and rejected the PR.

The exploit discoverer thought about this and tried it against github, which was known to run on rails and the code worked! From there he was able to manipulate the permissions on github to get access to the rails repo where he reopened and accepted his own pull request.

He was promptly banned.

[https://gist.github.com/peternixey/1978249](https://gist.github.com/peternixey/1978249)

<comment><USER32> Where is the actual pull request?

<comment><USER33> Commit:

[https://github.com/rails/rails/commit/b83965785db1eec019edf1...](https://github.com/rails/rails/commit/b83965785db1eec019edf1fc272b1aa393e6dc57)

Github blog post on the incident:

[https://blog.github.com/2012-03-05-responsible-disclosure- po...](https://blog.github.com/2012-03-05-responsible-disclosure-policy/)

<comment><USER34> seems like the origin story of strong params

</comment></comment></comment></comment></comment><comment><USER35> Wow they've been running 3.2 for this long? That's wild considering the talk Eileen gave at RailsConf this year made it sound like alot of the Rails 6 scalability stuff was based on GitHub's existing work.

<comment><USER36> They've been running 3.2 with local monkeypatches -- which is part of the reason that upgrading was problematic. (Though certainly not all; over that span, there were lots of breaking changes to supported and documented APIs.)

</comment></comment><comment><USER37> The advice at the end sounds exactly like something I'd say to someone going from 1.8 to 11 with Java. Great advice for any platform, very interesting to see the same conclusions from a totally different stack

</comment><comment><USER38> Using the conditional boot loading, aren't there structural differences in ActiveRecord queries/scopes that would run under 3.2 but not 5.2?

Did GH just rewrite those scopes in their respective models and maintain a ton of if/else blocks for the different versions? And if so, didn't they run into issues without the code not being DRY, e.g. someone fixes a 3.2 query, but not the corresponding 5.2 version?

<comment><USER39> If you have your test code unified, and have multiple CI pipelines, it should show up immediately on your build servers.

</comment></comment><comment><USER40> What do they mean by off-hours? I imagine on a global site like github, there are hardly off-hours?

<comment><USER35> Just because it's a global site doesn't mean the traffic is distributed uniformly across the day. Certain regions are going to have higher traffic during business hours. I'd guess their off hours are somewhere around 6pm PST when North / South America has stopped working, Europe / Africa is asleep, and India is just waking up.

</comment></comment><comment><USER41> As a person working for a large software consultancy in Scandinavia I hate to see so many using type safety as an excuse for not writing tests. At least a dynamic language forces you to write tests and frankly it is often easier to write tests in a dynamic language imho.

</comment><comment><USER42> I am very much looking forward to Rails 6.0 and see what Github / Shopify will upstream. Actually Instacart has lot of great gems too which I wish would have been the default solution in Rails.

</comment><comment><USER43> Given its maturity and settled place in the programming landscape it's always nice to see that Rails can still evoke irrational disdain in HN comments.

<comment><USER44> Why is irrational to hate languages that are orders of magnitude slower than are necessary?

<comment><USER45> It's irrational to hate without mentioning tradeoffs. Sure, if performance is your only metric, then Ruby is a bad choice. But that's rarely the case, particularly with the web.

</comment></comment></comment><comment><USER46> Upgrading early(ish) and often, the very obvious preventative measure against terrible and failure-prone rewrite or upgrade projects, is one of the first things that falls by the wayside in the mostly short-termist logic that seems to dominate modern capitalism. It's absolutely infuriating.

</comment><comment><USER47> Anyone knows which ruby runtime GitHub uses? Ruby MRI or JRuby etc.?

</comment><comment><USER48> > The upgrade started out as kind of a hobby; engineers would work on it when > they had free time. There was no dedicated team.

I'm not sure why this still surprises me. For a company the size of Github, there should most certainly be a team responsible for these type of upgrades.

</comment><comment><USER49> Why in the world is github still on rails?

<comment><USER50> Maybe because their codebase still serves their use cases very well?

And perhaps they have little to gain and possibly much to lose if they ditch it?

You didn't say much in your question, so I don't know if you feel they ought to rewrite with a popular SPA framework or use something like Elixir Phoenix, but if their Rails-based solution handily serves 30 million users, why do you feel so strongly they should move to something else?

<comment><USER51> Nothing wrong with Rails, especially if the team knows it well. Time to develop is the real cost in software most of the time.

If Github wanted to integrate a lot of real-time features, then Elixir + Phoenix can't be beat. Depending on what they replace, a 10x in performance and a fraction of the servers needed is a nice win.

<comment><USER52> I've seen performance boosts closer to 20x when I've helped companies rewrite their Rails products in Elixir. I've also seen a reduction in server costs. In all fairness though, simply rewriting the Rails app in Rails, with the benefit of hindsight, probably would have resulted in a performance gain too.

<comment><USER42> I would bet $10 the scaling problem with Github would properly have more to deal with Git than Rails itself. Switching to Elixir wouldn't really help.

</comment></comment></comment></comment></comment><comment><USER53> I had the impression GH switched Ruby for Scala years ago.

<comment><USER54> That was Twitter.

<comment><USER53> Oh, lol.

Thanks :)

</comment></comment></comment><comment><USER44> How much money in server costs and how much electricity could be saved if Github didn't use an interpreted language, but something like Go, C#, F#, Java etc?

<comment><USER12> Github would not have been the same in any of those. They really took to some of the Rails concepts - a lot better than most Rails companies - and it shows in their product (routing, object structures, etc)

<comment><USER44> So your claim is you could not create the same user experience in any language that is jitted or compiled?

I can't really take that seriously.

<comment><USER12> Sure, in retrospect you could create the same thing. It's just various text processing at the end of the day. What I'm claiming is that their choice of Rails led to certain choices which were really transparent throughout the product and are still there. It would've grown to be something totally different on another technology, so I don't think it's fair to just look at cost and performance. They did many things "the Rails way"</comment></comment></comment></comment>


Docker Swarm Visualizer - <AUTHOR> https://github.com/ManoMarks/docker-swarm-visualizer <comment><USER2> See this tool live in action on my Raspberry Pi cluster right here: [https://www.raspberrypi.org/blog/docker-comes-to- raspberry-p...](https://www.raspberrypi.org/blog/docker-comes-to-raspberry- pi/)

</comment><comment><USER3> Very nice idea! Would be great to have this (idea) built-in as part of swarm.

<comment><USER4> Oh yes, please make the docker binary also contain an http server (oops, it has one) serving http webpages with websockets and shit. Why stop at containing container libraries, a certificate authority, a raft / consensus / key-value store thingy, leader election, parallel file downloading, signing and verification, a copy of nsenter, a tcp and udp proxy, and a scheduler.

I'm pretty sure including 20 different things that barely work is the only way to make a low-level bit of software better than including 19 things that barely work.

Really though, this should not be built in to swarm. This should be an "addon" which can be deployed on top of swarm (as the Kubernetes dashboard is a totally normal pod you run on top of kubernetes).

I'm pretty sure swarm's security model right now doesn't allow exposing services behind tls client auth or such, so there's no reason to serve this and leak information to the general public.

<comment><USER5> The question here is: Which comes first, docker containing systemd or systemd containing docker?

<comment><USER6> Systemd has its own container solution with nspawn and machined, I don't see why it'd want docker.</comment></comment></comment></comment>


PayPal briefly gives Pennsylvania man $92 quadrillion - <AUTHOR> http://www.bizjournals.com/seattle/blog/techflash/2013/07/paypal-briefly-gives-pennsylvania-man.html

<comment><USER2> Shame they don't pay interest.</comment>


The inaccessible web: how we got into this mess - <AUTHOR> https://uxdesign.cc/the-inaccessible-web-how-we-got-into-this-mess-7cd3460b8e32#.5rnkju4eq <comment><USER2> Lots of good points, but misses one thing. If I have to sell accessibility to my boss, then I need to justify it in terms of RoI for the business, not avoiding being called an "ableist" discriminator.

So lay it out: how much additional time should we expect to pay? If videos have to be close captioned how long will that take? What kind of skills does that require?

What is the typical cost of an ADA lawsuit? How many are filled a year?

<comment><USER3> Old people (that have by sheer math of accumulation) a lot of patrimonial tends to be visually more impaired than average. That is the data you need to make a correct understatement marketing assessment of the lost ROI.

Look at the age of MPs, owners, people with responsibilities. Look at the stats, they tend to be way older than the coders. Just doing «accessible» or at least «high contrast/big lettering/simple UX» websites just highers the probability of getting new «high profile» customers click from your home page to your «purchase» page and transform from suspect to customers...

And, chances are persons without disabilities prefers simple ergonomic websites, and that it will cut on your operational expenses (sites that are accessible tends to use fewer CSS and less JS).

It will also make you cut on the REST API bullshit crap, because GET/POST on accessible web pages tends to be easier to do than REST/XML.RPC/SOAP.

You can also throw another overpromising/underdelivering JS framework and a lot of money at the problem, but I guess it will have less results than firing half of your devs, that if they have to deliver fast and correctly will automatically resort to do Keep It Simple Stupid kind of webpages, that are actually a good recipe for accessibility.

<comment><USER3> PS recipe easily for accessible websites: \- avoid JS to modify change the behaviour of element (see last point); \- no JS for generating URL (see last point) \- no IMG \- ALT on IMG / use of captions \- avoid significant information in IMG \- if the sites renders on lynx it works on a braille terminal \- avoid async \- avoid table based presentation BUt use table for presenting table \- avoid CSS contorsion (like presenting tables without using table) \- fire designers, UX specialists \- if JS is needed, jquery is the only js framework that took a great care in being accessible (non-obstrusive)

Basically, anyone reasonably competent in HTML should be doing an accessible website by default.

If your site is not, your devs are just craps.</comment></comment></comment>


New Robot Makes Soldiers Obsolete[video] - <AUTHOR> https://www.youtube.com/watch?v=y3RIHnK0_NE <comment><USER2> > This video is a comedic parody and is not owned, endorsed, created by, or > associated with the Boston Dynamics company.

</comment><comment><AUTHOR> and then take a look here and you will realize the actual danger.

[https://www.youtube.com/watch?v=TIlEYGFBECU](https://www.youtube.com/watch?v=TIlEYGFBECU)

there was a lack of fear or caution in the first video, when a robot could easily twist a human like a lemon wedge.

management of public perception could make soldiers obsolete.</comment>


Sudoku Solver in 140 bytes - <AUTHOR> https://gist.github.com/1230481/95f6facb74f51d089bea87eba0f470cf3bbed83a

<comment><USER2> For those of you who haven't heard of code golf, you should check out <http://140byt.es/> The point is more to learn more about the language than to make something practical so come at it in a lighthearted way. In this case, the problem is actually pretty damn hard.

140 Bytes is Jed Schmidt's side project where people compete to make useful functions as small as possible. Jed is kind of a Javascript powerhouse and also happens to be a really nice guy.

<https://github.com/jed>

<https://github.com/jed/140bytes/wiki/Byte-saving-techniques>

 _Edited to add.._ As a curiosity, Jed might have the most-forked gist on github: <https://gist.github.com/962807>

<comment><USER3> _> For those of you who haven't heard of code golf, you should check out <http://140byt.es/> _

The Code Golf SE site is nice too: <http://codegolf.stackexchange.com/>

</comment></comment><comment><USER4> Here's one half the size in k:

      p,:3/:_(p:9\:!81)%3
      s:{*(,x)(,/{@[x;y;:;]'&21=x[&|/p[;y]=p]?!10}')/&~x}

[http://thesweeheng.wordpress.com/2008/11/30/more-sudoku- solv...](http://thesweeheng.wordpress.com/2008/11/30/more-sudoku-solvers-in-k- and-q/)

<comment><USER5> It would be great to have a javascript translation to compare it. This is still pretty amazing.

<comment><USER6> You'd have to translate k's _entire data model_ first. It's based on data- parallel, implicit looping over vectors -- like multiplying an entire vector by a constant in linear algebra.

For an open-source implementation of a k-like language, check out Kona (<https://github.com/kevinlawler/kona>). (Full disclosure, I'm a contributor.) It's still a work in progress, but it's pretty far along.

</comment></comment></comment><comment><USER7> That's really neat, a sudoku solver that fits in a tweet.

The license is even nicer, that's a real gem, and I think it ought to be submitted for formal approval as an open source license.

<comment><USER8> It is <http://www.gnu.org/licenses/license-list.html#WTFPL> . The WTFPL is from an ex-Debian project leader, also one of the original authors of VLC: <http://en.wikipedia.org/wiki/Sam_Hocevar>

</comment></comment><comment><USER9> A fork for 139 byes: <https://gist.github.com/1247640>

And I had never heard of "DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE". (<http://en.wikipedia.org/wiki/WTFPL>)

<comment><USER10> I like that the OSI raised the WTFPL licence at a 2009 Board Meeting. I feel the outcome, 'Reject', is a loss for open source software - I'd love to see a programme with LICENCE.TXT containing that.

<comment><USER11> As snippyhollow pointed out above, the FSF recognizes it as a free license. <http://www.gnu.org/licenses/license-list.html#WTFPL> It's even GPL compatible!

</comment></comment></comment><comment><USER12> This won't work for anything but the most basic puzzles. Brute force just constitutes basic gameplay. To solve a moderately advanced Sudoku puzzle you need to compare potential candidates in groups. Then it gets even more advanced with a handful of trial and error techniques.

<comment> T-hawk This is not correct. If a Sudoku puzzle has one and only one solution, brute force can always find it. It is trial-and-error for every single cell and every possible value, which is guaranteed to succeed eventually. Sounds crazy for a human, but a 3 GHz computer microprocessor can rip through that in a second or two.

[http://en.wikipedia.org/wiki/Sudoku_algorithms#Solving_Sudok...](http://en.wikipedia.org/wiki/Sudoku_algorithms#Solving_Sudokus_by_a_brute- force_algorithm)

<comment><USER13> Well, a few seconds unless someone goes and feeds you a worst-case puzzle like the one in that wikipedia page anyway. (Yes, that is an entirely valid sudoku with a unique solution. In theory it can even be solved by hand quite easily by applying a simple set of rules. I checked both of these, though not manually.)

</comment></comment></comment><comment><USER14> Could someone help with the syntax on line 24:

g&&R(a)

I simply don't understand it as a statement and I don't get in the context of the for-loop

<comment><USER15> <http://en.wikipedia.org/wiki/Short-circuit_evaluation> The same applies to i--||+a in the first loop.

</comment></comment><comment><USER16> 4clojure has a code golf league for its exercise: <http://4clojure.com/>

</comment><comment><USER17> I want to see a minimal solution in APL.

</comment><comment><USER14> I have to admit, I have never seen

.) for-loops used this way

.) an OR-operator in a for loop

.) +a as a shortcut for a.toString()

.) syntax like g&&R(a) (line 24)

.) syntax like a[j^i==j] (line 29)

Where can I learn/read about advanced stuff like this, searching for this information on google is very hard, as I lack the correct terms ...

<comment><USER18> I think most of that syntax isn't so much "advanced" as simply not used in practice--it's too hard too read. Additionally, it uses basic operators which you should know (except maybe for "^" which is bitwise xor).

The best thing to do would be go through the basics of JavaScript and learn _exactly_ how everything behaves. You should be able to answer questions like "is 24&&4 === true?" pretty easily.

If you have a bit of time on your hands, reading the standard will teach you all you need to know.

Of course, from a purely professional stand point, this is probably not the best use of your time (although knowing the language inside-out is important); using code like this in production code is a bad idea--it makes maintenance much more difficult.

</comment></comment><comment><USER19> What's the minimal `J` solution?</comment>


Ask HN: What tools/apps do you use in your team to manage feedback? - <AUTHOR> The cycle of continuous Feedback is oft broken in the chaos of a high speed tech organisation.  What are your goto effective tools for actionable and trackable feedback within team members?<p>What tools provide one to one and team level feedback isolation?  What tips and tricks help you? <comment><USER2> We use a tool called BigTeam([https://bigteam.co/](https://bigteam.co/)), it's a newly built tool to address the broken feedback processes within any organization. What's great about it is whether you're a researcher, brand manager, creative, almost anyone in your team can use it, it's quite robust and holistic. It solves the problems of Who exactly to ask but also a survey builder helps aid the type of questions to ask for actionable feedback too.

</comment><comment><USER3> Obviously only for positive feedback, but we have a command /praise in Slack at Reddit. This let's you acknowledge someone quickly for a good job, and the results are collected into a channel and into Small Improvements, which is the heavier performance review system we use. It actually gets used quite a bit!

<comment><USER4> I can see that having a small command would make it easier to give positive feedback (which is important, since negative feedback has a much heavier emotional weight), but have you noticed any devaluing of positive feedback due to how easy or common it is to give it?

</comment></comment><comment><USER5> We use OfficeVibe ([http://www.officevibe.com](http://www.officevibe.com)) which allows employees to provide anonymous feedback (good and bad) and helps us track our ongoing progress. It's quite helpful.

</comment><comment><USER6> I have used 7Geese[1] in the past. A little overwhelming as a tool but there are some nuggets of usefulness there.

15Five[2] (what's with these names?) is another one I have used and is a little more approachable.

1\. [https://7geese.com/](https://7geese.com/)

2\. [https://www.15five.com/](https://www.15five.com/)

<comment><USER7> 15Five is excellent. 15 minutes each week for a team member to submit feedback / 5 minutes for a manager to review. I find people bring up concerns in their 15fives that I can address quickly before they become larger problems.

</comment></comment><comment><USER8> We use TinyPulse to keep team / upward feedback regular (weekly basis). I've also found that co-locating as much as possible is very effective to build a culture of natural flowing 1-1 feedback... strong relationships have always been better than any app I've used.

</comment><comment><USER9> I work at [https://www.cultureamp.com](https://www.cultureamp.com) so I'm biased. Of course, we use the product ourselves. I think it's great.

</comment><comment><USER10> We use CareerLark[1] in our office. It's nice and lightweight (plus easy to onboard people on to).

1\. [http://www.careerlark.com/](http://www.careerlark.com/)

<comment><USER11> The emoji-scale 1-5, how exactly do you define that scale? Do you give feedback on a per-person basis or company wide? Say I have a team of 3 engineers, all with "Senior" title however I expect one to naturally outperform the other two.

This quarter s/he's slacked a bit, maybe s/he's not as driven or it's something personal - but s/he's still performing just as well as the other two engineers who've both performed exceptionally well and I'm giving them both a 5.

Do I give the engineer I expected to do better a 5? Or a 4? I mean I expected them to do better but I'm still really happy with their work.

</comment></comment><comment><USER12> I use www.oneone.io.

Both to manage my one on ones and to gather feedback from the team.</comment>


Ask HN: How do you hire someone.  - <AUTHOR>

OK, I am finally going to get another member of staff to help me. I read a lot about "How not to hire someone", how programming trivia questions are not a good idea. What ways do you guys have of finding someone good?<p>(The job will likely be intermediate level all round developer, with a good bit of database / Django work. In the past I found it very frustrating to work with a college who proudly proclaimed not to know OOP, had no interest in learning. So I guess willingness to learn new tech is one thing on my list of wants). <comment><USER2> I think programming trivia are not too bad of an idea, it's how you use them. If you base everything on them and bombard the candidate with test it might be not good because a lot of people are not that good under that kind of pressure and the results might not reflect the actual skills of the person. Some programming questions are still important to make sure that the candidate is not lying.

I think it's important to see if the candidate is a person you would like to work to, there are many things to consider, try to find someone that fits as a person and skills.

<comment><USER3> Yes, programming questions are required along with we should also check whether the person has some passion about learning new technologies and doing more experiment with the current skill set what he has.</comment></comment>


Show HN: Uplink – Build Reusable Objects for Consuming Web APIs - <AUTHOR> https://uplink.readthedocs.io/ <comment><USER2> Retrofit([https://square.github.io/retrofit/](https://square.github.io/retrofit/)) is probably one of the best Java libraries I've ever used, missed it a lot when working in Python. Cross-pollination is awesome.

<comment><USER3> If you are in the .NET world, you can use Refit or RestEase:

[https://github.com/reactiveui/refit](https://github.com/reactiveui/refit)

[https://github.com/canton7/RestEase](https://github.com/canton7/RestEase)

</comment></comment><comment><USER4> Nice library. And it's logo is very reminiscent of a game of the same name: [http://cf.shacknews.com/images/20120608/ipadlan_22454.jpg](http://cf.shacknews.com/images/20120608/ipadlan_22454.jpg)

</comment><comment><USER5> Most of the time we use json+http, we need an RPC mechanism, but are afraid to say it because the web people were duped into thinking REST is good.

<comment><USER6> I'm currently working on fixing a semi broken REST API that exposed way too much of the data internals to clients. The clients have so much control over the DB that they must chain calls in a specific order and have none of them drop or else the DB can get into a nonsensical state. I understand why it was built this way by the consulting firm, because it let them leverage a server side framework to auto generate a ton of endpoints based on the DB schema, but it's a great example of REST gone wrong.

I'm considering transitioning to an RPC framework to dig out of this mess, but not sure that will go over well with one of the REST gurus on my team.

<comment><USER7> the problem here seems to have nothing to do with REST</comment></comment></comment>


Backyard UNDERGROUND Apocalyptic BUNKER - <AUTHOR> https://www.youtube.com/watch?v=KO25JYAaJC0 <comment><USER2> The title makes me immediately think of Robert McElwaine.

"REPRODUCTION and DISSEMINATION of this IMPORTANT Information is ENCOURAGED"</comment>


How Evolution Designed Your Fear - <AUTHOR> http://nautil.us/issue/53/monsters/how-evolution-designed-your-fear <comment><USER2> Quibble: 'intraspecific violence'

Thinking ' _intraspecies_ violence': '... danger from ...hostile members of their own species;'</comment>