skysight-inc/HackerNews huggingface dataset:
Why not base it on a project? If you want more people to do systems programming (I am assuming kernel and driver development), why not take something from http://kernelnewbies.org/ and turn it into a simple project or write a character driver. People will learn how to write code for the Linux Kernel, learn how to interact with that community and perhaps become more interested in systems development as a result, if that is your goal.

In the context of writing a driver, you will have to cover concurrency, multi-threading, semaphores/mutexes, function pointers (callbacks), memory management, etc.

One personal side note, would be nice if you integrate TTD into the projects. The number of C developers that I deal with who do not understand the concept of a unit test is amazing.

Also, please cover C99 and talk a little about compilers, linkers and assemblers. You can concentrate only on one binary format (doesn't matter which one) as long as you explain a little bit about how your C code gets converted into machine format and what does that mean.

I would ask myself: "What makes my book on C different from all the other ones?"

Why should I spend my time on reading your book instead of any number of other tutorials or K&R?

EDIT:

Forgot to add, please provide a public repository for your code examples and start using something like Git right away. That's one thing I really enjoy from all the Rails books, they push you into using an RCS immediately.
I don't think we'll ever get rid of political parties but what I do think the Internet could do is bring the libertarian concept you speak of a little closer to reality.

The problem before now is no one has any idea what their local city council person or state legislator believes. Since TV is geared towards mass dissemination and that was people's primary means of being informed.

The Internet gives local citizens a way to evaluate their local government in the same way they evaluate Presidential candidates now which makes giving more power to the local governments a lot more plausible.
And what comes almost directly from this is using (and writing) libraries and not programming everything yourself from scratch. NIH syndrome is particularly strong in many C programmers.
Seconded. I have separate Ubuntu VMs for each stack I'm working with. I just spin up the ones I'm working on at the moment and SSH into them.
Shutting down redis (from default init.d script):

echo -n "Sending SHUTDOWN\r\n" | nc localhost $REDISPORT &
Show HN: My "weekend" project
I've been working on a project in my spare time for a few weeks and would appreciate any feedback HN has about it:

http://eduanon.com

It's a collection of anonymous message boards -- you register for the site with a .edu email address and then you get sent to the message board that corresponds to your school. The site is inspired by the Oberlin Confessional but I've generalised it so that it will work for any .edu email address. I think it's currently at minimum viable product stage -- I have some ideas about where to go next but I'm curious to hear what HN thinks.

This is the first dynamic site I've built on this scale. It's built on Django and hosted on Webfaction. I'm not much of a designer, so I tried to throw together some CSS that at least doesn't get in the way.

Thanks!

EDIT: Test account for HN users: username "hn@hn.edu", pass "hn"
Clicky: http://eduanon.com
Yeah I know but if you bring something in the same spirit to the web it might be good.

I grew up as a programmer reading it too so I appreciate what you're saying.
I am doing this precisely for you and everyone like you.

I'm a professional python dev :)
Maybe the US should aim a little lower, and first try to eliminate the 2-party system. The system is designed to be dysfunctional.
I actually got in trouble trying to use netcat for something quite legitimate in my former job at RandomBigCorp... Oops.
My brain eliminates tail calls, so it's just an infinite loop :)
Utubebario Toolbar - Upgrade
Great question. That 5K will seem cheap when the lawyer you work with starts introducing you to angel investors. The valley is ALL about connections. Everybody here is a full time network-er. The job title, such as 'Lawyer', is just something that goes on a business card ;)
Free audiobooks from the public domain
Expand your world...for free

(just thought this was cool and would help those who don't have time but would still like to learn/read)
> The odds I wanted this are zero, so silently getting it anyway is the kind of ridiculous misbehavior that makes me glad I can avoid the language.

Not all useful values have to be order-able. If you just want to generate dictionary keys or unique IDs, you don't care about the ordering property of the values at all. And if you do care, all that matters is that ordering a given set of values is consistent. This behavior satisfies that criteria.
Ah, that's the math. I had forgotten about the toolbar (thinking about the address bar hiding).

Supporting orientation changing at all is also an interesting choice. The addressable surface area would be larger if static, so the trade is pixels for orientation flexibility (and the appearance of gravity holding the chalk and eraser in place, and the orientation of the light switch...).
JQuery for LaTeX in HTML
If that is the case I would build the tiered pricing based on the number of exhibitors (or participants) each tier can handle. You should be able to closely estimate what your processing fees are going to be for a set number of registrations. The problem with this method is that some of your customers will most likely be purchasing tiers that are out of line with their registrations. For example if you have 3 tiers: one tier for 100 exhibitors, one for 500, and one for 1000, then your customers will be bound to registering for tiers that may be out of line with the number of exhibitors they plan on having. You may be able to offset this a little two ways. First if you know your target market well enough that you know approximately how many exhibitors are at each conference you could plan your tiers based on those numbers. The other way, although it requires development on your behalf, but is a little more customer friendly, would be to do away with tiered pricing, and build a cost estimator into your app. Your customers could come to the site, fill out all the information including an estimate of number of exhibitors they will have, then your app would give them an estimate of the cost. You verify their payment for the estimated registrations, but do not charge them at this point, then when all the exhibitors have registered, you bill them based on their actual number of registrations.
That's kind of what I was thinking. I feel like I could market it (it's what I do) but the margins could be too tight.
This question comes up a lot.

