Books Programmers Don't Really Read (2008) - <AUTHOR> http://www.billthelizard.com/2008/12/books-programmers-dont-really-read.html <comment><USER2> I've read the books on both of those lists, among many others. Not because these are all required reading, but because I've had a long career and I've fought to continually improve my knowledge in Computer Science. It seems rather arrogant of the author to decree that one list is canon and the other list is not. Each of those books has its use. Does this mean that someone needs to read _any_ of those books to be good at software? Probably not. But, studying each of those books will improve skills in the particular domains that the books cover.

Also, why is it suddenly in vogue to bash TAOCP and CLRS? When I read these sorts of posts, I generally think that the author really means, "I didn't understand these books, so therefore, they must be crap." I started reading TAOCP very early in my career, and Knuth's low-level approach of analysis has served me quite well over the years. It's why, for instance, I don't balk when I need to optimize a computationally heavy algorithm on an 8-bit microcontroller, or when I have to hand-tune a cryptographic algorithm to avoid cache side channel attacks, I can approach the problem logically. Knuth is an excellent teacher for the right sort of student. He's not for everyone, and there's nothing wrong with that. Software ceased being a one-size-fits-all field decades ago. For that reason, among many others, decrees of what is canon or not -- such as the one made by the author of this post -- are nothing but bunk.

<comment><USER3> He praises almost all of the books on the second list, he just thinks a large percentage of the people that recommend them haven't read much of them.

He also doesn't seem to make the claim that the first list represents "canon" and that the second list represents "non-canon". The first list is a list of great books that are easily understood by most students. Many of the books on the second list are far more advanced.

I agree that some students can learn using any of these resources. However, most people would struggle with books like TAOCP.

<comment><USER2> He gives some rather backhanded praise for TAOCP, if you can consider noting that a set of books look impressive on a bookshelf as praise. For instance, "I've used my set several times when I was stuck and couldn't find help anywhere else. But TAOCP is always my reference of last resort. It's very dense and academic, and the examples are all in assembly language."

He insinuates pretty strongly that the first set of books is the canonical set with this statement: "If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list, so I won't spend time reviewing each one individually."

While not being explicit, he's being pretty implicit regarding his judgement of value for these books.

I don't necessarily agree that TAOCP is especially difficult, but I did say in my original comment above that TAOCP is not for every student. For the right student, working on the right set of problems, I would not hesitate to recommend TAOCP.

<comment><USER3> You only mentioned the parts of his statement about TAOCP that, when taken out of context, seem to prove your point.

He did note that it looks impressive on a shelf, but he also followed it up with "and it is impressive." Furthermore, he goes on to state that it is so comprehensive that if you have a computer science problem that falls in a category covered by one of the published volumes of TAOCP, and you cannot find a solution in TAOCP, that a solution likely does not exist. That's pretty high praise IMO.

>It's very dense and academic.

Is it not a dense text written in an academic style by an academic known for dense, academic writing? Its likely the greatest reference in existence, but it isn't an easy book to read at all. If it doesn't seem like a challenging read to you, then as the author already stated, you aren't one of the people that he was talking about.

>He insinuates pretty strongly that the first set of books is the canonical set with this statement: "If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list, so I won't spend time reviewing each one individually."

IMO, his statement doesn't attempt to canonize them at all. If you look at both lists, one list is obviously far more accessible to the average programmer than the other list. It doesn't make them better, just suitable for different people.

>For the right student, working on the right set of problems, I would not hesitate to recommend TAOCP.

I'm not saying that you're wrong. However, the article is about books that are often recommended to beginners. Most people will struggle if they start with TAOCP.

<comment><USER4> _Is it not a dense text written in an academic style by an academic known for dense, academic writing?_

It's not. It's much more mathematical than your typical programming book and it might not be suitable for beginners (it says so itself) but that's not because it's 'dense and academic'. It comes with exercises, historical asides, nerdy jokes and so on.

</comment></comment></comment></comment></comment><comment><USER5> Cue the circus of people who argue over the contents of this list, despite having actually used the learnings from books only in job interviews.

There are so many developers (like your peers at work) who have literally read none of these books. In a Darwinian sense, isn't that evidence that there's nothing so special about these texts for what you do?

Skip the books and just memorize what's on Interview Cake. I love that site. It so brilliantly subverts the academic pretensions of every industrial software development shop.

So many people will have memorized so precisely the solutions to programming test questions that they stop being useful. Engineering managers will be unable to come up with novel questions, because they will have no benchmarks. Then the madness will end: Computer Science will get less popular in university again, and this notion that these Gospels have All the Answers will go away.

<comment><USER6> I genuinely feel bad for people who have only used the learnings from these books in job interviews.

Either they've never had to work on a really Hard Problem, or worse they have tried to solve such a problem without the hard-won lessons present in these books.

<comment><USER5> > a really Hard Problem

I've heard senior recruiters express skepticism about candidates who say they're into "Hard Problems." Experienced engineering managers usually hear that phrase when you're looking for a lifestyle and you don't really care what the application is.

For example, "I have no qualms that your business arbitrages nonconverting clicks from bots and sketchy web traffic (i.e., 99% of the Internet) into Google AdWords revenue, using up a Google customer's ad budget until the customer has barely made a profit... You see, I'm into Hard Problems. Besides, bots don't click twice! It must be real traffic!"

It turns out that junior people on the interview team care a lot more about Hard Problems and the stories in these books than senior people do. And you'd never want your hiring pipeline run by junior people.

In my opinion, Google's focus on Hard Problems has robbed academia of all the sincere Hard Problems people. Then, they've ruined the interview process for everyone else, ironically with the book How Google Works, convincing CEOs that they should be asking about C.S. fundamentals and Hard Problems totally unrelated to their Actual Problems.

<comment><USER7> To me the funny thing is the small companies with 2-3 developers hiring like they are google with interviews over the course of weeks, with google/amazon- like gauntlets. You aren't google, you aren't paying google-level salaries, why are you pretending you are.

That said, I happen to like problems in general... not necessarily "hard" problems, but just new problems. I also like working in new domains... I mean what other industry of work allows you to work in education, aerospace, banking, security and marketing in a decade and a half.

<comment><USER8> > To me the funny thing is the small companies with 2-3 developers hiring like > they are google with interviews over the course of weeks, with > google/amazon-like gauntlets.

Hmm. Arguably small operations need to be more stringent if they are deciding who will make up the next 25%-33% of their engineering workforce. At small companies one bad hire can really poison the well.

<comment><USER7> True, but they'd probably be better with a hire/fire fast attitude than draw out the interview process... Interviews take time away from the people doing the interviews that can be spent doing other things... do you really want to allocate more than half your company for weeks vs. getting stuff done.

I mean, have a trial period of a week or three... That will tell you far more than a gauntlet interview process with a lot of false negatives.

<comment><USER9> For me, as a CEO, hire/fire fast is definitely more costly than a well- designed interview "gauntlet"

Before starting my own company I was a bar raiser at Amazon. Interviews were not supposed to last weeks (though many did and there were internal metrics aimed at driving interview to offer cycle time down).

I'd much rather spend a few hours per interviewer per candidate getting a solid candidate than hiring, onboarding, training, learning the candidate is a poor fit, and ultimately going through the not-fun-for-anyone firing process.

High turnover isn't worth the lost productivity from other employees or the hit to morale. On top of that, while learning whether or not the candidate will make it through the trial, you're burning precious cash.

Learn how to interview and teach your people how to interview. It will save you heartache and money.

<comment><USER7> But do whiteboard exercises that consist of concepts that someone is unlikely to _ever_ touch really count for the quality of code one is likely to output?

Especially when many of those concepts necessitate code that is less than discoverable, well documented and easy to follow?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> The Gang of Four patterns book is one of those books that you should probably only read when you already have decent experience writing non trivial software.

If you do so, it will formidably crystallize knowledge you've been acquiring subconsciously. You'll have probably been having gut feelings about why certain things are wrong or clunky and others are elegant, and _Design Patterns_ will give you a vocabulary to describe these things.

If you read it as a beginner, the subtleties of it all will go over your head, and you'll end up trying to cram design patterns everywhere without much sense or reason.

<comment><USER11> The problem with the design patterns books (including the GoF one) is that in the end they didn't have much influence. Think of how few of their patterns have become part of the vernacular of our field: Iterator, Singleton, Factory, Adapter, and maybe one or two more. It's not a long list. If you insist on talking in terms of design patterns, you are going to have to explain nearly all of them to your listeners. Insofar as the authors' goal was to create a shared language of patterns we could use for clearer communication of designs, they fell well short.

<comment><USER12> The GoF design patterns book has two core, very closely related, problems.

The first is that it doesn't make enough of an effort to present "design patterns" as a conceptual framework. Can you program without using design patterns? No, you cannot. You are always using design patterns whether you know it or not, you're just using ad hoc design patterns without realizing it when you don't think you're using patterns. The book's failure to elucidate commonly used ad hoc patterns as well as common anti-patterns is one of its principle shortcomings. This is something that the refactoring book did much better, by providing examples of how things can be engineered in different ways and why one way might be desirable over another (and how to transition between them). Instead the GoF book largely presents a canonical list of some design patterns, giving people the false impression that these are special and unique versus merely a sampling of ways one might do things.

Additionally, the GoF book doesn't make it clear that each design pattern exists to work around specific constraints, and thus doesn't educate the reader when and why the design pattern should be used, and when not. The GoF list of design patterns is very much tightly coupled to the peculiarities of Java at the time the book was written. Many of the design patterns aren't necessary outside of that environment. For that reason, a lot of the design patterns in the book are either obsolete or so seamlessly built in to popular languages that it's not necessary to implement them as described in the book. Many of the more advanced "behavioral" patterns from the book are essentially ways to work around the fact that Java didn't have first class function, when that changes the design patterns that you end up with become very different.

A lot of the GoF's list of design patterns just aren't that useful anymore in modern languages, even though many of them are as applicable as ever (modern languages bake iterator support into the language, for example).

Additionally, the GoF design patterns break down into two categories: everyday patterns (like iterator, factory, proxy, or adapter) and sometimes patterns (like flyweight). This means that most of the patterns shouldn't be used in every project. Because the design patterns in the original book are somewhat out of date and because there's been so much cargo culting around the GoF patterns there's grown a substantial backlash against patterns. So people tend not to describe new patterns in such a way, even though they should. The concept itself is quite sound, but it requires diligent effort to ensure you're applying it well.

