skysight-inc/HackerNews huggingface dataset:
I really disagree with this article.

"The worst case is terrible" is not a myth, it's a reality-- and it's spawned several major security vulnerabilities recently. CVE-2012-1150 for example.

"Hash tables become full, and bad things happen." Yes. Yes they absolutely do. It depends on your implementation exactly what will happen, but in every case, you are in for some pain. If you choose the "linked list per element" route, congratulations-- your hash table will gradually approximate the lookup behavior of an unsorted linked list as the number of elements gets larger. If you choose rehashing, you'll have to deal with long pauses in your program during a rehash. Hello, latency spikes! Incremental rehashing could improve this, but only at the cost of degrading memory locality even further.

"Trees are better." For most applications, trees really ARE better. Trees are simple to use and they use less memory most of the time. You really should not be using hash tables unless you have a really good idea of how many elements you are going to have, AND you believe that they will not be accessed in any particular pattern.

"Hash functions are slow." I don't even know what this statement is supposed to mean. But I do know that there are a lot of bad hash functions out there, and it's easy to choose a bad one as a novice programmer. The right hash function will depend on your data-- something I note that this article fails to mention.

"Hash tables use too much memory." A wise programmer once told me, "fancy data structures are only good when N is large-- and N is usually small." That definitely applies here. Another way to look at this is that you need to keep the hash table half empty to keep the good properties that made you choose a hash table in the first place: O(1) lookup, O(1) insert, O(1) delete, etc. So you will just have to pay the memory price.

Hash tables can be very useful for certain applications. But in general, they're an optimization that you should make only if you know what you're doing. You should be very clear on why you're using them, how many elements you expect to have, and what your strategy is if you overflow. It's not for beginners. And if you are optimizing, you should also be aware that something like a radix tree or a B-Tree may lead to much better performance, due to its much better memory locality.

Just about the only really intriguing use for hash tables on a modern CPU is in lockless data structures, but if you're considering writing one of those-- you already know all the stuff I just wrote.
But you said 16 cycles.

"For example, hashing 16 bytes takes 141
Bulldozer cycles with SipHash-2-4, against 82 and 126 for CityHash and SpookyHash, and 600 for MD5."

https://www.131002.net/siphash/siphash.pdf (p.12)
Next time you call them, ask them to use open street maps, bing or google :)
It sounds like your main concern is there is more work than you can get done in a given day or week. Yes?

If that's so, there are really only two things you can do. Get some people who can help you, or somehow reduce the amount of work you have to do. (Or both)

My advice is to talk open and honestly to the client. When you do, talk about the risks in terms of time and money. Have a list of things ready that contribute to the risk. (Some of the things you listed above)

What is your business relationship with them? Freelancer, contractor, or fulltime. Are you the only person working on this? Depending on that, there might be some other things you can do.
The whole graphic just isn't nice. Each line is laid out a little bit to the left of the line above it to give the illusion of the text flowing with the page, but the characters aren't transformed at all so it just looks ... bad. And then there's the weird shadow that looks more like a slot that the pages are being stuffed into. Yuck.

But, then, their developer pages have always been very hit or miss graphically. (Not to mention functionally!)

Anyway, kinda dumb headline but, yeah, really bad graphic.
Phobia about holes is not officially recognized, but UK scientists look into it
Have you seen the new Flowplayer? http://flowplayer.org
Why is the conclusion wrong? It still seems like the trend should be the same.
Open Source? Node.js? Github? Javascript cross-compiler? ES6 based? Type annotations?

This is the first sign that they are "getting" 2012 developers and are back in the game with a vengeance. Hope it works.

Dart is mid-nineties MS by comparison.
John C. Lilly: Programming and Metaprogramming in the Human Biocomputer

All human beings, all persons who reach adulthood in the world today are programmed biocomputers.None of us can escape our own nature as programmable entities. Literally, each of us may be our programs, nothing more, nothing less.

Despite the great varieties of programs available, most of us have a limited set of programs. Some of these are built in. In the simpler forms of life the programs were mostly built in from genetic codes to fully formed adultly reproducing organisms. The patterns of function, of action reaction were determined by necessities of survival, of adaptation to slow environmental changes and of passing on the code to descendants.

