skysight-inc/HackerNews huggingface dataset:
A binary search tree is O(log n), but that's not what's typically referred to as "hashing".

Hash lookups can be close to O(1) (constant time) if you use a hash function that calculates a close-to-unique index into a table based on the key's value (provided the table isn't too full, so there are few collisions). This kind of data structure is typically used for looking up identifiers (variable and function names) in a compiler.

More information here: https://en.wikipedia.org/wiki/Hash_table
"housing and food, would just get more expensive"

If it does get more expensive, that means that demand went up, which meant that more people now have housing & food than before. That's a good thing, which far outweighs any negative from the price going up slightly.

And it would be only a slight price increase. After all, the vast majority of people in Europe already have housing and food so the demand increase would be relatively small.

"where is the need for this in Europe?"

If what you say is true, it's true because of the existing social safety nets. BI would replace many of the welfare programs already existing, so the impact on the finances of the EU or on the non-working poor should be minimal.

The big benefit for BI is its impact on the working poor along with the employers that depend on them. BI will allow governments to eliminate minimum wage along with the regulations that make it difficult to fire people in certain European countries. This should drastically increase the number of jobs available which is good for both the poor and their employers.
> I can't think of many cases when saying "This algorithm is O(N^2)" is significantly more useful than saying "This algorithm is going to be really slow".

