skysight-inc/HackerNews huggingface dataset:
I feel that this analogy seems to overlook the work that goes into having a 'customer' being available for, listening and receiving the call back.
I used to find a TV useful to wake up, by setting an alarm on it to turn on.
Liveaboard life: minimalism in a tiny home at sea (video)
I agree. To me the email looks spammy enough already - adding in a request for information right in the email would make it sound even worse.
How does this line of thinking apply to monthly subscription fees? Does $12 a month have the same higher conversion rate compared to $9.99 a month as $12 a year does to 9.99 a year?
Not sure how startup would be defined. I work at a small company I started with 3 people who have become my friends (okay, one of them already was), I've been working there for 3.5 years. We're still in stealth mode, though.
Shame - I've been to two of these HN meetups, and last night I met a lot of people working on interesting ideas. Most of these ideas were actually projects that are too early to call a startup but could possibly have potential.

Maybe I got lucky and chatted to the right guys.
I can see this being incredibly useful for some use cases of redis (pub-sub maybe). There are of course others, such as using redis as a memcache replacement, where latency is going to be a much bigger issue...
I assume the plan is to host it on EC2, meaning that existing EC2 users can access it with very low latency.

That's how these cloud infrastructure providers work, right?
> It really says something about C that so many useful-but-small systems have a good chunk of code devoted to hash table implementations, atoms ("a reference-counted string type"), etc.

Well, the only reason for that is that C never had a hash table in its standard library. The same assertion is true about any other programming language I've seen that doesn't.

Python's and Lua's dicts are really hard to top (at least in the general case, and definitely inside the language), so there aren't even any attempts. Java's is slow and horrible, so there are hundreds of replacements, but they're all interface compatible.

> That and serializing custom data structures to disk accounts for more than half of its code.

That's one of the the things K gets unbelievably right - there is one routine (which with Arthur's style is probably 10 lines of C) for serialize, and another for deserialize. They work for any K structure, and they do that with blinding speed thanks to being totally memory mapped. My C code has switched to that approach as well - and it works really, really well.
Nice analysis and demonstration that even relaxing concurrency requirements is not as easy as it looks.

Interestingly, when trying to reason about and verify correct synchronisation of data structures, I immediately start drawing boxes with lots of arrows for pointers (just like those in the article) even though I don't normally need any visual aids to design my code. Somehow, holding a complex data structure in my head is no problem, but as soon as I try to think about concurrent access to something as simple as a linked list, I need to draw each state. Anyone else got any good strategies for concurrency analysis?
I would have liked to see the timing information for PyPy without dynamic inlining.
If we were working in an APL dialect, I would expect code like that. I can tell you what every token in that code is for, by the way. If we were working in C, no. But if you're trying to get C programmers to grok APL style, it's a good start.

The APL people are not fooling around, either - look at Kx's customers: http://kx.com/Customers/end-user-customers.php . And then check how much a license for kdb+ costs per core. Oh, and "a standard purchase requires licensing at least 8 cores."
This is based on the experience of getting my CS degree 10+ years ago. I'm not going to prefix every sentance with IMHO.

Of course you don't know how to program, because most computer science programs suck. They teach how to code, the basic stuff like variables, if statements, loops, etc. You probably had a course in data structures and algorithms where you learned how to code your own lists and then how to sort them. You probably learned about object oriented programming with tons of examples about how a dog is a type of animal or maybe a foo is a type of bar. You probably wrote a ton of little one off programs to count the words in a file, calculate fibonaci sequences, fling disks around the towers of hanoi, or calculate interest rates.

Probably by the time you were deep into your data structures class you started zoning out, because heck, you can get by just fine with arrays. Same for algorithms, why are they making all this stuff so complicated, I can do most of this with just if and while. You never had to write a program more than a few hundred lines long, so object oriented programming just seems like confusing overkill. So do functions for that matter since you never had to do the same thing more than once in your program.

The problem is, you were taught all that shit in a vacuum and nobody ever told you how to put it all together. Since the programs you were working on were so simple, you never ran into the problems that those techniques were meant to solve. You were taught tons of theory, but nobody ever sold you on it. You have no idea how to apply all that stuff you learned. When and why to use each little bit of theory.

Maybe you tried to bootstrap yourself, start writing your own real programs. Maybe you had some success, most likely you got bored or frustrated and collapsed a few days later under the cruft of your own code base because you had no idea how to structure a real program.

Of course your professors will tell you that what you really need to learn wasn't the job of the university. They are there to educate, not help you get a job. I can understand their point of view to an extent, but what would you say about an english major who just got their BA and doesn't know how to write more than a 2 page paper. Theory & knowledge are just giant pile of bullshit to a person without a proper impetus to apply it in a non trivial application.

