skysight-inc/HackerNews huggingface dataset:
This is a long article, but I wrote it based on the conclusions from many HN discussions. I think you guys will like it if you can bear with it, and I'm also really curious as to what your feedback might be.

I never thought when writing programs that I'd have to ask myself "Am I doing good or evil in the world here?" After all, it's just so many bytes, right?

But I'm not so sure about that anymore.
Also, the story reads like a fable in a SF setting. 'Realism' doesn't seem a fitting priority. A more believable account of the mental processes of the crew would add bulk without substance to the narration.
Mobile ads in India hold great potential: Study
Laughable++. Programming as a profession won't exist in 100 years, maybe not even as an archaic hobby. Our machines/AIs/robots will do it for us in much the same way that photoshop has replaced the darkroom gymnastics of 1909. Look how far away web design is from newspaper layout of a century ago. Maybe computers will be modeled on the brain with billions, maybe trillions, of cores (neurons) and trillions of interconnects. We wont be using arc, java, or even python to program them. We wont be programming. The "brains" will be so much better at it.
They've got a twitter account: http://twitter.com/milw0rm
Ask HN: What's a good database schema for "Top comments in last 24 hours"
So my friends and I are hacking away at a project, and we're trying to think of a way to display a list of the top comments in the last 24 hours. What we have now seems a bit too hackish, so any help would be great.

What we have so far is a MySQL table with 25 columns. 1 column is ID (arbitrary), and the next 24 are the 24 hours of a given day (12am, 1am, 2am ... 10pm, 11pm, 12pm). Every comment has a comment_id and points. When the comment gets a point, its comment_id is inserted into whatever the hour is.

So when comment_id 84 gets a point, and the time is 2:30pm, we stick 84 into a CSV list at the 2pm column. If the comment racks up 3 points, it will end up looking like this:

2pm -> 84, 84, 84, ... other comment_ids

When we want to display this list, we basically create a list (descending) looking for duplicate comment_ids. Is there a better way to do this? I feel like we're doing something wrong...
Don't know how transformational it has been yet, but I feel the idea that all side effecting code needs to be specifically noted by the programmer, a la Haskell, will one day be seen as a watershed.

We're only at the very early stages of the parallelisation of hardware, but as that trend intensifies, I can't imagine compiling efficient code without explicit compiler knowledge of what code might side effect.
How about regular expressions as an essential part of a modern, general purpose language (rather than a separate mini-language)?
I didn't say it was the focal point, but it is indeed quite central to the thesis defended.

There are comments to this effect in the blog's site too, and the author felt the need for the footnote. Thus, it's not just HN bias.
It depends how you define "user-friendly", which is not as obvious as it seems.

The question is who is the 'user' that it's friendly to? The power-user who uses an application every day where the initial learning curve will consist of a relatively small amount of time compared to the speed and frequency of doing tasks, or the new user who is likely to do something only once and as such will never get past any 'learning curve' and only the initial understanding matters?

Is it "flawed" to intentionally develop something to focus on the prior but not the latter? Is it a fair trade-off to deliberately increase the learning curve for long-term flexibility and power?

If the Unix terminal isn't to some degree "user-friendly" why is it rediscovered by successive generations who notice its speed, power and flexibility over the alternative GUI interfaces? When given a /free choice/, why does a certain subset of users /choose/ the terminal over the GUI interface?
I agree with everything above, except this one:
"they want drag and drop."

In my experience users hate to drag and drop. And they never drag and drop, with an exception of very few Apple old-timers, because Apple GUIs historically have been using drag&drop more heavily, as opposed to Windows users who are more conditioned to right-click on everything.

Drag&drop never works in user interfaces because 99% objects in everyday software are not draggable and users are not conditioned to even try. Buttons plus menu is what people are used to.

P.S.
This opinion comes from reading hundreds of support emails and replying "have you tried dragging it?" over and over and over again.
There is something very similar to Ubiquity by a startup called Wundrbar. Here is a comparison of Ubiquity and Wundrbar.

