skysight-inc/HackerNews huggingface dataset:
This post is drool. "Blame the unions" is the new right wing "blame Jews" I guess.

Most airports in the states are reasonably run and don't waste our time, compared to many other European and Asian countries.

Passenger rail doesn't work well in the states given the distances involved, we just aren't that dense. Where it does make sense in the eastern corridor, Amtrak is able to make a profit. Amtrak long haul routes however exist only for those afraid to fly.

Long haul routes in china only make money because they have much more volume than us, and people who don't mind traveling 2 days from shanghai to urumuqi to save on a 6 hour flight.
Yea I understand what you mean. I'm working with a very large non-Indian firm that's opened up a 5000+ person outsourcing office.

The quality of software is absolutely terrible. I'm flabbergasted at what they're doing here. For instance, 50% of the commits in their VCS cannot be compiled. People are actually checking in code that doesn't compile, constantly.

Another thing is, I think the project is truly over-staffed -- the mythical man-moth problem can be seen in all its horrifying glory. To make what's already worse, even worse -- the version control situation is a total mess. No one really understands how to use it. There's no concept of personal branches (as in git) -- instead if you were working on commit X, and an hour later, you want to merge it; and there 5 new commits, this is what (the smart) people do: Create a backup of all the files you changes. Pull the latest code. Merge it using Beyond Compare of some similar tool.

I think the right to do would be that each engineer has a personal branch that they work on, and there should be a person called the maintainer whose sole responsibility is to merge these personal branches to the main branch. A git-style rebase could be done at the end of the day, instead of every time you want to commit, as is the norm here.

I should say the non-Indian parent company, is a extremely successful company (ie. billions of dollars in revenue), despite the terribly-produced software. It is primarily a hardware company though -- owned and operated by a conglomerate.