I realize there are some awesome colleges out there that are probably nothing like this. Given what I still see out of the junior developers I work with, I would say they are still the exception rather than rule.
This is how you make your users upset.

Speaking personally I have personally encountered times when PostgreSQL (this was in the 8.2 series) simply Could Not Find The Right Plan. I looked at the tables and indexes. I saw the right query plan. It did not. I did not have DBA access so I had no ability to try to figure out why. However I did have the ability to rewrite my query into two, with the first going into a temp table. This effectively forced PostgreSQL to use the query plan I knew would work, which caused my query to run in under a second as opposed to taking multiple minutes.

I had similar experiences with Oracle, and used query hints very successfully.

I don't dispute the claim that this likely happens only on 0.1% of queries. Based on what I've seen in Oracle, I also suspect that most people who use hints use them as voodoo, and most of the time use them incorrectly.

However you're much more likely to hit that 0.1% if you're writing very complex queries (which happened to me when my role was devoted to reporting). People can learn how databases are supposed to work (I certainly did). Even then I acknowledge that 95-99% of the time it does better than I could. But it is still really, really helpful to, in the remaining 1-5% of the time when the database goes wrong, be able to tell it the right way to do its job. And in my personal experiences, the cases where the database gets it wrong, it wasn't a temporary problem - it stayed wrong.

But they don't acknowledge the existence of people like me. They assume that I must be lazy, ignorant, or have had my bad experience decades ago. Because their wonderful software certainly couldn't have given me bad experiences in the last 3 years. (I'm no longer in that reporting role, so I don't hit that case any more.
How we made a $25,000 website for $3,000
Entering multiple crushes seems a crappy thing to do to me. Be interesting to see how many do that.
The Three IT Roles: The King, Sage, and the Cog
I agree.

Maybe i'm not on the same page as the article author on what he meant by "event driven" but if he's talking about websockets/comety web servers, then as I mentioned in a comment below, the difference is that in a traditional web server the customer has to keep calling back to know the status of the pizza (polling) versus having the pizzeria deliver or call the customer back for pickup (server push). Fewer communiques overall.
Do you mean the salt? Most of the time I see passwords stored it is through one-way functions, not universal keys, and in the case of a salt they would have to construct a rainbow table and even then they still wouldn't be able to get my password, its just too long. They might be able to get a string that has the same MD5 (Protip: don't use MD5s for password storage) as my password, but if its a salted password it doesn't matter anyways.
> Why do you say that the author knows what he's doing?

Jeremie Miller wrote a popular open source IM server and created a specification for the protocol which has been widely implemented in several different languages (Erlang, C, Python to name a few) for both client and server.

Many of the functions solved by XMPP (instant messaging, presence, federation) fit nicely into the distributed social network problem domain.

So that's why I have confidence that he knows what he's doing. Nits like "I don't like different XML namespaces" more or less miss the forest for the trees.
You might be interested in: http://taskwarrior.org/
How the hacking scene in The Social Network should have gone
Why are people upvoting this comment? not fully implemented and readily available != magic.
Thank you! Looks interesting. I'll check it out.
That's correct, it's hosted on EC2. We plan to host other instances on different cloud providers, to the same effect.
I am of a massively generalist bent: I agree with you. I've found that there is tremendous cross-fertilization between topics.

Of course, most places I've dealt with have no desire to hire someone who is a generalist: specialist or get out is my observation.
I was a Google die hard, but just took the DDG plunge. It seems to be returning much better results, at least for my work areas of Cisco, crypto, and programming.

It takes 2 seconds to set it up as default in Google Chrome. Thanks for not forcing me to fight my browser, when I don't want to use your search , Google.
It's very easy to hide people from your news feed without having to actively avoid them. Click the X next to their posts.
Indeed, I mean "many" :-)
IBM BAL360---Basic Assembler Language
"Event-driven" architecture doesn't imply a fundamentally different way of handling requests than thread-based. The only difference is that in an event-driven architecture, the scheduling is handled in the userspace code. In a thread-based architecture, it's done in the kernel. The advantage of doing it in the userspace code is that it can be done in a simpler, more specialized way.

The hardware is doing fundamentally the same thing either way, but in the threaded model, it's also doing a lot of other stuff that you probably don't care about.

So, to explain it to my grandma:
It's just a simpler way to think about it. There isn't really a big difference.
What you want is a different program. Call it software engineering. I agree that too many people seek CS degrees, but that is not a good reason to change CS into something that it is not.
Medicine has a much more rigorous training program.
I own a product and now building a second one. Founder and developer of http://www.mockuptiger.com
Yippy should change their search page to be lighter.

I browse through Tor during the day. I realize I'm an extreme use case, but the header image loaded painfully slow. I imagine it's the same for people with slower Internet connections, too.
What you said is true; however, there is a huge market of people who will grasp at any opportunity that will allow them to stay within their comfort zones. Sometimes just the small chance that something could happen is sufficient.