http://www.shroomery.org/11839/Programming-and-metaprogrammi...
Polo Hoody-061
Could be related to the lack of Google employees on Windows.
Hahah that's a good one, I will. :)
> this one program

/usr/games/robots
There's absolutely nothing wrong with it in principle.

It's only that as the web grew up, and websites became less a bunch of static files and increasingly an application, or more commonly a pile of application-like messes run by many different people at the same time, involving a bunch of dependencies between files, whether organized code or haphazard things piled on things piled on things, doing staged releases comes to be the more sensible option.

At a certain level of complexity, FTP can become a liability and cost you business.
That code appears to rely on having direct access to the hash function; this seems very unlikely to be leaked to an attacker. More interesting would be code that gets the secret with only access to ordered iteration on the table, which is more likely to leak.

I don't know anything about Python's hash function, all of those benchmarks are still an order of magnitude slower than CityHash (for example), which peaks at 0.16 cycles/byte.

I would be interested to see SipHash put through SMHasher, which is the most comprehensive hash function test suite I know of: http://code.google.com/p/smhasher/
Peak Chrome? Google's browser falls as Firefox, Internet Explorer stay flat
As of an hour ago it works on 2.6 :D
I'm eligible to work in the UK (EU citizen), but I currently live in SF. Are you open to considering international candidates who are willing to relocate?
Chrome 22 on Ubuntu is garbage
We'd have a rocking *BSD community now, with all that Linux mindshare going there. Nice.
Not to go too far off topic, but, one of the nicer elements of HN is its focus on literate conversation. I've found, that in my own writing, I too frequently misuse to/too, where/were, lose/loose - so communicating with colleagues and friends that expect me to hold my conversation to a higher standard then elsewhere on the net is appreciated.

It has the bonus effect of improving the literacy of my written conversation when I'm not on HN as well.
Check out the entry on metasyntactic variable in the hacker's dictionary: http://catb.org/jargon/html/M/metasyntactic-variable.html
According to CityHash's benchmarks (http://code.google.com/p/cityhash/source/browse/trunk/README), they can hash 8 bytes in 6ns and 64 bytes in 9ns on a 2.67GHz machine (so 16-24 cycles).
Seed recovery (which requires access to hash function) is for Python hash. For CityHash, MurmurHash (2 and 3) there are seed-independent collisions.

Of course, it passes SMHasher with 10 score -- it's a cryptographic PRF.
Vena Solutions - Toronto, Canada (Full-time)

We're a well funded company in full entrepreneurial growth mode looking to hire the best. We have two postings up on Careers 2.0 for Java and C# engineers:

C# Software Engineer: http://careers.stackoverflow.com/jobs/24625/software-enginee...

Java Software Engineer: http://careers.stackoverflow.com/jobs/24488/software-enginee...

Here is our story :)

In the Enterprise world Excel is everything. They love it, use it every day and whisper sweet nothings to it at night. The problem is that over time when dealing with a large number of users and lots of Excel files, Excel becomes unmanageable, inefficient and eventually 'Excel Hell' takes over.

What invariably ends up happening is a big old-guard player comes in and convinces the company to get rid of Excel, getting them to use an Excel 'look and feel'. The problem is that it's not Excel - rather it's a crappy web grid that gives the company 10% of what Excel can do. This story has played out over and over again – the customer buys the solution, ends up hating it and eventually moves back to using Excel.

At Vena we're coming at it from an entirely different angle: stay in Excel! We provide all the benefits of a big player solution while keeping the user in the one place they know and love: Excel.

We're a well funded company in full entrepreneurial growth mode looking to hire the best. If you want to work on something that great companies like McDonalds and Wells Fargo actually use then look no further than Vena Solutions.
Look, this happens all the time.

Tiny little men try and clutch to their chests what big men have produced.

They all lose over the long run and this will happen again.
>I don't know, ECMAScript 6 looks a lot like Coffeescript, and ECMAScript 6 modules look a lot like Node modules.