On top of everything, the people here seem really unhappy. No one seems to be doing programming out of passion -- it's just a job for them, that helps them feed themselves & support their family. I know there's nothing wrong in that. This particular company (hiring) them, also makes sure that their life is hell -- with absurd deadlines, policies, etc. People complain frequently about how terrible things are (people who've been working there for 5 or more years), yet no one seems to do anything about it. Remember, the average wage of an engineer here is around $900/month -- which, I honestly find unbelievable. And I've met a few people working at this wage rate, who are actually skilled.
Debian Unstable? Or Stable? I found the big problem with Debian Stable is that they move way too slow for any modern Linux distro.

I wish that all Linux distros would just go to a rolling release model like Gentoo, and where Ubuntu is going.
Japan is a very compact country. Lovely for anyone in the DC-Boston corridor, doesn't scale to most of the states however. Consider how there isn't much of anything between San Francisco and LA.

Love the Shinkansen though. My preferred method of travel within Japan.
I'm confused, wouldn't this be more of an O(n) instead of an O(log n) issue? If not, then what is the difference? No pointers being used, not even a data structure, just an array of strings. I expected at least a linked list data structure for a phone book. Like sorted in alphabetic order or something.
Hi Kijin, thanks so much for taking the time to comment in such a thorough way. I have converted all your points into github issues with attribution to you, hope that's ok for you. Looking forward to more discussions with you as this approach to a community-driven OpenSource pragmatic ethical guide is becoming more and more refined.
I find both the questions and answers confusing, I think this is a case when a little more "formal" understanding would help before jumping into "intuition" and big picture explanations.

If the question is really what O(log n) means, then the OP should first try to understand the definitions of Big-Oh notation, asymptotic growth rate, etc. At this stage it is premature to talk about running times and algorithms, these are simply statements about functions. Maybe the OP is already past this stage, or at least has a rough understanding of these concepts.

If the question is where does O(log n) arise in practice, then one can explain binary search, binary trees, the representation of a number in a certain base, harmonic series, etc.
Works pretty well in VMware Fusion, Kudos!
Yeah, I have this thing stuck in my head that I can't track down now. It was something similar to HP's CoolTown but less 20th century (no explicit IR, etc.). I can't remember if it was a group at PARC, Lucent, etc. That's why I was interested in the path Valve took.

It appears from interviews with Valve staff and photos of their office that the desks are mobile, with the office built around a flexible arrangement, including freight elevators. In that case, it's extraordinarily easy to identify where someone is, or at least where their desk is, and whether they are at it.

Now I'm going to toss and turn tonight, waking up at 5am with the organization I was thinking of. :-)

[Edit] It was Olivetti Research. There's a good reason it was difficult to recall.
I work as a web developer in Sweden, usually charge around $100/hour and only take assignments longer than 1 month.

That rate lets me take 45 days off to travel and work on my own projects for every month of work I do for someone else. Since the marginal tax rate is around 60% in Sweden it makes more sense to exchange higher income for more free time.

Since I am a lousy negotiator I almost always work as a subcontractor though agencies. They suggest assignments and I choose which ones to accept.
By comparison, here were my steps to Google:
1. Attend a 4 year state school, majoring in computer science.
2. Enroll in mixed bachelors/masters program.
3. Apply for job at Google, pass interviews.
4. Graduate.

I'm saying this because for nearly EVERYONE getting a bachelors degree is the correct path, and if you can get into a program that will let you do a masters degree in less than the usual 2 years then it's a great idea. Less risk, same reward. My high school GPA wasn't quite as bad as OP's, but I had a 2.7.
Yes, I wasn't talking about recruitment agencies, I was talking about the ones with full time staff.
Sorry, I deleted my post before I saw your response.
Well, you can't parse perl without running parts of it.

You can't parse lisp without running reader macros.

You can't parse TeX without running parts of it.

You can't parse C without parsing header files. (Ok, that one is as bit different, because header files are just C code as well).
I can't say enough good things about Mozilla and their values. After becoming disillusioned with Apple over the last five years, Mozilla feels like one of the last remaining forces attempting to stave off a computing world of digital fiefdoms (in addition to Automattic and Canonical).
Your comment was not phrased along the lines of "Can anybody please explain this?" It was phrased as though meant to impart wisdom. That's why it got downvoted and why people are correcting you — because you (apparently) meant to ask a question but ended up making a bunch of erroneous claims instead.
Just out of curiosity, how happy are you with your career?

Why don't you just start doing some other stuff as you expressed?
Did they also actually replace the .apk files? How does that work with regards to code signing?
Ah I see, I am exploring theoretical areas of computer science for which there are no clear answers yet. Downvotes for you, bad HN user for making us try to think of new theories. :)

So a Polynomial doesn't need be many of them, it can be just one of them. The poly in the name threw me off I admit. I would have assumed that was a mononomial for just one and two of them are a binomial but apparently polynomial is used instead even for only one or two? I hope you understand my confusion there. Thank you for clearing that up.
The point of all this isn't to estimate exactly how fast it will take to do a task. It's to compare how efficient one way is against another.
Newer, faster computer will do them faster. A DDOS or CPU overheating will slow them down. But that's not the point.

Lets try a crap example I just made up. Imagine you want to go with your friends to see a movie. Here's a bad way to organise that. You drive to your first friends house. Ask what they want to see. Then you drive to each of your other friends houses and tell them what friend 1 wants to see. Then you drive to friend 2's house and ask them. And then drive to each of your friends houses (including friend 1) to tell them all what friend 2 has.
Can you see how with a large group of friends, that would be insane? It really doesn't matter if you have a fast or a slow car. It's just crazy.
A better plan would be to drive to each friends house, ask what they want to see and write it down on a piece of paper. Then at the end -- you can drive around again and tell everyone what movie you are all going to see.

If you've got 2 friends -- in the first plan you get to visit 4 houses. And in the second plan you get to visit 4 houses. With 3 friends it's 9 and 6. And then 16 and 8. And 25 and 10. 100 and 20.

