What Causes the Smell of New and Old Books? - <AUTHOR> https://www.compoundchem.com/2014/06/01/newoldbooksmell/ <comment><USER2> Interesting. The furfural comes from cellulose degradation I assume. And the vanillin must come from lignin. The toluene and ethylbenzene are outgassing from old adhesive? Benzaldehyde could come from air oxidation of the toluene. Not sure about the 2-ethyl-hexanol, but man I used to love the faint floral odor of mixed hexanes!

</comment><comment><USER3> It occurs to me that other things, more recently invented, will have interesting chemical-degradation smells as they age as well, that nobody has yet experienced because none of it is that old yet. E.g.:

• What does paper that was printed on by a laser printer a long time ago smell like?

• What does the ink from those Frixion pens smell like if you open a notebook written in by one after 100 years?

</comment><comment><USER4> "A physical book is made up of organic matter that reacts with heat, light, moisture, and most importantly of all, the chemicals used in its production. And it is this unique reaction that causes the unique used books smell.... Old books release hundreds of volatile organic compounds into the air from the paper, and it is this which gives books their scent, a combination of grassy notes with a tang of acids and a hint of vanilla over an underlying mustiness." [https://youtu.be/aUaInTfrDnA](https://youtu.be/aUaInTfrDnA)

<comment><USER5> > grassy notes with a tang of acids and a hint of vanilla

Soon available as a perfume to spray on your kindle. In a shop near you.

<comment><USER6> I would pay for this.

<comment><USER7> Demeter make a bunch of "fun" fragrances including "paperback": [https://demeterfragrance.com/paperback.html](https://demeterfragrance.com/paperback.html)

I like their "dirt".

</comment></comment></comment></comment><comment><USER8> I suppose this a good chance to ask: is it a good idea to try to keep old and browned books isolated from new ones? I imagine a cause of degradation is bacteria, so I worry that keeping them together will cause cross-contamination and accelerate the degradation process of new books.

Also, what other things can I do to preserve both old and new books? I sometimes clean them with alcohol which I'm not sure is a good idea. I also wrap some of them with plastic.

I tried to search the web for answers to these kinds of questions, but most results weren't very good. If there's a good place to look up/ask that sort of thing I'd like to know.

<comment><USER9> OP doesn't mention bacteria, only a gradual breakdown of paper and ink components. Bacteria might play a role in the breakdown, but I'm guessing that most of it is just a reaction with oxygen and moisture in the air. That is, unless the books are so damp that they literally rot away.

Chemicals can "infect" nearby objects, though, just like airborne bacteria. It's a well-known fact that the gas that comes out of a ripening apple causes nearby apples to ripen more quickly. Maybe a similar reaction can happen to books, especially if the breakdown products cause a change in acidity.

<comment><USER10> I imagine this is where the phrase "one bad apple ruins the whole batch" but it sounds like in practice, a good apple can also help get the whole batch ready, all the while getting old and tired. Not sure if there is any wisdom in that but it feels like it could have some. Something about teaching and getting old doing so?

</comment></comment></comment><comment><USER11> My old English teacher used to quip that the better the book smells, the worse the book is. I imagine that much of the old book smell (at least in a school library) comes from the many fingers that have thumbed through the book. Then again, old books in pristine condition still exude the "old book smell" (I got a 1970s-era book on compilers from the library for free in perfect condition that still smells "old").

I'm impressed that they were able to figure out specific compounds. How would you even get started figuring out which compounds are coming from a book?

<comment><USER12> > How would you even get started figuring out which compounds are coming from > a book?

I'm not a chemist, and this is just a guess, but perhaps by placing the book in a vacuum, waiting for it to outgas a bit, then analyzing the resulting "air".

<comment><USER2> Yes, something along these lines. Its called "headspace' analysis. The volatile components that come off are typically checked with GC/MS.

</comment></comment></comment><comment><USER13> "Error establishing a database connection"

<comment><USER11> [http://webcache.googleusercontent.com/search?q=cache:https:/...](http://webcache.googleusercontent.com/search?q=cache:https://www.compoundchem.com/2014/06/01/newoldbooksmell/)

[http://web.archive.org/web/20190304130113/https://www.compou...](http://web.archive.org/web/20190304130113/https://www.compoundchem.com/2014/06/01/newoldbooksmell/)

</comment></comment><comment><USER14> Bad rquest

</comment><comment><USER15> _" As with all aromas, the origins can be traced back to a number of chemical constituents, so we can examine the processes and compounds that can contribute to both."_

There's also the hard question of why something smells a particular way to you. This is a question arguably beyond chemistry, and (more contentiously) perhaps even beyond biology.

It's like why something that has the color red appears as red to you, while the same object might appear as blue to someone else, but since you're both referring to the same thing and using the same words for it, you normally assume you're having the same experience but there's really no way to know that you are. There's no way to inspect anyone else's experience to see if it matches your own (and even if you could, those would still be your experiences of their experiences).

With that in mind, one could ask why the smell of a rose (or of whatever chemicals make up that smell) smell the way they do (ie. why you experience them as you do). It's difficult to see how an answer based in biology or chemistry could ever answer that question.</comment>


Guns, Germs, and Steel [video, long] - <AUTHOR> http://video.google.com/videoplay?docid=-4008293090480628280 <comment><USER2> There are a couple of interesting articles on NYT on this author's books.

\- [http://www.nytimes.com/2007/12/25/science/25diam.html?_r=1&#...](http://www.nytimes.com/2007/12/25/science/25diam.html?_r=1&ei=5087&em=&en=075e6d1bcad0c583&ex=1198818000&pagewanted=all&oref=slogin)

\- [http://www.nytimes.com/2005/01/30/books/review/30EASTERB.htm...](http://www.nytimes.com/2005/01/30/books/review/30EASTERB.html?pagewanted=all&position=)</comment>


Ask HN: How do you name your teams? - <AUTHOR> Hi, We have two software development teams and temporary names are X and Y at this moment. But we'd like to change them to something less competitive. Right now it looks like the Y team is the secondary to X team even though it's not the case.
So, we can't use letters (such as A and B, or X and Y), numbers (1 and 2, I and II, etc.) and Greek alphabet (alpha and beta which is similar to A and B). That leaves us the colours, animals, plants, and planets. We're not all men or women in any of the team. As a result, we can't also use Mars and Venus or Blue and Red/Pink kind of names too.
How would you name your teams in this situation?
P.S: If you are going to give team name examples, please be careful that they shouldn't be sexist, racist, or competitive. Thanks in advance! <comment><USER2> Have each team launch a Docker container. The name of the container is the name of their team. Teams are cattle, not pets. Naming teams is bikeshedding.

</comment><comment><USER3> Toy story characters, sweet treats, big cats, cities & landmarks in california, rivers in Oregon, a combination of adjectives+animals.</comment>


The Pipeline - <AUTHOR> https://story.californiasunday.com/tech-pipeline-diversity <comment><USER2> Wow zero comments? Truth hurts?...</comment>


Is the future of coding, no coding? - tefo-mohapi <comment><AUTHOR> No. In the near/mid term (10-20 years) its probably more coding but our definition of coding may be more broad. History shows us the number of coders and demand for coding has grown substantially. That will likely continue.

Coding 40 years ago probably involved assembly, binary, memory management, etc. for almost all coding scenarios, making coding inaccessible to all but a small portion of the population. Advances in technology have brought higher level abstractions that have made coding more accessible to more people who simply wouldn't be able to meet the skill requirements of the previous generation.

Why I'm pessimistic on a no coding auto-pilot future... Our best efforts at machine learning and AI to date have given us poor implementations of a personal assistant rivaling the magic eight ball. At best we've got usable interactive voice recognition capability to replace already highly scriptable repeated tasks. Even minimally dynamic human-computer interactions suffer low success today without substantial human refinement. Translate that to a machine comprehending vague or poorly expressed business requirements and success criteria, good luck. I think we have a lot farther to go before machines will be able 1. understand complex scenarios and 2. solve and code for them.</comment>


Your requirements for a Startup Shuttle? - <AUTHOR> http://jonashuckestein.wufoo.com/forms/startupshuttle-survey/

<comment><AUTHOR> Yesterday a large number of you indicated interest in a Startup Shuttle service from the peninsula to the south bay and back.

I'm trying to figure out if it is possible to break even with this kind of service. Please help me by filling out this form and spreading it to everyone who might be interested in it.

Thanks!

Edit: FYI the original thread is at <http://news.ycombinator.com/item?id=3041545>

</comment><comment><USER2>
                             Willing to pay extra
        Affordability                [X]

That's a funny cell.

<comment><AUTHOR> Woops haha, that's pretty funny :D

</comment></comment><comment><USER3> Glad this got turned into a form, I'm really hoping this works out and it's something I'd even consider helping to organize if you need assistance.

Two thoughts:

1) Have you considered getting sponsorship to help make this possible? I have raised the idea in the past with funded startups - esp those looking to hire or have developer-facing tools - that funding something like this would be beneficial. On the one hand, I would be against a startup actually pitching during the ride, but I wouldn't be against using a service that is non-in- your-face sponsored to off-set some of the costs.

2) Bauers already provides the shuttles for an number of employer services (TaaS, Transport as a Service??). You should definitely consider them: <http://www.bauersit.com/>

Finally, you've not stated whether this is something you intend to run for profit or as a community service. It would be useful to clarify, perhaps. I'd personally love to see it as a community service but I'm not against this being commercial.

Let me know what I can do to help.

<comment><AUTHOR> Good points, thanks Ben!

1) Sponsorship is a great idea, but it seems like a great idea. At StartupBus, the majority of our costs are covered through sponsorship.

2) BauerIT works with us on StartupBus every year and they have already offered a very reduced rate. This is slightly off-topic, but I second that they are amazing and highly recommended for all bus needs. It does seem to be more economical over the long run to buy a bus though. If you're interested in specifics, we can take this offline. I'll shoot you an email in a bit.

3) Looks like it won't easily be possible to run it for profit at prices comparable to caltrain (which is my goal), so I'm open to making it a community service (this also helps with setting expectations). As a non- immigrant visa holder it's a hassle for me to turn a profit on anything anyway ;)

<comment><USER3> Arhh, I didn't know you were part of the startup bus crew. Elias is a good friend of mine. I'm guessing you're Ausie too if you have a non-immigrant visa. As it happens, so do I so I have same challenges.

To your point on CalTrain, and what everyone who might use this service needs to understand, is that CalTrain is run at a loss - $12 each way from SF<>MountainView doesn't cover their true costs. In fact my client pays me $40/round-trip if I drive between SF and Mountain View because it's 80 miles round-trip ($0.5/mile driving costs, which is standard). Further more, Caltrin have scales of economy on their side too.

So if people are looking to pay the same as CalTrain then they're going to be disappointed - unless you can subsidize with sponsorship.

</comment></comment></comment><comment><USER3> When asking for the time I want to be picked up, was it really necessary to enquire down to the second? :P

 _I'm guessing this is a pre-set "time object" in wufoo, it just made me chuckle. Hopefully humor isn't lost on HN for once_

<comment><AUTHOR> Form fields courtesy of wufoo. Can't say I'm too happy with their product for this type of thing. The reporting is great, but the actual form controls are a little lacking.

</comment></comment><comment><USER3> In your importance of features, "somewhat important" falls lower than "neutral", which in turn is lower than "important".

I would have thought neutral<somewhat important<important, no?

</comment><comment><USER4> Why does it say "I need to be dropped off somewhere else" under "Pick-up location"?</comment>


Adios OSX - <AUTHOR> http://www.klein2.de/adios-os-x/

<comment><USER2> It's funny how he rants about OSX not being cool anymore and too constricting. Seemed like it is geared towards consumers. An OS that is more made for profit than for usage etc.

And then ending the piece by stating he uses Windows 8 now. I would be interested to learn how _that_ one with it's nonsensical tile fest is not first and foremost consumer oriented. I like to learn how their latest "me too" approach with their Metro side "App Store" is not geared towards making profits instead of usage.

In essence he throws away a *NIX system with a user friendly UI in favor of Microsofts latest attempt to stuff a unified OS down people's throats. You'd think they got enough evidence by now that a unified OS does not make sense when the systems it runs on are inherently different. You don't see car makers put motorcycle handlebars into their new cars instead of a steering wheel, do you? You know, for that nice "unified user experience".

</comment><comment><USER3>
        Page Not Found

        You are looking for something that could not be found.

<comment><USER4> Same here.

Utterly lame. Anyone got a copy of it?</comment></comment>


Online Ruby Programming Course from Pragmatic Studio - <AUTHOR> http://pragprog.com/news/online-ruby-programming-course-from-pragmatic-studio <comment><USER2> There's quite a healthy ecosystem in this area now, it seems. Just some links:

<https://rubyoffrails.com/> <http://owningrails.com/> <http://www.codeschool.com/> <http://railstutors.com/> <http://www.rubyreloaded.com/> (disclaimer: mine!) <http://rubylearning.org/class/> (free) <http://www.buildingwebapps.com/learningrails> (free)

Probably should get together a list of these someplace actually!

<comment><USER3> are there comparable options for python? from my searching, I havent seen any as thorough as some of these.

<comment><USER4> O'Reilly has a certificate course. It is pretty good. I am almost done with the first section.

Wesley Chun has some videos out as well. Look on Amazon for those.

</comment></comment></comment><comment><USER5> Another fantastic resource is the railscast series (railscasts.com) by Ryan Bates. Each one is short, pithy, and focused at about seven minutes. Whenever I watch one of them, in addition to learning what the particular episode is about, I invariably pick up a cute new rails or ruby idiom. It is like watching over the shoulder of a guru as he writes code.

</comment><comment><USER6> I don't see how this can even compete with something like treehouse or code school. It's the same sort of online course that is being offered everywhere across the web and the price, in my opinion, is pretty outlandish.

<comment><USER7> I dove into programming in November as a complete newbie. I use every resource under the sun... railscasts, <http://ruby.railstutorial.org/ruby-on-rails- tutorial-book>, Treehouse, Codecademy, RailsTutors, This course, among dozens of others. This course is very well structured and offers a deep understanding into the Ruby language that none of the other resources compares to. For me, I take a bit from everything. I am confident that the route I am taking would blow away any formal education for building web applications. So a $199 price tag is extremely reasonable. There are other FREE ways to learn as well. To each their own.

</comment></comment><comment><USER8> I am curious: in what ways is an online course of this sort preferable to reading a book (plus doing exercises)? Is the "live" help really that much of a factor in learning the material?

<comment><USER9> They don't help with beginning programming topics because the primary thing beginners _have_ to learn is reading and writing code. The videos mostly help beginners who have been convinced through "learning modality" marketing to fear reading and writing as a teaching technique. After that, if they aren't typing and reading they aren't learning to code.

Where videos help is with demonstrating visually dominant technique topics, like CSS layout, how to use Vim, how to change the path in Windows, how to run a debugger, etc.

</comment></comment><comment><USER10> How much does it cost?

<comment><USER11> $199</comment></comment>


Invention Awards: An Inexpensive, Portable Ventilator (2010) - <AUTHOR> https://www.popsci.com/diy/article/2010-05/invention-awards-breathing-easy/ <comment><USER2> They are aware of covid and seeking partners it seems: [http://www.onebreathventilators.com/](http://www.onebreathventilators.com/)</comment>


Dreaming of Rails as the Next Microsoft Access - <AUTHOR> http://broadcast.oreilly.com/2009/05/dreaming-of-rails-as-the-next.html

<comment><USER2> Wouldn't Django, with its automatic admin, be better for replacing Access than Rails? The scaffolding in Rails is pretty bare-bones, but the Django admin (IMHO) is good enough to be used as the actual app if the situation warrants.

<comment><USER3> Maybe a bit closer, but still a huge miss. Both Rails and Django are frameworks for developers, whereas Access is more of a "prosumer" product for clever office workers.

If the OA was so impressed with Access, maybe he should learn real programming, because Rails and Django will never be as consumer-oriented as Access. You could build an Access-like program on top of some of the guts, but it would inevitably be just as dumbed-down and cumbersome as Access.

The vision is misguided.

</comment></comment><comment><USER4> It's not that Rails culture makes GUI's the end product, it's that it's the necessity of the product. It's a web framework, not a database GUI. You could _build_ a database GUI in Rails easily enough, but you're still using a database GUI that happens to run on a web framework.

The ignorance here (or at best, tenuous reasoning) is apalling. Jeez. You'd think this guy has never used Rails or something.

</comment><comment><USER5> Plot: The author tries to convince Rails is the web version of Access.

Very weak article, wondering how O'Reilly can afford this.

</comment><comment><USER6> "Microsoft Access had been my preferred tool for creating applications centered on a relational database."

Here come the down mods, but anyone making that statement automatically loses any credibility of tech savvy and generates an enormous amount of pity. If access were all I could use, I would run scratch my eyes out.

<comment><USER7> It beats abusing Excel to accomplish the same objectives. Access is most certainly not aimed at people who read this site. It's a great tool for what it does (GUI relational-ish data design and user interfaces, such as forms and reports)

Yeah it's slow and crappy and weirdly integrated, but it's certainly more powerful than any of the alternatives that I was aware of when I last used it (mid 1990s).

</comment></comment><comment><USER8> Wait... does anyone know of a startup other than Caspio that is looking to target the Access market?

Rails isn't quite right for it. The world really does need an access-like product.

</comment><comment><USER9> Who would want to be the next Access? Access completely sucks. It's truly awful.

<comment><USER10> Not in every respect. It's easy to create a schema in, and get a nice entity- relationship diagram, and knock some data in. I don't know of another tool that even comes close to being as lovely to work with for personal databases. Of course.. a lot of evil is done because people use it for more than that.

Excel and Word have the same dyanamic. They're quick to get started in and have a user interface to die for, and they're really really bad underneath.

For small single-user projects these things _can_ be OK. I do most of my personal finances in a python tool, but run monthly position in excel. I write speclets in Word because I like the default styling. It's great for quick letters as well.

Both are dangerous for anything larger, or anything involving multiple users.

I'm trying to get my current organisation to be serious about using a wiki for documentation tracking. I want to scream most days because of the way that use of Word and email is hard-coded into people's brains regardless of how many times I try to find tactful ways of winning people over by making the case for how effective wiki is for merging, searching, history, navigation, version control and centralised single-port-of-call. It doesn't have any effect.

The problem would just go away if there was a way to get Word to sit as interface to a wiki, and excel as a frontend to something appropriate for its datastructures - even if it meant significantly reducing the functionality of the tools. Unfortunately the only way I know of of doing this involves using sharepoint which has lots of lockin and deletes files when I save them in vim. In the same way, I suspect Access would be fine if you used it as front-end to a serious SQL database (of the three tools, the only one where such a thing is practical).

</comment></comment><comment><USER11> This is basically my job right now.

</comment><comment><USER12> Windows-only UI nightmare?

</comment><comment><USER13> You may care to read the opinion in the article linked here: <http://news.ycombinator.com/item?id=591102>

[Oracle office stuff] _did one thing better than any competitive product I knew of: it stored everything as rows in the standard database_</comment>


Ask HN: Please add a warrant canary to the footer - <AUTHOR> With Reddit being forced to take down its canary, it is more important than ever to make canaries mainstream/acceptable. <comment><USER2> My canary-as-a-service startup is going to disrupt the canary industry.

</comment><comment><USER3> On that note, let's also add canaries to our own projects. The more mainstream this is, the better.

Here's ours, which we added today: [https://github.com/hackclub/hackclub/blob/master/TRANSPARENC...](https://github.com/hackclub/hackclub/blob/master/TRANSPARENCY). Feel free to use this as a template for your own.

</comment><comment><USER4> That would assume that HN has not already received an NSL.

<comment><USER5> I think its safe to assume they already have.

<comment><USER6> Why would they?</comment></comment></comment>


Ask HN: Why CTRL+C and not CTRL+Z to kill ? - <AUTHOR>

Doesn't CTRL+C mean to halt a command, so why does most server documentations say CTRL+C to kill or stop ? Shouldn't it be CTRL+Z to kill ? Am I missing something here ? <comment><USER2> Ctrl-Z in unix puts your app to sleep so you can background it or kill it via the `kill` command. I find on badly saturated connections (accidentally running a command that produces tons and tons of output) that I can often suspend a command more readily than I can interrupt it with Ctrl-C.

</comment><comment><USER3> If I recall correctly, CTRL-Z was the end-of-file marker on some OS (DOS?) so they used CTRL-C (for "cancel") instead. It then became a standard.

</comment><comment><USER4> I always just presumed 'C' stood for cancel.</comment>


The algorithm that creates diets that work for you - <AUTHOR> http://www.theatlantic.com/science/archive/2015/11/algorithm-creates-diets-that-work-for-you/416583/?single_page=true <comment><USER2> ...for diabetics? Its all about blood sugar spikes, not fitness nor weight control.</comment>


British scientists develop 'brain to brain communication' - <AUTHOR> http://www.telegraph.co.uk/technology/news/6331511/British-scientists-develop-brain-to-brain-communication.html

<comment><USER2> All interpersonal communication is brain-to-brain communication; whether the message delivery method is visual, auditory, tactile, electrical or electrochemical.

</comment><comment><USER3> _"The first person generated a series of zeros and ones, where they imagined moving their left arm for zero and right arm for one."_

The first time I heard that people could operate robotic limbs with their thoughts, I thought: Two people could communicate almost telepathically, if they'd just hook up this brain reader to a Morse code transmitter/receiver.

Ultimately, this could lead to a little device that sits behind your ear, allowing communication from person to person, completely clandestinely. On the sending end, perhaps you just have to think about moving your fingers to type, and it picks up the letters from your brain waves. On the receiving end, it uses text-to-speech to read the message back into your ear.

</comment><comment><USER4> This really isn't that new. Also, what is the final comment?

      "The next experiments are to get that second person
      to be aware of the information that is being sent to them.
      For that, I need to get my thinking cap on, so to speak."

Is he admitting that he hasn't managed to send information from a computer directly to a brain? If so the title of this article is a lie. "Developed" No! Developing? Yes!

</comment><comment><USER5> People who tweet would love this!

However, I do find a downside to this. I would have to be extra careful about my opinionated thoughts about others while I'm around them.

<comment><AUTHOR> I suppose there's always taking yourself off the network - like how we step away from our computers sometimes.

...what, I can't be the only one that takes the occasional break. Right?

</comment></comment><comment><USER6> Ah, they must be fans of Peter F. Hamilton. I wonder if they have they started growing Bitek yet?

</comment><comment><USER7> Is it different from <http://en.wikipedia.org/wiki/Telepathy>

<comment><USER8> Quoth the article:

"It's not telepathy," Dr James told the paper. "There's no conscious thought forming in one person's head and another conscious thought appearing in another person's mind. "The next experiments are to get that second person to be aware of the information that is being sent to them. For that, I need to get my thinking cap on, so to speak."

This is Hacker News. It would behoove you to read what Slashdotters call "TFA" before commenting.

<comment><USER7> thank you.</comment></comment></comment>


Ask HN: How do you condition yourself to be more critical - <AUTHOR> ..of details that are not obvious?
Is there another way to hone critical thinking? this is because I notice myself to be a bit of an under-estimator/optimist. I am very optimistic on things that I see that, at the surface, should be fairly easy, but does not scratch the surface.
I know that at one part, this is due to practice and experience with real life situations, and this is very apparent.
What are your tips about this? do you have any mental framework you work with?
Something that I can share about how I learn is this quote "optimists are pessimists that lacks information". I make sure I have as much information as possible to get to a decision or conclusion.
Looking forward to some great tips. <comment><USER2> Two things:

1\. For anything to succeed you need to have all the factors to be right and for anything to fail you just need one factor to be wrong (aka there are more chances of failure than success).

2\. Analyse the failures, don't just get over it. Ask questions about the failure to learn about it so that the learning can help you in future.

Get over the idea of optimism and pessimism, these categories will never ever help you in any situation apart from social talks where people just feel proud/whatever of classifying them in these categories.

<comment><AUTHOR> Very good insight. getting feedback from failures do make one improve.

I shall carry your advice at heart.

</comment></comment><comment><USER3> There's nothing wrong with being an optimist mate. You're much happier in life. You may want to look up Edward de Bono. He has some quite readable books on thinking.

</comment><comment><USER4> Very interesting reading about this topic is in book Pragmatis by William James.

Its philosphy so its not easy reading for relax.

From critical thinking point of view, try to read something about rhetoric. If you know some approaches, try to get in practice and challenge some speakers.

Start with your friends and familly. But I have to warn you...you will not be favorite partner for discussions anymore :-) so don't overdo.

