Technical and non-technical tips for rocking your coding interview - <AUTHOR> https://github.com/yangshun/tech-interview-handbook?utm_campaign=explore-email&utm_medium=email&utm_source=newsletter&utm_term=weekly <comment><USER2> _2\. What happens between you typing a URL into your browser address bar, hitting enter and seeing a web page?_

"What happens when I'm asked a question like X? I spout a mutated form of some canned response I cribbed from a list I found on HN a while back. Because I hear that's how you're supposed to 'rock your coding interview', these days."

 _3\. What are the things you should consider if you were writing your own database server?_

"Look, you know as well as I that this job has nothing -- as in, _nothing whatsoever_ \-- to do with actually building production-grade database servers. Or anything even remotely analogous to it. Debugging that tangled mess of poorly conceived, never-reviewed JSON APIs left behind by the other developer (while you were pestering them about 'disruption' and 'just needing to get this thing to market') is more like it."

"But hey, since you're playing that game, I can play too: here's a bunch of catchphrases like 'non-blocking I/O, sharding, blah blah.' Because I hear that's the killer answer to give to questions like these. And BTW, if you really think that people Michael Widenius or Salvatore Sanfilippo would be interviewing for this job, then your problems are way bigger than I could ever hope to help you with."

<comment><USER3> I think many technical interviews are simply trying to assess whether the candidate has his head screwed on straight and the ability to do basic engineering. As such, the specific topics are practically irrelevant.

At least that's what I try to do when I end up interviewing someone. For example, can he suggest what sensors would be good for a Lego robot that would knock a tennis ball off the ping pong table without itself falling off? Can he describe the logic? How would he test this? How long, on average, would it take? What position of robot and ball would give the worst case performance (success or time)? His job will not involve Lego robots, but IME the person who can give sane answers on those would do a lot better than a coder who knows one toolkit well and nothing else.

<comment><USER2> _For example, can he suggest what sensors would be good for a Lego robot that would knock a tennis ball off the ping pong table without itself falling off?_

Right off the bat, this is very muddled question to ask.

For one, "sensors"? I think you meant to say "actuators". Because a sensor by itself can't knock anything off a table.

More fundamentally, "Legos", for those of a certain age, were entirely _non- mechanical_ components in their day. So (even though yes, we've also vaguely seen and heard about, and rolled our eyes at, the newer kind), this just sounds like asking them to (seriously) consider the question of how to build a logical circuit out of tinker toys. Yes, it can be done - but on the face of it, that kind of a question comes off as an invitation to join a mental masturbation session. Not the kind of question you'd ask of someone you respect, and whose time you know to be as invaluably precious as you own.

 _The person who can give sane answers on those would do a lot better than a coder who knows one toolkit well and nothing else._

This is of course a false dichotomy. Especially given that it was -- not sure how else to put this -- a silly question to ask in the first place.

<comment><USER4> Doesn't seem like a very middle question to enjoy. The question basically sats you have "Lego robot that can knock A tennis ball off the long long table." So you already have a robot that can knock this off the table, it really isn't important that if it's made of Legos or not. Now what sort of sensor would you add so it won't fall off the table as well. It specifically asks about the sensors. Don't make questions harder than they are

<comment><USER2> _Don 't make questions harder than they are._

There's no need to make it any "harder" \- the point is that just wasn't well- articulated to begin with. (Noting again that "well-articulated" is _very_ different from fuzzy / ambiguous, in the engineering sense).

And given that the people you want to hire, by definition, are generally very busy (and have many, many important things to do with their time) -- even when they aren't currently working (despite the urban legend that "they always have jobs") -- as such, it just isn't a good use of their time.

</comment></comment></comment></comment></comment><comment><USER5> What I'd love tips for, is how to politely and professionally protest certain interview styles. I want to know how to say, "sure here's how to implement _foo_ but I also want to express that a focus on this coding trivia is distracting from the skills I feel make me an asset..."

Maybe what I'm asking is tips on how to steer an interview. One of the reasons I wouldn't even consider a tech giant interview is that I feel like I'm just one of many cattle being processed through a long gauntlet of nonsense that distils me down to quantifiable traits rather than who I am.

<comment><USER6> A warning: If you take this approach, you'd better be a programming god, because you're going to be the guy who was too good to knock out a simple coding problem. Every off-by-one error you commit on the job will raise an eyebrow. People will wonder, does this guy want to be an engineer or something else? Why couldn't he rip through that problem and teach _us_ a thing or two on the way? Another thing is you're basically coming in and saying "your interview process is _wrong_ ". If you're being interviewed as a manager or a lead, you can afford that risk. If not, be careful, because many people, myself included, don't want to work with somebody who cannot focus on the task at hand and feels the need to question things that have clearly been thought out ahead of time.

<comment><USER7> > _...and feels the need to question things that have clearly been thought out > ahead of time._

I only take issue with this. Many things in organizations that have been through explosive growth (and sometimes others) are that way because for no reason in particular and amount to bandaids upon bandaids because nobody's ever had a chance to actually look at the process. It very well might suck. Questioning it is the first step in making it not suck.

That said, as an interviewee is probably not the right time to do so. You're an outsider, you have very little rapport or relatability compared to the people that already work there. Even if you can point to something and unambiguously prove that They're Doing It Wrong, your advice isn't in a position to be heeded.

<comment><USER6> Thank you, your second paragraph is exactly my point, and I didn't appreciate everybody else dressing it down in isolation. Of course I don't want to work with a bunch of robots. But there's a time and place, and please don't throw a wrench in the interview process to prove how smart you are: I want to work with people who pursue their initiatives _tactfully_.

<comment><USER8> I think you'd find more tact with a less combative-sounding opener than "If you take this approach, you'd better be a programming god, because you're going to be the guy who was too good to knock out a simple coding problem."

Moving the bit about the scope of the role (jr vs sr vs lead) up to preface the rest of the comment would've toned it down a bit, but even there I disagree with the "taking a risk" part - a senior candidate shouldn't feel like it's risky to offer alternative perspectives. If I got the impression that the hiring manager thought asking questions would likely be a sign of "cannot focus on the task at hand," that's going to set off my own flags a bit.

If you're married to your interview process I'm worried you'd be even more married to your day-to-day process, and I haven't met a perfect company yet, so I consider being overly adherent to process instead of results a warning sign.

<comment><USER6> Correct me if I'm wrong, but a reasonable approach would be to give the interviewer the benefit of the doubt and to at least engage the programming challenge, and to also voice your concern with the process. It's no different from voicing your concerns first and grudgingly engaging the problem, but the two make wildly different impressions.

Also, as an interviewee, you stand to learn a lot more from that interaction than by rejecting it. Hell, I welcome coding challenges as an opportunity to size up the interviewer's chops!

If the challenge is conducted in a reasonable way, it should feel like any other design/pair programming session you've had at the office, and it can be quite revealing of the tendencies of your potential colleagues.

<comment><USER9>
      > Also, as an interviewee, you stand to learn a lot more
      > from that interaction than by rejecting it.

If you already learned this is not the company you want to work for there is no need to waste your time playing stupid games just to win stupid prizes.

<comment><USER7> The chances of you learning that information via interview are minimal. Some of the best teams I've worked in have had the most dysfunctional interview processes - often for the reason I mentioned in my post - lots of growth, little time.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> The only answer is: memorize all the leetcode answers perfectly, and pretend you don't know the answer but that you're "working through it".

At places like Facebook, I heard that you're given several interviews with 2 coding questions to answer perfectly in 45 mins. It's basically luck of the draw whether or not you know the answer, and the best way to game it is by memorizing as many answers as possible. I know this is possible because I have friends that have gotten offers from Facebook and Google by doing exactly this.

All this does, of course, is create an arms race where interviewers ask harder and harder questions. It's frankly ridiculous unless we start taking the algorithmic portion away from the interview.

<comment><USER11> The arms race doesn't proceed all that quickly. Memorize a couple implementations of breadth-first and depth-first search, an implementation of longest common subsequence, and big O of some data structures, and you'll get surprisingly far in most big-tech-co interviews.

</comment></comment><comment><USER12> In a world where there is a massive shortage of developers you are the talent and the firms come to you to negotiate. Particularly in a world where anybody can look at your GitHub feed and see what you can do.

So these increasingly ridiculous interview techniques have a more sinister purpose. They are an extension of the frat tests to become part of an 'exclusive club'. It's just another brand trick to try and get you to invest so much time and energy into an application that if you actually get picked _you will work for less money and worse conditions_.

You might be the only applicant, but by suckering you in and getting you to jump through hoops you are less likely to walk away when you finally find out they want God on a stick for two pennies for 70 hours a week.

Look up psychological loss aversion and sunk cost. Humans hate to write things off and walk away.

If I'm hiring a developer I can look at their Github resume and see what style they are and how they work. Then really I need a chat with them to see if their personality fits with the existing team personality (ideally you interview them with the team. The team need to work out if the new prospect fits with their group personality, e.g do they think chickens with lips are funny). You pick one based upon that process and set them on a side job to see how they perform in practice. If they don't perform during probation you let them go and try again.

That is a far less costly process to go through than rigging up seven round interviews with everybody.

In some respect if you do set up a seven round interview process and invite applications you actually want to talk to those who declined the process. Particularly if they told the selector that it makes no business sense to have such an expensive and time consuming process and therefore there must be another reason for it.

Because those are then the ones who can look at the system from the perspective of the other guy, work out what is actually happening rather than what people think is happening and then determine it isn't efficient and can be improved. Which is usually what you are after.

</comment><comment><USER13> > _Tailor your answers to the interviewer's age._

> _Generation Y interviewers (between 20 and 30): Bring along visual samples > of your work and highlight your ability to multitask._

> _Generation X interviewers (between 30 and 50): Emphasize your creativity > and mention how work /life balance contributes to your success._

> _Baby Boomer interviewers (between 50 and 70): Show that you work hard and > demonstrate respect for what they 've achieved._

This strikes me as an incredibly ageist thing to do. Even looking at the "suggestion" for my supposed group — what? No; answer the question as correctly as you can; if you can't, try to reason though it as much as you can, and try to convince me that you know _something_.

Some of this is good, but that part in particular … just no.

</comment><comment><USER14> I think that competitive programming, the kind of programming done at IEEE / ACM competitions as well as interviews, is very different from actual day to day programming.

It tells you the person understands data structures and some aspects of programming, but translating that to productivity/success is questionable.

In addition to competitive programming you've got "collaborative programming". Programming for maintainability, growth, construction for verification, good practices, etc.

A good programmer has a balanced combination of both.

<comment><USER15> I like to make the distinction between being a good "programmer" and being a good "professional software developer". Lots of good programmers aren't necessarily good professional software developers.

I usually make it a policy not to bad-mouth my fellow coders, but I once worked with a BRILLIANT developer, knew all the trivia, rocked his interview, impressed the hell out of all of us.

He then spent _two solid weeks_ building an email address validation micro- service. It was perhaps the most exquisite and technically correct email address validation micro-service ever built, but was that really what the business needed?

<comment><USER14> This happens when there's not a very clear expectation on what the deliverable is.

Some people have a better intuition than others when it's moment to capture those requirements. Maybe it's better to spend a few more minutes doing the requirement analysis to set those expectations clear.

Now, sometimes people tend to underestimate some things. URLs for instance, similar to e-mail addresses, can seem trivial to deal with at first but they're actually more complex than people intuitively think. Incorrect handling of URLs is a significant attack vector.

<comment><USER16> I think what the GP is implying is that even a 95%-accurate email address validator would suffice, because any email address you care about is going to get further validation when you validate the address as functional. So it's wasted effort, and suggests poor business sense and a need for close supervision.

<comment><USER15> Yes, that is exactly what I was implying :)