http://blog.wundrbar.com/2008/08/wundrbar-vs-ubiquity-our-th...
If I may add one more thing: When the user types "map", who said that he wanted to add Google Maps? He might be a Yahoo or MSN map user (in fact, there's a higher probability that he is).

Since Google Maps and others are equivalent in functionality, with minor differences, this is not the best example. When, in the video, he added an event, to what calendar was this added? Google, a desktop program?... Because it'll not be easy to convince users to switch services just so they can save two or three keystrokes.

Like you said, besides having users learn a new language, Ubiquity would need to figure out (and correctly interpret) hundreds of possible combinations.

This will probably gain some traction with certain segments of the population, but it's far away from its promises.
The problem with this advice is that it is not particularly useful.

In the event that your canary account receives a spam message, you will have gained one piece of data: that at some point in the months since you installed the account, it is likely that someone exploited a problem that exposed a table column in your database.

Now what?

You don't know what the bug was. You don't know how far-reaching the damage is. You don't know when the event occurred. There is, in fact, almost nothing actionable about this information at all.

You might be telling yourself two things:

* That, upon learning of the possible breach, you will lock down the security of your code and your site. Of course, think for two more seconds and realize this is ass-backwards; if you can reasonably lock down your site, you might as well do it before you burn your whole database.

* That, upon learning of the breach, you can get all your users to change passwords. Which, of course, you will never do, because you will be taking an enormous reputational hit over circumstantial evidence, and for the purposes of seeding your database with a couple thousand new passwords for the same attacker to steal.

People like this "canary" and "honey token" stuff because it's fun. But it's not valuable.
If anyone is looking to get an e-book reader for CHEAP (to see if you'll even enjoy reading a book without paper), I bought my wife an eBookwise at Christmas. Her (and I, haha!) have been enjoying it since. It's old-school (still uses smartmedia cards!) but gets the job done, and I didn't pay with an arm and/or leg.
Jeff Bezos doesn't sell a service, he sells goods.

Well, other than EC2 and such, but arguably they are not what you think of when you refer to 'Amazon'. This actually makes me wonder if there is a breakdown of income for Amazon separating out services and goods.
This doesn't even make sense. Twitter is a broadcast medium. Facebook isn't.
I did this for a couple days and turned it off. My Twitter feed is very noisy, and looks retarded to the 30% of my Facebook contacts who don't live their lives in front of LCD screens.
I'm just going to remind you that if you are talking about your code and you are using words like "salt" and "rainbow table" you have already lost.
Hold on a second, are you implying that TARP money, i.e. the cash I had earned and paid in taxes, should be used to rescue "unhappy and frustrated" credit-loving consumers like yourself, who just happen to love his $750K Arizona (!) house so-o-o-o much that I'm supposed to feel sympathetic for you?

Since apparently I am paying for this mess along with millions of other young working professionals, foreclosures is what we want. Yes, foreclosures and 3x reduction in real estate prices, because our economy doesn't pay salaries that let us save up $750K for a house in the middle of nowhere.

Your "investment" should be up for sale for $350K and you should be rebuilding your credit while living in an apartment.

And please leave banks out of it. They only gave you what you asked them for.
Crow are not more intelligent than orcs in warcraft 3 which can, for example, patrol an area and autonomously engage any enemies that come near.
I think he was making the point that Nokia has dominance in Asia (as opposed the the iphone in the US).
I think there's such a thing as choosing your battles.
SELECT * FROM comments WHERE posted_at > SUBDATE(NOW(), INTERVAL 1 DAY) ORDER BY karma DESC LIMIT 50;

My SQL might be a bit rusty, but you get the gist of it. Why not do that?

Your question is a little confusing without knowing the schema you are using already. Do you want the top comments of each hour?
I would add a time stamp for the last update and a total column. Update the total and timestamp every time you update a bucket. Zero any buckets between the saved timestamp and now. To get your list select comments updated in the last 24 hours and ordered by total. You will have some rows with artificially high counts, because of numbers older than 24 hours. Adjust the totals for the row and keep reading until you have the number you need. If you cache the list, you dont even need to do the select except on restart. Email me if you want clarification.
Um, very. 25 columns?

Just record each commentid and vote like so:

create table vote_history (
commentid int,
ts int
primary_key (commentid, ts)
);

Where ts is a unix timestamp. Now you can get rankings for any time slice:

select commentid, count(commentid) as points from leaderboard where ts > <TIMESTAMP> group by commentid order by points desc;

That gives you to-the-second resolution, which is probably overkill. So instead you can try this:

create table votes_per_hour (
commentid int,
hourid int,
score smallint,
primary_key (commentid, hourid)
);

Where the value of hourid is the unix timestamp divided by 3600.
How do you test your throughput?

Wondering, because by the nature of TCP/IP, it's hard to get the full capacity of a link with a single TCP connection -- such as an HTTP download. You'll get much closer to full utilization with multiple connections -- such as with P2P app parallel downloading.

But to further complicate things: if you are saturating your uplink (as is also typical with P2P apps) on an asymmetric service, you may impair your download connections' throughput (as upstream ACKs on the downloads are occasionally dropped). So you should also cap your upload rate to something under the uplink capacity -- the P2P app or a home router may have configuration allowing this.

With those in mind, I've usually observed my throughput on DSL or cable modem links as much more than 60% of the advertised speed -- and sometimes more than 100% of the advertised speed!
Man that's some excellent writing. I'm seriously jealous at your ability to write like that, I'll need to practice more :)

I did spot this little HN reference in there:

"Programmers are creating "no procrastinate" options for their web sites in order to help users not spend so much time there."

thanks for all that work!

I agree with your premise that technology is addictive, I think it somehow fits in with our fascination with tools in general. After all humans are 'toolmakers' par excellence, tools mean survival, food and progress, no wonder we should become addicted to them.

Your analog with heroin and the time required to figure out what was happening reminds me of the old story of the frog and the boiling pot: If you put a frog in a pot with hot water it will jump out immediately, but if you slowly raise the temperature the frog won't notice the problem until it is too late to jump out and it perishes.

Not sure if that's a true story but that's how I remember it.

I'm passing your article on to my 15 year old son to read.
It's not. HN will automatically link you to the previous submission.
If I had to guess, I'd say Scala.
I'd be interested to see concurrency baked into Ruby or Python the way it is with Erlang and Clojure. Until then, my eye is on Clojure.
Yes, utterly and absolutely.

If you're a designer: personal websites are a sandbox where you can experiment with new designs, see what works for what kind of content or app, try out latest trends (if you're like that) or buck them with your own style.

There's a book on the subject by Joe Shepter called Personal Web Sites: Top Designers Push the Boundaries with Experimental Design and Graphics.

Amazon link: http://tinyurl.com/cfqz67

If you're a coder: your site can give you a place to tinker with building basic projects like a blogging engine, picture portfolio, a useful app or etc. And if you blog out your process and share what you've learned, you can slowly build relationships with others and some googlejuice for your efforts.

These are all things you need to try on your personal corner of the internet that you can call home and that has your stamp on it - being able to customize a theme on someone else's site isn't enough.
The proposed CSS only triggers for small-screen mobile devices, and as the test pages indicate, it improves readability.
You live in Argentina and you don't know how to cook beef?

What can you do with chuck, kragen? You can, if you are among the 4% of people in the US with the means and expertise, grind it into hamburger or chili meat. You can, if you are among the 10% with a crock pot, make pot roast.

Otherwise, you can cube it and braise it for a stew, and that's about it. Most families can't do much with $20 worth of chuck.

A package of chicken breasts --- enough for 4 people (in my house, 3-4 breasts) is between 1.5 and 2 pounds.

I'm not sure your evidence is rebutting my argument.
It's useful to have one, because prospective clients will go to your domain to see what your work looks like. If you have a domain but no web site you get questions. If you have a portfolio, then it is not really a requirement, but it does add to the image of professionalism. If I were you I would go for simple but elegant with links to your blog and sites that you have done.
I'm not exactly sure that's what she's saying. What she's saying is that she is, not to put too fine a point on it, fucked, and that if the banks foreclose they're likely to lose more money than if they try and work with her to render her situations less fucked.

Not so long back, a client of ours ran into major trouble. They were left with two options - pay suppliers a percentage and then sell what was left, or put the company into bankruptcy and let the creditors work out who to pay what.

We decided that a guaranteed percentage now and the continued goodwill of the people we'd worked with was a better deal than an undetermined amount at an undetermined later date - so we dealt (more accurately, our MD did; I don't really get involved in that side of things).