</comment><comment><USER5> I'm a pessimist at heart. What if I had a stroke tonight? Slip in the bathroom, kill someone while driving to work. What if my girlfriend leaves me today. My mother could die tomorrow, my brother can get hurt while working. Optimists live happily through it all, depressed people close themselves in. Realists try to potect themselves by mentally doubling the estimates.

<comment><USER3> That sounds more like an anxiety than pessimism...

</comment></comment><comment><USER6> Before giving tips, how do you experience this frame of mind as a problem?

</comment><comment><USER7> Question your assumptions.</comment>


Ask HN: Useful ways to get rid of old programming books - <AUTHOR>

I've been sorting out my office and have a heap of outmoded programming books (eg for Rails 1.2, XML, Flex, etc) that I really don't want hanging around wasting space.
They've been listed on Amazon Marketplace for 12+ months. Current books sold in hours, these have not had a bite.
I could give them to a charity shop, but part of me feels like that's just giving the shop crappy stuff which either won't sell or which someone might buy, but unwittingly be buying something no longer fit for purpose.
So - aside from the recycling bin, is there anywhere else useful these books could go? <comment><USER2> When my father passed away last year, I went through his library of technical books. I recycled 900 pounds of books.

Most people who saw this happening wanted to give the books to the library, to a church, or hold a yard sale. But my mother understood, when I explained that my dad wouldn't really want some unknowing kid to learn something he'd just have to unlearn. Nobody needs to know the ins and outs of Windows 95 application programming.

