skysight-inc/HackerNews huggingface dataset:
I also agree with every single one of the author's points. I've had an Android device since the day the G1 launched. Today I have the G2.

First off, for both devices I needed to run cyanogen mod. The devices were completely unusable for me without it. The only acceptable Android devices are the Nexus' or ones with custom roms.

I have not purchased an iPhone, but I do have a 3g touch and an iPad 2. I have to say, I believe Apple's multitasking is vastly superior to Androids. The reason being is stability. "Real" multitasking is great and all, but if you can't make it stable then it just plain sucks. My experience is that apps open in the background frequently FC, take up too much memory and slow the device down. Sometimes finding the errant process is near impossible and forces me to reboot.

Apple's suspend style multitasking ALWAYS ensures that every app is getting the full resources of the device. The other day I was playing Dead Space on the ipad and downloading 6 other apps I just bought... the game never hiccuped, slowed don't or degraded in any noticeable way. I see why some people don't care for it, but for me the benefit in performance makes it vastly superior. On the topic of downloading, I could have 50 apps queued up in the app store and it will never fail. The android fucking market always fucks up the downloads. It's completely maddening.

Dealing with device support just plan blows. Nvidia has their own freaking market for their 'optimized' games. Netflix is rolling out only on select devices because they don't know how the fuck it will work on everything out there- fortunately the G2 was supported early. Amazon has the best market by far, but I still don't know how the hell to use it.

Talking about openness... I have to install cyanogenmod to get any semblance of open, and that's not even the case. Recently someone had a patch to spoof a phones personal data so that apps that steal your info and sell it would be grabbing junk. It appears that Cyanogen is playing nice and not including the patch to not piss off Google and the carriers. This is only as open as what the carriers and google will put up with. It's no different than jailbreaking the iphone (aside from that fact that you can actually build "some of" android from the source, but what normal person can do that?).

In the end I still have an android device for one simple reason... economics. I'm on t-mobile and my rates are far below att & verizon. I got my g2 for free as well. I tether my data connection (to the iPad) with no issues. Even though the G2 kinda sucks, it is good enough. Justifying paying $299 for a 32gb iphone and paying the jacked up rates of verizon comes down to simply not caring enough for a gadget. The iPad is a phenomenal value, the iPhone just isn't. I'll re-evaluate the situation when my contract ends in a year and a half. For now I'll be content with amazing turn-by-turn gps, decent browser, tethering, a few 3rd party apps and a pretty good phone experience- it's the best value out there. Boils down to taking a dirt cheap "7" over an expensive "10".
Nanopond: Artificial Life VM
May be a good idea to mention some of them. `valgrind` and `lint` comes to mind. On second thoughts, `lint` can be dropped; compiler warnings are good enough for a beginner(in fact, good enough for experienced programmers; subjective).
If you own the books and you aren't planning on sharing them then you are just format-shifting which is perfectly ok.
Given how many people freak out about retain/release memory management in Objective-C, it seems that C, pointers, and manual memory management is gotta be a lot scarier.
When Google Circles Collide
Different people learn differently. Some people don't like to practice the trivial practice stuff, and prefer to breeze through the beginning, read through new material, and then take on some real project.

Rich Hickey, recently in an interview, said he doesn't do programming exercises - he is not interested in programs which don't make the computer do something useful, interesting, or both.

I, for one, type the trivial examples. Or else, I simply forget how to use them. For example, you have list comprehensions in Python, Racket, F# and if you ask me to do a list comprehension right now without looking up the reference, the only one I will get right is Python. I recently started learning F# and didn't type much code; so the concept is known, but since I didn't practice the syntax, I will have to learn it again.