So far as I'm concerned, the interesting question here is not whether or not she's an idiot, it's whether or not she's correct that providing the financing she needs would be a net win for her banks over foreclosing on the mortgage. I don't know enough myself to have any basis to make that call, but what's currently infuriating -me- is the fact most of the comments seem more interested in attacking the OP rather than discussing the financials :)
My other comment includes a link to a demo of larger, better spaced voting arrows for the iPhone.

The grandparent issue -- clickable links in top text -- can be fixed with a bookmarklet, even on the iPhone:

http://news.ycombinator.com/item?id=430725
All laws distort markets. Are laws therefore socialist? Are all areas not regulated by government free markets? I think the answer to both questions is no. Laws are sometimes the platform for free markets and unregulated areas are sometimes ruled by nepotism and corruption.

With regard to net neutrality we should think about how access to markets for startups would be affected if net neutrality were to go. I'm not sure, but I suspect that without net neutrality starting a startup could become a more capital intensive affair. The amount of regulation in the form of complicated contracts with telcos could dwarf the amount of regulation that a pro net neutrality law would create.
Already posted: http://news.ycombinator.com/item?id=468379
Seth says that, if you are an arrogant asshole (my words) with lots of clients/karma, more power to you.

If I were writing that post, I would have said that when the client is paying the bills, give him what he wants (within reason). If the customer is being such a jerk that the delivered design would damage your reputation, walk away from it.