I really think that donating outdated books to libraries and such is just a way of passing on the guilt of recycling large volumes to the people who work at the library. Be bold, do it yourself.

Edit: Of course, do something meaningful with the current and timeless books. I came home with a copy of K&R's The C Programming Language and a few others, and I left the full set of The Art of Computer Programming in my dad's library. I explained to my mom how that set represented my father's entire library.

<comment><USER3> If the local friends of the library gets $1 for an outdated book, that's a good thing.

Yes, nobody needs to know the Windows 95 registry structure, and few even want to know it in detail, but at $1, some people will buy a technical book just for an hour of mental stimulation and the positive feeling from supporting a community institution.

Reuse is better than recycling.

</comment></comment><comment><USER4> When I worked at Lotus, we got a request from a prison for old books, manuals for inmates. So you could try that. Unless they're on penetration testing or something ;-)

<comment><USER5> What an awful extra punishment! Truly evil.

</comment></comment><comment><USER6> Give them to someone's kid who's into computers. I'm sure they can get some use out of it.

<comment><AUTHOR> I suppose a similar hang-up applies as with charity shops: do I really want to encourage a kid to learn old stuff?

<comment><USER7> Not in case of those books you listed, but if you have some books about basics of technology which does not age that fast.

Seriously some old security books for example are good reading.

