20 Free and Fresh Icon Sets - <AUTHOR> http://www.smashingmagazine.com/2007/08/25/20-free-and-fresh-icon-sets/ I'm not 100% sure of the license for some of these icon sets, so buyer beware! <comment><AUTHOR> I'm not completely sure of the license on some of these sets, so you'd be best off sending an email to the author before using anything in a commercial environment.</comment>


GoDaddy supports SOPA? - <AUTHOR> http://gizmodo.com/5870241?posting_with_new_info <comment><USER2> Oh the rage. Time to move my accounts off of GoDaddy. Any suggestions on where I should take my business to?</comment>


DiBona: Google will hire two Android coders to work with kernel.org - <AUTHOR> http://blogs.zdnet.com/open-source/?p=6274

<comment><USER2> For some background,

One of the main sticking points is Google's wakelocks mechanism, which the kernel folks don't consider appropriate, but coming up with a useful replacement has stalled (esp. since a decent number of kernel.org folks think existing functionality is sufficient, which Google disagrees with). Here's two posts from last February on that: <http://lwn.net/Articles/318611/> , <http://lwn.net/Articles/319860/>

In February this year, the Android drivers in the staging tree were removed, because there was no real progress on merging them, mainly again due to wakelocks and a few other issues: the drivers use wakelocks, and the mainline kernel has no interest in merging that framework as is; a mutually acceptable replacement for them hasn't emerged, so the drivers can't be merged either: [http://www.theregister.co.uk/2010/02/03/android_driver_code_...](http://www.theregister.co.uk/2010/02/03/android_driver_code_deleted_from_linux_kernel/)

DiBona's view on it at that time was rather less conciliatory, essentially that kernel.org doesn't care about mobile platforms, so there's no point in dealing with them, which spawned a bit of a flamewar: <http://lwn.net/Articles/372568/>

<comment><USER3> I think DiBona's position was and is eminently reasonable. As I understand things, the Android team tried to upstream wakelocks, and the kernel maintainers basically said no, but without any proposal for something better.

To my mind, that's begging for a fork. If it were _me_ getting that kind of feedback on a patch, it either means the functionality from the patch is completely unwelcome or that I'm supposed to guess the maintainer's mind on things. I've had this happen with patches, and I've had to call out a maintainer as being unreasonable in this regard. It was ugly, and I don't think I'd bother again, I'd just maintain and ship a patched version.

Disclaimer: I work for Google, and enjoy spending time with Chris. His office makes my job more fun.

<comment><USER2> I can see some of both sides. From the kernel developers' perspective, wakelocks solve a special-case problem: they only work on systems where frequent suspend/resume is possible (e.g. ARM/SoC style devices), have tight kernel/app integration, and accepting them means basically forking the power- management support within the kernel, with one system for Android-style devices, and another system for everyone else. They'd prefer a more unified power-management API, but solving that problem in a way that works for everyone is a lot harder. AFAICT, nobody on either side has put much effort into solving that general API problem. Not sure who to blame for that, but in theory, the maintainers of the current power-management API could've put forth a counter-proposal for how to accommodate Android's concerns in their framework; or Google could've put forth a revised proposal for how to merge wakelocks-like functionality with the existing power-management API.

Some of it might just be a mismatch between how the kernel process works and how Google usually does things. The convention is that when you submit an API- changing patch upstream, you're proposing: I think _all users of Linux_ should have this new API, and you have to be prepared to defend the API design, modify it in response to criticism or concerns, etc. Ideally, you're supposed to get feedback from other potential users before you actually write the code, as opposed to designing everything unilaterally and presenting it as a done deal. From what I can tell, Google's approach was just a one-off: here's what we propose, and btw we already shipped it. Basically, skipped the step where they were supposed to first propose it and ask for feedback.

An approach that might've gotten more positive results would be, before sending off the patch, send a short design proposal with something like: "Hey, for our needs we're thinking of the following API, because [explain why existing APIs are insufficient], and [explain rationale and use cases for this one]. What do people think?"

</comment></comment></comment><comment><USER4> Actually, I don't think I said this exactly. I think I said "We are hiring." We have way more than 2 reqs for android and non-android related kernel work. I think I might have said that I can see hiring a few people just to do kernel pushes.

</comment><comment><USER5> I wonder how many Android kernel coders Google has now; this may put a number on the cost of getting your code upstream.</comment>


Building Docker files from scratch using DJB's "redo" - <AUTHOR> https://redo.readthedocs.io/en/latest/cookbook/container/ <comment><USER2> I really, really like the ideas redo is built on. Its only real limitation seems to be that it is sort of a poor fit to building on/for windos. But with WSL, does that actually matter anymore?

It had an early difficulty with the notion of separate source and build trees, but I think that was resolved some time ago.</comment>


Yahoo Board To Reject Microsoft Offer - <AUTHOR> http://online.wsj.com/article/SB120257515426256541.html <comment><USER3> From the reason they quoted ("the $31 per share offer massively undervalues Yahoo!"), my guess is that this 'rejection' is just the first play in a dance over the price, which I'm sure Microsoft was prepared for, even if it bid high initially in an attempt to appear the White Knight.

If Yahoo!'s board really did not want to sell, it would have cited lack of benefits to the merger, culture differences, or technology platform differences, which are all real concerns.

Their risk is that if they ask too much, then Microsoft will slink away, which will probably crush their share price for a while. Hopefully some people had options that they could excercise under the recent 40% jump in Yahoo!'s shares, although considering it's decline in the last year, even that seems unlikely.

<comment><USER4> Husband of a friend works in management over at Yahoo. She says the word is around the water cooler, that Yahoo's looking for around $36 a share, and then will sell.

Sounds like morale is pretty low, and sound like there's going to be a lot of engineers looking for new jobs soon. Or, a lot more startups rising for Yahoo's ashes.

<comment><USER5> If I were him, I would have been hoping they'd accept the first offer. There's a pretty good chance now that MS isn't going to go any higher (especially given what's happened to their stock since the bid became public news) and his shares are going to spiral into the abyss.

</comment></comment></comment><comment><USER6> "Massively Undervalues" huh...

Let's see, a stock price of under $20/share previous to the $31/share offer being made. A greater than 50% premium is massively undervaluing the company?

Granted the market is not a perfect indicator of true value of a company. Google was a good example of this when they were valued at around $100/share and then proceeded to quadruple in value over the next 2 years.

However, Yahoo is no Google. They have not been able to effectively compete. I'm surprised Microsoft was willing to offer such a premium for Yahoo in the first place. Maybe I underestimate the synergies of the two companies and/or Microsoft's concern about their online division.

The interesting question to me is what comes next...Does Microsoft: A. Sweeten the offer B. Walk away completely C. Give it a year expecting Yahoo's price to drop significantly before making a subsequent offer?

Unless the Yahoo boardmembers have some plan up their sleeves, I expect some very unhappy shareholders should B or C pan out.

<comment><USER7> "Massively undervalues" is a way of Yahoo saying "We think our share price should be higher than A: what it is, and B: what you're offering."

Yahoo is undoubtedly going through a rough time in terms of their share price, but what's being forgotten is past performance. Since the beginning of 2007 Yahoo's share price has averaged around $25 or so, with a low of $22.73 and a high of $33.63. The pre-bid low this year was $19.05, and was probably due to the fact that the majority of the industry was taking a beating, along with the rest of the economy.

When companies offer takeovers, they usually pay a premium in share price, however Microsoft took advantage of the state of the economy by offering a takeover at a particularly low point in share price, allowing them to offer an artificial premium that was - when compared to YHOO average share price - <USER2> only a $5 premium, or 20%.

<comment><USER6> Average share price over the last year is meaningless. Yes, the economy in general was taking a beating, but Yahoo had also come out with disappointing earning and outlook. At any given time, the market does a pretty good job at pricing in all factors to a stock's price.

If the economy as a whole is having problems and a company is at risk of lower earnings, the stock is clearly worth less. Over the longer term, if a company is able to get over those hurdles and achieve the earnings they desire, their value will again rise.

Would you argue that if a company tried to buy Citibank at $40/share that they were trying to take advantage of things? Its current price is $26/share but it was above $45 for the majority of the year. Citi, similar to Yahoo has had significant difficulties that reflect on the potential future earnings of the company. Therefore, these companies are likely fairly valued.

As a result, the Yahoo line that they are "massively undervalued" rings false to me. They have turned down a tremendous premium over their value...Unless they have other courses of action to raise their earnings significantly or they have other offers. My best guess is they are just negotiating and trying to get Microsoft to offer a few more $/share.