The fact that after all this time and efforts, ES6 won't be released for another year plus, speaks volumes about the "design by committee" thing.
Have to admit I'm not exactly afraid... but kinda spooked out by those dried lotus seedpods
Yeah, I think UHJK might really make the most sense.

j still moves you in the same direction as ctrl-j (linefeed)

h still moves you in the same direction as ctrl-h (backspace)

there's never been a good association between k or l and their ctrled equivalents; no gain or loss there

u is now up - mnemonic ftw

moving undo to ctrl-u would make redo (ctrl-r) more discoverable
Congrats Renee!! Keep calm and carry on.
Isn't Python open source? Along with a large quantity of server-side software? I'd assume everyone already knows my hash functions, I didn't make any new ones.
A great post. Something I was ranting about recently was what I've noticed to be an all too common perception that UX/usability is a side-job, something that any front-end dev worth his salt should be able to ensure and consider while implementing a UI.

For me, user experience design and interaction design should be what informs the implementation of a UI and can not simply be treated as a side effect of it.
What I wouldn't give for a X day trial period on all apps. Hell, let categorization drive the length of trial period, I don't care. Please just give me a way to "try before I buy".
He means access to [seeded] hash function output.
I agree, it's a straw man. Also, who ever implements their own data structures anymore? These days people use native-language maps freely, which may be implemented as trees or hash tables.
I don't mind paying the static + compile approach, but in that case, pretty please allow me to instantiate instances of types using simple string name of the type!

If go allowed that kind of "eval"-like functionality, it would be impossible to compile it down to a static binary. You would always be wondering if someone would instantiate a type that you didn't include in the binary.

Java's VM does allow creating classes from strings. It has its uses, I guess, but Go is more based around the idea of knowing the types ahead of time.

Unless you are just talking about syntax, in which case you should know that new is completely optional in most scenarios; new Foo is the same as &Foo{0}, etc.
there's also http://billsup.com, our group moved there and it's pretty good
Cheap football shirts kits online shop
Steve Blank - This Week in Venture Capital
Seems somewhat vague, I think it could be a lot more accurate. I'm a bit surprised to see it here.

It claims that it's a myth that "trees are better" than hash tables and just describes trees as better for "finding inexact matches", as in the example "finding all names that begin with B". That's too vague. It's misleading because:

1. Trees can't just answer any random vague questions, such as "Find all names that have a P anywhere". That doesn't really describe the advantages of trees. I think a more accurate formulation would be "iterating over a range of values" or "finding values based on some ordering" (eg. find the smallest element bigger than X). Or for walking the entire contents in some predefined order. Sure, this is not an article about trees, but it doesn't take more than two sentences to describe that in a much better manner.

2. For any of the former query patterns, trees are actually much better than hash tables. That's definitely not a myth, which this article would sorta have you believe.

> Chained hash tables are a very good idea. Problem solved.

Wrong. If you don't resize your hash table, the complexity of accesses will degrade linearly as it exceeds its size. If your hash uses, say, 100 buckets each with a linked lists and stores N > 100 values, an access has complexity O(N) (sure, O(N/100) in the best case (assuming perfect spread of hash keys), but that's really O(N)).

Finally, "The worst case is terrible" myth part seems somewhat naive. I think it should at least mention the idea of hash table collision DOS attacks. "This doesn't happen in practice" unless there's some attacker out to get you by triggering that. There's plenty of examples of that happening in practice, of systems vulnerable to that. See example presentation here:
http://www.youtube.com/watch?v=R2Cq3CLI6H8&lr=1 Sure, that's not a reason to switch away from hash tables, but it's definitely something to consider when using them. I get a bad flavor from this simplification of "yeah, this doesn't happen in practice, at least as long as you know what your keys are".
I consider myself to be a relatively experienced developer, and even still, reading this blog post really lifted my spirits.

I write code for a living, and even though no one has ever told me they weren't happy with my performance, the constant influx of new techniques, languages, algorithms, and systems in the programming world have always made me feel like an inferior developer. I constantly feel like there's so much to learn, that I can't possibly be good, as if the only worthy developers in the world are the top 500 geniuses that work for Google and Facebook and are somehow capable of magically knowing everything.