</comment></comment></comment><comment><USER5> Don't buy computer books on paper in the first place. Opt for ebooks.

</comment><comment><USER8> Donate to your local library would be my suggestion.

</comment><comment><USER9> Recycling?</comment>


Ask Programming Superstars: Do you have to interview? - <AUTHOR>

This is aimed at those of you out there who are programming superstart. That is to say, people with popular open source projects with 1000+ github stars.<p>When you start a new job, do you have to go through the interview process? Do those companies make you bang out FizzBuzz on a whiteboard in front of the team? Or do they just pretty much take the fact that you authored a popular project as an endorsement of your technical skills? <comment><USER2> If you're at the superstar level you don't generally apply for a job, you get headhunted. Typically someone who you know will be used to reach out to you to setup an informal conversation to test interest which is generally followed up with meetings with other senior staff, etc. before a formal offer is made.

References are generally taken much more seriously at that level as well (i.e. taken from mutual acquaintances who have incentives to be open).

</comment><comment><USER3> Yes, for two reasons. Almost all bad hires come from some exception to the hiring rules. If everyone goes through the same process it limits that risk. I wouldn't want to work at a company that didn't seriously and exhaustively vet candidates.

The second reason is cultural fit. You're going to be spending a lot of time with these people, you want to make sure you're going to get along.

<comment><USER4> I completely agree with this. I would be very hesitant to join a company that doesn't do a thorough job at evaluating potential employees, even if they have a sparkling reputation this would be a huge red flag for me.

As well an interview to me is two way. As much as the company is evaluating wether I am a good fit for the company, I'm evaluating wether the company is a good fit for me. If I am actually good enough that I should be offered the job without an interview then I certainly should be good enough to prove it in an interview.

Also anybody who feels above going though a company's interview process should be a massive red flag as an employer.

</comment></comment><comment><USER5> Absolutely, many people don't realize that interviews are a two way street. Not only is the company interviewing you to assess your technical skills and cultural fit, but you are interviewing the company as well to see whether you'd like to work there.

If you're a "superstar" (I don't really like that term), you want to work with other talented individuals. So if the interview process is non-existent or overly easy, it sends a negative signal about the "potential" quality of other hires.

<comment><AUTHOR> I'm not referring to the high level conversations that occur between company and employee. I'm more referring to the "nuts and bolts" process of doing fizzbuzz and writing out binary tree parsers and things like that.

</comment></comment><comment><USER6> I've often wondered what it was like, for example, for Google to recruit Eric Brewer. I would imagine it was something similar to [http://www.quora.com/How- Was-X-Recruited-to-Facebook/How-did...](http://www.quora.com/How-Was-X- Recruited-to-Facebook/How-did-Yishan-Wong-get-recruited-to-Facebook) , but it could really be anything.

</comment><comment><USER7> I've only been on one job interview where the hiring manager looked at my github account prior to the interview

<comment><USER8> If there is any on line code I can reference I will always take a look. Looking at someones code is a great way to see how they approach and structure problems. The code as well as the problems they choose to tackle tell a great deal about the candidates level of maturity and the kind of code that they are going to write once they start working with you. One of the last candidates I interviewed, when I was corporate, was a great talker but when I looked at his code on github it was full of AbstractDefaultFactoryProxyDecoratorBuidler's...Mehhhh, my boss hired him and loved him anyways (and now he's working at LinkedIn, so what do I know)....But he did fill up our code with the above types of garbage classes.</comment></comment>


Cross-Country Cannonball Record Broken – 27 Hours 25 Minutes - <AUTHOR> https://www.roadandtrack.com/car-culture/a30085091/these-guys-just-drove-an-e63-amg-across-america-in-a-record-27-hours-25-minutes/ <comment><USER2> Complete lunacy. I've done 5,000 miles in 5 days (with meetings! and some sleep, i think) which will continue to satisfy me as the peak level of crazy i wish to indulge in.

These fellers pegged the meter.</comment>


TDD: tastes better without the T? - <AUTHOR> http://coderoom.wordpress.com/2010/04/27/tdd-without-the-t/

<comment><USER2> This experience is emphasized even more if you work in a language with a REPL, like Clojure. The only value of tests, at that point, are to protect against regressions. The testing process with a REPL happens faster and more organically than writing unit tests, but it's less structured and harder to formalize. It's like comparing a structured debate to a conversation.