</comment></comment></comment></comment></comment><comment><USER17> This is also a great resource, if you're into studying yourself:

"Coding Interview University" [https://github.com/jwasham/coding-interview- university](https://github.com/jwasham/coding-interview-university)

</comment><comment><USER18> "Doing what you do to seek for what you desire is like climbing a tree to seek for fish." \- Mencius

Coding interviews test for skills that aren't really the same skills you need to do well as a software engineer. I'm surprised the industry hasn't found any better way to evaluate job candidates yet, given how much is at stake.

</comment><comment><USER19> I have a request. When someone takes the time to travel to come interview with you at least do them the courtesy of providing useful feedback if you decide not to hire them.

<comment><USER20> Sadly, most companies will not let interviewers do this for fear of lawsuits.

<comment><USER21> I have an idea to run mock interviews online with real HR people moonlighting, so that you can receive their honest feedback, and as a result, be better for the real thing.

<comment><USER22> Have you looked at interviewing.io

</comment></comment></comment></comment><comment> 10-6 For those of you who like solving coding challenges online either for fun, practice, or to prepare for interviews, here's a list of popular sites:

[https://medium.freecodecamp.org/the-10-most-popular- coding-c...](https://medium.freecodecamp.org/the-10-most-popular-coding- challenge-websites-of-2016-fb8a5672d22f)

I also recently put this list of resources together about Algorithms practice which I think can help out anyone who's preparing for an interview soon:

[https://medium.com/coderbyte/how-to-get-good-at- algorithms-d...](https://medium.com/coderbyte/how-to-get-good-at-algorithms- data-structures-d33d5163353f)

</comment><comment><USER23> I had an idea for a startup that I think could be a much better solution than code interviews.

It hinges on the fact you can get a much better sense of a developer after you've worked with her for a few weeks.

So, here's the startup idea:

Hire a group of developers to to work with you on a small project for a few weeks. They come in as a (virtual or real world) team and build something you've been meaning to do, but it's on your low priority stack.

All of the developers in that group are actually looking for a full time job. As you work with them during those 2 weeks you can see which dev you gel with best and offer them a job.

In the mean time, all the devs get paid for doing useful work for you for a short period of time, even if they don't get hired.

So... the startup is a central agency that engages developers looking for a full time job and then hires them out as a group to help clients do a small project, with a view to picking one or more of the developers for full time work.

This is a win for the agency because they have to do less work to convince a client about a candidate. It's a win for developers because they get paid to be on job interviews. And it's a win for the client because they get to try before they buy and as a result will make much higher quality hires.

Possible brand name: TeamHire

Edit: If you like this please feel free to take it and run with it :)

<comment><USER24> This already (somewhat) exists with contracting firms. My team is mostly people hired this way.

The problem is that the contracting firms still want to stuff your office full of their workers, so we still need to run diligent interviews. (This means making sure that they don't coach the candidates through the interview, because once the candidates are coached, we can't really evaluate them.)

The good news, though, is that we get much better results working with a firm like this. Most of the people we interview we hire, unlike in the past, where most of the people we interviewed were straight up morons.

<comment><USER23> I think, with the right platform (ie like hired.com), you could automate much of that initial process of deciding who you wanted to be part of your team.

</comment></comment></comment><comment><USER25> A piece focused on non-technical tips: [https://www.interviewcake.com/coding- interview-tips](https://www.interviewcake.com/coding-interview-tips) (Full disclosure: I wrote it)

<comment><USER26> I'm not related to this in any way. I'll just say I paid the money recently and went through interview cake and it was really helpful. Learned a bunch and added a bunch of tools to my toolbox. Really liked the walkthroughs of problems bringing it from a brute force answer to optimal. I ended up making it to onsite final interviews with five companies in SF, which I will be going to in the coming weeks. Totally worth it.

Only gripe, the online ide you use sucks balls. Half the time I'm debugging whether I used tabs or spaces, and dealing with errors. No matter how careful I tried to be, it seemed to default to whatever I wasn't using and threw errors. Please get a new ide and add in some test cases that maybe tell me how I'm doing in those tests.

Otherwise seriously awesome site.

<comment><USER25> Thanks! New IDE is coming! And test cases after that, hopefully.

</comment></comment></comment><comment><USER27> What I would really like is the ability to ask my interviewers (or better, the team I'd work with) a lot of questions - both technical and otherwise.

After all, the interview is supposed to be a two-way process. But they usually give the candidate a lot less time to ask questions.

They want to ask me all the difficult questions to see if I'm good enough for them. And I likewise want to ask questions (fairly basic ones) to see if they're good enough for me. Few things suck more than the company demanding a lot from their candidates, and then sticking you in a team with people who don't seem to know the basics.

</comment><comment><USER28> This has a bit of a web front end slant. Check out [https://www.acefrontend.com](https://www.acefrontend.com) for another good source of practical front end challenges

</comment><comment><USER29> While this is imho in a much nicer format, I also maintain a somewhat opinionated list of technical interview resources: [https://github.com/andreis/interview](https://github.com/andreis/interview)

</comment><comment><USER30> We wrote a post around this too if anyone is interested - [https://geektastic.com/blog/five-killer-interview- questions-...](https://geektastic.com/blog/five-killer-interview-questions- for-developers)

</comment><comment><USER31> So I wonder. If someone memorized all that trivia, do you think they can code?

<comment><USER32> If its just memorized without understanding, probably not.

But I've been doing a bit of the leetcode/hackerrank challenges lately, and believe it or not, I actually think it has made me a bit better, by refreshing bits of knowledge that were getting stale, and really forcing me to think about performance (many test cases in the challenges will fail without the fastest implementations).

And they are kind of fun.

</comment></comment><comment><USER33> So this is what we're going to do today.</comment>


The Best Way to Learn Anything: The Feynman Technique - <AUTHOR> https://www.farnamstreetblog.com/2012/04/learn-anything-faster-with-the-feynman-technique/ <comment><USER3> I'm not being funny, but I thought the Feynman technique was: \- Write down the problem. \- Think very hard. \- Write down the answer.

Still, this is a useful update to my understanding of his techniques :)

<comment><USER4> [https://en.wikipedia.org/wiki/Richard_Feynman#Popular_legacy](https://en.wikipedia.org/wiki/Richard_Feynman#Popular_legacy): 'In a 1992 New York Times article on Feynman and his legacy, James Gleick recounts the story of how Murray Gell-Mann described what has become known as "The Feynman Algorithm" or "The Feynman Problem-Solving Algorithm" to a student: "The student asks Gell-Mann about Feynman's notes. Gell-Mann says no, Dick's methods are not the same as the methods used here. The student asks, well, what are Feynman's methods? Gell-Mann leans coyly against the blackboard and says: Dick's method is this. You write down the problem. You think very hard. (He shuts his eyes and presses his knuckles parodically to his forehead.) Then you write down the answer."'

In other words, Feynman himself never promoted that. I believe Feynman _did_ extol the virtues of learning things until you can explain them to others.

I have seen many people use the real Feynman technique to good success. While I have to admit I've never quite used it directly, I can also attest to the virtues of trying to teach others to make sure you understand something yourself.

I have seen many people attempt to use the "write problem - think - <USER2> solution" method. Universal abject failure. It's a joke and it always was.

<comment><USER3> Ah I never caught it was a joke.. thanks for clarifying. The 'real' Feynman technique sounds much more interesting and beneficial ;)

</comment></comment></comment><comment><USER5> I think the issue with this is that it doesn't allow for the existence of black boxes. I think an improvement might be to recurse until you hit something you don't think is worth understanding fully, and then move back upward.

<comment><USER6> In this context what is a black box? And can you explain further "move back upward"?

<comment><USER7> Well, it's like if learning to write a computer program you might not feel the need to understand assembly language or machine code. So you stop at "then the machine translates it into machine code" (handwave, handwave), stop the recursion, and go back upwards.

</comment></comment></comment><comment><USER8> The focus on simple language is important for comprehension, and politicians have been trending their level of complexity simpler over the years:

[https://www.bostonglobe.com/news/politics/2015/10/20/donald-...](https://www.bostonglobe.com/news/politics/2015/10/20/donald- trump-and-ben-carson-speak-grade-school-level-that-today-voters-can-quickly- grasp/LUCBY6uwQAxiLvvXbVTSUN/story.html)

</comment><comment><USER9> This is a great technique. I wish everyone, and especially teachers, would adopt it.

I think the fellow who writes waitbutwhy.com is using something like this.

Also, I once read an interview with the wife of Jonas Salk, the inventor of the polio vaccine. She said she met a great many people working in the sciences and technology, and the really smart ones could explain the heart of what they were doing in a clear and simple manner.

</comment><comment><USER10> "Without using the new word which you have just learned, try to rephrase what you have just learned in your own language. "

[http://bigthink.com/neurobonkers/how-to-use-the-feynman- tech...](http://bigthink.com/neurobonkers/how-to-use-the-feynman-technique-to- identify-pseudoscience)

</comment><comment><USER11> It only applies to procedural knowledge, of course, but there's a similarity here between "teaching it to a toddler" and writing a program that does it. I often find huge gaps in my domain knowledge and understanding, not while I'm composing a readme up front but while I'm writing code.

</comment><comment><USER12> Explaining something in a way a toddler can understand sounds a lot like writing code to me. Computers have only as much context as they have libraries/instruction sets and you have to "explain" the rest in those terms.

</comment><comment><USER13> working my way through Herb Grossman's Calculus Revisited on MITs OCW. He is constantly approaching the same result from a different angle in much the same way. Best calc teacher i ever had and he passed away years ago...</comment>


"Save game editors and console modding now illegal in Japan" - <AUTHOR> https://www.reddit.com/r/emulation/comments/abk551/save_game_editors_and_console_modding_now_illegal/ <comment> barrow-rider For the folks who have web filters that block reddit:

\-----

Due to an amendment in December 2018 of the Unfair Competition Prevention Act in Japan, certain gaming-related activities and services have now been declared illegal. This includes:

\- Distribution of tools and programs for modifying game saves

\- Selling product keys and serials online without the software maker's permission

\- Game save and console modding services

As such, sales of products such as Pro Action Replay and Cybergadget's "Save editor" have been discontinued.

Here is a (Japanese language) page describing the new restrictions:

[http://www2.accsjp.or.jp/activities/2018/pr6.php](http://www2.accsjp.or.jp/activities/2018/pr6.php)

As well as a general news article on the topic:

[http://psgamenews.net/1218](http://psgamenews.net/1218)</comment>


Service oriented REST architecture is an oxymoron - <AUTHOR> http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/

<comment><USER2> This is maybe the muddyist thinking I've ever read. He tries to draw a distinction between SOA "Services" and REST "Resources" but it doesn't work because a "Resource" is just the end product of a "Service". So really he's just jumping through his own mentally created hoops (I bet he's the type that writes 40 pages of Workflow and UML diagrams before he ever writes a line of code)

Whether you use SOA or REST it's still still just an interface to the same functionality. How you choose to think about it is all in your head.

<comment><USER3> Wait a second.

1\. "...it doesn't work because a "Resource" is just the end product of a "Service"...". I think we need to review the concepts. A resource is an abstraction, a thing that lives on the web, in no particular place, and that may have more than one representation. Actual implementation of a resource can be anything, and one option is to built a service. 2\. Nor SOA nor REST are interfaces! Wrong, they are architecture styles. 3\. Agree, same functionality can be achieved using either style. But app is not only the functional part, but the quality attributes too, and REST/SOA have different architectural constrains to deal with those attributes. 4\. Finally, you are right, YOu can choose what to use, but it is not good to confuse them.

<comment><USER2> I have data. I want you to be able to use that data. I create a service so that you can INTERFACE with my data.

Again, the reason "Information Architecture" has become a dirty word in most IT organizations is because of these little mental circles. Like when you say "Actual implementation of a resource can be anything". What does that even mean? Are you saying there's some form of "resource" that isn't data of some kind? Because if all resources are data of some kind than there has to be some process to deliver that data. That process is called a service. Hence resources are the end result of services (as I said)

<comment><AUTHOR> I think the blog post clearly mentions that there is indeed one standardised resource management service for REST over HTTP, and given its simplicity and ubiquity, that particular standardised service orientation is uninteresting and largely ignorable.

<comment><USER2> When I find someone disagrees with me I tend to either try to elaborate on my point or present a counter point to their argument. Not just quote what I've already said. You should try it</comment></comment></comment></comment></comment>


How to allow direct file uploads from JavaScript to Amazon S3 signed by Python - <AUTHOR> http://philfreo.com/blog/how-to-allow-direct-file-uploads-from-javascript-to-amazon-s3-signed-by-python/ <comment><USER2> Does anyone know if the same thing is possible for Azure Blob Storage? I don't believe it is now, due to the Cross Origin Resource Sharing (CORS) limitations of Azure ([http://social.msdn.microsoft.com/Forums/en- US/windowsazureda...](http://social.msdn.microsoft.com/Forums/en- US/windowsazuredata/thread/628bb3eb-f96c-479b-9040-e9ecaf45bac9/)), but I'd like to double check.

<comment><USER3> I guess it's redundant for me to reply here and say no, since I'm the one saying that on the forum thread you link to also. :-)

</comment></comment><comment><USER4> But does this mean Javascript is talking to your server rather than S3?

Because the beauty of filepicker is that a user is not locking up one of your processes while they spend minutes uploading a file.

Especially important on Heroku, for example. Though I'm sure a self hosted node server could fare better, I'd sooner stick it out with Filepicker.

<comment><AUTHOR> No... the file goes directly to S3 from the browser. Your server is only pinged with the _name_ of the file so the upload can be signed.

</comment></comment><comment><USER5> Too true about your problems with Filepicker. It put me off using them for even small scale projects.

</comment><comment><USER4> So any more details about the issues at Filepicker?

Can't see any stories on HN

An outage is expected on services, even self-made ones like this.

<comment><USER6> We've been talking with the Close.io folks directly, but you may have experienced some slowness this weekend due to increased load. We're rolling out a new architecture soon that should address the issue for the next order of magnitude.

Regarding the response issue mentioned, we had a bug where we would not return the S3 key properly for a specific code path. The bug has since been patched and pushed to production.

<comment><USER4> Thanks for that Brett

I'd still prefer a service like Filepicker over running my own service.

However would of been good to see a blog or twitter update on these issues.... I might of missed something, but so far not able to see anything of the sort?

Does Filepicker have a Status page? Like Herokus? Cannot see anything on your homepage.

Everyone expects outages and such. But seeing the acknowledgement and plans for improvement helps!

(Congrats on the service... I'm still choosing you guys!)

</comment></comment></comment><comment><USER7> How is it 'direct' if there is an intermediary?

<comment><USER8> It isn't an intermediary: you get a signature from your server (no actual file data sent) and then you use S3's support for direct browser uploads to send the actual file data.

One additional point to note: this has been possible since 2008 (see <http://aws.amazon.com/articles/1434>) and strictly speaking doesn't need CORS. If you use a hidden FORM element that targets a hidden iframe you can do this without needing a browser that supports CORS: you do lose the upload progress information, however.

</comment></comment><comment><USER9> Very cool. This will be really useful.</comment>


Smarter Training of Neural Networks - <AUTHOR> https://www.csail.mit.edu/news/smarter-training-neural-networks <comment><USER2> > Their key innovation was the idea that connections that were pruned after > the network was trained might never have been necessary at all. To test this > hypothesis, they tried training the exact same network again, but without > the pruned connections. Importantly, they "reset" each connection to the > weight it was assigned at the beginning of training.

> "It was surprising to see that re-setting a well-performing network would > often result in something better," says Carbin.

This, intuitively, makes sense to me. It seems that the pruned model has to waste less training cycles on inferior weights, and it can therefore spend more cycles on further optimizing the good weights.

</comment><comment><USER3> Since the article didn't link to the paper:

\- "The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks"

\- [https://arxiv.org/abs/1803.03635](https://arxiv.org/abs/1803.03635)

<comment><USER2> There's actually a link to the paper in the article's right sidebar: [https://openreview.net/forum?id=rJl-b3RcF7](https://openreview.net/forum?id=rJl-b3RcF7) (the reviews here are also an interesting read)

<comment><USER4> Thanks for that, nothing has changed in academic review!

Reviewer 2, 3: 9/10 great.

Reviewer 1: "The paper seems a bit preliminary and unfinished."

Authors go on to win best paper with their submission.

<comment><USER5> Man, after getting beaten up in some recent reviews, I needed to see that.

</comment></comment></comment></comment><comment><USER6> Google recently created MorphNet which can take a large network and do the pruning stage automatically. [https://ai.googleblog.com/2019/04/morphnet- towards-faster-an...](https://ai.googleblog.com/2019/04/morphnet-towards- faster-and-smaller.html)

</comment><comment><USER7> This is neat, but one important point is that networks NEED to be significantly over parameterized for SGD like methods to find the minima. I know that's slightly tangential.

Another interesting point is that NNs can be thought about as preforming coordinate transformations on the data manifold, which means these sub nets are potentially approximations to those transformations, potentially up to some scaling factor.

I'm excited to see where this goes

<comment><USER8> >networks NEED to be significantly over parameterized for SGD like methods to find the minima

Why?

<comment><USER9> I've only seen a small amount on this but the theoretical analysis I've seen used this as an assumption

There may be some in here

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

</comment></comment></comment><comment><USER10> I have to add this: [https://openai.com/blog/block-sparse-gpu- kernels/](https://openai.com/blog/block-sparse-gpu-kernels/)

They _train_ block-sparse neural networks, where sparseness learned during training.

<comment><USER11> This is an interesting idea that may be combined with the article suggested idea.

In the article, if I understood correctly, what they propose is train your network once, remove the x% of smaller absolute magnitude weights, retrain your network fixing those smaller magnitude weights to 0 starting from the same initial starting point.

The idea behind is that your optimization process the first time is telling you that the solution is near a subspace where the weights are 0 but it can't really converge to it. So you project to this subspace by enforcing the weights to 0. Then you retrain again and the search will be easier because the space is smaller, but because you are starting from the same starting point you are kind of guaranteed that you will be able to reach the same optimum but projected.

The problem of the sparsity in the article is that while some weights are 0, they are 0 through masking, therefore you are still doing the computations, and you don't really benefit from the sparsity. If you have enough 0, you can benefit from the sparsity by using some sparse representation, but those are typically an order of magnitude slower than the dense representation.

Combining the idea of the article with the idea from OpenAI of block-sparse neural networks which reduce the operations done without suffering too much from the non-locality and indirection of a sparse representation.

After training normally (provided you have enough memory) (eventually with a sparse-block regularization term to help induce block-sparsity) you may try to prune in such a way that the least significant sparse-blocks are pruned, therefore you may expect both the boost in speed, and the better accuracy and convergence properties.

This is a kind of two phase search, first we look for a finer structure, then we restart to find the best weights for this finer structure.

<comment><USER12> Based on what you described, it feels like the MIT paper and the openai paper are essentially the same thing. The only difference is the masking/pruning part, which I think is just an engineering detail.

<comment><USER11> Sorry If I mis-conveyed the ideas. They are quite different.

The openai paper is introducing operations which are a fast middle ground between dense and sparse operations. You still have to specify the sparsity structure you like. (Although often some random sparsity structure work well).

The MIT paper describe one way to choose a sparsity structure and starting point which will work well in the general case.

<comment><USER13> The OpenAI approach is more amenable to an obvious HW implementation with the block sparsity because the blocks are are GEMM operations are implemented in the first place.

There are obviously more available sparse solutions if the block sparsity constraint is relaxed therefore I wouldn't be surprised if the best results come from such a network.

</comment></comment></comment></comment></comment><comment><USER14> I have thought for a while about "brain surgery" for deep neural nets, much like a permanent kind of dropout.

The idea is that you black out a set of neurons/filters and then train for a short while to overcome the performance penalty. To find the "set" of blacked out cells you could use a genetic algorithm or something, gradually increasing the number of masks.

The last step would be rearranging the network such that the not-blacked-out cells are contiguous, but form smaller layers.

And I remember Hinton hinted at replacing multiple layers by one layer (or no layer), or big layers by smaller layers through retraining.

<comment><USER15> And then what would happen? What is the effect of this? Very deep an interesting thoughts.

<comment><USER16> I think mostly faster training time. If you can work out connections that don't matter early in the process you could start ignoring them.

</comment></comment></comment><comment><USER17> We should train another neural network to produce the initial values for the target network. Training data would be the initial values of the sub network along with its loss. Then we have the network generate initial values that are more likely to lead yo useful sub networks.

<comment><USER18> This is essentially the idea behind "meta-learning," or "learning to learn," with the slight difference that most of the meta-learning literature aims to initialize networks that can learn quickly ("few-shot learning"). It has pretty good theoretical grounding but in practice seems to be quite expensive.

<comment><USER17> Lol. I've seen idea after idea, dismissed and misunderstood on Internet forums, from hackernews to reddit.com/r/machine learning. Time after time I see ideas, my own and those of others, that were dismissed, spawning papers by researchers.

Such a toxic atmosphere, I don't know why I bother posting.

I am well aware of what meta learning is. If you think that because the idea above comes under the umbrella of metalearning it isn't an interesting idea, then I don't know what to say to you... and the fact that it's downvoted just goes to show the lack of creativity and intuition exhibited by your average hackernews member.

<comment><USER18> I never implied that it wasn't an interesting idea, and your weird defensiveness suggests to me that there might be a common thread to your getting repeatedly dismissed/downvoted other than misunderstood genius.

</comment></comment></comment></comment><comment><USER19> Recent follow-up work from Uber at ICLR: [https://eng.uber.com/deconstructing- lottery-tickets/](https://eng.uber.com/deconstructing-lottery-tickets/)

</comment><comment><USER20> nature nurture but for neural networks?

</comment><comment><USER21> I never understood the obsessive emphasis on the training of neural networks. Many people see neural networks as objects that you train. But this is just a small thing that you can do with them. Neural networks are, first and foremost, objects that compute. This computation can be tuned by setting some parameters, and one way to set these parameters is by training. But this is not the only way, and it is not necessarily the more interesting one.

<comment><USER22> Well, that's a bit like asking "what's with the obsessive emphasis on programming computers, after all they're just objects that compute?"

Yes, neural networks are objects that compute; there's even this "universal approximator" theorem that says a basic, albeit sufficiently large, neural network can approximate any arbitrary function (from a broad class of functions) to arbitrary precision. However, the theorem says nothing about whether you'll ever actually _find_ the neural network that corresponds to that function. This is what training is for, it allows us to find (the parameters of) the NN that we want to do some computation.

In other words, training is how we program NNs, but in general it can be really hard to arrive at the "program" you're looking for.

<comment><USER21> > Well, that's a bit like asking "what's with the obsessive emphasis on > programming computers, after all they're just objects that compute?"

Indeed! Most of the time computers are computing, not being programmed. Yet most of the time, neural networks are being trained instead of computing.

That was exactly my point.

<comment><USER22> Your point is that training is computationally intensive, but your question is "why do people obsess over training"? Sounds like you've answered your own question, then. It's currently hard to train networks, so people "obsess" over improving the methods (see, for example, the article we're commenting on) so that it doesn't have to take as long.

But also note that what you say is not necessarily true that the NN's spend most of their time training. Maybe you've got to spend a week on a huge GPU cluster training some autonomous-driving algorithm, but then it runs in "compute" mode for hours a day in tens of thousands of cars.</comment></comment></comment></comment>


Paul Graham's kind of dirty (On Unicode support as an exercise for the programmer) - <AUTHOR> http://plasmasturm.org/log/491/ <comment><USER2> I think the author fails to realize that Arc is open source and free. You want Unicode support? Write it in. PG didn't say that it should be in a library, he just said that he didn't want to work on it. Which is a good reason to open source it.

I forget where I read it, but an article claiming the superiority of open source software said something like

 _Who is most likely to do a good job on Unicode support?

1\. An international who needs it

2\. A hacker who is interested in that sort of thing

3\. A corporate worker who is told he has to support it_

The answer, of course, was basically "anything but 3," and I had to agree. I think the same logic applies to this situation. Do you expect PG to do a good job on Unicode when he could care less about it and feels like it's a waste of time? Of course not. The whole point of open sourcing it is to allow someone who _would_ be interested in such an undertaking to go about doing it.

Also, when he said Arc isn't the kind of language for people who would be upset with lack of Unicode support, I mentally appended _in a development release of a beta language_ to the end of that sentence. If PG isn't even guaranteeing a consistent language to build on, how can anyone be upset about lack of Unicode support? Clearly, people are missing the point of the beta release cycle and open source in general.

<comment><USER3> "You want Unicode support? Write it in."

Sorry but that's like selling someone a car and saying "Oh you want the chassis to be made of metal instead of wood? Well you can change that can't you."

I disagree. If you're building something from the start, you decide on a good character set, and use it. Namely Unicode. It's a lot easier to do that than to try and fix things afterwards.

Look at php. Dealing with Unicode in php is a major hassle because it wasn't designed from the ground up to support Unicode. It was added in later as a library. So now you have special functions for dealing with unicode, and all the hassle and verbosity that entails in your code.

In Javascript or Java however, Unicode just works universally.

I'd say choosing a character set is one of the first things you should do as a language designer - that's why I was surprised with the lack of support for anything but ascii which just doesn't cut it any more for real world applications.

Saying that adding Unicode is a couple of days work for anyone interested sounds like a recipe for absolute disaster - see how php turned out.

<comment><USER4> _Sorry but that's like selling someone a car and saying "Oh you want the chassis to be made of metal instead of wood? Well you can change that can't you."_

Except pg isn't selling anything, he's just letting you see and use what's ostensibly made his life easier.

I'd modify your simile to something more accurate, but modifying similes is a black hole.

<comment><USER3> OK, he's _giving_ us a car with a wooden chassis. Might be a great car, fun to drive. But it will probably need the chassis replacing unless you want to crash.

<comment><USER4> It's more like he gave you a scalpel, a tool that's great - even indispensible - for a specific set of cutting tasks, but that might leave you disappointed if you chose to use it for cutting down a tree.

Except that scalpels aren't really all that extensible.

See, I told you it was a black hole...

</comment></comment></comment></comment></comment><comment><USER5> I agree with the author, Unicode seems like it should be right in the core of a language, but I'm incredibly sympathetic to not wanting to spend even a day on the issue.

I also am incredibly grateful for any open source released (I feel like it shifts political power to individual programmers vs. corporations).

All that being said, it sure would be nice for Paul to spend that day or two of effort that would seemingly save thousands of community man hours. But I can't really blame him if he doesn't want to.

</comment><comment><USER6> What's with all this negativity... it's not like you paid for the code and he owes you something. It's like someone builds a new type of car and gives it to you, and you say it totally sucks because there isn't any paint on it.

<comment><USER7> I dunno, we're just expecting that this awesome new language he's promoting have basic functionality. Crazy, huh?

</comment></comment><comment><USER8> boring. don't read.

<comment><USER8> <3</comment></comment>


Visualize various stats about your css - <AUTHOR> https://github.com/mrmrs/cssstats

<comment><AUTHOR> Great resource to do a quick check if your CSS smells.

I've used it to check if a codecanyon / themeforest template is clean enough to start a deeper investigation.

Nice.</comment>


Get early access to the Rapportive UI when composing emails - <AUTHOR> http://rapportive.com/compose <comment><USER2> I've been using Rapportive for a while now, and it's wonderful. I have some attention issues, and often I forget who I'm emailing (this isn't a troll) - especially when it's not someone I usually communicate with. Having the profile right next to my email gives me a quick refresher, and brings me back into focus. Having the LinkedIn right on the side also lets me add people and browse quickly, without having to open a new window myself. The only annoying part, is when I'm following up an email, and I hit reply - it shows me, instead of my contact.

I wonder how they plan to monetize this.

<comment><USER3> You can change who Rapportive shows by typing email addresses in the To: field and cousins, and by hovering over email addresses or names in subject lines.

Maybe we should tune things so we show your own profile less.

Monetisation will be done by freemium features, and will happen soon (those features are entering ß now). What you currently use will remain free :)

Edit: I just reread your comment and realised I misunderstood. To stop your own emails showing up when you reply, please claim your email addresses: <http://blog.rapportive.com/claim-your-email-addresses> — does that help?

<comment><USER2> Hey, thanks for the response. If you want some feedback:

Yeah, I think you should add something to not show our own profiles (I never forget who I am!). This actually reminds me of my friend's dumbphone. When he goes into his Sent Mail folder, and selects a message, and tries to add a contact (the person he send the message to), the phone tries to add his own number. While it makes sense logically, in the context it's not very useful.

Two other issues I have with it are on a design level for the new Compose profiles. At least in the classic theme, now the white Rapportive appears over the blue gmail send. I'm not sure how much of that you can manipulate, but shifting the blue over to the left (kind of like what's done with reply) would be preferable.

Also, on Reply, there's an alignment problem with the _Share Rapportive_ link up top - it's slightly shifted to the right, so that it doesn't seem to align.

Lastly, I found a minor bug. Your _Share Rapportive_ button appears fine, but I'm guessing you got rid of it (or Gmail automatically does) if the window is minimized small enough. The problem is, that it doesn't re-appear, even if you change screens. I haven't done any heavy testing on this, but the first two brief tests seem to give these results.

Sorry if I'm wasting your time - hopefully this helps. Send me an email if you're not sure what I mean and I'll give you some screenshots when I get home.

Edit: Claiming makes sense. I forget I send emails from my Gmail as more than one address. Though, can you use the emails to check via LinkedIn or something, to see if the sent user email corresponds to the same account as the original email, and if so, display the sender 1 up? Not sure how efficient that is - just brainstorming solutions since I doubt the majority of people will think to claim their emails.

<comment><USER3> "Also, on Reply, there's an alignment problem with the Share Rapportive link up top"

Can you please send me a screenshot of this? firstname.lastname@example.com

"Though, can you use the emails to check via LinkedIn or something"

Yes, we can make very intelligent guesses on what your emails are, but we haven't yet got round to doing it :)

ps. if you haven't seen it already, do checkout <http://rapportive.com/feedback> — it's where a lot of brainstorming goes down

<comment><USER2> Sent. Good luck!

</comment></comment></comment></comment></comment><comment><USER4> Rapportive is so great, I want to give them some money.

</comment><comment><USER5> Let's see if Rapportive can get all this type of info into Contacts. That's the next place where this would make the most sense.

<comment><USER3> Do you mean an UI level integration, or actually putting the data in contacts?

<comment><USER5> I would say the data in contacts. Imagine if Google Contacts was robust enough with Rapportive technology to be the one place to >>view<< all relevant info on a contact (email, FB, Twitter, etc.) rather than have to wait for context (to read or write an email).

</comment></comment></comment><comment><USER6> Interesting idea, but the following warning scares the hell out of me: "It can access: Your data on mail.google.com".

<comment><USER3> Privacy is something we thought long and hard about; we go to great lengths to ensure we're doing the right thing.

Please do checkout <http://rapportive.com/privacy>

Does that help address what was scaring you?

<comment><USER6> In fact, it does greatly help. You are making a strong privacy statement. Just to explain my initial concern, the warning implied that the extension can read my private mails and that is what triggered my bad feelings.

BTW. It would be great, if Chrome extensions would allow to add a link to the privacy statement which is then displayed in the context of the warning.

</comment></comment></comment><comment><USER7> I personally don't like it, because it really does not give any information about the sender. Just my opinion.</comment>


EU Court: Administrator of Facebook fan page is jointly responsible for privacy [pdf] - <AUTHOR> https://curia.europa.eu/jcms/upload/docs/application/pdf/2018-06/cp180081en.pdf <comment><AUTHOR> Sorry about the shortened title, I did my best. The original is: "The administrator of a fan page on Facebook is jointly responsible with Facebook for the processing of data of visitors to the page"

The link is to the press release, the actual judgment is available at [http://curia.europa.eu/juris/documents.jsf?num=C-210/16](http://curia.europa.eu/juris/documents.jsf?num=C-210/16) (hover over the first document icon and click the language of your choice)

This is on the basis of the 1995 Data Protection Directive which has been repealed with the entry into force of GDPR on May 25. I'd be interested in understanding what this means. Will the German lower court decide based on this outdated Directive? Or doesn't it matter because GDPR is equivalent in this regard?

<comment><USER2> From the reports I've seen, GDPR is equivalent in the relevant parts, only the last bit (who the DPA can directly investigate) has changed, which isn't central to the case.

What I found interesting is that they reference the analytics visible to the page administrator: Does that mean that turning them off makes a material difference? Or is it just an additional thing the page owner has to take into consideration?

<comment><AUTHOR> > What I found interesting is that they reference the analytics visible to the > page administrator: Does that mean that turning them off makes a material > difference?

I also read that as saying that if an admin could opt out of analytics, everything might be fine.

Though in the actual final ruling part they just say that "the concept of 'controller' within the meaning of that provision encompasses the administrator of a fan page hosted on a social network" without any further qualification.

<comment><USER2> Here's two articles I saw today about it:

[https://verfassungsblog.de/who-controls-a-facebook- page/](https://verfassungsblog.de/who-controls-a-facebook-page/) (english)

[https://www.cr-online.de/blog/2018/06/06/fanpage-urteil- des-...](https://www.cr-online.de/blog/2018/06/06/fanpage-urteil-des- eugh-10-fragen-10-antworten-good-bye-auftragsverarbeitung-welcome-gemeinsame- verantwortlichkeit/) (German)</comment></comment></comment></comment>


Hacking the PS4, part 3: Kernel exploitation - <AUTHOR> http://cturt.github.io/ps4-3.html <comment><USER2> I'm not at all familiar with the PS4, but I love reading these articles!

A thought occured that with this access, it is possible to encrypt corrupted save files which might lead to further exploitation.

<comment><USER3> It is possible to create save files. However they will be tied to a specific console/account. And creating them requires a kernel exploit while a vulnerable game only gives you a userland exploit. It won't be the most practical even if you find a vulnerable game.

<comment><USER4> I seem to remember the PSP making use of kernel exploits from vulnerable games, unless I'm thinking of save file exploits. I'm guessing there aren't any similar vulnerabilities with the PS4?

<comment><USER3> First, there is no "kernel exploits from vulnerable games" as games are applications that run in the OS (FreeBSD based). What happened with the PSP is that game exploits can be used to run code that trigger kernel exploits (which have to be found separately and are a lot harder to find). In terms of game exploits on the PS4; there is no doubt that such vulnerabilities exist, but you're limited to ROP (no JIT in games) in userland.</comment></comment></comment></comment>


Exploring Perl web frameworks - <AUTHOR> http://blog.newint.org/tech/2009/05/04/exploring-perl-web-frameworks/

<comment><USER2> catalyst is cool, but this article is content-free.</comment>


Why I Buy Bad Domain Names (and You Do Too) - <AUTHOR> https://medium.com/@jasoncomely/why-i-buy-bad-domain-names-e28a6172ac8f <comment><USER2> Nice way to get his domain names mentioned on another site, even though they aren't links.</comment>


Ask HN: How do you manage your documents? - <AUTHOR> How do you manage your (personal) documents?
If you do it digitally: Do you use special software? A proper DMS? Do you do OCR? Do you index the contents? Do you tag and categorize the documents? Automatically? Do you keep them on your computer? On your NAS? Home Server? What kind of documents do you actually keep? Do you also scan those that you'll still need as an original? How do you scan?
Thanks <comment><USER2> A scanner called Doxie. Includes ocr & pdf creation.

Store on combination of local (Mac), Dropbox & Google Docs, all of which search in document.

Also have a rudimentary folder structure.

</comment><comment><USER3> Emacs, org-mode and git. I use the filesystem as hierarchial storage.</comment>


Django 2.0 released - <AUTHOR> https://docs.djangoproject.com/en/2.0/releases/2.0/ <comment><USER6> A good time to remind that Django has met all milestone, bug fix, and security fix release targets since the introduction of the Django Fellow which can only be funded with donations.

[https://www.djangoproject.com/fundraising/](https://www.djangoproject.com/fundraising/)

I'd like to encourage everyone that uses Django in a commercial setting to speak to their company about donating to the DSF to continue getting timely bug, security, and feature releases.

<comment><USER7> Thanks for the reminder. Django made me like web development and find a job that I really love today. $25 given, it's nothing for this.

</comment></comment><comment><USER8> Respect to the Django team that even after 12 years they have only one major version shift (which seems to only because of dropping support for Python 2) and the backwards incompatible changes are minimal.

<comment><USER9> There have been lots of breaking changes along the way. Django is pretty good at giving developers a heads up of what is deprecated and slated for removal, but there have been lots of growing pains in the 1.x release cycles.

<comment><USER10> I really dread upgrading Django. We have a codebase that has been with us since the 1.3 days and each time there's an upgrade, someone on the team sets about one month aside to deal with all of the breakage. You could say that this is our fault for "doing it wrong" but we just wanna get stuff done. Sometimes the only way to do it that we could figure out was by doing something that Django later decided we shouldn't have done.

Going to Python 3 is going to be the biggest annoyance yet.

<comment><USER11> That's surprising to me as I have updated a large production Django code-base on my own for every version from 1.5 to 2.0 and it has never taken me more than a day, with an equal or lesser (typically lesser) amount of time dedicated to deprecations when I updated to the previous version. Any blockers past that point have always been due to slow-to-update third-party libraries.

The Python 3 update took longer and had a longer legacy of surprise breakages, but I don't ding Django for following the intended life cycle of Python.

<comment><USER10> > That's surprising to me

I'm surprised you're surprised. Have you seen the size of the breaking changes documented with each release notes? We typically hit about 10 of these changes per release, sprinkled all over our code.

[https://docs.djangoproject.com/en/2.0/releases/1.10/#backwar...](https://docs.djangoproject.com/en/2.0/releases/1.10/#backwards- incompatible-changes-in-1-10)

[https://docs.djangoproject.com/en/2.0/releases/1.9/#backward...](https://docs.djangoproject.com/en/2.0/releases/1.9/#backwards- incompatible-changes-in-1-9)

[https://docs.djangoproject.com/en/2.0/releases/1.8/#backward...](https://docs.djangoproject.com/en/2.0/releases/1.8/#backwards- incompatible-changes-in-1-8)

And those are just the intentional breaks. We find a lot of unintentional breakage too, and sometimes we accidentally use undocumented stuff which of course also isn't documented when it breaks. Each Django release has added an average of 32 commits per release for the past four releases just to deal with the version upgrade.

<comment><USER12> Some things to do that could help everyone (this is what I do):

If documented stuff changes, Please report it (though that likely means testing against the alpha / beta versions (or just master). Keep Django honest.

If you find yourself using undocumented features, consider documenting them; that way they're held to backward compatibility.

Also, follow the development of Django and comment on the intentional breaks if you think they're not worth changing.

Disclaimer: Core dev now, though I had this attitude before that too.

<comment><USER10> > Also, follow the development of Django and comment on the intentional breaks > if you think they're not worth changing.

I really don't want to be sucked into Django's drama:

[https://us.pycon.org/2015/schedule/presentation/381/](https://us.pycon.org/2015/schedule/presentation/381/)

I've encountered very little sympathy from Django developers. Everyone seems to have just accepted that it breaks often and it's totally my fault for not keeping up with the breaking changes. Everyone seems to think that Django breaking compatibility all over the place is good, proper, acceptable, and inevitable. Nothing is sacred, anything can break, and make sure you go through that list each release to see what you have to change in your code.

This makes me sad and frustrated.

[http://stevelosh.com/blog/2012/04/volatile- software/](http://stevelosh.com/blog/2012/04/volatile-software/)

<comment><USER12> I hear you, and I've heard others say the same.

I think it would help if you bring it up on the Django-developers mailing list, if you haven't yet. I think that would help raise awareness about the issue, and I hope it would lead to some policy changes.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> This is probably your best bet if you're just going to build a nice CRUD frontend for a business app, possibly with an API (via DRF). I am doing this right now on a project as it's the shortest path to a win. The API however is written in Java 8 / vertx.

<comment><USER14> I'd posit that a simple crud app would take an order of magnitude less time with Rails. I've been a Django developer since 0.96 and have built dozens of apps with it. After transitioning to Rails, it's hard to justify the use unless you're in an evironment that absolutely must use Python.

<comment><USER15> Python - <USER2>

Ruby - <USER3>

PHP - <USER4>

all nice choices

<comment><USER16> And if you don't mind the learning curve (which will make you a better thinker!), I would add

Elixir - <USER5>

I wish there was a complete Clojure - ???

<comment><USER17> I'd wait for the ecosystem to mature before building a business app with Phoenix. You never know what taken for granted library is missing in Elixir, and it's going to be damn hard to hire a developer experienced with Phoenix. Everyone on your team will be slow and will be making a steady stream of mistakes as they learn the framework

<comment><USER16> I think Phoenix (and Elixir) is mature enough already to use in production. I've made pretty good, bordering on oracle-like :) predictions about directions in technology over more years than I care to think about; so I'm confident that Phoenix is only going to grow in use and positive attention.

It will be the logical successor to Rails. It already is.

That said, I use a good mix of Elixir+Phoenix and old-school cron launched Python utility scripts, and that works nicely. Anything that's difficult (probably because I am still a newb) in Elixir I can easily do out of band with a Python script.

But your point about difficult to hire experienced people is the reason for my reply. This is the mentality that is ruining IT and development. Yes, having someone with hands on experience in all of your tools is nice - a rare luxury in fact. But it's really not necessary. I would be quite happy to have someone that has willingly built something in Rails, Django, and Nodejs with an "Oh I can learn that" attitude. Especially if you come from a modern MVC framework, Phoenix itself is easy. Elixir is the part that requires some real effort, imo.

</comment></comment></comment></comment></comment></comment><comment><USER18> As a beginner/intermediate level myself, I think new routing syntax, which is similar to flask is itself a major feature of the django 2.0. This really simplifies the url routing than the regex(which is lot powerful though). For simple projects of mine, it may well cover 60-80% of my needs, maybe more.

<comment><USER19> Indeed. The somehow clunky syntax for named groups in python re was (in my opinion) a big drawback with old style routing. I hope this new style gains traction.

</comment></comment><comment><USER20> Nice this release will be the final push that tips over the balance towards Python 3. With Django taking the lead I think more projects will drop Python 2 support. Well it sure took a while, but glad the ecosystem is standardizing around 1 language again.

<comment><USER21> Time for Python 4!

<comment><USER22> Guido was imo pretty clear that there won't be backward incompatible changes for python 4, if at all

[https://twitter.com/gvanrossum/status/501172370690699265?lan...](https://twitter.com/gvanrossum/status/501172370690699265?lang=en)

</comment></comment></comment><comment><USER23> Notable feature: no Python 2 support!

<comment><USER24> yes and it is indeed a feature. death to python2. I would pay money to that.

<comment><USER25> just yesterday someone at cuny sps told me a professor is teaching them flask using python 2.6...

sigh

<comment><USER26> It'd likely be better to use Python 3, but the actual differences in syntax are pretty small, it's big Python 2 code bases that present a problem, not the switch over to using Python 3 syntax and names for new code.

<comment> rkuykendall-com Yeah, for the types of programs intro students write, it's basically "Okay, now add parens to your prints." And if they're running Python 2.7 they might be doing that already.

</comment></comment></comment></comment></comment><comment><USER7> No Python 2 support, good thing. I understood that the Django codebase is lighter thanks to this, but I'm asking myself if it has any implication for the developper? (I was already using Python 3.6)

My guess: \- The Django codesource is easier to read \- Maybe error messages are cleaner? (just a supposition.. I don't know)

<comment><USER12> The documentation is a little cleaner too, with fewer "except on Python 2, it's like this.."

Also, this will eventually allow type hinting in the future.

</comment></comment><comment><USER27> Does anybody know if there is better support for WebSockets? If I remember right, with Django(1) it is not easy to do it. And is it possible to use GraphQL?

<comment><USER28> With Django Channels there is great support, with some quite interesting things you can do. GraphQL can be handled by a third party package, there are a few out there at the moment.

<comment><USER29> Seconding this. Channels was actually shockingly easy to implement, maintain, and expand, even at a small startup with a fairly small and relatively inexperienced team.

</comment></comment></comment><comment><USER30> Congrats to the team, this has been a long time coming. No Python2 support which is unfortunate, my Python3 migration strategy was to move to C# for my main language instead. No regrets, I like it a lot. I describe it as industrial strength. Good IDE and granted me a larger job market with Xamarin for iOS coverage.

For web stuff, I'll probably be using a C# framework, or Wordpress with one of the JITs. Still, a lot of hard work has gone into Django 2.0 and I'll be keeping tabs on it, rooting for the team. It's not likely but not barring the idea of using Django again.

<comment><USER31> Why would you not want to use Python 3?

<comment><USER6> I think choosing to migrate to a completely different language rather than rewriting in python 3 is a totally valid strategy.

Maybe they've switched to c# lately and are using lack of py2 as a trigger to rewrite. Maybe going after the benefits of a compiled language. Maybe just wanting to use c# because it's one of the best languages out there.

There are some python apps out there I've contributed to that I'd rather rewrite in a static type lang rather than migrate to py3. Others I'd move to py3 no problem.

</comment></comment></comment><comment><USER32> I really wish they merge Django and DRF.

<comment><USER33> The value of the ecosystem is that each component does its part and each other component that has interaction with that component reaps the rewards. This leads to a natural evolution of components in the ecosystem (for instance, DRF evolved out of the need for better REST support, since projects like Tasty Pie were lacking thing that the rest of the ecosystem desired).

The idea that anything of value has to be nationalized and assimilated by the framework is a misguided effort to prevent chaos in the ecosystem, but the end result of trying to maintain order in an emergent ecosystem is usually disaster.

<comment><USER34> OT but gonational you asked a couple weeks back to tell my story. I finally got around to doing it: [https://news.ycombinator.com/item?id=15762821](https://news.ycombinator.com/item?id=15762821)

</comment></comment></comment><comment><USER35> The new URL routing syntax is one of the most welcome changes for me (i mostly work with Flask). I just couldn't get myself to work with regex.

</comment><comment><USER36> Wow, I remember being curious about Django a year ago. Now it's at 2.0 ! It already felt overwhelming then, but now even more so.

I can't wait to check it out more.

On a sidenote, I feel bad for the developers who have to migrate to Django 2.0. Hopefully it's not too much work, I know a codebase review and full update can't be fun with the business managers and customers at your throat.

<comment><USER37> The biggest challenge with upgrading Django is making sure all your Django- related dependencies have fixed things up.

Django only has one paid full-time maintainer to my knowledge (Tim Graham). So given the team's limited peoplepower Only the last two releases (+LTS releases) get security updates. This means that Django 1.10 (released 18 months ago) won't get updates, so if you use any new features you're on the upgrade treadmill.

Django itself is very good about offering clean upgrade paths. Very vocal about breakage, usually will not introduce breakage unless there's some good reasons to. Unfortunately third party libraries often take a while to update, so you can quickly find yourself overwhelmed with figuring out which deps are safe to upgrade and which aren't.

I try to be a good OSS citizen and send in compatibility fixes for libraries that fall behind, but maintenance can be hard when you're only really using about 25% of a library.

I wouldn't be comfortable with sticking to older Django LTS releases (there was still a lot of obvious improving to be had in the ORM and migrations in particular), but I think Django 2.0 is in an amazingly good place now. Sticking to this for a couple years would be fine for a lot of people.

<comment><USER7> I can't agree more with you. That's the one and only reason I'll stick to the 1.11 version.

Garanty of compatibility between Django and ALL my external packages is a lot more valuable that a responsive admin panel and a new syntax for urls.

I would love "important" (yeah it's opiniated) packages move to the official Django repo (like Channels), to help reduce this risk when migrating. It's actually surprising how often I can't find the compatibility information of a Django package.

<comment><USER37> I've had decent luck for the most part, but it only takes one package.

I would love to see someone start on a combination of `pyup` and some "maintenance fee" for projects that are found in ones `requirements.txt`.

For a monthly fee you can make sure that at least someone is checking to see that your Django dependencies are being kept up to date as time moves forward. The pitch being "get an extra maintenance developer for a fraction of the cost".

</comment></comment></comment></comment><comment><USER38> At this point in time for me, having worked with a couple of Python web frameworks, I would recommend Django hands-down every time.

For me it comes down to one simple thing though: Migrations

Django has, far and away, the best migrations system I've used in a Python framework (although I won't claim to have used them all).

Compared to Alembic it's vastly superior also beats most jerry-rigged solutions.

</comment><comment><USER39> Really nice! Should force more people into python3 as a side effect which is great since python2 is getting close to its EOL.

Claps for the changelog, it's always a joy to read, I haven't really used Django in some years but could easily read and see the changes. The new URL formatting is a very good add-on, was always the thing that annoyed me the most.

</comment><comment><USER40> * updates requirements.txt from django==2.0a1 to 2.0 *

Great work! I love Django and look forward to seeing how it continues to improve.

</comment><comment><USER41> Nice! Coincidentally I had my very first Django experience two weeks ago (and blogged about it [0]). It struck me as a very solid and clean and lean framework. But I do think there is somewhat of an entry barrier: you need to understand quite a few concepts, which if you do, would open up many more options besides Django. So it's not unique in that regard. However, I had trouble finding QUICK CRUD app solution i.e. here is my database, please make some forms for me. And Django: with the builtin admin/user mgmt, did exactly that.

[0] [https://j11g.com/index.php/2017/11/23/django- in-10-minutes/](https://j11g.com/index.php/2017/11/23/django-in-10-minutes/)

</comment><comment><USER42> Excellent, Django team made a really great job.

</comment><comment><USER43> This is great news! The Django project is such a wonderful project, I've enjoyed working with it over the years.

</comment><comment><USER44> I wish they'd skip-jumped their version to "Django 3.0". That would have allowed a simpler message about the Python dependency: "Django 3.x requires Python 3.x".

<comment><USER12> Django 3.0 will be out soon enough (Dec 2019). There's going to be a major version bump every two years.

<comment><USER44> Alas, that doesn't help for presenting a simple version story to low-attention beginners:

"Django 3.x requires Python 3.x"

"Ah, OK, so to use Python 2.x I should go back to Django 2.x?"

"No, Django 2.x requires Python 3.x. If you want to use Python 2.7 you should use Django 1.x."

</comment></comment></comment><comment><USER45> There's a huge amount of talk about Django vs. Other Frameworks here, which is not surprising. Bottle and Flask come up. Sadly, Pyramid comes up. Rails comes up.

I think the real crux of the discussion around which framework is best is really about the relationship between the framework and the language it's based on.

Let's separate this from the Python world for a second and talk about the relationship between Objective-C and iOS. Knowing the former doesn't in any way imply that you know the latter. There's an incredibly host of things you have to know to write an iOS app in addition to knowing Obj-C. XCode, UIKit, all the different xKits there are. Which are basically magic, and the APIs you're referencing are not necessarily written in Obj-C.

It is even possible to be a competent iOS developer and not really know anything _but_ the framework. No real understanding of Obj-C or Swift is required, let alone any guiding principle of how programming languages work or how computers work, or how computer science works.

That's not a dig against people who went to code camp or took an online course or just read a book. I'm someone who learned about stuff mainly by reading books. And that worked out fine for the first few years of my career. But there's a legitimate problem that you run into (I know first hand) about what you do when the framework breaks down or you encounter something unexpected.

Anyone can learn a framework relatively quickly. What do you do when the framework fails for some reason?

As someone who learned SQL and Python from the ground up--language-first--I love that Django exists. It's damn impressive, and only ever gets better. But I like Flask + SQLAlchemy better, and I like Pyramid + Stored Procedures best.

I would probably have a different attitude if I started with Frameworks first. And again, that's not a criticism. It's just a different approach. One way to get things done is to learn the fastest way to get things done, and in many cases that's quite possibly Django or Rails.

But both of those make me a little nuts when I dig into the internals. Magic isn't bad by definition. Good magic is when you can invoke a class you don't have to understand to use well. Bad magic is when you have to understand the internals of a class to work around it when it fails to meet your needs.

But I think we need some context about this when we talk about which framework reigns supreme. If you're taking a class and learning to write web apps for the first time with no other experience at all, Django is the bomb. You can spend an entire career as a Django developer and do well.

Just like you can spend an entire career as an iOS developer writing apps, do well, and never actually learn anything about programming. I think this is a wonderful development in our world of programming because it brings so much economic opportunity to such a large group of people who wouldn't otherwise have access to it.

I think it's safe to say that Django is creating jobs for people who wouldn't otherwise have them, and that's a good thing. My 98-year-old father and WW2 vet is starting to help me with a Django app just as a thing we can do together. And I don't have to teach him anything at all about anything except that framework.

It's a brilliant and beautiful framework, and I love it. But to me, it's a little bit more like iOS or RoR than it is a framework that's really ideal for people who started with bottom-up rather than top-down development.

I know what I need in a new project, and it isn't going to be all of that. And I know how to quickly integrate the boilerplate things I will need. That's what repos and plugins are for.

The short version of my response to everyone talking about different frameworks is this: we need them all. Bottle and Flask are great; Pyramid is great; Django is great.

What you are using them for is an important consideration, as is who you plan to have working on them.

</comment><comment><USER46> Serious question: is the famous bug of correctly annotating multiple counts fixed now?

<comment><USER47> Huh, I'm a big Django user but not heard of this. Link? :)

<comment><USER48> Me either

I am guessing it is one of the points where the ORM breaks down.. which the answer is "use rawSQL"</comment></comment></comment>


Ask HN: Is there an app that does the opposite of a dictionary? - <AUTHOR>

Type in a definition or a description and get a word back. I have needed this app for so long and I assume others do to. This surely exists or am I mistaken? <comment><USER2> <http://www.onelook.com/reverse-dictionary.shtml>

edit: a google search for 'reverse dictionary' turns up a whole bunch of them:

<http://www.google.com/search?q=reverse+dictionary>

<comment><USER3> Onelook.com is awesome -- and you just showed me it's even awesomer than I thought. Thanks for that.

</comment></comment><comment><USER4> A thesaurus does a certain amount of this already, doesn't it?</comment>


Five new undisclosed Xen vulnerabilities - <AUTHOR> http://xenbits.xen.org/xsa/

<comment><USER2> AWS have posted an update about related upcoming EC2 maintenance: [https://aws.amazon.com/premiumsupport/maintenance-2015-03/](https://aws.amazon.com/premiumsupport/maintenance-2015-03/)

"We've received a Xen Security Advisory that requires us to update a portion of our Amazon EC2 fleet. Fewer than 10% of EC2 customer instances will need to be rebooted. We've started notifying affected customers when their reboots will take place. These updates must be completed by March 10, 2015 before the underlying issues we are addressing are made public. Following security best practices, the details behind these issues will be withheld until they are made public on March 10."

</comment><comment><USER3> Just received a message from Rackspace cloud regarding theses, it seems like they will have to reboot all instances.

See [https://community.rackspace.com/general/f/53/t/4978](https://community.rackspace.com/general/f/53/t/4978)

<comment><USER4> Yet linode is still silent...

<comment><USER5> realize that there's Xen HVM and Xen PV. there have been significantly more security issues in HVM than there have been in PV.

<comment><USER6> Do we know why HVM/hw-virt has had more security issues than PV/sw-virt?

<comment><USER7> Yes, because it uses QEMU. That means more code, and ultimately more bugs, which means more possible exploits.

</comment></comment></comment></comment></comment><comment><USER8> Xen's hypervisor would seem to be a great place to implement live patching like KSplice/kGraft/Kpatch does for the Linux kernel. Presumably that stuff still works on KVM host machines with live guests.

<comment><USER9> Amazon's security advisory seems to indicate that they have this capability for 90% of EC2 instances (leaving 10% that must be rebooted). [https://aws.amazon.com/premiumsupport/maintenance-2015-03/](https://aws.amazon.com/premiumsupport/maintenance-2015-03/)

<comment><USER10> Not really - to me, it implies that 90% of EC2 instances are not running on a vulnerable version of Xen...

<comment><USER11> FTA:

> While all instance types need to be updated, we have developed the > capability to live-update instances running on newer hardware. The vast > majority of the EC2 fleet will be live-updated, but a portion of instances > (less than 10% of customer EC2 instances) running on older hardware will > require a reboot to complete the update process.

</comment></comment></comment></comment><comment><USER12> Why do the major Xen providers get advance access to the patches while my machines have to sit vulnerable for over a week?

<comment><USER13> _One working week between notification arriving at security@xenproject and the issue of our own advisory to our predisclosure list. We will use this time to gather information and prepare our advisory, including required patches._

 _Two working weeks between issue of our advisory to our predisclosure list and publication._

 _When a discoverer reports a problem to us and requests longer delays than we would consider ideal, we will honour such a request if reasonable. If a discoverer wants an accelerated disclosure compared to what we would prefer, we naturally do not have the power to insist that a discoverer waits for us to be ready and will honour the date specified by the discoverer._

 _Naturally, if a vulnerability is being exploited in the wild we will make immediately public release of the advisory and patch(es) and expect others to do likewise._

This is an extraordinarily aggressive (in a good way) and transparent process. Big commercial vendors routinely sit on vulnerabilities for months.

</comment></comment><comment><USER14> At the 31c3 somebody had shown or told the audience about an issue in the Xen hypervisor that allowed someone to break into the host from the guest.

<comment><USER15> I was told it was a series of bugs that made it possible.

</comment></comment><comment><USER16> This is why SEL4 is awesome. [http://ssrg.nicta.com.au/projects/seL4/](http://ssrg.nicta.com.au/projects/seL4/)

First kernel with certain security guarantees formally proven; now open source. It can be used as a hypervisor which seems like its most obvious first use case. At least until there is enough middle-ware to build full systems directly with it.

<comment><USER17> It is indeed awesome, but from a practical perspective it doesn't even compare with Xen.

Hardware support is up to you. I think you can boot it on x86, but that's just the microkernel -- you have to add all the hardware support. I don't think seL4 is meant to run on servers either.

</comment></comment><comment><USER18> Quite a few use after free there.

</comment><comment><USER19> AWS uses xen too, right?

<comment><USER20> yes part of the reason I moved away from AWS years ago. Now it doesn't even matter since I am deploying to Docker anyways.

<comment><USER21> Good thing the host you run Docker on never needs to be patched or rebooted I guess?

<comment><USER22> Yes, docker is immune to vulnerabilities because containers.

<comment><USER23> If the kernel you are running on is vulnerable, it can be attacked and the attacker can circumvent any container isolation.

If the hypervisor (Xen!) running underneath your container-Linux is vulnerable, the attacker can get access to your virtualized OS and circumvent any container isolation.

<comment><USER24> your sarcasm detector may need recalibration.

</comment></comment></comment></comment></comment></comment><comment><USER25> #2 will blow your mind.</comment>


How Google Can Beat Facebook Without Google Plus - <AUTHOR> http://www.theatlantic.com/technology/archive/2012/05/how-google-can-beat-facebook-without-google-plus/257480/

<comment><USER2> They should beat Facebook by doing the opposite of Google+. Give me a place I can go and hide from people, where my private things aren't _shared_ , where my bookmarks and personal information is _secure_.

Let Facebook do their thing and like the dozens of ghost towns before them they will peak and bust in time. People will always want search, they will always want privacy, and they will always want a reliable, neutral email address.

People don't care who they use to get publicity, to air their dirty laundry, to garner fawning praise and gather gossip. They do care deeply about who they trust with their guilty pleasures and darkest secrets, though.

<comment><USER3> Social network for the antisocial?

I don't think that would work.

<comment><USER2> An anti-social network.

Google should be like a bank. Does your bank let other people "Friend" you and "Like" your transactions? Would you even use that kind of bank if they were stupid enough to try?</comment></comment></comment>


What wrapping rope around the Earth reveals about the limits of human intuition - <AUTHOR> https://aeon.co/videos/what-wrapping-a-rope-around-the-earth-reveals-about-the-limits-of-human-intuition <comment><USER3> So, my intuition was off, like the article describes. The article doesn't mention it, but the rope would be nearly 6 inches off the ground. After I did the math, this makes trivial sense, and I feel rather moronic for both knowing the equations and not intuiting it. π is the ratio between circumference and diameter. The planet is a red herring.

If you're still not seeing it, I'll try to explain:

Let's say the circumference of the earth in yards, c, is 43,825,760:

      >>> c = 43_825_760

Remember C = πd, so the diameter of the earth is d = C/π:

      >>> import math
      >>> d = c / math.pi

Add 1 to c (our 1 yard); this is the circumference of the rope plus slack, then divide by π to get the diameter of the rope. Subtract earth's diameter above.

      >>> ((c+1) / math.pi) - <USER2>
      0.3183098863810301  # yards. ~11.4 inches

Remember that this is the change in _diameter_. From the perspective of a person looking at this rope, you'll only see half of that (the other half is on the other side of the earth), so it's really only ~5.7 inches (The "nearly 6 inches" above).

Here's the thing that I missed thinking this through. That 0.318 number? If we take the "1 yard" we added in slack (circumference) and we make a ratio between it and the change in diameter (0.318) — the ratio between circumference and diameter is called π. The math:

      >>> 1/0.3183098863810301
      3.1415926516431183

Adding 1 yard slack will make that much difference on _any_ planet. You could be on Jupiter, or the Sun, and this would work.

</comment><comment><USER4> A different way to think about this is if you pulled an inelastic chain tight to the earth, and closed the loop you would have the starting condition. Then, standing where you are you cut the chain, grabbed an extra yard of the chain and spliced it to the touching ends of the starting chain lying on the ground, laying that extra yard folded perpendicular to the starting chain wrapped around the earth. That extra chain added is now sticking out half a yard from the starting chain. When you think about it that way, and I ask you "would that extra yard make a difference?", where does your intuition lead you? With that visual, I would say, that is a ton of slack, I could loop it around my body. I think this is really more about how you frame the question than some flaw in intuition, although I'm not trying to say humans have flaws with our intuition.

</comment><comment><USER5> Pretty clever.

My instinctual reaction was to say, well, no, it's trivial, of course not, it's a tiny length compared to the Earth's size.

But mathematically, well, c = 2πr, right? It's another 15cm or so on the radius, if it were perfectly rigid.

In practice though it'd flop down (perpendicular to the plane of the circle) and if that were fairly well distributed I'd assume the 15cm wouldn't be noticeable, and friction+gravity would make it difficult to pull up?

</comment><comment><USER6> My brain went the other direction, but my intuition still went to a correct answer. A rope wrapped around the Equator, with the exact length required to be around it, would rest on the ground and be tight. Adding an extra yard would make it loose. Assuming it was frictionless and completely inelastic, anyone could pull it and amass a yard length of length of the rope at their location, and that yard could be distributed to any point along the Equator, which would be noticeable.

<comment><USER7> No your intuition is still wrong. It would be almost 6 inches off the floor _all_ the way round the earth.

<comment><USER6> Why would it not lay on the ground with some slack? There is not enough structure in a normal rope to hold one end of it horizontally, 6 inches off the ground, and have the rest extend out horizontally, 6 inches off the ground as well. I understand that gravity would be pulling equally on all portions of it, but would not some variation in the material or surrounding air cause it to crumple at one point (or shear, given the weight), or just be compressed until it was laying on the ground?

What is it about being a loop that protects it from gravitational induced motion?</comment></comment></comment>


JQuery and General Javascript Tips to Improve Your Code - <AUTHOR> http://www.tripwiremagazine.com/tutorials/tutorials/jquery-and-general-javascript-tips-to-improve-your-code.html

<comment><USER2> I didn't know about the data() method - very handy.</comment>


How American Politics Went Insane - <AUTHOR> http://www.theatlantic.com/magazine/archive/2016/07/how-american-politics-went-insane/485570/?single_page=true <comment><USER2> A very interesting argument that numerous changes over the last several decades, intended to make government more transparent and less corrupt, have made it very difficult to get anything done at all, and additionally have increased the likelihood of electing fringe candidates.</comment>


How we improved our conversion rate by 46% - <AUTHOR> http://www.thetaboard.com/blog/how-we-improved-our-conversion-rate-46-in-one-hour?r=400

<comment><USER2> Looking at that Analytics graph, it's pretty obvious the number of signups is around 5 on the high end, and 2 on the low end. So, in this case, increasing a conversion rate by 46% is the difference between 3 sign ups instead of 4.

The sample size is so tiny, it's hard to argue that any language changes truly affected conversions.

I'm also noticing a downward trend on the blue line over the month. Whatever was working earlier in the month stopped.

<comment><USER3> Am I the only one that is getting annoyed by this "Look what an amazing thing we obtained doing a very little thing in a very little time"? Can we stop it please? You make hacking look like a child's game and also I think you all miss the point with your posts, as my parent pointed out. If you really want some traffic to your site, because that's the only thing you are trying to get with this posts, please share some actually interesting article.

<comment><USER2> Oh man, I'm a parent now? I don't know if I'm ready for the responsibility!

</comment></comment></comment><comment><USER4> Regardless of the numbers involved, the product has really started to mature recently. We've been on the nReduce programme with them, and Clay has done some great stuff with Thetaboard. The Bootstrap Tour described in the blog post works well with the product. As Thetaboard starts to get a little more attention, I'm sure the numbers will become statistically significant.

<comment><USER5> Thetaboard is also integrated with edocr.com now and should see traffic filtering from us, as more and more people become aware of the benefits Thetaboard brings</comment></comment>


UberVenture in Chicago: Meet and pitch an investor on an Uber ride - <AUTHOR> http://newsroom.uber.com/chicago/2015/06/chi_venture/

<comment><AUTHOR> This is a great idea, streamlines the meet process with strangers, e.g. compared to meeting and pitching to angels in coffeeshops.</comment>