For example, somebody forwarded me that stupid "Bill Gates will give you money if you forward this email" message, and they commented, "This probably is not real, but just in case it is, I am forwarding this. I am really strapped for cash and will take any chance." This desperation, be it for money, for companionship, or for any other strong desire, is ripe ground for snake oil. And the snake oil is that much stronger if it works -sometimes-... like hoping you win the Power Ball to solve your debt problems and seeing that there are average people like you who are winning it.
My text indexer is using a mmap'd hash table too, and that's exactly why. :)
Facebook or any other social network works on our egos. We all want to show off how witty we are and how happy we are.Thats why we always see only the happy side of a persons life on any social network.

And thats the reason you see only a 'like' button on Facebook. Enable a 'dislike' button and you will see many more dropouts.

Actually, we can try one more experiment. The next time we don't like something, we say 'dislike' in the comments.Lets see if we can do that.
Development for Designers
FWIW:

http://news.ycombinator.com/item?id=126923

http://news.ycombinator.com/item?id=342635

http://news.ycombinator.com/item?id=517039
Ireland and Greece are COMPLETELY different. Greece's government budget is wildly fraudulent. Ireland's government was responsible, but decided to encumber taxpayers with private banking losses. Irish voters, like those in Iceland, may yet reject this deal.

I know I would. The international banking cabal has captured the "democratic" processes across most of the West and is using those governments to plunder their people.
What was wrong with the original title? Why add "sleep hacks" to the front of it?
Not exactly the same feature. It would only notify both users if they mutually assigned each other as crushs.

They removed this and other features completely in the new redesign from last year.
This is a complete aside from any contents from the article...

This is what I see....

23."You will be lynched"
24.A Beautiful Race Condition

That's Just Wrong. Completely by accident, but still Just Wrong.
Honestly, I think your superhuman then. For the most part I don't think ANY programming language is understandable without well named "tokens".

I'm curious, do you think you could tell me what some arbitrary C code does that I give you, where I've changed all the variables to "a", "b", "c", etc...? I'd be hardpressed to believe anyone in the world could.

Is APL structurally so expressive that huamns can easily extract meaning from structure? If so this is the single great accomplishment in the history of computer science. This dwarfs any contribution from Lisp, C, FORTRAN, theory of computation, etc...

And the fact that I know some of the people that worked on the original versions of APL at IBM, yet they never mentioned this, makes me suspect.
TL;DR: they used spec work design sites.
I'm a ridiculous insomniac. I use melatonin supps to help normalize sleep patterns -- one 5 mg pill at 9 or 10 pm and I'm toast by midnight at the latest.
"The advantage of doing it in the userspace code is that it can be done in a simpler, more specialized way."

No, the advantage of doing it in userspace code is that you can paper over the deficiencies of the layers under the one you are working in with significant manual effort. Node.js introduced the concurrency problems when it selected Javascript as one of the layers, it doesn't get much credit in my mind for then solving them at great effort and with horrible damage done to the resulting program structures. The problems Node.js solves are not fundamental to programming, they are fundamental to Javascript.

Pick something like Erlang and the problem never exists in the first place. You don't have to paper over the deficiencies in the lower levels, because the levels below the code you're writing aren't deficient for concurrency in the first place.

I should point out that in general this is not necessarily a bad thing; alas, there's always some way your lower layers are deficient, and it's far worse when they make it impossible to paper over the problem. Still, you will never end up with simpler code. More specialized, oh my yes, but certainly not simpler. And the wisdom of picking a layer that is fundamentally deficient for your core target problem then papering over it seems pretty limited to me.
Yeah, maybe putting customers on hold is a better analogy. At which point the limit becomes the phone system's number of maximum customers holding.
Hmm, am I missing something. Aren't folks that have crazy amount of traffic going to underpay? And if rackspace is making money at the end, doesn't it mean that by definition that those users without a crazy amount of traffic is overpaying.

Uhh, reminds me of another topic on HN recently with Mozy no longer offering unlimited backup? Again, no free lunch.
An excellent similar site is Understanding Git Conceptually: http://www.eecs.harvard.edu/~cduan/technical/git/
Lenscape a html5 canvas tutorial
Ask HN: What are ten HN startups I can give a free table to LAUNCH?
Dear HN,

I've got 150k square feet for the LAUNCH conference in San Francisco (in two weeks on Feb 23/24). We have 100 table tops (cocktail tables) just like at the Techcrunch50 show available.

I'd like to give 10 free tables to the startups that ask and get voted up the most in this thread.

That's a table, internet, electricity and three tickets to the event--on me!