Knowing that this isn't the case, and that companies like Twilio are finding value in employees with skill sets much narrower than mine, is a good feeling. It's also really nice to know that they're open minded to the point that they respect this guy's talents as a developer just as much as they did as a customer service rep. #thehighroad
I thought IAP was for hats for your game charaters.
It's hard to hire great people, so Square acquired a company full of great people wholesale. It's roughly equivalent to hiring with a large signing bonus, but with a very different (and more egalitarian) psychology.
What "confidence" do you need for a straightforward comparison of hash tables and binary trees? These aren't Apple rumors; this is CS 101.
It looks like this was never a connectivity test, but some sort of outright statistics hostname error: https://discussions.apple.com/message/19852289#19852289

And it looks like the issue's already been fixed too (two posts down).
I had these things in my pencilcase in highschool in the seventies.

</slipsonhipsterglasses>
You have to try multiple different legitimate design approaches in order to understand anything about the qualities of your final design.

In some sense, it's a lot like data science. The little-leaguers design according to simple gradient descent: They'll pick one basic approach and do loads of A/B testing on it in order to make minor improvements.

The pros will do something like simulated annealing: Pick a number of different approaches, and see if one has a larger starting advantage.
I highly recommend a book on the adjacent topic, for those interested in questions re: where subjectivity and objectivity blur, in art and design. The ideas have evolved significantly, well beyond the N isms, and into a deeper level on cognitive psychology, and analytic philosophy. Among other things, it is useful for practitioners to be aware of--given the power and plasticity of modern digital media tools.

The Objective Eye: Color, Form, and Reality in the Theory of Art

http://www.amazon.com/The-Objective-Eye-Reality-Theory/dp/02...

-edits for context-

[NB: Also disregard the amazon ratings]
JavaScript Sucks.
So HN commenters do RTFA but don't comment on TFA?
I assume Randall draws them by hand. The humor / inventiveness of this question consists of trying to replicate the hand-drawn style using code.
It's not O(n), it's more like O(1 + max(0, n - m)) where n is the number of elements in the table and m is the number of buckets. The table can grow up to about n == m and it's still approximately O(1).

Isn't that just the long way of saying "O(n)"? It's a worst-case bound.
Nonsense. About 85 million iPhones have been sold in the USA to date. $5.9 billion would be $70 in repair costs for each and every phone sold. In my experience, it costs about $50-$150 to repair a (reparable) iPhone, so this would suggest -- conservatively! -- that approximately one in every two phones is repaired. I call BS. They're probably counting replacements, many of which would happen anyway. For example, I didn't bother to fix a slightly cracked screen on my 3G, but simply waited until the 4 came out and upgraded then. This "study" would probably regard the entire price of the new iPhone 4 as the cost of the damage to the 3G, but of course I would have upgraded even if the 3G had been pristine.
I still prefer Dropbox because you have better control about what you upload.

Simply copy your files into ~/Dropbox/Public, right-click and choose Dropbox > Copy Public URL. Voilà!
YouTube Partners With ABC News to Stream the Presidential Debates
Robert Frost: The Road Not Taken - iOS6 Maps Edition
Build your heroku maintenance pages like a Boss
Except that Dropbox has now discontinued their public folders in exchange for there get link everywhere (which requires you to click add to dropbox or a download button rather than direct access).
He should get permission to host a bunch of #fakestevejobs content. (Parodic tribute stuff, of course.)
That's pretty cool. I could see that being useful.
> For CityHash, MurmurHash (2 and 3) there are seed-independent collisions.

Are you referring to the "Advanced hash flooding" section of the paper, or am I missing this in another place? That analysis appears to rely on the hash function being highly linear/periodic (ie. you can always add "l" to get back the same hash value). I don't think that City, Spooky, or Murmur are nearly this linear. For example, City is based on CRC32 (ie. polynomial division).

