skysight-inc/HackerNews huggingface dataset:
It's more that you can install "extensions" just fine, but need to be logged in to get "web apps". In reality, both are Chrome ran code, but there's the distinction there. You can however install basic extensions like adblock or ghostery without logging into Chrome.

(It won't help you on the anonymity standpoint of course, because every Chrome has unique id that's recorded when you log into any google service)

It's the "we require login to access any google docs documents if you use chrome, but don't need it if you use other browser" that's more annoying than web apps in my opinions.
That headline just makes me sad.
One of the answers contained this hypothetical error message: "I'm sorry that the user interface of this program, your past experience with it, or experience with other similar programs, have led you to believe that you could take such an action at this time, but you can't because ...."
Opened link in a tab in the background and started reading another article. Suddenly "Game Over!" popped up and disturbed me. Nice work, random HTML5-game I didn't yet try.
A Million First Dates
Taking away the chunked consideration...
Yes, and that is just one level. When you write about programming you have to be very clear about what you are trying to get across, and when you put that focus into practice other things suffer because you are competing against the rest of the world for the reader's attention.

Kernighan and Ritchie could have decided to write the book as absolute hard-asses, making the most bullet-proof copy routine imaginable, but in the end they would've been writing a different book, not a primer for a language.
Customers are not as inevitable as gravity. How do they find their customers?
Is just me or there isn't a way to browse?
I'm using a Motorola Lapdock with an MK808 PC-on-a-stick right now to post this message. I'll never buy an Apple machine again; instead I'll just upgrade the PC-on-a-stick to something new, in a few months.

Everything my mega-Linux DAW workstation at home can do, this thing can now do. I don't need Apple; the ultra-light solution I can stash in my pocket, plug into my friends HDMI screen, or hook up to a lapdock, is all I need ..
Organize your Scientific Knowledge- Best Scientific iPhone Apps
There are many other good reasons to use C besides performance.

For instance:

- cross platform portability

- predictability

- reliability

- long term stability / maintainability

- low run-time overhead, fine grained control of memory
Good game, but i m stuck at merchant page where i have $0 coin but it insisted me to purchase at least 4 pieces.
Yes, but it's Microsoft customers who implicitly agree with Microsoft policies like pressuring OEMs to not sell computers without Windows Tax, or the whole Secure Boot debacle.
> So, you create something that does not fulfill the C library invariant of what constitutes a "string", and then pass it to a copy function that assumes this invariant?

From the article:

> Some folks then defend this function (despite the proof above) by claiming that the strings in the proof aren't C strings. They want to apply an artful dodge that says "the function is not defective because you aren't giving it the right inputs", but I'm saying the function is defective because most of the possible inputs cause it to crash the software.

Zed's point is not that K&R is bad because their example code doesn't match C library invariants, he's saying it's bad because it encourages people to write code that blindly assumes C library invariants will always hold.

Certainly, if you're going to write C code there's some things that really do require blind trust (for example: that your code will be compiled by a conformant C compiler), but "all strings are safely null-terminated" is incorrect so often, and the cause of so many historic security vulnerabilities and crashes, that perhaps we shouldn't be encouraging new C programmers to do it.
Very nice screen. I have an iPhone 4S, but I'm thinking of switching to a Nexus 4. I'm glad to see that it doesn't have to be ugly.
Zed and his writings are not to be taken too seriously.
Startup lessons from Arthur C. Clarke, Isaac Asimov and William Gibson.
Though it might come across as 'dealing in absolutes,' Zed is making the broader point that when one starts learning programming, it's not good to put any book on a pedestal and blindly follow their style - without working through the code.

It's similar to literature where people tend to ascribe the word 'classic' and yet rarely bother to read, understand or appreciate them.

Your example of unsafe functions might work for you but might not be the best example in a book which is being revered as "the classic book on C" and which influenced almost every major language and book thereafter.
KnockoutApp: a framework for KnockoutJS
K&R is hardly the only book written about C, nor is it the best. You should definitely not stop learning about a language after you've read just one book about it.

K&R C was best practice in 1980 or so, since then we've learned a lot about C, about what to do and what not to do. If you still program C like it is 1980 then you can't really blame that on a book from 1978.
> luxury car
> "When we created this car, we really tried to make you feel comfortable, treated well and respected"

Do you really believe that? Do you think that cheaper car makers try to make me feel unconfortable, treated badly, etc.? Or at least don't care about it?

I think the most part of this feeling could very well be some suggested feeling. You buy an expensive car, therefore it must be good, and the ads say nothing else, so you feel comfortable because you have been told you should.