Customer input on the design of your website is very valuable in the abstract but almost always wrong in the specific. If you jump to implement every request/suggestion, you cause yourself damage. Reflect on the suggestions and do what makes sense in your way. This comes from the been-there-done-that school of advice.
Essential? No. You get a web site to fulfill a need. If you have no need for a personal site, you don't need one and shouldn't have to get it.

That said: I use my personal site to organize the work I've done, and that's something that no other web site does well, so for me (and very possibly for you, if you do lots of work), the organization makes it worth it.
Facebook Cassandra Architecture and Design [login required]
Mysticism with no empirical component is dangerous - but if you read that as a practical suggestion it will work a lot better. I.e.: do the work, don't wait for flashes of inspiration, and don't think that if you don't have any such flashes, that you're a stupid failure, or that all you have to do is have a great idea.
What's funny is that even all the latest trace-compiling (V8, TraceMonkey) and JIT-ting (lots of others) implementation technologies for dynamic languages date from the early 80s (the Schiffman-Deutsch JITting Smalltalk compiler, specifically).

Though there was also a fair bit of Self optimization work going on at the same time--don't know if Alan's and Peter's work was the very first of its kind.
Annoying to login, I had to activate the facebook account I have not used nor will really use.

But this is interesting stuff.

See an outline here:

http://perspectives.mvdirona.com/2009/02/07/FacebookCassandr...

"Facebook uses Cassandra as email search system where, as of last summer, they had 25TB and over 100m mailboxes."

Talk length: 1h 1m 16s
You sound like my boss ;)

Here's my beef against him: Lack of trust. If he says to me: "Do X", then expect me to do it.

If hours have passed and I still haven't done, and I didn't ask for help, then something is wrong with me. I have a task and I am not completing it. But you got to give me the chance to actually do it.