<comment><USER13> _> Additionally, the GoF book doesn't make it clear that each design pattern exists to work around specific constraints, and thus doesn't educate the reader when and why the design pattern should be used, and when not._

Quite to the contrary. I don't have my copy handy and haven't cracked it open in years, but I recall clearly that they presented design patterns as reusable solutions to commonly occurring problems. And for each pattern they outlined, they explained what the problem was that it was intended to solve.

Alas, the part about patterns being solutions to _specific problems_ was lost on many developers, who shoveled in applications of patterns where their corresponding problem didn't exist. And rather than a more modular, understandable, maintainable codebase, an inscrutable mess was often the result.

<comment><USER12> I do have my copy at hand. While they do try to get across the concept that not all patterns are suitable for all cases they do a remarkably poor job of it. The "applicability" section of most described patterns is a simple bullet list of 3 or 4 very vaguely worded sentences. This is, as evidence has proven, wholly insufficient. There should have been much more effort into trying to educate readers on the applicability, and non-applicability!, of each pattern, explaining the constraints that made the pattern necessary or desirable, laying out examples of other ways to achieve the same functionality, and also explaining the costs and extra complexity of relying on a specific pattern.

<comment><USER13> YMMV, I guess. I thought they laid it out all pretty clearly.

</comment></comment></comment></comment></comment></comment><comment><USER14> I think those books have a specific time* in people's careers. My first real programming job, a couple years in i got a large project. I'd go home and flip through the design patterns book every day. Some days, rereading the introduction, some days rereading patterns. The project came out pretty well.

If i'd gotten a C++ job instead, i'd probably have torn up the C++ programming language book. My copy is fairly worn, but not like that gof book.

CLRS probably isn't as helpful as it once was, because the vast majority of time you just use an ADT from whatever library your language provides. Sure, maybe go review some subtleties from time to time, but if you're writing an algorithm for work, you probably do that all the time, CLRS isn't going to be that insightful.

The dragon book was opaque to me. Just about every thing in that book, i had to go find another discussion of. I'm just not smart enough to parse those words and math into code.

I dunno. I'm a pretty mediocre programmer. They've been helpful to me at various points in my career, but i don't think they are much help in modern programming.

* I've only been able to chew through a couple chapters of TAOCP. I think the only programmers these books help are people like Fabrice Bellard. Find someone who's worked through those books, hire them. Well, if you really need to solve problems and you're not just hooking a submit button to mysql.

<comment><USER15> > I think those books have a specific time in people's careers.

Agreed. _Code Complete_ gave me a huge boost as a liberal arts refugee in computing. Having given away my copy, I bought the second edition, thinking it would be worth a reread. Not so much. _Pragmatic Programmer_ didn't do much for me either, probably because I read it too late.

On the flip side, plodding through TAOCP just because? Better to read the relevant chapters when you've got an actual project to chew on.

<comment><USER16> Interesting. After reading Code complete (2nd) I felt that I didn't get much out of Pragmatic programming either.

One question that keeps popping into my mind is what books and in what order should one feed an inexperienced junior to turn them into a mature software engineer.

<comment><USER14> I don't think there's a curriculum you can set up. For me, the best books were books that talked about problems i was having at the time.

For example, my biggest take away from Code Complete was the stupid slow but easy to test implementation of the excel calculation engine. I was working on a print system at the time, building a stupid system and a fancy system and comparing the results gave me a lot of insight about what was wrong with the fancy system.

Me personally, i got a ton out of the lisp books PAIP, SICP, On Lisp, and even the CL spec. Thinking about something in terms of stream processing or unification from the various prolog implementations would get me started on answers to problems i was facing (they never required unification).

Just blindly handing out reading, i'd probably give people _The Phoenix Project_. Most organizations are a mess, and new programmers don't understand that. The down side is, new programmers can't do much about it. It can help explain why you do some painful stuff though, like on call or code reviews.

</comment></comment></comment></comment><comment><USER17> > I've read all of these books myself, so I have no difficulty believing that > many moderately competent programmers have read them as well. If you're > interested enough in programming that you're reading this blog, you've > probably read most, if not all of the books in this list

That is some gross arrogance on full display right there. If you're as good as me, surely you've read all these books. Any other books... flawed in ways you should be ashamed of.

<comment><USER18> Agreed. At risk of sounding like an idiot, the K&R C book and Mythical Man- Month are the only books on that list I've even _heard of_ , and I haven't read either of them.

Also, he gives "more of a language reference" as a reason for not reading Stroutstrup's C++ book. Doesn't the same apply to K&R?

<comment><USER19> K&R actually describes C. You can pick up the original K&R from way back, and it's not so different to the latest ANSI C. The differences aren't quite trivial, but they're not so big they're going to distract anybody for long.

It's probably impossible for any book to fully describe C++ because it'a a perpetually moving target on a three year update cycle.

There are always new idioms and techniques to learn, but they keep being changed/added without any obvious coherent design strategy or logical goal.

Books can barely keep up. Stroustrop's own C++ introduction is for C++11, which is already five years and nearly two releases old.

<comment><USER20> For a long time this wasn't really the case. In between C+98 and C++11, Stroustrop's book contained essentially everything you would want to know about C++, including details on how to implement the STL yourself!

The end of the book even included a grammar for C++ (with a slight comment about how the grammar wasn't exact because of C++ context sensitivity)

</comment></comment></comment></comment><comment><USER21> I'd put SICP on the better read when dead list. Fundamental Algorithms shouldn't be read anymore but at least I liked it when I read it. SICP was the text in 61A at Berkeley but there were no assigned readings from it. It was meant to be worshipped rather than read. I rather like the Dragon book but compilers have come along. The 2nd edition is an improvement.

I'd add that EE20N used a Berkeley written text, Structure and Interpretation of Systems and Signals. I was in the minority and liked that book. I still have it.

<comment><USER22> I read SICP for the first time in February this year, 15 years into my programming career and 12 years after graduating from a CS department. It's a very easy and enjoyable read, even the code blocks are readable, unlike coding examples in most (all?) modern programming books. I literally loved every page of it.

There's just something special in the way material is presented in SICP, in the order of topics, in the text's tone: it remains enthralling without being difficult, it teaches without being indulgent. It absolutely is meant to be read.

<comment><USER23> The tone of the book is that of learning programming and computer science for enjoyment, learning, and fun. That's what makes it timeless.

A "stronger" example of this tone would be The Little Schemer series.

<comment><USER24> Sadly, SICP is lacking in mathematical rigor. Often, the book rushes to give broken code snippets based on insufficiently deep analysis of the problem at hand (e.g., interval arithmetic in chapter 2), and the exercises consist in fixing the code after taking additional information into consideration. It would be preferable to first carefully write a formal specification, and then write the right program without so much trial and error.

<comment><USER23> To be fair, it was written to be a student's first introduction to computer science. I think it's fine if you don't have to prove everything.

Ironically, Chapter 1's reliance on math for examples and exercises turns people off!

<comment><USER24> This is getting it backwards. The first introduction to CS is precisely when proofs matter most.

I agree that, ultimately, not everything has to be proven correct. Often there isn't even a well defined criterion for software correctness. But proofs absolutely matter in certain domains (algorithms, databases, compilers, etc.), and there's no way you can be ready to prove things about moderately tricky programs if you don't have practice proving things about toy ones.

</comment></comment></comment></comment></comment></comment><comment><USER25> I've read CLRS page-to-page 3 times and doing pretty significant chunk of exercises. It takes on average about 4-8 months with 2 hours each day. I still think the title is accurate, i.e., its just "introduction". These days at work I frequently bump in to algorithms that would be qualified as advanced and CLRS content now looks fairly introductory to me. In fact book hasn't even scratched 10% of the stuff that we use regularly in our work. I think most people active in CS research feel the same way but if you were programmer doing regular LOB or iOS apps then OP's view may feel more closer.

<comment><USER26> I'm curious, what do you do at work and what kinds of algorithms do you bump into?

<comment><USER25> computer vision, machine learning, control software and things around that.

</comment></comment></comment><comment><USER27> The whole article just seemed like one silly anecdote. "Well these are the books I actually read so it must be the same for everyone."

I think the author's next read should be a good statistics book.

Here's my anecdotal evidence. I have read 8 out of 10 from his first list. I have read everything except for TAOCP from the second list. Some of the ones from the second list I have read multiple times and I still go back too as reference from time to time.

I have started reading TAOCP on several occasions, but I'm not going to lie; that shit is complicated and the dry academic nature makes it even worse to parse. I still plan to get through it in my lifetime, but I keep prioritizing easier reading.

<comment><USER28> > Periodically over on Stack Overflow (and in many other programming forums) > the question comes up about what books are good for programmers to read. The > question has been asked and answered several times, in several different > ways. The same group of books always seems to rise to the top...

</comment></comment><comment><USER29> > There's certainly plenty of evidence that someone has read this book, since > otherwise we wouldn't have so many C++ compilers to choose from.

I don't think that's quite true. The only C++ compilers I know of are:

1\. cfront C++ (from which many C++ compilers were derived)

2\. Digital Mars C++ (the one I wrote)

3\. g++

4\. clang++

5\. EDG C++ (from which many other C++ compilers are derived)

6\. Microsoft C++

7\. Taumetric C++

It's a pretty thin list for 30 years. (I apologize if I neglected any.) Contrast that with C - at one time in the 1980s I counted over 30 of them (I'm not sure how many were independent creations).

Edit: removed Borland C++ as that was derived from Taumetric.

<comment><USER30> Maybe Intel C++ as well? But most people who have that book didn't buy it to write a compiler. Isn't C++ ridiculously hard to write a compiler for? While I haven't written one, I think it'd be _much_ easier to write one for C — and for that I imagine it would very nearly suffice to have the K&R book.

<comment><USER29> Every C++ front end I know of has at least 10 man years in it. I'm pretty sure it's the hardest language to implement, by far. (The core language.)

Ironically, one of the hardest things about a C compiler is the preprocessor. You'd think a text macro processor would be simple, and it should be simple. There's an amazing amount of subtle complexity in just the handful of pages describing it in the Standard.

I and many others implemented a C compiler based on K+R, and I can attest that a lot of rework can be avoided if following a Standard instead (C89 did not exist at the time).