That's what he means by practicing syntax.
I get the feeling that investors might not get the joke when dealing with billions of dollars. If the patents come back to haunt Google, I bet the shareholder meeting will be fun.
I'll take some of that action, if we can stipulate that the particular service that beats them might not be called "Google+." Google's style is to zero in with artillery strikes rather than an all-out nuclear attack. Every time they reload and fire a new volley, they get a little closer to the target. Orkut, Buzz, Wave, and now Plus.
I'll be interested to see how this compares to K&R, which not only teaches the C language but also C idioms and the reasons for using them. K&R is still one of the very best programming books. Every other C book I've read is inferior. Peter van der Linden's "Expert C Programming" is the only book on C besides K&R that I've learned anything from.

Good luck, I'm all for more programmers understanding C but I wonder if the wonderful days of programming close to the hardware are ancient history. "[P]eople are deathly afraid of C thanks to other language inventor's excellent marketing against it." Maybe, but I think the raison d'être for C is not apparent to programmers who started with Java, Python, or Ruby.
Start an Online Business using WordPress: Why I recommend PremiumPress
> as the reader sticks to using proper format strings, he is good.

Another important point to mention is that the format string itself should not be user coercible! XCode/LLVM/whatever Apple is using nowadays actually treats non-constant format strings as a compilation error, which is pretty cool.
A man haunted by more than the feds (another editorial from this weekend; Chicago Tribune):

http://www.chicagotribune.com/news/opinion/ct-oped-0701-hemi...
Reminds me of a Portlandia episode:

http://www.hulu.com/watch/208808/portlandia-ordering-the-chi...
Show HN: RepWatch.us - prelaunch
Looking to get some feedback and gauge interest here. This is not a political discussion, but rather a tool to assist in the execution of democracy, regardless of your individual political views.

So could you see something like this being useful? And what am I missing?
gzip -9 takes the PNG down to 4714 bytes, still smaller than the CSS.
K&R won't work for someone beginning programming. This book is specifically targeted towards teaching programming to programming virgins.

The examples and exercises K&R uses will be very hard for beginners. When it builds a recursive descent top down parser to read the declarations in English(and vice-versa), that will be totally lost on the beginners.

K&R wasn't written for beginners and I doubt it will work well for a programming beginner - should be fine for someone who already knows programming in some other language.
I have the proper Enterprise version:

def increment(a):
import urllib2
url = "http://www.html2xml.nl/Services/Calculator/Version1/Calculator.asmx/Add?a=%d&b=1" % a
result = urllib2.urlopen(url).read()
from xml.dom.minidom import parseString
result = parseString(result)
return int(result.getElementsByTagName('int')[0].childNodes[0].data)
Looking to get some feedback and gauge interest here. This is not a political discussion, but rather a tool to assist in the execution of democracy, regardless of your individual political views.

So could you see something like this being useful? And what am I missing?
Go Zed! I'll buy this when it's ready for payment!
I'm not sure if this is going to be pure C or a mix of C/C++, but if you're sticking to pure-C, here's a chapter idea: using containers in C.

This is the big selling point for C++ : the convenience of STL. In all the projects that I worked, it was one of the important reasons to choose C++ over C.

Yes, this focuses less on the language itself and more on the ecosystem around it, but I figured if you have an entire chapter dedicated to "make", then this makes sense as well.
Highlights:

* Focus on YARV (Yet Another Ruby VM)

* Improved character encoding support

* Adding parameter distinguishers a la Objective-C/SmallTalk.

e.g. def step(by: step, to: limit) vs def step(step, limit)

* Adding scope encapsulation to monkey patching to avoid conflicting changes throughout projects

* Adding conflict resolution to Mix-ins by allowing method renaming for conflicting methods

* Add method combinations similar to what exists in Common Lisp

* New implementation of Ruby interpreter for embedded systems (RITE)

Hoping to dethrone LUA for game programming

Want to enter appliances and distributed computing
You could probably build something like with Flomio - but make it available at the grocery store, on your phone?
It must be nice to be so established as Zed Shaw such that all it takes to get to the top of HN is a couple C exercises. It's almost like if a mathematician could get publicity for talking about addition and subtraction.