<comment><USER7> It's just the business cycle. The economy at whole is having problems and the company is at risk of lower earnings, as you said. This is temporary. The economy will recover, and Yahoo is probably expecting their stock to rise again to closer to their average. Yahoo is probably telling Microsoft that the premium they are offering does not reflect their true value, but an artificially low value instead. Come back later when our stock rebounds with the rest of the economy.

I'm saying that Yahoo is currently down right now, and understandably so, but that it is set to rise with the rest of the economy and Yahoo wants Microsoft to reflect that in their offer.

I believe that there is validity in the claim "massively undervalued" though the term "massively" is subject to different interpretations.

</comment></comment></comment></comment><comment><USER8> Visual proof that this would be a poor move for microsoft, at least according to investors. [http://finance.google.com/finance?chdnp=1&chdd=1&chd...](http://finance.google.com/finance?chdnp=1&chdd=1&chds=1&chdv=1&chvs=maximized&chdeh=0&chfdeh=0&chdet=1202593904000&chddm=98141&cmpto=NASDAQ:MSFT&q=NASDAQ:YHOO)

<comment><USER9> MS stock took a hit because part of the deal involved a 7% dilution in MS shares. That type of hit was expected.

</comment></comment><comment><USER10> If $29 per share massively undervalues Yahoo, wouldn't Yahoo have spent the last two years buying back huge amounts of its own stock?

<comment><USER11> Requires cash :(

<comment><USER12> Perhaps a private equity firm would have stepped in if this was really the case. And if Yahoo knows something its shareholders don't (as to why it is massively undervalued) it better speak up soon.

</comment></comment></comment><comment><USER8> "the $31 per share offer "massively undervalues" Yahoo,"

Now I'm no mathematician, but when microsoft made that offer, I believe their stock closed at 19.10, which I _believe_ is significantly less than $31. The mere offer from microsoft caused their value to jump 50% in a day. Monday might be ugly for YHOO owners.

<comment><USER13> This is normal in a a takeover situation.

The reason being that a company that you control is worth a lot more than a bunch of shares that pay you dividend, but offer you little or no control over the company.

The pundits know this and drive up the price, expecting to make a profit when Microsoft buys them out.

<comment><USER14> Shares offer proportional votes.

</comment></comment></comment><comment><USER15> Well even though this is a normal takeover situation. The price Yahoo is going to be asking will most likely be above 60 Billion. I think that might be too much gable for MS. I am sure Microsoft made the offer with levy for a much higher demanding offer. The question is how much levy.

</comment><comment><USER16> Heh, Google's stocks are moving <http://finance.google.com/finance?q=NASDAQ:GOOG>

</comment><comment><USER16> I hope this definitively kills Micro$oft.

<comment><USER17> I very highly doubt that.

<comment><USER18> Yeah thats not exactly possible. I do wonder, however, what this effectively does to Yahoo's stock price.

<comment><USER13> see for yourself

<http://finance.google.com/finance?q=yahoo>

<comment><USER19> What this stock price says to me is that investors are betting that this story, even if it's correct, is not the last word, and that Microsoft (or someone) will eventually get them.

<comment><USER18> Is it possible though, that the stock prices went up as a sign of investor relief? I'm not sure all stockholders were too happy with the deal.

<comment><USER11> If Yahoo! does reject the offer, their stock price should, were the market completely rational, _fall_ a lot. Back to what it was before Microsoft made the offer in the first place.

Yahoo's the same company it was two weeks ago; the stock was just worth more since MS was offering a premium.

<comment><USER20> The other possibility is that investors are not completely rational.

Yahoo is the same company it was in November; the stock is just worth what it was then. It's the last 3 months that's been the aberration. ;-)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> There are some pretty good comments about the deal over at slashdot.

<http://slashdot.org/article.pl?sid=08/02/09/1812239>

</comment><comment><USER21> Yahoo stock is trading around $29 a share, yet Yahoo's board say that Microsoft's offer of $31 a share "massively undervalues" the company?

<comment><USER22> Sure, that is quite plausible. The current market capitalization / stock price of a company is not the final word on a company's value. Whether it is _true_ or not is another question, but it is certainly possible that Yahoo is undervalued by the MSFT offer.

<comment><USER14> That's YHOO's price after the offer was made, before that the price was below $20.</comment></comment></comment>


Rules for living in the total surveillance state - <AUTHOR> http://uncrunched.com/2013/06/10/rules-for-living-in-the-total-surveillance-state/

<comment><USER2> There us another way: support everything, friend with everyone, produce a lot of information that will cause a lot of headache for the investigators. Leprechaun policy: [http://www.sacred- texts.com/neu/celt/tfm/tfm133.htm](http://www.sacred- texts.com/neu/celt/tfm/tfm133.htm)</comment>


NASA wants your help with a simulated lunar mission - <AUTHOR> http://ti.arc.nasa.gov/desertrats/vote

<comment><AUTHOR> More information about the Desert RATS project: <http://www.nasa.gov/exploration/analogs/desert_rats.html></comment>


I shared his post at HN and he landed a job on Zendesk - <AUTHOR> http://www.rodrigogalindez.com/archivos/working-for-zendesk/

<comment><USER2> It's interesting how negative were comments on the original post about the redesign. HN can be very tough crowd to please :)

<comment><USER3> [this is gonna sound a bit meta and weird, but bear with me]

Not everyone gets it.

If you have advanced knowledge and expertise in a certain field of study, or even just a knack for it as a layman, you could be speaking Truth about it, your every word advancing the field and breaking new ground, but you will never be heard or understood by the majority. Every field of specialization has this mass of rote practitioners, text-book bureaucrats who perceive it only as it's taught, as it exists, and can not visualize it further than its current state.

Let me repeat that again: for every field of art, science, work, study, etc. the great majority of its practitioners can not see the future of their craft, all their mind can conceive is how things are _NOW_. If they could see past today, they would invent the future.

That's why if you're lucky enough to be "peerless"; when you're least understood by everyone (and I don't mean in an emotional "kumbaya" sense, but as in research) when your Idea has no google hits, when you can't find a reference text, a conference, or a consortium addressing your questions .. it's those times when you need to take a deep breath and ask yourself: Am I batshit insane, stupid, or do I have a genuinely novel idea?

A good metric is when you have _few_ peers. The more prominent they're, and noted for their smarts, the better. If you find yourself corresponding with the primary sources of a new art, or science, or a new field of mathematics, you know you're breaking new ground.

So, just because a bunch of people shoot your idea down doesn't necessarily mean it's bad. It might be that you're talking _above_ the masses, and addressing only a select few specialists, perhaps in a highly adapted "domain- specific language" (the exact terminology might be different, specially if you're a bright layman; but you mourn just the same, your shared agonizing pain, and you're understood, at least for now, by just by a handful few.)

[I said this was gonna be meta]

<comment><USER4> You had me nodding my head.

I am constantly frustrated by being "peerless" in terms of interaction design. When I talk about how things are broken, I get blank stares. People rabidly defend the status quo. Most interaction designers are button-twiddlers.

What keeps me sane is A) knowing that there are a few people out there, even if I don't talk to them, who must be on the same page. I use their software and it doesn't make me want to puke.

And B) I have a group of friends who understand me. None of them are interaction designers or even heavily invested into creating software (with the exception of my equally crazy husband), however.

I think this actually helps them get me, because they're not chockful of preconceived notions. I can tell them, "Imagine if you could..." and they go "Yeah! And what if...?" -- my friends who are more nerdy, about either ui or code, go "But x already does y." (Which isn't even remotely what I was talking about.)

It's like the people who are actually in my field(s) think in terms of Concrete Nouns and merely use those Nouns Concrete in various recombinated forms, so if you try to come up with something that doesn't already exist, their brains break, and they barf out "But, ...".

Pardon the self-absorbed rant, but the downside to this is that not only am I lacking good outlets for discussing and growing my ideas, I'm lacking good outlets for smart constructive criticism. And I miss that.

</comment></comment></comment><comment><AUTHOR> Just in case somebody doubts the amazing community HN is, I posted Rodrigo's twitter proposal last week and now he has a job at Zendesk.

<comment><USER5> Can you add a link to your original posting?

<comment><USER6> This is the original post: <http://news.ycombinator.com/item?id=1752256>

Oh, and thanks Sosa!

</comment></comment></comment><comment><USER7> Very cool story, but how can you hire someone from Argentina so quickly? Does the US have a special visa setup with them or something?

<comment><USER8> "Plus, the dream is completed by being offered to flight to Zendesk headquarters in San Francisco for a couple of days." - sounds to me like he will be working remotely.