<comment><USER31>
       I'm pretty sure it's the
       hardest language to implement

Harder than languages that require JIT compilers to achieve reasonable performance?

Even scalac and ghc are pretty complex beasts in order to Scala and Haskell reasonably speedy.

<comment><USER29> I've written a Java compiler, and a friend of mine (Steve Russell) wrote the JIT for it (for Symantec). It was the first JITting Java compiler, and took only a few months to complete.

Of course, I should have said "front end". Working on the optimizer/codegen is an endless process.

<comment><USER31> Yes, C++ has a baroque syntax, and I wish lexing/parsing C++ on nobody.

</comment></comment></comment></comment></comment></comment><comment><USER32> I have a hard time believing Petzold's _Code_ is in the first list, or even the second, because its content is so very different from most of the other books. It's not particularly directed at programmers either.

As for the design patterns book, I've glanced through it and didn't find it all that useful; that being said, I was never a fan of that school of thought (OOP, UML, patterns, etc.) either.

<comment><USER33> I bought Code as a gift to my mother, who is absolutely illiterate on computer science. She was thrilled to have learned about morse and binary code. She didn't get too far on the book, though, mostly because she is not completely fluent in English (and it's definitely a difficult read for non-programmers). But yeah, I agree this book shouldn't be on either list.

</comment></comment><comment><USER34> Previous discussions: [http://news.ycombinator.com/item?id=1297536](http://news.ycombinator.com/item?id=1297536) [http://news.ycombinator.com/item?id=3754545](http://news.ycombinator.com/item?id=3754545)

<comment><USER35> Wow! did not know that this surfaces time and again. I think, we need meta- post which says Posts that HackerNews readers don't really read.

<comment><USER36> Add the article on Big O notation to that meta-post please!

Maybe it's the influx of new people to the site that upvote these articles?

</comment></comment></comment><comment><USER37> > If you're interested enough in programming that you're reading this blog, > you've probably read most, if not all of the books in this list

oh, really?

> it's intended for the multitudes who are trying to appear smarter by > pretending to have read them.

As opposed to trying to appear smarter by issuing decrees to the internet about what everyone who is "interested in programming" has read.

<comment><USER38> I think part of it was that this was written in 2008 which is forever ago in internet time. I think book learning for programmers was maybe more prevalent back then. I know I was significantly more likely to read a programming book 8 years ago when the quality of information on the internet was much lower (2008 was the year Stack Overflow was founded!)

<comment><USER39> I was thinking that too. The younger developers I know haven't read most of those books because the information is easily accessible on the web.

When I started coding professionally you had to buy books because the information wasn't anywhere else, but today even for the more difficult subjects you can find papers and blog posts and wiki articles that cover what you want to know at different depths and from different angles.

<comment><USER40> Most of the information that makes some of those books worth reading is only easily accessible on the web in the sense that it's pretty easy to find ebooks of many of those books on the web.

Many people learn a lot of their development knowledge from the web (and I certainly do as well), but the majority of the web sources for material beyond basic language reference simply extract the easiest to digest parts of the major texts. This is why so much of what many people know about patterns, algorithms, data structures, and even OOP, TDD, Agile, Scrum, etc. is fragmented or even wrong.

</comment></comment></comment></comment><comment><USER41> From the first list, I've only read (3) _The C Programming Language_ and only partially (5) _Mythical Man-Month_.

From the second: (1) _Intro to Algorithms_ , absolutely cover to cover once, and selected readings additional times; based the Kazlib "dict" module closely on the Red Black tree algorithm (with a slight improvement); (2) _Compilers: Principles, Techniques and Tools_ : Ditto, and in recent years, implemented a regex compiler based on the graph-based descriptions in that book; (3) _TAOCP_ : selected readings only, too huge; (4) _Design Patterns_ : cover to cover, when OOP was fashionable in the 90's; (5) nope, but I read the Stroustrup and Ellis _Annotated C++ Reference Manual_ cover to cover (weekend before starting first C++ gig). That counts as a 1:1 substitute, more or less.

<comment><USER40> Most of the books on the first list represent those I would only read once, and never again (or never at all, like "Head First [Anything]"). The C Programming Language and Refactoring are the exceptions. K&R was one of the textbooks in my first CS class, and the first CS book I read which was still useful to me 10 years later.

The books on the second list which I have read (at least partially) are books I have had reason to go back to at some point in my career, and any of them which I no longer have, I will likely purchase again.

<comment><USER41> About the K&R2; I have no idea where my old copy is, but I know the precedence table is on page 53, and that I found an ISO conformance bug in example code on page 117: modifying an argv[] pointer.

</comment></comment></comment><comment><USER29> > the word "Introduction" leads one to believe that the book is a good choice > for beginning programmers. It isn't. The book is as comprehensive a guide to > algorithms as you are likely to find anywhere. Please stop recommending it > to beginners.

Reminds me of the Caltech required 3rd year math course "AMa95 Introductory Methods in Applied Mathematics", that came with the dry comment that "Introductory does not mean elementary." It had a reputation as one of the toughest classes.

<comment><USER42> It sounds like they're actually conflating the two words in question. Introductory means an introduction, like the thing that helps you get into a subject. Elementary means basic or foundational. Logic and set theory are elementary to the rest of mathematics. They're not introductory to the rest of mathematics.

<comment><USER29> They meant do not infer it to be an easy class.

</comment></comment></comment><comment><USER43> >On the positive side, if you're looking for the solution to >a problem in TAOCP (and the appropriate volume has been >published) and you can't find it, the solution probably >doesn't exist. It's extremely comprehensive over the topic >areas that it covers.

That's almost certainly wrong. TAOCP is very outdated in many ways and doesn't really cover modern algorithms. It's great for classic CS upto 90ies(?) or so, but there has been a lot of progress since then.

<comment><USER44> What do you feel it is missing? Better, where has it really been left behind?

<comment><USER43> \- probabilistic algorithms (like all the modern bloom filter variants or skip lists or treaps) \- parallel algorithms \- cache oblivious (or just aware) algorithms. This made a lot of difference in designing trees or graphs. \- modern hashing (like cuckoo or robin hood hashing), or min hashing \- data mining algorithms ...

<comment><USER44> Are you sure those are not covered? I know he covers Bloom's filter. And half his treatment on trees is how frequency of access matters on tree creation. (He specifically does not advise just balanced trees.)

For hashing, he does cover things at arms length.

<comment><USER43> All these things only came out after 2000. Basic bloom filter is earlier, but modern bloom filters (and varieties like cuckoo filter) have improved quite a bit. The standard paper on modern bloom filters came out in 2006.

It's also true for other areas. Let's take sorting. The best general purpose comparing algorithm is timsort. timsort came out in 2002.

Keep in mind TAOCP was originally published in the early 70ies (first book came out in 68) and even though there were some new editions (upto late 90ies) they didn't really change all that much.

You can just scan over TAOCP's bibliography and see the average year of the cites. It is usually 60ies.

Claiming that CS has not improved since the 60ies is fairly absurd.

<comment><USER44> I won't claim it hasn't improved. I will claim there are a lot of rediscoveries.

Still, your point is fair. The section on secondary key retrieval is very high level. Bloom filters get just two paragraphs.

I think the biggest change in cs is the view towards memory. In much of TAOCP, care is given to the memory footprint. Much of day to day programming is completely ignorant of memory. Scarily so.

</comment></comment></comment></comment></comment></comment><comment><USER45> I do like the C++ programming language book. It has a really nice introduction in the first quarter of the content. It has good no nonsense examples.

</comment><comment><USER46> Let's see.

Never come across Code, Head first Design Patterns - WHY? GoF book is much better, and well written and explained. Read all the rest, though K&R 1st edition. Bought 2nd when someone 'borrowed' original from my desk and never returned.

Of the rest:

Never heard of the first one, but I'm British.

My green dragon book was read cover to cover a couple of times, and I tried to build a compiler off the back of it. I used another compiler book in equal amount, I forget the book though.

I've three volumes of Knuth. I should have bought one at a time - I got about 1/2 way through the first volume.

Design patterns was extremely well used.

C++ was mainly reference, unlike K&R it wasn't a good read to learn from. Pretty heavy going if I remember. The Design and Evolution of C++ was much more interestng. Then the 2 Scott Meyers books (Effective C++ 1&2). Thinking in C++ was the book recommended to learn from at the time, though I've not read this.

</comment><comment><USER47> What does it say about me if I haven't read any of those books?

<comment><USER48> It says that you have not exhausted the wonders of this world, and that good times are ahead of you.

</comment></comment><comment><USER49> Who claims to have read a book they didn't? "Yea I read that." (No I didn't). That's straight lying.

I think what's more likely is, someone will say, "YOU should read this book. It's awesome." The implication being, the suggestion comes from first-hand experience.

</comment><comment><USER20> When I started programming, I first read "Beginning Programming For Dummies" (QBasic), "C++ for dummies" (before STL, so implementing your own linked lists was fun), and... The C++ Programming Language

I spent maybe 3 years as a kid flipping through the C++ Programming Language book, trying to figure out how to do stuff with that + the Allegro tutorial. Totally a programming language reference.

It's one of those weird books that you could spend years just looking at on a desert island and find things to do with it. But you basically need to flip through all of it to get what is happening most of the time (at least I needed to when I was a kid).

Really wish I knew about Python back then....

</comment><comment><USER50> Wanted to second the ambivalence around the CLRS Intro to Algorithms book - having learned a few algorithms by poring through its chapters, I can definitely say it's a long, out-of-the-way route to take for a practicing programmer. I may not have enough hindsight (bought it a year ago) to truly say whether the dense mathematical approach was valuable to me long-term, but for now I'd say a wikipedia article or a less formal, more to-the-point book like Jon Bentley's Programming Pearls is time much more well spent, unless you are actually aiming to work in academia for a computer science department.

</comment><comment><USER51> TAOCP is so much superior to CLRS it is not even close. At the end of each section of CLRS they ususally mention Knuth anyways.

Knuth's writing is clear and amazing. It really makes the history of computer interesting.

Pretty typical of the author of the post who did not complete TAOCP to say it is somehow flawed for being too cryptic.

Why is the author concerned about what others have read or not anyways? It seems he more concerned about proving he has read more than others.