Many recent luxury cars do not give a damm for the owners convenience, it shows very well in the fact that most do not have a simple audio plug so you can plug your ipod or phone. Just like we have been told the chemical smell they add on detergents is the smell of clean clothes, and just like we are told that the more toothpaste we put on the brush the cleaner the teeth (in fact, only the brushing is useful, no toothpaste at all is ok too).
I agree - that's why I started by saying that Zed is right to point them out, as I realise that he is teaching people new to C (and potentially to programming). I added my caveats just to point out to the slightly more experienced programmers here that it's not quite the whole story.
Android Now 'Outshines iOS In Almost Every Aspect'
I am midway through K&R, but now I am curious, what other book would you suggest?
So in a dynamically typed language, we then add type checks everywhere?

Because we wouldn't want a function to accidentally process data that wasn't meant for it, no?
Good thinking.

I can imagine a scenario where you want the users to be aware of the feature and have the administrator act as a filter gateway.

Another scenario is when your application structure is too rigid and hiding the feature would cost much more than adding an error message.
The Captain's Manifesto
This caught my eye because a number of years ago I read a good book called "First, Break All the Rules: What the World's Greatest Managers Do Differently" which detailed the results of a survey of 80000 managers (performed by the Gallup organization), in which a main conclusion was the point that "people never change". So, when hiring people, you should expect that people will continue to behave as they have in the past.