But to know that it will be slow you have to know how it scales with the input size. Because the list example may work just fine when the website has little data (oftentimes an O(N^2)-algorithm may even be faster than an O(N)-algorithm on small data) and hit you when you scale up. And the O-notation gives you a tool to estimate how the work scales. Any alternative to the O-notation is either more complex (look up Analytic Combinatorics http://ac.cs.princeton.edu/home/) or just an informal treatment of O-notation.
Do It Right. Say It Right.
I honestly don't understand the obsession with js package sizes. Of course, the initial page load is important, you want to minify, gzip and make this as fast as possible. But once it is loaded (and cached), that's all there is to it. It's a one-off cost, which I think is perfectly acceptable for most users using a single-page app.

I personally think ease of development, flexibility, documentation and project long-term viability are far greater concerns when choosing a framework, than whether it weights 100kb less (or more).
I dropped out of CS to work in the games industry. After that I took a financial coding job instead of going back to school, and a few years later am back at school (top 1% in the world), but as a research fellow. Everyone else doing my job has a PhD. It was extremely hard for them to hire me and they had to break the rules but they did. I'm a terrible student but a good researcher - maybe because I have what Feynman would describe as a "different box of tools"

Sure I'll never be a professor, and make decent but not top $$$, but compared to more senior people, I actually prefer what I do day to day (90% coding & research) rather than the meetings/teaching/grant writing etc that those with higher prestige jobs seem to spend their time doing.

I'm probably an outlier, and don't advise others to follow me. If I could go back in time and get the degree I would, but at the moment the opportunity cost is too high. Not just the considerable amount of money, but also the interesting new work and real world problems that I can solve now, compared to memorisation, sitting exams and redoing old problems.
What is waylands security like cf xorg?
I was responding to the sentence, "If we just freely hand out a living wage to everybody, nobody will be working the crappy jobs and our world will fall apart."

I went with the "bare minimum" thing because a sub-living wage is a dying wage.
The point the grand parent was making seems to me to be rather simple. He says that the designers of Perl (not the author of the article) didn't consider parseability of Perl an objective, since they focused more on making a scripting language for humans.
Of course the author (and many others) would have liked if Perl was statically parseable since a lot of static tools like documentation require this to be complete.
So it just shows that maybe static parseability should have been an objective of the Perl designers or any other language designer in the future.
> But how can you know how slow it is going to be under a production workload?

In a web dev context, load testing. I appreciate that that's not so easy if your program takes a week to run.

> Is very useful to be able to time some code on a small input set, then extrapolate based on knowledge of time complexity to find out roughly how long the full input will take. If you don't know the time complexity, this is impossible.

I suppose my confusion is that with code I've written, I think I generally understand the time complexity without having to use Big-O notation. I can sort of see that there are times you might want to tell a colleague something like "careful, this code I wrote is O(n^3)", but I'm wondering what kind of job entails doing that on a regular basis.
You should read the article (and avoid being so dismissive). Functionality like Mutation Observers are exactly the kind of abstractions that will make "dynamic behavior and services" (as vague as that is) all the easier.

Also, maybe you have a weird definition for "widget", but go watch Bret's latest talk. It's all widgets. And it's certainly not dynamic magic; we can build interfaces like that, but more and better tools to make building them easier are a very good thing.

I'm personally really excited from what I've seen of Polymer, and even more excited about its mostly decoupled design (and the polyfill-until-standardized approach the GP comment mentions), allowing you to pick and choose what you want to use without committing to some huge (and "opinionated") framework.
The Perl language has evolved over the years. Could it be "fixed", so that a future version could be parsed?
Amen. Preach it, substack.

For what it's worth, Backbone (as it continues to develop), is attempting to be polished down into a small library that provides the basic primitives for binding rich models and views together with events. Nothing more, and hopefully nothing less. Ideally, it shouldn't feel like a "framework", despite frequently being lumped in among them.

To the extent that frameworks start growing framework-specific plugins, instead of generally reusable JS libraries, for simple tasks such as enforcing schemas, validating forms, implementing undo/redo, configuration, serialization, state machines, DOM building, and so on ... is a tragedy. In the same way that the jQuery-plugin-ification craze of several years back is a tragedy, or the only-works-in-Node.js trend might be today.
A good and suitable use of Linux based systems. They can now install custom installations with packages that are individually vetted. They also got source code, so there is no limit on how careful reviews and (continuously) testing that can be made. During crunch time, they can even crowdsource.

The malware threat will also be lower, mostly thanks to not installing every single default program and service that windows come pre-install. So long they are not completely lazy and just install a massive DVD sized distro like Ubuntu, the attack surface and number of packages needed to vet should be quite manageable.
This is like those mandatory undergrad computing courses where they teach you to use word by typing into an open document. If you can't figure it out with a few minutes and access to the help files, maybe computers just aren't your thing.
clojure.org and worrydream.com. Rich has talks on youtube and Bret on vimeo (accessible via his website). What I mean is that if one thinks in widgets and DOM this is already tied to a particular way of thinking about computing. For instance d3.js and others manipulate the DOM, so that you have more or less a scripting of static content. There is real power in combining user interaction and scripting making it a two-way channel. My instant reaction to this talk is they really took the whole to an extreme, where the absurdity should become obvious. The next big thing is not going to come from Google (obviously). Perhaps I'm just ignorant.
Projectional Editor
This is my half-cooked spare time project. Could you give some feedback on the presented ideas?
It is probably a wise move for them to move to Linux, having many other systems running Linux too.

But Windows security is a poor argument imo. If they had upgraded to Vista in 2008 (which was working quite well by then), or had better managed those laptops, that incident would not have happened. Now, five years later, they still have not upgraded to a modern Windows version. After so many years, anything is going to be more secure than XP.

Nowadays, you have to patch and update to have a secure system. Freezing the software to guarantee stability makes it inherently unsecure, Windows or Linux. There is no difference other than the larger base of existing virusses for Windows.

Also I wonder what this means for power usage, which is not unimportant in space. Windows still gets longer use out of most laptop batteries than Linux.
(slightly) more detailed article: http://www.extremetech.com/extreme/155392-international-spac...

in related news, Debian 6 apparently ships with support for the International Space Station, but still can't manage to sleep/resume peacefully.
Before assuming they are the ones "always committing mistakes/blunders" please provide source or at least some examples.

You are making use of the logical fallacy "Complex Question Fallacy" - http://www.logicalfallacies.info/presumption/complex-questio... - and I do not approve.
Does somebody has experience and tips how to effectively organize workspace in a growing early stage startup. When your headcount is growing steadily, flexibility of an open office space is a big plus, but are there good solutions that combine open layouts with private workspace? Headphones, moveable desks, working from home. Anything else? Share your experiences.
This is my half-cooked spare time project. Could you give me some feedback on the presented ideas?
But again: labor supply levels are not like supply-levels for other commodities. If you want a continuous supply of fresh tomatoes, you give your plant water and sunlight, and if you want a consistent supply of willing labor, you should pay living wages.

Otherwise, you're not talking about bargaining in a fair market but about the religion of arbeit macht frei or karoshi, the worship of self-immolation through work.

(For those surprised by my turn of phrase, yes, this is in fact what "Arbeit macht frei" meant prior to WW2.)
Pics show iPad mini prototype with 2 microphones
I would rather list Red Hat than Canonical.
You join an Accelerator and change company name
Yes accelerators have advantages but as well disadvantages so you have to deal with it.
nope, it's the combination of what it is worth to you, and what someone will do it for, when the alternative to doing it is to starve. if you remove that large influencing factor, you would get a lot closer to a fair market price, where the unpleasantness of a job factors more strongly into the value of doing it.
Brazil cancels most of African debt
What about the 2% of investors that are Dave McClure?
New Startup tries to excite Facebook
Man alive, Mozilla just inspires me

I am stealing this and the Turing oath to go as part of my own company's values background

I am especially glad they focused on the public good side of the Internet and did not get mired in privacy debates

This is going in front of as many UK council leaders as will listen at the LGA conference July

Thanks guys
Actually, syntax highlighting + warnings about ambiguity would be just the thing in the article's example. Suggesting that the developer choose between use of an explicit "m" for the pattern matching:

whatever m/ 25 ; # / ; die "this dies!";

...or the use of parentheses for division:

(whatever / 25) ; # / ; die "this dies!";

...would be a helpful suggestion a syntax parser could give. Also, in either event the code is syntactically valid.
It looks cool! Adding a `remove` method would make it even better.
The article really doesn't prove that Perl can't be parsed, it proves that Perl can't be parsed unambiguously.

The example given is:

whatever / 25 ; # / ; die "this dies!";

This can be parsed into two variants without running any code or knowing the arity of whatever.

The case where whatever takes no arguments:

8 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
7 <2> divide[t3] vK/2 ->8
5 <1> entersub[t2] sKS/TARG,1 ->6
- <1> ex-list sK ->5
3 <0> pushmark s ->4
- <1> ex-rv2cv sK/128 ->-
4 <#> gv[*whatever] s ->5
6 <$> const[IV 25] s ->7

The case where whatever takes a single argument:

b <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
6 <1> entersub[t2] vKS/TARG,1 ->7
- <1> ex-list K ->6
3 <0> pushmark s ->4
4 </> match(/" 25 ; # "/) sM/RTIME ->5
- <1> ex-rv2cv sK/128 ->-
5 <#> gv[*whatever] s ->6
7 <;> nextstate(main 1 -e:1) v:{ ->8
a <@> die[t3] vK/1 ->b
8 <0> pushmark s ->9
9 <$> const[PV "this dies!"] s ->a

What does this mean practically? If you want to rename "whatever" to something else, you can do that, since the name of the function is captured no matter how many arguments it takes. If you want to lint all your regular expressions, you can do that with the chance that you'll be wrong if you guessed the prototype wrong.

The only thing you can't do is figure out exactly how the code will run at runtime. But if you could do that, you wouldn't have a computer program, you'd just have a lookup table.

Another thing to keep in mind: if a static analysis tool can't understand your code, perhaps the future maintainer can't either. In that case, why not rewrite the code to not be ambiguous?
That's a bit harsh - have you considered that English may not be their first language? How good is your Hungarian, or Swedish, or Bulgarian, or Cantonese?
My last job had a pretty open office. It was great actually, really social.
Of course I have seen homeless and beggars - also in rich Scandinavia in the heydays 5-10 years ago. Virtually everybody who is without work in Denmark is entitled to some kind of welfare. Often that welfare is higher than what working people make in other countries (typically 1-3,000 euro). But prices on basic necesssities are also high.
To learn anything in this field you need to learn how to ask questions the smart way, how to take control of your own learning, how to set your own goals, and how to research things for yourself.

Here's an outline of one way to start, and I invite the HN community to offer corrections and enhancements:

* Learn to write the FizzBuzz program in a language of your choice.

* Learn to run that on more than one operating system.

* Learn to write it in two other languages.

What did you learn? Where did you get your information?
I paid two dollars to listen to the rain, and i don't regret it one bit
I normally don't nitpick like this, but a design article which makes the sidebar cover the article if I zoom in on Chrome (Android) seems a little ironic ;)
Document / Record versioning with MongoDB & Redis
Yeah, I'd really like to try offices in "pods" of 4-8 with a roll-up wall (like a garage door) on one side of each, opening into a private "team space". And maybe a roll-up wall on the public side, too.
Compulsory link,

http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf
At least where I work the definition of slow does not cross complexity boundaries. A O(n) algorithm that takes 100 seconds to run is "slow" compared to a O(n) algorithm that takes 50 seconds to run. But if it crosses a complexity boundary and it's now, O(n^2), we state that instead of saying it's "slow", because often it's far more tragical than just taking a little extra time to run.
> If they had upgraded to Vista in 2008 ....

Keeping your Windows up-to-date might require updating (some of) your hardware too. And hardware updates are expensive if they have to be delivered to low earth orbit.
I would argue that having a basic Big-O intuition is important for every developer. Regardless of the work you're doing, you want to write efficient code. And you want to know how something scales.

I'm also mainly a web developer. In my head, I'm thinking about Big-O a lot - not that I'd go and formally examine every bit of code, but keeping O behavior in mind leads to certain almost subconscious decisions that are going to be good for your software.

Being Big-O-aware makes sense especially in web development where latency minimization and stable scaling behavior are important. Keeping Big O in mind influences a lot of choices, from using certain language constructs to the way your database tables are modeled.

Thinking about Big O is part of being aware what your code actually does.
It's not unheard of for PhD thesis work to change the world within the academic discipline in question. Possible examples: Louis de Broglie (quantum physics applied to electrons as well as photons), Hugh Everett (many-worlds interpretation of QM), John Nash (Nash equilibria in game theory), Bernhard Riemann (conformal mapping, simple-connectedness, Laudent series), Noam Chomsky (transformational grammar), Eric Drexler (first proposal of nanotechnology).

Also, I think Google came out of Page's & Brin's PhD work, but they decided that building a company around it was a better idea than getting PhDs for it.
Why, sourceforge has excellent global mirrors.
You have taken a statement that essentially means "Lisp is a pretty good general purpous language" and interpreted it as "If I use lisp I have to create the universe from scratch in order to make an apple pie, and others will have to rediscover all of physics to exist in my universe".

Common Lisp, Clojure and Racket all have at the very least a descent set of libraries. And if you use clojure or ABCL, you get all of the jvm libraries too. With FFI you can use any C library from Common Lisp or Racket too. On top of that you get to use languages designed for extensibility, which means that there are actual best practices and examples of how to extend a language without painting yourself into a corner with an unmaintainable mess. Lispers have been doing stuff like this for decades, some of it is very well understood in the various lisp communities.

My favorite example of this power are the various sql DSLs, I can write in lisp something like (query (:select :* :from 'some-table :where ...)) without having to concatenate strings and worry about injections. Yes, I have to learn a new language on top of Common Lisp to use it, but if you know SQL and Lisp, you already know 90% of it. Now I have all the power of lisp in my queries, isn't that cool?
Different cultures, different attitudes towards these things.

I was recently in Aschaffenburg (Germany) doing interoperability tests with some of our networking equipment and a large SCADA vendor. About two hours into the tests, we ran into some problems, which we quickly identified as being related to the firewall on one of the test laptops in their lab having a very restrictive firewall rule (wouldn't allow ping). We had to wait for the better part of two hours while they got approval to adjust the firewall rules to allow ping from another device in the same lab. Note that this was a lab laptop, and these were technically sophisticated people - they understood the implication of allowing ping - it's just that their policy/procedures with regards to security were very, very strict.

I can guarantee you, in any interop tests I've done in Silicon Valley - there would be zero friction (even with the utility companies, enterprise software vendors, scada vendors) around opening up icmp on a lab laptop firewall.

I cite this as an example where Americans (at least those in Norcal) are more lax regarding security than another culture (in this case, whatever was prevalent in the part of Germany Aschaffenburg is located in)
What this article doesn't address is the arbitrariness of the choice. If you choose arbitrarily, you simply replace one problem (paralysis), with another - doubt. Doubt that this worthwhile.
Best dual-provider design for redundant WAN connections
It's not obvious to me you can write to memory at arbitrary memory locations, which is usually a requirement for writing a kernel.
You can:

unsafe { *(123 as *mut uint) = 4567; }
Battery-swapping as a thing for the general public's use of electric vehicles always struck me as just stupid. It works against an important advantage of EVs (no more detours to gas stations), requires standardization of a nascent product space (does that ever work?), adds costs (at the very least, that machinery must be maintained), and confers no advantage at all for the vast majority of car use cases.

The general public simply does not take long road trips frequently enough for a full network of battery-swap stations to be viable.
Working with immutable data
Google is better than you think! ;)

It's very Googleable.

https://encrypted.google.com/webhp#sclient=psy-ab&q=rebe...
There was no way we were getting to the moon without the cold war. The current crop of "space-based startups" borrows a great deal from decades of NASA and military work.
Download with DownThemAll, it's a great Firefox download manager extension. It supports multiple pieces, multiple mirrors and resuming, taking all the trouble out of downloading big files over http.
> What if your manager asked you for an estimate of how long it would take to load a million new records into the database and index them? It would be nice to know whether you'd have to take the system down for an hour or for a day or for a week.

I don't think I really buy this as a practical use case. Unless I was running on system I understood very well (eg. an embedded platform) I don't think I'd really trust estimates calculated using Big-O to be reliable on atypical workloads. I'd pretty much expect unforeseen caches / optimizations / swapping to disk to confound my estimates somehow. If at all possible I'd test it. If testing it takes too long to be practical then there's a serious problem with the system. I can see cases where testing is impossible for good, practical reasons, just not enough of them to justify the obsession with Big-O.
It slept/resumed quite wonderfully here, and it continues to do so after the upgrade to Wheezy/Debian 7.

Did you break something?
> If they had upgraded to Vista in 2008

For that, they'd probably have to certify that all their software and flight-certified hardware functions correctly with Vista. They'd have to start certifying them for Longhorn in 2003.
As I said, poverty in South Eastern Europe is mainly a problem among Romas, elderly people and people who stayed in the rural areas. From what I can read the pattern is similar in Central Eastern Europe. It is bad enough that poverty is associated with a single ethnic group but it does suggest that a general basic income for all europeans is unnecessary. In Hungary, where you reside, Romas comprise of 2/3 of the poorest 300,000 people, have a much higher unemployment rate than other ethnicities, high much higher illiteracy and are generally discriminated against at the labor market. These are the problems to solve.
Coffee Grinders Advice
Coffee Grinders Advice
No. The fact that a feature is Turing complete doesn't make the language unparseable.

C is Turing complete, but you don't need to run the program to parse C. Likewise for parsing C++ templates.
I don't think winter_blue meant what you think he/she meant. The question is why we hear these stories more often than american-made blunders. Which I am not even very sure we do.