Don't get me wrong, I'm impressed that SipHash is so fast for a cryptographic hash. But modern non-cryptographic hash functions are so fast (especially when they're CPU-accelerated, like City is on Intel thanks to the CRC32 instruction) that I don't think SipHash can claim to be the obvious choice for all hash tables.

I am interested to know though if the random seed + City/Spooky/Murmur approach really does have practical hash flooding attacks.
Somehow I think adding yet another layer to software that ultimately consumes some inputs and spits out some text is a little extreme. Hopefully we can figure out a solution that doesn't require it.
Except in mobile, where webkit is the only game in town. In fact, I think we're already seeing web developers write mobile sites that only work in webkit.
tl;dr

my 2 cents: masturbation for billionaires.
I don't know ... Some UI/UX is subjective.

For instance, my willingness to put up with an initial learning curve vs working with an "intuitive" interface. You may call these "design decisions" and that a well designed UI/UX could be a part of any point on that spectrum, but they are design decisions made by the people in charge of UI/UX and impact the final UI/UX.

It is why I become frustrated using a many GUI programs when all I really want is to write a damn awk script :)
Emergent Remix Culture in an Anonymous Collaborative Art System
The captions on the video are epic. Don't miss a watch with the CC on.
Adobe Says Its Code Signing Infrastructure Has Been Hacked
Where I could really enjoy this is in the context of textbooks and tutorials. Sometimes a hand-drawn figure is able to convey an abstract idea much more clearly. When I see figures representing manifolds (e.g. the many figures in Roger Penrose's Road To Reality), it's easier for my mind to understand them as abstract notions rather than 2-d geometric entities on the page.

The problem is that good hand-drawn figures are hard - xkcd just makes it look easy.

So awesome work!
And which is it - "users don't see carousels because of banner-blindness", or "users don't see anything but carousel animation because of lizard brains"?
I don't know how the appointment of judges works beyond the local level where I vote. What would it take to get Posner appointed to the Federal Circuit Court of Appeals? It seems his worldview is much needed there.
As far as I remember, it started with a comment on locked down tablets. Since the x86 tablets with W8 won't necessarily be locked down, I assumed you were talking about ARM-based ones.
McGraw-Hill exec: tech will make us rethink age-grouping in schools
Seriously, WTF? The question everyone asks but only iconoclasts answer.
It has been known for more than a century that dividing up school pupils by age into lock-step grades is a bad idea:

http://learninfreedom.org/age_grading_bad.html
inoremap <ESC> <NUL>
gets you in the habit pretty fast.
Nice. From the browser detection script:

if (isNexus7 == true)
{
istablet = false;
}
> Microsoft cannot leverage its Windows monopoly in the ARM tablet market

Really? So, Windows software won;'t need a recompile to run on ARM?

> The only difference is, they also license their OS out to third party partners.

As long as they limit competition and prevent the devices from running anything but Windows.

> You want to use their software, you agree to their license.

Except that it doesn't work like that when you try to leverage the power one monopoly affords you to prevent competition in another market.
http://en.wikipedia.org/wiki/Richard_Posner

Richard Allen Posner (born January 11, 1939) is an American jurist, legal theorist, and economist who is currently a <judge on the United States Court of Appeals for the Seventh Circuit in Chicago> and a Senior Lecturer at the University of Chicago Law School. He is an influential figure in the law and economics school of thought.
OMFG. Total, complete lack of understanding of Apple. I'm no fanboi of either iOS or Android (I actually have several of both).

"News accounts this week suggested that Google was caught off-guard by Apple’s decision to kick it off the iPhone"

WTF?! Last time I checked, Apple doesn't tell you jack shit about what they plan to do, even if (or especially if?) you're Google.

"The best thing about Tim Cook’s note is the part where he lists alternative maps apps for the iPhone. Sure, he had no choice, but this may be an unprecedented thing for Apple: Can you recall the company ever telling people that something it made isn’t as good as something made by others?"

Again, WTF?! Why doesn't Mapquest or Bing have an iOS app... hmmm... let me think... BECAUSE APPLE DOES NOT ALLOW IT. They clearly have said they won't let an App into the store that duplicates "built in" functionality.

I am beside myself that such utter bullshit would be written by none other than Farhad Manjoo.