Why Learn R? It's the language of Statistics - <AUTHOR> http://blog.revolutionanalytics.com/2010/06/why-learn-r.html <comment><USER2> The article provides a very good example in support of the argument domain specific languages to help you crank out domain specific code. I like R and use it. But I also code my own methods (in haskell these days, but that's not the main point). Before you go and build your company's code base around R realize the following:

1) The primary use case for R is by academics and students comparing various methods on various data sets accessible through R.

2) The code is not really designed with superb reliability in mind. I have debugged a contributor's fortran code and sent in a patch that never appeared in the R code base. The bug remains. Professors often don't support code all that well. Don't blame them. Support is left as an exercise.

3) There are no assurances about the scalability of any particular routine-- even if the algorithm scales in theory.

Do try R. It's good. But don't think SAS and the like will disappear. They cater to the production requirements of big companies. And don't use R as an excuse not to write your own production code.

<comment><USER3> 1) With the integration of R and PostgreSQL (PL/R), this might change. For example, calculate the area of a spherical complex polygon on Earth using PL/R:

      CREATE FUNCTION plr_polygon_area(
        latitude double precision[],
        longitude double precision[])
      $BODY$
        areaPolygon( cbind( longitude, latitude ) )
      $BODY$
      LANGUAGE 'plr' VOLATILE STRICT
        COST 1
        ROWS 1;

Pretty powerful.

2) The learning curve for R was 30 days for me. (Still learning, but everything is now no longer alien.) I submitted a bug to a Professor. Not only did he fix the bug within a few hours, but he offered to personally send a new build for my platform. He also suggested a performance improvement for my code (by practically rewriting it) that resulted in code 43 times faster.

The PL/R mailing list has been nothing but helpful and expedient.

3) Scalability of R functions is not too difficult to test.

<comment><USER2> Foreign function calls are a good thing to support. R does this well and lots of R routines already call C or Fortran libraries.

Domain specific languages are good (and fun). Interacting with open source developers can be an awesome expersience. I agree.

I just don't see R as a platform that can integrate tightly with other business systems. It's a user oriented tool. If there are use cases out there that disprove this. It would be interesting to hear about. Especially as we move into the era of "big data".

<comment><USER3> It need not integrate tightly with other business systems. Especially as we move into an era of big data, it need only integrate well with databases.

I am creating a website that allows the general public to create reports on how the climate has changed, such as:

<http://i.imgur.com/o8fTg.jpg>

PHP, PostgreSQL, R, and JasperReports to analyse 273 million rows of data across 8000 weather stations spanning The Great White (soon to be Green by the looks of it) North for the last 110 years.

The trend line, shown in orange, is calculated in R using a Generalized Additive Model. There is no way I was going to (or even could) write such a complex algorithm myself. When I started the project, I was using MySQL. I migrated the database to PostgreSQL specifically so that I could use R for the analysis. I migrated the database before learning R.

<comment><USER2> Good stuff.

</comment></comment></comment></comment></comment><comment><USER4> You know, I often forget to mention formula notation as a reason I love R. It is superbly natural. R's natural support for data frame (collections of multidimensional observations) and formula notation make's it easy for every single disparate library to convene on a common language for high-level usage. Pretty near every function shares the same first two parameters:

       out <- f(formula, data-frame, ... other options ...)

<comment><USER5>
       Pretty near every function shares the same
       first two parameters

Better then to make those two params passed by default so you don't have to type them every time.

<comment><USER6> The functions take the same _idea_ as a parameter, not the exact same parameter. You still need to specify _what_ formula the function will operate on.

</comment></comment></comment><comment><USER7> I certainly agree that coming up the learning curve with R has greatly improved my working knowledge of statistics. However, lately I find myself becoming increasingly frustrated with the language itself as my projects grow in complexity. Of course this could be due to my lack of skill with R or programming in general... Does anyone else have this issue?

<comment><USER8> I did, quite quickly. In particular, R seems to be focused on univariate data; support for multivariate data (things like "lego plot" histograms, or any kind of histogram in more than one variable) is patchy at best.

Having said that, I must note that I am new to R, and rejecting anything so quickly makes me very nervous. I suspect that I have not even come close to plumbing the depths, so to speak, of R's capabilities.

<comment><USER9> To both of you: I'm far from a statistician, so YMMV, but after trying to work with multivariate data in both R and MATLAB, I really found using numpy/scipy to be substantially nicer. And even better, if you ever decide to do anything _else_ in a program, like munge text or interact with internet services, a general-purpose language like Python is a big advantage.

</comment></comment></comment><comment><USER10> If you guys like using R for statistics, you should definitely try S/S-PLUS ;-)

<http://en.wikipedia.org/wiki/S_%28programming_language%29>

<comment><USER9> Why? (Genuinely curious; your comment is just a throwaway line, but you probably wouldn't have said it if you didn't have some real reasons.)

<comment><USER10> Matlab, R, and S-PLUS are all different animals. They are usually used for different things (and what they are used for can vary from person to person). For instance, I use matlab for object oriented scientific programming, R for quick and dirty (but math intensive) scripts, and S-PLUS for quick and dirty stats intensive scripts. Long story short, S-PLUS is geared towards statistics (better modules, functions, etc). If you do some searching, you'll find that R is actually an offspring of S, with S-PLUS being R's sibling. If one can program in R, picking up S-PLUS should be cake since the syntax and programming hats are similar.

I don't really like to type that much, hence my initial terse commentary--but I can certainly oblige someone who is genuinely interested :-)

<comment><USER2> R and S-Plus are very similar. Curious when you would prefer S-plus over R?

<comment><USER11> S-PLUS objects reside on the hard drive whereas R's are stored entirely in memory. So R is faster for smaller computations but runs against limitations when the data sets are large, though you can use the bigmemory library or store your data in external databases - e.g., SQLite or PostgreSQL and pull off chunks as you need them. R also had a much more extensive library but I heard that S-PLUS (as of version 8) made their program compatible with R so that R's libraries could be used in S-PLUS. Also, R has lexical scoping; I think S-PLUS only has global and local like Matlab. I personally like lexical scoping so can't think of cases when you'd find S-PLUS's scope definition advantageous.</comment></comment></comment></comment></comment>


The Computer Language Benchmarks Game - <AUTHOR> https://benchmarksgame-team.pages.debian.net/benchmarksgame/ <comment><USER2> Previously —

[https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...](https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=%09%22The%20Computer%20Language%20Benchmarks%20Game%22&sort=byDate&type=story)

— but now measured on a slightly more recent Intel® i5-3330®.</comment>


Thinking Through the Cold Shower Fad - <AUTHOR> https://medium.com/stoicism-philosophy-as-a-way-of-life/when-to-skip-the-cold-shower-924e9706934a <comment><USER2> 1) go for a run/do HIIT right after you wake up

2) take a 2-5 minute cold shower

Congratulations, the worst part of your day is now over!</comment>


Ask HN: Any language that has syntactic support to highlight the main logic? - <AUTHOR>

It beats me why almost all programming language has syntax for comments, but none of them have any syntax to show these are the lines that follow the main logic and every thing else is secondary.
If someone is looking at the code it is assumed he understands the syntax. what you really need is to suppress the noise for him to follow the  main logic. This would work better than comments as most of the time the comments just repeats what the syntax says with an extra exclamation at the end.
If you like the idea pl. up vote. Hopefully new languages like "go" would jump on it. <comment><USER2> Exceptions, Restartable Conditions, and Aspect Oriented Programming -- of which many existing programming languages have implementations of the last and at least one of the first two, sometimes as fundamental language syntax and sometimes as libraries building on more fundamental syntax -- are all means of clarifying the separation between the principal logic of a program and peripheral concerns. There's probably other existing techniques.

The goal is certainly worthwhile, but it'd be more interest to know what specifically you are looking for in this regard.

<comment><AUTHOR> When I am reading someone else code I spend a lot of time figuring out a section of code only to realize its for some corner case. If only there is a hint thatz not the main logic will save lot of time. The fix everyone will immediately suggest is proper commenting which is clearly not working. I am just exploring alternatives.</comment></comment>


Is there any level of computer security that can match the human AIS? - <AUTHOR> http://en.wikipedia.org/wiki/Adaptive_immune_system I was always fascinated by molecular biology and the how the cell worked. It was easy to understand and grasp some things at once, because I was able to see a direct relationship with computer networks. But the molecules continue to astonish me, due their incredible level of complexity.<p>Apart from other things, it's part of my study material for my next exam (Pathophysiology). <comment><USER2> We already do. Take for example the basic virus scanner.

The whole anti-bodies system works very similar to hash scan method currently used today. Until adware/virus/worm gets marked by a hash (from the providers database) the scanner really doesn't care.

The major failing of this system is unlike the real world (or possibly like the world with the advent of genetic research) you have a lot of very smart people continually attempting to defeat the status quo system. Nature luckily, doesn't have the malice or know-to as a much of dedicated hackers.</comment>


If Trump bans WeChat, people in China could ditch iPhones in droves - <AUTHOR> https://www.scmp.com/abacus/tech/article/3096721/if-trump-bans-apple-offering-wechat-people-china-could-ditch-iphones <comment><USER2> That's called 'The Law of Unintended Consequences'.

Economies are so intertwined these days, that interference in one place means you get disadvantaged in another.

Best to keep your hands off things. "If it ain't broken, don't fix it".</comment>


Show HN: Learning Games – Coded with a Self-Created Programming Language - <AUTHOR> https://easygames.online/ <comment><USER2> very nice! why did you chose to use a self-created language?

<comment><AUTHOR> I first created the language [https://easyprog.online](https://easyprog.online) \- intended as a learning language. And then I made some examples with this language. So these simple games have come.

<comment><USER2> Yes, _but_... why did you create this educational language?

[I have experience defining a new language syntax and with programming education]

Why do you think it is better to use some new language than to teach using something like coffeescript / scala / groovy? (which with a proper API can be very similar to your DSL)

using a real language you get: 1) tooling 2) ecosystem and community 3) you teach something real that can be used directly elsewhere

(I'm just wondering, it's a very nice project in any case)