For example, he asked me to test a new mod_rewrite configuration on a server, and that I should use curl for it. I was going to do it anyway, so I kind let his comment go from on ear through the other. But then he said, hey, you must send an specific header because of the way our network is configured. That was actually useful, because I didn't know about this configuration.

So I typed "man curl" on the command line to know how to send a header. He said to me:

- No need to look on man, I will tell you what you need to send the header. Type -H...

I interrupted him and said:

- Wow, let me discover how to do this myself. Let me have a chance to learn.

So, here's the thing. There are struggles and there are struggles ;) If I am really struggling on something that is simple, give me guidelines, tips, and if I am still failing, then the problem is with me, not you.

You need to learn this about who you're mentoring. When they're struggling because they can't learn, and when they're struggling because they need to learn something.

In practice, it's way more complex than this. Looking on "man curl" about how to send headers takes one minute, so to me it looked like an offense when he was telling me how to do. Now if he asked me something harder, that would require me hours of studying, than perhaps he telling me what do would be better, since the problem will be resolved faster.

As a mentor, that's whay you need to learn. You need to balance all these factors to decide if you need to step in or not.

But first of all, like I said in the beginning, trust is the first step. Believe that your student can accomplish something that you thrown at them, and only interfere when the deadline approaches, and the problem needs to be resolved right now. And then later, review what happened. Will this person ever learn this? Is this really that hard that learning about it takes 5 hours instead of 1 hour? Does that mean perhaps he's not the best person for the task? Does this mean that he will never be the right person for the task or will he grok it sometime later?

Questions, questions everywhere ;)
Another (earlier) thread on a similar theme:
Ken Robinson says that the teachers who can encounter their kids and allow them to be creative can thereby allow them to have tools they'll need in the present post-industrial world.
He specifically mentions what he calls "inflation" meaning a BA used to be something, then it was an MA, and now a PHD.
I've watched it a few times now. His point about valuing math above music or art is well taken, by me anyway.
http://www.ted.com/index.php/talks/ken_robinson_says_schools...
I would say the programming aesthetics really do count for something. This has influenced Python, Mathematica, Arc, Fortress, and the list goes on. Yet it's fairly new.
Hmm,

It seems like that might be the next transformational idea, since it hasn't transformed mainstream language yet.
Aside from the issues mentioned (#1 up/down vote arrows too small and too close together, #2 screen is too wide, which makes the text too small, #3 links are useless without copy and paste unless they are live or super easy to remember):
#5 When you click into the comment or reply box, the iPhone goes into a super-slow mode when trying to type. I found that if I can pinch and make it smaller, then everything works just fine. But, it's hard to do quickly because you have to grab space outside of the actual comment box.
#6 Flash. I hate clicking on a link to be taken to some lame Flash-based site. Some kind of warning or flag or something so I don't waste my time. This would be nice on the desktop too, but it's quick enough that it isn't a big deal.
#7 The "home" page link is pretty hard to hit all the time.
#8 The comments link is often hard to hit (without hitting the story right below).

I do about 80% of my HNing on the iPhone, so any improvements would be huge. Thanks for looking into this, Paul!
Ask HN: HN useability problem: multiple visits to comments clumsy
Does anyone else suffer from the problem that, when, reviewing comments for the 2nd or later time, you can't tell what's new from what you've already seen?

This makes it pretty tedious to figure out what's new.
Typesafe generics have been in ML from the get-go (1970s) from what I remember. People like to talk about how type inference is useful, but it's really the generic polymorphism that makes it shine.

I was hacking together an Arc interpreter in Haskell the other day, and after refactoring some of the hairier monadic code, I was horrified to see that the type signature for a particular function was twice as long as the function body. And that's with the compiler figuring it out for me... I don't know what I'd have done if it was C++ instead.
People claiming that technology X will kill technology Y should most certainly make an attempt at understanding what technology Y is first. This person clearly does not.