PG says "We don't know ourselves yet, because it takes so long for startups to exit. But we have a decent idea how many are successful at the next stage after YC-- the number who are either able to raise more after YC, or don't need to because they're profitable (or in very rare cases acquired). I think for the winter 2010 batch the percentage was in the low to mid 80s."

VIA - http://news.ycombinator.com/item?id=1694832

PG previously said "According to our data, 98/145 or 67.6% of companies we funded in s2009 or before are funded and/or profitable and/or acquired."

VIA - http://news.ycombinator.com/item?id=1185345

More resources:

Current list of HN startups and spin-offs?

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

What percentage of YC startups make it and what percentage fail?

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

Spreadsheet listing all YC-Startups, exits etc:

https://spreadsheets.google.com/ccc?key=0AkkhSN3vaY4jdF90b1l...
I disagree. If I'm learning a new language, I'm too busy worrying about the commas and semi-colons, not whether or not I'm using strcat or strncat. Worrying about overflows, signedness, etc. is something you do once you're more comfortable with the language.

It would be nice to provide links to articles and books on why one should use snprintf instead of sprintf or what is integer overflow and how do you deal with it and other topics for writing secure code.

However, as a beginner, it will simply not register since I'm more worried about having used a period instead of an arrow to access a struct member.

Perhaps, instead of writing a beginner C book, an advanced C book is needed more.
Apparently he plays poker these days.
Microsoft Open Sources F#
Web Design UK
Affordable effective web design from simple business site to complicated e commerce solutions based in Watford, Hertfordshire, UK.
Thanks! Colleges where one of the places I thought of targeting too.
Isn't this sort of the same philosophy as the way Lisps are built? It seems like having proper namespacing and a overall functional style lend themselves to smaller, more self-contained libraries.

Similarly there isn't as much of a need to have a monolithic stack like Ruby has, because Ruby's style tends to step on other's work a bit leading to preferring a all-in-one style for reliability.
Unfortunately that's how our brain software works! It's not necessarily a conscious thing either--it's just an implicit assumption that we'll eventually base either our excitement or disappointment on.

My point is to make your implicit assumption explicit, and to make it realistic with data instead of bullshit.
It's all about going with the flow.

For good customers, I actually offer good-faith, (virtually) unlimited free bugfixing within some reasonable time window (6 months, 1 year), for something that's genuinely a bug (and my fault that it's a bug). Ditto for any reasonable questions they may have. Heck I often throw in simple enhancements ("can you just change this piece of text here?") if it's really no skin off my back to make.

I also offer this policy up front, and include the very minimal time overhead that this involves (typically 5%, no more than 10% of the net development time until deployment & end of the initial contract) in determining my hourly rate for that customer, of course.

So for "good" customers, I find this policy really puts them at ease (especially in sensitive, first-time negotiations), and me too, frankly. Because if there's one thing I'm good at by this point, it's at estimating when project is reasonably stable and ready to ship (with minimal probability of serious unexpected behaviors or defects, post-release). And because buy far the biggest worry for them, after whether or not the initial release is going to be total junk for them, is the prospect of being held hostage by some mercenary developer for minor support / fixes.

And also, I find that simply conceding them the benefit of the doubt outright ("no problem - if it's a bug, let me know, I'll fix it") makes them much more willing to concede the benefit of the doubt the other way, when I explain to them that something they think is a bug isn't really a bug, but rather due to an ambiguity in specifications or some external factor, etc.

As for "bad" customers, well, different rules apply of course. But we try to minimize our involvement with them, anyway, now don't we.
I am not sure how applicable it is to an introductory text, but I would be interested in learning more about the internals of compilation and linking. What is the minimal necessary amount of work that needs to be done to interact with existing C libraries (header files, ELF format, and how that all fits together).
Childish vs. childlike
I don't think the learner would appreciate the subtleties, and I don't agree that they'll learn anything from it.

I can reinforce each lesson/problem you're describing one by one through the exercises, but a new person simply wouldn't know good code if it slapped them in the face.

that is my point: your readers might not understand everything you're doing, so they're just going to copy and paste parts of it into their new projects. if you give them sloppy code to learn from, they're going to copy that sloppiness into their code that makes its way into the real world.

