Ask HN: Learning C - <AUTHOR> Throughout my career, I've viewed C as the sleeping monster that mere mortals such as myself dare not waken. However, as I increasingly seek to achieve more complex goals in my projects, I find myself encountering C libraries (such as GMime) which will answer all my questions, if I could actually program in C. I have a copy of C Primer Plus Fifth Edition at hand, a development FreeBSD server as well as my Mac, but would like to ask of this community if they are aware of any other references, such as old CS course materials, which may help. Many thanks in advance. I realise that this is a long term goal, but feel that with my taste in server platform and operations software, C will prove a boon to me. <comment><USER2> Just about everybody who answers this will say that K&R is good, and I agree, but in addition to this I found that learning the basics of assembly was helpful. You can really see what's going on with the stack, what a pointer really is (pointers are really the only tough part about learning C, everything else will be the same old same old if you already know how to program), and the difference between a system call and a regular function call, and it doesn't take much time to learn.

Books by W. Richard Stevens were old when I was learning, and older now, but they were the best guides to taking it to the next levels. You can pick up a lot of tricks and stylistic pointers from him while learning about UNIX features and networking. Maybe somebody will chime in with a more up-to-date resource that does the same thing.

<comment><USER3> I'd second this. In fact, Steve Yegge once said this about K&R ( <http://steve.yegge.googlepages.com/ten-great-books> ):

 _This is an odd little book. It's frequently mistaken for an introductory programming book, which inevitably leads to frustration. It's not a good way to learn how to program; it expects that you're already familiar with machine architecture, assembly language, compilers, and at least one other high-level language.

It's not even a very good way to learn C. The idioms and best-practices for C programming have evolved substantially, even since the second edition was published, and some of the code samples look a bit dated._

As the parent said, you'll appreciate C only if you learn about machine architecture and Unix. Diving into a large codebase will get you acquainted with "modern" C.

I've found the book _C Traps and Pitfalls_ to be _the_ book to get you to think like a C programmer. _The C Puzzle Book_ is pretty good for exercises, and _Expert C Programming_ does a good job exposing the ugly side of C.

<comment><USER4> I know the plural of anecdote is not data, but my personal experience was the opposite. C was the first programming I learned and I learned it by reading K&R in high school. I certainly didn't know anything about assembly, compilers, or another high-level language.

From there I learned by contributing to open source projects.

Not saying K&R is the best way, but it's not _so_ opaque that a beginner with zero knowledge of C (or even programming) can't pick it up and learn if they're motivated to learn it.

<comment><USER5> K&R was the only C book that ever allowed me to pierce the veil of mystery surrounding C and understand it. I'd tried at least a half dozen other books and was either bored out of my mind at the painfully slow pace, or utterly baffled around chapter 2 or 3 where it leapt into pointers and seemed to just assume it was obvious.

For whatever reason K&R was a perfect storm of comprehension for me, and I came away actually knowing how to read and even sort of write C (and knowing how to search the Internet, pre-Google, or ask reasonably smart questions on the mailing list or IRC channel of the software I was working with, for answers to the harder questions). I failed miserably with every other book on the subject.

</comment></comment></comment></comment><comment><USER6> C isn't hard, don't worry! It's actually a fairly simple language. But it's medium/low-level and there is a lot of power within its simplicity. Fast to learn, but a long time to master, as one might say.

I don't know what people are using to learn C these days, but the standard has always been the white book [http://www.amazon.com/Programming-Language- Prentice-Hall-Sof...](http://www.amazon.com/Programming-Language-Prentice- Hall-Software/dp/0131103628)

You will find yourself spending more time thinking about programming concepts rather than dealing with C syntax, since it's pretty concise. I don't know how difficult it is to learn about pointers if you have already been programming for a while but haven't had to use references directly, but it's very important to learn. C does not do too much for you on its own, so handling references yourself is an important skill. It will also help you understand how higher level languages and concepts work.

If you are working through it and find that you're enjoying yourself, congratulations, you're a programmer :] Then it's time to pick up the 1st volume of Knuth and start working through that.

<comment><USER7> Indeed, the problem with C is just that. Once you understand how it works, you'll realize it's just a thin abstraction layer over assembly language. It really is just that simple. My last job was almost purely C, and what made C "scary" at times were:

1\. naming conventions. I don't know why C programmers use the strange names that they do.

2\. macros. C macros are a pain to read and follow.

I hope things will be easier to learn if you know this going in, because that's really all there is to it.

The catch with C is that while it is simple, writing good code with it is not. You have two tools for metaprogramming: macros and function pointers. C++ classes seem evil, until you see what people do in C in the absense of any mechanism for polymorphism.

Thankfully for you, you probably will only ever need to deal with libraries, not applications, so you'll never have to deal with the hell that comes with trying to use C for higher level work.

<comment><USER8> They use the strange names that they do because a function declared in C is declared everywhere in the whole program. They use strange names to try to stay out of your way; i. e. it would be really bad if two functions had the same name.

<comment><USER9> You're right that C's lack of namespaces makes for funky names. However, note that "static" functions are visible only within their compilation unit, which can bring some order to the madness.

<comment><USER7> Yes, exactly. And yet people continued to use the unhelpful, oblique prefixes and suffixes they used for global symbols nonetheless.

</comment></comment></comment></comment></comment><comment><USER10> Best beginner text after K&R is Kelly and Pohl's "A Book on C"; very newbie friendly and at the same time uses traditional C examples (i.e. memory management, serializing and reading-back record-oriented data stored in structs, file and directory manipulation, string manipulation, etc.)

Most other C books will just treat it as a stepping stone for C++ which is a different beast, and a few awful offenders will stretch it to Java!

To see a few Algorithm implementations in C, there is no better friend than Robert Sedgwich's polyglot tome; it's the applied Knuth volumes that everyone keeps on their desk (quickly swapped for the actual Knuth volumes when expecting hacker guests.)

Along with C materials you will also need Unix materials. The two are inseparable and fuel each other. You already have a decent Unix in your Mac, and your FreeBSD is the best of the Unix breed bearing the original blood. For that there are no better companions than the books by Richard Stevens, both for system and network programming.

For larger scale software engineering you will need a few small to mid projects of your own. You will deal with header file and Make dependency problems, a few unix and processor portability problems and a few other stuff. The solution to those problems along with a fat library of useful routines are found in "C Interfaces and Implementations" by Hanson. It's a literate programming text where source code is interwoven with prose documentation and it's very self evident.

Along with productive C programming you might need to look into the darker side of C and Unix and follow the papers of the hacking underground (yes, HACKING, dispute the terminology all you want, but I think some blackhats deserve the noble noun more than javascript and CSS jockeys.) Unix and C have plenty of Not-TODOs to motivate plenty of caution. Hoglun and McGraw's Exploiting Software is the canonical C-Do-Not text books.

If you want to read library source code, your FreeBSD source code should give you plenty to keep you busy. Start with the sources for the games; I spent an enjoyable summer porting Minix games to DOS and taught me allot. There is also "The Standard Function Library", or SFL, google it, it has the cleanest C sources you ever seen. Highly recommended.

And should you ever want to write a C compiler, like I attempted, here is some advice: implement Oberon instead. Everything you could possibly learn at 1/100th of the headache.

Just the 2 cents of a guy who will only write C code again if there was a gun to his head ;-)

<comment><AUTHOR> I actually picked up and then put down a good looking book on Unix systems programming either by Stevens, or by someone who worked very closely with him and wrote an updated version. I think I'll scream off to the book store and track it down.

<comment><USER10> It's the updated version of APUE done by Rago (the guy who did Unix System V Network Programming; a fairly good book but with a narrow and almost obselete focus; sysv STREAMS -- a very good idea whose time hasn't come.)

</comment></comment></comment><comment><USER11> You should absolutely learn C. A good knowledge of C is a very valuable asset for all sorts of work, especially on Unix.

Thankfully, C is straightforward to learn. The major concept you need to understand is pointers; once you've done that, there are some syntactic oddities to absorb (typedefs, function pointer syntax, arrays vs. pointers), and you should skim through the standard library (which is tiny compared to Java, or even C++), and you're most of the way there.

In addition to K&R, I've hears that Steele and Harbison's "C: A Reference Manual" is very good, although I haven't read it personally.