<comment><USER7> Ahh, for some reason I interpreted that as being for an interview of sorts. It didn't even occur to me that he could be working remotely. I must be more old- school than I imagined ;-)

</comment></comment></comment><comment><USER9> truly a great story and a great company. Congrats and keep up the blog posts!

</comment><comment><USER10> HN, hands down the best community on the web.

</comment><comment><USER11> Congratulations!</comment>


Apply HN: Eva, an AI Chatbot to 'Make Banking Great Again' - <AUTHOR> Wanted to introduce you to Eva, an AI chatbot that  aims to 'Make Banking Great Again!.'
Here's the website:  https://talktoeva.com
Eva is an AI chatbot that we have built to make it easier for people to understand banking products. So, kind of like 'Siri' for finance.
Problem: The problem we're solving is that its just impossible to understand the stuff thats written on banks websites.
Banks use complex terms, thick language and jargon that only they get. And this keeps a lot of people away from buying their products. This is just a guess, but we think that if people actually understood how bank products worked, they might actually buy a LOT more of them! Because if you understand something, you trust it more (or less, in some rare cases I guess).
Solution: We solve this problem through our Ai chatbot, which explains stuff just as a human would. The chatbot can be used for 3 things:  1. getting information (find me the best mortgage, for example), 2. understanding stuff (whats an APR? explain it to me), or 3. getting jokes (tell me a joke!).
The Team: there are 2 of us, me, I'm a Harvard College graduate who moved to the UK from the US a few years back. I've spent 10 years in financial services (corporate banking, M&A, and then as an investor in banks). My co-founder, Steve, is just finishing up at Imperial College and he has built the prototype (he actually built his own natural language processor).
Although we are planning to launch this as a standalone app (thereby being able to generate revenues through affiliate fees), we think there could be a bigger opportunity to become the de facto 'chatbot' that lives on every banking website.
Why YC: We've been working on this about 6 months now.. YC would be great for us as we feel we could benefit form learning from the experiences of people who have built successful startups, and also just from the money, which would allow us to do this full time. <comment><USER2> How is this an advantage over a person actually going into a branch and talking with a banker?

<comment><AUTHOR> Its much easier than going to a branch. No one goes to branches any more because its such a waste of time.

<comment><USER3> That's an overly blanket statement. Contact need depends on transaction: For common needs like withdrawals and statement reviews, most find ATMs and online banking convenient. But for occasional needs like loans and mortgages, many want to speak with someone in person or by phone, often using a combination of both, even when they understand the info on bank websites.</comment></comment></comment>


Do Something Meaningful - Coding for the World - <AUTHOR> http://williamedwardscoder.tumblr.com/post/18917120117/coding-for-the-world

<comment><USER2> Have you checked out Random Hacks of Kindness? (<http://rhok.org>) I had similar ideas with a project of mine 6 or so months ago and built a version/part of my idea at a startup weekend (<https://github.com/bglusman/diffapp>) before I knew about RHoK... I'd still like to do more with the idea, and am starting something hoping to help scientific research in the next few days with Mendicant University, but there are real coordination and management/leadership challenges I think... I had some ideas on how to work on them with my app, but I think it's easy to underestimate the problems.

Oh, also relevant is <http://codeforamerica.org>

<comment><USER3> rhok are fantastic, they have international meet-ups for coding weekends on specific problems. highly recommended if you want to give some time without making a long-term commitment.

</comment></comment><comment><USER4> I volunteer at a non-profit called Crossroads, in Hong Kong (<http://crossroads.org.hk/>). I'm a Ruby on Rails programmer.

Our software department runs a website called 'Global Hand' (<http://globalhand.org/en>), which is a matching service between businesses who want to donate goods, and charities who need them. We created a similar service for the UN, that matches business resources with needs from UN organisations (<http://business.un.org/en>).

We _really_ do need more help. Please email [firstname.lastname@example.com] if you have any Ruby on Rails or design skills and would like to donate some of your time.

</comment><comment><USER5> I think it is funny that the author suggests programmers should use their hobby time to work on something actually meaningful. I feel like he discounted billing systems and ecommerce in the process.

I have no problem with programmers working on other meaningful things during their spare time if they choose. But what I struggle with is why programmers don't work on meaningful projects during their time they dedicate to their actual employment. I feel like I work on something very meaningful because I have helped literately millions of people lose literally millions of pounds of weight. More over, I think Square (a billing system) has helped thousands (millions?) of merchants gain access to a new form payments for their goods that they didn't have before. And Amazon (an ecommerce store) has brought convenience to millions of consumers seeking fair prices for products they want; not mention a new distribution channel for authors and merchants. Those seem meaningful to me.

<comment><USER6> Well, not everyone has the opportunity or desire to be employed by one of the "big guys". The programming equivalent of fixing someone's plumbing is not going to change the world, but it lets you pay the bills, have a family, enjoy your [other] hobbies, etc. Even if it is a choice, it's as much about lifestyle as anything else.

I think this post is aimed at those people.

<comment><USER7> > The programming equivalent of fixing someone's plumbing is not going to > change the world

GP's claim is that it _does_ make a world of difference to some people. It just isn't as immediately visible.

</comment></comment></comment><comment><USER8> It's not hard to find an open-source project that needs help. I don't really see the need for a centralized board for posting help requests. When it's already so easy to find them. Just pick your favorite open source app and help them out.

Unless I'm misunderstanding what the article means with "serious work".

<comment><USER9> "It's not hard" is not good enough.

There are many capable coders that don't even know where to start. "Pick your favorite open-source app"? Not everyone has a favorite open-source app. Not all apps worth helping are open-source. With thousands of projects to pick from it's easy to get overwhelmed. "And help them out"? What kind of help do they need? Am I capable of helping them? Will it be interesting for me? Who do I talk to and what should I say? How do I submit my changes? How do I make sure my help is in line with their vision? Tons of questions. Yes, a smart person should be able to figure all this out, but there's _a lot_ of friction involved - especially for something that you do for free in your spare time. There definitely is room for improving the process.

It shouldn't be "not that hard", it should be be dead simple.

</comment></comment><comment><USER10> You don't need to code to help a non-profit or a worthy cause, sometimes even just setting up a WordPress blog and keeping it updated is enough.

I've started doing it for my rugby club and for a shelter for abandoned and tortured cats, and it's much more satisfying than developing the Nth "business rule".

</comment><comment><USER11> I would look at <http://datawithoutborders.cc/> if you want a data science element or <http://codeforamerica.org> if you want a more development angle.

</comment><comment><USER12> Step 1) Compel owner of givhub.com to do something meaningful with their domain.

Step 2) Humbly request the wizards of Github to port a suitable form of the site suited to this endeavor.

Step 3) Contribute!

<comment><USER13> What's wrong with just forking a project in Github instead?

<comment><USER12> Sorry, I should have clarified the reasoning for my suggestion, that being that there would be some sort of interaction/partnering with non- or semi- technical contacts in these organizations that perhaps it would be helpful if the functionality of Github had a friendlier, more approachable UI for such a use.

Certainly, the developer(s) could simply use Github, so maybe Givhub is just a glossy API wrapper rather than an independent instance?

<comment><AUTHOR> (blog author)

Spot on what I was imagining too!

</comment></comment></comment></comment><comment><USER14> Coming at it from the other direction, how would a scientist with an interesting problem attract programmers to work on their project? Something like RHOK specifically for scientists?

<comment><AUTHOR> ... givhub?

I'm working on it

</comment></comment><comment><USER15> I was similarly inspired, but by Steve Yegge's OSCON 2011 speech, and wrote this: [http://mvz.so/blog/articles/2011-08-01-lend-a-hand-to- scienc...](http://mvz.so/blog/articles/2011-08-01-lend-a-hand-to-science.html)

I like this proposal, and would probably lend significant time to it.

</comment><comment><USER16> I agree with doing something meaningful, but maybe engineers are better off sticking to what they know. You are more likely to make lots of money doing such things, earning lots of money, and pouring that money to solve other problems. Think Bill Gates.

<comment><USER17> So you make the money, donate it and then they use your money to hire you to solve their problem? Minus tax. Uhm.

<comment><USER16> No. You make money selling fish because that is what you are great at. Then you give the money to scientists who are great at finding cures.</comment></comment></comment>


LulzSec: Statement regarding "exposing" leaked logs - <AUTHOR> http://twitter.com/#!/LulzSec/status/77782030020128768 <comment><USER2> "We destroyed him so hard that he sat there apologizing to us all night on IRC for what he did.".