With that said, when I first saw Learn Python The Hard Way, it immediately reminded me of the time I spent reading K&R2. Its exercise rich style is what programming books are lacking these days. K&R2 taught me how to program.
> "v" is now 9, and to really understand it one must grasp how numbers are represented in binary under the hood.

Correct me if I am wrong, but I don't think C guarantees anything about the binary representation. Depending on the architecture, `v` can have different value.
If you are looking at purely exposing data RESTfully don't go with a heavy weight framework like Django or Rails. I would suggest going with either Sinatra or NodeJS (check out http://expressjs.com which is a very light weight, Sinatra like framework for Node).

If you already have experience writing JavaScript, NodeJS will make all the more sense, as the language barrier will be removed from the picture.
Graham on Start-ups, Innovation, and Creativity - EconTalk [Audio]
The bodies of these opcodes are only single machine instruction or two themselves and are inlined. This changes the game.
That, or it being caught, harvested, etc, with information. It could take a long time to get that technology, but it's a black box that would be nice to be lifted for most of the consuming society.
VLC is another tool I had trouble memorizing the name of. "VideoLAN? That must be something different..."
If by beautiful you mean terrible, then yes. :)
Google is a lot C++, Java, and Python, so indeed it is. Use Erlang (or similar) and parallel is easy.
I hope this book will show lots of new C programmers the beauty of pointers in hand-holdy detail ('cause that's the level needed, I feel). Maybe basic stuff about VM, so all the pointer operations make sense (everything is a byte at some offset etc.).

At least I didn't fully appreciate C until I understood some of the underlying concepts.

Looking forward to reading this!
Got it.

I wouldn't however say that the complexities of C is it's syntax (unless you're playing around with macros : ) ). But I guess the concept can be applied broadly, like remembering functions, headers and other language specifics.
> Did non-techies hear about Facebook in the first 2 years of its existence?

Every single human attending Harvard in 2005 heard of thefacebook, and almost all of them were active users. This pattern continued as it expanded to other colleges, and eventually high schools. Facebook had a steady, population-representative mix of non-technical users from birth; it was never techies'-little-secret in the way that Twitter, Foursquare, and Quora were.

Warning: I work at Facebook now, but did not back then. This is just my second-hand understanding.
Zynga’s Facebook Reliance Spooks Some Investors
Yes, but this talk was uploaded to youtube 8 months ago.
I knew time-shared BASIC before learning C in 1978. I was definitely a beginning programmer then, still in high school. Many (probably most) of the programmers I know from the same era learned programming from books that would be dismissed today as too hard for beginners. In the preface to the first edition Kernighan and Ritchie wrote: "This book is not an introductory programming manual; it assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. Nonetheless a novice programmer should be able to read along and pick up the language, although access to a more knowledgeable colleague will help." Of course that was before the internet, when access to a "more knowledgeable colleague" was harder to come by. In 1978 the only other languages someone would know were Fortran, BASIC, COBOL, Pascal, assembly language, etc.

Chapter 1, A Tutorial Introduction starts at the same place Zed's book starts: hello world. Looking at it now I don't see any reason my 13-year-old son (who knows a very little bit of Python) couldn't learn C from K&R with me explaining things here and there -- the same way I learned C. The recursive descent parser doesn't come up until the end of chapter 5 (out of 8), right after quicksort is implemented with pointers to functions. By then the reader has built up some skills and presumably developed enough curiosity to refer to other books for more explanation of sorting and parsers. For me those were Knuth's "The Art of Computer Programming," especially the third volume with all of the great example code which I busily translated to C.

If you think K&R is too hard for beginners consider how many programmers learned programming from the badly-typeset and somewhat inscrutable "Pascal User Manual and Report" (1974). That was the programming 101 text used at the local university when I was there.
This made me think back to a tiny virtual machine that took less than 300 lines -- in fact it took less than 500 bytes of code (thanks to the Woz): http://en.wikipedia.org/wiki/SWEET16

Aw, heck, let's get to the meat of it: http://www.6502.org/source/interpreters/sweet16.htm
I think subroutines would go something like:

PUSH the_address_you_want_to_come_back_to
JMP some_other_spot
the_address_you_want_to_come_back_to:
BLAH
BLAH
...
some_other_spot:
BLAH
BLAH
POP some_scratch_address
JMP some_scratch_address

So yes, JSR is two opcodes and RTS is also two opcodes, but it works.
Made me think of Sweet16, the 16 bit virtual machine Woz put into the Apple ][ ROM.
Check out Spark, a framework for writing parallel machine learning jobs (among lots of other things) on top of hadoop. http://www.cs.berkeley.edu/~matei/spark/

They need to keep data in memory and shuffle it around really fast. To do so, they use a bittorrent-variant algorithm. I think this is the paper that describes it - http://www.google.com/url?sa=t&source=web&cd=7&s...
Exactly. Right now we're only beginning to explore this stuff.
If 19 is represented differently in binary on your platform than (leading zeros)10011, you are already quite screwed.

You might be thinking of character representation for the later example.
مشاهدة مباراة المصرى والمقاولون 
مدونة يلا جول الرياضية تقوم ببث واذاعة مباراة المصرى والمقاولون العرب بث مباشر فى الاسبوع 28 من الدورى المصرى الممتاز اليوم الحد ( الاحد ) بتاريخ 3/7/2011 وموعدها الساعة 16:00 بتوقيت القاهرة لو بدك او عايز تتفرج على الماتش ادخل و وشاهد المباراة على النت بدون تقطيع اون لاين
Creepy man. Are you my clone or something? :)
I haven't perceived that people think C is significantly scary (or evil). There are however many compelling reasons not too choose C in the present RAD/Web/Cloud/Solution Business world.
The negative connotations of the word aside, it seems perfectly reasonable to call C dangerous. Without that "danger", you couldn't write an OS kernel, a language runtime, or various other low-level code we need on our systems; on the other hand, when writing higher-level code that doesn't need that level of raw access, it seems useful to remove the possibility of a broad class of mistakes.