<comment><USER12> I have Steele and Harbison's "C: A Reference Manual", and _is_ very good, but probably not for _learning_ C. It does have very good explanations of some under-the-hood things that I haven't found elsewhere. It is also a good reference on the C std library, and does a good job at pointing out possible incompatibilities between ISO C, `traditional' C, and vendor-specific dialects. One of the things that I have always found confusing about C is that code can be written in several ways, depending on how lax the compiler is about enforcing different versions of the C standard.

</comment></comment><comment><USER13> A great resource I have enjoyed while brushing up my C skills has been CS107 at Stanford University on the web.

<http://www.stanford.edu/class/cs107/>

You can find the lectures on academicearth.org, or on iTunesU if you prefer to download them that way.

Jerry Cain is a great lecturer. I wish they'd post the assignments with the files they provide the students though. Maybe someday.

<comment><USER14> FYI, CS107 has changed considerably this year, so the course description on the current course site is a bit different from what you'll find on Academic Earth.

<http://academicearth.org/courses/programming-paradigms>

</comment></comment><comment><USER15> First, congratulations. You're making the right decision. Programmers who are ignorant of C leave certain roles and problem domains closed off to them. Even if your primary language is something else, not being afraid to roll up your sleeves and fix performance and correctness problems in the compilers and runtimes themselves makes you more valuable, more confident, and better able to reason about how the runtime will map your input to the machine. And proficiency with system-building languages and tools is a prerequisite if you ever aspire to be a "head surgeon," "10x programmer", "ninja", or whatever the heck the kids are calling it these days :).

K&R et al. are fine, but I'm a particular fan of two slightly oddball, but great, books about C:

1\. van der Linden's Deep C Secrets. Short of implementing a C compiler yourself, reading this book is the surest path to completely understanding some aspects of the C linkage model, and the distinction between arrays and pointers. It's also entertainingly written, which always helps.

2\. The Lions Book, an annotated source listing for the Unix v6 kernel. The subject matter is one of the most beautiful and influential programs ever written. This ~10k-line program is completely understandable in six weeks' study, a couple months' tops, yet it staked out almost all of the abstractions that still underly modern operating systems. It is also C's native environment: C was literally invented to write this program. And while it's dated in some of its peculiarities ("=+" where we'd write "+=", identifiers only being significant in the first 8 characters, no typedef yet, a lot more reliance on the register keyword, etc.), it's damned fine code, by any standard. Each page brims over with good, informed engineering trade-offs; the sweet spot may have shifted since the days of 128k core and 16-bit CPUs, but the thinking that goes into those trade-offs is mostly unchanged.

</comment><comment><USER16> This falls more into the "tips and tricks" category, but I wish someone had mentioned this to me earlier. Once you have a good book on C[1] install all the man pages for the standard library. Once you start writing code, being able to say something like "man strlen" is amazingly useful.

I made the most progress in C when I took a class on OSs. Mainly, we wrote systems programming sorts of things like a simple shell, our own version of malloc, a simple user-space thread library, and so on. This really gave me insight into how these things would be done for real. Also, writing something really linked-list-heavy gets you a feel for pointers _really_ quickly.

[1]: I have K&R ANSI C and I found it very concise and well-written. It is probably one step up from the "raw newbie" class of books in terms of difficulty, but should feel just right for someone already acquainted with (an) other language(s).

</comment><comment><USER17> You should learn C. It is a small language but to master it requires a lot of work for a reason: you need to get good at design. When all you have in your hands are structures and pointers you absolutely need to develop the ability to design well organized programs in different layers of abstractions, otherwise to scale over the 1000 lines of code program is almost impossible. This is probably the most valuable thing C will teach to you.

</comment><comment><USER18> 1\. In Which I Join The Choir

You should definitely learn C:

* You'll learn the memory hierarchy, which is probably the most important thing to know about performant software.

* You'll get 100x better at debugging --- both because you'll have practice, and because most of the tools you use to debug C code work for higher-level languages (gdb is still a better Ruby debugger than Ruby's own debugger).

* You'll be able to bridge Python (or Perl) to almost any library or framework you ever need.

2\. In Which I Express Reservations

 _Don't learn assembly._ In my (C and assembly-heavy) career, I've found it works in exactly the opposite direction: you won't really understand assembly until you understand C code. There are mainstream architectures (SPARC and MIPS) that are literally designed as drivers for C compilers.

You'll eventually want to be conversant in assembly so that you can debug faster (when it comes to the runtime, the C language is a flimsy abstraction indeed). But you should let your needs and interests drag you into the machine, just like you should probably learn "Stairway" and "Smoke On The Water" before mastering barre chords and sight reading --- you can have a pretty excellent punk band without ever knowing how to read music.

3\. There Are Books

Everyone is going to have an opinion about K&R. What I think you need to know is, it's short and it's dry. I re-read it 6 years into my career and I was surprised at how rich it was; there's a lot of design and data structures material, beyond the core language.

There's a C book that changed my life. It's David Hanson's "C Interfaces And Implementations" (CII). I will now make a case for why it's the first and only book you'll need. You're coming to C from a high-level language. That language is giving you a couple key things you don't realize you depend on:

* Garbage collection

* Lists and hash tables

* Resizeable strings

Almost every major C project contains a site-specific reimplementation of these concepts. CII gives you one --- an internally consistent one, relatively well implemented, and extremely well documented. In doing so, it also teaches you the single most important thing about writing good C programs, which is how to build abstractions around your gnarly code.

The difference between people who know C as a language and people who can actually deliver software in it is resizeable containers (linked lists, dynamic memory allocation, high-level strings, doesn't really matter what the specific is).

The other book you want is "Advanced Programming In The Unix Environment" (or its moral equivalent, "Win32 Programming").

CII is "how". APUE is "what".

Finally, I like (for new programmers) "The Practice Of Programming".

4\. What I Did To Get Started

I "knew" C for a while (maybe since I was 13) before I actually started coding in it. Two things got me unstuck.

First, I picked a couple basic Unix APIs and wrote little toy programs around them. If I remember correctly, the first thing I wrote was "who", from "getpwnam(3)", which forced me to do some basic strings and structure pointers.

Second, I wrote network code from a socket tutorial. Sockets are a great thing to get started on; just write a scraper for a service you like, and there's a zillion little problems you'll have to solve that are the same problems you solve in every other program you write.

<comment><USER19> I violently disagree with not learning assembly. Absolutely learn assembly. Just pick anything else other than x86 assembly. After learning the basics of assembly you will never have any trouble understanding pointers or any of the "hard" concepts in C.

x86 is a convoluted horror. A lot of it makes no sense except in the context of backwards compatibility, which the documentation won't necessarily point out. I highly recommend picking up a microcontroller to learn on instead of a microprocessor. Microcontrollers are mostly self-contained systems, while microprocessors are just a small piece of the picture and have complicated interfaces to the rest of the system components.

I recommend picking something in the Freescale 68HC* family. The addressing modes and instruction set are fairly clean and the architecture is simple. Something based on ARM would probably also be straightforward to learn. Don't worry about choosing a 32 bit chip, 8 or 16 bit is fine. 8 and 16 bit chips are typically simpler and will still teach you the important concepts.

Spend a couple of weeks on this and your understanding of C will be easier to come by and more thorough.

<comment><USER20> I'd steer away from the really small microcontrollers, as they tend to be register-starved (and/or memory-starved!) enough that you have to make ugly compromises, particularly in the area of call stacks. :(

ARM, PowerPC, and MIPS are all good choices if you've got appropriate hardware to play with. All three are nice, clean RISC architectures with plenty of registers and sane addressing modes.

<comment><USER21> Or try your luck at Core Wars. There you write programs in a simple assembler (Red Code) to fight against each other i.e. make your opponents execute an illegal op-code.

</comment></comment></comment></comment><comment><USER22> 1\. K&R - an absolute essential. I found myself in your shoes about two years ago, picked this up, and worked through it.

2\. "The Unix Programming Environment" ([http://www.amazon.com/Unix- Programming-Environment-Prentice-...](http://www.amazon.com/Unix-Programming- Environment-Prentice-Hall-Software/dp/013937681X)) This is a recent find, but covers more application. It's almost a Part 2 of K&R and covers building problems and the Unix signal and file APIs. The examples are in an ancient syntax, but part of the fun is coding them and getting them to compile.

3\. "The C Puzzle Book" (<http://www.amazon.com/Puzzle-Book-Alan-R- Feuer/dp/0201604612>) I found this one day at Fry's, and it's fucking awesome. You can effectively learn C using it without a compiler.

Good luck!

</comment><comment><USER23> K&R [http://en.wikipedia.org/wiki/The_C_Programming_Language_(boo...](http://en.wikipedia.org/wiki/The_C_Programming_Language_\(book\))

</comment><comment><USER24> I taught myself C/C++ when I was around 13. I already knew most of the concepts through my experience with Pascal, including pointers, which are harder to use than to understand. What I did have trouble with was Windows as I just couldn't figure out the API. What solved it for me was one of those old 'Game Developers' series of beginner's books. It gave detailed instructions on for a 'hello world' Windows application. After that, it was pretty easy to get the hang of it.

I don't use C much anymore (haven't since Highschool.) When I do, it's with GCC and I and the environment is still the hardest part.

Moral of the story being that C is pretty easy. I learned it with some very basic references. The hard part, supposedly, is pointers, and those are much harder to use than to understand. Basically, everything is done through them, without the usual abstractions that you would get with say, Java. You mainly just have to make sure you always have the right number of asterisks and ampersands.

One book I can suggest is _Advanced Programming in the UNIX Environment_ by W. Richard Stevens, (revised version) which gives a very through introduction to UNIX from a C perspective. C is interesting in that it is almost a different language depending on which system you write it on and you'll spend more time learning system calls and UNIX paradigms than C syntax and pointers.

</comment><comment><USER25> I learned C a while back, and don't regret the time spent doing so at all. This is how I'd recommend going about it:

* Everyone is going to recommend K&R, which is fine. Find a copy of C Interfaces and Implementations as well--very good implementations with explanations of standard high-level structures.

* Read source. SQLite's source, for example, is very well written and documented, and they actually have a version to download recommended for reading (everything is in one file).

* Implement. You're going to want to try implement standard Unix commands yourself. Try writing an interpreter/compiler as well. These things give you a good grip on a wide variety of C basics and will make sure you can work well with memory management and all that.

* Assembly. This is where _I_ would learn assembly (i.e., where I did). I don't think you need to go too far in depth, but a basic working knowledge will make debugging much, much easier.

<comment><USER26> Hi avinashv, I'm interested to learn SQLite. I noticed you mention that there is a "recommended for reading" version of SQLite. Would you mind pointing out where I can find it? I browsed the website and haven't had any luck to find such information. Thanks!

<comment><USER25> It's just the "amalgamation" version off <http://www.sqlite.org/download.html> (it's the first download link).

<comment><USER26> Thanks!

</comment></comment></comment></comment><comment><USER27> Chances are you already know C, but don't realize it. Java and PHP have mostly C syntax. All you have to do is substract objects and add pointers.

Like rsheridan6 said, assembly helps. It's not necessary though, as long as you realize a pointer is actually a memory address and not something abstract like a reference in Java or PHP.

<comment><USER28> ... and figure out how to deal with allocating and freeing things. Taken together, pointers, and manual memory management are a big chunk to bite off. The syntax isn't the problem, in other words.

<comment><USER29> For sake of argument: How often is the syntax the _primary_ problem in learning a new language?

The examples that come to mind are Forth and APL/K/J (all of which I've only dabbled in), but the reason they have such unconventional syntaxes is because they're conceptually very different.

<comment><USER27> And yet, because of the syntax I don't remember learning PHP. It was pretty much one night of reading the manual to get to know the API, and that was it. They're close conceptually too, not just in syntax.

</comment></comment></comment></comment><comment><USER30> If you've got the time, I _highly_ recommend taking CS107 at Stanford (for free): [http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2b...](http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee).

I became incredibly comfortable with C -- memory management, handling pointers, having a very clear picture of how types are represented in memory -- after taking that course. The lecturer (Jerry Cain) is fantastic as well.

The course changed this year so I don't have any thoughts on the current CS107 offering if you plan on taking it through their online course offerings for pay. The lectures, syllabus, and materials on Stanford Engineering Everywhere (OpenCourseWare at Stanford) are all from the course I took two years ago.

</comment><comment><USER5> C Primer Plus was completely useless to me. As I mentioned in another thread, I tried several books on C before K&R and none of them "took". I knew (by some definition of "knew") other languages (several BASIC variants, Pascal, REXX, Amiga shell, a little 6502 and 68000 assembler, etc.) when I started learning C...but it took years, and several failed attempts before I was actually able to make sense of real C code.

My book recommendations would be K&R, _Advanced Programming in the UNIX Environment_ by Stevens, and _C: A Reference Manual_ by Harbison and Steele. In that order. With liberal doses of web research and reading real world examples and experimentation.

</comment><comment><USER31> Learn C at Harvard (virtually) for free:

[http://tinyapps.org/weblog/misc/200904120715_learn_c_for_fre...](http://tinyapps.org/weblog/misc/200904120715_learn_c_for_free_at_harvard.html)

</comment><comment><USER32> Here is what worked for me.

Work through, in order, (1) K & R (2) C interfaces and Implementations by David Hanson (3) Deep C Secrets by Peter Van der Linden (4) Advanced Programming in the Unix environment

Good Luck!

</comment><comment><USER33> I've only found two books on C worth the money. One is K&R, the other one (which I haven't seen mentioned here) is "The Standard C Library" by P.J. Plauger. It not only presents the ISO standard for the library, but Plauger's commentary on the standard, how to implement the standard C library, along with his implementation. It explains some of the murkier aspects of the C library, along with how to go about writing portable code.

</comment><comment><USER34> If you can program well in C, everything else seems like both a blessing and a compromise.

While K&R is great, my copy is far less used than Pointers on C by Ken Reek. If you can find a cheap copy I highly recommend it. If you are working through K&R make sure to do each of the sample problems. The text is just the support to let you figure out how to do them.

</comment><comment><USER35> I also wanted to learn C, not to learn specifics of the language per se, but to better understand the C/UNIX ecosystem. The book I chose to follow was Computer Systems: A Programmers Perspective. You can get a draft at: <http://lsec.cc.ac.cn/~tcui/download/draft.pdf> .

</comment><comment><USER36> This course website from the University of Maryland has a very good introduction to C.

<http://www.cs.umd.edu/class/fall2005/cmsc212/>

It starts off with the fundamentals then gets into some more advanced principles. In particular, check out the "Jan Plane's Lecture Outlines" link.

</comment><comment><USER37> Stanford's CS Ed library (particularly Nick Parlante's linked list and binary tree problem sets) is a fantastic resource for understanding the C language, it is the way i learned it.

<http://cslibrary.stanford.edu/>

</comment><comment><AUTHOR> Well, copies of K&R and C Puzzle Book are on their way, with CII and Advanced Programming In The Unix Environment (2ed) wishlisted for later. Can't find a copy of Deep C Secrets on our local Amazon equivalent, but I'll keep searching.

</comment><comment><USER38> It may not be what you are looking for, but if you want a C based intro CS text, this classic is now freely available.

Foundations of Computer Science

<http://infolab.stanford.edu/~ullman/focs.html1>

</comment><comment><USER39> Some helpful reminders for learning any programming language, <http://c2.com/cgi/wiki?LearningProgrammingLanguages>.

</comment><comment><USER40> I bought K&R but in the end found <http://www.cs.cf.ac.uk/Dave/C/> to be much more useful and accessible - and free!

</comment><comment><USER41> Sure! Knowing C can definitely help with your overall understanding of how things work. It's especially helpful when learning new languages.

I uploaded a copy of K&R ANSI C for you. In my opinion, it's probably the best way to learn it.

<http://whitepaperclip.com/files/ansi_c.pdf>

Have fun!

<comment><USER42> This book have copyright and you can buy it in libraries.

<comment><USER43> What makes you think he's not?

</comment></comment></comment><comment><USER44> amazon booklist I used to teach myself

<http://www.amazon.com/Master-C-Programming/lm/9PUKX2J9RNUO>

</comment><comment><AUTHOR> Brilliant. Thank you all.

</comment><comment><USER45> I will be trying this myself, from what I can see it would be very helpful for learning C:

<http://bellard.org/tcc/></comment>


Cloudkick's (YC W09) simple cloud management gets $750K - <AUTHOR> http://deals.venturebeat.com/2009/09/14/cloudkicks-simple-cloud-management-gets-750k/

<comment><USER2> Here's something I'd like to know: EC2's dashboard looks really friendly, much better than their suggestion of downloading some java programs to fiddle on with. Amazon's the cheapest, so what's the benefit of going with Cloudkick vs straight EC2?

<comment><USER3> I suspect that it has less to do with CloudKick's current capabilities and more to do with its potential. As soon as I get a chance, I'm going to sit down with melito to get more of a tour of Sliceapp.

The potential possibility for me to stage apps and deployment necessities SOMEWHERE and spool that up across any number of servers / datacenters / hosting providers is a VERY tempting idea indeed.

That I could potentially change hosting providers for my app without downtime is an idea I think a LOT of people could get behind.

CloudKick and Sliceapp are in-roads to that level of capability, and if executed well enough, could literally change the way we think of hosting forever.

</comment></comment><comment><USER4> Great work, guys. There's a huge opportunity for cross-vendor cloud infrastructure and I think you're in a great position to own the market.

</comment><comment><USER5> why do people just upvote anything if it is YC related? at least someone can congratulate the team or someone from YC can share an anecdote related to the company. Why just upvote?

BTW, Congratulations, guys.

<comment><USER6> I wonder if the people that do it, think there is some conspiracy, where pg secretly monitors all upvote history, and if he sees you didn't upvote a YC story, or one of his comments, then you get disqualified from getting into YC.

Nah something like that is stupid....

...he probably wrote a script to do it for him.

<comment><USER7> Well played, pity the downvoters can't tell a joke from a serious posting.

On second thought, there might actually be people that think like that.

PG is on the record stating that your posting history on HN is a factor in YC acceptance, maybe they extrapolate that to voting history ?

</comment></comment></comment><comment><USER8> I don't really get what cloudkick does, likely because I don't use the "cloud", but it seems to me that cloudkick can correct a few things:

1\. Free is good, but asking for money will teach you early in the game what people will pay for and what not. A small amount like 750k does not allow you expand, it just allows you more time before you can discover what part of your service people will pay for - and that is bad

2\. The first person they hired seems overqualified.

3\. Their blog and overall message seems very distant. "Team Cloudkick", "We" and the quasi-corporate speak is exactly the wrong tone to use to approach the developer crowd - who are the core audience for this tool

4\. Screenshot on their frontpage does not convey anything to me.

I'm sure that the idea they have is good, but I have a feeling that the people behind cloudkick are not too competent, and that they will bungle their opportunity.

<comment><USER7> In todays market 750K is not 'a small amount', especially not for a company that launched less than 6 months ago.

> I have a feeling that the people behind cloudkick are not too competent, and > that they will bungle their opportunity.

Why do you have that feeling ?

<comment><USER8> Run the numbers. 750K basically pays salaries for a while, pays your rent, but it's not "investment". It's what you need to keep the average small tech company alive for a while.

<comment><USER7> So, what would qualify as an investment in your opinion ?

</comment></comment></comment></comment><comment><USER9> congrats guys!</comment>


Linus laughs at Kurzweil - <AUTHOR> http://gizmodo.com/linux-creator-linus-torvalds-laughs-at-the-ai-apocalyps-1716383135

<comment><USER2> TL;DR; A guy who is not an expert on AI is described as disagreeing with another guy who is not an expert on AI, about AI.

<comment><USER3> Related reading: predictions about the feasibility of heavier-than-air planes and metal/concrete boats, feasibility of space travel, market size for wireless communication and personal computing etc.

 _> 2015: We'll get AI, and it will almost certainly be through something very much like recurrent neural networks._

 _> ~1700: We'll get aircrafts, and it will almost certainly be through something very much like birds flapping feathered wings._

</comment></comment><comment><USER4> Sometimes I wish there was a downvote button for the submissions... in this case, not because the linked article is bad (though I am surprised Torvalds apparently dismisses the idea of a self-improving AI), but because the title is nasty and not reflective of the article linked.

</comment><comment><USER5> My question is: do we know enough about human intelligence to know that we can physically replicate or exceed it? Classically the human mind is seen as a Turing machine based on RNNs, however, one area of debate suggests that the human consciousness/intelligence could have a quantum component.[1] I don't know which hypothesis to agree with because of a lack of evidence either way: and there-in lies the problem.

However I tend to agree more with Linus because, as always, he has the more logical and pragmatic standpoint.

[1]: [https://en.wikipedia.org/wiki/Quantum_mind](https://en.wikipedia.org/wiki/Quantum_mind)</comment>


The news sources that Reddit prefers - <AUTHOR> https://medium.com/@hoffa/reddit-favorite-sources-the-most-linked-sites-expanded-and-interactive-79070d648573#.b3canl18f <comment><USER2> fhoffa, you're everywhere!

<comment><AUTHOR> data wants to be shared - thanks for the inspiration!</comment></comment>


Learn to draw a cassette pixel graphic - <AUTHOR> http://4-designer.com/wp-content/uploads/2013/08/a-cassette-pixel-graphic-40x40.jpg

<comment><USER2> That's just a pixel graphic.</comment>


ūñįčødįńg - <AUTHOR> https://github.com/feisty/unicoding

<comment><USER2> I'm confused, is this intended as the next zen coding, or do you intend to actually parse the symbols, like APL[1]

[1]: <http://en.wikipedia.org/wiki/APL_(programming_language)>

<comment><AUTHOR> It's merely a guide to "unicoding".

<comment><USER2> What is unicoding? I feel like I should probably know, having read it but I really have no idea what you mean.

<comment><AUTHOR> Morpheus: Fortunately, no one can be told what unicoding is. You have to write it for yourself.

<comment><USER3> Mystery and theatrics are fun, but please stop. If you're goal is to attract users/developers to this library (cause?) you'll get more response with a with a clear explanation and description.

<comment><AUTHOR> *your

<comment><USER2> For the love of the FSM please stop.</comment></comment></comment></comment></comment></comment></comment>


The Growing Charm of Dada - <AUTHOR> http://www.nybooks.com/articles/2016/10/27/growing-charm-of-dada/ <comment><USER2> I would very much appreciate it if someone could explain to me the appeal of this art form. I understand that many people enjoy experiencing it and discussing it, but I don't feel like I have the context to understand why. Is it just the joy of an intellectual exercise wherein there is no right answer? Is it one of those things where people are having fun being a part of something that others don't understand? I would guess it's a mixture of many motivations, and if someone who enjoys this art form is willing to explain it to me I'd be very happy to listen!

<comment><USER3> I mean... it's art, right? Different forms resonate with different people. Usually, trying to justify why results in either fairly personal statements that either apply to you (in which case they probably don't teach you much) or don't (in which case they don't get you any closer to understanding the appeal), or in very verbose and dense academic justifications that don't do much for the vast majority of people. I get the historical, linguistical, etc significance of Shakespeare, but I still find his plays painful to read/sir through and much prefer 20th century theater.

These things also change with age. As you experience various life events, works that didn't appeal to you in the past suddenly hold much more interest; and similarly, things that once seemed deep and insightful seem trite and superficial.

That being said, studying a bit of art history elevated my understanding of it all; understanding that pretty much all art is a dialog that the creator has with past works was a big key. To reuse my previous example, I still can't stand Shakespeare but at least now I get why his work is pretty significant.

<comment><USER4> > "understanding that pretty much all art is a dialog that the creator has > with past works was a big key"

I'm not sure I quite see it that way. I mean, yes, you can view art as a progression where one artist is transforming the art of the past into new forms, but art goes beyond that.

I think it'll be easier to elaborate by sticking to the musical arts rather than the visual arts. Consider any piece of music you enjoy. Sure, you can trace the origins of its style to earlier pieces of music, but to truly appreciate music you don't need to know that history, the music works as a standalone piece. It's the same with visual art, the greatest pieces require very little prior knowledge to appreciate, they instead can stand on their own merits as something that evokes emotion and/or reflection.

</comment></comment></comment><comment><USER4> Interesting article, I didn't know what Dada was before, I can see the appeal.

I don't know enough about either to really be sure, but I got the sense of some parallels with metamodernism, in that both seem to be a form of life as performance art, playfully both serious and silly at the same time. This video helped introduce metamodernism to me:

[https://m.youtube.com/watch?v=6dsECbVahBw](https://m.youtube.com/watch?v=6dsECbVahBw)</comment>


Microsoft office 365 v/s Open Source Fedena - <AUTHOR> http://www.thehindu.com/todays-paper/tp-national/tp-karnataka/moving-from-under-microsofts-cloud/article4662385.ece

<comment><USER2> Docx is an open standard built on Open XML. It is not Propietary. There is no licesnse to build an editor that supports it, and it is well documented.

The author contends that this is Proprietary. If they got this very obvious thing wrong and it is one of their biggest points for why you shouldn't use Office 365 I think it is safe to say they didn't go in to this with an impartial view.

<comment><USER3> There are dark corners of Open XML. In particular, one has compatibility settings with names such as "autoSpaceLikeWord95", "footnoteLayoutLikeWW8", "lineWrapLikeWord6", "shapeLayoutLikeWW8", "truncateFontHeightsLikeWP6", "useWord2002TableStyleRules", "useWord97LineBreakRules"

Reading the spec, I get the impression that they made a serious attempt to document what these mean. However, some might still find it troublesome that, in practice, the only way to figure out what to do in the presence of such settings is to look at how those applications displayed text or, in many cases, how some Office version emulating WordPerfect or an older version of Word handled them.

Also, some will feel these should not have been part of the spec, or that the spec should be more explicit in stating that new documents should not write them (but then, what is a new document? Say, I do File-New, then paste in a few pages from a document having those settings, then save? Alternatively, I open a document, delete all content, then do File-Save As?)

<comment><USER4> > some might still find it troublesome that, in practice, the only way to > figure out what to do in the presence of such settings is to look at how > those applications displayed text

Well, presumably, if you want to give your word processor the ability to "autoSpaceLikeWord95"--for a _business use-case_ , not just as a feature to tick off on a checklist--then you already know what it _means_ to "autoSpaceLikeWord95", because your clients are pointing to documents your program has created and saying that right here, there, and here too, the Word95-like autospacing is missing.

Basically, these compat flags are _suggestions_ to activate the compat functionality it turns out you needed to build anyway; if you're adding compat for some old version of some app _because the hook is there_ , without any of your own clients needing to preserve the old behavior in their documents, you're Doing It Wrong. It would be like Firefox parsing <!--if IE7--> tags just because there's a standard for how IE should handle them.

<comment><USER5> Looks like autoSpaceLikeWord95 is defined in ISO/IEC 29500-4:2012 "Information technology -- Document description and processing languages -- Office Open XML File Formats -- Part 4: Transitional Migration Features" as compatibility feature for unicode handling bug and ever has full name "Incorrectly Adjust Text Spacing for Specific Unicode Ranges".

</comment></comment></comment></comment><comment><USER6> Why is AICTE thinking that a company like Microsoft will give out server space for millions of students for free? Are they not aware of Microsoft's track record of feeding people with drugs until they become dependent on it? They did that with Windows, and now are trying to do that with online documents.

Is it not good enough that the same students who are handed out these "drugs" are the ones who have no clue about bash scripting or how to edit a .bashrc or how to create a new Rails project? (They don't know what Rails is either. They do know what ASP is though. ASP!) Or that all the "engineers" from AICTE colleges are worth doing is being a part of the army the US outsources small projects to?

<comment><USER7> >Are they not aware of Microsoft's track record of feeding people with drugs until they become dependent on it?

You mean the same model that other companies on the Internet apply, namely Google, Amazon and even Apple? The Razor and Blade sales technique that has been touted for decades?

>They don't know what Rails is either. They do know what ASP is though. ASP!

I would assume most know what PHP is than what ASP is (ASP has no connection to the office suite, is not part of the curriculum). However, PHP is again frowned up by the elites despite being open.

Similarly, most know what Google is but a few know what DuckDuckGo or Bing is. Does this make Google evil? Heck NO!

</comment></comment><comment><USER8> Here is the link to the first article which was published one week back. Engineering student locked into Microsoft Office - [http://www.thehindu.com/features/education/issues/engineerin...](http://www.thehindu.com/features/education/issues/engineering- students-locked-into-microsoft-office/article4640546.ece)

<comment><USER9> Ridiculous, all this states is that the "cloud email and storage offering" for the uni will be provided by Microsoft, nobody's being forced to be "locked in" to only use those products.

</comment></comment><comment><USER10> why is office being compared to an opensource school/college ERP ?

<comment><USER8> The comparison is not on the features. It is on the purchase or engagement model.

</comment></comment><comment><USER11> What is "Open Source Fedena"?

<comment><USER8> <http://www.projectfedena.org/>

<https://news.ycombinator.com/item?id=2862755></comment></comment>


Microsoft open sources parts of Minecraft: Java Edition - <AUTHOR> https://minecraft.net/en-us/article/programmers-play-minecrafts-inner-workings <comment><USER2> Of note is the Minecraft website from 2011 [1], where Markus Persson said: "Once sales start dying and a minimum time has passed, I will release the game source code as some kind of open source. I'm not very happy with the draconian nature of (L)GPL, nor do I believe the other licenses have much merit other than to boost the egos of the original authors, so I might just possibly release it all as public domain."

[1] [http://web.archive.org/web/20110920065648/http://www.minecra...](http://web.archive.org/web/20110920065648/http://www.minecraft.net/game)

<comment><USER3> He probably expected that sales would go down to irrelevant. That never happened, instead he got an absurd deal. MS is open sourcing to satisfy modders, eventually for more reach and cash. The intentions are very different and it would be awful to blame notch for that.

<comment><USER4> The intentions may be different, but it doesn't mean one of them has to be bad. If MS makes money and users get to do more with the open source code, it's a win-win.

</comment></comment></comment><comment><USER5> Two of the most boring parts of Minecraft, unfortunately. Both are something your average first year CS student could put together in a weekend or two.

If I can indulge in some self-promotion, I have written mountains of code which implements many of Minecraft's behaviors down to the last detail, which may be a more interesting candidate for study:

[https://github.com/sircmpwn/truecraft](https://github.com/sircmpwn/truecraft)

Seeing Balze3D open-sourced might end up being pretty cool, though.

<comment><USER6> > Both are something your average first year CS student could put together in > a weekend or two.

Sometimes I see people and wonder which of these two things is true:

1\. They have no idea what the average developer actually is.

2\. They are lying to make it sound like they were elite when they were a freshman in college.

<comment><USER5> I did not go to college so I have to admit I'm not actually familiar with the average freshman's skill level. That being said, these are basic and well- understood problems solvable by the average, say, junior developer in the industry. Less of a reach?

<comment><USER7> Far, far lower than you're envisioning. There are certainly a lot of freshmen who could easily do something at this level, but the average freshman would be hopelessly lost (at least in my (recent) experience).

By the way, excellent work on Sway. I've been meaning to jump to i3 forever, and decided to move to Wayland on my most recent install. I do have some bug reports to send your way, though, I should get on that.

<comment><USER5> Thanks! Please do send those along, though a patch is worth a thousand bug reports.

<comment><USER7> Indeed it is. I'm hoping to get the time to dig into it enough to submit a patch, but school has me pretty busy at the moment.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> The code is being open-sourced as MIT-licensed libraries. The libraries mentioned in the article are Brigadier [0], a command parser and dispatcher, and Data Fixer Upper [1], which is used to migrate older chunk data to newer versions of Minecraft.

Apparently more libraries are in the pipeline to be open-sourced alone these two. One possibility is Blaze3D, which is a rewrite of the rendering engine that is planned on being included in Minecraft 1.14.

        [0]: https://github.com/Mojang/brigadier
        [1]: https://github.com/Mojang/DataFixerUpper

<comment><USER8> Clickable links. If you indent text, that gets formatted as code.

[0]: [https://github.com/Mojang/brigadier](https://github.com/Mojang/brigadier)

[1]: [https://github.com/Mojang/DataFixerUpper](https://github.com/Mojang/DataFixerUpper)

<comment><USER9> Also the numbered quotation format is really without indentation. If I recall correctly in restructuredText you can do the same to do quotations correctly, and you could also put in strings instead of numbers, e.g. [<Author><Year>] (might need Sphinx, a library on top of resT, or maybe a bibtex plugin).

<comment><AUTHOR> Ah, is that the case? I just remember picking up the indentations for references somewhere, and never really got around to finding out whether that was the right way to do things. Looks like I need to change that habit

</comment></comment></comment></comment><comment><USER10> As some who loves the lens library in Haskell, this makes me in awe:

[https://github.com/Mojang/DataFixerUpper/tree/8b5f82ab78b30f...](https://github.com/Mojang/DataFixerUpper/tree/8b5f82ab78b30ff5813b3a7f3906cd3f4f732acf/src/main/java/com/mojang/datafixers/optics)

Profunctors, lenses, prisms, traversals… all there :)

<comment><USER11> Honest question, if you look at this:

[https://github.com/Mojang/DataFixerUpper/blob/8b5f82ab78b30f...](https://github.com/Mojang/DataFixerUpper/blob/8b5f82ab78b30ff5813b3a7f3906cd3f4f732acf/src/main/java/com/mojang/datafixers/optics/profunctors/ProfunctorFunctorWrapper.java)

Is that understandable to you? And does this really make solving some problems easier?

I've dabbled a bit in Haskell, but never got further than functors, applicatives and monads, and I always wonder whether this kind of stuff really helps.

(It probably doesn't help that Java is very verbose, especially compared to Haskell...)

<comment><USER12> It probably could do with some examples, and better docs, but it seems like they use this to update old chunks, which is a great use of lenses.

But yeah, you'd have to weigh that up against how ugly it turns out to be in Java. It's not just because of the verbosity, it's the lack of being able to abstract over type-level functions that makes it quite icky to implement these abstractions in Java.

</comment></comment></comment><comment><USER13> It would be really cool if Minecraft, Minetest [0], and Terasology [1] development communities could somehow join together to create a cross- compatibility between their games. There are a lot of open-source developers in those communities who can combine efforts take voxel gaming to new heights.

[0] [https://minetest.net](https://minetest.net) [1] [https://terasology.org/](https://terasology.org/)

<comment><USER14> Ha came here to leave a link to Terasology. A classmate created it back in the study days. He went to work at a German game studio.

The project was joined by more and more contributers and has become really impressive!

Minecraft-like games are not really my thing but I recommend it to most people mentioning Minecraft :)

</comment></comment><comment><USER15> Back when we were working on Bukkit, when Dinnerbone and the other three were aquihired? by Mojang, one of the main things they wanted to do was implement a proper modding interface into the game.

Lots of things conspired to make that not happen, undoubtably including feature creep (because it was going to be the official mod api, it had to be _correct_ not just good), but it finally looks like they're moving in that direction.

</comment><comment><USER16> Worked on a fairly major PvP minecraft community / mod website at the start of this year. Minecraft PvP is sort of a competitive set of modifications that build out entire networked games. The games use normal minecraft concepts like item consumption. Almost all "fighting" is done with swords, with people clicking their mouse very fast.

All of the mods were based on 1.7.10, which is pretty far back, looks like 1.13.1 is the latest.

There are still a lot of young people playing minecraft PvP, particularly outside the US. But you could tell even then that Fortnite was eating up younger players.

</comment><comment><USER17> Minecraft's deobfuscated source is publicly available for viewing for those who are interested through Minecraft's Mod Coder's Pack.

<comment><USER18> Isn't that just reverse engineering and cleaver renaming based on what the functions/variables actually do?

<comment><USER19> "just"

<comment><USER18> So your implying that it's not trivial. I acknowledge that.

What I was implying is that a third party deobfuscation project by reverse engineering with minimal input from the original developers would presumably be different in terms of variable/function names, etc, comparing it to the original source.

</comment></comment></comment></comment><comment><USER20> I looked at DataFixerUpper - should I be surprised that there appears not to exist even a single test for this piece of engineering?

Boggles my mind that someone would engineer something so sophisticated and not write even a high-level test script of some kind.

<comment><USER21> This comment is why people think twice before opensourcing their code

<comment><USER20> Maybe.. but this is a VERY sophisticated data migration utility.

It going wrong can mean crippled data!

I am certain /some/ code must exist to allow the authors to verify it does what they want so my question is more: where is it?

</comment></comment></comment><comment><USER22> This seems to only be the command engine itself, which by the way is the sorry excuse for modding support that Mojang put out after Notch's promises. Not particularly exciting, but Blaze3D seems a little more interesting.

</comment><comment><USER23> Thank you for your hard work. I've enjoyed countless hours meditating while chipping away at blocks that later went towards my castles. Anything further that you choose to release, I thank you again. And thank you for providing the venue to allow me to connect with my little brother, for that I can never repay you.

</comment><comment><USER24> Not really that surprising since there seems be a lot of focus on things like Minecraft Education Edition, which isn't Java based.

(Which, as a teacher, I am finding a fantastic tool for both introductory programming and other topics)

</comment><comment><USER25> Why did they choose to implement various functional programming concepts from scratch? Were there really no suitable preexisting implementations at the time?

</comment><comment><USER26> What is something one could develop with this source code that would have been more difficult or impossible before?

</comment><comment><USER18> Interesting, but how much of this has been reverse engineered from decompiling the Java classes already?

<comment><USER27> That's what I thought too at first --- Java (and .NET) is so easy to decompile that having the original source is not so much of a big deal.

</comment></comment><comment><USER28> I remember BUILD 2015 when a Minecraft mod was used as a demo and the team complained.

</comment><comment><USER29> Instead of open sourcing code, they should fix the Aquatic update. All Minecraft versions after 1.13 are literally unplayable for me (mid to high end gamer PC) due to freezes. Every 5 seconds, the game freezes for two seconds for me. Increasing RAM for the JVM was useless. After the update, the game needed more than 3GB of RAM when before it ran just fine on 1GB (I have 16GB of RAM so no problem there, but the game still freezes). I have never seen more broken updates except with Skype - which, now that I think about it, makes perfect sense, considering it's also from Microsoft.

Why would I use their game library when they ship such incredibly broken updates?

<comment><USER30> 1m people play the game with no issues. Did you open a support case? Did you open a bug? What's the ID? Also giving more RAM to Java is a bad thing as GC can cause lag. I run 1.13.1 on an old AMD 2ghz under Windows 7 with a Nvidia cards from 2011 and get 30-90fps. Also runs fine on my 2017 MacBook and on an intel compute stick (i5, 4gb ram, Win10 on a 4K screen). Something else is your issue and you just see it in the game.

<comment><USER29> I updated my Nvidia graphics driver and that fixed the issue. It's probably a case of Minecraft using the OpenGL API wrong and the driver needing to compensate for this broken usage of the API.</comment></comment></comment>


C's index[arr] notation - <AUTHOR>

I had always assumed that it was merely some strange artifact of the language, until I finally thought about it, and then finally understood:
arr[index] is equivalent to (arr + index), which by the commutative property of addition is equivalent to (index + arr) = index[arr].
Mind = blown <comment><USER2> It's not the same as (index + arr). arr is a pointer to the beginning address of a series of particular "types". These types have a specific size in memory. Index increments the pointer by (n * size_of(type)).

arr[index] == arr + (n * size_of(type)) == (n * size_of(type)) + *arr

<comment><USER3> He said it's the same as

        *(index + arr)

which is correct.

C pointer arithmetic already accounts for object sizes.

And it's sizeof, not size_of. And

        arr + x

is completely different from

        x + *arr

And it's a series of "values".

<comment><USER2> I don't know what I was on. Proof positive that sleep depravation does not give me more time to be "productive". Thanks for the correction and apologies for my mistake.</comment></comment></comment>


Malware masked as textbooks and essays - <AUTHOR> https://www.kaspersky.com/blog/back-to-school-malware-2019/28316/ <comment><USER3> And this is why allowing scripts/embedded executable files in document formats has always been a bad idea. There's always someone who will mess it up. Luckily there are some tools for sanitizing documents, such as dangerzone for pdf [0]. But I wish there were standardized docx/pptx/odf/odp with zero scripting capabilities.

[0] [https://github.com/firstlookmedia/dangerzone/blob/master/REA...](https://github.com/firstlookmedia/dangerzone/blob/master/README.md)

<comment><USER4> If I understand the description correctly, dangerzone completely rasterizes the pdf. This seems pretty drastic. Isn't there some tool that just checks the PDF or removes the scripting, without having to install a commercial antivirus software?

</comment></comment><comment><USER5> > As it turns out, over the past academic year, cybercriminals targeting the > field of education tried to attack our users more than 356,000 times. Of > these, 233,000 cases involved malicious essays downloaded to computers owned > by more than 74,000 people. Our solutions blocked them, of course.

Note that you can only detect malware you block. Successful malware bypasses detection…

</comment><comment><USER6> I have been concerned that scihub and libgen could be distributing viruses via 0-days in PDFs.

<comment><USER7> I have always been concerned about that as well. Although aren't you somewhat safe depending on if you only open it with the corresponding pdf software? I thought the "only" vulnerability was the software it's used with and if you double click it or not.

<comment><USER8> Yes, though theoretically a single PDF could contain multiple exploits for multiple different PDF reader programs, I believe. Not sure if that's ever actually been observed, but it seems plausible in theory.

Most people use Adobe Acrobat, though, I think, so a PDF exploiting an Acrobat zero-day can be safely assumed to be pretty effective.

</comment></comment></comment><comment><USER9> I can picture the 22nd Century...

Shakespeare, and other great works of classic literature... are now classified as "malware"...

Essays (like those of Emerson, Voltaire or Thoreau) are now classified as "malicious essays"...

And, much like a box of Cracker Jack, or bottle of Tequila, you get a free "surprise" with each one... you get a free worm... (well, it's a computer worm... but same difference...)

Well two things are for sure in this "Brave New World" (a book which is also banned by the way!)...

1) Computer virus protection companies will never go bankrupt, and

2) Perhaps old-fashioned, printed on physical paper, virus-free (well, computer-virus free, not necessarily "mind-virus" free!) books (in addition to _actual education_ ) will make a comeback!

I am not holding my breath for this, however...

(Disclaimer: I am kidding about most of the things I said above...)

</comment><comment><USER10> Seems like most aren't PDF reader exploits, but are things masquerading as PDF files (links to open IE to an exploit site, exes with a PDF icon, etc.)

This is an area where antivirus software like Kaspersky shines - <USER2> things that are "obvious" that a user might nevertheless not notice 100% of the time.

</comment><comment><USER11> The site academia.edu seems to be a big part.

It baffles me how widespread this is.

</comment><comment><USER12> Hm, what about malware masked as ZOOM? ;-)</comment>


Microsoft resorts to lawyers to stop doubleclick deal - <AUTHOR> http://www.marketwatch.com/news/story/competitors-question-google-buy-doubleclick/story.aspx?guid=%7B688258ED%2DF4A5%2D43C4%2D9975%2DB312C7FEF516%7D&siteid=yhoo&dist=yhoo <comment><AUTHOR> I didn't realize a company with only $150 million in revenue could justify an antitrust lawsuit. Don't publishers get to choose who to their ad space to?

""Google's purchase of DoubleClick combines the two largest providers of online advertising delivery and is going to reduce substantially the market competition on which Web sites rely on to provide advertising," The Journal quoted Brad Smith, Microsoft's general counsel, as saying. Smith said that, taken together, Google and DoubleClick would handle more than 80% of the advertisements served up to third-party Web sites when a user pulls up a page, the Journal reported."

I see this as only being beneficial to publishers. Competitors will likely offer more transparency as to the size of their commission fee and google's margins should shrink to the benefit of publishers.

</comment><comment><USER2> _"The depleted cash position will likely put a large dent in Google's investment income in 2007."_

I think this may be their big purchase for the year but it won't stop them from spending $5-$50m on a few startups.

</comment><comment><USER3> Microsoft would be stupid to not even try to prevent the deal. They didn't get this far by not exerting legal bully power when they have the chance.</comment>


Tesla employees reveal how they were fired - <AUTHOR> https://www.businessinsider.com/tesla-employees-reveal-how-they-were-fired-2018-6 <comment><USER2> Some of this seems like they're trying to find criticism where it's barely warranted. When are you supposed to notify someone of a meeting in which they'll be fired? Too late and it seems like it's last minute. Too soon and they might anxiously stew on it for a week.

Not enough indication of what the meeting is about, and they'll be surprised. Give them too much indication and their anxiety will balloon.

I've been on the receiving end of this as an employer in a really small business. e.g., a keystone employee was leaving and with awkward timing. There's no brilliant way to do it.

<comment><USER3> What about this part?

> A third employee, an engineer who still works at Tesla and asked not to be > identified by name, said he discovered his manager had been fired after the > manager didn't show up for a meeting on Tuesday. When a colleague of his > attempted to email the manager, the email bounced back.

Seems very odd not to notify employees when their _manager_ gets fired.

<comment><USER2> What day were they fired? Given that's one case, could it have been overlooked by another manager or by HR dealing with bigger fallout?

Are these types of stories written for every round of layoffs at every other automotive company? It strikes me that the media is quick to find drama when it's Tesla.

</comment></comment></comment><comment><USER4> If you leave voluntarily, I can see your contract could plausibly deny you points on sales completed after you walked.

If you are on commission and the tail payment is not paid because they sacked you without cause, I would be surprised if the payment was not still due. It feels like its a part of the conditions of employment you can't avoid by firing somebody simply to downsize.

Doubtless some truly shitty employment law loophole means this assumptive, pathetic "but thats unreasonable" idea is wrong, but thats what I'd assume: the work was done for payment on completion, how can it not be paid, if the customer completes? If this was true, then the history of commission selling would be littered with lawsuits leading to some law to clarify.

If its clearly at-risk payment subject to retained employment, thats a huge rip-off, which makes me glad I have never, ever worked on commission.

<comment><USER5> You can only bring a lawsuit if you have the money for a lawyer in the first place. If your employer is not paying you, then you are already out a lot of money you could have used to defend your rights

<comment><USER6> Some lawyers will take a strong case for a percentage of the settlement.

<comment><USER7> Most of these sorts of cases are too small to be worth it for a lawyer on an individual basis. Losing out on $3000 of commission you are owed and where expecting can be terrible for an individual, but a chance of winning 30% of a $3000 settlement isn't worth getting out of bed for if you're a lawyer. That's why these sorts of cases only make sense as a class action.

<comment><USER8> Small claims court is your friend. Judges take a dim view of employers not paying money owed.

</comment></comment></comment></comment></comment><comment><USER9> This is how clueless but innocent individuals suffer for (whimsical) promises / decisions of leaders.

Musk promises profitability - sale's not picking up, production is far behind, cost of production isn't reducing... the low hanging fruit - employees.

I am waiting for how the employees would respond to the increased pressure. If I worked there, I'd have already blasted my resumes months ago.

<comment><USER10> The counterpoint of course is that without whimsical promises / decisions of leaders many jobs wouldn't exist for them to lose.

Which isn't to say they don't go too far on occasion.

I've always found the self-interested "safe" leaders to be the worse kind. They're also 99% of them.

</comment></comment><comment><USER11> This has been coming for a while. In public Elon has been using "eccentric millionaire" to dodge Tesla finance questions which is a sure sign the numbers look bad.

Given they'll need to refinance and I'd bet the Model 3 sales after reservations are low due to the cheap one not being available yet, the company must've been looking at a financing crunch for a while now.

This is very much a move to clean house so they can do another round.

</comment><comment><USER12> _I don 't think there will be enough business for the staff levels that they have," she said. "I would be scared to lose my job if I still had one._

This seems consistent with the company's statements that they are restructuring to boost profitability, as opposed to a frantic move to conserve a dwindling cash reserve.

</comment><comment><USER13> This is how big layoff rounds work. Tesla just fired 9% of its people in a hurry. That means somebody had to come up with a huge list of people and make tough choices based on cost, budgets and spreading the pain across departments, etc. Usually that involves quite a bit of bartering between departments, quotas, etc. The main reason here is cutting cost; not performance of the individuals.

Looks like a job well done to me. Minimum amount of fuss and the they got it over with in a day or so. Most people did not see it coming, which means they contained the chaos nicely. Having disgruntled employees panicking ahead of this kind of stuff is very bad for morale. And once it is done, you basically want these people out of your building ASAP. Tesla is not a charity and dragging this out for weeks or months while they went department by department would have been very bad.

</comment><comment><USER14> >The company broke promises more than once, she said, adding that she was not reimbursed for mileage, as promised

Isn't this a good example of something that merits an NLRB complaint?

<comment><USER6> > Musk said in an email on Monday that the company was laying off people now > so that it would never have to do it again.

Sounds like another promise waiting to be broken. Never is a long time.

</comment></comment><comment><USER15> Sounds like the company is suffering from poor management. They can develop a product people love but sounds like everything (mfg, delivery, sales) after is chaos.

</comment><comment><USER16> There's no good way to do a layoff, but a good severance package goes a long way towards "doing the right thing". 1 month per year or part year of service, plus notice period, is fair. Statutory minimum, in the U.K. at least, is a sick joke. That's all that IBM offers.

</comment><comment><USER17> Dont give up on Tesla, America, hand them some public money instead

</comment><comment><USER18> Is this why the TSLA stock has been going up and up this week?

<comment><USER19> Yes and because Elon artificially inflated the price this week with buying stock with his own money.

</comment></comment><comment><USER20> My vote for a 'convert submitted amp links to normal links' automatism on HN. Or simply a block like 'You are trying to submit the amp version of a page. Please submit the original'.

By the way, shouldnt amp versions automatically have a 'Go to the real page' link on the top or something?

I see a totally absurd version of the page on my 30" monitor. With no obvious way to go to the normal page.

Not even the url has a clear indication where the normal version is. Guess you have to read it from the rel="canonical" link in the source code.

<comment><USER21> AMP pages load faster on suboptimal internet. I'm pretty ok with OP having used this.

<comment><USER22> From The Netherlands:

Original [1]: 585.51KB, load: 1.31s

AMP: 918.44KB, load: 1.56s

[1] [http://www.thisisinsider.com/tesla-employees-reveal-how- they...](http://www.thisisinsider.com/tesla-employees-reveal-how-they-were- fired-2018-6)

<comment><USER23> Thanks for posting that - the non-AMP original is significantly easier to read on my monitor due to its layout more suitable for larger screens.

</comment></comment></comment></comment><comment><USER24> Actual Link: [https://www.businessinsider.com.au/tesla-employees-reveal- ho...](https://www.businessinsider.com.au/tesla-employees-reveal-how-they- were-fired-2018-6)

</comment><comment><USER25> Without proxy: [http://www.thisisinsider.com/tesla-employees-reveal-how- they...](http://www.thisisinsider.com/tesla-employees-reveal-how-they-were- fired-2018-6)

<comment><USER26> Thanks!

</comment></comment><comment><USER27> "font-weight: 400;"> is proofreading not a thing anymore?

<comment><USER28> Probably an bug of the AMP auto-conversion. I bet the full version of the page displays fine.

<comment><USER29> It doesn't. This is also in the full version.</comment></comment></comment>


Something New in Garage Doors - <AUTHOR> http://www.davintosh.com/2015/01/01/something-new-in-garage-doors/

<comment><USER2> "The biggest difference between this system and a traditional garage door is that you don't have the track rails extending into the garage space, and that only half the height of the door ends up above the open doorway"

= Oops better look for another USP, because this alternative ingenious solution has been around for years:

[https://www.factoryfast.com.au/p/automatic-garage-roller- doo...](https://www.factoryfast.com.au/p/automatic-garage-roller-door-opener- motor)

<comment><USER3> Half the height of the door... that's actually kind of a lot? My garage door does have tracks into the garage, but there is only about 10 inches from top of the doorway to the ceiling.

<comment><USER4> Did you watch the video?

The comment about half the height of the door was in reference to how far the folded panels extend HORIZONTALLY into the garage. The folding process never goes above the top of the mechanism which looks to be less than 10 inches above the top of the door.

</comment></comment></comment><comment><USER5> It should open outward, not inward. Then, it takes up zero space internally, and even provides a sun-shade awning when opened.

<comment><USER6> Great idea if you live in a sunny, temperate climate.

Not so good the first time you try to open the door somewhere snowy.

<comment><USER7> Can you explain the specific problem? Would snow have to be near the top of the door in your scenario?

<comment><USER6> Sure, the motor powering the door will not be able to overcome the resistance of even a few inches of snow outside. Think of the bottom edge of the door as the tip of a lever's long side. It is the opposite of what you want when using a lever. The long side is for applying power and the short side gives you the extra torque you need.

Put more simply, the door won't be able to push snowdrifts out of the way if it has to swing outward to open. Your 4x4 with snow tires will remain stuck inside the garage, unable to exit.

EDIT - After re-reading the question I now realise the comment above was about modifying this particular design to open outward at the top, and I was (incorrectly) assuming it was about a traditional outward-opening door like you might see in southern California. Sorry for the confusion. That may still be problematic, but not for the reasons I gave here.

<comment><USER8> You still have a potential issue if you leave the door open during a heavy snowfall. Forgetting to shut the door for a few hours could cause some damage if done at the wrong time.

</comment></comment></comment></comment></comment><comment><USER9> It actually reminds me of those cable folding doors ([http://www.bifold.com/note.php](http://www.bifold.com/note.php)) which have been around for a while. They aren't usually used on garage doors though, more for airplane hangers and pole sheds.

I guess I'm not seeing the benefits for the extra complexity.

<comment><USER4> Those doors would need a ton of space between the vehicle and the door though.

<comment><USER10> They fold outwards, and would require less room anywhere inside the garage, Han the op version.

<comment><USER4> Well, the video I saw at the link provided showed the doors opening inward. If they normally open outwards then it obviously wouldn't have any additional clearance requirement on the inside of the garage.

EDIT: I stand corrected. I went back and looked at the image (not video) I saw before. It was deceiving due to the layout but it was folding to the exterior. [http://www.bifold.com/assets/slider-37.jpg](http://www.bifold.com/assets/slider-37.jpg)

</comment></comment></comment></comment><comment><USER11> There are lots of expensive, exotic garage doors. There's even a web site for garage design:

[http://www.garagejournal.com/forum/showthread.php?t=197602](http://www.garagejournal.com/forum/showthread.php?t=197602)

Vertical bifold doors are common for airplane hangars.

<comment><USER12> Neat. Seems some folks have their hangar setup as an upscale loft as well. (Apart from "ranch" homes that share a common landing strip.)

</comment></comment><comment><USER13> a little pricey! [http://www.accessgaragedoors.com/pdf/dominagaragedoors/domin...](http://www.accessgaragedoors.com/pdf/dominagaragedoors/domina- price-list-jan-2013.pdf) (in Euros)

<comment><USER14> I don't see the price!

<comment><USER15> Look at page 8 onwards.

</comment></comment></comment><comment><USER16> It looks like there would be a lot of stress holding the doors up. I can only see the arm on the side, and at that angle it looks like it would not be very strong. I wonder about the longevity. But they do look cool!

<comment><USER4> Watching the video you can clearly see the upper panel has support arms on both sides.

Also, it's basically cantilevered when retracted and should be pretty solid.

</comment></comment><comment><USER17> Doesn't work well for trucks or vans in shallow garages, where the rear of the vehicle ends up very close to the door.

<comment><USER4> From looking at the video it seems like a full-size van would only need about 18 inches of clearance between the door and the van. Maybe 24 at the outside.

</comment></comment><comment><USER18> Unrelated but just wanted to thank the article writers for including a regular link to YouTube in addition to the embed. I have flash set to not automatically run on all websites but I do have it set to work in YouTube and Vimeo (among others). A link is very nice and appreciated.

</comment><comment><USER19> That is pretty sweet. My favorite 'weird' garage door idea though is the one that goes down into the ground. Basically a vertical slab with a very long scissor drive to lift up the door. The down side being maintenance of course, need to clean out all the crap that accumulates 12' below the ground.

</comment><comment><USER20> Mechanical engineering is black magic.

<comment><USER21> For the software types here yeah, it is.

But THIS is black magic: [https://www.youtube.com/watch?v=umfvm8I9_oU](https://www.youtube.com/watch?v=umfvm8I9_oU)

<comment><USER22> Hinge on one side. Piano hinges on the parts that fold. Math to calculate the correct angles. Didn't seem like voodoo to me.

This is the one that really looks like magic. [https://www.youtube.com/watch?v=10y28PD73vk](https://www.youtube.com/watch?v=10y28PD73vk)

<comment><USER23> How the table is made. The details are beautiful. [https://www.youtube.com/watch?v=uVbo7ycpkeI](https://www.youtube.com/watch?v=uVbo7ycpkeI)</comment></comment></comment></comment>


PayPal Drops Support for Facebook's Libra Cryptocurrency Scheme - <AUTHOR> https://gizmodo.com/paypal-drops-support-for-facebooks-libra-cryptocurrency-1838793249 <comment><USER2> Extensive discussion: [https://news.ycombinator.com/item?id=21161233](https://news.ycombinator.com/item?id=21161233)</comment>


Why you can't trust those jobs figures - <AUTHOR> http://www.forbes.com/2009/08/08/jobs-unemployment-layoffs-business-washington-figures.html

<comment><USER2> It's a short but decent discussion of why unemployment figures dont reflect the real unemployment rate. It mentioned discouraged workers, who are not counted because they stopped looking. Also the underemployed are not counted. If you find 10 hours a week sweeping out a church, you are employed, even if you really are an unemployed corporate lawyer. Unemployment figures will tend to lag the recovery because formerly discouraged workers will start looking again and be counted again.

</comment><comment><USER3> It's the same as accounting. If people are allowed discretion to use their judgment to pick the most accurate reporting methods for each time and situation, or the statistics that best reflect reality, then inevitably you end up with nothing but lies. If you standardize reporting, then sometimes you end up reporting meaningless numbers, but everyone is in the same boat, and there's less long-term distortion (as long as the people who wrote the standard have an interest in accurate information.)

</comment><comment><USER4> "it's not about to rebound, as many stock investors apparently assume." WHAT? You tell me that after I bought the bridge and Ford shares?

"Williams is a bit of renegade among economists, and certainly no household name." Good for him. If everyone stayed in the herd, we wouldn't have anyone left after the stampede off the cliff.</comment>


Anyone Can Learn to Code an LSTM-RNN (Part 1: RNN) - <AUTHOR> http://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/ <comment><USER2> If you want to know more about RNNs in general, I can't recommend watching the videos/reading the notes from this course enough:

[http://cs224d.stanford.edu/syllabus.html](http://cs224d.stanford.edu/syllabus.html)

If you want something more basic to get your head around NNs, I recommend Denny Britz's "Neural Networks from Scratch":

[http://www.wildml.com/2015/09/implementing-a-neural- network-...](http://www.wildml.com/2015/09/implementing-a-neural-network-from- scratch/)

I created a gist with a heavily commented version of his code:

[https://gist.github.com/sthware/c47824c116e6a61a56d9](https://gist.github.com/sthware/c47824c116e6a61a56d9)

</comment><comment><USER3> For a more thorough intro, I can't recommend anything better than this [http://arxiv.org/abs/1506.00019](http://arxiv.org/abs/1506.00019)

</comment><comment><USER4> This is a wonderful post. For anyone who'd like to see a nice intro to decision trees insofar as how they apply to machine learning, this is a nice post as well: [http://www.r2d3.us/visual-intro-to-machine-learning- part-1/](http://www.r2d3.us/visual-intro-to-machine-learning-part-1/)

</comment><comment><USER5> Another fantastic resource, from a programmer's perspective. Very little math. [http://karpathy.github.io/neuralnets/](http://karpathy.github.io/neuralnets/)

</comment><comment><USER6> In theory yes, but these NN libraries are very difficult to set up. I remember it was a huge pain to get numpy working with lots of frustrations and learning technical things. Torch and theano are not supported on Windows at all.

I've been looking at brain simulator recently. It has it's own installer and a decent GUI: [http://www.goodai.com/#!brain- simulator/c81c](http://www.goodai.com/#!brain-simulator/c81c)

<comment><USER7> [http://deeplearning.net/software/theano/install_windows.html](http://deeplearning.net/software/theano/install_windows.html)

It seems like theano does work on Windows, but the install looks to be quite the pita.

<comment><USER8> It looks harder than it is. For me it took less than 3 minutes (I already had CUDA installed) to run the logistic regression example.

</comment></comment></comment><comment><USER9> Some more information on LSTMs [http://colah.github.io/posts/2015-08-Understanding- LSTMs/](http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

<comment><AUTHOR> excellent post

</comment></comment><comment><USER10> Terrific post! Its great to see things implemented in short, 1-file programs. Tends to demystify things a lot.

What did you use to make the diagrams + gifs?

<comment><AUTHOR> Glad you liked it! For the gifs... [http://makeagif.com/](http://makeagif.com/)

</comment></comment><comment><USER11> I can't if I can't access that link.

<comment><AUTHOR> not sure what happened...should be back up now. I'm guessing github hiccup</comment></comment>


Implementation and Optimization of a DNN for Vehicle Classification [pdf] - <AUTHOR> http://www.eurasip.org/Proceedings/Eusipco/Eusipco2016/papers/1570256408.pdf <comment><USER2> After reading the paper, I have no idea whether they mean classifying "vehicle" vs "non-vehicle", or "2013 Ford Mustang".

<comment><USER3> Based on the thesis [1] of one of the authors and the dataset [2] it links to, I believe it's {bus,truck,van,car} classification on a dataset of only vehicles.

[1]: Dataflow-Based Implementation of Deep Learning Application [https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/240...](https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/24007/Xie.pdf)

[2]: Car Type Recognition with Deep Neural Networks [https://arxiv.org/pdf/1602.07125v2.pdf](https://arxiv.org/pdf/1602.07125v2.pdf)</comment></comment>


Asking my co-workers out to lunch - <AUTHOR> https://ryannjohnson.com/writing/asking-my-co-workers-out-to-lunch/ <comment><USER2> It's quite common for developers at least to not enjoy the interactions of a one-on-one time with a non direct relation (ie. someone you don't know well/don't have much in common subjects). So while this could be a good idea sometimes, don't "force" this on people who might not decline but also might not enjoy.

<comment><USER3> As a software developer, it strikes me as odd that this is something that doesn't somehow happen naturally.

Where I work, a huge portion of employees eats out instead of bringing their own lunch, so around 12:00 we form into groups and go eat together. Due to various constraints a lot of the time these groups happen to be the size of 2.

I love it because it's an opportunity to get to know your co-workers on a more personal level.

<comment><USER4> It strikes me as odd that people like yourself don't really get developers. The only reason I'm out of the office is to shake off my tunnel vision and to try to solve one of the problems I'm working on by changing the environment. I'm out of the office for the refresher and not to blabber about your noisy children or your boring life. "Casual" lunches are super annoying and not productive. Yuck.

Thanks god with seniority comes the power to turn people like yourself down without any consequences.

<comment><USER5> I believe that going to lunch with co-workers should be an opt-in thing, on that we agree. If a company _required_ me to go to lunch with co-workers, then that is technically not a lunch break. That should be considered a "working lunch", and should count towards your hours logged for the week.

With that said, I think you are missing out on a key point here, which is that a _HUGE_ part of being an effective programmer within an organization is your ability to communicate and collaborate effectively with other people.

When you step out of your comfort zone and spend time building casual relationships with your co-workers, you will discover that your influence within the organization grows, and you will also find that people tend to be more empathetic towards you if (and when) you inevitably screw something up. If someone regards you as a "friend", they are much more likely to extend you some grace when your bugs cause them inconvenience. You will also find that they are more eager to pause what they are working on and stop and help you with things when you need it, or to answer your questions. In a situation where you _aren 't_ their friend and they _don 't_ stop and help you, you could easily be looking at days/weeks worth of delays and back and forth while they are being unhelpful.

Sure, you might be a 10x developer within your little silo, but the moment you need something outside of the silo, you will find those interpersonal relationships can often make a huge difference.

<comment><USER4> Please stop throwing around meaningless generalizations and banalities about "silos" and "comfort zones".

> Your coworkers with stop helping you because you "didn't go to lunch with > them, :sad_face:"!

haha that's so silly, so naive, so sentimental! We are not children. And your office is not a playground. We are professional adults in a professional setting.

> If someone regards you as a "friend", they are much more likely to extend > you some grace

Your co-workers are not your friends. Learn the difference, you are not Michael Scott (I hope).

<comment><USER5> I prefer to work with professionals who also happen to be my friends (or at least friendly acquaintances who know each other's names).

"Professionalism" doesn't have to be an impersonal facade that people hide behind. Work is all about meeting commitments and earning money, sure, but at the end of the day, we are all people, and people have feelings and frustrations. They have things they love and hate. They like being acknowledged and appreciated. This doesn't mean they are children and that the office is a playground free-for-all, though. It just means that your offices are going to be full of people.

People who, for better or worse, are often just trying to make ends meet, and are going through the motions at a job they barely stand.

I think you would be surprised at what a difference a little empathy, kindness, and friendliness in the workplace can do for a company's success, and also for your own career success (if you try it out).

As a side note, one of the things that really opened my eyes to a lot of this was from reading Dale Carnegie's famous book, "How to Win Friends and Influence People".

I highly recommend reading it, if you ever get the chance. I might have an extra copy that I would be willing to lend you, if you are curious?

</comment></comment></comment></comment></comment></comment><comment><USER6> I have a similar experience with sporting activities with people in the office. Every week at work we get together and play floorball ("innebandy" in Swedish). It's a mix of people from all departments, and invariably I end up talking to all of them (especially on the way back to the office). Apart from having fun playing sports, I now know various people in different departments. This is good in many ways, not least when you need something done and need to find somebody to talk to. Of course this only works with people that join the particular activity. Nevertheless, I've found this "random connections" very useful.

<comment><USER7> This could be an interesting alternative. Any ideas for a sport that anyone could enjoy easily? I wouldn't expect most people having fun with a tennis match for example.

<comment><USER8> I've known a few friends join community kickball groups in new cities they move to. The mix of people I've seen in photos and from their descriptions is definitely mostly younger ages, but spans most demographics within the younger age range.

</comment></comment></comment><comment><USER9> Must be very expensive eating out every single lunch? Or maybe you can expense it as a meeting at the author's company?

<comment><USER10> This is common in Israel where all but the largest companies (FAANG) give you lunch money instead of free food, so it's a matter of choosing between eating out or ordering in - the cost is the same.

Facebook also lets engineers (and only engineers, oddly) eat out on Wednesdays.

<comment><USER11> "Lets" ??

Since when is a company allowed to dictate where employees can eat?

<comment><USER9> Taking a wild guess here - which you could have done - they probably mean they Facebook _lets you expense it_ , rather than just _lets you do it_.

</comment></comment></comment></comment><comment><USER12> I think the idea of spending one-on-one time at random is wonderful. It helps you break unconscious patterns and get to know people you otherwise might miss out on learning more about.

</comment><comment><USER13> We developed a cross platform solution called LEAD that connects people for lunch, coffee and speed mentoring too.(not just via random matching.) LEAD just graduated from Alchemist Accelerator recently. The bot can be download from [https://slack.com/apps/ALBRU32RK- leadbot](https://slack.com/apps/ALBRU32RK-leadbot) Also, if your company doesn't use Slack, we have an email version for the matching.

</comment><comment><USER14> I did this too in the past. The insights you can get are super valuable. But don't set a specific agenda. Let it flow, with a "rough" intro of what you want to achieve from these lunches.

</comment><comment><USER15> Google has an internal tool that pairs people for lunch for the same reason. It's fun to see what makes people excited on other teams or to run problems your team is facing by them.

<comment><USER13> Many companies know it is important to build tools like that. Google has been onto those things since 2006. :)

</comment></comment><comment><USER16> I tentatively added the slack bot 'Donut' mentioned in my company because I was starting to see a divide between the two colocated offices. I was pleasantly surprised to see over 60% participation, and people personally thanked me for setting it up. Yet another reminder to me how important communication is!

</comment><comment><USER17> I cherish one on one encounters, especially with people you're accustomed with, but never really spent time getting to know.

Although my favorites are done travelling, which works with a walk long enough too. Inevitably you're breaking the silence.

</comment><comment><USER18> On a side note, the whole website looks pretty interesting to me.

</comment><comment><USER19> Don't do it one-on-one: you are exposing yourself to false harassment allegations. A single one can ruin your career.

<comment><USER10> Not really. If you're particularly panicky and feel like you won't know where to draw the line (I feel like if you're asking someone for lunch because you don't really know them, the line is really obvious), then just avoid complimenting looks or clothing and touching. Really no way to go wrong if you avoid those.

Also, if the person does not respond positively (and I don't mean they respond negatively, but if they say no for whatever reason), don't ask again. They now know you want to and will let you know when they're free, and once they do, even if you're the one whose busy, you'll know you're not bothering them.

At least in Israel, lunch is regarded as inherently acceptable in a professional setting, since it's in the middle of the workday, even if you're eating out. Generally I'll only ask people to meet on their personal time if I feel like we know each other well enough and they like me back, otherwise it's an inconvenience -- asking for somebody's personal time is a big ask. With the opposite sex, I find it's really hard for a simple invite for dinner or beer to be misconstrued as an advance. It also helps that the vast majority of female engineers I know are in a relationship, so that makes my intent blatantly obvious.

<comment><USER20> OP is talking about false allegation, you're explaining how to avoid real allegation.</comment></comment></comment>


Tech's Richest Founders [infographic] - <AUTHOR> http://www.retailmenot.com/coupons/investing#vig.networth

<comment><USER2> The infographic lost its credibility in my eyes with its Digg valuation.</comment>


BBC: London taxi hire proposals would 'be an end' to the way Uber operates - <AUTHOR> http://www.bbc.co.uk/news/uk-england-london-34394774 <comment><USER2> This story talks about London Black cabs, but the consultation is about private hire taxis. So the article is comparing disimilar things.

Uber's problems with the existing private hire regulations are the need for an agreed price before travel.

The proposed minimum wait time feels stupid. I'd be interested to see how that's justified.

The requirement for a fixed landline probably has some weak justification, but it feels like something that's rapidly approaching obsolesance.

I'm normally pretty anti-Uber, but the proposals in the article don't seem to focus on my priorities. (Which would be to stop taxi drivers from discriminating against people with disabilities).

</comment><comment><AUTHOR> The article does not consider the most onerous and backwards provision debated as a part of the consultation: a mandatory 5 minute wait period between getting a car and start of the journey, even if the car is available immediately.</comment>


Ask HN: I am looking for academic studies about computer program readability? - <AUTHOR> I wonder if there are any scientific studies that indicate whether the human brain is better suited to perceive a formula written as e.g.
 (1) "a * (b + c)", vs.
 (2) "mult(a, plus(b, c))", vs.
 (3) "(mult a (plus b c))". <comment><USER2> FORTRAN was short for FORmula TRANslator. Its design goal was programmers would write normal math statements. This was copied by many other languages. Then languages started using the math symbols for other things. C++ allows programmers to define the math symbols to other types. Java and others use '+' for string concatenate.

The problem occurs when: 1. the function has more than two arguments; 2. the function is semantically different from the meaning implicit in a math symbol.

One solution is use the same syntax for all functions. In Lisp, every thing is a list, so ( function ( parameters )). In Smalltalk, every thing is an object, so send a message to an object with parameters.

Read the Lisp manual, and the SmallTalk-80 book about the language design theory.

The big boost in program readability is following a style guide with the rules for naming, indentation, commenting, and other important features, plus automated or manual style reviews.

The Hungarian notation for variables was an attempt to document the type of a variable in a language, 'C', which had loose typing rules.

<comment><AUTHOR> > The big boost in program readability is following a style guide with the > rules for naming, indentation, commenting, and other important features, > plus automated or manual style reviews.

I completely agree. I just wondered if there has been done any research where programmers are presented with some code they've never seen before and then the time is measured until they have understood the code (e.g. can correctly answer some test questions regarding the function of the code). In such a scenario one could try to find a "best" style guide, i.e. a style guide where most programmers understand new code the quickest. Have you ever heard of such research?</comment></comment>