Post the IRC logs !!!

</comment><comment><USER3> Unlike Anthony Weiner, LulzSec seems to handle the propaganda aspect of exposed logs pretty well.</comment>


Paperlike 3: E-ink Monitor with 13.3", 2200*1650 Resolution - <AUTHOR> https://www.indiegogo.com/projects/paperlike-3-a-smart-e-ink-monitor-save-your-eyes-iphone-computers#/ <comment><USER2> DASUNG's 3rd Generation E-ink Monitor-Paperlike 3 (Paperlike HD), 13.3" E-ink Screen (Carta & Flexible), 2200*1650 Retina Display. Just Like a Real Paper. Fast nearly as LCD. No Back Light. No Blue Light. No Screen Flash. You can Type, Code, Browse the Web, etc. Work well with any Equipment (HDMI). Support PC/ Mac/ iPhone/ iPad and so on.

</comment><comment><USER3> I admit I have a limited knowledge of E-ink displays, but having high refresh rates on E-ink monitors may cause ghosting, burn-ins and other undesirable effects.

I wouldn't trust this guy to last a long time.</comment>


Show HN: StyleXfer, Professional style transfer for HD photos - <AUTHOR> https://stylexfer.com <comment><AUTHOR> hello, creator here. Any questions / feedback is welcome! Beta testers get 10 credits for free if you signup today ;)</comment>


Developers, confess why you don't TDD - <AUTHOR> https://confessionsofanagilecoach.blogspot.com/2017/08/developers-confess-why-you-dont-tdd.html?m=1 <comment><USER2> I'm sure the world learned a thing or two from the agile movement. But like all movements it got twisted into semi-religious caricatures of the original message, like this post.

Event Kent Beck admits skipping tests when he feels like it, no big deal.

I hereby confess; I don't give a shit about icons, worship and obedience; I am creating.

<comment><AUTHOR> How was TDD presented/introduced to you?

<comment><USER2> I introduced myself to TDD/eXtreme programming long before anyone was talking about it, read all the books and preached the ideas. Since then I've had the misfortune of seeing several fucked up interpretations in the wild, from hip- shooting startups to ISO-certified Scrum shops; and they all manage to miss the entire point of the exercise; which is applying common sense; distributing authority and focusing on the important parts, not least creativity. Agile is kind of like the Jet Kune Do or Ving Tsun of software development; since it contains almost no form in itself; it's very easy embrace and extend into whatever you fancy, and therefore very easy to corrupt.

<comment><AUTHOR> I'm curious how much time was spent trying to write test driven code before deciding it wasn't working for you. Did you succesfully write a few small programs using TDD (coding katas)? Or did you apply TDD to your project at work? For how many hours or lines of code did you try TDD before deciding it wasn't going to work?

</comment></comment></comment></comment><comment><USER3> TDD doesn't really seem to be useful, at least, not as clearly useful as its proponents generally advocate.

That is, it's generally advocated as a clear win, but of the various attempts to quantify it, it's a mix at best.