See also Rusty Russell's rules about "easy to use versus hard to misuse". I find C easy enough to use, but also easy to misuse.
How Google+ Transformed Picasa Web
You might be right - but you can't logically draw the conclusion that 'lots of people remember the name' based on the evidence presented.

The is no correlation between words people end up reaching your site by, and words that they are trying to find your site by.

Consider the world where 10M people are trying to find Ninite, but forget the name and unsuccessfully google "keep multiple programs up to date". Similarly, 1M people google for some variation of Ninite, and all find your site. Your referrer logs would show that all users reaching your site remembered your name, even though you're throwing away 90% of your potential user base.

That's like trying to disprove the hypothesis: "You don't network enough, so not enough people know you" with the evidence "99% of the calls I get are from people that know me, so clearly a lot of people know me".
The original lint tools seem entirely superseded by modern compiler warnings. On the other hand, a whole new class of static analysis tools exist now, such as Sparse, Coccinelle, Frama-C, and in the proprietary world Coverity.
Ohloh says I've changed at least half million lines of C code (https://www.ohloh.net/accounts/rhp/positions/total)
Play me a tiny violin ;-)

What kinda bugs me is that whenever people go to teach C, they make out like it _has_ to be a low-level exercise, as if writing in C suddenly means you can't use abstract data types or object-oriented style or name your functions properly or have Unicode support.