<comment><AUTHOR> > why did you create this educational language?

I also have experience with programming education. I was asked to recommend a programming language to a 14 year old newbie. My answer was Scratch, Alice or Python. But this is not what I would be happy with as a beginner. I learned programming a the olden times with BASIC on a home computer. But things have become more complicated since then.

I then started to design a simple IDE and programming language. I was thinking about using an existing language, but it would have made it more complicated. There are so many languages/framworks at the moment, the chance that you work in your job with exactly what you learn in school is not very big anyway.

> 1) tooling 2) ecosystem and community

In my opinion, this only distracts from concentrating on the essentials.

Meanwhile I can work productively with the language myself. Developing these games in Javascript would have been too time-consuming.

<comment><USER2> I still think that you would get more results/traction with a more established language but it was interesting to read your perspective. Thank you</comment></comment></comment></comment></comment>


Ask HN: What happens to real estate prices after self-driving cars? - <AUTHOR>

Basically my thinking is this:
self driving cars become the norm => no need for personal cars => no need for parking lots & street parking => more supply of land for commercial & residential
self driving cars become the norm => driving is much more efficient => no need for large roads & highways => more supply of land for commercial & residential
self driving cars become the norm => driving is much more efficient => suburbs that WERE 1 hour away are now only 30 minutes away (maybe even less) => there are a lot more suburbs which are practical in terms of commuting (sure, I'll live 100 miles away if I can still get to the city in 45 minutes) => less demand for prime real estate
more supply + less demand => drop in real estate prices
Am I missing something?
If anyone has any thoughts, please leave them in the comments. <comment><USER2> Interesting question, great to see stuff like this here.

>suburbs that WERE 1 hour away are now only 30 minutes away..

Possibly, though that kind of a speedup sounds wildly optimistic.

I'd bet the more significant aspect of this would be the ability to get work done during the ride, which also has the same effect that you point out, increasing the radius of a viable commute.

Still, living close will be desirable. Distance ridden is sure to be part of what determines how much you pay for transportation.

</comment><comment><USER3> I think for places like SV, you will find some moderation in housing where people find outlying cities unconnected to BART suddenly livable. The higher end will be unchanged.

Self driving cars would be sweet, but still only one factor in housing prices. It's still a grind to commute whether you have to drive or not, as your free precious hours are wasted in the name of butt-in-seat time.

Plus more than likely California would pass an asinine law to ban people from using mobile devices even with a self driving car. They are already making rules that you have to be able to take the wheel at all times in case the car fails. Kind of beats the point of a self driving car, while ignoring that the program would probably beat 99% of drivers.

</comment><comment><USER4> I think your analysis is right, but I don't think you should limit it to self driving cars.

Take remote work. Currently it's not the norm but it's becoming more and more popular. When/If it's the norm, we will have:

remote worker becomes the norm => no need to live closed to the work places => no need to live in big cities were real estate is expensive => some people will move out

I don't think technological progress making the real estate prices go down would be a bad thing, quite the opposite.

<comment><AUTHOR> I agree it being a good thing.

</comment></comment><comment><USER5> In general, they go higher, if for nothing more than central bank induced inflation. The U.S. has $13Tr in mortgage debt outstanding, so lower prices aren't desirable by those who pull the strings.

[http://www.federalreserve.gov/econresdata/releases/mortoutst...](http://www.federalreserve.gov/econresdata/releases/mortoutstand/current.htm)

</comment><comment><USER6> a supporting e.g.: housing prices drop off once you pass railway stations (and if you have different fare zones, they also drop at the boundary).

Partially offsetting efficiency is more cars = more congestion.</comment>


80% of Small Businesses Fail in 18 Months? - <AUTHOR> http://ethanvanderbuilt.com/2014/08/24/80-small-businesses-fail-18-months/

<comment><USER2> I'd heard that 9 out of 10 new firms fail in the first year, and believed it. Glad to know that it's not true. Here's further confirmation: [http://www.washingtonpost.com/blogs/fact- checker/wp/2014/01/...](http://www.washingtonpost.com/blogs/fact- checker/wp/2014/01/27/do-9-out-of-10-new-businesses-fail-as-rand-paul-claims/)</comment>


Ask HN: Do you click "comments" on Hacker News? - <AUTHOR>

Curious to see how some find value in the link at the top that shows most recent comments--"comments" at the top of HN.
Of course, the front page and "new" are handy to discover what is popular and what has recently been submitted; and "threads" is handy to see how some respond to your comments, but what about "comments"?
Since all of the comments are new, it doesn't seem as useful to me as looking at new submitted links.  Now if there was a "front page" for trending popular comments (and if I'm missing it, let me know), I could see that having the potential to drawing your eye to a possibly hotly debated topic.
So, do you click it and how do you "use" it?
Help me find the value. <comment><USER2> You can get comments pushed into the page you are currently reading using this small greasemonkey script:

<http://share.shmichael.com/hn_comment_embed.user.js>

It shows a small tab on the right side of the page that expands to display the relevant HN page.

Here's a screenshot of the comment panel, once you open it: <http://shmichael.com/wp-content/uploads/2009/11/hne.png>

And for chrome, ported by a friend:

[https://chrome.google.com/extensions/detail/hhedbplnihmkekhg...](https://chrome.google.com/extensions/detail/hhedbplnihmkekhgmaoikgfbkjjaocnl)

<comment><USER3> Link to script is broken: You don't have permission to access /hn_comment_embed.user.js on this server.

<comment><USER2> Fixed; Sorry.

</comment></comment></comment><comment><USER4> It is a useful view on which threads currently have active discussion. That's nice b/c if you're the last person to comment on the thread, you get to voice your opinion but that's about it. You want to participate on active threads.

Also, sometimes I load the "comment" page, and scroll down to the area where the comments are 30-60 minutes old. Generally anything that's gotten voted up at all is pretty interesting, so the insight efficiency ratio is pretty high.

I picked up that second habit from something similar that I think a lot of people do on the "new" page: if a submission is 40 minutes old, giving it it's fourth vote can make a real difference to the arc of the submission, in terms of how much attention it gets.

</comment><comment><USER5> _I'm missing it, let me know_

<http://news.ycombinator.com/bestcomments>

<comment><USER6> Interesting, are these also weighted by date? I remember seeing (and posting) comments which are highly ranked which are not on that list.

<comment><USER5> It's the best comments among the most recent 15k items. (Most items are comments.)

</comment></comment></comment><comment><USER7> Usually on interesting links i middleclick the comments-links and leftclick the link, so that i read the link first, close the tab and read the comments.

An extra page with most popular comments wouldn't be as interesting for me, as a comment without context (the link) is rather worthless. And if i first read the article i might be interested in all sorts of comments. Quite often, only because a comment has many points, it doesn't mean it's the most interesting.

<comment><AUTHOR> I believe I understood you correctly, and that is what I do for the articles I am about to read, but I'm referring to the "comments" at the very top of HN.

<comment><USER7> Oh i see. Well, my comment applies there.. for most comments on that page i have no clue what they are about as most comments are oneliners

<comment><USER8> That means "no".

You can count a "no" for me too.

</comment></comment></comment></comment><comment><USER9> I find the comments page visually backward.

The comment is in black, with the title in grey, so the first thing that sticks out is the content of the comment. You're automatically jumping into the conversation mid-stream without knowing what it's all about.

You have to concentrate to go to the title first, then the comment.

Also, you end up with the same articles again and again, but contextually broken up. It might be nice to have the page show just the unique entries, and then the most recent comments on that entry which would have made it into the 'comments' page.

Just my thoughts. No I don't go to that page, I suspect the reasons above are why.

</comment><comment><USER10> Never. Just tried it; seems pointless to me.

</comment><comment><USER11> I use the comments section to watch for new comments on article that is generating an interesting discussion. It's useful if you already know which article you want to follow (you can scan for the title). I find it easier than revisiting the article's page because comments move around over time which makes it difficult to pick out the new ones. Also, as someone pointed out already, you can find comments that have been upvoted which usually lead to an interesting discussion.

</comment><comment><USER12> No, because I never visit the site directly. Instead, I read through an RSS reader.

<comment><USER13> Interesting, because I always click the comments link in Google Reader rather than the article. I read the comments first to get a sense of whether I will read the article or not.</comment></comment>


Show HN: Ever seen such FX in a HTML5 game? - <AUTHOR> http://eke.stereocrown.com/

<comment><USER2> Sorry, what specific FX are you referring to?

<comment><AUTHOR> Please take a look at the dynamic fire and smoke effects inside the game.

<comment><USER3> Trying to make this sound constructive, but if I can't get past the tutorial, I'm not going to have enough faith in the level design to continue at all.

<comment><AUTHOR> c'mon, I thought there are enough easy peasy games out there, this brings a little more challenge.. but maybe you are right and I should soften the start. could you say at which point your player failed?

<comment><USER3> I don't want to admit how long it took me to make the physics-defying leap required to get back up to the initial platform (from the pistol back to the ammo).

Combined with how long it takes to get back when you miss and plummet, I felt like I was being punished for it.

<comment><AUTHOR> First of all thx for your reply! You got a point. I think in the next version I won't force players to start from the beginning when they failed. But also I like your description of the overhang riddle - it's intended that a player is a little bit puzzled and has to try a few times.</comment></comment></comment></comment></comment></comment>


Using Nginx and UWSGI - <AUTHOR> http://justcramer.com/2013/06/27/serving-python-web-applications/

<comment><USER2> For a little perspective, the remaining 20ms still leaves enough time for oh, 55 random SSD IOs _and_ time spare to zlib a megabyte of text. Or about 4.8 million instructions of a modern 2.4ghz CPU. Just what does this app do exactly?

Aah.. Django.

Seriously, 20ms _isn 't good even for Python_. That's not something to be proud of, that's reason to rip up whatever overelaborate mess you've constructed to figure out just how you're blowing so much time.

As a reminder, a 200 byte HTTP request can be parsed in around 600 instructions or less (about 250 nanoseconds at 2.4ghz).

<comment><AUTHOR> In many cases, it uncompresses 1mb of text.

Bet you didn't see that one coming

<comment><AUTHOR> Also it does nothing with the disk, but does quite a bit over the network (queueing data, talking to caches).

I'm content with 20ms.

Hell, I'm content with 100ms, as long as its consistent and you can argue the value.

</comment></comment></comment><comment><USER3> The real strength of uwsgi is it's emperor mode [1].

On my servers I have one upstart job whose role is simply to start the emperor daemon and make sure /var/run/uwsgi permissions are correct for writing sock files.

Each django project deployed on the server has a uwsgi.ini file in it's etc folder. This ini file holds the config for that app only. It defines where the socket file is located, where the virtualenv is located and where the project.wsgi file is located.

It's simple because you can host multiple websites on a single server, but you uwsgi configuration is separated into 'system' and 'project', so your 'project' specific config can live in git and your 'system' config never has to change.

Nginx is setup in a very similar way.

[1] [http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html](http://uwsgi- docs.readthedocs.org/en/latest/Emperor.html)

<comment><USER4> Agreed. I did a writeup of my setup about a year ago:

[http://tghw.com/blog/multiple-django-and-flask-sites-with- ng...](http://tghw.com/blog/multiple-django-and-flask-sites-with-nginx-and- uwsgi-emperor)

</comment></comment><comment><USER5> This is pretty light on the details. I also use Nginx + uWSGI in front of an API that shakes up a lot of network IO behind it, and it has had a few headaches. On FreeBSD it ignores the die-on-term option, making it a pain to use in conjunction with service managers that rely on SIGTERM like daemontools. It's good that in your example you include the need-app option, as it will happily start up without being able to load anything otherwise. I'm curious what the intended default use case is, of mostly just wanting the server up - oh, and if you manage to load my app that would be ok I guess but don't sweat it! :P I disagree with a few choices in how it load balances, and tuning the backlog has proven futile with my setup. But yeah, it's lightyears ahead of mod_wsgi.

If you're a control freak who bases engineering decisions primarily on flexibility (and are bound to python/WSGI) why not use Mongrel 2 with a simple python backend instead? You can escape having to shoehorn your code into a gevent/gunicorn/uwsgi/whatever container if it causes headaches to do so. Here's a teaching example for how to play with mongrel 2 from python (feel free to change it into something that would work for you) [https://github.com/tizr/belasitsa/blob/master/belasitsa.py](https://github.com/tizr/belasitsa/blob/master/belasitsa.py)

<comment><AUTHOR> What kind of headaches?

I'm not aware of anyone actually using Mongrel 2 in a large scale Python application, but I'd be curious to know how well it works out.

<comment><USER5> A few configuration issues while we learned which ones performed as described on FreeBSD. It loads python modules BEFORE forking workers, so if you use multiprocessing or anything to create procs it will do it once before the fork, and all post-fork children are left sharing the same pool unless you instantiate it during the first request or a similar approach. These are just things to be aware of, and are not necessarily black marks against its usefulness assuming you are willing to accept a certain cost of learning the features (there are a lot). I'm still using it, but I'm not really convinced that I'm better off than if we had picked gunicorn or similar initially and skipped some headaches.

</comment></comment></comment><comment><USER6> Both gunicorn and uwsgi are good stuff. Though a new contender is Phusion Passenger ([https://www.phusionpassenger.com/](https://www.phusionpassenger.com/)), originally designed for Ruby but recently gained official support for Python. With the next release (4.0.6), Python support will be raised from beta status to production-ready status. Like uwsgi, it performs the bulk of the process management for you. It goes a step further than uwsgi by integrating directly into Nginx, so that the web server is the only thing you have to deal with.

</comment><comment><USER7> A couple of years ago there was an article comparing the various wsgi servers. The one that seemed most performant/low memory at the time was gevent, so I chose it for the application I was writing at the time to run on an ec2 micro behind nginx. It was very easy to use too, just wrote a 10 line python script and that was it.

I've never seen any articles about it since, so I wonder if others know something I don't. Can anyone compare gevent's webserver vs. uwsgi, gunicorn, etc behind nginx?

<comment><AUTHOR> gevent is a very simple webserver that wont handle many things that the "real" servers do.

One of the main things I'm talking about in this post is load balancing, which gevent (and uwsgi, and gunicorn, etc) don't implement very well. Nginx does a pretty good job at this, in addition to many other things (like buffering).

You can definitely get a lot of performance out of a coroutine, async, etc framework, but at the end of the day it's not going to be the entry point to a production application.

<comment><USER8> I think OP was asking what the performance of gevent server running behind nginx was compared to uwsgi or gunicorn running behind nginx.

<comment><USER7> Yes I do run it behind nginx. While performance is important, I wonder about the other aspects as well.

</comment></comment></comment></comment><comment><USER9> Stopped reading at "evented models never work anywhere in Python."

Gunicorn+gevent has been painless for me.

</comment><comment><USER10> I've been running Nginx + uWSGI for a long time but recently switched over to Nginx + Gunicorn for Gevent support, and so far it seems to be working well.

Gevent's monkey patching approach allowed me to convert a traditional blocking web app (built on Flask/SQLAlchemy) into an evented model without having to rewrite the entire app around an event-driven approach (ala Twisted or Tornado). All you have to do to get Gevent working with Gunicorn is to pass it a command line argument to use the Gevent worker instead of the default synchronous worker.

Gunicorn + Gevent also makes it quite easy to integrate WebSockets into your existing web app, which is something uWSGI doesn't handle very well yet.

All this is to say that though uWSGI is a very solid piece of software, Gunicorn is definitely a reasonable alternative to uWSGI depending on your use case.

<comment><USER11> gunicorn + meinheld is even better than gevent in my experience. meinheld is written in C and offers a monkey patch option, and is a little bit faster than gevent. i'm using it with flask + sqlalchemy + redis with great success.

</comment></comment><comment><USER12> I don't get why this is getting so many points. It consists of a single graph and a bunch of hand-waving. Python doesn't have to be like the ruby community; it doesn't have to have a one-size-fits-all solution.

We're happily using tornado in production. Between the heroku router and tornado's built-in support for multi-processing _and_ asynchronous processing, I don't have to worry about nginx + uwsgi + whatever framework. I just run tornado. And we're immune from the heroku random routing debacle [1], something that neither rails nor uwsgi can say.

1: [http://news.rapgenius.com/James-somers-herokus-ugly- secret-l...](http://news.rapgenius.com/James-somers-herokus-ugly-secret- lyrics)

<comment><AUTHOR> UWSGI has absolutely nothing to do with the link you posted, nor does tornado.

<comment><USER12> Tornado certainly does. We convert our most I/O intensive bits to asynchronous code, and the server is no longer blocked. Random routing doesn't affect us because there's no long pauses in, e.g. making a third-party API request.

Maybe I'm misunderstanding uwsgi though?

<comment><AUTHOR> I'm not using uwsgi as a router, and the speed of the requests isnt the issue.

If for example, you randomly routed to a bunch of tornado servers that were overloaded/slow serving requests, you'd hit the same issue as that post.

Async/coroutines dont solve the problem, better routing does.

In this case, we use HAProxy, and you ideally would say "I know node X can handle 100 concurrent requests), and within HAProxy you could weight the node/set the maximum concurrent requests to said node, and it would distribute based on that.

<comment><USER12> The point is that the probability of the servers getting overloaded is greatly diminished, because they're not blocked for extended periods of time. An external API request can take several seconds. In that time, a framework that isn't async-capable is going to be blocked and unable to work on more requests in the dyno queue. Tornado (and node, etc.) can continue happily along.

On top of that, tornado has multi-processing support built-in, which adds intelligent routing at the dyno-level.

HAProxy is another solution, although it can't be setup on heroku so that's irrelevant. Also, it doesn't change the fact that your workers are blocked while executing long-running API requests. uwsgi won't save you either.

The linked doc literally says as much, toward the bottom: "So the only solution is for Heroku to return to routing requests intelligently. They claim that this is hard for them to scale, and that it complicates things for more "modern" concurrent apps like those built with Node.js and Tornado. But Rails is and always has been Heroku's bread and butter, and Rails isn't multi- threaded.

In fact a routing layer designed for non-blocking, evented, realtime app servers like Node and its ilk — a routing layer that assumes every dyno in a pool is as capable of serving a request as any other — is about as bad as it gets for Rails, where almost the opposite is true: the available dynos are perfectly snappy and the others, until they become available, are useless. The unfortunate conclusion being that Heroku is not appropriate for any Rails app that's more than a toy."

</comment></comment></comment></comment></comment><comment><USER13> Uhm...am I misunderstanding something? It sounds to me like the author is saying we should be spending time tuning UWSGI's plethora of configuration options rather than using gunicorn. I much prefer components which "just work" for a healthy range of typical use cases.

Don't get me wrong, I think it's cool he made it work.. but seriously?

<comment><AUTHOR> There was absolutely no tuning other than adjusting buffer sizes (which only matters because it accepts large POST packets).

The options that a standard application will use are almost identical between the two. UWSGI just provides numerous lower-level options that I (and it sounds like you) probably don't care about.

<comment><USER13> Thank you for the clarification.

</comment></comment></comment><comment><USER14> Average response time can be misleading. I'd like to see what the 95% percentile response time is.

<comment><AUTHOR> I actually lied here, this is the 90th percentile, and average is a couple ms higher.

That'll teach me to burn through a post quickly

</comment></comment><comment><USER15> uwsgi is great, but only for users that want to do a PhD in performance tuning:

'There is no magic rule for setting the number of processes or threads. It is application and system dependent. Do not think using simple math like 2*cpucores will be enough. You need to experiment with various setup an constantly monitor your app. uwsgitop could be a great tool to find the best value.' (from uwsgi doc)

</comment><comment><USER16> Why is "Max CPU" a stated goal?

<comment><AUTHOR> To maximum the use of a node. If you cant use all of the CPU because you don't have enough memory, than the node (at peak times) is wasteful.

</comment></comment><comment><USER17> Should I be using Nginx + UWSGI with Go apps? I know someone wrote a seemingly comprehensive uwsgi package for Go, but IIRC it kinda got shredded a bit in the mailing list.

edit: Hm, maybe there's a different thread or I was discouraged from using it in IRC or I'm inventing memories because this ml post is fairly lackluster either way: [https://groups.google.com/d/msg/golang- nuts/2vHlfkpS-m0/MZ-X...](https://groups.google.com/d/msg/golang- nuts/2vHlfkpS-m0/MZ-Xgdy45gcJ)

<comment><USER4> To my knowledge, WSGI is pretty Python-specific. Does Go even support WSGI? I tried looking but Go is a terrible term to try searching for.

<comment><USER18> Using Golang instead of Go works for a good subset of searches.

Here's the docs on UWSGI's Go support:

[https://github.com/unbit/uwsgi- docs/blob/master/Go.rst](https://github.com/unbit/uwsgi- docs/blob/master/Go.rst)

</comment></comment></comment><comment><USER19> So, as far as I can tell, you have failed to demonstrate that Twisted Web with PyPy is not a viable alternative, which is disappointing.

Also, uWSGI's core team doesn't have any faith in their own code; they use Apache instead of dogfooding. (And they're moving all hosting and development to sites like Github.) Twisted, at least, is confident enough in the quality of their code to self-host.

<comment><AUTHOR> PyPy uses too much memory and isnt that much faster for many things.

(Sorry PyPy guys!)

I dont have numbers/charts to pull up for this right now, but I was testing it out to see if I could push more cpu on a server, and the memory cost was insane for the minimal test case.

Twisted also is not a web server, it's a framework. Same with Tornado, and honestly, the same with gevent/etc.

<comment><USER20> How much memory usage is "insane"? Are you sure the memory cost grows with the size of the application? It sounds like you tested a minimal test case, saw high memory usage, then didn't bother to test a large application. Maybe the memory usage is constant.

<comment><AUTHOR> I saw 5x memory usage, which was already something I was trying to optimize.

There's a ticket I opened on the PyPy tracker, but this is sort of expected if I understand JITs correctly.

I didn't exhaustively benchmark it, but the initial results were too far outside the bounds of my limitations.

<comment><USER20> 5x memory usage of what? You're not giving actual numbers, nor the benchmark you used.

<comment><USER21> > _5x memory usage of what?_

Of what he was seeing without PyPy.

He doesn't want advice on how to lower that. He wants to get the same memory usage or better out of the box.

<comment><AUTHOR> No I wanted reasonable tradeoffs.

e.g. 20% faster execution for 100% more memory

In my case it was 15% faster execution (give or take), with a 400% memory increase.

This was on a simple view which did nothing, so it's hard to tell how it'd handle more complex views in the app.

Either way this is a huge detour from what this actual topic is about, whether you use PyPy or CPython</comment></comment></comment></comment></comment></comment></comment>


Show HN: A simpler way to lose weight - <AUTHOR> http://www.noom.com/ios?src=hn

<comment><USER2> I was going to develop that app for myself at some point.

Is it going to provide charts and schedules too maybe?

Send me an email if you are up for some discussion anyway, I have some ideas that you may find interesting..</comment>


ShowHN: Redeploying Debian-Administration.org, as a cluster - <AUTHOR> http://debian-administration.org/article/683/Redeploying_Debian-Administration.org_...

<comment><USER2> Does Varnish run on all four machines on the off chance they will claim the IP, or does it come up when needed?

When a machine becomes the Varnish server, does it stop being an Apache server? What port do you run Apache on?

<comment><AUTHOR> Apache runs on all hosts, on port 8080. It cannot run on the loopback adapter, because it has to be externally visible to the varnish instance which is running and listening on the floating IP. (However it is firewalled such that it is only accessible within the VLAN.)

The floating IP is implemented via ucarp, and when a host becomes the master pound and varnish are both started automatically. (They should be stopped when a machine loses the master-IP, but this is not currently done.)

</comment></comment><comment><USER3> Hi Steve, with much of your content static (or close thereto), would you be able to comment on whether you evaluated serving through a CDN such as Amazon Cloudfront or CloudFlare? Thanks!

<comment><AUTHOR> I'm very familiar with load-balancing, apache, varnish, mysql, etc. I think because of that using a CDN didn't even cross my mind, (although I think they might be a good fit for this type of site).

<comment><USER3> Thanks for the reply!

</comment></comment></comment><comment><USER4> Interesting read, as ever. Would be interesting to hear other alternatives to the cache invalidation problem..

<comment><AUTHOR> There are a couple of different ways to go that I considered:

Reinstate the use of memcached, at the object-level. Rather than storing things on the localhost each server would talk to the central memcache instance. That would avoid each of the webservers from having a local, and potentially stale, cache.

The other way to go would be more fine-grained caching with varnish. Right now we cache in-RAM as much as possible, and on any event which can change the state of the site (new comment posted, new article posted, etc) we throw away the _whole_ cache. That's quite a heavyweight solution, but it was fast to implement and is provable to never leave stale content around.

(I once setup a site for a friend where we did the same thing; the whole site was cached, and the cache was blown away every time a POST request came in. That worked perfectly, and inspired me.)

Using the varnish PURGE requests though we could uncache only the things that have changed. The reason why I didn't go down that road is because there are non-obvious dependencies. For example if there is a poll vote the front-page must be thrown away, because it has a running total of the votes applied. Keeping track of all the things that should be expired on a single event would be a headache.

</comment></comment><comment><USER5> Steve: do you still work for Bytemark?

If so, tell them to hurry up and let us sign up for bigv.io :-)

<comment><AUTHOR> Yes I do, and if you'd like to be invited please do drop a mail to the support address.

<comment><USER5> Already gone through the beta with the vkey etc (I no longer use it). I'm just finding it hard to justify to some clients with the word beta stuck on it (even though it's pretty damn stable).</comment></comment></comment>


Do it yourself free CORS proxy - <AUTHOR> http://www.zibri.org/2019/07/your-own-cors-anywhere-proxy-on.html <comment><AUTHOR> Github: [https://github.com/Zibri/cloudflare-cors- anywhere](https://github.com/Zibri/cloudflare-cors-anywhere)

<comment><AUTHOR> for any suggestion or improvement, use github, not this thread.</comment></comment>


PostgreSQL 9.0 Final Release Available Now - <AUTHOR> http://www.postgresql.org/about/news.1235

<comment><USER2> Can anybody point to a good discussion about the strengths and weaknesses of PostgreSQL relative to MySQL? Or can you weigh in briefly about the tradeoffs between the two?

EDIT: Okay, must've touched a few nerves there. Sorry. Question was asked in earnest.

<comment><USER3> Historically, MySQL has focused on ease of use, speed out-of-the-box, and aimed to be a lightweight, "personal" database (hence the "My"). This fast & light focus meant that certain "BigDB" features (triggers, transactions, ...) fell by the wayside.

On the other hand, PostgreSQL has historically focused on correctness and full support for advanced database features, looking to supplant Oracle and SQLServer. This meant that speed and ease of use sometimes suffered.

Today, though, both databases have mostly caught up -- MySQL has implemented most of the big ticket features that PostgreSQL had for years, and PostgreSQL (especially with the 9.0 release) has gotten far easier to use and tune, and is now as fast (or faster) than MySQL on most workloads.

The heritage still shows, at times: MySQL, even in "strict" mode, still suffers from annoying bugs and mis-interpretations of SQL features. PostgreSQL is still slow out of the box, often needing to be carefully tuned for the best performance.

Disclaimer: major PostgreSQL user and fan here. I've tried to give as objective an answer as I can.

<comment><USER4> It's more subtle than that. The MySQL people never really understood relational databases or the way they were used. Back in the 90s, their documentation was full of explanations about why you didn't need foreign keys (too slow) or transactions (do it in your application if you need it) etc etc etc. They "grew up" a bit as the years went by and grudgingly added a few of these features in as an afterthought.

But if you need a single-user database there's SQLite and if you need a free serious RDBMS there's Postgres. There's really no ecological niche for MySQL. It only hangs on because sites like Slashdot use it (and if you have thousands of reads for every write, and do only very simple queries, it is adequate).

<comment><USER3> Like I said, I'm a big PostgreSQL fan. However, I really don't think you're giving the MySQL developers enough credit here. Smart people -- and I maintain that the MySQL developers are a whole hell of a lot smarter than you or I -- can have differing opinions about trade-offs, and speed-vs-correctness is one of the oldest.

Proper implementations of foreign keys are transactions _are_ slower, and many applications really _don't_ need those features. Like you, I disagree with the choice to value speed over correctness, but unlike you I don't see it as an indication that the MySQL developers were idiots or immature.

Or, to look at it another way: if MySQL's such a load of crap, how'd it ever get so popular? It's not for a lack of alternatives. It's because MySQL offered a feature -- speed and ease of use -- that simply wasn't available elsewhere.

<comment><USER5> > Or, to look at it another way: if MySQL's such a load of crap, how'd it ever > get so popular?

Justin Bieber.

<comment><USER6> Even worse, IE6. The fact that it initially offered crappy implementations of some features that users were looking for doesn't make it any less crappy.

<comment><USER7> This comparison is right in the sense what it gets wrong: the time and context. IE6 is sure crappy by today's standards, but back in 2001 it was the best browser you could get: Netscape lost it since release of Netscape 4 which was _the crap_. And hey, IE6 even got box model fixed! Too bad it had no competition and stagnated till Firefox appeared and started kicking IE's ass. In similar vein a lot of "criticism" of MySQL is done by those not aware of the latest developments of this DB, different engines it supports and different modes it can work in. Well, at least "MySQL does not support transactions" cannot be heard anymore.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Yesterday's thread discussing 9.0: <http://news.ycombinator.com/item?id=1706030>

</comment><comment><AUTHOR> Full release notes <http://www.postgresql.org/docs/9.0/static/release-9-0>

</comment><comment><USER9> Has anyone been using PostGIS with the RCs? Is it stable and ready for production?

<comment><USER10> I use PostGIS with 9.0RC without any problems.

</comment></comment><comment><USER11> Why use hot-standby over streaming replication or visa-versa?

<comment><USER12> It's a free upgrade from warm standby, whereas SR requires a little more configuration. A good SR cluster also requires that log archiving (warm/hot standby) be set up in case the stream gets behind, otherwise you're at the mercy of whatever happens to be in the master's xlog.</comment></comment>


Canonical's new Ubuntu tablet can also be your PC - <AUTHOR> http://www.theverge.com/2016/2/4/10914004/canonical-m10-ubuntu-tablet-convergence <comment><USER2> Even for all the questionable technical choices Canonical have taken, I am happy there is still a company experimenting and pushing forward the "Linux Desktop".

Even if it looks a bit gimmicky, I split my time in half between a desk and a lab for quick tests, often I end up crouching with my laptop on my knees just to check a few line of code I have just written.

</comment><comment><USER3> It's not going to do them any favours to "share a vision with Microsoft". Tablet sales are declining and Microsoft barely has 10% of the tablet market. I get that Continuum is cool, and so is mobile Ubuntu, but from what I can see, the market doesn't care about these things.</comment>


Designing GitHub for Mac - <AUTHOR> http://warpspire.com/posts/designing-github-mac/ <comment><USER2> What a f'ing fantastic article. Thank you so much for writing this.

I spent a decent chunk of time last year building up a somewhat large Cocoa application (a telling synecdoche of how ambitious the app is: it integrates libevent with the Cocoa loop and involved writing a whole new evented Redis- backed HTTPS cache in ObjC).

But unfortunately, I got to the UI part of this project ("UI part", heh) thinking "this is going to be so much easier than webdev, look at all these tools!, and that was a crushing disappointment; getting _anything_ reasonable on the screen has been intensely painful, and is if anything much harder than CSS3+JQ is on modern web apps.

I'm thrilled to hear that at least to some extent, it isn't just me, and making a good-looking Cocoa app (especially your first) is just very hard.

<comment><USER3> I had the same experience with my first Cocoa Touch/UIKit project. The GUI stuff _far_ eclipsed the rest of the app in terms of development effort, which I did not expect. This hadn't been the case with previous GUI stuff I'd done (Windows apps, game UIs and the web), and took me completely by surprise.

The "no layouting engine" issue mentioned in the article applies to Cocoa Touch in the same way as it does to Cocoa, with the added wrinkle that if you want to support autorotation, this bites you _even harder_. Yes, there's the "struts & springs" system, but it's very limited - no equivalent to 'min- width' or 'max-width', and yeah I can't believe I'm citing CSS as a good example. It also doesn't help at all if you need to change the relative placement due to autorotation, or if you need to adjust positioning depending on content.

Styling is another issue - most UI elements can't even have custom colours. (this will improve with iOS 5, but not until iOS4 compatibility is no longer an issue) The default button looks _awful_. You have to come up with your own table view cells for pretty much anything but the most bare bones of lists.

In the end, I actually built my own fully fledged layouting system, which is content sensitive, has a fairly flexible elasticity system and supports a "flow" layouting mode which is somewhat similar to the way display:inline- block; HTML elements are laid out (but with grow-to-fit). I also built styleable versions of some of the views. If only I wanted to be in the business of building iOS apps, I'd be extremely well prepared at this stage. :-)

My recent foray into Cocoa on the Mac actually has been easier, but that's probably because you can get away with using the default widget styles. Apart from table cells anyway.

<comment><USER4> Any interest in either open sourcing said layout system or perhaps even selling it to those of us who struggle with these sort of problems (a la Sensible TableView)?

<comment><USER3> We've put some of the styling-related components online on <http://appuicomponents.com/> but the layouting engine isn't there yet, I do feel it's valuable enough to productise eventually. The main problem is lack of polish right now. Interface Builder isn't much use once you get to that level of customisation - there's no way to set properties your subclasses introduce, let alone previewing the automatic layouting. I'd like to fix that at some point and have some ideas on how it could be done. Aside from that, I also still need to document the system, and tidy up the code implementing the layouting, as it's currently not the easiest to debug or find out why something isn't being laid out as you were expecting, even if the layout system itself isn't doing anything wrong.

Then of course there's the fact that I'm spending almost all my time on our startup, which is completely unrelated to iOS. (but it has a Cocoa-based Mac GUI, hence my recent Cocoa adventures)

Actually, if you're interested in the layout kit, go ahead and drop me a line (email on the website I mentioned, or in my HN profile) with what you're trying to do - if it does what you want, I'd be quite happy to progressively tidy it up and document it if I've got one or two users who are willing to put up with the rough edges initially, in exchange for some hand-holding.

</comment></comment></comment></comment><comment><USER5> > Death of the SSH key. People should be able to connect to GitHub with their > GitHub username and password.

This sounds like a wrong design decision. I wish nobody could log into my github account using anything but my SSH keys.

This is also true of my AWS account: my ec2 instances are protected by SSH keypairs, but if anyone gets my AWS password, he has full control over everything.

I'm not a security expert, but SSH keys feel way safer than passwords, especially with all those recents article showing how easy it can be to bruteforce passwords.

<comment><USER6> Since GitHub launched, you've been able to access your repositories via username/password (and add/remove ssh keys via the web interface). But remember — we're talking about _client_ security.

If someone steals/owns your personal machine it's actually much easier to gain access to SSH Keys than find your username/password (since an alarming number of people use passwordless ssh keys).

Aside from that though — SSH Keys are probably _the_ biggest barrier to people being able to use and contribute with GitHub.

<comment><USER7> _> SSH Keys are probably the biggest barrier to people being able to use and contribute with GitHub_

The barrier to entry of writing software doesn't need to be zero. If a person is going to write code, they should also learn some of the basic tools of the trade.

<comment><USER8> And I'd claim that an SSH key isn't one of them. There is only one platform (UNIX-based web applications with application servers) that actually benefits from them, and plenty that don't (Android, iOS, Mac desktop, Win32, this week's .NET desktop stuff, ASP-of-the-week, Windows Phone 7).

As a company that makes money from users, it's to GitHub's benefit to make it easy to use their stuff.

<comment><USER9> I use SSH keys to log into Linux and OS X boxes all the time, servers and otherwise. And boy have I wished there was an easy SSH server to run on Windows.

You have to log into remote boxes these days and SSH keys are the best way to do that.

(Until 1password gets iTerm2 integration anyway, but the 1password guys don't seem receptive to that idea)

</comment></comment></comment></comment></comment><comment><USER10> Without going into whether I agree with his assertions on Cocoa, if it seemed so much easier to do with web technologies, why didn't he just do it with web technologies?

Cocoa is probably the framework best suited for incorporating web views, and tons of apps do this: Mail.app, iTunes, Aperture, Colloquy, etc. etc. Use the right tool for the right job, if you have something that is going to have a lot of flow-based layout, then by all means use WebView.

It's kind of like refusing to use an NSTextView, then complaining about having to lay out text yourself.

<comment><USER11> Completely agree. Cocoa is appropriate for creating minimalist, system-styled UI. Not for rich flow-based content rendering. See Versions.app: native where it makes sense (filesystem treeview), Webkit elsewhere (history browser).

</comment></comment><comment><USER12> Great article for sure, but I take issue with these bits:

> Unfortunately for everyone involved, every OS X application that's showed up > over the years gave up and tried to turn CLI commands into buttons.

It's my understanding that for a really long time there was no linkable library for interacting with Git. So unless these devs wanted to first write said library they were pretty much left with putting buttons on the CLI.

You might say "Well they should have written one, then!" but that is quite a risky capital expense on a piece of software that could easily flop. GitHub did it (with Summer of Code's help), but they have umpteen uses of such a library even if nobody uses GitHub for Mac.

> It blows my mind that no one tried to do anything special. Git (and its DVCS > cousins like Mercurial & Bazaar) provide an amazing platform to build next > generation clients — and it's like the entire OS X ecosystem left their > imagination at home.

I dunno, I think GitX (especially its forks) does some pretty special things, including making it dead simple to stage/unstage/discard single lines of files.

<comment><USER13> His point was that the OS X applications he saw were just a thin layer over the CLI program - they provided no new abstractions. Whether the OS X application calls a library or calls the CLI program(s) is an implementation detail not relevant to his point.

</comment></comment><comment><USER14> _There is no layout engine for Cocoa. If you want two elements to rest side to side, you'll need to calculate the pixel size of the text, padding, borders, margins — then manually position the next element._

This is getting a lot better in Lion. If you browse the WWDC 2011 videos, look for Session 103 "Cocoa Autolayout".

</comment><comment><USER15> As an aside, I really feel like Apple is losing the plot with their latest batch of UIs. Wooden end panels, birch bookshelves, the glossy reflective dock, leather-bound notebooks etc, all smack of a lack of imagination and an timid need to convey value in outmoded terms.

<comment><USER16> It's called skeumorphism. You're not the only one.

[http://speedbird.wordpress.com/2010/06/25/what-apple- needs-t...](http://speedbird.wordpress.com/2010/06/25/what-apple-needs-to-do- now/)

<comment><USER15> _What are these but misguided coddles, patronizing crutches, interactively horseless carriages?_

Nailed it. Great article. Apple's hardware is as beautiful as ever but their software UI seems to have gone right of the rails. I wish Google's wasn't aping that dumb page curl effect in their own books app.

</comment></comment></comment><comment><USER17> > Eventually, I (well, many of us) decided that better native clients (OSX, > Windows, Linux, Eclipse, Visual Studio, etc) was the best way to grow > GitHub.

I hope that means they plan to build a git GUI client for Windows, the poor bastard child of git support.

</comment><comment><USER18> > Simplify the git fetch, pull (--rebase), push interaction. Synchronize — > don't make the user figure out what they need to do to get their local > commits remote and remote commits local.

What about conflict resolution? That's one of the hairiest, least-user- friendly scenarios in my experience.

<comment><USER19> What if there was something like a git deploy command? Basically, when you don't actually care about git functionality on the remote (production/staging) end, that would actually change the remote files. (Yes, I know it can be done with a hook, but that's more of a power user solution, and it's still extra work to setup)

</comment></comment><comment><USER20> He makes great points about MacRuby. I started tooling around with it for an app a few months ago, and though it was a great interface, it didn't make working in Cocoa any easier, and I still had to learn a lot of weird technology choices in Cocoa.

Though, I think the difficulty of making a complex GUI in Cocoa shines in the OS X world. It's a lot harder to make a working UI, so you want to get the design right the first time, so you don't have to go back and re-do.

<comment><USER21> Well, MacRuby is a language on top of Objective-C. You can use Cocoa with it, but you should be able to use the Chameleon framework too, assuming it is GC- friendly (otherwise, adding GC support shouldn't be hard). His points don't make much sense to me.

</comment></comment><comment><USER22> I really like what GitHub do, though in this case I would say that the GitX client (forked one) is way more productive and overview:aböe IMO. I even managed to teach my MBA partner how to use it - this one is actually a bit more confusing than GitX interface. Abstraction is not always for the good, but a very good try at least.

</comment><comment><USER23> Dear github: clicking "published" on a project deletes it from github. That was a surprise!

<comment><USER24> <http://kreitz.co/1H092e0h3z3y1v190v3T>

</comment></comment><comment><USER25> Has anyone been using this client, is it worth using as far as GUI's go?

<comment><USER26> I've been using it. I like it a lot, but I can't figure out how to "git add ." in it!

I don't know why people are trashing this app. It's not exactly hard to use the command line if you don't like this app.

Using a GUI on git is just a convenience, and probably most useful for new git users.

<comment><USER27> What I think part of the problem people have with it is that it doesn't necessarily do what a seasoned git user would expect when syncing remote repositories, such as the fact that it pushes and pulls at the same time, and the pulls aren't normal pulls, they're rebase pulls.

</comment></comment></comment><comment><USER28> Smartgit is an awesome client for mac and I love the diffs view. Git is complicated so does a simple client help or hurt? I think that's up for debate and different users are going to have different requirements but for me I feel Smartgit is simplistic, useful, and functional where as I think of the Github client as more of an RSS type application where I check the latest stuff that has been committed.

</comment><comment><USER29> Just wanted to say thank you so very much! I'm just getting started on trying to build an iOS/Mac application system and while it's fairly straightforward to build it, the design of the user interface is what gets me. Going from ok to 'wow' is what really sets Mac applications apart from most PC applications.

</comment><comment><USER30> On a related note, i've built a simple github browser for ipad that will never get approved on the AppStore due to paid accounts. If someone wants to play with it here's the link <https://github.com/oscardelben/GithubBrowser>

<comment><USER31> You can still create an account and provide the Apple reviewers with credentials to try it. This is what we did for an iPad project that uses Facebook photos, we provided Apple with login credentials to a facebook account with lots of photos in it so that they can test it, and the app was approved from the first submission.

<comment><USER30> Tried that without success. Maybe it depends on the person examinating it. Btw it took them two months to reject the app so there must have been something going on.

</comment></comment></comment><comment><USER32> I'd love to see a good comparison from someone with a good bit of WPF/Silverlight/Xaml and Cocoa experience.

</comment><comment><USER33> This is so unfair. I finally mastered the GIT console pushing and pulling stuff around. And this awesome product comes and the console is now obsolete. Jokes apart, this is super tool that will bring new users that are still not familiar with the console. Great job guys!

</comment><comment><USER34> I use SourceTree. It's not free, it's definitely not cheap, but it's badass. <http://www.sourcetreeapp.com/> (I have no affiliation, just a happy customer)

</comment><comment><USER35> I've been enjoying the app these last few days. Nice job! It's a great add-on to an already killer service. I'm quite happy to send the folks at Github some of my money each month, because they really earn it.

</comment><comment><USER36> On the images/code drawing points: are there any benchmarks for this? I've been writing meticulous CGGradient type stuff recently, should I just make a gradient in Photoshop and call it a day instead?

<comment><USER37> Depends on how you handle the gradients - CG has some neat tricks about reusing gradient rendering if you don't instantiate the same one over and over.

</comment></comment><comment><USER38> Could someone elaborate on the difficulties encountered managing branches of an iOS project in XCode using git?

<comment><USER6> Xcode tracks files with an XML "project file." So if you add files in one branch and remove files in another branch, it often puts this project file into a conflicted state. Resolving conflicts in this file is really difficult — lots of confusing paths and SHAs all mixed together. If you don't resolve conflicts correctly, the entire project refuses to open.

<comment><USER38> Thanks, that makes sense. Is it often that these conflicts arise during development on a team of 1-3 developers? I'm also assuming you're referring to the package contents of the .xproj file (specifically project.pbxproj), correct?

</comment></comment></comment><comment><USER39> Auto Save and Versions <http://www.apple.com/macosx/whats-new/auto-save.html>

<comment><USER40> These APIs are not well-suited for git-like version control.

They're document-oriented, rather than project oriented (or if you present git repository as bundle, you lose nifty per-document presentation).

iCloud may force creation of versions (commits?)

There's no branching. There's lots of locking and exclusive access.

</comment></comment><comment><USER41> The bit about the NDA is a little ridiculous.

Apple wouldn't be able to politely ask people not to blog about their stuff.

</comment><comment><USER42> It's amazing, I thought I would come here to learn things, but instead I am teaching.

Branching projects is hard in XCode? Zip up the project files and back up the revision... in I don't know, a source code repository? LOL!

None of the re-writing is required in Xcode for your app. Design the app, then make it in Xcode. If you have to make revisions to the design of your app, go back to designing it. Most of the code can be re-used, but clearly you haven't finished designing the app yet...

Interesting take on the initial experience. But instead of casting about for blame, it might be better to ask why your processes are going wrong.

</comment><comment><USER43> Super interesting article</comment>


Show HN: Top 5K most active GitHub accounts - <AUTHOR> https://github.com/redox/top-github-users/blob/master/top-5K.csv

<comment><USER2> You have a lot of duplicate entries there.</comment>


Zombie Outbreak Simulator for iOS: Sales report - <AUTHOR> http://www.binaryspacegames.com/2013/01/zombie-outbreak-simulator-for-ios-sales-report/

<comment><USER2> Thanks for posting realistic and honest figures. As developers we can become obsessed with building things, and inflate the potential return. I can understand your frustration, working at such a high level, building, marketing, debugging, drawing artwork, etc., only to have what seems like pennies on the dollar come your way.

It takes guts to share, so thanks.

<comment><USER3> Thanks! :)

</comment></comment><comment><USER4> I just read the 4 hour work week book. He actually talks about the 80-20 rule. 80% of returns come from 20% of work emphasising on the effectiveness of your actions not efficiency.

Applied to this, they could have enjoyed the initial success and moved onto better things. The later effort seems like beating a dead horse.

or maybe this is just my hindsight bias.

<comment><USER5> I don't think this has as much to do with the Pareto principle as it does with long tail economics. I get the distinct impression from the article that the author and his partner are considering doing this full time as a career. They clearly have a long way to go, but especially in the beginning, they stand to gain a great deal by getting their apps in the $30-50/day revenue area than letting them stay (I tried to avoid the word "languish") in the $15-20 range.

<comment><USER4> I assumed both are closely related (I'm no economist). <http://en.wikipedia.org/wiki/Pareto_distribution> My original comment was to put just enough effort to capitalise on the first few parts of the distribution.

As an outside observer, indie game development is still doesn't seem sustainable. I've read too many stories of people with initial success and try to build a company around it to finally fail. There are too many variables in play to build predictable revenue.

There are of-course exceptions, it mostly involves making as many games as possible and praying one of them clicks (Zynga, Rovio etc). In such a market, the competition is ruthless. Both perfect competition and complete monopoly are not favourable[1].

[1] [http://blakemasters.com/post/20955341708/peter-thiels- cs183-...](http://blakemasters.com/post/20955341708/peter-thiels- cs183-startup-class-3-notes-essay) (Read from "IV. Capturing Value")

<comment><USER3> It's an interesting strategy that I've wondered about before - make lots of games until you make a hit, or at least have lots of things bringing in a small amount each. Even internally, it's worth prototyping lots of ideas to find the best one to develop into a full game.

However, with over 700,000 apps on the app store, it's incredibly hard to get noticed at all. Therefore I think there's some value in working on something over a longer time frame, trying to build up a community around it.

Back around September of last year Jay and I were at a bit of a crossroads - keep going with ZOS/C3O, or switch to something else. In the end we decided to part ways, Jay left Binary Space in December and I decided to keep making updates for ZOS and C3O. I'm buying out Jay's share of Binary Space by giving him a share of revenue for the next several years.

Back in 2010-2012 we were trying to build Binary Space into a legitimate business - ie something that could support us full-time. I agree that indie game dev is incredibly hard to make a living from. I've now scaled my ambitions back to it just being a hobby. It's a fun hobby though, and it makes enough money to pay for itself :)

</comment></comment></comment></comment><comment><USER6> There is nothing about marketing right? I mean real marketing not just by cutting the price. For me it is one of the main reasons they didn't earn a lot, specially with the video game industry. For instance, it is not surprising to see the marketing at 60% of expenses, and it can be even more.

They should send keys to journalists, do a real marketing strategy with trailers, put ads every time they do a big update, talk to the community, etc. Marketing is a core of the formula to be rich and successful. In an entertainment industry, more you can give emotions to your future players more you increase the rate of conversion and their future value (trailer, teaser, quality of gameplay, etc.), and at the same time if you put these ads on as much people as you can, it directly increases your own wealth.

It reminds me this article: [http://www.gamasutra.com/view/feature/173068/congratulations...](http://www.gamasutra.com/view/feature/173068/congratulations_your_first_indie_.php?print=1) And for the equation you have the excelente book "The Millionaire Fastlane" by MJ DeMarco or more quickly: <http://personalmba.com/billionaire-formula/>

<comment><USER3> We spent about $1600 on ads, resulting in about 3,000,000 impressions and about 2,000 clicks through to the app's promo page ([http://www.class3outbreak.com/iphone-ipad-ipod- touch/games/z...](http://www.class3outbreak.com/iphone-ipad-ipod- touch/games/zombie-outbreak-simulator)). From there it's impossible to tell how many of those people bought the game, but I assume it's much less than 100%.

Those clicks cost us 80c each. This is not effective for a $1 app which gives a 70c profit after Apple's 30% cut. Even for a $2 app, it would only be effective if about 60% of people who clicked the ad bought the app - it seems unlikely that it would be anywhere near that high.

Most advertising seems to cost about $1 per click. Based on the cost per click and the potential return from a sale I don't think advertising is cost- effective for promoting apps. The only way it might work is if you spend tens of thousands of dollars, so you're on "all" the websites and so "everyone" becomes aware of your app. Therefore it gets talked about, and each click results in potentially more than one sale, by spreading through word of mouth. This also only works if the game is good enough :)

I mentioned briefly in the blog post that we got a few reviews written up. Jay contacted dozens of review sites and sent out about 20-30 review codes. We had a poor response.

In the end I think the only marketing that was really effective was that we had an existing community around the web versions of our games - at the time of ZOS's release we had about 30,000 visitors a month to our website, and about 8,000 fans on Facebook. I think this is the main reason that we did as well as we did :)

</comment></comment><comment><USER7> IAP is not meant for selling bombs. IAP is meant for selling full version of an app from within a demo.

I would argue that this is what Apple had in mind initially, before it got re- purposed by "inventive" marketers as an in-game milking mechanism. You can say all you want that "it works" and "everyone's doing it", but it's a very tacky and inherently disrespectful way to treat your users. Not too much unlike the gym membership and telco contracts. These works too, but it's a predatory model that _everyone_ hates. I mean... c'mon, selling bombs to nuke zombies didn't work that well? What a surprise.

<comment><USER8> Apple is sometimes very strict about enforcing the way things were meant to be. With the number of apps using IAP for buying items within the game, I would wager that Apple meant IAP to be able to buy just about anything that exists within the app.

<comment><USER7> They wouldn't want to kill the hen that lays golden eggs, would they?

As I said in another comment - if you look back at how software licensing worked before the AppStore time, it's a long stretch to assume that Apple could foresee the current use of IAP, that's of purchasing small _expiring_ upgrades for the apps. It's really a new and largely unexpected development.

<comment><USER9> > It's really a new and largely unexpected development.

Not really, pay to play gaming has been around for a lot longer than smart phones and the associated apps. However, it's questionable how much Apple tried to foresee what the future use of IAPs would be.

Before the first highways were built, I doubt people would have expected hotels and fast food restaurants to become an almost parasitic infection around off ramps, but they did.

It's often more about the idea than what the idea can do.

</comment></comment></comment></comment><comment><USER10> I liked the car-purchasing power throughout the article to give meaning to the values. I would suggest the freemium model though.

</comment><comment><USER11> The free version was an obvious fail. I bet it cannibalized sales as well. Should be removed.</comment>


The Bad News About Helicopter Parenting: It Works - <AUTHOR> https://www.nytimes.com/2019/02/07/opinion/helicopter-parents-economy.html <comment><USER2> Most important two paragraphs in the article:

 _But for the most part, the new parenting efforts seemed effective. Dr. Doepke and Dr. Zilibotti can't prove causality (to do that, you'd have to randomly assign parenting styles to different families). But when they analyzed the 2012 PISA, an academic test of 15-year-olds around the world, along with reports from the teenagers and their parents about how they interact, they found that an "intensive parenting style" correlated with higher scores on the test. This was true even among teenagers whose parents had similar levels of education._

 _The most effective parents, according to the authors, are "authoritative." They use reasoning to persuade kids to do things that are good for them. Instead of strict obedience, they emphasize adaptability, problem-solving and independence — skills that will help their offspring in future workplaces that we can't even imagine yet._

Can't prove causality, and relying on teenagers to define the style of parenting they're subjected to, I'd guess that almost 100% would respond with "intense".

So their definition of 'Helicopter Parenting' is actually 'Authoritative and Rational, Reasoned Explanatory Parenting' (which I'd refer to as 'good' parenting) and the author is also referring to it as "new parenting". This definition differs significantly from my experience of being parented, and of those I'd consider to be 'Helicopter' parents who are those that stand over their child not letting them fall over or take any risks or hold sharp things from the ages of zero to thirteen, although these same 'Helicopter' parents frequently give their spawn soft drinks, sugary lollies, and abundant screen- time so that their little prince or princess SHUTS THE FUCK UP when Tattoo Nightmares is on.

'Helicopter' parenting is 'Short-Term Anxiety' parenting and 'Parental Love is not allowing exposure to anything that may be ultra-short-term painful' parenting.

'Helicopter' parenting is not: _use reasoning to persuade kids to do things that are good for them. Instead of strict obedience, they emphasize adaptability, problem-solving and independence_

That's generations-old 'good' parenting.

<comment><USER3> I have to agree with you.

> _Helicopter parenting_

> _Instead of strict obedience, they emphasize adaptability, problem-solving > and independence_

These two don't align. The main detriment of helicopter parenting is that it does not promote independence. Furthermore, I'm from a country that does fairly well in PISA tests and I find that kids here tend to have far more freedom than in most western countries. Kids play on their own across town without any supervision even before the age of 7. Kids also come and go to school on their own at age 7. Sometimes the school is a few kilometers away in a city and that's considered normal. This isn't an anecdote against the study, but rather against the author's wording.

> _Using data from a national study that followed thousands of American > teenagers for years, the authors found that the offspring of "authoritative" > parents were more likely to graduate from college and graduate school, > especially compared with those with authoritarian parents._

This doesn't necessarily mean that they had better outcomes. I can guess at why kids with authoritative parents might be more likely to go to college and get a graduate degree, but I'm not sure it actually results in better outcomes. A degree in something useless is not worth the time and money it costs. A degree you don't finish is worth even less, because college seems to be largely about signaling.

<comment><USER4> The New York Times is a mouth piece of orchestrated propaganda, and the prevailing wind they're trying to sell people on is:

Most people are really quite stupid, knowing this, we have to intuit that a large number of stupid people are hearing a message that "helcopter parenting" is frowned on, and this might serve as a cue to tragically stupid parents to cut back on general guidance, possibly to the point of neglect.

Given that our audience is comprised of many stupid people, we need to send a clear signal to circumvent the optics of overparenting. The only message stupid people will understand is a diametrically opposed message. To whit: there is no such thing as overparenting, more is better. Smothering your children is okay.

If anything, a propaganda voice like this might serve as a clarion call to shelter children to the point that they grow up stunted, naive and a little immature or socially inept, but honestly it will lead to fewer criminals and lower prison populations, thus the generalized bulletin may be conscionably delivered to the lowest common denominator, however wrong it might prove, upon deep examination.

<comment><USER2> God that's depressing. Which probably means it's on the money.

It makes any discourse on the subtleties of any topic treated in such a way meaningless because the reason behind it is the sub-text as opposed to what is actually presented.

Putting icing around a rock and throwing it through a window then saying "I've delivered your cake" when the whole point is the rock and the broken window.

</comment></comment></comment></comment><comment><USER5> Alternative title, justified by stats presented in the article: helicopter parenting might work (correlation only proven) if your only target is to produce offspring who are higher than average performance academic testers at the age of 15

Net benefit unclear. Caveat: study population was "American teenagers", probably meaning the US.

</comment><comment><USER6> Probably like with many things, there is a U-curve involved.

The main thing about planned activities is that if they're chosen well, they're beneficial, if chosen poorly they're a waste of time. There needs to be more detail.

Also some parents misinterpreted the idea and do things instead of their kids not for them - e.g. fake homework instead of working through it with the kid to let them learn.

Trying to push into better schools and universities is another thing that correlates with success, academic or otherwise. But probably it is also problematic if you overdo it.

It would be interesting to stratify by 10% and look for interesting and meaningful differences in detail.

For instance, there might be just right degree of child freedom involved. Ask parents about number of hours of unstructured play and what it is in rough categories. Check if parents do "play dates" or not.

(Such categories may be media use, video or board games, unstructured sports, free roaming, visits with friends, hobbies. Ask how much activity time is social and with how many others.)

</comment><comment><USER7> Works to accomplish what, though? Is what it accomplishes (test scores) more important than the things it compromises (self sufficiency) in the long term?</comment>


Elon Musk's 'pedo guy' defamation case is going to trial - <AUTHOR> https://techcrunch.com/2019/05/10/elon-musks-pedo-guy-defamation-case-is-going-to-trial/ <comment><USER2> Unless it turns out that the diver _is_ actually a pedophile, Elon is pretty screwed here.

The difference between a standard defamation (defamation per quod) and defamation per se, is that a defamation per se is something that is _so_ harmful that the plaintiff does not need to prove actual damages.

"Traditionally, there have been four general categories of untrue statements presumed to be harmful to one's reputation and therefore actionable as an injury claim. Typically, if the statements don't fall into one of these categories, the plaintiff is required to prove their damages. If it does fall into one of these categories, damages are usually presumed.

The four general categories are:

        Indications that a person was involved in criminal activity
        Indications that a person had a "loathsome," contagious or infectious disease
        Indications that a person was unchaste or engaged in sexual misconduct
        Indications that a person was involved in behavior incompatible with the proper conduct of his business, trade or profession"[1]

Unless Elon's statements were actually truthful, it seems that his comments fall under two or possibly three of the above categories. (depending on how one interprets the email he sent to a buzzfeed reporter)

I know that a lot of people here have a lot of respect for Elon, but come on - unless he has some undisclosed information of which everyone else is ignorant, it seems pretty clear that he did defame this guy.

The fact that his lawyers' argument is essentially "you can't defame someone on Twitter" also seems fairly desperate IMO.

[1]: [https://injury.findlaw.com/torts-and-personal- injuries/what-...](https://injury.findlaw.com/torts-and-personal- injuries/what-is-defamation-per-se-.html)

<comment><USER3> > Unless Elon's statements were actually truthful, it seems that his comments > fall under two or possibly three of the above categories. (depending on how > one interprets the email he sent to a buzzfeed reporter)

Actually, I think it potentially hits all four:

Pedophilic acts are generally crimes, and the totality of the circumstances makes it reasonable to conclude that Musk meant that acts, not _just_ orientation, is involved, meeting the first form of per se defamation.

Pedophilia is a diagnosable mental condition, and one which brings significant social disapprobation; mental disorders have in some cases been held as being "loathsome" diseases. To the extent that Musk's claim can be viewed as including (even if not limited to) a claim of pedophilia in the sense of the disorder, it fits the second category.

Pedophilic acts are also sexual misconduct as well as crimes, so it fits the third category for much the same reason as the first.

Accusing a professional cave diver _currently employed as such in a rescue of children_ of being an active pedophile certainly seems like it is accusing them of something incompatible with their business, trade, or profession.

(Huh, this case could become a new textbook example of _per se_ defamation.)

</comment></comment><comment><USER4> It is increasingly hard to retain respect for a billionaire who takes on "the little people" and then eggregiously defames them, and uses his personal wealth to try and avoid the easy path out: Saying sorry, or not being stupid in the first place.

Sure. he's musk. he's also (in my personal opinion) behaving like a dickwad. Man up, say sorry and pay restitution.

</comment><comment><USER5> I have a stupid question. Can anyone just sue anyone else for defamation? I'm just trying to figure out why Elon is in so much trouble over this. He isn't an elected official or anything. He's just a dude who happens to make cars and space ships. Is he not allowed to call people names for some reason? I once called my friend a douchebag, so can he sue me for defamation?

> "Musk's lawyers argued that statements on the internet, and more > specifically on unmoderated forums like Twitter, are presumptively opinion, > not objective fact."

As much as I think Elon should shut up, get off Twitter and stop making a fool of himself, I have to agree with his lawyers here. I don't see a crime.

<comment><USER6> I feel like this isn't quite defamation either (especially since there was later a retraction of sorts), but calling someone a pedophile is in a distinct class from calling someone a douchebag. In one case the insult is an inanimate object that is always an insult, and can't be reasonably taken seriously. In the other there's an implication of extreme wrongdoing where the line between insult and false accusation is blurry.

Edit: see the comment about per se defamation in another thread, as I wasn't aware of that legal distinction but it's the same idea. I don't believe "douchebag" meets that definition, but pedo guy is border-line at best.

<comment><USER7> > I feel like this isn't quite defamation either

He made a specific claim misrepresenting the guy. A claim in which he could request relief (for instance: employers not hiring him because he was rumored to be a pedo)

He didn't say 'cave guy looks like a pedo', he literally called him a 'pedo guy' which most people would think 'oh, maybe this is a person with a history of abusing children'.

In the least if it makes a someone reading that consider that the plaintiff is actually a pedo or at least has to stop to research it.... that seems fairly defamatory.

</comment></comment></comment><comment><USER8> "What Plaintiffs Must Prove To Win A Defamation Lawsuit In The USA:

To win a U.S. defamation lawsuit, the plaintiff, at the very least, must prove that the defendant:

Published or otherwise broadcast an unprivileged, false statement of fact about the plaintiff; Caused material harm to the plaintiff by publishing or broadcasting said false statement of fact; Acted either negligently or with actual malice;

Free Speech Vs Defamation:

In the United States, federal defamation law is closely tied to the First Amendment. As a result, federal slander and libel laws are more defendant- friendly in the U.S. than those in common law countries, like the U.K. and Canada. In short, opinion is not considered defamation in the U.S. That being said, false statements of fact that harm the reputation of an individual or business, aren't protected under Constitutional Free Speech provisions."

[http://kellywarnerlaw.com/us-defamation-laws/](http://kellywarnerlaw.com/us- defamation-laws/)

<comment><USER9> "Publish" is pretty hard to google, can someone elaborate?

In this context, I am wondering about its usage w.r.t. the email to buzzfeed, is that considered "publishing".

If not, I would have thought then that the libel would be on buzzfeed side, for publishing unsubstantiated rumors. At the very least, the act of "publishing" was performed by buzzfeed, even if they had caveat with "Musk emailed this to us..." .

With respect to Musk tweets, no doubts there, he clearly "published".

<comment><USER3> > In this context, I am wondering about its usage w.r.t. the email to > buzzfeed, is that considered "publishing".

Publishing for purpose of defamation is communicating the message to another person by any means.

> If not, I would have thought then that the libel would be on buzzfeed side, > for publishing unsubstantiated rumors

BuzzFeed published true facts, to wit, that Elon Musk had mailed them certain claims. Falsity being a required element of defamation (whether libel or slander), their publication can not be defamatory.

> if they had caveat with "Musk emailed this to us..." .

That's not a caveat, it indicates a completely different fact claim; the claim "Joe said X did Y" is a distinct fact claim from the claim "X did Y".

<comment><USER9> > Publishing for purpose of defamation is communicating the message to another > person by any means.

So, even if buzzfeed had not published to their website, Musk had already published to buzzfeed. Interesting !

</comment></comment></comment></comment><comment><USER10> 1\. What a very strange ordeal. Someone please explain but it seems like the only way this works out for Musk is if he brings some incriminating evidence on the diver? Why wouldn't they just settle this out of court?

2\. Everything else aside, I remember seeing the narrow squeezes, and remember seeing the submarine. That was never going to work.

<comment><USER11> I suppose it could end up as only a slight loss for Musk if the diver can't demonstrate damages? E.g. if Musk's claim was so absurd and non-credible that nobody took it seriously?

<comment><USER2> IANAL, but in my understanding, the diver would need to demonstrate damages in a standard defamation case, but defamation per se does not require actual damages.

</comment></comment></comment><comment><USER12> In lawsuits like this, are the judge's and other court employee's salaries covered by legal fees paid by the loser? Or is this footed by tax payers?

What a ridiculous waste of tax payers money if this is funded by them.</comment>


Show HN: Weeknder – up to 60% off weekend flights from NYC - <AUTHOR> New MVP product from Priceline that allows you to save up to 60% off weekend flights from NYC.<p>Check it out and leave feedback below! <comment><AUTHOR> Link: [http://www.weeknder.com/?utm_campaign=employee&utm_source=PC...](http://www.weeknder.com/?utm_campaign=employee&utm_source=PCLN&utm_medium=social&utm_content=18-09-03-08_06-05-18-14-01-14-04-05-19)</comment>


Swiftype Search Analytics 2.0 - <AUTHOR> https://swiftype.com/search-analytics

<comment><USER2> The Live Analytics stuff has been a big hit so far. Even internally we have had a hard time not staring at it! This is what is looks like with activity: [http://s.swiftypecdn.com/assets/email/live_analytics.gif](http://s.swiftypecdn.com/assets/email/live_analytics.gif)

</comment><comment><USER3> Curious how this would be useful. What's a good example?

<comment><USER2> Assuming you are talking about Live Analytics in particular:

One of the most common reasons this was requested was for events and product/feature launches. Some of our customers would launch a new product only to find out a day or two later that users were using different terminology or looking in the wrong places when searching for documentation or support. We are seeing content teams be able to adjust their copy in real time based on the search activity, which is pretty powerful.

There is also a lot of value in seeing a user's search activity while they are still on your website. We use Olark, so if someone isn't engaging with results/etc, we can guess at his/her intent and send them a message asking if they need help.</comment></comment>


Retina Display - The Future of Web Design. Internet Overview - <AUTHOR> http://www.htmlcut.com/blog/retina-display-future-of-web-design-internet-overview.html

<comment><USER2> I didn't knew that "Retina" was a trademark of Apple

<comment><USER3> Only in the context of computer screens. Other companies are of course allowed to come up with their own silly marketing terms to describe screens of this resolution.

Retina in other contexts remains a generic word.</comment></comment>


Short cut for gps developers - <AUTHOR>

take a look at https://www.location-engine.com/ <comment><USER2> Clickable: <https://www.location-engine.com>

You're supposed to put the link in the URL box - your ranking gets punished if you haven't actually lunk somewhere.

I'm tempted to call this spam. Can you tell us why it isn't? I haven't flagged it. Yet.

Added in edit:

OK, now it's obvious why you didn't post a link. Your posting history shows clearly that you are simply spamming HN. Four posts, all to the same thing, and no comments.

Say something interesting, or get flagged.</comment>


Codemasters History: The NES' Best Unlicensed Developer - <AUTHOR> https://tedium.co/2018/06/15/codemasters-history-nes-nintendo/ <comment><USER2> Nintendo sued them for bypassing their protection. Often people caved; Nintendo/Sega controlled how many games a developer could get published; the genre etc. Codemasters was like "yeah, right" and reversed engineered it, and got sued. Apparently they thought they were going to lose and agreed with Codemasters to call off the lawsuit as long as Codemasters maintained publicly that they had done a deal with Nintendo to end the case.

Source: common knowledge in the small West England game dev community.

<comment><USER3> Nintendo also sued Galoob over the Game Genie, which Galoob had licensed (purchased?) from Codemasters. Nintendo lost, and then they lost again on appeal. The issue was whether the Game Genie created derivative works.

[https://en.wikipedia.org/wiki/Lewis_Galoob_Toys,_Inc._v._Nin...](https://en.wikipedia.org/wiki/Lewis_Galoob_Toys,_Inc._v._Nintendo_of_America,_Inc).

<comment><USER4> FWIW, Hacker News appears to interpreted the last . in the link as a full stop, so if it doesn't work for anyone else you need to add a . at the end.

</comment></comment></comment><comment><USER5> A little more reading on the making/history of Micro Machines if you are interested:

[http://www.nintendolife.com/news/2017/05/feature_the_making_...](http://www.nintendolife.com/news/2017/05/feature_the_making_of_micro_machines_the_best_racer_on_the_nes)

</comment><comment><USER6> "The original A/B testing" picture was definitely worth it already, I just had to stop reading it to share this treasure!

</comment><comment><USER7> The original Codemasters was one of a kind. Rock Star Ate My Hamster was a lot of juvenile fun.

<comment><USER8> "Bad news, boss!"

I remember the joy of accidentally having your band endorse a campaign to euthanise OAPs. Fun times.

</comment></comment><comment><USER9> Dizzy was one of my all time favourite series on the CPC. I replayed one of them recently and it's has aged pretty well all things considered.

</comment><comment><USER10> I always wondered what the exposed connector was on the back of the cartridge after I rented that game</comment>