For example, [https://www.computer.org/csdl/trans/ts/2013/06/tts2013060835...](https://www.computer.org/csdl/trans/ts/2013/06/tts2013060835.html) says "This paper provides a systematic meta-analysis of 27 studies that investigate the impact of Test-Driven Development (TDD) on external code quality and productivity. The results indicate that, in general, TDD has a small positive effect on quality but little to no discernible effect on productivity."

It then goes on about subgroup analysis, but we must take that with a grain of salt as subgroup analysis is more likely to have "statistically significant" correlations due to random fluctuations.

When I try TDD on my own projects, I find that I lock in the internal API too quickly, that is, I test against internal functions, because they are easy to test. Then when I refactor, I find I avoid refactoring which might, for example, merge a couple of functions into one or otherwise change that internal API, because of the effort of rewriting the tests to meet the new API.

I work best with "Spike and Stabilize", that is, a spike solution, flesh it out, then once the API is mostly finished, develop the tests. I also use coverage testing to help identify which tests are missing.

Side note: I hate it when TDD people say that TDD code naturally has 100% coverage. It doesn't. At a process level, the refactor can include "replace algorithm", but the new algorithm may have different edge cases than the original algorithm, so require additional tests to ensure correctness.

For example, replace a simple quicksort with timsort, because it's possible to build a test case which causes quicksort to hit quadratic worst-case performance. But if the input has 63 elements or fewer then only the insertion sort part of timsort will be tested. You need a very different test suite to really exercise timsort, compared to what's needed to test a simple quicksort.

Or for a simpler example, performance analysis may say that the case n=1 takes 90% of the time, so rather than use the slower general-purpose algorithm, the new strategy is to special-case n=1. However, deeper in the code there was already special support for n=1, which is now no longer used. There's no way TDD can identify this dead code.

Has there been any analysis of coverage analysis on TDD-based projects, where coverage was never evaluated before, to see what the coverage actually is?

<comment><AUTHOR> Regarding coverage comment, your right in that code can contain capabilities (or bugs) beyond the TDD coded conceived. (If they weren't conceived then it could be a bug or things that don't happen in practical operations.) The TDD people are right in that if you follow the TDD process, all your code comes up as covered by a code coverage tool. But this is only coverage. Not all possible functionality coverage. I imagine "all possible functionality coverage" is an intractable problem in the same class as the Halting Problem. Branch/line coverage should be near 100% for TDD code. (Some I/O coupling areas are intentionally saved for other types testing as they aren't unit testable.) It's an easy thing to measure. It's a common industry metric. It's not the whole picture but it is something.

Measuring code coverage on TDD created software that was built without monitoring the code coverage, then later use code coverage at the end as an evaluation: I've only a few anecdotal (two) instances where I did this and I found the code coverage to be well above 95% for the code base and at 100% for modules that were pure logic. In one of those instances, after many rounds of defect injection, I discovered one or two locations where another unit test could be added.

All in all, I've been pretty happy with TDD. But who cares? I want to hear from the industry why others aren't doing it. :-)

Thank you eesmith, I enjoyed the discussion!

How about hearing some more from others? What's stopping you from doing TDD? Is it because you don't believe it? If you don't believe it, how was it presented to you? Did you try it?

<comment><USER3> "your right in that code can contain capabilities (or bugs) beyond the TDD coded conceived"

I do not understand what you mean by my being right. I did not say that. As you wrote it, it's a trivially true statement, and I didn't think what I wrote was so trite.

I will try to reword it. In the "Red - Green - Refactor" style of TDD you are allowed to refactor the code so long as the tests remain green. This assumes there are sufficient tests to catch errors in the refactoring. However, one of the allowed refactorings is "Substitute Algorithm"[0]. The new algorithm may have have corner cases which the old algorithm did not have, and so wasn't originally tested.

R-G-R omits the part where you add new unit tests which are expected to be green, but added in order to verify that the new algorithm really does work correctly for new corner cases. It should be "Red-Green-Refactor-Yellow- Green", where "Yellow" means "do the failure analysis to ensure that the refactoring didn't add new failure cases." Yet TDD people don't teach that.

And I think the reason why is that this "Yellow" stage is the normal part of non-TDD programming. If you drop "Red-Green" and just iterate over "Code- Green-Yellow-Green" (write the code, make sure the old tests work, do the failure analysis, and make the new tests work), you'll still end up with good quality code.

This comes back to another aspect of TDD. Suppose that the programmers in a company are in their 20s and 30s while middle management is in their 50s. There is an asymmetry as middle management has much more experience in applying pressure than the younger programmers. Managers, after all, have more experience trying to manipulate people.

Some programmers in this situation use TDD as a tactic to resist external pressure to release code with insufficient testing. "The code's done, but it isn't fully tested." "It's done? Ship it, and we'll deal with the problems later." With TDD this becomes "we're using TDD because <famous people> say it's a best industry practice". This gives the programmers a way to externalize the resistance to releasing poorly tested software.

However, it's also unprofessional. Some code can be lightly tested, perhaps manually tested instead of a unit test suite. TDD shuts off the dialog about how to make those trade-offs at the business level, in the name of either technical purity or an unwillingness or inability to really negotiate.

"if you follow the TDD process, all your code comes up as covered by a code coverage tool"

No, that is incorrect. I have given two examples of how TDD code can end up with less than 100% statement coverage, much less 100% branch coverage.

Ken Beck wrote "TDD followed religiously should result in 100% statement coverage." You backed that off a little with "should be near 100%". But my point is that these are assertions of faith, which TDD proponents repeat without evidence.

If they repeat this without evidence, what else are they repeating without evidence?

I myself have written non-TDD code, then tests, then verified code coverage, and ended with 98% coverage. (I wasn't able to test malloc() failures, though I coded in handlers for them and manually exercised those code paths to make sure they worked.)

[0] As Fowler originally described it, "Substitute Algorithm" is used "to replace an algorithm with one that is clearer." However, if a new test appears to hang, and analysis shows it will take several days to finish, then you may need to use a more complex algorithm with better scaling performance. If this isn't a refactoring, then what is it? Others, like [https://refactoring.guru/substitute- algorithm](https://refactoring.guru/substitute-algorithm) , don't require that the new algorithm be simpler.

<comment><AUTHOR> I'm interested in your test later approach. When you're attempting 100% branch coverage, do you sometimes find writing the test later causes redesign of the product code? On average, how many days does it take to complete a cycle of: write the code and then write automated unit test code? What ratio of that time is spent doing test automation versus writing production code?

<comment><USER3> I rarely try for 100% branch coverage. I find that the extra tests aren't worthwhile.

I don't even try for 100% statement coverage. I use coverage to help identify important missing test cases.

For example, some of my code will read/write a binary format of my own devising. The format is used in a "friendly" environment, so I don't have to worry about malicious users trying to cause failures. (The code is in Python, which eliminates a lot of the memory error that a malicious user could use.)

I could get 100% coverage by creating corrupted binary files in all of the different ways to fail. But why go through the work of testing unrealistic cases?

Instead, I use my experience and intuition to only test the realistic cases. I also know that my code is not mission critical, so if one of my users reports a failure, I'll send them a patch or point release.

I can't give you a breakdown of time because I don't track it. My usual estimate is 1/3 programming, 1/3 testing, and 1/3 documentation, for commercial-quality packages. I find that writing good documentation helps find bugs that users are likely to experience.

(Now that I think of it, that binary format took several months to write. The first two attempts didn't scale and I had to toss them. They had almost no tests, so think of them as spikes.)

For consulting, it depends on the project. In one two-week project I had no tests. The control flow was simple and most of the code was executed during normal use. Plus, the support staff was able to maintain the software in case of errors, and we did a thorough code review for knowledge transfer.

In another project, I was brought in to optimize some existing code, which didn't have tests but which had been extensively tested manually. It was presumed to be correct. The new code I wrote also didn't have unit tests. Instead, I cross-compared a few million inputs to check that they gave the same results, at about 10x performance.

In yet another project, I had unit tests for the user-facing parts, but not for the main algorithm. Rather than explain the program, I'll use an analogy. Consider a program to factor a number into its primes. This is difficult. On the other hand, it's easy to test that the result is correct. Multiply the numbers to see if they give the original number, and use a primality test to ensure all of the factors are prime.

In essence, I have a #define which enables verification. This also slows things down, so it's not enabled by default. I then (once again) processed a few million inputs. This sort of integration testing is much more complete than manual unit tests.

(I do have a simple unit test used as a burn test, so it's not completely untested.)

For an extreme case, see [https://randomascii.wordpress.com/2014/01/27/theres- only-fou...](https://randomascii.wordpress.com/2014/01/27/theres-only-four- billion-floatsso-test-them-all/) . Why write unit tests when it's possible to examine all 2^32 possibilities in 90 seconds?

<comment><AUTHOR> Thank you for that. I've got the idea now. In these projects, are you responsible for the maintence and later code changes? Or are these projects one time deliveries and someone else handles things from then on?

Also, if you don't mind my asking, how many years of experience did you have in working in the IT industry when first trying your hand at TDD?

<comment><USER3> I don't think that's an informative question, because the answer is "yes."

Which cases? For software I sell, I am responsible.

For software I write as a contractor/consultant, it depends on the contract. After all, I'm not going to maintain it forever, for free.

For the two week contract I said I would fix things for 3 months [0], if it was something I should have caught during development. I don't recall them asking for any changes, but like I said, we did a code review at the end to get the two local people up to speed with what it does, and they are good people. The project used a combination of technologies which they hadn't used before.

The "yet another project" was a series of work orders across 18 months, where I did two major rewrites to handle new capabilities. Someone local was also reviewing the code, doing validation, and making a few patches. Nearly all of it was me, including maintence and code changes. I've done several projects for that company for about 5 years.

Again, I'll fix errors that should have been caught during development. On that last project, which finished in February or so, there was a bug report two weeks ago which I investigated and suggested two possible fixes. They chose one and implemented it themselves.

I started programming in 1983 and got my first full-time job in the IT industry in 1995. I didn't try TDD until around 2007 or so. Our local programming user's group does code katas. The organizer is an Agile/XP/TDD facilitator and testing advocate, so I've also learned and had practice that way. Also, she was the project lead for a project where I was involved as a contractor, so when we pair programmed [1] we did it as TDD.

[0] Their standard contract said 2 years, which I said was extreme for a two week contract, but if they wanted that then I would adjust my rates accordingly. We settled on 3 months.

[1] This wasn't often. I mostly worked on a back-end server component, while she worked on front-end and middleware.

<comment><AUTHOR> Some software languages or platforms are easier to do TDD in than say proprietary computing "appliances" in proprietary languages. You've mentioned Python, which is a pretty flexible language and conducive to doing TDD. Do you do most of your project work in Python?

You mentioned getting bug fix requests. How many times over the year do requests like this interrupt your other project work? On average, how much of your effort does servicing such requests (research, meet over them, plan a fix, then do the agreed upon fix and test the agreed upon fix, deploy the fix) take? Hours, days,...?

<comment><USER3> I'm tired of this conversation. I don't see the point of your questions, and I think I've explained my "confession" quite well enough.

I rarely get bug reports concerning the software I delivered. The fixes almost always take only a few hours.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Pitch Day for Triangle Startup Factory S12 graduating class - <AUTHOR> http://wraltechwire.com/business/tech_wire/opinion/blogpost/11181053/

<comment><USER2> I'm sorry I couldn't make it down to this today - was out of town earlier this week and had too many catchup meetings today.

Any eyewitnesses care to share the highlights?

</comment><comment><USER3> ok

<comment><USER3> www.duz.in 免费主机</comment></comment>


Google's I'm feeling lucky button is feeling Hungry (mouse over) - <AUTHOR> https://www.google.com/?m=rotatingbuttons

<comment><USER2> Oh hey, welcome to the internet. Yup, Google changed the I'm feeling lucky button a while ago.

<comment><USER3> I've never seen it, perhaps because they haven't made the change to google.co.uk</comment></comment>


The Decline and Fall of BIND 10 [pdf] - <AUTHOR> https://ripe68.ripe.net/presentations/208-The_Decline_and_Fall_of_BIND_10.pdf <comment><USER2> Wow I feel that pain. I designed a replacement for Sun's yellow pages service called NIS+ and with a couple of awesome engineers got it built and into production. It changed _everything_ about the old YP. And if there is one thing system administrators really hate, its change that isn't compatible with simple mods to their shell scripts. That lead to an interesting effort to make a NIS+ light which was more like YP.

The evolution of BIND had very similar sorts of challenges it seems. Earlier version worked new version was all different. So different that their customers (the system administrators) seem to have revolted. Ouch.

When you are building a part of the infrastructure that lots of people have to manage to keep the infrastructure running, its a special kind of challenge. Both in deployment, change management, and service evolution. Even after going through the process with NIS+ I'm not sure if I could even chart a path for a replacement BIND.

<comment><USER3> Just want to say thanks, the automounter, nfs, and nis were great in concert.

<comment><USER4> Until they aren't.

Too many hours spent troubleshooting automounter / NFS failures through NIS and LDAP.

</comment></comment></comment><comment><USER5> Interesting view into the human elements of a software project.

BIND is one of those programs that scares the living crap out of me, both from a security perspective and from a complexity perspective. (Gee, could those be related?)

Just take a look at the list of BIND vulnerabilities. We're still finding em, and I'm sure we'll continue to for years to come.

[http://www.cvedetails.com/vulnerability- list/vendor_id-64/pr...](http://www.cvedetails.com/vulnerability- list/vendor_id-64/product_id-144/ISC-Bind.html)

For a refreshingly simple and secure DNS serving experience, I highly recommend djbdns / tinydns / dnscache:

[http://cr.yp.to/djbdns/blurb/security.html](http://cr.yp.to/djbdns/blurb/security.html)

<comment><USER6> If BIND is fairly vulnerable, why does everyone say it's the best/de-facto standard in Linux/DNS Servers? It's as if you use BIND & only BIND. Is it really that bad underneath?

<comment><USER7> I recommend djbdns.

<comment><USER8> You recommend something that hasn't been maintained in over a decade. Something that needs all sorts of random patches to still be useful? Random patches that may or may not introduce random vulnerabilities?

BIND may have had a (really) bad run in the BIND 8 days, but BIND 9 was surely an improvement.

And if you really want to stay away from BIND, you can go for something like PowerDNS. Or a combination like PowerDNS+Unbound.

<comment><USER7> I'm not sure what patches you're saying are required. Most startups don't need much more than what comes in the box. What's crazy to me is the idea that they'd opt into BIND 9 preemptively, not knowing what their extended needs are.

This is, for what it's worth, the original objection to qmail as well --- "it's not even maintained". It's not maintained because for the core job it does, it's _correct_. There's not a lot of mail software (at least, not software written in C) that can make a competing claim.

</comment></comment></comment></comment></comment><comment><USER9>
      People Fear & Hate Change

      BIND 10 is quite different for administrators

      – Lots of dependencies, slow build
      – Lots of processes
      – Tool to configure, not configuration files

      People hate change.

Do they? Or do they hate things being worse?

Having lots of dependencies can actually be a huge pain. Yes, reusing existing software is wise. And most of the time, these days, on a modern unix, you're covered by the package manager. But not always. Someone is going to be building or installing on some freaky system, or some old version of something, and every additional dependency is going to be like a red-hot poker up the fundament. More dependencies is wrose.

Having lots of processes generally does make things harder to manage. Yes, there are advantages in terms of fault isolation and privilege separation. But it means that you can't just throw off a quick pgrep to see if the service is up, you have to worry about _some parts of it being up_. More processes is worse.

Using a tool to configure something instead of using a file ... nah, i've got nothing. There's nothing good about configuration tools. I have never come across a situation where i used a specific tool to configure something and didn't wish i was just editing a file. Tools for configuration is worse.

I'm sure there are lots of really awesome things about BIND 10. It clearly had a huge amount of care and attention given to it. But it does sound a bit like its developers were blind to the need of the system administrators who they hoped would ultimately install it.

</comment><comment><USER10> I'm curious about this quote on page 21: "Administrators really hate Python. Really. HATE."

I hadn't heard anything like this before, what is the reasoning here?

<comment><USER11> One reason is that versioning is really hard. Now that Python comes standard with Linux distros, and in fact some of the built in tools are written in Python, it becomes really hard to upgrade. So you can never touch the version that your OS ships with or you'll break some part of the OS. But those are usually years behind and developers generally want the new hotness so you end up installing newer versions elsewhere. There are tools built around this like virtualenv but you end up with a bunch of different versions of Python installed in different places, and then installing modules becomes something that happens outside of your system's package management software so you can't track dependencies etc. And python itself has really weak package management, or rather several competing and incompatible systems but you'll download modules that use each of them so you end up with all of them. At least Ruby and Perl were able to standardise on one each.

<comment><USER12> What are the "several competing and incompatible systems"? I haven't used anything other than pip, ever. I know of easy_install, but as far as I know pip is an outright total replacement for it.

<comment><USER13> The tools installed by pip won't usually work with the old versions of Python found by default on some systems. They break because they want a new Python feature, and that makes you want to upgrade and that... you can't do that because it will break dependencies at system level.

And then you want to install a new Python side by side and you sort of do that but /usr/bin/python still points to the old version and you have to be explicit with /usr/bin/python2.6 in your scripts. But then some scripts will work and some still don't and you make /usr/bin/python point to /usr/bin/python2.6 and now you really broke yum.

And all you can do now is hate python because it gave you all these problems.

<comment><USER14> And I can't imagine what it is like to deploy Java apps if you have no actual familiarity with the JVM ecosystem, either.

<comment><USER15> What is your point? That administrators really hate Java too?

<comment><USER16> This system administrator hates Java almost as much as Windows. I'm still enraged at the old lie "compile once, run everywhere". Just look at what Java does to the Red Hat "alternatives" system, although I can't imagine any prettier body cast around that catastrophe.

<comment><USER4> Reading your comment the irony occurs to me that the best solution to "compile once" has been real VMs. Not Java VMs, but full god damned fucking virtual machines running the OS and environment you determine should run in them.

You've _still_ got to provision those, but, well, they're individual and isolated and tend not to go hammering into one another. Other than consuming all available system resources.

Oddly: IBM got this right with VM ... 40 years ago?

[https://en.wikipedia.org/wiki/VM_(operating_system)](https://en.wikipedia.org/wiki/VM_\(operating_system\))

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> djb is to be commended for his foresight. I always found it depressing that people would slate him for doing things his own way. I'm reminded of this quote:

      "Don't worry about people stealing your ideas.  If your ideas
       are any good, you'll have to ram them down people's throats."

            -- Howard Aiken

</comment><comment> guard-of-terra I still can't get in my head that writing DNS server is so hard.

Looks so easy on surface. Made me want to write a toy server just to prove myself.

<comment><USER18> You know, I did actually start writing one recently [1]. It's both more and less complex than I imagined it. A basic caching resolver, especially in a reasonably high-level language is not a bad time. I think the complexity starts coming in when you start keeping a database of authoritative zones, etc.

If you are writing it in C... things are more complex. All DNS records are variable length, so you have be damn sure you don't have off by one errors, etc. Also, proper DNS works over both TCP and UDP so you have to architect it such that you can work with both. Not knowing anything about the code of BIND, I can say this would take quite a bit of careful planning to not get wrong. I can see a whole slew of buffer overflows happening in all these places.

[1] [https://github.com/ipartola/pulpdns/blob/master/main.py](https://github.com/ipartola/pulpdns/blob/master/main.py)

My idea for this code was to have a DNS server that keeps track of which domains are the most requested and in the background keeps a thread running to always keep them in the cache. I noticed that even with a pretty fast connection my DNS resolver on my LAN can take 100-300 ms to return a name not in a cache.

<comment><USER19> In part, this is due to the fact that features were added to the protocol as needed - or as it seemed necessary at the moment. I don't think anyone is to blame, the whole Internet grew like that.

</comment></comment></comment><comment><USER20> Please note that RIPE archives _everything_ and, as a result, the video is available: [https://ripe68.ripe.net/archives/video/153/](https://ripe68.ripe.net/archives/video/153/)</comment>


Ask HN: Whats the hacker house that will let you stay for free if you interview? - <AUTHOR>

A few weeks (or was it months?) back I saw a post about some startup mansion that offered a few days free if you were willing to interview - does anyone know the site? <comment><AUTHOR> Found it: [http://hackersurfing.com/](http://hackersurfing.com/)</comment>


Jared Richardson, Agile signatory, has passed away - <AUTHOR> https://www.remembr.com/jared.richardson <comment><USER2> Every death is a tragedy in its own way, but this one really hits me. Jared was a really good guy, and I feel fortunate to have had the opportunity to strike up a friendship with him many years ago. It's been so long that I don't even remember exactly where/when we first met, but I'm almost sure it had something to do with Jared presenting on Agile methodologies or something along those lines.

When we started Fogbeam Labs, he was one of the first people I called up and ask if I he'd listen to our pitch and give us his feedback. Of course he said yes, and he was incredibly gracious in giving me a couple of hours of his time to listen patiently to my rambling, and share his ideas and thoughts on things we could do.

From what I can tell, pretty much everybody here who knew Jared thought the world of him. The RTP area, the Agile community, and the world, are all diminished by his passing.

R.I.P, Jared.</comment>


Ask HN: Who do you want at the next Startup School as a speaker?  - <AUTHOR>

<comment><AUTHOR> Jack Dorsey</comment>


Ensuring your security and privacy within Gmail - <AUTHOR> https://www.blog.google/technology/safety-security/ensuring-your-security-and-privacy-within-gmail/ <comment><USER2> I think that those "Google gives xyz access to your emails" headlines are part of a bigger trend.

Somehow perception changed and now having the ability to actually use and treat data self-responsible as an individual is a bad thing?

I can understand that this makes everything saver for people with little technical ability, but it also strongly limits capacity for those who actually know how to use their tools.

I fear that soon everything is as cluncy and non-commital as a mobile os.

</comment><comment><USER3> > You control your data

Except when google wants it. Sorry, but lmao.

<comment><USER4> Well, Google does have lots of information about Mirimir.

But what good does it do Google?</comment></comment>


Prototip 2 - Create beautiful tooltips with ease - <AUTHOR> http://www.nickstakenburg.com/projects/prototip2/ <comment><USER2> I was excited until I saw the licence...

<comment><USER3> I am excited _because_ of the license. If he is successful then that means that other programmers respect and appreciate his work as a programmer to exchange money for it. That means that other programmers (me, in particular) have a chance of making money by selling software, potentially even to other programmers.

It is amazing to me that so many programmers refuse to purchase any software, _unless_ it comes bundled with a hardware purchase (Mac OS X, Windows). Hardware is worth hundreds or thousands of dollars but software is worth nothing?

<comment><USER2> Whatever you pay for the licence, you don't get to modify the code (unless I'm misunderstanding what "no-derivative" means). That's what "de-excited" me about it.

<comment><USER4> For all non open-source projects it makes sense to have a no-derivative works license. You would be putting yourself out of business without it.

Awesome script, I'll definitely be using it in some projects.

<comment><USER3> I agree that it makes sense to prohibit the distribution of modified copies, but it is usually better to let people modify the software as long as they keep those modifications internal.

</comment></comment></comment></comment></comment><comment><USER5> Someone port this to jQuery

<comment><USER6> Doesn't have as many features, but...

<http://jquery.bassistance.de/tooltip/demo/>

</comment></comment><comment><USER7> But but but 37 Signals says it's okay to charge for software !?! I'm confused.

/tongue firmly in cheek

</comment><comment><USER8> Very nice tool tip scripts. Now need to find an excuse to use them...

</comment><comment><USER9> would love to use this, alas we are frozen on prototype 1.1.5 at the moment...</comment>


Loop Invariants Abbreviate Induction Proofs - <AUTHOR> http://www.drdobbs.com/cpp/loop-invariants-abbreviate-induction-pro/240169015

<comment><USER2> _" …proves that when the loop terminates…"_

_if_ the loop terminates. That still is something you will have to prove.

For example, one could call 'sum' end up with pointers into different arrays. That in itself triggers undefined behavior in C, but let's ignore that, and also assume that pointer addition wraps around, so that calling

      sum( &p[1], &p[0])

will eventually return. Even then, there is a troublesome area: the begin and 'end' arguments might have different alignment.

(Can one get that within a single C array? Maybe, on some platforms, by creating an array of unions, where the first element of the union contains a short and a double, and the alternative a double and a short)

<comment><USER3> WRT your point about alignment - there is certainly no guaranteed alignment in C, so if you have (double star[1]) where (sizeof double) is 8 there is no guarantee that your pointer is evenly divisible by 8.

Most compilers will correctly align something like an array of doubles, but if you have something like a struct with a char followed by a double, it's unlikely that the compiler will add 7-bytes of padding to ensure that the double is aligned correctly.

It should not be possible to get two unaligned pointers if they are taken from the same array. However, there's nothing to say that the pointers actually point to an array of doubles as the code assumes. As you rightly point out, there's no guarantee the pointers are even into the same array.

To use the struct example again, you could have an array of structs with a total size 9 bytes and therefore, to correctly walk that array, you would need to go in increments of 9. However, by taking the address of just the double element within the struct (rather than the base address of the element itself) you have just performed a sort of "type safe but really unsafe" pointer conversion.

The code will now try to walk from point A to point B by adding 8 bytes each time (because it thinks (double star) is an array of doubles), but the elements are actually offset by 9 bytes each.

E.g.:

      struct my_struct {
        char confusticator;
        double number;
      }

      my_struct my_array[10];

      double* first = &my_array[0].number;  // base address
      double* second = &my_array[1].number; // base address + 9 !

There's no alignment issue with unions because if the above were a union rather than a struct then the total size would be 8 bytes (the size of the biggest element) and both elements would have an offset of 0. You're probably thinking of "safe" unions from other languages that resemble structs but are tagged in some way to indicate which of the values is in use. C unions just lay the values over the top of each other, so you better not try to use the wrong one! Trying to prove correctness of anything involving C unions would be a challenge.

Incidentally, when I was first starting out with C years ago, I had a lot of problems with pointers (as everyone does). I learned a lot of defensive programming techniques, one of which is to never construct a loop where the termination expression is based on equality; instead use (x < y) because that way, if something happens like begin and end being reversed, the loop will always terminate immediately. It also mitigates the problem is differently aligned pointer comparisons.

This is one of the things that bothers me a about iterators in C++11. Fortunately iterators themselves are safe; it's just that they encourage (and in fact, require) writing code in a way that is potentially unsafe.

[1] For "star" read an asterisk character. I cannot believe it's 2014 and Hacker News has no way to escape a goddamn asterisk in a comment unless it's in an indented block!</comment></comment>


GeoFire: Location Queries for Fun and Profit - <AUTHOR> https://www.firebase.com/blog/2013-09-25-location-queries-geofire.html

<comment> kav-ya (I worked on the GeoFire library) GeoFire converts the latitude-longitude coordinates of a data point to its geohash, and stores the data in Firebase at the geohash. The properties of geohashes and Firebase play nicely together to make it easy to implement localized search and location querying.

<comment><USER2> This is just points right? Any plans to expand to other shapes? (ie: PostGIS)

I wonder if anyone has substituted a Hilbert space representation for geohashes... ;)

</comment></comment><comment><USER3> Like the idea of using Geohashes to quickly search for "near" objects and then using the client's processing to extract lat/lngs. I've setup postgis before and it was more of a hassle than I wanted it to be. This alleviates some of the pain :)

</comment><comment><USER4> Spent the past month putting together an app with Angular, Firebase, and Geo. All three play together very well and have significantly reduced the dev time. Thinking about how much more work I would still have to do without Firebase and Geo gives me shivers.

</comment><comment><USER5> Very good!. It's impressive how much work you take out of the people that want to develop new Applications/Websites/Services! This is really nice!

<comment><USER6> Location intelligence is becoming more and more central to customization of user experience on all sorts of software systems. I like where this is headed!

</comment></comment><comment><USER6> I like this, geohashing is a nice way to go. And true, I've played around with PostGIS too and the pain wasn't unnoticeable.</comment>


Particles.js - <AUTHOR> http://vincentgarreau.com/particles.js/ <comment><USER2> For all those wondering this is not a library (yet), it's a simple single mode demo with a few params. All the code is here [https://github.com/VincentGarreau/particles.js/blob/master/p...](https://github.com/VincentGarreau/particles.js/blob/master/particles.js) and you can get a good feel for it by just reading the method names. _A lightweight JavaScript library for creating particles_ seems more of a goal than a description.

Looks like it got submitted here before it was done and is going to take coding effort on your part if you want it to do something different. Fork away and help.

</comment><comment><USER3> The demo is insanely cool but I don't really understand what it's supposed to be. Is this just a cool visualization library or can this actually model real world particles? Not trying to be a jerk I really have no idea what I'm looking at.

</comment><comment><USER4> I couldn't get the demo to work, probably because particles.js is being hosted on the dev's personal site which is getting hammered by HN... I've forked the demo and updated it to use rawgit's cdn -- [http://codepen.io/brbcoding/pen/OPJVMp](http://codepen.io/brbcoding/pen/OPJVMp)

</comment><comment><USER5> This is cool. It reminds me a bit of Matthew Wagerfield's Flat Surface Shader.

[http://matthew.wagerfield.com/flat-surface- shader/](http://matthew.wagerfield.com/flat-surface-shader/)

</comment><comment><USER6> I would definitely use this but there is no documentation, some of the source code looks non performant, and it is tightly coupled to the canvas element. If you want to use this you should look at the: [https://github.com/VincentGarreau/particles.js/tree/master/d...](https://github.com/VincentGarreau/particles.js/tree/master/demo/js). Looks simple enough!

</comment><comment><USER7> I'm really sorry about the naive question I'm about to make, but what a regular web developer (business apps) can do with it?

<comment><USER8> Data visualization.

</comment></comment><comment><USER9> Neat. Thinking of using in our visualization app. Can we add text to nodes and edges. docs?

</comment><comment><USER10> Looks very nice, good job. What about browser compatibility?</comment>


Part plane, part trike -- a new way to get to work - <AUTHOR> http://asserttrue.blogspot.com/2010/02/part-plane-part-trike-new-way-to-get-to.html

<comment><USER2> It looks extremely dangerous. According to the specifications it would stall at 70MPH with the flaps extended and the wings look like they're only inches from the ground. In a cross wind, you'd have to touch down wings level and yawed into the wind... at > 70MPH.</comment>


Legal Marijuana Is Almost Here. If Only Pot Farmers Were on Board - <AUTHOR> https://www.nytimes.com/2017/09/09/us/california-marijuana-growers.html?emc=edit_ca_20170911&nl=california-today&nlid=4617603&te=1&_r=0 <comment><USER2> Given the lucrative export market, California might not be terribly interested in cracking down on a cash crop...</comment>


Chinese Co Refuses To Pay Goldman Sachs $80 Million In Derivative Losses - <AUTHOR> http://www.zerohedge.com/article/small-chinese-company-tells-goldman-take-hike-refuses-pay-80-million-derivative-losses <comment><USER2> Counterparty risk is a bitch.

Particularly when layered with legal and cultural risks.</comment>


Tesla confirms another Autopilot accident - <AUTHOR> http://money.cnn.com/2016/07/12/technology/tesla-autopilot-accident/index.html <comment><USER2> ""It's a winding road going through a canyon, with no shoulder," Shope told CNNMoney. The driver told Shope the car was in Autopilot mode, traveling between 55 and 60 mph when it veered to the right and hit a series of wooden stakes on the side of the road. Tesla confirmed that the data it has from the car shows it was in Autopilot mode, and that the driver likely did not have his hands on the wheel."

At 55mph+ and no margin, does it make the slightest difference if he _had_ had his hands on the wheel?

</comment><comment><USER3> It's curious that the autopilot would continue to work when your hands are off the wheel, especially when Tesla notes they know when your hands are on it -- even more, the car knew the terrain and recommended speed and yet despite being "out of spec" it continued on autopilot anyhow?

<comment><USER4> This is why I think this is a problem "by design", and Tesla could fix it "by design" as well. But that would mean drastically reducing Autopilot's marketing power, so Tesla _chooses_ not to do that. Instead it chooses to leave the Autopilot in a much riskier mode, while telling drivers in a footnote not to take their hand offs the wheel, or they could die.

</comment></comment><comment><USER5> "it can detect even a very small amount of force, such as one hand resting on the wheel."

Then why is autosteer not disabled when hands are off the steering wheel? Can switch it off in this cases, or slow down, etc... This whole autosteer idea is completely delusional.</comment>


Show HN: Booklistly – Broaden your mind with inspiring nonfiction books - <AUTHOR> http://booklist.ly <comment><USER2> I like this because there are less books. Too often I get bogged down due to too many books suggested by Amazon or any other site. Less books = good.

Also, for the existing books, you could probably list the top people who recommend it as a line. That adds more credibility.

You can use something like = favobooks.com for that.

<comment><AUTHOR> Hey Ramkarthik, thanks for taking the time to check out Booklist.ly and for the awesome feedback! Please do submit your favorite nonfiction books, as I'm always looking to add more to Booklistly and my own reading list.</comment></comment>


Kim Wall 'stabbed 15 times' onboard Danish inventor's submarine - <AUTHOR> https://www.theguardian.com/world/2017/oct/03/denmark-submarine-trip-journalist-kim-wall-stabbed-15-times?CMP=Share_iOSApp_Other <comment><USER2> Didn't think this case could be more horrifying as it progressed. The material found on his computer now makes one suspect this may not be his first murder. That poor woman.

 _" The suspected killer of Swedish journalist Kim Wall will be detained for four more weeks after a Copenhagen court heard that 15 stab wounds had been found on her body. ... Traces of Madsen's DNA had also been also recovered from Wall's body, as well as traces of a saw blade consistent with the removal of her head and limbs after her death, Buch-Jepsen said. An examination of Madsen's computer had also uncovered material featuring women being tortured and killed."_</comment>


Sudoku and the way of the SAT solver - <AUTHOR> http://bramcohen.livejournal.com/70250.html

<comment><AUTHOR> Compare with <http://norvig.com/sudoku.html></comment>


Apocalypse and Bubbles - <AUTHOR> http://www.avc.com/a_vc/2010/09/apocalypse-and-bubbles.html

<comment><USER2> Everyone would benefit from an increased understanding of economics, namely so called "Austrian economics". They successfully explain the increase in bubbles in via monetary policy, and this explains why there are more bubbles even though markets are vastly more efficient now and information is much more widely distributed.

A good primer is "economics in one lesson" by henry hazlitt, which you can find online for free in various places.</comment>


Ask HN: Tutorials for building services in Scala? - <AUTHOR> I'm currently working on a team who are building microservices with Java and Python, and lately we've talked about introducing Scala.<p>For my part, I've benefitted a lot from the Python community's many great tutorials on building apps with Flask, Django, etc., and I'm wondering if there are analogues in the Scala world. Could any of you recommend resources for learning to build services in Scala? <comment><USER2> Try to start by reading docs of Play framework. Play has the easiest migration path from Django, Flask that others (it also has a list of tutorials, examples [https://www.playframework.com/documentation/2.6.x/Tutorials](https://www.playframework.com/documentation/2.6.x/Tutorials)).

Frameworks/toolkits like Akka, Finagle, Lagom very different from usual python things, therefore try some of it later.</comment>


Summly acquisition was BS - <AUTHOR>

I'll say it first so no one will jump on me. I am jealous of the 17 year old kid. Don't kid yourselves, you all are too.  Who wouldn't want their start up acquired?  I mean what's the point starting your own company?  The goal should eventually be an exit of some kind.
The news of Summly getting bought out by Yahoo shocked basically almost all of us.  It really flies in the face of all that we know too.  How often do you hear, "you don't need VC money before you have traction, market fit, etc."  It's bull crap.  I believe a huge reason Summly was acquired was because of the VC connections it had.  Without those connections and investors, that company with no revenue no real traction, would be swimming in the abyss with other start ups.
Summly basically is a company that uses another companies technology!!  I mean that's insane!  A tech company that uses another companies technology!  To be honest, I wouldn't be shocked if this deal falls through because of it's licensing agreement with their technology provider.  Maybe that's why the company is being shut down, and "re tooled."
The larger point I am trying to make here is that luck, is literally half the battle with start ups.  You could have the best product, design, etc. but if you don't catch a few breaks you will be nothing.
So I guess I can't get too mad at the Summly kid, everyone needs to get lucky once in a while. <comment><USER2> It doesn't fly in the face of what we know. If you take VC money, your investors will be looking for some kind of exit, and they will also be trying to achieve that through their connections. That doesn't mean every company needs to take VC money, but that's one way that people play this game.

</comment><comment><USER3> "You could have the best product, design, etc. but if you don't catch a few breaks you will be nothing."

Many people have learned this lesson the hard way.

"I am jealous of the 17 year old kid"

Why? Do you really define your personal success to be when another company buys you out?

<comment><AUTHOR> Why am I jealous? I am jealous because I would love to start a company then sell it in two years for 30 million. Very simple.. Never said anything about defining personal success.

<comment><USER3> "Who wouldn't want their start up acquired?"

A person who is building a sustainable business that doesn't want to see it mothballed or sullied by others.

"I mean what's the point starting your own company?"

This is a common but fallacious argument. If you wanted to make money, at median you are far better off working as an employee for another company.

Given the high failure rate (you are forgetting selection bias), you have to have something more than a profit desire to start a company. For me, I know I wasn't happy working at a company and having left that environment I don't think I ever want to go back :)

"The goal should eventually be an exit of some kind."

The goal is an exit if you think of your startup as a massive pump and dump. Plenty of people build very sustainable lifestyle businesses.

It really sounds like you need to reevaluate your life a bit, especially if you think that everyone goes into this solely to make a boatload of money. It's easier to make your first million working for a hedge fund than it is in a startup.

<comment><AUTHOR> My life does not need any re evaluation of any sort. I am an entrepreneur as well, and like all other entrepreneurs making money does not drive me, rather the creation of something from nothing is what really motivates me.

That being said, an acquisition from a large company would provide some third party validation, that I am sure many others creating something from nothing, crave.

<comment><USER3> "an acquisition from a large company would provide some third party validation, that I am sure many others creating something from nothing, crave."

Those people who crave third-party validation are usually in startups because they hope to strike it rich, not because they are genuinely interested in creating something that they enjoy. You need to escape that paradigm of measuring your self-worth based on others.

</comment></comment></comment></comment></comment><comment><USER4> Well, that`s where having good VCs might make a difference. Summly might be at a bigger scale but VCs trying to get their money out of a sinking ship is usually how "soft-landing" is managed.

<comment><AUTHOR> Well put.

</comment></comment><comment><USER5> 30 million for a tenacious product manager. Could be worth it</comment>


Norwegian Prime Minister drives taxi secretly to hear more from voters - <AUTHOR> http://www.telegraph.co.uk/news/worldnews/europe/norway/10236246/Norwegian-Prime-Ministers-secret-taxi-shift.html

<comment><AUTHOR> He certainly can't be accused of not engaging in customer development.</comment>