For example, people teach libc string APIs like scanf() and strtok(), which should almost never be used. (See http://vsftpd.beasts.org/IMPLEMENTATION for one take.) Instead, use
http://git.gnome.org/browse/glib/tree/glib/gstring.h or
write your own like http://cgit.freedesktop.org/dbus/dbus/tree/dbus/dbus-string....

If you're going to display user-visible text, you are pretty much required to link to GLib or another Unicode library, since libc doesn't have what you need (unless you want to use the old pre-unicode multi-encoding insanity).

Don't use fgets() and other pain like that, use g_file_get_contents() perhaps, or another library.
(g_file_get_contents is in http://developer.gnome.org/glib/stable/glib-File-Utilities.h...)

You need help from a library other than libc to deal with portability, internationalization, security, and general sanity.

Maybe more importantly, a library will show you examples that in C you can still use all the good design principles you'd use in a higher-level language.

I told someone to "use a string class" in C recently for example, and they said "C doesn't have classes" - this is confusing syntax with concepts.

C requires more typing and more worrying about memory management, that's all. It doesn't mean that all the best practices you know can be tossed.

There's a whole lot to be said about how to write large, maintainable codebases in C, and it can even be done. It's not something I would or do choose to do these days, but it can be done.

One other thought, two of the highest-profile C codebases, the Linux kernel and the C library, have extremely weird requirements that simply do not apply to most regular programs. However, a lot of people working in C or writing about C have experience with those codebases, and it shows.
Some additional info I turned up on the MIT site for this course:

If you don't like Scribd: http://mit.edu/6.01/mercurial/spring11/www/handouts/readings...

Think Python, How to Think Like a Computer Scientist: http://www.greenteapress.com/thinkpython/thinkpython.pdf

Whiteboard Demos [videos]: http://alawi.csail.mit.edu/~alawi/as3/
I've talked with Paul a bit about this. We've also mocked up using link tags, which carry a bit more metadata. Probably the most promising approach, though, is using other webapp manifest ideas to bundle intent provider installation with that. (a la http://lwn.net/Articles/419151/)
I learned C the hard way by taking this course, motherfucker http://www.cs.columbia.edu/~jae/cs3157/2009-1/syllabus.html http://www.cs.columbia.edu/~jae/papers/3157-paper-v2.2-camer...
SIM Information System, Check Total Sim Get Through Your CNIC Number
A really key part of intents is that they're locally resolved. For centrally-resolved links, urls already work really well with the DNS system.

Of course, features that prevent abuse will be a key support element for browsers. That's part of the rationale behind the choice of a pop-up window in Paul's demo for instance -- in-page elements have some vulnerabilities that pop-ups don't.
I think best online payment is via "Paypal" and lot of free lancer site pay via paypal.
No, at best you could do a binary search using if's to simulate a lookup table, but you are going to trash the pipeline on a modern CPU if you want a reasonably complex lookup table you are much better off with something like:

float lookup_Sine(x){
int I = 100 * (x mod 360);
return sine_table(I);
}

Anyway, for a modern CPU hitting main memory takes a lot of cycles. So you need something a lot more complex than a simple trig function to make it worth it.
With all the stuff on circuits, state machines, and probability, this course may be easy to sell EEs on teaching and taking.
This is an epic introduction into virtual machines for the brave C coder. Very neat and clean, thank you.
Onestall.
I'll wager you that Facebook may have more active users, but Google+ will have more active users and perhaps more activity.

I'm betting that Google+ will get more than just the early adopters.
> Do people really think C is some mysterious, inscrutable language?

Yes, I do. But it's not because of the language itself. It's trying to figure out what you can do with it after you grasp the fundamentals. I taught myself C using K&R a long time ago, but I never did anything with it. At the time I figured there were two paths I could progress along - UI related (e.g., a Windows app) or systems related (something Unixy). Both paths presented large hurdles. Nothing insurmountable, but I wasn't a programmer at the time - just doing it for my own edification. I always thought it would be nice if there was a second level book that took you from post-basics to writing something useful.
How is this different from similar projects like http://www.govtrack.us/ ?
I think in US they can refuse individuals, but IANAL.
C shouldn't be used for anything other than low level programming these days. There are other higher level programming language that would make your job a whole lot easier. Some programmers, like me, are stuck maintaining legacy C application code, but I wouldn't wish that fate for new programmers looking to learn C as another tool in the belt.