</comment><comment> drew-y Is there a good alternative to "Compilers: Principles, Techniques, and Tools"?

I've been programming for a few years now and I'm looking to more formally educate myself in general computer science. I've been told having a good grasp on compilers and interpreters can be useful for a wide variety of problems.

So far "Language Implementation Patterns" looks like it might be a promising alternative.

<comment><USER52> I highly recommend Modern Compiler Implenentation in ML by Andrew Appel (he is also an inventor of a number of important modern compilation techniques).

I also rather enjoyed Crafting a Compiler. I found the explanations and excercises to be much more practical and enjoyable than the dragon book, but the code authors present is mostly garbage and full of global variables, state mutations and design pattern heavy. Ignore the code and do the excercises yourself.

I always found the Dragon book to be too parsing-heavy which gets boring quickly. The books I listed spend far less time on parsing and much more on code generation and optimization which I find more enjoyable. YMMV.

<comment><USER53> Another book that's really good it Types and Programming Languages. It goes over how to define the operational semantics of a programming language, and then gives examples of how to implement them.

It pretty much just glosses over parsing etc., and focuses on the semantics of a language, which IMHO is much more interesting.

Sure, if you're building a real language implementation, you will need a parser, but in a lot of ways it's the least interesting part.

</comment></comment></comment><comment><USER54> I read the Dragon book, actually studied it for a CS course. I read C for the same reason and because it was the time when either you read books or you didn't know stuff. Most of the other books are more recent and the web was already there and good enough, especially for references. Those get old fast on paper.

<comment><USER55> CLRS and TAOCP don't really get old that fast.

<comment><USER54> CLRS is from 1990, too late to my party: I was through most of my CS courses by then and who could have known about it on my side of the Pond and in a different language? Some of my teachers probably, but maybe nobody as soon as I graduated and got a job.

Instead I knew about TAOCP, also because of TeX. Not a required read in my CS course. We had a smaller book, Wirth's Algorithms + Data = Programs. I skimmed through the TAOCP volumes available online but it takes really a lot of dedication to read substantial part of those books and I think that the impact on my work would be minimal nowadays.

But yes, by the look of them both those books will be relevant for a while.

</comment></comment></comment><comment><USER56> Reading these books leads to the opportunity to take on jobs related to these books. So people saying, "oh, I use this in my job all the time" without reading the books _after_ they took the job, ultimately have less to say on the matter.

</comment><comment><USER57> Is Code Complete still worth reading for a working developer?

<comment><USER39> I didn't think it was ever worth reading. Steve Maguire's "Writing Solid Code" was much better, though TBH it's been so long I have no idea how it holds up.

<comment><USER58> I've read both, and while Code Complete covers a LOT of ground, I like Maguire's style and his practical information. I wouldn't want to be without Code Complete, but Writing Solid Code (and his followup, Debugging the Development Process) has plenty of decent info. And some dated.

Much of Maquire's coverage is VERY C++ centered, so people using anything else are going to skip a bunch. It's a short book, 250 or so pages, and an easy read.

</comment></comment></comment><comment><USER59> all 5 of the books mentioned that programmers dont read were required reading for my CS degree. Did I read them cover to cover? no but i did read enough to say which are useful to read and which are not. I would guess the majority of programmers who have completed a CS degree have only read those books because they were required reading, does that make the books less important or useful?

</comment><comment><USER60> Wow I've read many more of the books in the second list.

The second list should also include Structure and Interpretation of Computer Programs.

</comment><comment><USER61> I missed the part where the author provides a reference/source to claim that developers don't really read some books.

</comment><comment><USER62> I've read all of 3/10 books on the first list "everyone reads", and 3/5 on the "no one reads" list.

Most of the books on the first list were published after veterans already learned the relevant materials -- the author must be under 30 (so under 25 at the time).

Certainly a weird sample among popular books, the author thinks everyone reads the same arbitrary subset of books he had.

</comment><comment><USER63> >programmers tend to read programming books instead of computer science books

Wow, amazing insight!

</comment><comment><USER64> How about Clean Code?

<comment><USER38> It was only published a couple months before this blog post was written.

</comment></comment><comment><USER65> Ah, another entry for the "I didn't read the books people say I should have--- here's my nationalisation" genre.

<comment><USER65> Sigh. *rationalisation. Doesn't really help your snark when you emit a silly typo.

</comment></comment><comment><USER66> Interesting. I've read almost none of the books on the first list, and everything but TAOCP on the second.</comment>


Submarine Cable Map - T-zex http://www.submarinecablemap.com/ <comment><AUTHOR> Here's a 1901 version of the map:

[http://upload.wikimedia.org/wikipedia/commons/a/a5/1901_East...](http://upload.wikimedia.org/wikipedia/commons/a/a5/1901_Eastern_Telegraph_cables.png)

And somewhat related, a wonderful book called The Victorian Internet:

<http://www.amazon.com/dp/0802716040/>

If you ever wondered whether the Internet really is a "series of tubes", here are the tubes:

[http://www.popsci.com/files/imagecache/article_image_large/f...](http://www.popsci.com/files/imagecache/article_image_large/files/articles/tubes.jpg)

That photo is from an interesting article (by my namesake James Geary) about undersea cables:

[http://www.popsci.com/scitech/article/2009-03/who- protects-i...](http://www.popsci.com/scitech/article/2009-03/who-protects- intrnet)

Enjoy! :-)

<comment><USER2> Thanks for posting the 1901 map. I'm amazed at the extent of the network back then.

Of course, in 1901, each of those lines was measured in (low double-digit) words per minute. Now the metric is more like feature films per second. And the word "cable" once again means a communication line, not a message transferred over one.

<comment><USER3> I do find it impressive that Australia was more or less connected to the rest of the world by telecommunications in 1872 once the overland telegraph line was completed. The US was only connected reliably connected to Europe about six years earlier in 1866. So not a bad effort given the vaster geographic distances to span between Europe and Australia.

</comment></comment></comment><comment><USER4> For anyone curious as to how they're actually laid, here's a simple diagram of a typical cable layer ship (CS):

[http://www.murmanchanin.ru/shipnoise/polar_king/polar_king.j...](http://www.murmanchanin.ru/shipnoise/polar_king/polar_king.jpg)

And a simplified diagram of how it operates:

<http://www.fiberinc.net/images/sea.jpg>

<comment><USER5> What's amazing to me is that these cables were laid without a lot of fanfare. Seems to me if I were Level1 or whoever else and had just completed a 10,000 km cable across an ocean, I'd make sure the press release saw some circulation.

The same thing with satellite launches. I feel like these are fairly major feats of engineering that go basically unheard of unless you're in certain small circles.

<comment><USER6> People laid undersea cables for telegraphs and back then it was a big deal. However, it's been 154 years and people stopped being impressed a while ago. <http://en.wikipedia.org/wiki/Transatlantic_telegraph_cable>

<comment><USER7> Modern telecoms cable is some amazing stuff. These days there's no metal in the entire cable. Instead, it's all lasers through glass fiber, and when the signal attenuates, it gets boosted by passing through sections of doped fiber that lase _using power from another beam_ , adding power to the signal. And we can do this just as easily as the people back then dropped telegraph cable. For me, at least, there's always something to be impressed by.

<comment><USER8> That's not strictly true.

First, most EDFA (Erbium Doped Fiber Amplifiers) need power to operate since the lasers that perform the pumping action are local to the doped sections of fiber.

Second, most submarine cables make extensive use of Raman amplification which leverages the transmission fiber as a gain medium via forward or backward pumping of lasers with frequencies chosen to produce Raman gain.

In both cases, you need an amplifier every 70-100km (150km in some cases) in order to have a usable signal on a long span.

<comment><USER7> Huh, didn't know that. I stand corrected. That Raman amplification is nifty. :D

<comment><USER8> Raman amps are pretty cool but tricky. For one thing, the power required is pretty high. +1W dBm isn't uncommon for certain Raman amps. At those power levels, you need to be careful you dont cause burns to personel when they are working on the equipment.

The power to run the lasers is usually carried on conductors that are part of the cable itself. The voltages are somewhere in the several kilovolt range so laying submarine cable is also kinda like laying a high-volage transmission line across the ocean.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> It's getting kind of dated now, but Neal Stephenson's "Mother Earth Mother Board" is great reading if you're interested in both the history and the process of laying submarine cable: <http://www.wired.com/wired/archive/4.12/ffglass.html>

<comment><USER10> Hacker tourism, in 1996! That's something which I think would be popular now, "Lonely Planet's Hacker Guide to World Travel"

detailing hackerspaces, interesting infrastructure tours, 1 or 2 day workshops/courses, low-cost travel and couchsurfing, etc...

<comment><USER11> It's not exactly what you outline, but The Geek Atlas by John Graham-Cumming lists many places that would fit the description "hacker tourism." It's a travel guide... but it's published by O'Reilly!

<http://shop.oreilly.com/product/9780596523213.do>

<comment><USER10> A good start, thanks for the link!

</comment></comment></comment></comment><comment><USER12> If you find this interesting, I can highly recommend Porthcurno Telegraph museum in Cornwall (UK). <http://www.porthcurno.org.uk/>

Its where many of the first underseas telegraph cables came ashore, and was a hub for the British Empire's telegraph network.

It was later dug deep into the rock to protect it during WW2.

A great day out- highly recommended.

</comment><comment><USER11> Wow, there are two cables running from northern Norway to Longyearbyen, on the island of Svalbard! According to Wikipedia, "Longyearbyen has approximately 2,060 inhabitants (at the end of 2007..." The total population of Svalbard is not much more.

Edit/Add: The cable length is 2,714 km.

<comment><USER13> The reason for that is there's a an important satellite ground station on Svalbard - it's in an ideal place to communicate with polar-orbiting satellites:

<http://www.ksat.no/node/77>

<http://en.wikipedia.org/wiki/Svalbard_Undersea_Cable_System>

<comment><USER14> Photographer Christian Hougue produced a really beautiful series on this ground stations called Arctic Technology. He mentioned that the air is some of cleanest in the world, which is a real boon to the equipment they're running.

[http://www.soulfood.no/arctic_technology.html#img/arctic_tec...](http://www.soulfood.no/arctic_technology.html#img/arctic_technology/01.jpg)

<comment><USER15> Certainly great pics!, There is only missing some AT-ATs and storm troopers in some of them...

</comment></comment></comment></comment><comment><USER16> While reading a bit about these cables I found this unusual fact on Wikipedia:

> Because the [TAT-8] cable was the first fiber optic cable and not coaxial > cable, the electrical interference shielding for the high voltage supply > lines was removed. This removal did not affect the fiber, but it did cause > feeding frenzies in sharks that swam nearby. The sharks would then attack > the cable until the voltage lines killed them. This caused numerous, > prolonged outages. Eventually, a shark shielding was developed for the > cable.

<http://en.wikipedia.org/wiki/TAT-8>

<comment><USER17> Interesting factoid, Sharks have a fairly unique sense that most animals don't, they can sense fairly faint electrical fields that living creatures produce (electroreception) that they use for "targeting" their amazing jaws, finding prey hidden in seafloor sand, and possibly even navigating in Earth's magnetic field.

This is especially important when they are about to attack some prey. Due to the structure of their jaws that actually unhinge and push forward during an attack, they lose sight of their prey and use this sense to hone in their bite.

I remember watching video from an experiment where Sharks were fed live fish and raw meat, and the sharks kept missing the meat but almost never missed a live fish.

Here's a video of one confused by an artificial electrical field. <http://www.youtube.com/watch?v=4aYPHeK1Tyo>

</comment></comment><comment><USER18> I cannot help but salivate at the dense links connecting US/Europe and US/Asia.

Here in Kenya we only have 3 cables. Since last week the internet has been very slow after the main cable was severed by a ship anchor. The second cable seemed to have problems upstream so all the traffic has been routed to the third cable.

[http://www.guardian.co.uk/world/2012/feb/28/east-africa- inte...](http://www.guardian.co.uk/world/2012/feb/28/east-africa-internet- access-anchor)

<comment><USER19> fellow Kenyan here! (in the US though)

</comment></comment><comment><USER20> I found it absolutely fascinating how some continents use underwater cables to connect different locations within a continent (Africa, notably, seems virtually surrounded), while others seem to only have significant outbound connections (North America, Australia).

I can only guess it has more to do with whether you cross national boundaries (since even the US has underwater cables bridging the mainland to Alaska) than land features.

<comment><USER21> I noticed quite a cluster on the South American coastline - Brazil-Argentina coastline looks like it's got 4 or 5 that go nowhere but that coastline. You'd think Brazil was stable and prosperous enough that they'd go with landlines.

<comment><USER22> The population is strongly clustered on some big cities in the coast, the roads aren't super safe, and the terrain around the coastline is not flat, so it's probably just cheaper to lay them out in the ocean.

</comment></comment></comment><comment><USER23> Here's what an endpoint looks like.. one of "America's Best Kept Secrets" in this Wired Photo gallery:

[http://www.wired.com/culture/art/multimedia/2008/01/gallery_...](http://www.wired.com/culture/art/multimedia/2008/01/gallery_simon?slide=10)

</comment><comment><USER24> Another map that is quite complete (more older cables) too: <http://www.cablemap.info/>

<comment><USER25> Is there anything like this for landlines?

</comment></comment><comment><USER26> I see no cables actually get routed through the Suez canal, even though many cables come up the Red Sea. The same is true for the Panama canal. Is it because they are too shallow? Maybe too concentrated?

<comment><USER27> I think it's due to accessibility and the way the canals work. The Panama canal itself is actually a series of waterways connected via gates. Allowing ships to be raised and lowered as they need to change elevation. I doubt that'd be very suitable conditions for laying cable. Far easier to make connections to land based routes on either side of the isthmus.

</comment></comment><comment><USER28> I've always wondered where they are. Can you imagine just how long it took to wrap a wire around the whole world a few times over?

The thing that shocks me is how recently these were added. I was checking out the cables in Australia, expecting them to have been added in the 60's or something....however most are around the year 2000-2010.

<comment><USER29> Yeah, I was thinking the same thing, almost all the transatlantic cables seemed to have been laid in the 2000s as well. I ran across this: [http://en.wikipedia.org/wiki/Transatlantic_telecommunication...](http://en.wikipedia.org/wiki/Transatlantic_telecommunications_cable)

Seems like each cable generally only has a life of 10-20 years.

<comment><USER30> Hmm, then what happens to outdated cables? Do we pull them up, or do we just turn off a switch at the shore and leave the rest in the ocean? Do the cables contain any substance that might pollute the seabed as the casing degrades away?

<comment><USER31> Given the high price of copper I would guess that they pull the copper cables out after service. I am not so sure about fiber cables.

<comment><USER32> Given the cost of such an operation, I don't think you can get some profit even if they were made of gold.

As time passes, most of the cable is buried deeper and deeper under debris that falls on the ocean floor. This means that you cannot just pull it up, you would have to dig to get it out.

<comment><USER33> Most cables don't run on the seabed.

<comment><USER30> Umm, then where do they run? They can't float in the middle of the water.

<comment><USER33> Uh, yeah they do. Often they hang from a buoy, floating in the middle of the water.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> I want to know what optics they are using. On segments that are 7,000 miles long - are there active optic splice boxes along the length of the cable? Or are they using lasers that actually push 7K miles?

<comment><USER35> Submarine cable systems often employ repeaters (hardened EDFAs). I remember one vendor bragging that not one of their units had EVER failed in service.

If you want to see what they look like: [http://www.nec.com/en/global/prod/nw/submarine/product/ns- se...](http://www.nec.com/en/global/prod/nw/submarine/product/ns-series.html)

<comment><USER35> Actually, there are much better photos in this PDF: [http://www.nec.com/en/global/prod/nw/submarine/pdf/submarine...](http://www.nec.com/en/global/prod/nw/submarine/pdf/submarine- brochure.pdf)

Look at the last page for a photo of one of the amps with people in the frame for scale.

<comment><USER34> That PDF is great, thanks. Jesus - they are huge. Earlier in the PDF, they appear small.

Is that a single strand they are amplifying with these? I'd like to find cost figures for how much it is to run a single fiber trans-oceanically (if thats a word).

</comment></comment></comment></comment><comment><USER36> Check the landing visually <http://cryptome.org/eyeball/cable/cable- eyeball.htm>

</comment><comment><USER37> this network is probably the 8th man-made wonder of the world. it makes the Great Wall of China seem benign by comparison.

<comment><USER30> > seem benign by comparison.

So, this network is _malicious_ by comparison?

<comment><USER38> <http://www.merriam-webster.com/dictionary/benign> , definition 3b: "having no significant effect : harmless"

The least common usage of the term, true, but perfectly valid. (Probably going to be "archaic" in another 50 or 100 years.)

</comment></comment></comment><comment><USER39> For anyone interested, here is an excellent quora post on how undersea cables are laid out on the ocean:

[http://www.quora.com/How-are-major-undersea-cables-laid- in-t...](http://www.quora.com/How-are-major-undersea-cables-laid-in-the- ocean/answer/Faisal-Khan-1)

</comment><comment><USER40> Two random thoughts:

1\. I'm always amazed that anchors can seemingly hit a cable at the bottom of the ocean floor. Given how hard it usually is for us to find anything on the ocean floor with any precision, we seem to be able to drop anchors and cut cables with surprising accuracy.

2\. Do the cables have slack in them to account for continental drift? I don't know how much we drift, but I'd imagine over time the cables would need some slack in them to make up for it.

<comment><USER41> 1\. The beach, where my 5-year old paddles in the water, is also the ocean floor. Can get fairly shallow.

</comment></comment><comment><USER42> Anyone know how to get the gray/white land/ocean view in google maps. I want to use it for another project.

<comment><AUTHOR> Use the Styled Maps options in the Maps API:

[http://code.google.com/apis/maps/documentation/javascript/st...](http://code.google.com/apis/maps/documentation/javascript/styling.html)

See the mapStyles object in the submarine map source code for the settings they are using.

You can use this interactive page to experiment with map styles:

[http://gmaps- samples-v3.googlecode.com/svn/trunk/styledmaps/...](http://gmaps- samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/index.html)

</comment></comment><comment><USER43> Why are there so many cables to Alaska?

<comment><USER25> Probably something to do with the HAARP research: [http://en.wikipedia.org/wiki/High_Frequency_Active_Auroral_R...](http://en.wikipedia.org/wiki/High_Frequency_Active_Auroral_Research_Program)

</comment></comment><comment><USER44> It's unfortunate that TeleGeography, while on the one hand demonstrating beautifully how closely connected many of us have become, seems at the same time to collaborate with BlueCoat, a company that helps censor the content coming down these tubes on a national scale.

This mash-up paid for by... ?

[http://www.telegeography.com/products/commsupdate/articles/2...](http://www.telegeography.com/products/commsupdate/articles/2011/10/11/blue- coat-systems-sponsors-the-state-of-the-global-internet-webinar/)

</comment><comment><USER45> I remember working on the application that was used for administering the SAT-3/WASC cable. At the time I was excited because I knew it meant South Africa would be getting faster internet pretty soon after that. 5 years later I was still stuck on a 56k modem. ADSL launched about two years before that, but it was just way too expensive. At the moment I'm paying about $185p/m for a shaped (20kbps between 7am and 7pm during the week) uncapped 8mbps ADSL line.

</comment><comment><USER46> Am I the only reader who was disappointed that there is no thick line of undersea fiber leading to the island of Kinakuta in the Sulu Sea?

</comment><comment><USER47> Last night I was curious about physical wire connections across oceans for communications. So I started researching and learned about the first ocean line implemented in 1858 for telegraph communication. Seeing this link on the top of HN today was pretty much exactly what I was trying to conclude my research with last night. What a strange coincidence.

</comment><comment><USER48> Mombasa Submarine Cable disrupted by anchor. (sort of unrelated but related).

[http://www.globalpost.com/dispatches/globalpost- blogs/weird-...](http://www.globalpost.com/dispatches/globalpost-blogs/weird- wide-web/internet-connection-disrupted-east-africa)

</comment><comment><USER49> I'm surprised at how well connected Australia is. Why is their internet still so expensive?

<comment><USER50> There's only 2 connections to the USA at the moment, and SCC charges monopoly prices. There is another AU<>NZ<>USA connection being built in 2014 and another AU<>NZ connection built in 2013 (the 2 grey lines). Southern Cross already dropped their prices 44% in response.

</comment></comment><comment><USER51> Would not many of these be military targets in case of a war?

What failover capability does the USA have?

<comment><USER52> Before a shooting war, like during te USA USSR cold war, militaries and intelligence agencies put a lot of effort into tapping one another's undersea cables. The trick is doing it without being detected, especially on a fiber cable. Operation Ivy Bells was one of the most documented.

</comment></comment><comment><USER53> That's so awesome, I remember seeing a special on the Discovery Channel years ago (10+) on how they laid cable for the phone lines I would love to see how it's done now and how it's connected to backbones etc..

</comment><comment><USER54> As a Canadian, this map worries me from a sovereignty perspective.

<comment><USER55> Pay for your own cables, then.

<comment><USER54> Oh, absolutely. They wouldn't be very sovereign if we built some and didn't pay for them.

</comment></comment></comment><comment><USER56> Think about how many of these cables are tapped by governments, and the technology + skill needed to implement that tapping.

</comment><comment><USER57> Interesting how you don't see cables going through Cuba or North Korea...

<comment><USER57> Except Guantanamo of course...

<comment><USER58> Siboney appears to be a good distance from Guantanamo Bay.

</comment></comment></comment><comment><USER59> wow...Mercator Projection!

<comment><AUTHOR> Well, strictly speaking, it's not the usual Mercator projection, but the "Google Mercator" or "Spherical Mercator" projection, EPSG 3857 or EPSG 900913.

This is a Mercator-like projection that assumes the Earth is a sphere instead of an ellipsoid. Many online mapping systems use this projection because it is a much simpler calculation than than a more correct Mercator projection would require.

<http://en.wikipedia.org/wiki/Mercator_projection>

<http://docs.openlayers.org/library/spherical_mercator.html>

</comment></comment><comment><USER60> I know this is incredibly childish and probably impossible given the elasticity of the cables laid out BUT I would really like to tug on a submarine cable or even just a thread that goes from Euroland over to the USA and have it move and wiggle over there. And then next up: a submarine miniature tunnel/hose/pipe to send a small little vehicle across. I can't help it.

<comment><USER2> You might enjoy reading about Operation Ivy Bells: <http://en.wikipedia.org/wiki/Operation_Ivy_Bells>

<comment><USER60> Thank you for the link, that was interesting - though until the very end I was hoping some tugging on the cable gave it away... :)</comment></comment></comment>


Explaining the enduring popularity of midcentury modern design - <AUTHOR> https://www.fastcodesign.com/3064284/mid-century-modern-is-the-pumpkin-spice-latte-of-interior-design <comment><USER2> I am not sure if the article says anything substantial about midcentury modern design.

The canonical International and Bauhaus movements---represented by iconic designers/architects like Gropius, Le Corbusier, and Eames---were (in some sense) a response to the ornamental style of the previous century. These privileged clean lines over ornament, modern materials over patina, and function over decoration. These principles produced beautiful objects that are modular, uncluttered, and easy to move and maintain. They endure because they still reflect the values of our time.

I say this owning nothing in that style, except perhaps a Vitsoe standing desk. Most of my interiors are industrial / rustic, which clashes with midcentury.

<comment><USER3> Agree the article lacks content.

Just to raise a point on your comment - though 'midcentury modern' is a slippery term i dont think your references quite capture it. When i see the term it is generally less canonical modernism (architecture-focussed, pre- wwii, Corbusier/bauhaus, france/germany-led) and more something different (furniture focussed, post wwii, influenced by modernism but also arts and craft/frank lloyd wright/etc., scandinavian led with notable american examples).

I think theres a reason it has appeared as a term - because many things described by this term are quite definitely _not_ 'moderism'

</comment></comment><comment><USER4> Article seems to be mostly an ad for interior design company/service Modsy.

Am I missing something? I didn't really find any real explanation as-to why "midcentury modern design" is so popular...

<comment><USER5> Nope, that's what happened. Literally no substance, just an ad for a service to render and sell you a new living room.

<comment><USER6> ...a new living room that looks like it is straight from [http://fuckyournoguchicoffeetable.tumblr.com/](http://fuckyournoguchicoffeetable.tumblr.com/)

</comment></comment></comment><comment><USER7> I've been seeing a lot of grumpy articles [1][2] by interior designers lamenting midcentury modern, recently.

[1] [http://www.nytimes.com/2016/10/06/style/why-wont- midcentury-...](http://www.nytimes.com/2016/10/06/style/why-wont-midcentury- modern-design-die.html) [2] [http://fuckyournoguchicoffeetable.tumblr.com](http://fuckyournoguchicoffeetable.tumblr.com)

</comment><comment><USER8> There was just an article about why everything is beige.

I was unaware that "midcentury modern" was a relatively new term. My neighborhood was built up between around 1955 - 1963, and there are a lot of "modern" houses, including a couple attributed to Frank Lloyd Wright.

My family's house is a plain rectangular box with practically no decorations. Of course we bought it because of location, condition, price, etc. Inside, it's mostly "Scandinavian." The walls are white.

One thing I like about this style is that it works in a relatively small house. Things are actually smaller.

The alternative when this house was built, was orange plush carpet, grotesque wallpaper, and huge stuffed sofas.

<comment><USER9> > The alternative when this house was built, was orange plush carpet, > grotesque wallpaper, and huge stuffed sofas.

Hear hear. I also grew up in (mostly) "midcentury modern" interior design (thanks, Mom and Dad!) and I find that it... just looks nice.

I was trying to explain to someone why I wanted white gadgets (iPad, Kindle, etc.) and wound up realizing that they are closer to the Braun aesthetic than the black ones, which I associate with the black-on-black-with-black-and-did- we-mention-black design of the Panisonics, Technics, etc. stereo equipment of the 70's.

<comment><USER10> Good point on white and black gadgets. I think you're right.

</comment></comment></comment><comment><USER11> As the article suggests near the end, I think you could delete "midcentury modern" and still convey the same point. When form follows function, similar forms will emerge and endure for similar functions.

</comment><comment><USER12> A lot of mid century modern stuff was extremely functional. From Mies van der Rohe's skyscrapers to Herman Miller's office chairs.</comment>


Scale by the Bay 2018: Martin Odersky: New Functional Constructs in Scala 3 - <AUTHOR> https://www.youtube.com/watch?v=6P06YHc8faw&feature=youtu.be <comment><AUTHOR> [https://www.reddit.com/r/scala/comments/a5lki3/scale_by_the_...](https://www.reddit.com/r/scala/comments/a5lki3/scale_by_the_bay_2018_martin_odersky_opening/)</comment>


Show HN: Lechat – team chat for developers - <AUTHOR> http://lechat.im

<comment><USER2> btw, I recommend you change the code font-face order of

        Monaco,Menlo,Consolas,"Courier New",monospace;

to

        Menlo,Consolas,Monaco,"Courier New",monospace;

this way the nicer system-specific fonts will actually work, right now everything gets rendered in Monaco since it's universally available, and the nicer fonts are never used.

Also, maybe pick a more contrasting scheme for the syntax highlighting in code, right now it's very nearly indistinguishable from plaintext...

</comment><comment><USER3> We're a team of five (two work remotely) at Citybot -- Lechat works very well for us. History is always there, no ridiculous kissing smiley faces (hello Skype), no ridiculous out of sync notifications that are months old (hello Skype). We've been beta testing it for about a month and it's been making our lives easier and communication clearer. The support is right on. The speed with which the Lechat team adds useful features is phenomenal. Never at expense of quality. Would love to see the native clients, and they say they're coming soon. I absolutely totally recommend it. Try it out!

</comment><comment><USER4> Still no features that I don't have in IRC+emacs. Except for the code highlighter/formatting which is ok, but not enough.

<comment><USER2> Fair point, but you try and get a whole company to use IRC+emacs ;) Not gonna happen.

<comment><USER5> The first company I worked for did everything on IRC. They were also by far the most successful company I've worked for. Coincidence?

<comment><USER2> Sure, and I still use IRC every day. But IRC+emacs is going to be a tiny fraction of the world, saying "this product is useless because there is an advanced alternative" is like saying "Oh, why would anyone ever want to fly commercial, it's so much easier and more fun to build and fly your own airplane".

</comment></comment></comment></comment><comment><USER6> Does this work with XMPP? Also, any chance of Pivotal Tracker integration? I've tried HipChat, Jaconda, Hall, Skype, etc... still trying to find something that works well for our team at Getaround.

<comment><USER7> Does not work with XMPP. We're opting for high-quality native clients for everything (coming soon).

<comment><USER6> But you're chat for developers! You're never going to be able to offer the level of customization people get out of Adium/Messages/their chat client of choice.

Facebook took this approach with Facebook Chat but eventually offered XMPP. Curious to hear what value you think the native client approach would offer.

<comment><USER7> We just want a nicer HipChat, that's all.

<comment><USER6> OK. I wish you luck. HipChat uses XMPP, by the way. [http://help.hipchat.com/knowledgebase/articles/64377-xmpp- ja...](http://help.hipchat.com/knowledgebase/articles/64377-xmpp-jabber- support-details)

</comment></comment></comment></comment></comment><comment><USER8> The fake names are disconcerting for a product that will handle sensitive information (chats).

(edit: unless 2 co-founders are genuinely named Bob Smith and John Doe, in which case maybe consider changing your names :p)

<comment><USER9> Theese guys are really serious about ninjitzu. See Robert Smith here: <http://www.whois.com/whois/lechat.im>

</comment></comment><comment><USER10> We have a distributed team of 4 engineers in 3 different locations. We have been using lechat.im for the last month and it has improved the information flow dramatically. Before lechat.im we tried hangouts, Skype and gTalk and those all fall short of the features that matter for a distributed team. Things that I love about lechat: search, SVN and git hooks (checking go into a separate room as messages), notifications, chat history.

</comment><comment><USER11> We've been using lechat for the last few weeks and we are very happy with it. The UI is simple and clean. Fast history search is the killer feature for us. A number of nice UI details really show that this chat was developed by developers for developers.

</comment><comment><USER12> Nice. I was at first very confused about the support room chat, thought it was just a page to help you get started. Turns out it's a support chat for the app.

Very nice though.

</comment><comment><USER13> Are your chat logs encrypted and suitably protected? Losing your chat logs could be very damaging for a company - knowing that logs are safe is a required feature for us.

<comment><USER7> Yes. Encrypted filesystem, continuous encrypted backups.

<comment><USER2> That should be in the list of features on home page.

</comment></comment></comment><comment><USER14> any plans to let us own our data - as in a hosted offering? The idea of my teams chats being owned only by me appeals

<comment><USER7> Yeah, we're working on an appliance version of the product.

</comment></comment><comment><USER2> Looks clean and simple. What's your backend infrastructure? Didn't see much technical detail in the FAQ :)

<comment><USER7> Thanks! Erlang + websockets + Postgres

<comment><USER15> I can also see nginx from http headers.

<comment><USER7> True. nginx as well.

</comment></comment></comment></comment><comment><USER16> Looks cool, let me try it with our distributed team (shanghai and bangalore) - 7 people team.

</comment><comment><USER17> Great job, guys! Lechat is surprisingly powerful despite its lightweight and simple ui.

</comment><comment><USER18> Like the pricing page. Simple.

</comment><comment><USER19> Guys, make a twitter account so we can easily catch on with the updates.

<comment><USER7> <http://twitter.com/lechat_im>

We'll link to it from the site soon.

</comment></comment><comment><USER20> Love the pricing page.</comment>


As Prostitutes Turn to Craigslist, Law Takes Notice - <AUTHOR> http://www.nytimes.com/2007/09/05/nyregion/05craigslist.html?ex=1346644800&en=82b7e3c6f376a86a&ei=5090&partner=rssuserland&emc=rss

<comment><USER2> I detect a start-up opportunity.

<comment><USER3> For an anonymous sex service marketplace? This non-problem would be easier to solve by adopting less conservative laws in the first place.

</comment></comment><comment><USER4> Whats the point in making this form of soliciting illegal again?</comment>


What is this UA: "Mozilla/3.0 WebTV/1.2 (compatible; MSIE 2.0)" ? - <AUTHOR>

Does anybody have any idea why microsoft (which is the block the crawls came from) would identify itself as a very old browser ?<p>It's obviously a bot of sorts, but what on earth is going on here ? <comment><USER2> Are you sure it's a bot? Sounds like someone's browsing with one of these: <http://en.wikipedia.org/wiki/MSN_TV> (which used to be called WebTV).

<comment><AUTHOR> It hit from three different IPs at once and did a few hundred pages in a few minutes, so I'm fairly sure, but it could be some kind of cacheing mechanism as well.</comment></comment>


Show HN: Lisp in C Tutorial Series - <AUTHOR> I've been learning how to implement a Lisp interpreter in C, and decided to break it up into a tutorial series.  Each part of the series is stand-alone and can be compiled and run (by clicking "Download Zip").  Open to any and all feedback, thanks in advance!<p>Here are the first 15 parts of the series, culminating in lambda: https://gist.github.com/cellularmitosis/1106b185f8b34ae0e36afa5fbcd04a00 <comment><USER3>
      >         } else if (strcmp(op_symp->valuep, "if") == 0) {
      >             return sf_if(argsp, resultpp, envp);

Why have a "part 1: symbols", if you're going to end up dispatching operators based on strcmp.

A proper Lisp interpreter tests whether an atom is the _if_ symbol using _eq_ comparison, not string. That's a very fundamental thing in Lisp, and is part of what makes Lisp dialects languages for "symbolic processing".

 _eq_ comparison just tests whether the left object and the right object are the same object. So in implementation terms, it might compare two machine words (which might be addresses).

In other words, if your objects are represented by pointers in C, then it's just:

       } else if (op_symp == if_s) {
         return ...
       }

where _if_s_ is a variable or macro or whatever that refers to the _if_ symbol. Somewhere in the code, at startup, that gets interned:

       if_s = intern("if" /*, ... additional arguments, like what package */);

When we read the input expression, the "if" text will also get passed to the intern function, which will return the same pointer. So then op_symp will be the same object as if_s, making the comparison true.

The point is not just that this is faster, which it is: not scanning strings character by character when we wish to dispatch on symbols, and just comparing machine words is faster. The point is to be working with structured objects and not raw text, even when it comes to identifiers.

One nice thing about interned symbols is that if we create a brand new symbol object, then it is guaranteed to be unique (different from any other symbol and indeed any other object). That is true regardless of its name; even if its name clashes with that of an existing symbol, they are not the same object. In C terms, memory allocation always produces a new object that is different from any other object in the program.

Also note that the string "if" is not the value of the symbol _if_ , but its name. Like in ANSI Lisp (symbol-name 'if) -> "IF". What we understand to be the value of a symbol is its binding to an object in some environment, which has no effect on its name.

<comment><USER4> This kind of error shows up often when people who are freshly learning something decide they should make a tutorial of it before they even understand the subject at anything nearing an authoritative level. It literally means everyone who follows the tutorial is doomed to make the same mistakes - <USER2> becomes part of their foundation since "that's how I learned it!" And if they're not still on board when/if the mistakes are discovered and corrected, the misinformation spreads virally.

Nobody should ever follow a tutorial from someone who is still in the learning phase. Those mistakes are part of the learning, and they certainly don't belong in a tutorial. It's better to make your own mistakes than to make someone else's mistakes part of your repertoire.

It's also why there are a gazillion unfinished tutorials out there. People who are not at all ready or capable of making sensible tutorials eventually peter out, either because it is more complicated than they expected, or more work than they expected, which leaves incomplete and highly erroneous material behind to spread virally to unwitting people who unfortunately found the wrong material to learn from.

<comment><AUTHOR> mostly, I'm writing the tutorial I wish existed.

</comment></comment></comment><comment><USER3> You should make this a URL submission so that clicking on it goes to that gist URL; then add your above blurb as a comment.

<comment><AUTHOR> ah, drat</comment></comment>


V8 JavaScript Engine: V8 Release 5.5 - <AUTHOR> http://v8project.blogspot.com/2016/10/v8-release-55.html <comment><USER2> Of note: async/await has shipped! This potentially huge for the Node ecosystem once it makes its way down to Node. No more callback hell, no more Babel, and this was the main blocker for frameworks like Koa 2 that make heavy use of promises.</comment>


Rights of private shareholders - <AUTHOR>

What rights does a shareholder have in a startup?  Is the company legally bound to disclose: - Num shares outstanding? - Valuations during funding rounds? - Revenue & Operating costs? <comment><USER2> It depends on the state of incorporation; depending on where you incorporated and that laws of the state with respect to minority shareholders, there may be a legal process known as "an accounting" under which shareholders must divulge specific information or face court order. Does your company have bylaws? If so, then some of the disclosures may be controlled by those provisions. Of course, the best advice on this topic is from an attorney....but failing that, check out the Delaware BCL (Delaware's Business Corporation law)...</comment>


A first look at Microsoft OneNote on the iPhone - <AUTHOR> http://blogs.office.com/b/microsoft-onenote/archive/2011/01/18/a-first-look-at-microsoft-onenote-on-the-iphone.aspx <comment><USER2> It's a huge step up from the WM6 version, which was just a notepad app. However, still not as great as their OneNote for Windows. Especially a Wacom enabled tablet. OneNote is the top app for people with Wacom tablets.</comment>


Norwegian Consumer Council files complaints against Grindr and five 3rd parties - <AUTHOR> https://www.forbrukerradet.no/side/complaints-against-grindr-and-five-third-party-companies/ <comment><AUTHOR> It didn't fit in the title but they are complaints about GDPR violations. I am not a tech nor law expert but it appears that summary of technical evidence is presented in the complaints; it might be of interest to HN.</comment>


Show HN: Crowdspell.js: Let visitors fix typos by selecting your text - <AUTHOR> http://crowdspell.se

<comment><AUTHOR> Hi, Anders (creator) here! I built Crowdspell because I really wanted to have this feature on my own blog. Thought you guys might like it too. If you have any comments, please share them and I'd be very grateful! :)</comment>


Thinkpad Carbon - Air Competitor - <AUTHOR> http://www.zdnet.com/thinkpad-x1-carbon-able-macbook-air-competitor-review-7000002294/

<comment><USER2> The zdnet site is just... awful.

That said, the review was fairly light on content. A lot of 'almost' and 'mostly' but no actual discussion as to what the gaps are!

Plus for an article setting this up to be a comparison to the air... there weren't any actual comparisons!

</comment><comment><USER3> It should be excellent laptop. Good to see they kept mat screen. Interesting, does it have spill-resistant keyboard as all other ThinkPads do? EDIT: It is spill-resistant.

</comment><comment><USER4> Maybe it's just the photos, but it has a real "cheap plastic" look to it. :(

Edit: They mention carbon fiber materials, but does that mean the body is carbon fiber?

</comment><comment><USER5> I'd like more than one usb3, so I can do external to external disk copies.

</comment><comment><USER6> asus has also announced an ultrabook with a 1080 pixel vertical resolution. i'm glad the days of "any resolution you like as long as it's 768" are coming to an end.

</comment><comment><USER7> "Almost as good" for only $200 more.

</comment><comment><USER8> Is no one else bothered by the proliferation of the large "shelf" in front of the keyboard, as the prevalent/ubiquitous laptop design paradigm? Combined with a sharp front edge.

I see that it allows for a larger trackpad. But, I find such shelves pressing into my wrists, particularly when I don't have control over the height of the work surface. And that is damnably uncomfortable.

P.S. And as I've stated before, I remain dubious about the chicklet keyboard. A separate concern.</comment>


Ask HN: Where would I get a list of Mechanics/Docs - <AUTHOR>

We recently started a service for mechanics/docs/vets. The site is done and all, but now comes the hard part of gaining traction, what is the best way for us to get mechanics and doctors and such to sign up to our site. I am thinking if we can somehow get a list or contact some sort of large publications that cater to these professions, it might work.
So far we have: done a facebook campaign (got likes, barely and signups to our free service), tried yellowpages cold calling (no go), tried twitter (no go), tried emailing bloggers and webmasters of sites in the field (no go), got some small time news press (barely any go).  For example, how would a online tutor company recruit these tutors to sign up and scale? any ideas?
We launched a 3 weeks ago, so I am sure we have some other avenues, and we know there is a market for our service because our competitor is doing very well. <comment><AUTHOR> any other ideas?

</comment><comment><USER2> You're basically asking - how do I make $$$?

Gaining customers/users is the cornerstone of any commercial website, and there's no magic pill.

Your options are usual

1) Advertising (I would try mechanics/docs/vets forums)

2) Sales (direct calls or even visits)

3) Building such an awesome service that people recommend it to their family/friends

P.S.

you should've thought about it before you started coding the site.

<comment><AUTHOR> we thought of the ways we tried, but it didnt work out as effectively as planned, and the only way was for us to build it to test if it would work.</comment></comment>


Bill Gates & Warren Buffet Plan the World's Biggest Bank Job - <AUTHOR> http://blog.dutiee.com/robinhood-tax-bill-gates-warren-buffet-and-millions-worldwide-plan-worlds-biggest-bank-job/

<comment><USER2> Wait - how is this a tax on financial institutions/"the super rich" exactly? FTA: "The tax proposes a 0.05% levy on all financial transactions and has the potential to raise hundreds of billions yearly to support initiatives to help those most affected by the recession. In short, a 0.05% tax on the super-rich to help ease the effects of the recession on the poorest sections of society."

The banks will, of course, add at least 0.05% price changes so that their users have to pay 0.05% more. I don't see how this has anything to do with the "super rich".</comment>


Emacs for Xcode+ios Development - <AUTHOR> http://roupam.github.com/

<comment><USER2> I got excited, and then saw it was a blog post, not a repo. Which, I think, is an interesting reaction, itself.

Completely separately, this looks like a great tutorial. I've been dragging my heels about getting into OS X/iOS development, and this just might be the kick in the pants I need.

<comment><USER3> Hoping to make it a repo soon :)

</comment></comment><comment><USER4> This might actually finally close the loop on doing some solid mobile development from my iPad (through Prompt or the like, of course). Not that I'd do heavy-duty coding on the road, but it'd be nice to try once or twice.

</comment><comment><USER5> For me the most interesting find here was fruitstrap, hadn't seen that before, and I had been looking few years ago!

That'd make automated testing on device a lot more promising, and on cursory googling, people have used fruitstrap with jenkins.

</comment><comment><USER6> That is nice, but I use vim. Any tutorial on how to do this from vim/MacVim?

<comment><USER7> If you like Xcode you can try out the XVim[1] plugin for Xcode. It's still pretty alpha but it works pretty well for me.

1\. <https://github.com/JugglerShu/XVim>

<comment><USER8> Agreed, it's the best solution currently available. I use it daily.

<comment><USER7> That's good to hear. If you find any bugs we try to squash them as fast as we can if you add an issue. Good bug writers are a huge benefit with this type of plugin(tough to fix edge cases without this) so I encourage you to report any issues you encounter with a detailed bug report. Patches are always welcome too.

</comment></comment></comment></comment><comment><USER9> It's just amazing. From this introduction, I learned how to generate TAGS and feed it to Emacs for the first time, and make up a custom "anything buffer" to capture any lines that I wish.

Awesome X one million billion times.

Thank you, roupam.

<comment><USER3> I'm glad you liked it. :)

</comment></comment><comment><USER10> This looks pretty excellent. I will be trying this out later.

</comment><comment><USER11> Tried it. It works great! :)</comment>


Sainsbury's to sell vegan 'fake meats' next to real thing in trial - <AUTHOR> https://www.theguardian.com/lifeandstyle/2018/jun/11/sainsburys-to-sell-vegan-fake-meats-next-to-real-thing-in-trial <comment><USER2> fyi, the red juice that comes out of meat isn't blood, it's mostly myoglobin/water</comment>


Show HN: SubGit-sync – subtree/submodule alternative for continously syncd repos - <AUTHOR> https://github.com/samsieber/subgit-sync <comment> sahin-boydas These will be great.

Auto pulls in my current btanch.

Also auto pull (or notify user) if there is a change in parent branch

</comment><comment> sahin-boydas I always wanted this</comment>


The Founder Dilemma: Risk, Equity Dilution, And Term Sheets - <AUTHOR> http://tech.li/2012/02/the-founder-dilemma-risk-equity-dilution-term-sheets/

<comment><USER2> I have a question for the more experienced HN users: is the author correct in asserting that in the "real world," being a co-founder of a startup is considered unemployed if there isn't a successful exit? I always thought that building a product from start to finish that has users is considered good experience to employers, even if it turns out not to be a sustainable business.</comment>


Things I Wish I'd Known Before Using Jenkins Pipelines - <AUTHOR> https://zwischenzugs.com/2017/04/23/things-i-wish-i-knew-before-using-jenkins-pipelines/ <comment><USER2> Another good feature is gating steps by branch / tag, using the "when" and "anyOf" clauses.</comment>


Ask HN: How do privacy and data influence you as a user and consumer? - <AUTHOR> Recently my (Android) phone has been asking me more and more detailed questions related to my location e.g. prompting me to upload specific pictures I've taken. I've since turned off my location (unless getting directions) but now I'm wondering how else I should change the way I use my phone and even thinking of what phone I'll get next and companies that will respect my privacy.<p>I'd consider myself pretty security conscious but I can't say the same thing for privacy until more recently. What steps are you taking to reduce the data and information you give to companies? What apps do you avoid? What companies do you really trust with your data? Or what companies do you trust not to collect data? Are you sacrificing any superior products to protect your privacy? <comment><USER2> I generally avoid Google (except for search). I prefer iOS over Android because part of the point of Android seems to be to mine my personal data.</comment>


Ask HN: Tools for making writing markup less painful - <AUTHOR>

So I endeavor to spend most of time on the app server side of things but time to time I need to get my hands dirty and generate markup/css/js from a wireframe or mockup.
As far as tools go, Ive found browsershots and Litmus app helpful and of course, vm's as well for checking things out live in ie-{6,7,8}. Otherwise I do the heavy lifting in vim.
For generating new markup thats not tied to a target design I think some of the css frameworks & tools like sass look useful but Im skeptical of their utility when needing to generate markup to match a photoshop design. Am I wrong?
So what tips / tools do you keep in your markup generating utility belt when building solid markup from designs? <comment><USER2> HAML and LESS.

But Sass has plugin support and a lot of plugins like FancyButtons. I use less coz it's minimalistic.

I use Balsamiq for mockups and heard about lxEdit recently.</comment>


Jellyfin is an open source alternative for Plex - <AUTHOR> https://www.ghacks.net/2019/08/24/how-to-setup-a-jellyfin-server-on-windows/ <comment><USER2> Interesting, I setup a plex server on a Linux lxc container to test the software and so I could have Netflix and my local library on the same "client" (which is a ps3). But then I end up going back to kodi installed on the same Linux because it was wayyyyyy better than plex. I also have to say that my bandwidth does not allow me to stream content when I'm away...</comment>


How to build DRM you can trust - <AUTHOR> http://blog.ezyang.com/2012/02/how-to-build-drm-you-can-trust/

<comment><USER2> Do you need everything to be PCC or can you use a secure kernel that supports confinement (e.g. EROS, L4sec) and then run whatever you want inside that?

<comment><AUTHOR> Confinement would certainly be one way of getting "theorems for free" about untrusted code. But it doesn't work for all types of things you might want to prove.</comment></comment>


Mark Karpeles: BTC-E Admin Was Mt. Gox Thief - <AUTHOR> https://twitter.com/MagicalTux/status/890251940306632704 <comment><USER2> Main discussion at [https://news.ycombinator.com/item?id=14858495](https://news.ycombinator.com/item?id=14858495).

</comment><comment><USER3> I bet he is happy about this news as it clarifies that the problems at his stem from his incompetence rather than him embezzling. However be still continued to trade even after he new he was losing customer money hand very fist.

</comment><comment><USER4> Karpeles is currently out on bail as he awaits charges for defrauding and embezzling from Mt. Gox, so I would take any claims he makes with a large grain of salt.

<comment><USER5> [https://news.ycombinator.com/item?id=14858495](https://news.ycombinator.com/item?id=14858495)</comment></comment>


Running DC/OS on Small Digital Ocean Droplets - <AUTHOR> http://penguindreams.org/blog/installing-mesosphere-dcos-on-small-digital-ocean-droplets/ <comment><USER2> Great write up!

I've had similar experience with startup and installation while running on Packet with much more beefy machines. Overall, DCOS is really nice to have but it is not without it's headaches so far.

</comment><comment><USER3> I switched off as soon as I saw 'swapon'

<comment><USER4> > I switched off as soon as I saw 'swapon'

Why? We're discussing running systems with as little at 512MB of RAM, but have 60GB of HDD.

Swap may not be as fast as RAM, but it's sure a heck of a lot better than crashing when your system needs 513MB for an instant...

<comment><USER5> "Although swap is generally recommended for systems utilizing traditional spinning hard drives, using swap with SSDs can cause issues with hardware degradation over time. Due to this consideration, we do not recommend enabling swap on DigitalOcean or any other provider that utilizes SSD storage. Doing so can impact the reliability of the underlying hardware for you and your neighbors. This guide is provided as reference for users who may have spinning disk systems elsewhere.

If you need to improve the performance of your server on DigitalOcean, we recommend upgrading your Droplet. This will lead to better results in general and will decrease the likelihood of contributing to hardware issues that can affect your service."

<comment><USER4> 1) Hardware degradation is not for you to worry about as a user. That's for DigitalOcean (or any other cloud provider) to worry about. You specifically pay them so you don't have to worry about hardware issues.

2) I have serious doubts that a rarely-used small 512MB swap file is going to degrade hardware and lead to performance issues for either your VM or your neighbors. Even if it did, see point #1 above.

> Doing so can impact the reliability of the underlying hardware for you and > your neighbors

This sounds like they're concerned about thrashing disk I/O... to which I'd say it sounds like they've under-spec'd/over-sold the host server if one VM swapping can degrade performance for all guests. Do they not have upper- bounded I/O quotas or I/O balancing? Can a single VM doing heavy disk I/O that is not Swap cause the same performance degradation? It seems so...

> If you need to improve the performance of your server on DigitalOcean

No, having Swap is not about improving performance, it's about keeping your system up and running in the rare event it exceeds the allocated RAM. Kernel Panics are not fun, and it's generally better to run with reduced-performance than not to run at all - at least until the Admin has time to make the appropriate changes to either rein-in the runaway RAM usage, or upgrade to more RAM.

> we recommend upgrading your Droplet

They would recommend that, wouldn't they...</comment></comment></comment></comment>