This may seem obvious, but I've seen that a hiring manager will often hire a candidate with an unsuccessful record on the believe that, for the first time in the candidate's career, he/she will be successful in the new organization, (yes, I've done this myself also), only to be disappointed later. In fact, this pattern is really very common in my experience.
Apologizing a lot can also make you their bitch.

I don't know the right answer in this particular case, but I have had long, interesting discussions about this whole thing in the past. A few off the cuff thoughts rooted in those discussions: I think a better goal is to fix the problem, make amends, and avoid having any reason to apologize. Apologies tend to read as admission of guilt. If you don't amend the problem but you keep apologizing every time it happens, you are behaving like a stereotypical abusive spouse. In other words, if apologies without solutions are normal behavior for your company, you are, in fact, guilty and the customer is not really being unreasonable to want to treat you like their bitch.
To: johnconroy [dead] (I can't reply to that comment.)

Hi! I'm not a site administrator, so I don't know why you were hellbanned. I read your comments history list to see if I could found a cause (for example an extremely offensive comment, or spam) but I couldn't find anything annoying. []

I saw that a lot of your comments are oneliners. In this community we generally don't like them and they can get you a downvote. Try to expand them and add more details. This information may be useful for the other members and it's more probable to get a few upvotes.

For example: http://news.ycombinator.com/item?id=4161475

Says: "Bookmarked ..."

A better comment could be for example: (It depends a lot on your background.) "I work as a web designer. We have a giant banner with the html symbols at the office, but it's a pain in the back to find the correct one. We were tried to make short versions with the most used symbols but that wasn't useful. I will bookmark this right now."

Or sometimes it is good enough to upvote to the history (without any comment).

[]There are (probably) other reasons for hellbanning that can't be found reading the comments, for example massive sockpuppets.
Just an observation:

Political threads usually get several comments about being off topic for HN, some times quite strong. However, not one descenting comment for this, which to me seems equally, if not more, off topic.

I personally really don't mind either subject, but how is this considered more relevant to HN than politics? Seems people are just as interested.

I don't think this is a problem with this topic, even as a non fan its an interesting discussion. Its more interesting to me that the group reaction is different.
I didn't get a single I beam tetromino. This is clearly rigged.

Source: I play a lot of Tetris.
I'm not trying to be "kind". I usually like reading Zed's technical work and just express my opinion about this particular piece. I agree that debating the theoretical provability of correctness of programs may be interesting in some academic courses, but using it to bash K&R for their book's contents is, as I said, unfair.
I kept meaning to write a blog post about it, but it kept getting pushed back. Short story is: we got a decent number of users signed up, but no one was willing to pay money, everyone just wanted to get paid to play games. And by "no one", I truly mean 0%. A few weeks in, the server died and when I brought it back up, I decided not to restore the site (I had backups) but rather keep it down and rebrand it a bit, in hopes of making it clearer and more appealing to people. But I ended up getting way too busy with work and all that, and that never happened.

I opened the source a while back; it'd be cool if someone took it and actually made it successful, but I have serious doubts that it could ever work. I always knew that few users would be willing to pay money for in-game help, but capturing those few turned out to be harder than I thought.
Yes, we should, but my trail of thought tried to address the deeper (or tangential) rationale for humanized error messages. My argument was that if you humanize error messages, you are increasing the service towards your end user. You convey a message that says "I see that something limits the use of the application, how can I help solve this".

In general, the hierarchy of error prevention and solving should be this:

0. Treat the end user as a normal human being (obvious? well, I wish it was!)

1. Limit the steps a user has to take to a minimum, but no less then is required to execute the main goal of the application.

2. Focus steps as much as possible on doing something that satisfies a needed input by the user (i.e. minimize program management by the user)

3. Try to stop an error from happening before it occurs or asap. (Example: The stop sign when you drag a file in Windows where it can't be dragged, validation per form step).

3. When an error occurs, show a concise, friendly error-message, with is tells the user how to fix the issue or prevent it (if it can be done by the end user).

4. The level of apology should be linear to effect of the error: if the error makes the user feel disrespected, it stops him from finishing the task or delays him.
(i.e. apologise a lot if you application crashes, but a little if an e-mail address does not validate).
- if you hit a line longer than maxline you'll end up with a partial line in your 'longest' buffer

- if the line is so long that it will spill across several chunks of 'MAXLINE' length then you'll end up with the next to last bit

- you should probably use a character reader that uses realloc to resize the buffer area until even the longest strings fit or the program fails

- your getline invocation is wrong, the proper one is getline(&lineptr, &cursize, fp);

And the 'real' getline takes care of most of the above gripes, for instance all you'd have to do is to swap the pointer to 'longest' for a fresh one for the next iteration after finding a new longest entry.
Psh. We can get a 1080p screen on a 4" phone. Where's the retina air?
You could do a lot worse than getting a copy of Sedgewick 'algorithms in C'.
The equivalent errors in dynamically typed languages don't lead to critical security vulnerabilities like they do in C. You get a nice exception and a clean crash, not a hook to grab root.
Don't forget the people.

Long-time C coders are among the best programmers around. It's hard to understand just how damn good they are until one has gotten a chance to work with one or more of them.

The good ones know all levels of the hardware and software stack they're working with. Coupling this knowledge with the raw power of C, they can put together amazing and resource-efficient software in very little time, yet without sacrificing maintainability, security, portability and the other factors you've listed.

These are truly the people who make the impossible become possible.
He doesn't really mention "the Ultrabook of Ultrabooks," the Mac Air, either. I think that's just because he doesn't have much experience of it.

If/when Apple decides to add a touch screen to their laptops, they will be extremely close to the perfect machine, IMHO.
An error message means that the user is doing something you haven't thought about. Focus your energy on what the user was trying to do and solve it. That way you will avoid the error message at all.
Simple example: one of the most common error messages are misspelled mail/password in order to authenticate. Have you thought on other ways of authentication that might be more straight forward? that can eliminate the error messages altogether.
I'm SO glad Zed has pointed this out! I dislike code like this and I dislike it even more when people say K&R style is the best, it's classic, believe/follow the creators of the language!

Fu that.

It's error prone, just like Zed says. Add braces, don't be lazy, it makes the code flow easier on the eye.

IMO, In JS, it's painfully dangerous to be "too" clever as well.

Sometimes I like to think about it like so: Will someone else "with less skill than me" be able to follow this code after me?
Then again, being human I sometimes fail to think this way :(.
If you're illustrating concepts — such as iterating through an array to find a specific value which will be there because the data structure being examined is defined to contain it at some point, then writing a function that assumes the value won't be there is didactically bizarre.

Zed is suggesting that the teaching point of the code sample be ignored in favor of an altogether different and less useful teaching point. This is not a case of not understanding C (which he cleary does understand) but not understanding how to teach.

At best, his entire point could be addressed in K&R by a cautionary footnote or a later discussion of code hardening.
It's a 2-dimensional presentation; one can use the up- and down-arrow keys for subsection navigation instead of clicking links.
Popular suggestions (not introductory):

C Interfaces and Implementations (David R. Hanson)
Expert C Programming (Peter van der Linden)

I'm also a fan of C Programming: A Modern Approach (K. N. King) as an introductory book, but it's very different in intended audience from K&R. King is writing for students, and he assumes nearly nothing. K&R are really writing for experienced fellow programmers, I think. So it's an apples to oranges comparison. But King is certainly more modern. He includes a fair amount of C99 material. The writing can't compare with K&R. It's nowhere near as dense or elegant. But if you find parts of K&R a bit too dense and elegant, it's a good trade-off. (I used them both in tandem while trying to learn C this summer. It worked well for me. When King got too verbose, switch to K&R. When K&R lost me, switch to King.)
I concur, I wonder honestly whether this is a matter of hubris becoming more important than accuracy.

The accurate fact is that K&R C is a book about C. It is not the end-all, but rather an introduction to the language. Sure, it has thorns. Sure, you'd be a fool to adopt the style from it; this speaks more of the culture of its readership than the book itself, however. The authors are very honest that their samples are an attempt to engage the readers attention in the Language; especially the Ingenue, new-comer, non-Professional C programmer.

To that end, the book succeeds; new C programmers get an introduction, a light read, a good set of nomenclature to understand the topic further, and so on. It is not intended, in spite of the cultural proclivity towards these things, to be "A Bible of C".

And if it were, no professional C coder worth their salty words these days would be without the New Testament, right alongside K&R on the neglected end of the bookstack, which book is of course: "Advanced C Programming - Deep C Secrets" which explains rather a lot more about the thorns of Professional C, and more, in an equally comfortable manner as both K&R, the Authors of C as well as books about C, have done.

In my opinion, Peter Van Linden has already done to K&R what Zed doesn't seem to have the humility to do; proven its value to the newcomer in becoming one step closer to a professional.
The Tetris Company has an aggressive stance towards protecting their trademark. You don't dare publish anything that remotely sounds like Tetris (anything ending in -tris, in fact [1]).
Games that bear the name Tetris must adhere to stringent gameplay guidelines too [2].

[1] http://gaygamer.net/2008/08/tris_tetris_clone_for_iphone_b.h...

[2] http://www.tetrisconcept.net/wiki/Tetris_Guideline
Interesting to see deep comparison of Sencha Touch and jQuery Mobile frameworks. Both seems to be good enough for making real applications. I don't mean computational heavy applications like games or augmented reality, they require native code optimised for each platform. But for facebook-, or twitter-like applications HTML5 is okay.
Ask HN: My first full time job as a Product Manager. Any advice?
Hello HN!

I've just finished my studies (in both computer science and digital business), and I'll start my first full time job in two weeks. I'll be a Product Manager in a web startup.

Do you have any advice or good books to read on the subject?

Thanks!
> This insistence on balance is getting tedious.

Balance? No, here I would insist on honesty. Had this guy been honest, he would have mentioned Android and maybe Ubuntu, at least to tell us he has not much experience with them. But as GP said: elephant in the room.

Can you imagine a guy talking in general terms about high-end cars, emphasizing proudly his "reputation for being fair and impartial", talked at lengths about Mercedes and Audi, and about Audi and Mercedes, and never even mentioning BMW?

Anyway, the Giant Mammoth in the room just shows how Microsoft fears Android much more than Apple, and rightly so.
Yup even though they would be spending some money in order to save a lot of time and money. Did great with finding models but not good enough with the agency's. OT: Just read your blog and like to know if you've got something up and running already?
> I admit, at some point I did that too, it only takes ~15 lines of Python. Until I realised it becomes a lot bigger than the equivalent image file.

I find it amusing that you realised that only after you wrote the script :-)

(not intended to mock you btw)

I have to disagree that 'X in pure CSS' renders faster, though. As soon as you use a couple of shadows with sufficient blur radius, a bitmap is much faster (once it's downloaded). I especially notice this when scrolling the page, if there's a lot of shadowed elements on it, it goes clunky. That's NOT saying that you should flatten all CSS trickery to bitmaps, of course, it's still very useful, just that one should take care not to go overboard and keep an eye on performance, especially checking low-powered netbooks and a few different browser/OS combos.
Terrible pieces are free, good ones cost gold. Did you find a way through buying and selling to actually get less than 4 and not have money? I'm pretty sure I disallowed the player from selling below 4.

Edit: Even though it's been a while, I did spend about a month making that (it was before I'd ever had a programming job) and I'm interested in feedback. My thought on it now is that the game concept is broken. It's what I always wanted as a kid, but the problem is this:

If you start with the good pieces, why ever buy bad pieces? But if you start with the bad pieces, most players will get crushed and that 5% who can do well enough buy good pieces then do even better and then crush the game. It's inherently unstable, kind of like those old 4X games with stupid AIs that cheat on harder difficulty settings. They'll destroy you if they catch you early, but once you gain parity, you'll steamroll them with little challenge.
The overly clever argument is only valid if you think the point of K&R is to teach good programming style. In fact it's to teach you to read and write C programs. In many cases the learning point is achieved by the reader puzzling out why the code works and learning from this.

Complaining that this isn't easy enough is missing the point.

Arguing that the language shouldn't allow such constructs is again outside the scope of the argument. K&R designed the language, so presumably they agree with the design.
Actually, I don't find any difficult when I change from one language to another. It's not much different, if you are looking for getting a hot job in the market, just playing with ruby, javascript [ coffee .. ] and soon you will get into it pretty quickly.
There is no need for Google maps or anything else as there is Nokia maps / Here maps
>So, you create something that does not fulfill the C library invariant of what constitutes a "string", and then pass it to a copy function that assumes this invariant? It isn't a fair thing to do

Well, life as a program is not fair either.

The problem is your function can be used in many contexts, including by other people. You should not expect them to be fair, you should make your function robust.