Now lets say the person doing plan 1 discovers this amazing thing called the telephone. Plan 2 person is still using a car. Person 1 can do things so much faster. They don't have to leave home and can call in a manner of seconds.

But let's think it through.
4 calls vs driving to 4 people. 25 calls vs driving to 10 people. Still a big win for plan 1 at the moment. But how about 10,000 calls vs 200 car trips? 1,000,000 calls vs 2,000 car trips?

Does that help?
Do these screenshots reveal a heavily revamped Gmail is on the way?
This is an excellent piece. I began doing this, rather subconsciously after being overwhelmed by carrying too many things in my head at the same time.

A long time I had the belief that "smart people don't need to jote down things to remember -- they can hold it all in their head - they're smart :)" And hey, I'm smart -- so I'm going to do the same. Needless to say, it was a very foolish things to believe in.

I would say though, reminding myself to take the little effort needed to write something down, is important. Often time I am too lazy to even press Ctrl+Alt and switch to my text editor and write down what thoughts I as having. Reminding myself to do this, and not carry around various TODOs and other such baggage than slows down my general thinking abilities, is crucial.

Now a question to HNers: I've run into trouble organizing the various "brain dumps" (basically, a collection of text files). I sometimes forget about them, and never get back to them. How do you manage this issue? (ie. how do you organize your brain dumps and make sure things are done, etc.?)
Big O notation is an expression of a theoretical concept that applies to the algorithm itself. It is independent of any hardware that might be used to implement an algorithm.

Specifically, asymptotic complexity is an expression of the number of abstract operations or units of memory an algorithm will require. The meaning of "operation" or "unit of memory" depends on the algorithm. In the case of comparison sorting algorithms, for example, the operation in question is the number of comparisons.

Even if the CPU time allotted to a running algorithm changes due to system load or overheating, the algorithm still performs the same number of operations. Actual running time under system load can be calculated, but this is unrelated to big-O notation or complexity.

--------

Regarding your explanation, it is excessively wordy and uses awkward phrasing. Your subsequent complaint about the terminology used in responses to your previous questions about P=NP demonstrates a serious lack of prerequisite knowledge. You learn the definition of "polynomial" in algebra; teaching you algebra is far beyond the scope of a discussion on HN.

As someone who is primarily self taught but also finished most of a college CS education, I can understand your frustration. In order to understand one thing you need to learn three other things, and there's no map that leads you from what you know now to what you want to know. Until someone makes that map, or you know enough to make up that map as you read Wikipedia, you'll have to learn things in the order they're taught in school.

So here's what you should do if you want to understand what people are talking about on HN:

1. (Re)learn basic algebra from start to finish. Use Khan Academy. You absolutely need this to understand what a polynomial is.

2. Accept Wikipedia as a source of information. Use a dictionary and other Wikipedia articles to look up terms you don't understand.

3. Related to #2, try to study cognitive biases, critical thinking, and logical fallacies. Studying these concepts will help your brain process information, such as difficult to understand Wikipedia articles. Check out lesswrong.com.

4. Study basic CS. Look for an Introduction to Computer Science course on Coursera or elsewhere.

5. Study algorithms. Take an algorithms course on Coursera or elsewhere.
Dave Winer : Transcendental Money
Correct, OP's example contained an O(n) function:

> For example, the following function is O(n) because the algorithm grows in proportion to its input n: [...]

OP's question was whether there exists a similarly simple example of O(log n), which is not related to what anonymouz was commenting on. (or I'm misunderstanding?)
I think the first answer's intuition is actually better. It's stated a little opaquely, so maybe it's not actually useful as a teaching tool until you already understand why binary-search type algorithms that rule out a significant fraction of the input at each step are O(log n).