Seriously, let's pick 10 companies that could use exposure to VCs, press and angels (there are 300-400 VCs and Angels coming to the event, as well as over 100 press already registered).

Note: two folks in the expo area are going to get to take the stage at the event. They will be selected by grand jury members.
I was expecting a comparison between different college degrees, not high school vs college.
This is definitely missing an "I'm working part-time on my startup" or "I'm consulting part-time to fund my startup".

Personally, I'm working two days a week to pay the bills, and spending the rest of the time working on my startup. I find working only two days a week, it's a lot easier to keep perspective on my real goals (start my own company) versus short term goals from the "real job" (fix a bug, get a feature out the door, etc).
> It's just like almost everything else programmers do. If I dash off quick program, I don't expect the VM figure out how to make it perform perfectly. Why would I expect database software to be different?

Except that SQL wasn't designed as a programming language. It was designed to be a declarative language that normals could use.

In a normal language, you have the freedom to express an algorithm in a billion different ways. You're expected to find the right way to write it. That SQL falls down here is a fundamental flaw in what was supposed to be it's greatest strength.
re: 'what they receive': 'they are afraid to take the next step' doesn't feel right. of course they are afraid (that's why they're using the site) but it doesn't put them in a good light, right from the beginning. alternatives: a) make it seem like only really cool, confident people use this site b) make fun of it, 'this is a site for super shy people who are actually really cool on the inside but have social anxiety...but you should still give them a chance!'
The PostgreSQL planner has always done a flawless job for me in terms of choosing between indexes and tablescans - on reasonable queries.

While that has been my general experience as well, things can break down at the edges sometimes. I sometimes have to join 200m-row tables that don't fit into RAM (though individual partitions of the table do), against 1-10m-row tables of new data. This task is probably something more suited to Hadoop, but we're using PostgreSQL for it as that's where the data is.

With a plain vanilla join using indexed columns for the join, the smaller table is scanned while an index is used for larger table on the joined column. This is reasonable except for the fact that this results in a lot of random IO, so if you don't have an SSD or something, this will be slow. Of course, you can just increase the random_io_cost or whatever it's called, to adjust costs estimated by the query planner. I believe that results in a sorting operation for the tables before the join. Sorting can be better compared to a thrashing disk, but still slow.

The core issue is random IO here, so how about just warming up the cache for that particular partition's index/table with a big sequential read of the entire index/table, and letting it use the index-based query plan as usual? The sequential read takes a minute in the worst case for a single partition, but then when everything's cached.. BAM. The join query runs in 2-20 seconds (for a single partition, one of 26). If Postgres were psychic, it could have done this itself instead of making me force caching with an otherwise pointless extra query. But I suppose that behavior would usually not be desired, as it would destroy the existing cache. In this case, destroying the older cache was the right thing to do, but Postgres can't know that.

The whole point of this comment being: DBAs matter and you can't rely fully on the query planner to do what you may expect. Even a scrappy one like me (I'm mostly a programmer, the DBA stuff just comes with the territory for me). This is partly in response to a comment elsewhere on this page, mentioning how the query-planner is better trusted than a DBA - I wish it were always so.
You based in London ? - I run a recruitment startups if you want to grab coffee or something sometime.

There's actually quite a few recruitment startups around this area, maybe we should organize a dinner for us all or something.
Software Engineers and Chainsaw Juggling
'The New York Times' & 'Guardian' Editors Will Support Assange if Prosecuted
Typo in first sign-up input box, should be "Your" name.
You're advocating unrest? The government has disbanded and elections have been called. They're in for a kicking, which although short of full-on political reform, is something several hundred people had to die for in Egypt.

Would it satisfy you if we burned a few cars? Where do you live? I'll meet up with you later and we can tear your street to shreds if you like.
Yes, International companies are welcome to apply and compete.
I agree that FB is dead simple to use; I just wish it was just dead simple to protect my data.
I quit LinkedIn a couple of days ago. I got a status update of some contact or other, and thought: "What is this? Why do I have this?"

I feel much better not having something that felt so obligatory, yet so unlike me.

These networks seem to leverage social pressure as much as they solve problems.
I think they just have an extremely slow server.
Avoiding information leakage, whether in terms of error cases (e.g. incorrect padding on crypto showing a different error, leading to a padding oracle attack) or in terms of user-facing content (e.g. exposing whether or not a username or email exists in the system) can be difficult. That said, you should always err on the side of showing a single message rather than multiple -- in this case, always show success. This is common practice in certain things, like always showing "incorrect username or password" rather than "incorrect username" and "incorrect password" messages, but most people don't consider it for other things.

The less data you give to users about state that isn't necessarily theirs, the better.
Quantapps.cc aims to become the major player in the mobile application space with a totally new chance for developers all over the world
Learning from Kenneth Cole's Social Media Mistake