A visual proof that neural nets can compute any function - <AUTHOR> http://neuralnetworksanddeeplearning.com/chap4.html

<comment><USER2> Can't the same be said for Fourier series, which make no claims to be some kind of AI? And likewise humble polynomials:

[http://en.wikipedia.org/wiki/Stone%E2%80%93Weierstrass_theor...](http://en.wikipedia.org/wiki/Stone%E2%80%93Weierstrass_theorem)

<comment><USER3> Yes (I am not expert in neural nets, but that appears to be exactly what this is saying). If you look at what goes into a neural net and compare it to what goes into a Fourier transform, it should be obvious that neural nets have even more than they actually need to do this task.

<comment><USER4> This statement doesn't make sense to me. A neural network literally _can 't_ produce anything besides a continuous function, and the universality theorem says that there is no continuous function they can't (approximately) produce.

So what could you possibly mean when you say neural networks have "more" than they need to do something which characterizes exactly what they can and can't do?

<comment><USER3> There are more coefficients than necessary. The FT has the minimum; it's bijective.

</comment></comment></comment></comment><comment><USER5> Who cares if they can compute any function. The important question is, can they _learn_ any function, and can they learn in a way that can generalize? (And clearly they can for many useful domains).

<comment><USER6> What about XOR?

From Wikipedia: In 1969 in a famous monograph entitled Perceptrons, Marvin Minsky and Seymour Papert showed that it was impossible for a single-layer perceptron network to learn an XOR function.

<comment><USER7> 'Single-layer' is an easily overlooked and absolutely essential modifier. Very few networks these days are single layers. (Three is the minimum for infinite dimensional functional approximation, given nonlinear activations.) Deep Networks you see in new research papers these days have, at minimum, perhaps three layers. Some by LeCun et al. will go as high as nine or twelve layers, with four or sixteen layers in breadth.

<comment><USER8> I'm pretty sure linearity was also part of the picture -- no matter how many layers of neurons you have, as long as they perform linear combinations, they could all be replaced with a single one (ignoring numeric errors).

<comment><USER7> I mentioned this in my post ("given nonlinear activations"), but you're correct to point out its importance. The combination of linear functions is always linear. Full stop. You need at least one non-linear layer to get reasonable results.

</comment></comment></comment></comment></comment><comment><USER9> As mentioned in the article, the formal statement is actually "neural nets can approximate (arbitrarily well, using the supremum metric) any continuous function". For other norms, it can also approximate non-continuous functions.

<comment><USER10> You also need the qualifier "...any continuous function, _on a compact set._ "

Once you add all three qualifiers in (approximate/continuous/compact) it starts to sound more like math and less like a miracle.

Incidentally, one thing of great interest is, how does the number of hidden units required behave as a function of dimensionality of the input domain. In dramatic language, "Can neural networks get around the curse of dimensionality?"

The Cybenko proof does not give enlightenment about that question. Andrew Barron ([http://www.stat.yale.edu/~arb4/](http://www.stat.yale.edu/~arb4/)) had some results that seemed to indicate the dependence was moderate (not exponential). I'm not aware what the state of the art currently is.

<comment><USER11> > how does the number of hidden units required behave as a function of > dimensionality of the input domain

If I recall correctly, a non-linear problem can be solved as a linear problem if you consider more dimensions. The hidden layer add dimensions. So, it's not a function of the input domain but of the problem domain, which usually isn't explicitly known.

<comment><USER10> The question in the OP concerns approximation of the f(.) in:

      y = f(x)

where the input "x" is d-dimensional (say).

Some problems (i.e., choice of "f") could be easy. Maybe f only depends on one element of x, for example. There would be no curse of dimensionality in this case. Same situation if "f" depends only on any fixed number of elements of "x".

I think this is roughly what you mean by "dimension of problem domain." Fix an "f", that defines a problem. And you're right, efficient solution of that fixed problem is important!

My remark (which is also in the last paragraphs of the Cybenko reference cited in the OP) had to do with _increasingly difficult problems_.

How to get such a sequence of problems? Suppose you take a simple function like

      f(x) = exp(-0.5 * dot(x,x))

i.e., the Gaussian, and approximate it with a linear superposition of 1-d sigmoids (as a neural net would).

The question is, is there an explicit dependence on dimensionality, and is that dependence exponential in d?

And of course, for more general function classes (not just the single Gaussian function above), is there such a dependence? If it is _not_ exponential, that would be astonishing, revolutionary.

The reason this setup ("vary the problem size") is interesting is that we would clearly like to use neural nets for increasingly higher-dimensional problems (e.g., learn appearance of 32x32 cats, then 64x64 cats, then ...).

<comment><USER3> I think I know the problem you're referring to (despite not having the right kind of specialist training to actually work in this field). I think that the fact that random or quasirandom probes are able to explore these high- dimensional spaces fairly effectively is evidence that the problem is somehow not exponential and therefore tractable in some fashion. Does that sound relevant?

<comment><USER10> Yes, your observation is relevant.

One has to be careful to separate the functional-approximation problem (which is in the OP) from the statistical-model-selection problem (which is NOT in the OP).

The statistical-model-selection problem is _easier_ in some ways (you don't have to approximate the function everywhere, just where you get data; if you didn't get data somewhere, you don't care what happens there).

It is _harder_ in some ways (all that probabilistic folderol, plus, your data is noisy).

There are results that give _rates_ for the functional-approximation problem. By rates, I mean, how good is the approximation versus number of hidden units. The best work I know of is by Andrew Barron, but that was in the mid/late 1990s. He's like a genius bulldozer, so his papers are tough going. You'll note that the Cybenko results, like in the OP, do not give rates. This is obviously a huge difference.

There are also results in the statistical-model-selection problem, of course. With rates. That's Vladimir Vapnik's big contribution, later carried on by others. One of the main results is that a model class has an intrinsic complexity (VC dimension, or other measures) and you only need to have order- of that many random probes to get (close to) _the best model in the class_. No matter what the dimensionality of the space where the data lives.

This is precisely the point you're making above.

My comment is getting too long, but: notice that the statistical-model- selection work only speaks about how to get (close to) the best model in the model class. You then have to make sure your model class is full enough to get close to the optimal rule (which is chosen by Nature, or whatever).

So to make a full theory, you need both pieces: how to choose a big-enough model class (functional approx.) and how to select a good-enough member of the model class (statistical model selection).

Typically there is a total error having one term for each of the two effects, and therefore a balancing act between making the model class big enough to approximate anything, vs. making it small so that you can easily select a good model. If you look at it sideways, this therefore looks like an optimization problem with a Lagrange multiplier penalizing model complexity. So it's quite elegant.

</comment></comment></comment></comment></comment></comment><comment><USER12> This is also why Neural Nets are susceptible to overfitting and fell out of vogue in the 90s :) They will merrily fit themselves, very precisely, to your noisy, wiggly data. Obviously there are ways to combat this, but it seems like an corollary to their 'universality'.

</comment><comment><USER13> Feedforward NN's are only useful to a very narrow* set of problems (*-> compared to 'all' problems out there).

Recurrent networks are needed for stateful operation, i.e. where some kind of memory is needed (in any case where the input is spread across some time or the sequence of data is important). And learning in recurrent nets is in very early stages unfortunately.

<comment><USER14> They are universal function approximators, which means they can map any set of input values to any set of output values. Of course to do this sometimes requires rote memorization of every possible input and it's output, rather than generalizing the function with a few parameters.

Adding more layers improves on this and allows you to make functions that compose multiple smaller functions. The problem with this is the nonlinearities cause the gradients to explode or vanish after a few layers. So the amount of computing power required to train them is huge.

Recurrent NNs had the same problem since they are equivalent to a very deep feed forward network; where every layer is a time step and the weights between every layer are the same.

But the invention of Long Short Term Memory has made training RNNs practical. Basically, as I understand it, some connections do not use nonlinearities so the gradients don't explode or vanish.

</comment></comment><comment><USER15> I wrote about this a few weeks ago:

[http://serialprog.blogspot.ca/2014/07/neural-networks- like-c...](http://serialprog.blogspot.ca/2014/07/neural-networks-like-custom- virtual.html)

My point of view was that neurons in neural nets are essentially analogue logic gates. Given that combinations of logic gates are Turing complete, combinations of neural net neurons should be also.

My writing is not quite as nice or rigorous as the parent post, but the whole point of the blog is to get better at self-expression and explaining things.

</comment><comment><USER16> I loved reading that and interacting with the plots. It totally changes the dynamic of learning when you can interact and play with it in real time.

</comment><comment><USER17> If neural nets can compute any function (as seems neatly proven here) then can they compute any function in more than a single way? If so, then upon applying the novel input (which was our goal following training) how can we know that the particular way which was computed via training set is 'right' for our novel input? If this is all true then it would seem to make neural nets perfectly unreliable as a means to modeling..?

</comment><comment><USER18> This is a wonderful post. One minor aspect which nags me is that when I read "any function", I think any "effectively calculable method". But regular feedforward MLPs are not Turing Complete (will you be going over recurrent or recursive networks?). If so, it would be useful to note this distinction as I've never seen that point for confusion dealt with properly in one place.

</comment><comment><USER19> For me "visual proof" was a java program I wrote in 2005 that used genetic algorithms to evolve a neural network checker AI. It beat me every time:

[https://github.com/mkoryak/Evolutionary-Neural-Net- Checker-A...](https://github.com/mkoryak/Evolutionary-Neural-Net-Checker-AI)

</comment><comment><USER20> Computing a function and approximating a function are two different disciplines.

When approximating a function, one must also talk about the _sense_ in which the approximation is being made. That is, L^2? H^1? Pointwise?

</comment><comment><USER21> Does anybody know if this is true for other machine learning techniques?

<comment><USER10> The same arguments as in the original Cybenko paper, or the Stone-Weierstrass theorem, lend support to the idea that SVMs are universal approximators (with most typical kernels). This has been proven by a couple of authors.

I'm not aware of universal approximation results for random forests, but since they have the same general construction, this would not be surprising.

</comment></comment><comment><USER22> who's to doubt neural networks are completely awesome ?

Any more news about those chips that were optimized for neural networks ? Was it IBM or Samsung ?

<comment><USER4> We have very few theoretical results about neural networks. So not _completely_ awesome.

<comment><USER22> I mean there is a big future for neural networks

<comment><USER4> Well you asked a question and I answered it honestly :)

<comment><USER22> > So not completely awesome.

I don't think I understand your point. By awesome I meant it's a very exciting/interesting field of research. I don't mean to call thermodynamics awesome because it powers cars or because it's a well research field.

Trying to understand how the brain works or making a computer that works in a similar way is awesome to me. If there are still computational limitations that makes it not practical, that's still an awesomely interesting subject.

</comment></comment></comment></comment></comment><comment><USER23> may i also humbly suggest the two vol. series called "parallel distributed processing" (rumelhart et al) which provides an excellent overview of _early_ NN research.

</comment><comment><USER24> I liked this article a lot, but I found it extremely confusing how some of the diagrams were interactive and some weren't. Why not make them all interactive? Barring that, an obvious visual indicator when one is interactive would be handy. As it was, I clicked on a lot of static images.

<comment><USER25> [https://www.youtube.com/watch?v=KpUNA2nutbk](https://www.youtube.com/watch?v=KpUNA2nutbk)</comment></comment>


GOTO (Still) Considered Harmful - <AUTHOR> http://blog.smartbear.com/news/goto-still-considered-harmful/

<comment><USER2> A few days ago I wrote up something on this same issue:

[http://fexl.com/goto-considered-harmful](http://fexl.com/goto-considered- harmful)

However, after discussing the issue on the cryptography mailing list, I realized that the really serious problem here was not the use of goto itself, but the lack of an obvious test case.

Clearly Apple did not have a single test case which made the SSLVerifySignedServerKeyExchange function call sslRawVerify. Since the whole point is to call sslRawVerify, this is an astounding omission in testing.

The "goto fail" pattern is common throughout OpenSSL. I of course think OpenSSL stinks to high heaven, but for reasons not directly related to "goto". I do think the use of "goto" gives off a bad "code smell" though.

I myself never use goto. When I'm writing code, I always create "if" or "while" blocks and then fill them in. It never even occurs to me to use goto.

My main objection to "goto", aside from the spaghetti code which might arise from it, though not necessarily, is that goto makes it difficult to refactor code.

Normally it's pretty easy to move a chunk of code into a separate function. However, if that code contains "goto", then you're pretty much stuck until you factor out the goto.

</comment><comment><USER3> Goto is quite common among c-programmers when it comes to error handling.

<comment><USER2> Yeah, though I refactored their code to avoid the "goto", as an exercise. It would indeed facilitate making separate functions for common swaths of code, notably the duplicate code blocks beginning with ReadyHash and ending with SSLHashSHA1.final. Exactly as I said, goto makes it harder to refactor code.</comment></comment>


Merging two ini/env keyval files and remove duplicate keys using awk - <AUTHOR> https://gist.github.com/mattkenefick/6ff3d3b4b17c1e9f43d0908cf830bbd2 <comment><AUTHOR> I ran into this issue today and couldn't find a great solution online.

Needed to combine multiple key/value files, like _.ini or_.env, and have some values override others while removing duplicates.

This script + example demonstrates how to use awk to remove duplicate lines based on their key.

</comment><comment><USER2> What is your expected merged.env content? Lines from which file take precedence? Listing it will help understanding your use case.

<comment><AUTHOR> specific overrides base. top down.

Could be whatever way you want it to be really, but that's the case here.</comment></comment>


Antisocial Coding: My Year at GitHub - <AUTHOR> http://where.coraline.codes/blog/my-year-at-github/?stopflagging <comment><USER2> This is one side of a certain perspective.

From _my_ personal perspective githubs "inclusivity" has caused me to run a personal gitlab server.

I don't write code to get harassed about my use of master/slave vs primary/replica. I just write code.

I wrote a very poorly edited piece on why I thought this way: [https://blog.dijit.sh/moving-away-from-github](https://blog.dijit.sh/moving- away-from-github)

I freely admit that this is not a popular opinion on hackernews. But as a very disadvantaged and underprivileged person I am rather uninspired by the equality of outcome movements that are wofting over silicone valley, and I highly doubt that the actions described in TFA are accurate.

<comment><USER3> > I don't write code to get harassed about my use of master/slave vs > primary/replica. I just write code.

If all you're there to do is write code, then why even have an opinion on master/slave vs. primary/replica? Caring which is chosen is the opposite of "just coding", so if people prefer primary/replica—which many people do—just change it and get on with the coding. Fighting against it is a complete waste of time. If you spend your time arguing about it, then your claims of "I just write code" are suspect.

<comment><USER2> I shouldn't have to go and change code based on political crap- they come for slave now, what do they come for next.

the goalposts are ever moving. Fuck all that.

Also, despite the downvotes I think these kinds of dissent against popular opinion need to be shared. I'm sick of pandering to the liberal agenda. I'm not right wing and I respect everybody but there's far too much focus on women and minorities. -- like I said before nobody gave a fuck when I was from a white trash background. I got a job because I was the best that applied for the position, I worked hard for that, damn hard.- I certainly didn't get any help because I was white. I didn't even get a job in my country to begin with- so I was just as disadvantaged as any other migrant at the time.

</comment></comment></comment><comment><USER4> I'm so sorry that this happened to the author.

I'm also very surprised (and a bit suspicious) that this post was "dead" \-- I was about to post the article myself before googling it, and discovering it here. I don't understand why this has been flag-brigaded. This article is absolutely on-topic for Hacker News.

<comment><USER5> A _duplicate_ submission (just 7 hours after the original) was dead (presumably flagged as a _dupe_ ).

The original submission is alive and well (530+ points, 360+ comments, and made immune to flagging by dang, per his comment):

[https://news.ycombinator.com/item?id=14703661](https://news.ycombinator.com/item?id=14703661)

Nothing suspicious at all, to my eye.

<comment><USER4> Oh, gosh, my bad. My google-fu failed me. Thanks!

</comment></comment></comment><comment><USER6> Before saying this is just one side of the story, ask yourself why nobody questioned Zach Holman's post that narrated his firing from GitHub. [https://news.ycombinator.com/item?id=11299310](https://news.ycombinator.com/item?id=11299310)

</comment><comment><USER7> _I have bipolar depression and was already in a bad place mentally, so I found myself feeling crushed and hopeless_

My sense is that, in this post, we are getting one of many, many sides of this story.

</comment><comment><USER8> That's a horrible story. I'm sorry that happened to you.</comment>


Xbox Music - Now available on the web - <AUTHOR> http://www.xbox.com/en-US/music?web <comment><AUTHOR> I found it hard to find the price on any of the pages, but it looks like it's $9.99/month or $99.99/year</comment>


The Myth of the Immortal Hamburger - <AUTHOR> http://aht.seriouseats.com/archives/2010/11/the-burger-lab-revisiting-the-myth-of-the-12-year-old-burger-testing-results.html

<comment><USER2> I'm upvoting this partly because it's by J. Kenji (Lopez-)Alt, whom I have regarded as a sort of culinary god ever since I first encountered his awesome piecrust recipe in _Cooks Illustrated_ a few years ago.

(The piecrust is made by substituting vodka for much of the water, which allows the dough to be rolled out without encouraging too much gluten formation and thereby making the crust tough. It is perhaps a shade too much on the crumbly side but makes up for that by being _outstandingly_ tasty, it has now utterly spoiled my taste for the majority of store-bought pies, and it has convinced my friends that I, in turn, am some sort of culinary god, even though this piecrust recipe is _idiotically simple_ , actually simpler than regular piecrust, if such a thing is possible. The lesson here is: Subscribe to _Cooks Illustrated_ and make your loved ones' lives better.)

<comment><USER3> Not to mention his reverse engineering of the animal style In-N-Out burger. The Burger Lab has changed my entire perspective on the perfect burger.

[http://aht.seriouseats.com/archives/2010/07/the-burger- lab-h...](http://aht.seriouseats.com/archives/2010/07/the-burger-lab-how-to- make-an-in-n-out-double-double-animal-style.html)

<comment><USER4> Dang it all, I may have to start cooking now.

<comment><USER5> You don't cook? I'm surprised tptacek doesn't bug you every day about starting.

<comment><USER6> Why am I the one bugging him? mechanical_fish is the one making pie crusts with vodka.

<comment><USER5> The frequent posters on this site end up being boiled down to bullet-point caricatures based on what I remember from their posts.

I guess yours would be:

* Knows lots of technical details about security and cryptosystems.

* Voice of reason to balance out the usual internet opinion of "the sky is falling and its Microsoft's/Google's/Apple's/the government's fault".

* Likes cooking, especially whole pigs and sous vide, although not necessarily together.

* Friends with Patrick.

I hadn't noticed mechanical_fish's name before, but I will now remember him as the guy who makes pie crusts with vodka.

<comment><USER7> My stereotype as well, although I'd add

* Eternal foil for cpercival on the advisability of designing encryption systems

I think I've learned more during their dialogues about cryptology than I have from years of reading Bruce Schneier's blog.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I love examples where people use the actual scientific method to test conventional wisdom. This is a good experiment. I would love to see it replicated by other groups (.e.g Mythbusters) to confirm or deny the results.

There is also a similar myth for McDonald's french fries. It would be nice to see those tested as well.

<comment><USER9> Why WOULD McD's fries rot? They are saturated in oil, and oil does not rot.

<comment><USER8> Good point, but lets back it up with a controlled decay study. In keeping with the theme of the topic. =)

<comment><USER10> French fries are made by expelling moisture, and are then saturated in oil at which point a crust forms on it. I don't think this warrants and experiment as the results are pretty obvious :)

<comment><USER11> Congratulations, you've just failed at science. Saying that a result is obvious and therefor the experiment is not worth performing is ... well, I'm having trouble coming up with how to describe it without insulting you. It's certainly not scientific, though.

Just because results are a forgone conclusion doesn't mean that it's not worth testing them. Just because you think that your hypothesis is very strong does not mean that you can skip testing it.

<comment><USER10> No I haven't, it's been done and tested a gazillion times and been explained by people more adept to science than you and me. I don't need to dip my foot in the water to figure out I'm going to get wet.

</comment></comment></comment></comment></comment></comment><comment><USER12> half way through and having a hard time not running to the local McDonalds to buy a burger (to eat!!).

<comment><USER13> fatass.

</comment></comment><comment><USER14> For those interested in a related Wikipedia odyssey, check out Water Activity <[http://en.wikipedia.org/wiki/Water_activity>](http://en.wikipedia.org/wiki/Water_activity>), then hit the "shelf stable" link and move on from there.

</comment><comment><USER15> Come on guys, this belongs on reddit. Stop screwing up the S/N ratio.

</comment><comment><USER16> I stopped eating McDonald's burgers years ago, when I accidentally dropped one on the floor at home while taking it out of the bag. I tossed it out the window for the birds to deal with.

A week later, it was still untouched. Even the goddamn _crows_ wouldn't eat it.

That's when I realized that the critics were pretty much right about McDonald's. Whatever those guys are selling, be it harmful or benign, it doesn't qualify as "food."</comment>


A Better GitHub Issue Queue - <AUTHOR> http://octokan.com/

<comment><USER2> I like the alternative interface for managing issues, and it is nice that I could use this for some public repos that get a lot of issues and pull requests.

One nice enhancement would be a simple toggle for hiding labels with no issues.

The lightbox approach to presenting an issue seemed a little funky - mostly in that it just feels like it is not a "real" part of the interface since it is shown in a small column. I also noticed some issues with URLs overflowing the lightbox.

Speaking of GitHub Issues - the biggest, simple change I can imagine GitHub making to Issues is allow repository owners to add a small readme to the New Issue page. It would help a lot in explaining what a good bug report looks like and where else to get help.

<comment><USER3> For the readme on new issues, I think it is automated by simply adding a 'CONTRIBUTING[.md|.rst|.txt]' to you repository. You can see this happening for celery ([https://github.com/celery/celery/issues/new](https://github.com/celery/celery/issues/new))

<comment><USER4> So many magic files flying around ;)

</comment></comment></comment><comment><USER5> Really cool, but it seems I don't have authorization to manage the issues of someone else's repo on which I am a collaborator. Maybe just a limitation of Github's api?

</comment><comment><USER6> Another similar project is Huboard. Demo at [https://huboard.com/captn3m0/potion/](https://huboard.com/captn3m0/potion/)

<comment><USER7> In addition to Huboard and Octokan, there are a few more of these "Front-end for Github Issues" projects:

TaskTub: [http://www.tasktub.com/authentication/login](http://www.tasktub.com/authentication/login) Waffle.io: [https://waffle.io/](https://waffle.io/) BugHub: [http://bughubapp.com/](http://bughubapp.com/) (though since abandoned?)

Sprintly also has awesome Github integration, but they are explicitly NOT a front-end for Github Issues, so works best with private repos for larger teams (imho). They integrate well with Github, not necessarily Github Issues (a slight, but key difference).

</comment></comment><comment><USER8> This is exactly what I've been waiting for, once the multiple repos feature has been added.

</comment><comment><USER9> I like the idea, but the server appears to be melting right now. :)</comment>


Open Source Search with Lucene & Solr - <AUTHOR> http://www.igvita.com/2010/10/22/open-source-search-with-lucene-solr/

<comment><USER2> For anyone who would like to take Solr for a spin, I invite you to check out nzadrozny's and my startup: <http://websolr.com/>

We are a bootstrapped startup providing managed Solr hosting in the cloud (currently EC2). We're all about making the operational side of high performance Solr hosting as one-click easy as possible, so developers can focus their time on doing cool stuff with it.

We love HN and are frequent commenters/lurkers around here, so we made a "HN10" coupon which you can use on signup to get a month of our Silver plan for free.

<comment><USER3> I really like the idea of this service. The difficulty is, I'm not seeing any "Getting Started with Websolr" guide to understand how difficult it is to get working with you. Where would that be?

In my ideal world you would have a demo instance or two where we could connect/query arbitrary test data to understand performance/behavior/etc before we signed-up to host real data there.

<comment><USER4> Yeah, great points. Thanks for your feedback! Better general documentation is pretty high on our list right now.

To answer your immediate question: we started as a Heroku add-on, so you might take a glance at our documentation there (<http://docs.heroku.com/websolr>). It's targeted at Rails applications using Sunspot, so ymmv. We're working on creating and compiling similar guides for other platforms as well.

Seems like it's high time for us to do a "review my startup" post… ;)

</comment></comment></comment><comment><USER5> Riak Search has been released recently. It's got Lucene and part of the Solr HTTP API built-in.

Basically you push json/xml/whatever documents into buckets. The docs will be indexed, i.e., by field names (json & xml) or simply fulltext. It is pretty cool because it's based on Riak Core and thus has the same benefits as Riak K/V. Lucene runs transparently in the background - afaik you never even have to touch it.

Read more in their wiki: <https://wiki.basho.com/display/RIAK/Riak+Search>

Especially: [https://wiki.basho.com/display/RIAK/Riak+Search+-+Indexing+a...](https://wiki.basho.com/display/RIAK/Riak+Search+-+Indexing+and+Querying+Riak+KV+Data)

</comment><comment><USER6> We use an Enterprise Search Platform (our biggest software acquisition) minus the support (another dumb idea). The entire thing is like a Black Box. It takes days to figure out what "Error: FS error" actually means. For a new project, we used Solr to maintain a smaller index and have never looked back since. Anybody about to start building a search index, Lucene/Solr is the way to go.

<comment><USER7> I've been using Solr for some pretty heavy lifting, and it's incredibly impressive. Rock solid, extremely advanced analysis and search capabilities, and the performance is amazing if it's on suitable gear. Time invested in learning it pays off big.

I'm familiar with the enterprise black boxes you're talking about - I probably know the specific one you're tormented by. I've seen the licensing fees alone lead large companies to drop rows from their front-end stores to avoid going into a new pricing tier (takes balls of steel to charge by the record, I must say), and I've seen competitors fold at least in part due to the expense of paying for the thing.

A lot of startup folks getting excited about NoSQL seem to have passed over Lucene/Solr completely, and I think it's worthy of much more consideration than it gets. It's mature, it's _fast_ , and the people working on it live and breathe the problem space.

There are undoubtedly devs out there badly needing powerful analysis and search to execute on their vision, but who will end up suffering with half- baked solutions for lack of even _hearing_ about Solr, much less giving it a try.

<comment><USER6> I feel another issue is that management sometimes feels that paying big bucks means your rear end is covered. It takes a lot to convince them that this is free and works great at the same time. Whats more, the community is great!

</comment></comment></comment><comment><USER8> Haystack for Django is a really nice way to integrate with these systems. You can use lucene, solr, or whoosh as backends for your search.

<comment><USER4> Sunspot for Ruby is another good Solr client that's popular with Rails applications.

<http://github.com/outoftime/sunspot/>

While Solr's API is pretty easy to work with directly, there's definitely something to be said for using a quality client for your platform.

</comment></comment><comment><USER9> At Creative Commons we use Lucene/Nutch for our educational search prototype DiscoverEd: <http://wiki.creativecommons.org/DiscoverEd>

It was easy enough to add in our special sauce like a triple-store for consuming and displaying semantic data (I guess I can say easy since I didn't do it myself).

<comment><USER10> I would say it's pretty easy if you are technically inclined. When I implemented the first iteration of my text search engine using Lucene, I didn't even know Java but I was able to write my own custom tokenizer and get it to index and retrieve results from the index in about 6 hours.

I highly recommend you get the book "Lucene in action" as it gives solid examples that you can build upon.

</comment></comment><comment><USER11> I'm a fan and contributor to Lucy, which is mentioned briefly in the header: <http://incubator.apache.org/lucy/>

While Lucy did start out as a C port of Lucene (hence the name), it's since broken any attempts at Lucene compatibility. Instead, it's aiming to be a fast and flexible standalone C core with bindings to higher level languages. Since it's growing out of Kinosearch, it's best developed bindings are in Perl, but support for all the usual suspects (Python, Ruby, etc.) is planned.

Technically, the main difference from Lucene is that it gets cozier with the machine: the OS is our VM. It's mostly mmap() IO, and we're very conscious of paging and cache issues. While we're trying to maintain 32-bit back compatibility, we take full advantage of 64-bit solutions when they offer themselves. The scripted bindings are also very cool --- you can do things like make callbacks to scoring methods in your script language to truly customize your results.

If for some reason you're not finding what you need in Lucene and Solr, check it out. We just became a full Apache incubator project, and are eager to get more developers involved. You'll find clean C code, decent documentation, and a low traffic but very responsive list. If you're using Perl, C or C++, you'll get a great product from the start. If you're using anything else, you'll have to help a lot on the bindings, but I think you'll be quite pleased with the end result.

</comment><comment><USER12> Lucene is great but I wish schemas were an optional part of Solr. They add complexity and take away flexibility. If you have a photo database where you want searchable metadata describing the subject of the photographs, you can do this easily and naturally in Lucene. But Solr requires you either (1) prefigure available metadata or (2) expose field typing details to your users (so a field for birthday is actually "birthday_d", with the "_d" indicating it's a date). Both of these are very unattractive to me.

The worst part is that I have no idea what benefits schemas are supposed to bring me. The documentation vaguely promises that schemas "can drive more intelligent processing", but I have a feeling I could get that more easily without schemas. It also tells me that "explicit types eliminate the need for guessing of types," but only, apparently, by requiring users to _understand and remember_ them.

<comment><USER7> Schemas are an optional part of Solr. Pretty sure that the default schema.xml has an example of a catch-all field definition, if you use that it will automatically deal with any key you want to throw at it.

Of course you need to specify one field type (analysis stack) to apply to all, but I don't know how you expect to avoid that - gonna have to express that metadata _somewhere_ if you need more complex behavior.

Personally I think the _d, _i approach is ok, suffixes aside - complex field analysis options w/o a schema.

</comment></comment><comment><USER13> So has anyone used this combination for realtime and historical log searching (like what Splunk offers)?

<comment><AUTHOR> Yep, take a look at loggly.com - AFAIK, a bunch of ex-Splunk guys. They're building their system on EC2 + SolrCloud.

<comment><USER14> +1 for loggly -- check out logstash <http://code.google.com/p/logstash/>

<comment><USER15> Be sure to check out Jordan Sissel's Grok as well: <http://code.google.com/p/semicomplete/wiki/Grok>. It's a field extractor.

<comment><USER14> Definitely. Just about anything Jordan makes is probably worth checking out, actually.

</comment></comment></comment></comment></comment><comment><USER16> Any experience on how Lucene/Solr stacks up against other search tools such as Sphinx or Xapian ?

<comment><USER17> Not sure if you're asking about indexing speed/size, precision/recall and the 2 or 3 dozen config options (separator/tokenizers/analyzers, stopword, index to ASCII or Latin-1, AND/OR search terms), etc.

What I recommend for precision/recall /config options is that your platform (rails, django, java, PHP) probably has plugin for SOLR and sphinx. Set up 2-4 indexes using the config options that matter most to you (for me they're AND- OR of search terms, and stopwords, which i use in lists of 0, 50, 100, 150). Then do a (sort of) A-B test where you see which records one index picks up that the other misses. (Most people recommend not using any stopwords if you're only using one index, but i never got decent results using only one index)

P.S. Solr is the 800-pound gorilla, has the terrific Manning book, zillions of docs, etc. Sphinx probably covers most people's needs config-option wise(at least for European languages) lightning fast to index, and runs in 256M VPS, no tomcat/jetty.

</comment></comment><comment><USER18> I prefer <http://aspseek.org></comment>


Controversial hack to effect change in US Copyright system - <AUTHOR> Hey Hacker News.
I guess I often think like a hacker or a mathematician, in that I consider the simple component parts, and imagine them in different combinations, and try to extract general principles of things.
Something about copyright has always seemed very anachronistic to me. I mean, I know it's the law, and yet it's so hard to enforce, ever since the means of copying has become electronic.
In fact, a monopoly over intellectual property seems somehow inherently wrong to me. Never mind the fact that long-lived software patents are harmful in such a fast-moving industry, or that worked composed after 1930 will likely never enter the public domain, thanks to lobbying of the Congress every few years by special interests to extend the term of copyright. Never mind the efforts by the RIAA that bear a resemblance to extortion. The very principle that someone should have absolute say over who in the world can make a copy or derivative work of something they have released, seems to be flawed. If you don't think so, read on.
Certainly changing the situation by argument is not going to be easy. Lots of people may argue one way or the other, but policy is usually decided when issues come to a head.
I am considering doing an extremely controversial hack in order to highlight the problems with the copyright system. From what I know, the hack is completely legal, because of the very law that is in place. It can generate a lot of money for anyone who reads this and decides to do it, and at the same time if enough people do it, it will gain media attention and lawmakers will have to rethink copyright policy. But at the same time I AM NOT RECOMMENDING IT TO ANYONE because I am not a lawyer. Check with your lawyer before attempting this. I am just thinking out loud at this point and this is not legal advice or encouragement to action :)
Here is the hack:
A pyramid scheme is illegal, because it exists solely to make money from new people signing up. A multi-level marketing scheme on the other hand is legal, and the major difference is: there is a product, and the focus is on selling the product, not on signing people up.
Well, you say, why not turn a pyramid scheme into a multi-level marketing scheme by simply selling "air" as the product? Well, the product has to be something that people want. Enter... COPYRIGHT.
1) Make a copyrighted work of actual value. Say, a computer program, a recipe, an e-book, or just a nice painting.
2) Sell copyright licenses in the following way: if any person buys ONE copy of your work, they then can get commissions if they refer buyers to you. That is the ONLY way to become an affiliate.
3) Any affiliate can get commissions up to, say, 4 levels deep for copies their buyers helped sell to others, etc.
Remember, due to copyright law, you have absolute say as to who has a license to copy the book and who hasn't. You simply set the rules to make it a multi-level marketing scheme.
Except what is the difference between this and a pyramid scheme? How much does it cost to copy the book? Practically ZERO. Unlike Amway, Mary Kay, Herbalife and other companies that have done MLM with actual products, this has almost ZERO transactional cost and negligible cost per item sold, and the marketing is viral. The copyright law currently applies equally to electronic copies that cost $0 to produce and tangible physical copies.
The economics of this MLM scheme are exactly the same as a pyramid scheme. If someone challenges the legality of this, you just point them here: http://www.copyright.gov/title17/ and explain that you as the copyright owner are the sole arbiter of who can sell your copyrighted work and how, and you are at liberty to compensate whomever you wish for selling your work with a commission.
I AM NOT A LAWYER. PLEASE CHECK WITH A LAWYER BEFORE DOING THIS. But it seems to me that selling copyrighted works this way is completely legal. But should it be legal to make what is effectively a pyramid scheme? If not, then perhaps the very principles of copyright today needs to be rethought. And the hackers can trigger it.
Anyway, just a thought.
(Copyright 2010) <comment><USER2> You talk a lot about how copyright "seems" to you. If you want to change copyright, maybe you should first try to upgrade "seems" to "is". Generally, it is a good idea to understand a subject if you want to change it.

There's a good article from Justice Breyer (from before he was on the Supreme Court) called "The Uneasy Case for Copyright" where he concludes that strong copyright protection is not justified. There's an interesting analysis of Breyer's arguments by Landis and Posner (big names in the area of applying mathematical economics to the law) concluding that as copying has become easier, Breyer's arguments have become weaker.

These articles could be a good start for someone who thinks like a hacker or mathematician.

<comment><AUTHOR> Thanks, good ideas. Do you think the proposed business scheme I said is legal or not?

</comment></comment><comment><USER3> So if I'm understanding this correctly:

1\. You sell books, and make some money off of the sales.

2\. A commission is paid for each sale, to between one and four "referral sources."

Isn't this what every author does, except #2 is called an advertising fee?

<comment><AUTHOR> Yes, the only difference is that to become an affiliate, you must first buy a book, making it an MLM scheme.

But since the cost of producing and delivering an extra copy of your book is essentially zero, we have created a legal system with the same economics as a pyramid scheme. Right? So is it legal?

<comment><USER3> Here is a definition of a pyramid scheme:

 _pyramid schemes — also referred to as franchise fraud or chain referral schemes — are marketing and investment frauds in which an individual is offered a distributorship or franchise to market a particular product. The real profit is earned, not by the sale of the product, but by the sale of new distributorships. Emphasis on selling franchises rather than the product eventually leads to a point where the supply of potential investors is exhausted and the pyramid collapses._

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

Seems like, under that definition, the question is whether people are paying you for the book, as opposed to paying you for the right to engage in the pyramid scheme.

Remember, copyright law gives you a right to exclude, but it does not absolve you of other legal obligations. For example, you can commit antitrust-like violations using a copyright (this is called "copyright misuse"). So if your scheme is indeed a pyramid scheme that violates the law, then copyright will not protect you.

That said, I'm just hypothesizing on facts I'm imagining, so obviously consult a lawyer with any real situations.

<comment><AUTHOR> It says there:

"pyramid schemes — also referred to as franchise fraud or chain referral schemes — are marketing and investment frauds in which an individual is offered a distributorship or franchise to market a particular product. The real profit is earned, not by the sale of the product, but by the sale of new distributorships. Emphasis on selling franchises rather than the product eventually leads to a point where the supply of potential investors is exhausted and the pyramid collapses."

in this case there is a real product, even though each extra copy costs $0

secondly, we can't really prove one way or the other -- after all the ebook might be useful for some people, who is to say the "real" profit is earned by selling the option to be an affiliate and not the product, since you get both at the same time

and thirdly, ANY copyrighted work needs to be bought only once if the user keeps the copy in good condition, so the supply of potential buyers will be exhausted and sales of the book will diminish as the market is saturated

<comment><USER3> Ah, this is helpful, as I think it highlights the point of disagreement. If you are of the view that an MLM scheme is legal if there is a "real product" that "might be useful for some people," even if that product is a zero-cost ebook, then I think that this is oversimplistic and you would have to consult a lawyer on it. As I mentioned above, the mere fact that you have a copyright backing a pyramid scheme would not necessarily absolve that scheme of responsibility. My guess is that other factors, such as how you advertise the scheme, would be relevant.

<comment><AUTHOR> Perhaps it is oversimplistic, but it seems to me that the copyright law makes a category error - it equates a license to make a copy with an actual "product" with resale value - even though there is an unlimited supply of it, and in doing so, makes the MLM scheme totally legal.

</comment></comment></comment></comment></comment></comment><comment><USER4> There are already such schemes in place. They sell a booklet called something like "How to make a lot of money" for $500 and then if you get enough stupid people to buy the book, you're in the money. If everyone below you thinks the same, you make more money. The people at the top end up realizing "the dream".

<comment><AUTHOR> Does that sound the same as:

You simply make an ebook, sell it, have an affiliate program whose only condition is to buy the book, and make it a multi-level affiliate program.

<comment><USER4> Like that, only self-referential (the book is the manual on how to sell the book); the punters end up trying to recoup their losses by finding like-minded idiots. Greed and stupidity are great incentives.

</comment></comment></comment><comment><USER5> This isn't a hack at all, it's just a standard chain letter-like pyramid scheme. Legal mumbo-jumbo doesn't change it, and copyright protection doesn't make it legal.

<comment><AUTHOR> the license is the good, but thanks to our old friend the COPYRIGHT system, the license is treated as a bona fide product that you sell. After all, copying is stealing right? :) Don't pirate my ebook!!

</comment></comment><comment><USER6> I do not think that this scheme would be effective toward your goal and it may be illegal, but I am interested in the discussion that it might incite.

</comment><comment><AUTHOR> The point of this hack is to prompt a rethinking of the copyright law, by testing what happens when it is used to create an MLM scheme that has all the economics of a pyramid scheme:

You simply make an ebook, sell it, have an affiliate program whose only condition is to buy the book, and make it a multi-level affiliate program.

Here is the question: is the proposed scheme LEGAL (as I believe it is) because of the law's current thinking about copyright licensing, or is it ILLEGAL, because its economics are exactly the same as those of a pyramid scheme (minus the initial cost of making the copyrighted work), and thus may have the same undesirable consequences? And if it should be illegal, then let's trace it back to WHY copyright enables it to be legal.

</comment><comment><USER7> An interesting idea in theory, but I'm pretty sure this has been addressed:

<http://en.wikipedia.org/wiki/First-sale_doctrine>

<comment><USER8> However this only apply unto the a copyrighted work without explicit license. By only allowing the use of the copyrighted work with a explicit license that prohibits this, you can cancel out this effect (which is what EULA is for)

I AM NOT A LAWYER. PLEASE CHECK WITH A LAWYER BEFORE DOING THIS.

</comment></comment><comment><USER9> Let's suppose it's legal.

What do you hope will happen? I can't imagine a sequence of events that starts from your scenario and ends in changing copyright laws.

What sequence of events do you have in mind?

</comment><comment><USER8> You should start selling this piece using the scheme.

(Copyright 2010)</comment>


What is the best CSS book? - <AUTHOR> I'm wondering, what is your favorite CSS book?  The one that was the most clear and helpful. <comment><USER2> CSS Mastery for me is THE book on CSS. Although its old because at the time the book was written, IE7 was not officially in the market yet. It contains a lot of step-by-step solutions for common real-world css problems, along with browser gotchas and hacks when necessary. Particularly useful if you plan to support IE6 for pixel-perfect layouts.

<comment><USER3> I agree, you can't go wrong with CSS Mastery. It's also concise and very well written.

</comment></comment><comment><USER4> The Zen of CSS Design for me.

It takes submissions to the CSS Zen garden and uses them as examples of what techniques you can use for layout, typography, images, etc

It suits my learning style of visual diagrams and reverse-engineering things to see how they work.

[http://www.amazon.co.uk/gp/product/0321303474?ie=UTF8&ta...](http://www.amazon.co.uk/gp/product/0321303474?ie=UTF8&tag=newcarto-21&linkCode=as2&camp=1634&creative=19450&creativeASIN=0321303474)

<comment><USER5> Heh, never even knew there was a book for <http://www.csszengarden.com/> (or was it that the garden was for css zen), still I probably got the most from doing little zengarden mock-ups; ya know sort of like a time-trial. . .[ramble]. . .Coming to back to the web to the without tables was probably my biggest hurdle, but doing enough stuff in the spirit of zengarden really helped out. These day though I find myself having a harder time getting inspired to start something fresh in Photoshop than anything in my text- editor. Once you stop thinking and developing in terms of a graphics editor you will start seeing and thinking in terms like this, how do I want my user to interact with this document?

I honestly couldn't really recommend a book though, CSS doesn't necessarily require a text to understand how to format a hyper-text document, other than that, I don't think there isn't much else I could recommend besides just dive into an xhtml document and start formatting your view according to something that catches your eye on the web.

Cheers

</comment></comment><comment><USER6> _Bulletproof Web Design_ is the only CSS book I have liked enough to buy so far. Hopefully, our peers have other suggestions. I would like to learn more.

<comment><USER7> I did like both books by Cederholm, so I also recommend _Web Standards Solutions: The Markup and Style Handbook_

</comment></comment><comment><USER8> HTML with CSS and XHTML by Elisabeth Freeman & Eric Freeman seemed like a breeze to get through, and very easy to understand. I recommend starting here. But who am I!

</comment><comment><USER9> The definitive book is Designing with Web Standards. Not all CSS per se, but it is requisite reading if you're just getting into the whole CSS-based design thing.

That book goes hand in hand with Eric Meyer on CSS.

</comment><comment><USER10> Not a book, google.

CSS is such an evolving art - browser inconsistencies and their related hacks are constantly changing, and best practises are continually being developed.

It seems ironic to me that you would revert to using dead-tree media for instruction on how to style the cutting edge. If you simply need an introduction to css then w3schools can't be beat.

Oh, and I also own zen of css design, which is pretty good if you must have a physical book.

</comment><comment><USER11> Not a book, but I would highly recommend a web dev. plugin for Firefox such as Firebug that lets you view CSS attributes on every element in a page, as well as edit the CSS and see live changes.

<comment><USER12> I second that. I also pick and implement depends on what is need at the time. Example of when i need list: <http://css.maxdesign.com.au/listutorial/>

</comment></comment><comment><USER13> Handcrafted CSS: More Bulletproof Web Design (Rough Cuts)

Flexible Web Design: Creating Liquid and Elastic Layouts with CSS (Just released)

Trascending CSS (Released)

Learning the Yahoo! User Interface library: Develop your next generation web applications with the YUI JavaScript development library (Released, for yui and some javascript)

I want them but don't have money.

Have a look at OOCSS: <http://wiki.github.com/stubbornella/oocss>

And CSS Discuss: <http://css-discuss.incutio.com>

<comment><USER14> All but one of those (the yui one) is available on Oreilly's Safari bookshelf. ~$40/month is nothing to scoff at but if you're in an intense learning period, I find that it is a no brainer (you don't need to agree to more than a month).

</comment></comment><comment><USER15> CSS: The Missing Manual was a great starting point for me. I still use it as a reference but I mostly just find things on the web. Smashing Magazine has some good stuff -- <http://www.smashingmagazine.com/category/css/>

</comment><comment><USER16> Lynda.com has a set of great screencasts that go over basic and advanced CSS with Andy Clarke. I would recommend those.

</comment><comment><USER17> Trascending CSS

</comment><comment><USER18> Eric myer on CSS

<comment><USER19> I think you mean Eric Meyer and the book Cascading Style Sheets, The Definitive Guide (<http://meyerweb.com/eric/books/css-tdg/>). I really like this book and highly recommmend it.

It hasn't converted me into a CSS fanatic, but it has helped me learn the tech and write better CSS when needed.

<comment><USER20> No, I believe there is also an "Eric Meyer on CSS". Not that the Definitive Guide isn't also a very good book.</comment></comment></comment>


Secrets of the US Puzzle Championship (2014) - <AUTHOR> http://mentalfloss.com/article/59132/secrets-us-puzzle-championship <comment><USER2> Mods: could we add (2014) to this?

It looks like you have to register to get the puzzles from [0]. Kind of a bummer because the solutions appear freely available.

[0] [http://wpc.puzzles.com/uspc2014/](http://wpc.puzzles.com/uspc2014/)

<comment><AUTHOR> Yea, it doubles as the submission portal for the actual competition. I grabbed all the test and practices going back to 1999 and decrypted them but I'm not sure it'd be a good idea to drop box them or something.

<comment><USER3> Maybe you could screencap and put them on an image hosting site, imgur for example. It would be greatly appreciated thanks.

<comment><AUTHOR> I mean, I have the PDFs. donno what the point of imgur would be besides randomization.

<comment><USER3> I meant in order to increase accessability, personally I prefer it to downloading files where I can help it.</comment></comment></comment></comment></comment>


Ask HN: Benefits of a desktop system? - <AUTHOR> I have recently been contemplating on getting a Mac mini for personal use. Before then I have been using laptops.
I mentioned my desire to a friend who strongly argued for laptops, saying that you can make it like a desktop at home by adding monitor, keyboard, mouse, etc and still have it portable.
What is the HN community's opinion on the matter? I would really like to know what benefits have been perceived from just having a desktop opposed to a laptop/desktop hybrid.
* I understand that there are specs to also consider, but I'm more interested in people's personal opinions, rather than the specs. Thanks <comment><USER3> To be honest, I'm perhaps a bit 'special' but my linux workstation is i7 5930k (6 cores, 12 threads) overclocked to 4.5Ghz, with 64GB of ram, and 2 BenQ 32" 4K screen. I'm reasonably sure I can find something that big as a laptop!

Laptops are also _massively_ more expensive than an equivalent desktop, while /most people/ never move their laptop anyway.. I never really understood that. In fact, that big system's entire hardware is very likely considerably cheaper than a 'developer laptop'.

Personally, I use a crummy laptop if needs be, and I remote into the big workstation from wherever I am (I use x2go a lot).

<comment><USER4> > Personally, I use a crummy laptop if needs be, and I remote into the big > workstation from wherever I am (I use x2go a lot).

How does it handle having a massive resolution on the remote side, and a way smaller resolution locally?

<comment><USER3> x2go can make you two types of sessions 1) the 'local screen' one that will have that resolution problem and 2) a 'detached' one that will be the size you like, for example fullscreen laptop sized.

The 'detached' kind are quite a bit faster somehow, so I use that, and often re-connect to it from the local screen in a window when I get back to the desk.

It's surprisingly practical, as my 'detached' session usually have a different window layout, tools etc.

</comment></comment></comment><comment><USER5> My Fractal Design define R3 case has contained 2 different motherboards so far, 2 power supplies, it has seen a lot of disks and has contained various amounts of RAM over time. It is a pleasure to open it up an play with it. I think this case will last for a long, long time and will contain ever increasingly modern hardware, to be upgraded in small steps. I can't see myself do that with a laptop.

<comment><USER3> I also have a R3, it's very nice, understated (doesn't look like a transformer's idea of a PC) and very, very quiet.

And I'm the same, I regularly upgrade bits, it's easy, and quite cheap too.. DDR4 memory is quite cheap at the moment for example, so I stocked up the mobo, that should do me for a few years!

A note tho, every 6 months I take the PC down, remove the case panels and give it a good clean, remove the dust etc. I take particularly good care of the bits that are harder to service, like the graphic card fans..

</comment></comment><comment><USER6> I have used my MBP in a TwelveSouth BookArc with Apple BT keyboard and touchpad. MBP gets rather hot in spite of being in a ventilated position. You have to leave it plugged in for the MBP to work in closed-clamshell mode. Doing so I think I've cooked the battery. I'm only getting about an hour or so use when not plugged in. And the fan runs flat out.

I have since built a desktop with 2x24" screens, SSD+HD and using the BT keyboard and touchpad with it. The MBP is back being used on the road - <USER2> need to replace the battery.

In hindsight, I should have gone straight to building the desktop and using a ChromeBook on the road.

The Mac mini is nice, but think you get better value for money using a standard desktop. As many HNers have pointed out as far as bang for buck goes, laptops are expensive to buy and even more expensive to upgrade or repair.

</comment><comment><USER7> Personally I just like having a workstation and tend to want to do work at my desk. Portability is not a major need for for my computing. It is good to have a laptop but I don't need a killer one.

I have a Mac mini, which I purchased a few years back before I got into coding and more seriously interested in computers. Now I am planning on upgrading over the next couple of months and have been learning about building my own PC. If you are married to Mac OS, buying an apple may be the way to go (I can't speak to the merits of a hackintosh), but I highly recommend learning about building your own pc. It's a lot of fun and pretty easy.

If you're interested, let me know and I can send/post some getting started resources.

Finally, desktops are just going to be generally more powerful. For example, if you want to run 3 4K monitors you're really not going to be able to do that on a laptop.

<comment><USER6> Linux supports desktops like LXDE which can look very much like OS X (or Windows). LibreOffice is a viable alternative to MS Office. As for development work, most tools are available on Linux.

Obviously if you are developing for iPad, iPhone then you are better off with Apple hardware, OS X & X-Code.

</comment></comment><comment><USER8> For me, it's simply because it's been incredibly easy to swap out broken parts as they come and go. I don't have extreme performance needs with my main machine, and various spare computer parts always find their way into my life, so it's been very cheap to maintain from the beginning, and I don't have worries about running it into the ground.

Laptops and other portables are harder in this regard, especially regarding batteries and intense usage. Other then that, I really don't see how adding keyboard/mouse/screens couldn't do the same thing though really. In fact my plan is to masquerade a laptop as my main desktop computer to save space and use less electricity. It will have no other purpose then to be my "desktop" as I have another laptop better suited for portability and battery life. Built-in power backup for my main rig is a plus though!

</comment><comment><USER9> I don't care about portable. How often do I want to use a computer to make something somewhere that's not the office or at home? Never, in my experience.

"Well, you can hook it up like it's a desktop."

The laptop may be portable, but the monitors and peripherals definitely aren't. That setup isn't portable, only the laptop part of it. In the event that I hook it up like a desktop, I'm paying more for the privilege of having an under-powered desktop running whatever god-awful driver collection goes along with it's cruddy components and not infrequently pre-loaded with a bunch of bloatware as part of the install that has those drivers (often hard to find otherwise.)

For me, the desktop is the clear preference. If I want portable, I'm just consuming content - a tablet will do fine for that.

<comment><USER6> Unless you use a docking station it becomes a chore to plug & unplug the monitor, external hard drive, network, etc every time you switch between desk and portable modes.

</comment></comment><comment><USER10> 1\. Even pretty cheap desktops can be packed loads of memory, and can run a lot of virtual machines.

2\. You can easily swap out/upgrade components.

3\. If you are running the system nearly 24 hours a day, a desktop might cope much better than a mid range lap top (regarding life of the components). So use the laptop only while you are traveling or for a demo. When you are home, use the cheap but powerful desktop with loads of memory and easily replaceable components.

Cons are that Desktops consumes a lot more power and generate a lot of heat. and that might be good or bad depending on your climate.

<comment><USER11> Cons are that Desktops... Not to mention that desktops create a lot more noise pollution in your room unless you have liquid cooling system.

<comment><USER3> Not necessarily so. I use a big case (Fractal Design R series), with 4 * 140mm fan. The case has thick noise insulation, and the big fans turn (always) very slowly (500rpm, just above stalling) so it's completely inaudible.

A lot better that the tiny fan of a laptop that drives everyone around crazy as soon as you move the mouse :-)

</comment></comment></comment><comment><USER12> Coding is so much more pleasurable on my 24 inch IPS dell monitor than it ever was the laptop. I also know some developers who swear by their 28 inch screen monitors.

I was using a Thinkpad for about 8 years before I got myself an Intel NUC (i7 processor, 128GB SSD and 16GB RAM) for a total cost of under $800 (if I recall correctly). The Intel NUC is literally half the size of the Macbook mini and was a breeze to put together.

<comment><USER4> How does the Intel NUC handle long-running intensive tasks?

Does it have issues with overheating under those conditions?

<comment><USER12> I've had no issues with with running multiple intensive tasks.

It does heat up a little more than the macbook mini, but not by an amount that would worry me. The little fan at the bottom seems to do a pretty good job.

</comment></comment></comment><comment><USER11> I have a personal 15" Macbook Pro and two external monitors hooked up to it whenever I'm home, and nice things about it are that it is powerful and portable enough to serve both as my main home computer and occasional work computer whenever I'm out of home. I also have a fairly high-end Windows 10 desktop computer which I use only for gaming. I agree with your friend's argument, it fits with my lifestyle. For me, I examined my lifestyle, and then decided on the type of computer that I should get.</comment>


YC application - partner catch 22 - <AUTHOR>

I have a potential partner for my business that has all the right qualities, minus the technical skills so I'm faced with a dilemma. The potential partner is committed to the idea and the partnership, has extensive business know-how, is a go-getter who is diving in and working on the idea as hard as I am...even though I have not made a commitment to her yet on a partnership. She is a good friend and we have very complimentary personalities. We resolve issues easily and productively. So why the hesitation? When I read advice from PG and JL, it seems to always indicate that there has to be a technical co-founder. My question is, how technical do they need to be? I am a User Experience professional with years of front-end coding experience. I have worked with developers and have been editing code for years. I'm a pro at DHTML, CSS and pretty good at JavaScript. I understand ASP and XML too. Plus I'm an expert with the Adobe Suite, and in the past have learned ActionScript and Director's old Lingo to complete projects. I have run over 50 usability studies and my focus has been prototyping based on end-user evaluation. I have and always will learn what I need to learn to accomplish goals. Am I technical enough? How is a "technical partner" defined? What's more important...a highly technical partner or a highly compatible and motivated one? <comment><USER2> Typicall tech co-founder in a early startup person is the one who can code your whole application without any outside help. He/she should be able to go through the code and fix any bugs if it is needed. This person should have good knowledge in all aspects of technologies. For ex: if you are using a website built on .NET Framework with SQL Server backend, generally then this person should be familiar with databases, writing store procs, building web services, writing C# code and lot of other stuff.

When evaluating a tech co-founder you should ask with 2 of your guys can you complete your application end to end and go public without any outside help. If the answer is yes then he/she can be your tech cofounder.

Since in the early days without any funding, money is tight you should be able to complete the prototype/product with almost no resources.

<comment><USER3> This. The main thing to look for in a co-founder is someone who can do everything you can't.

You CAN have multiple co-founders obviously, but that raises more questions than anything.

You CAN pay a developer as well, but are they going to care as much as a founder? Probably not.

To me, it doesn't sound like you have a Catch 22, you just have picked the wrong co-founder. That said, it sounds like, from the position you're in, you might not be able to get away with less than 3 founders. If you're front-end, and she's marketing/business, you obviously lack a backend developer.

You either need to find someone else who fits that need, or start learning it yourself. If you already know frontend, Node might present the lowest barrier to entry. The only real alternative is to find someone with business, marketing AND backend dev experience, which is likely going to be a very hard find.

</comment></comment><comment><USER4> To answer your question: "What's more important...a highly technical partner or a highly compatible and motivated one?" Hands down motivation over skill in my opinion and experience. I've seen one go the other way, or finding a way to get help, but I've barely ever seen the reverse. Also, one quote of Richard Bronson's I find myself repeating often "Hire for attitude, train for skill."

I think your team might benefit from a 3rd, back-end/server side cofounder. Then between the three of you should be unstoppable with all bases covered. If you cannot find that then you're doomed with or without your non technical cofounder, unless you learn enough to be dangerous, build enough to be able to afford an employee who is a back-end person, who most likely will end up trashing all your code and building it from scratch. I'd sure hope you'd welcome that.

You never said what your dilemma was.

<comment><USER4> Oh, and in my opinion, if you want to be a successful business person, then don't apply the general YC rules to your business. Those rules are generalizations, and partners often make exceptions. Do what's best for your business, and they will see it too. The best way to think of your app is to think honestly and truthfully about your business. If there was no YC and its set of guidelines, would you have considered tossing this person out? How would you have built your app? Think of YC as a co-founder in your business instead of thinking of them as a college you're applying to. They will be impressed by the same things a potential cofounder might be, every company has its unique set of challenges based on which you will be gauged. I am not related to YC in any way, but cannot imagine them looking for the same six things of everyone that walks in.

My point is, give your own intelligence credit, and YC partners might recognize it. If they don't now then there is always the next cycle and you can try again.

<comment><AUTHOR> I am very glad to have posted this question. The feedback coming in from different perspectives is helpful, and yours is especially refreshing. Thanks

</comment></comment></comment><comment><USER5> I think you're looking at the problem all wrong. The question is not whether she is the right co-founder to present to PG, JL, etc., for the sake of applying to YC. Instead, you should be asking yourself if she is the right person to be building a company with. A startup is essentially a shotgun marriage where the company is the baby. Can you see he being the right person to bring a company into this world? If the answer is "yes" then start working with her. Whatever you do, don't base your decision on what YC is or is not looking for. They look for teams that have qualities that suggest success and that are aligned with their investment thesis. If you have a team that doesn't fit into their investment thesis, but is the right team, then that's all that matters.

<comment><AUTHOR> I didn't mean to imply that I am picking a partner to satisfy YC....that never crossed my mind! However, I highly value the experience and advice coming from YC partners, therefore, the fact that they place such high importance on having a technical co-founder made me question whether I needed to add a 3rd partner if the two of us don't cover enough "technical" ground. That being said, I now have a new question. I have officially made the partnership with her and I'm so excited about it! I just don't think I could possibly have a better partner. She is as motivated and hard-working as I am and we're up until 1AM every night working on our company. The problem is that I would like to add her to my YC application and I can't access to it anymore. What's the best way to get the message to YC?

</comment></comment><comment><USER6> There are a lot of issues that will come up through out the process that require "general" technical know-how. My cofounder and I are both technical, so we learn the biz side of things as we go and the tech just happens easily. But your tech cofounder should have a good understanding of back and front end coding. Pick a language and run with it. Also, it's not just about building the web app but also deploying. So being comfortable behind a unix terminal and utils goes a long way toward making your life easier.

</comment><comment><USER7> Can the two of you build your vision without (trivial) outside help?

</comment><comment><AUTHOR> Thanks, I appreciate those answers. It definitely makes sense to be an all-in- one team. I am leaning towards learning the additional skills I need. Another option is to complete most of it and hire a developer to complete the rest. What's your perspective on getting the product completed in DHTML and then hiring a developer (a developer friend) to build the .NET Framework with SQL Server backend?

<comment><USER2> I am not saying that you have to build the site in .NET Framework. You can pick any technology which you like. I specified it just as an example. Before you hire a developer and pay him, you should write down couple of points such as 1) What does the web application do 2) What are the core min features that you need to satisfy first few users (don't get into the habbit of feature creep) 3) What is your intended audience 4) What is the core problem you are trying to solve.

Also as a prototype do you really need the Database and other stuff. It should not matter what database or language or framework you use but you should be able to answer the above questions.

Don't listen to the people who say one language is greater than other language. It shouldn't matter. You should pick one which is easier for you and others who join you later.

</comment></comment><comment><USER8> the technical cofounder has to have knowledge about server side code, database, etc, so at least one of you is totally in picture of what's going on.

also can cooperate with new employees, subcontractors on a technical level, and certainly can act instantly in a given situation...and probably won't complain about working round the clock :)

with such team, i would feel much safer as an investor too.

</comment><comment><USER9> You're fine.

Google Birchbox.</comment>


Forge – A conference for software people by Sentry - <AUTHOR> https://blog.sentry.io/2017/06/21/introducing-forge <comment><USER2> Ready for some wine and some code!</comment>


Restoring your iPhone 3G to OS 3.1.3 - <AUTHOR>

I had installed iOS4 on my iPhone 3G and saw it crawl to becoming an iPaperWeight.  It was horribly slow in launching every app and the keyboard was so slow it was unusable.
I had to restore it back to 3.1.3.
spicyj gave me the starting point here:
http://news.ycombinator.com/item?id=1453553
I ran into a few problems, here is how I got it to work:
1)  Download 3.1.3 firmware for iPhone 3G from http://www.felixbruns.de/iPod/firmware/.
2)  You have to put your phone in the appropriate DFU mode for downgrades.  (Whatever DFU stands for).
Switch of your iPhone, connect the USB cable to your mac / PC and put it in DFU mode with following instructions - Click the Home + Power On button for 10 seconds exactly - Release the power button and continue to click on Home.  The display should never turn on, but your iTunes should recognize the phone and warn you about recovery mode.
3)  Option click the restore button and choose the 3.1.3 firmware you downloaded.  Let it perform the recovery.
4)  If it fails with an error 1015, click ok.  The firmware is restored, but you have to snap the phone out of the recovery mode now.
5)  Download iRecovery as explained in this link.
http://www.ihackintosh.com/2009/09/recover-iphone-3gs-from-apple-logo-or-recovery-mode-loop/
6)  As explained there, copy the libusb-0.1.4.dylib to /usr/local/lib and give it executable permissions.
7)  Run ./iRecovery -s from the extracted directory.
8)  Set autoboot to true inside the iRecovery console:
setenv auto-boot
saveenvs
fsboot
9)  I had to do fsboot thrice and nothing happened.  It should have rebooted by now.
I did a power down and restarted the iPhone, and it was back up on 3.1.3 firmware.
If you run into problems or your phone is stuck in the recovery icon mode (USB port meets iTunes icon), please check out iRecovery and read all the possibilities there (there is a reboot command which might work, I didn't try it).
The downside to this is since my last iPhone backup was with iOS4, I could not restore it, I had to setup my phone as new.  That is something I can live with.
Upside - the phone seems MUCH faster now ;). <comment><USER2> Is the 3G hardware just not able to handle iOS4?

<comment><USER3> I think its case by case. Some find it faster after the upgrade. I suspect its cause by some data or apps during the upgrade. Some find it running alright after doing a clean install. Or maybe its specific to certain batches of iPhone 3G hardware we will never know. Apple is rumored to release 4.0.1 pretty soon, so hopefully it will solve this slow issue on 3G hardware. iOS 3.x code base is Leopard base. iOS 4 is Snow Leopard. So by right iOS 4 should run faster if not smoother on same hardware base on Leopard/Snow Leopard upgrade experience.

Lifehacker has a guide: [http://lifehacker.com/5572003/how-to-downgrade-your- iphone-3...](http://lifehacker.com/5572003/how-to-downgrade-your- iphone-3g\[s\]-from-ios-4-to-ios-313)

<comment><USER4> "iOS 3.x code base is Leopard base. iOS 4 is Snow Leopard"

Along with other changes, many of which do not affect the iPhone either, the biggest change in Snow Leopard was to switch all binaries and the default compilation target from IA-32 to AMD64. You shouldn't expect the Leopard -> Snow Leopard upgrade experience to translate to ARM-based mobile phones.

PS: I upgraded an iPhone 3G to iOS4, some apps are slower and others even crash more often, but the home folders and the "Cellular Data" setting in Settings->General->Network make it up for me.</comment></comment></comment>


Co-work at iList for free (downtown SF) - <AUTHOR> http://ilist.com/coworking

<comment><AUTHOR> don't really know the upside for them (recruiting? ideas? meeting new people?), but sounded like a good opp</comment>


Really cool college wrestling website - <AUTHOR> http://www.wrestlestat.com <comment><AUTHOR> Here's a really cool college wrestling website. Contains TONS of information about teams and wrestlers. For teams, you can see rosters, depth charts, schedules, eligibility breakdowns. For wrestlers you can all of their matches results for their career. Site also offers it's own ranking system which generates wrestler rankings, dual rankings, as well as tournament rankings. The dual and tournament rankings are one-of-a-kind. Also offers two different types of fantasy games, one a week-to-week challenge, and also a tournament challenge similar to NCAA Basketball brackets. Can also personalize the website to follow your favorite wrestlers and/or schools.

<comment><USER2> Minor comment, I think you should point out that you run the site. Unfortunately there are a lot of hit-and-run self-promoters on HN, and they tend to use a style similar to this. I usually flag them if I see them, especially when the content has little to do with HN's readership.

Your comment history shows you are not one of those. I think if you had written ".... wrestling website _I run_." you would improve the chance of getting some feedback from other HNers, because it's a more personal connection.

My market is completely different from yours. All I can offer is encouragement in your effort.

As someone with no interest wrestling, I browsed around a bit out of curiosity. Would it be reasonable to add more links? You have the Twitter handles, but I have to copy/paste to get there, and there is no home page. These could be linked, by icon, inside the the ws-header for the school page.

Will there be (possibly user-submitted) links to photos from recent meets? What about links from the upcoming tournaments to the web site for the tournament?

I don't think it's that important for most people to see "This is a cached page, it was last updated: 9/16/2016 10:43:18 PM" / "View version: Click here for live version | Cached version" right at the top of the content. Even if they cared about cache status, I think "Last updated 5 seconds ago" would be easier to interpret. Especially as it isn't 10:43:18 PM in this time zone.

I realize this is all extra work, and you are self-funded. Feel free to ignore me!

Again, best of hopes that it goes well, and that you figure out a good funding model.

<comment><AUTHOR> Yes, it is my site. If this was the wrong medium, I can delete the post if I have the ability (no idea as of writing this).

Regarding your feedback, THANK YOU! I like getting feedback from more technical people.

Yeah, that date (format) is really annoying to look at now that you bring it up. Makes much more sense to have it like you state (5 minutes ago...).

More links - I thought I had WAY too many links (been trying to figure out the SEO stuff also). Just about anywhere in the site where you see either a wrestlers name, or a school name, they are always links (except when they are in headers). I can definitely add the links in the headers, the side-effect to that is then they'll be underlined.

Cool idea on the photos and links to registration sites. Be fun way to interact with each of the "events" and feel more like you were there.

Thanks again for the feedback, I'll definitely work on most/all of those!

<comment><USER2> HN is a bit negative for this sort of thing, _except_ as a "ShowHN", where it's clear that the interest for HN readers is that it's from another HN reader.

The question you should have, as a technical matter, is why your users should care about the cache state. Do you need it at all?

You worry that there are too many links. The problem isn't that there are too many links, but that they all look the same. The links I suggested could be icons, rather than text.

On [http://www.wrestlestats.com/compare/wrestler](http://www.wrestlestats.com/compare/wrestler) I noticed that if the weight class is not given then the names are ordered first by weigh class and second by name, so it isn't alphabetic. As a usability suggestion, pulldown menus are harder to use than selection boxes. There are only 10 weight classes, so you could arrange them as:

      [any] [125] [133] ...

so people can do one click to change the class. Similarly, with the names you could have a multiple select box with rows="10" instead of a pulldown. You might also consider a side-by-side layout, because you have so much horizontal space. It would also help the balance of the page.

(BTW, the prediction code has an interesting failure mode. If you use the same name for A and B then the scores always differ by 1. Shouldn't the scores be tied?)

In general, I use what's called a user-centered design approach. (Bear in mind that I'm a backend person, so I don't do this often - I'm not an expert.) Come up with about 3-5 different types of personas who might use the site; fans, players, family, coach, etc. It's a bit more specific than that, see Alan Cooper's writings and [https://en.wikipedia.org/wiki/Persona_(user_experience)](https://en.wikipedia.org/wiki/Persona_\(user_experience\)) .

Pick the one persona you want to focus on, but keep the others in mind. Figure out what sort of things they want, and optimize for it.

For example, you have a comparison tool. There are two ways to get to a comparison, one from the tool I mentioned, another from the person's page, under "Projected Upcoming Matches". To get to that from the second one, the links are all "comparison".

If you want to optimize for that, then what about putting the prediction there instead, like "18 - 3 TF", and link that to the comparison page? (Of course, then it would be a prediction rather than a comparison, so the column header might change.)

For another example, and going back to the Twitter example, figure out for yourself the scenario where someone would use your app to find a team's Twitter handle, then see if there are ways to make it easier to use.

My one big pointer is that you should be aware that there may be no revenue to this. There used to be many ways to set up forum sites, and many small organizations would could put together specialized newsletters, and make money from specialized advertisement and membership fees. Facebook groups have sucked up most of that.

<comment><AUTHOR> More great points/constructive criticism! Thank you! I'll work on/think about implementing that stuff.</comment></comment></comment></comment></comment>