Basically, phrasing big-O as a property of the algorithm rather than the tree-structure of the solution space is more helpful in practice. I think it's quite common to have some problem in front of you and say "OK, so I can see immediately there's a naive solution thats linear, is there a smarter way?" And the answer nearly always comes (for me at least) when I try to answer the question, "Can I find some way to make smarter decisions at each step?" If the answer is "yes" or "maybe", you might be able to get to O(log n), but quite often the answer is "no" because you're streaming random data or something, or you have some logical reason why you have to look at every single input object, and you can immediately rule out better solutions and just get to work on the linear one.

That insight rarely comes to me when I ask "Is there any way to think of the input as a balanced binary search tree?" If there actually is such a tree structure, you're bound to find it anyways by asking "What smart decision am I making at each level?"
I think you may want to consider your experience purely anecdotical, and I'd ask you to read on only because it partially matches mine.

I grew up in a reasonably rich EU country (IT), and now live in a theoretically poorer EU country (HU).

Of course, most of the people I know in budapest speak two or three languages, have one or more university degrees, live in the city centre, work for multinational companies or have their own.

This doesn't mean that the hungarians are all rich and educated and live in budapest city center, it means that I don't meet the others.

Compare with my friends from the old home town: plenty of them only have only a high school degree, don't speak a word of english, can't afford a house and live with their parents, have an insecure job and when they'll lose it they'll not necessarily get unempolyment benefits.

It's not being poor as in "I can't eat", it's being poor as in "I can't plan my life beyond this season, and don't see a future for myself".

I have for the first time, seen shops selling yesterday's bread, because they can sell it for a lower price, and they started charging people for cheese crusts (which you would usually get for free to make soups or feed animals) because people were freeloading those.
Consider a function that prints a list of the numbers 1 through N. This function is linear in the size of its input, because we're talking about the size of a list.

But now, make a function that prints the first N numbers. This function is exponential in the size of its input, because we're talking about the size of a number.

We can optimize this second function by replacing our binary representation of a number with a unary ("tallying") representation. Now the size of a number grows linearly with its value, and so our function is linear instead of exponential. Nice win!
Some of the effects looks like fractals, with very intricate spiral and spiral arms. Where did that come from? I didn't see anything in the article that suggested it would be possible.
It should be noted that this is from 2008, and last updated in 2009. I'm not a Perl user, so I don't know if the language has changed enough since then to affect the validity of the proof. We also don't know if it holds for Perl 6.
ون بيس 597
> I wrote a new login manager with Bash and Zenity and Expect (and Script) that fully runs on a Wayland server (weston).

(!)
I think I covered that in this ebook: http://www.smashwords.com/books/view/314107 :) BTW it is a joke written by MIT's AI SciGen software to show how hard it is to tell if a thesis is serious or a parody written by clever AI software. Even if I mark it as parody and Computer Science Fiction some people are taking it seriously. Even when it says stuff like added 27 25Ghz Intel 386 chips to the network. :) The 386 chip does not run that fast.

OK complexity, then why is polynomial time used to describe it? I know some compilers can optimize machine code better than others, how does that affect the complexity? If the performance can vary from days to microseconds, well that is a very big gap. Video gamers always complain about 'lag', and days well that is one heck of a 'lag'! :)
Downloading 1.7GB from sourceforge is hard. Any chance of torrent?
Your first paragraph is also a slight misunderstanding of big O notation. In fact, the notation allows to make general comparisons between the growth rates of arbitrary functions, not necessarily referring to time complexities of algorithms (although that is a frequent use of big-O notation). For example, sometimes you use big O to express the amount of space an algorithm uses, sometimes you just count some objects with a certain property, etc.

When it comes to time complexity, one always has to clarify what is the computational model assumed. What are the allowed operations? What are we counting? Are we counting the number of comparisons between arbitrary (comparable) elements? Are we counting operations on bits? Are we counting arithmetic operations on numbers that fit in a register of some idealized computer? Of course if the model is not agreed upon, the answers can differ, as in your example.