there are a lot of things in c that new programmers have to be especially careful about that aren't relevant to python.
Trying to force people not to represent themselves as part of a wider organisation would be an extreme step.

Removing party allegiance as a basic component of the voter registration system would be a start. Leave the parties to administer themselves and non-affiliation with a particular party as the norm rather than the exception.
The second line of the kitty server:

-export(start_link/0, order_cat/4, return_cat/1, close_shop/1]).

Is seems odd to me that the close bracket is just dangling at the end. I find the Erlang syntax rather inscrutable...
Like I said, I just threw it together this morning - patches accepted :)
http://www.microxwin.com/architecture.html
My plan was to make people use valgrind all the time after about lesson 10. Rather than you having to teach them all the various errors, you just let valgrind teach them by telling them their stuff must be valgrind pure.

Other than that, pretty much the same style as I did LPTHW.

Also, read:

http://sheddingbikes.com/posts/1288945508.html

There's more advice there.
I was so excited, but ironically it does not work on iPhone (I'm still on iOS3).
> most of the time I diverged from using the GUI to administer things I shot myself in the foot

This is something you hopefully learned early or were told by an more experienced Mac admin— configuring, let alone automating, Xserves from a CLI is an exercise in futility as so many components system have been rewritten to do things "the Apple Way."
Teach how to implement a couple of data structures more complex than linked list and binary trees (maybe hash table).

Teach how to implement a couple of non-trivial algorithms (e.g., quicksort, topological sort).
ClickyTouch arrives for Clicky Web Analytics
I would recommend it to the ebook selling crowd. Those business owners would love to have more "How to raise a parrot" sort of ebook sales, but in video.
Well, that would explain how my last gig was too many thieves with high backstabs and not enough wizards. Although there was a cleric.
paging tom ptacek... tom ptacek to the white courtesy phone...
Yeah, a series of deliberate decisions led us down this path. We could have opened it up and made it more generic. The tight scope allowed us to get it deployed in 3 days.
we don't have 15 years sorry!
Could have been mildly amusing if they'd used human voices and they hadn't repeated the same joke over and over.
Why would you shy away from macros? Yes they are ugly, but they are an integral part of C and any system programming will rely quite heavily on macros, whether we like it or not.

If you're going to cover macros, please make sure to explain how they work and the multitude of pitfalls as well as how to deal with them; which is to wrap each macro in parenthesis.
>Why not base it on a project?

There might be a project. I'm modeling it after Zed's approach to some degree regardless.

>(I am assuming kernel and driver development)

Not particularly.

>turn it into a simple project or write a character driver

Nah.

>People will learn how to write code for the Linux Kernel

That is in fact, the opposite of what I'm trying to do.

I want to teach C, not Linux.

>would be nice if you integrate TTD into the projects

I'll demonstrate how/why, it won't be an integral part of it. TTD is use-case specific, not a universal benefit.

>The number of C developers that I deal with who do not understand the concept of a unit test is amazing.

That's a cultural problem, not a pedagogical one.

>Also, please cover C99 and talk a little about compilers, linkers and assemblers.

I'm going to aim for implementation agnostic insofar as it's possible while keeping them aware of the caveats.

What you're advocating is a significant departure from Zed's example. Not my goal.

>explain a little bit about how your C code gets converted into machine format

Implementation specific, outside scope.

>"What makes my book on C different from all the other ones?"

Out of scope of what I'm worrying about, it's a book, not a startup.

>Why should I spend my time on reading your book instead of any number of other tutorials or K&R?

Pretty sure you're not the crowd I'm aiming for, but I'll be happy if you can glean value from it.

Most C books are provincial or overly prosaic. I'm not interested in explaining, I'm interested in whipping people into coders. They can get their compiler and language implementation from a Comp Sci program.
Giving back to the community: the start of The Social Charity Collective
Interesting. Thanks for the tip! I'd never heard of ssh host hopping, but have been doing 2-3 sequential ssh logins for years. I always wondered if this was possible somehow! I found this nice tutorial that explains your tip in detail:

http://sshmenu.sourceforge.net/articles/transparent-mulithop...

This made all the time I've spent on HN in the past week worthwhile! :)
Brightleaf offers automated NVCA Model Documents at no-cost
Interesting idea. I wonder which businesses might be interested in the service (assuming higher profit margins there since you're paying human workers).

Maybe attorneys, for discovered documents? Accounting? Or historical research? Some authors prefer to write in longhand . . .

Do scanning companies ever outsource manual jobs?

For consumers, how about family histories or recipes? [There are companies which create family cookbooks, for example.]

I think the site copy is like a first draft in its current state--a good start, but could be shorter and punchier (copywriting's hard). Find out what people are searching for in your niche and weave more keyphrases into the text.

I also suggest working on the text layout to better distinguish your points. I consider the remainder "good enough," with the possible exception of the logo. But selling is more important--clearly and briefly explain what you're selling and present a call to action (maybe make the "Go" action clearer).
Wow, I was being a bit toungue-in-cheek about it as I don't read much Economist (when I do the author is rarely stating their opinion, I tend to prefer more factual/reporting pieces from them), but thats interesting. Learn something new every day it seems!

I also have found some success in trying to avoid pronouns when writing. It can lead to weird phrasings where one's opinion is stated as a fact but a majority don't seem to care much about that (pedants are in a minority). See!
i agree with kls... it depends on your initial agreement. i rarely do fixed cost projects. i would only consider it if there is a solid specification, which is rare. otherwise they will nickel and dime you to death. also on the invoice, don't put "fixing bugs" or stuff like that... use words like "change" "modify" etc.
I sent an email after reading that post, was inspired to do this because of it. I planned on having them use valgrind as well.
that's because it's a typo, not weird syntax. The linked file is fine. I just fixed it. Thanks for the find.
No, I disagree with most of this. A LTHW book covers just enough of the language that someone could then go learn the things you mention from another book. At the end you could lightly cover testing, but most people can barely get an editor installed. No way they can learn multi-threading, TDD, an entire project, and an RCS.

It'd also dilute the focus of the book.
Doesn't the winner-take-all nature of elections in the US (as opposed to proportional representation by party in countries like Sweden) make a two-party system a natural, emergent outcome? If you're third largest but not near hurdling the 2nd, your only power is by partnering with or joining one of the other two parties.
Where did you take iOS training?
Thanks, I will be checking it out and definitely using the final product.
Zed's idea of LCTHW was not for a beginner book.
Almost everything is bullshit if you take it at face value. The point of the advice was to promote a certain mindset:

Endeavor to do things that you enjoy doing, and do them with feeling and quality. Chasing success, money, competition, or customer whims will not lead to happiness. Instead do things that you enjoy and do them in your own way that no one else can compete with. This will sidestep competition and lead to customers, money, and success. Think Apple.

Don't just absorb knowledge (reading, advice), but understand it from the author's point of view. His last point was to not blindly take advice, but to understand it and apply it to your own situation. To ignore and marginalize his advice as you have done is to ignore one of his most important points.
How Attackers use Social Media
Searching in Mac OS X's Mail.app is instantaneous, because the message content and metadata are already included in your Spotlight database.
And, hey, worst case you get detained by security and charged with a felony.
http://www.reddit.com/r/carlhprogramming/
You are right but I thought of checking if this information is already available.
There has been a refugee claim, but no talk of arresting the original passenger. I wonder if this is the case of someone helping a dissident to get out of China.
What is the point of checking references only after providing an offer?

Is it an offer contingent on references? (Edit: re-reading your post, I see that is the case.) If so, that seems not much of an offer at all.

This is an unusual practice and I have never seen it in that sequence, but then again, I am more exposed to professional non-technical services, so perhaps things work differently.

I find good reference checking -- and it is hard to do it well -- is excellent to identify traits that are difficult to test for during interviews, such as timeliness and integrity.

Edit number two: I do understand however not providing references until the final stage, when only two or three candidates remain.
I wonder how this will affect Google's online PDF viewer [1]. On one hand Google can clearly provide a faster experience by rolling their own client-side viewer, but on the other an online viewer can be used across browsers and devices, and more easily integrate with Google Docs.

[1] http://docs.google.com/viewer?url=http://labs.google.com/pap...
Agreed. I was littering code with schoolboy mistakes for a couple of years because of this. The complex stuff was great (heh) but some of the absolute basics were braindead because I thought I knew it. I'd been doing that stuff from day one and never had a problem... Until I did.
There are as many potential problems with macros as there are grains of sand in Saudi Arabia.

Best not to go there beyond explaining how and why not to, and leave it at that.

Order of operations is an example of something that bites people with macros. (ref/deref + macro has nailed a lot of professionals I know)
You want to target young programmers. Talk to those, and make them come with feedback as you write the book.
Would you let a stranger read your DMs? You probably already do.
depends on the culture in bangladesh
> At this point in computing history, your language needs a stronger raison d'être than "Python isn't statically typed, and C++ has awkward syntax!"

True, but for all the rapid development in programming languages at the moment, we still don't actually have (AFAIK) a general purpose programming language that has simple, clean syntax à la Python, a static type system that covers all the basics but doesn't get too clever/complicated for everyday use, and good performance.

This always seems strange to me, given that all the necessary ingredients are widely available in other languages and I see no inherent difficulty in combining them. I suppose industrial forces already have "good enough" languages and academic forces are more interested in pushing the frontiers in languages like Haskell. That probably doesn't leave a lot of people with the required skills, time and inclination to work on a solid, practical, boring tool that just gets the job done a bit better than anything we have today but without trying to somehow reshape the entire programming industry and become the Next Big Thing.