What someone needs to do (and I'll do eventually) is implement a REPL enhancement that allows "test capture". Namely, if you have recently evaluated one or more expressions, execute a "capture" command that extracts the working environment (locals, globals), the previous statements you've run, and their evaluated results, and outputs one or more unit tests. For example, a session with clojure might look like this:

> (def x 1)

> (def y 2)

> (+ x y)

3

> capture!

\-- Saved capture001.clj

(1 test passed, 0 tests failed.)

Where capture.clj contains a test similiar to:

(def x 1)

(def y 2)

(def expected-result 3)

(assert-equal (+ x y) expected-result)

Fuzzy, and I apologize as I don't know the clojure unit testing syntax, but you get the idea. Of course, this is a baseline case, you'd need more functionality such as allowing the user to specify which parts of the environment to capture, and what results to assert, but these should fall out naturally as the tool is dogfooded.

<comment><USER3> "The only value of tests, at that point, are to protect against regressions."

Which is still extremely important.

<comment><USER4> In fact, this the key reason that you need to have _automated_ tests. I don't know anyone that commits a new feature without trying it -- be it (conveniently) at a REPL or via some other UI. But the manual "trying it out" method, REPL or otherwise, has always suffered from the fact that it cannot be easily repeated, so old features eventually get broken, and nobody notices. This is why I automate my tests, because their value over time exceeds the extra cost to write them vs. trying it out.

I think this is an aspect that the original article fails to take into account. Eliding tests can feel very liberating, and it allows you to plow ahead adding new features faster. Particularly in small, or at least new, projects. But over time reality catches up, and the lack of tests becomes a burden. You start avoiding adding new features, and particularly improving existing code, out of fear of breaking something. And so you end up more constrained than if you had added the right balance of tests along the way.

Writing software that is maintainable, with staying power of years or decades, requires the sacrifice of some up-front productivity.

</comment></comment></comment><comment><USER5> I'm pretty sure I lost a $150k job opportunity for saying that TDD is a waste of time if your product hasn't been validated as a money maker. I don't regret saying it either.

Fast forward a month and I begin working on a pre-profit project that is so bloated with tests and unnecessary complexity that it took me a few days to really figure out what the hell was going on with the code. When I first started reviewing the code, I was thinking, "Wow, this guy's testing chops make me feel stupid.". Then, after really spending some time with the code, I just thought, "WTF!?".

It's clear he spent much more time writing tests than writing any features. On top of that, he had written 10 level deep abstractions for features that had features for their feature's features. In order to really understand the insanity of this you have to know that this site basically had 0 users and was going nowhere fast.

Then I was just pissed. Pissed at the thought of someone just getting paid to implement every feature under the sun without questioning if any of it was really necessary and with 0 user feedback. This is one of those instances where the developer makes thousands of dollars and the site and owner just lose thousands. This is totally unacceptable and irresponsible in my opinion.

The first thing I did was start removing features and didn't write one test for anything. I would have loved to just scrap the whole code base and start over, but there just wasn't time so I just had to rewrite as I went. You would think with all those fantastic tests, the code would be pretty solid, but I continually found incongruencies and errors. The database didn't even have foreign key constraints set up for any of the relationships. Why bother using a relational database?

I know that TDD is popular and I've seen job descriptions like "If you are just getting started with tests, don't even bother.", but I think there are a lot of developers wasting a huge amount of time and money writing tests for products that are destined to fail, partially because of all the time and money spent writing tests.

<comment><USER6> I agree wholeheartedly about preemptive TDD: [http://ravimohan.blogspot.com/2007/04/learning-from- sudoku-s...](http://ravimohan.blogspot.com/2007/04/learning-from-sudoku- solvers.html)

Almost nobody in the Rails community uses foreign key constraints with ActiveRecord. I chafed against it at first, but if you're drinking their validation koolaid, it wouldn't add value in most cases, since the validations can add stronger constraints with better exceptions.

<comment><USER7> I am not familiar with the validation koolaid (can you summarize it?), but from my experience, you want great constraints in your database because there may be more than one entry point to your database. If your software layers outside the database are your only entry point, then you might be able to do away with constraints...

But also in my experience with multiple developers working on changing the schema and adding new features that result in new data, we are often very glad the database has the constraints in order to keep people honest and not screw up the data during release transitions and even during development. If the software layers below that business logic do a super great job of handling the constraints, then this is not an issue.

</comment></comment></comment><comment><USER8> This is sort of the consensus I've come to on TDD: It's a great way to learn good habits. This is important, because we really have surprisingly few solid ways of teaching a new developer good habits, and anything that doesn't involve "an experienced developer watching over your code every second" but can be done by yourself is a very good thing.

But there comes a time when it's time to discard it. The entire system promotes incredibly local thinking, and when you are _incapable_ of thinking at a higher level (or thinking correctly, anyhow), learning to get the local stuff correct is a great start. Once you get that down cold though, and start moving up to higher levels of organization, TDD can start to be a net negative. I tried it out about 8 years into my career, and mostly what it did for me was tell me to aggressively walk into local optima that I knew in advance were local optima, and, by golly, were local optima even with TDD. But I'd recommend it to anyone who hasn't got the basic, local level stuff down cold, as knowing that stuff really well is a prerequisite to getting the higher stuff correct, and rather a lot of developers get a long way into their career without knowing that stuff well.

</comment><comment><USER9> What frequently floors me is the complexity of the test frameworks and utilities. Look at an average Rails shop, and their list of test helpers goes on forever. Stuff like mockups, creating test data and so on.

I just hate learning frameworks.

My dogma is fun driven development. If something is not fun, you are probably doing it wrong. Creating mock objects and ever more abstract test frameworks is not fun to me (ymmv).

<comment><USER10> Not only that but they tend to be fragile and break when something in Rails or the other sub-frameworks they depend on changes. Somewhat ironic actually...

</comment></comment><comment><USER11> The biggest problem I have with TDD, or unit testing specifically, is the contortions (interfaces, mocking, delegating construction and configuration, configuration files, library dependencies, etc.) one has to go through to invert dependencies in statically typed languages. If only higher order module systems (think: parameterizing modules by their module dependencies, a bit like generic types are parameterized by type) were more popular, then huge chunks of this work wouldn't be necessary.

Add in preconditions, postconditions, DbC etc. and you can let the language help you out a whole lot more.

<comment><USER12> I'd be interested for you to expand on what you mean by "higher order module systems". Do you have any links?

<comment><USER13> The ML community usually calls them "functors".

For examples, a package which implements a data structure, say, a red-black tree. The module is parametric over the tree type, so you have module of type "(some record) rbtree". It customizes the module for those, at compile-time.

Or, a module that does a compiler's code generation, which takes another module which provides specification for the processor architecture.

Everything is typechecked, etc. at compile time. There's overlap with both the STL and Haskell's typeclasses, but in ML it's done as part of the module system.

</comment></comment></comment><comment><USER14> This is an interesting point. When one starts to become dogmatic about any kind of 'best practices' it can be difficult to see what benefit is actually gained from them. In any given situation, you should know when and when not to apply them. Clearly, testing accessor methods is a sure way to drive any programmer numb with tedium.

<comment><USER15> Perhaps that counts as an argument against accessor methods?

<comment><USER16> It's an argument against using accessors for the sake of using accessors.

It's important when learning any technique (and this goes not just for programming) to understand _why_ that technique makes sense in this situation, which means that you can evaluate later situations on a case-by-case basis and decide whether or not that technique fits.

Too often people believe that a technique is good (Inheritance is good!) without fully appreciating why (Polymorphism). This means they start using it for other situations (code reuse) when it might make sense to do it another way (composition).

<comment><USER15> Thanks for interpreting my comment as more thoughtful than the blunt stab at OOP I wrote.

</comment></comment></comment></comment><comment><USER17> An argument for tests. In a team (>3 developers) on a project that will have a lifespan (1+ years) where the cast of characters will change over time, tests provide continuity. The tests specify how functionality is meant to behave. Changes to code can be made with reduced worry about breaking existing functionality. When you're working in this kind of environment, you need to expand your horizon beyond your code and consider the needs of the team and the organization.

I wish I worked in language with a REPL that made it easier, but you work with what you have.

</comment><comment><USER18> I can completely understand there being disagreement about how to test code, how much testing is enough, when to write test (test driven vs write tests later), etc.

But what boggles my mind is we've got people in this very thread who, if I'm interpreting their comments correctly, are arguing _against_ doing _any_ testing at all! WTF? How, in any non-trivial codebase, are you going to prevent regression?

Does anyone here have any experience in another engineering discipline (civil, mechanical, electrical engineering, etc). Isn't some sort of testing an accepted part of the process?

Maybe I'm wrong, but this seems like a huge sign of the immaturity of the discipline of software development.

<comment><USER19> I may be reading things wrong, but I think people are arguing against _unit testing_ , which is the focus of TDD.

I hope people aren't arguing against integration testing. I agree with the original post that unit-testing can become onanistic fairly easily, but I think that that is a failure mode for just about any coding style (coding for the sake of coding vs testing for the sake of testing).

</comment></comment><comment><USER20> One discovery that kind of blew my mind a few months back was approvals. I've seen the entire bowling game kata done with a single test.

It's a bit different to code against a failing approval when doing TDD; you still code in very small increments, but you don't necessarily get to green immediately. Slightly disturbing if you feel somewhat obsessive about seeing the green bar.

Locking down legacy code is beautiful. There is a screencast where the guys who developed approvals lock down a battleship game, generating about 8000 lines of output, not even glancing at them, and then refactoring the hell out of it.

<http://approvaltests.sourceforge.net/>

</comment><comment><USER21> This revolution in software process actually comes to us from practices employed by a secret brotherhood of programmers who have been keeping them alive since the sixties at least.

These practices were called "hacking".

The Way of the Hacker is subtle indeed, yet obvious; and it is hence prone to being rediscovered from time to time by people outside the core discipline.

</comment><comment><USER22> I'm working on a project right now where I inherited a large functioning system that has no unit tests. As I'm making changes I'm adding some unit tests to prevent regression.

While I agree with the article that test cases are often overdone, I think that skipping test case implementation only works for those that have done enough design and implementation and learned where it should be skipped (e.g., where the only reasonable test case would just duplicate the implementation).

An important thing about TDD is that one is forced early to design the interfaces between components in such a way as to make testing possible. The test cases are less important than that the code is testable.

</comment><comment><USER23> Anyone who works in corporate style commercial software (or at least _good_ corporate style commercial software) will tell you they figured this out years ago.

Probably before even TDD made the rounds.

<comment><USER24> I don't understand, why only corporate style commercial software (which I guess I don't know what it is too :p

I thought the ones expected to already have this figured out are the awesome programmers, with more experience, the 10x more productive ones (which I do NOT include myself into). But why create this sub-group of "corporate style commercial"?

<comment><USER23> Well all I meant was the kind of dull, grey, software packages that corporations pay thousands for.

As opposed to indie programmers or "cutting edge" commercial stuff - (i.e. Fogcreek, 37signals etc.) for whom things like TDD and agile tend to be big buzzwords.

(oops I didnt fully answer your question: and the reason I singled it out is because all the TDD/agile stuff just passes that industry by - they've been using SCM for years, write unit tests and, well, just "get the job done" (tm))

<comment><USER25> Fogcreek is actually fairly anti-TDD, unless that's just Joel speaking.

</comment></comment></comment></comment><comment><USER26> How many tests would be made obsolete with basic aspect oriented programming? Oddly this has not really caught on in the Ruby community, probably because testing requires less thought and people are paid to write test code so why not just relax and write boilerplate CYA code and get paid for it.

The 80/20 rule applies to testing, but most people test things like basic ActiveRecord finders, etc. Why? Because writing a test of something complex requires a lot of thinking which hurts a bit.

In most apps, there is a "money work flow", such as signing someone up, taking an order, etc. If that stops working it's a really big deal. To adequately test it you probably need integration tests, but most devs don't bother to write that test because it's a pain and it fails a lot during development.

I think TDD is a bit of a cop out that can lead to an insufficiently specified API. If all it takes to make the test pass is to handle a narrow case of inputs, then you should feel no additional confidence just because the test passes.

Ideally running a test suite can tell you that the code is safe to deploy... Some tests can also speed up writing other code by making it easy to think through a problem with sample data.

If you are writing filler tests, useless tests, etc. just stop and figure out what is actually important.

If your unit tests take longer than 60 seconds you are probably doing it wrong.

</comment><comment><USER27> My use of tests is situational.

If I'm writing security-sensitive string parsing code that isn't going to change much, I'm going to write a thorough set of unit tests.

When I wrote database abstraction layer that ran on MySQL, PostgreSQL, Microsoft SQL Server and Oracle, I found that a good set of tests made the process of porting the system to a new database almost trivial.

Back when I was getting my PhD, I rewrote a simple-but-slow calculation to use a fast-but-complicated-as-hell algorithm, and I don't think it would have been possible (to get the right answer) if I hadn't used the simple code to create unit tests for the complicated code.

On the other hand, there are a lot of cases where I've written unit tests and they've become a liability over time; for instance, requirements would change, so I'd have to go back and maintain this collection of tests that, frankly, I didn't care about anymore.

</comment><comment><USER28> I fully accepted TDD at first, but now only implement certain principles that have helped me develop better software. I am not the type to implement needless code just for the sake of it. However, many times, unit testing have saved me from countless hours of debugging and introducing new bugs. I will admit, I am one of those developers that write code first, then unit test second. That's just my style, and it really does not matter if the end result is the same. More reliable, robust and less buggy software.

It takes a pragmatic developer to evaluate methodologies and patterns, utilizing the concepts that suites the job. Ultimately, mindless use of patterns and methodologies will not solve the problem.

<comment><USER29> I can't judge because I do the same, but I think part of the reason you're supposed to write the tests first is so that you aren't influenced by what you already wrote. Ie you test what's correct rather than testing the implementation.

</comment></comment><comment><USER30> We should make up an entirely new buzz-phrase for this. How about _Incremental Development_?

</comment><comment><USER31> I usually only write tests for more complex pieces of code. For simple code, tests look too much like a violation of DRY for my taste. I do realize that 'simple' can be subjective though.

</comment><comment><USER32> I used to really need my meds. Lately I've noticed that when I don't take my meds I'm don't hear the voices like I used to. So I'm just going to stop taking my meds because I'm healthy now.

</comment><comment><USER33> I do my unit test in asserts. Next.</comment>


Any advice for a first visit to the MIT? - <AUTHOR>

This is going to be my first visit to USA, and what I'd need is some advice for visiting MIT and maybe Harvard too in July, for a pair of days only. I'm interested in knowing those universities, to see the latest trend in tech research and to learn more about some of my current interests, on subjects like computer vision interfaces and robotics.
I've been developing games for years (I founded a local national game dev association, and my own game studio) and the last time I've been doing other more general tech projects (some of them about them anyway): including a computer vision interface for a game for Intel (which was used for advertising in a few countries), and a massive video chat system I'm still working in these days. A local university has given me a small funding for doing research on vision interfaces for health, but I couldn't yet start working on that. In the future, I'd like my career to shift completely to the applications of AI to industry, interfaces, search, data mining, etc, but I know I still need to learn a lot about it.
Is there any specific advice about what I should see, or who should I contact, or where I should go, that you could give me? (I already contacted some researchers from interesting projects there, but maybe you can point me to some specific advice I should really know.)
Please reply here, or if your reply contains any sensitive information, by mail to email@example.com (I'll be using that address only for this post, for a small time period).
Thanks a lot in advance! <comment><USER2> <http://boston.openguides.org/?Mary_Chung's> :) Be careful if you don't like spicy food, though.

That's my only _specific_ advice, since I know nothing about AI.

General advice: Get introduced to a grad student, and have them introduce you to other grad students, until you find one that can run down the list of professors and tell you how each one's research is _really_ going. In my experience, third or fourth-year grad students -- who often have friendly peers scattered throughout the university, who have spent much time comparing life in one research group to life in another, and who know where to find good beer at reasonable prices -- are the ones who are most likely to give you glimpses of the cold, hard facts, instead of merely a beautifully crafted line of funding-agency-ready marketing copy. If all you do is look at hallway posters and chat with profs, you won't learn anything that you can't learn from reading journal articles or attending a conference in your field.

If you're interested in applications of AI, consider trying to find some local companies (the letters "ITA" come to mind here... to say nothing of "iRobot") and asking them for "informational interviews". From the sound of your CV, companies might well be willing to have someone spend an hour talking to you, just on spec. Be prepared to detach them politely if they cling to your leg and beg you to join the technical staff.

<comment><AUTHOR> Thanks a lot for your pointers and ideas; they are indeed very useful! I'll look for such companies.

</comment></comment><comment><USER3> Did you already read this? I spent 12 years at MIT (4 as student, 8 as employee) and agree with the advice:

<http://web.mit.edu/visit/>

<comment><AUTHOR> Yes, I read the general advice, but I was looking for some specific details, if you think there could be anything that is useful other than what is mentioned on that page.

<comment><USER4> If you're really interested in seeing the latest research, you should email relevant professors ahead of time with your bio and ask them to set you up with a graduate student to talk about what they're doing.

<comment><AUTHOR> Thanks a lot; I didn't know that was the way that was done (asking for a meeting with a graduate student).

</comment></comment></comment></comment><comment><USER5> Harvard Initiative in Innovative Computing

<http://iic.harvard.edu/>

<comment><AUTHOR> Thank you! I didn't know that one!</comment></comment>


Book: Nightwork - A History of Hacks and Pranks at MIT - <AUTHOR> http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=9559

<comment><USER2> For a good resource on MIT hacks that you don't have to buy <http://hacks.mit.edu/>

I'll resist the temptation to link to one in particular...

</comment><comment><USER3> MIT hacks are very similar to what we call "canular" at the ENS (École normale supérieure) in France. The french word "canular" has actually been invented there using a false ethymology and has since become a regular french word everybody use without knowing it's origin.

</comment><comment><USER4> One of many things I admire MIT for is their hacker culture. I wish we have one at CMU- but the culture there is completely different. It's a damn shame.

</comment><comment><USER5> I first read this when I was 13, and what I learned about MIT's culture really stuck with me. Great book

</comment><comment><USER6> Just a got a free copy from the MIT enterprise forum. Looks like a nice book.</comment>


Turtles all the way down [2005] - <AUTHOR> http://www.cincomsmalltalk.com/userblogs/avi/blogView?showComments=true&entry=3284695382

<comment><USER2> Since then, PyPy (<http://pypy.org/>) has made Python to be "turtles all the way down" as well and proven that an efficient Python implementation can be built that way.

<comment><AUTHOR> And ruby is working its way down with Rubinius. But I like to think of this article as a more general Language design thinking, rather than just a Python, Ruby or Smalltalk thing.</comment></comment>


A fruit vendor's struggle to build a school for the village children (2012) - happy-go-lucky https://www.bbc.com/news/world-asia-india-20043751 <comment><AUTHOR> This kind of story is so incredibly different from the world I'm living in. It demonstrates to me that on many levels I have no idea at all of how Indian society works.

</comment><comment> happy-go-lucky "In 2020, he was awarded the Padmashri, India's fourth-highest civilian award, for his commendable initiative."

[https://en.m.wikipedia.org/wiki/Harekala_Hajabba](https://en.m.wikipedia.org/wiki/Harekala_Hajabba)</comment>


4 Wordpress sites, 1 server – great performance on Digital Ocean with Nginx - <AUTHOR> http://lukespear.co.uk/2014/02/4-wordpress-sites-1-server-great-performance-on-digital-ocean-using-nginx-and-caching/ <comment><USER2> Sometime last year I was on HostGator's VPS and WP Engine for several different sites. I was paying around $150 a month. HostGator started to shut me down for using too many resources and I was going way over the limit with WP Engine's 100k limit. I was fed up so I looked into Digital Ocean. I knew a bit server management but never really wanted to deal with it. I just wanted to produce content and make apps.

I purchased the $40/m plan on DO and started to move my sites over. In the process I learned a whole lot about configuring my own server. I got a pretty impressive setup going now and monitor it on New Relic. It really only took me a few weeks to learn everything and get all my sites stable. It's been several months now and have had to hardly ever login to my server to touch anything. Initially I was worried that I'd have to manage my sites and it'd suck up some of my time but really I'm actually saving time because I don't have to deal with HostGator or going over the limit with WP Engine. I'm saving $110 a month, I learned a whole lot in the process, and it really did not take much time to learn nor is it much of a maintenance at all to run.

<comment><AUTHOR> Seems like a lot of folks in this transition at the moment. It'd be great to take a poll.

I wonder if a low-cost provider will offer the one-click installs we all came to appreciate with decent shared hosts, along with a decent back-up system.

<comment><USER3> DO has a one-click Ubuntu/worpress install that gets a WP site up and running in about two minutes.

<comment><AUTHOR> You're right, but I suppose we move over to VPS partly for performance/control, so an Nginx setup with swap memory and tuned MySQL would be nice in a one-click.

</comment></comment></comment></comment><comment><USER4> A few years ago, I was running a bunch of WordPress sites on a FreeBSD 8 VPS with only a single-core and 768 MB of RAM. I'm not sure who linked to it first but a page on one of the sites ended up getting linked to by Reddit, The Atlantic, Gizmodo, and I forget who else.

Fortunately, I was running nginx and one of the WordPress caching plugins (W3 Super Cache or W3 Total Cache, I forget which) and had spent a fair amount of time trying to tune the whole setup.

The VPS managed to serve ~200k visitors over a period of a few hours without any issues whatsoever. I was pretty amazed since this particular page has a _LOT_ of images (Pingdom's Website test for the page reports 158 requests and 1.4 MB in size).

Nowadays, I run nginx and varnish on a physical server with four 2.2 GHz cores and 16 GB of RAM. It definitely doesn't have any problems keeping up. After the snapchatdb.info site got shut down by their provider, I hosted it for them and served up ~30 TB over a few days.

<comment><AUTHOR> That's very impressive work, cheers for sharing.

</comment></comment><comment><USER5> My issue with the post: it doesn't actually go into how it is serving up dynamic content. Sure, Nginx is used as the front-end webserver, but PHP still needs to be executed. The popular ways I've seen are either Apache (with a very small max child process count), or php-fpm.

Also, it's pretty well known that Wordpress is a dog in its standard configuration. Using some sort of caching mechanism is required if you have any kind of traffic to the site (some like W3 Total Cache).

While there are fun benchmarking services like the blitz.io and LoadImpact.com, you can normally get a pretty good feel for how your site will do under a load using "ab" (apache benchmark) from your local machine. This will at least let you test dynamically generated pages to make sure caching is working properly. Plus using some like Google PageSpeed to verify browser caching is properly being enabled by your webserver.

<comment><AUTHOR> It's php-fpm, kyrra. Those processes are somewhat more resource-intensive! I've tried to reduce php calls with the caching, plugin minimalism etc. Thanks for the ab tip.

<comment><USER5> If you want to get even a little more performance out of it, look into PHP APC (alternative PHP cache). You can configure W3 Total Cache (or similar plugins) to store their cached files within APC (which will be in-memory). Though, since the cache files on disk will be already cached in memory, this may not be all that much faster.

APC is a nice alternative to dealing with something like memcache (since you are working on a smaller scale).

<comment><USER6> And if you want even more performance, try replacing php-fpm with HHVM.

</comment></comment></comment></comment><comment><USER3> I moved from AWS to DO and find the price performance much better for my WP sites. Whatever you do don't say that DO is better that AWS on HN or you will lose karma points from grumpy AWS admins. Of course AWS has better security and many more features but for many uses it's simply too slow and too expensive. Plus when is AWS going to make a GUI for its scaling tools?

<comment><USER7> FWIW, one of the startups I'm CTO at is on DO now and looking to move off due to cost. DO is _great_ for ultra cheap servers, but the cost of bigger servers is high (especially for non-dedicated hardware). Bandwidth is also expensive at DO, and I'm a bit concerned about the quality of that bandwidth, too.

We're moving to OVH and their "infrastructure" line. We get a true VLAN, and the overall cost is ~1/3 of what DO charges for the same compute, RAM and bandwidth. Plus we get dedicated hardware, and 2x3TB hard drives in addition to the SSDs we're adding ($7/month extra). The plan is to use the hard drives to offload our current usage of S3, which'll save another $100K or so annually.

I also suspect OVH has "better" bandwidth than DO—more POPs, backbone providers, etc. I actually really like how they're doing things over their now. In the past, it seemed much more complicated, but their current lineup is substantially easier than AWS to understand and price out. It doesn't seem "gimmicky" at all, at least at the high end.

<comment><USER8> cloud hosting is cheaper on smaller capacities/cpu's/ram. but as your demands increase it makes sense from the point of view of costs to go on dedicated hardware.

</comment></comment></comment><comment><USER9> It has been quite easy for a few years now to put together your own setup on a VPS and run with it. IIRC, I started doing this somewhere around 2008, during the heydays of Slicehost. What has changed is that you now get pretty good and reliable VPS providers for cheap and in some ways it has kind of become a cool thing to do for everyone.

I would, though, add a few words of caution here.

1\. It is one thing to put together a VPS to run a bunch of sites. It is another to handle major traffic on it. Some of you have done it, some of you will learn with time how to do it, but a large number won't. If it is critical for your site to be up 24/7 and Google is going to be your best friend in trying to understand which part of the stack is creating the bottleneck, you'll be in for some real trouble.

2\. Do you know how to check for rootkits? Would you know if your server has been backdoored? These days attack vectors are so complex that even experienced hands (the main reason why I don't do this on my own anymore) have trouble saying for sure they are fully locked down. Wordpress on a public static IP represents one of the juiciest targets on the web for hackers and a big chunk of the phishing sites are hosted on servers with unpatched Wordpress installations or plugins/themes that have backdoors in them. Most of the site owners have no clue they've been owned till the hosting company takes them down. Please don't wind up being one of those site owners.

If you are going to do this own your own, at least get something like Wordfence installed, so that you have some degree of protection in place.

I run most of my sites these days on Webfaction. I believe they run Cloudlinux these days, which means you get pretty consistent performance from the server, even in the shared hosting environment. The sites with greater resource requirements are moved to Wiredtree, who provide beefier, managed VPS services at reasonable rates as long as you are OK with cPanel and don't veer too much from their standard stack.

Disclosure: I have no business links with Webfaction or Wiredtree.

<comment><AUTHOR> This is definitely cause for anxiety, and a learning curve in itself.

At my end I try to keep things patched, check the listening ports and run Tripwire, rkhunter etc.

Cheers for the Wordfence tip, I'll take a look.

</comment></comment><comment><USER10> I run about 15 Wordpress sites on the cheapest Linode package, using nginx and php-fpm.

Of course, all of these are very low traffic sites.

There was definitely a learning curve, especially with nginx and Wordpress. I'm much more of a web developer than a server admin, but once everything got up and running, there's very, very little in terms of day to day maintenance.

I used to be on a shared host but also ran into issues with memory and general downtime. Not to mention there is something liberating about having your own (virtual) box.

<comment><AUTHOR> Yes, a strange and perhaps odd liberating feeling is there. Also slight terror about you yourself being nearly fully accountable for any backups, downtime or losses.

Linode have great hardware, too. I can see how 15 sites would be possible. It's pretty incredible, really. As mentioned elsewhere, if only Wordpress could run on sqlite, trending towards less resources rather than more...

</comment></comment><comment><USER11> Similar experience here. I set up nginx, php-fpm, php-apc, W3 total cache, and put it all behind cloudflare. I have no problem running this on 256MB RAM servers. I just wish wordpress would support sqlite natively, then I wouldn't need all the mysql overhead.

<comment><AUTHOR> Good call - trending towards less resources, a more optimized experience over less bloat would be an ideal direction for 'our' market.

</comment></comment><comment><USER12> Right now I'm loving DO as a cheap place to run random experiments and host a few files and services for a small group of friends. (things like mumble, or a small starboud server, testing steam on linux, and using it as my IRC portal via irssi to provide an additional layer of seperation in combination with a vpn (giganews)

My main personal website is on dreamhost, and I have been using them since about 06, and they are great for simple domain controls, but I really like DO because I like having root, and having snapshots if I jack something up.

</comment><comment><USER13> It is shocking how similar this setup is to mine (I use INIZ, run multiples sites, cron job backup to an RPi every hour). Really awesome to read about someone unplugging from managed hosting and surviving.

I personally like to be involved as far down the stack as I can get (to gain some experience) -- great read. Also, I recommend INIZ, they're pretty cheap (~9GBP/month), and offer pretty stable service.

<comment><AUTHOR> Looks like we have the same mindset - appreciate hearing from the like-minded. We could quite easily drop our sites on a managed host... but where's the fun in that?

This level of control and xp points gained can't be had elsewhere, at least not at an affordable monthly price.

</comment></comment><comment><USER14> How complicated of a config are we talking here? Did you spend like 2 weeks hunting around for a correct Nginx + WordPress config or was it more like "apt-get install nginx php5" ?

I think Wordpress is big and bloated, but it sure is easy to use.

Further, the real resource jump comes from 0 to 1 Wordpress sites. 1 to 4 is simply the overhead of handling connections. No new Apache or mysql processes are needed...

</comment><comment><USER15> I'd have loved to read about your setup in detail, so that I can set up bitehype.com similarly. Care to share?

<comment><AUTHOR> Sure, it's a little more involved than I can type up in a comment, but I can point you in the direction of a few resources I used by email? I see it's in your profile, if that's OK.

<comment><USER16> Why not another blog post ?

<comment><AUTHOR> I suppose it wouldn't hurt to document it, if there's some interest. I mainly DDG'd and man-paged my way through, but I'll share the resources etc. and link to it here when done.

<comment><AUTHOR> It's up now. Have emailed those with addresses in their profiles.

Over here: [https://news.ycombinator.com/item?id=7238107](https://news.ycombinator.com/item?id=7238107)

</comment></comment></comment></comment></comment><comment><USER17> I have 2 wordpress sites on a DO 5$ instance. I had 1-10 visitors a day on the sites and had no problems. The setup is nginx +php5-fpm + w3 super cache + cloudflare I starter getting about 300 visitors a day for one site and i have noticed the site sometimes was showing blank pages. I was also getting timeout from cloudflare, and the site was moving very slow. Tried to disable the cache plugin but it was the same.

I have upgraded to the 10$ instance, and still could barely navigate in the wp admin area..

This took 2-3 days, now the site looks to be ok (traffic has dropped to 150 day), i think it was a memory issue with their server..

Also if i do a : ab -n 500 -c 200 [http://site.com](http://site.com) from another server my site stops working..

<comment><USER18> Are you using APC +/or memcached?

<comment><USER17> I have APC

<comment><USER18> The object-cache (with APC or MEM) seems to take a decent load off of my droplet. One of the sites doesn't seem to work with the OC, and it is notably slower than the others.

</comment></comment></comment></comment><comment><USER19> I was thinking about deploying some Wordpress installations using Docker. Can anyone recommend a good recipe or ideas to use Docker to deploy different wordpress installs on a VPS like DigitalOcean?

</comment><comment><USER20> Since no actual configs were posted. I wrote up how I setup my server (which serves a wordpress site along with a custom site) to reverse proxy and cache. There's nginx reverse proxying to my apache server.

full config and details are all here. Not sure since this post really doesn't actually share much, but I think my performance was a lot better.

[http://reviewsignal.com/blog/2013/08/29/reverse-proxy-and- ca...](http://reviewsignal.com/blog/2013/08/29/reverse-proxy-and-cache-server- with-nginx/)

<comment><AUTHOR> That definitely does perform better. My blitz tests fell off quite quickly after around 130 concurrent users, so I'm sure there's room for further improvement. But the site _did_ just stay up after being on the front page for a good 2 hours, so I'm satisfied that the arrangement is sufficient for my basic purposes.

You didn't mention your server spec, or confirm that your site is dynamic/Wordpress and not static?

</comment></comment><comment><USER21> What's the maintenance/difficulty trade-off for DO vs. something standard like Dreamhost?

<comment><USER22> Why is Dreamhost considered standard?

<comment><USER23> Reading through /r/wordpress it seems a lot of users use Dreamhost, HostGator and the like.

</comment></comment></comment><comment><USER24> What are the specs of your Droplet?

<comment><AUTHOR> I optimized the sites on the 512MB droplet for a few weeks (mysqltuner, nginx configs, plugin selection) and then recently stepped up to the 1GB RAM. The admin pages were chugging a little, especially with commerce plugins in the mix.

<comment><USER18> I did the same with about 5 WP sites and another 5 custom sites running on DO at 512 (it's now on 2gb). One of the custom sites gets about 15,000 pageviews per day, and APC with memcache seem to handle WP on Apache fairly well for now. If you document your setup I would be interested; I tried to get nginx running on another droplet but lost patience. I'm sure I could have done it, but it was lower on the list ;)

* It made sense traffic/memory wise to go to 2gb, but all of the sites are 'behind' cloudflare and that seems to help a lot as the server rarely starts breathing hard...

<comment><USER25> 15,000 pageviews per day == just 10-20 views per minute. Very low load actually.

<comment><USER18> Yeah, most of these happen during a small window when Latin America is in school.

In any case it is a small load, but we moved from a shared host setup where we had these old sites sitting and they were beginning to bring down the server. They weren't into installing APC or Memcached; we were able to handle the traffic on the 512mb server using Apache, Cloudflare, APC and Memcached and the sites are faster (also using Google's pagespeed module). I've upped the server memory now, mostly because the WP admin is slow and the cost is still much less than we were paying before...</comment></comment></comment></comment></comment>


Ask HN: R&D jobs? - <AUTHOR>

I've been a dev for about 8 years now.
I did some cool work (low-level, RE, R&D, etc) for a government contractor, but eventually burned out and had to leave. Started freelancing and have been moderately successful at it, but I'm not very excited by web development, particularly the pop engineering mindset that seems to pervade it. (The web always feels like a second-best delivery mechanism, too.)
I want to work on technical problems in an R&D setting, eventually building a product and delivering it. The research aspect is vital! A few examples: improving tooling for developers, such as compilers, runtimes, languages, and such. How do I move towards these positions?
My ideal position would be in MS/Google Research, but they want PhDs. <comment><USER2> You could try for a research assistant position in the local universities. These are usually early stage commercialisation that need people to program up the proof of concept or whatever.

Also places such as yahoo research look for programmers to help out the researchers so check that out.</comment>


AIXIjs: A Software Demo for General Reinforcement Learning - <AUTHOR> http://aslanides.io/aixijs/demo.html <comment><AUTHOR> Paper: [https://arxiv.org/abs/1705.07615](https://arxiv.org/abs/1705.07615) Repo: [https://github.com/aslanides/aixijs](https://github.com/aslanides/aixijs)</comment>