Once the model is clear, and you want to express the running time of an algorithm, the result can in fact depend on both input size and input value (although this distinction makes more sense in certain models than in others). An example is the Ford-Fulkerson algorithm for max flow, whose running time (in the RAM model) depends both on the size of the network and the value of the max flow.
When this topic comes up on HN, discussion is normally focused on consultancy rates, because consultancy is more compatible with a startup side-project - it's easier to dial up or down the hours you do as a consultant, whereas contractors are locked in to hard agreements about time which makes them much more like salaried employees.

However, I'd like to see more discussion of contracting because it's still a good step away from being an employee. For me, contracting has meant:

1) Doubling of my take-home pay compared to working as an employee

2) I have my own limited-liability company now, through which I am paid. You don't always need this as a contractor, but it's a good way to learn the essentials of setting up a company, paying tax, etc.

3) If you save a good portion of your income within a company, you can fairly easily build up a fund which would enable you to work solidly for 6 months on a startup without external funding (though some paying customers would be good!). I've got about $50,000 saved from a few years of contracting, and that really hasn't been difficult.

Sadly, information about contractor rates is hard to find. In my (albeit limited) experience, the best rates can often be in doing un-sexy "enterprise" stuff, not Rails or Node or anything likely to make the front page on HN. Most PHP devs I know make more money than Ruby devs (the trick is to be a "Drupal" or "Magento" developer rather than a "PHP" developer). This doesn't really match up at all with what gets the most buzz in the startup world.
M&M'S
People have tried applying machine learning to learning many-body potentials in physics for use in speeding up quantum molecular dynamics while maintaining most of the accuracy. What you'd do is say that the total energy of the system is a sum of local potentials on each atom R, where the input is the local environment of atom R:

E = \sum_R e(env(R))

You use some method to create some features env(R) that makes the translational and rotational invariance of e() easy, with a radial cutoff beyond some distance, and then model e somehow. I think the most promising method is Gaussian Approximation Potentials, which use Gaussian processes to model e and (what they call) a bispectral decomposition to represent the local environment around the atom.

http://prl.aps.org/abstract/PRL/v104/i13/e136403 (free arxiv version: http://arxiv.org/abs/0910.1019)

Without the above simplifications like modelling it as a sum of local potentials, and making env(R) a cutoff, you would indeed just be fitting a 3N dimensional function in the case of N atoms. It'd be exact, but it'd also blow up pretty badly and utterly nontransferable. Also, the energy surface isn't necessarily continuous and differentiable -- consider the energy when two atoms move to occupy the same position.

I suspect that the bispectral decomposition to give env(R) could be improved by using unsupervised feature learning to learn better features such as "we're 5 angstrom away from a surface". I've seen talks where people have hand-optimized feature sets to include things like "there's an aromatic ring pointing at us from 5 angstrom away" that a simple function + cutoff might miss.
Painting through the power of thought enabled by scientists
C++ templates are turing complete, so I guess you can't parse C++ without "running" the templates either. http://stackoverflow.com/questions/189172/c-templates-turing...
> Or... you can pay $7/mo, given that as a nom-student you can probably afford that much? :P

What's a "nom student"? Does that mean graduated? Because he didn't say that.

Or does it mean "landed a high paying job"? Cause not everybody does or can be certain they will.

There is one thing you can be certain of however, and that is that you will be up to your neck in student loan debt. Paying $7/mo is not always a justifiable expense.

Sure in many cases your assumption is correct, but you could be a tiny bit less flippant about it.
Ask HN: Is it wise to put password validation on a signin page?
I was just prompted to log into the BBC website (https://ssl.bbc.co.uk/id/signin). When entering my username i got a nice green tick - i took this to mean that the username existed (is this itself bad practice?). When i entered my password i got another green tick - this was more confusing. Was it checking my password before i'd clicked signin? That would be weird. But no, it was just checking it met the password policy for length etc.

Is this necessary or useful on a signin page? I found the message confused so once again, a debate on best UI practices for signing pages.