GameNetworkingSockets – Reliable and unreliable messages over UDP - <AUTHOR> https://github.com/ValveSoftware/GameNetworkingSockets <comment><USER2> Second Life does something very similar. Reliable and unreliable messages, binary format, multiple messages in a single datagram.

Unreliable messsages are for ones that are superseded by later messages. There's no point in retransmitting; you always want the latest object positions.

The big problem is message priority. Games need a low-latency, low-traffic channel for updates and a high-latency, high-traffic channel for assets. It's tough making this work on the open Internet. End to end QoS just isn't widely available. So using much less than the full available bandwidth is needed to keep intermediate FIFO buffers from filling up. This is related to the "bufferbloat" problem - network devices now all have lots of RAM, and if they have FIFO queuing and less output bandwidth than input bandwidth, they will build up huge queues that generate huge latency.

For QoS to work in the wild, there has to be some throttling or incentive to discourage too much high priority traffic. You'd like to have under 5% of your traffic at high priority. It's hard to make this work in the public Internet.

<comment><USER3> I believe this type of QoS would easily violate "net neutrality", which is why it hasn't happened yet.

<comment><USER4> That is a misconception.

It's totally legitimate to provide QoS based on open protocols, or even for particular classes of traffic. Net neutrality comes into play where providers start prioritising traffic based on the remote service provider.

</comment></comment></comment><comment><USER5> I've used ENet for my games which is pretty similar to this project. Unfortunately ENet does not support IPv6, and the pull requests on the ENet repository appear to be ignored. The ENet author refuses to accept any changes that break the ABI, which is highly unfortunate.

[http://enet.bespin.org/](http://enet.bespin.org/)

</comment><comment><USER6> > GameNetworkingSockets is a basic transport layer for games.

I understand that this is primarily derived from a gaming platform, but is there anything that makes this useful specifically "for game" and not networked applications in general?

<comment><USER7> Let's start with why TCP won't work: every time a packet is lost or reordered, your on-screen avatar will put Michael Jackson's moonwalk to shame. UDP won't work by itself either because what happens if that packet that said I got the winning kill didn't make it to the server? There are all sorts of time-and- order-critical messages that are needed to correctly keep score in the game for example. So obviously we need 2 channels, some for order sensitive data (like score) and some for last update possible (like movement)

<comment><USER8> If you round robin on a bunch of tcp connections you can avoid many of the packet loss latency issues (doesn't give an advantage over udp really, but allows you to work in tcp only environments).

<comment><USER7> Yea if you're gaming on a budget I suppose that would work, but I'd still be worried about the exponential backoff algorithm TCP usages because packets aren't guaranteed to take an unblocked pathway on their subsequent attempts. Its possible to lose a whole bunch of packets before being successfully diverted. And furthermore, what happens if your opponent is scoring points while you're frozen in TCP rectification mode. You're going to need UDP for just about anything that involves players interacting in a 3-dimensional world.

</comment></comment></comment></comment><comment><USER9> Would be great for TCP to better address the reliable transmission of messages for games, these "reliable UDP" code bases in game engines don't address all of the other issues such as bandwidth sharing fairness and avoiding saturation of networking links, which ultimately will just make networks slower than faster and more reliable for everyone.

<comment><USER10> If you changed TCP sufficiently to make it a real-time protocol suitable for gaming, it wouldn't be TCP any more. Reliable streaming and real-time packet delivery are two completely different animals.

I would argue that bandwidth-sharing fairness with stuff going over UDP is easy: Just start dropping packets when pipes get full.

Most updates are going to be pretty small. It's not like game developers want the user experience of their titles to be bad, after all.

<comment><USER9> It's not easy to share the bandwidth fairly, it's taken decades of research and it continues to be improved in TCP.

You're not consindering a server, the bandwidth is very high on the backend and does saturate links. You run many servers per physical or virtual machine due to cost, so you can have 1000s if players connected over a single network path.

<comment><USER10> ... which is why you provision servers and design your software and network architecture to take the demand (latency, bandwidth, etc.) into account. Data rates for online games are pretty predictable. A 10 Gbit fiber connection to a racked server doesn't cost that much.

At the datacenter level you're making sure that the bandwidth you bought from providers is sufficient (and ideally, redundant), and that you can shift load from one area to another if necessary. You can buy this capability from AWS or Azure, or build it yourself in many different ways.

</comment></comment></comment></comment><comment><USER11> Anyone know how this differs from RTP?

I haven't worked with either but did review the RTP spec, and many of these features appear similar.

RTP also has some multicasting features built in for broadcast delivery, which can be useful in certain contexts.

Edit: the reason I ask is that RTP is getting wide scale deployment and testing as it's being used for WebRTC.

<comment><USER12> Also worth comparing to WebRTC data channels, which are SCTP.

</comment></comment><comment><USER13> Stupid question. How do you solve (de)fragmentation and out of order delivery with unreliable protocol? What are cases and is it possible to make it simple?

<comment><USER14> You generally only use this for data where only the latest update matters. So if you get "Packet 18" "Packet 30" "Packet 19", you take 18, then 30, then ignore 19. The canonical example is an object's position; usually if you know what something's position is at 30 then information about where it was at 19 is so out of date it's useless.

The gain here is that you typically get the latest information as fast as possible. The downsides, of course, are that there's a pretty steep decline on connections that are even a little high latency or lossy. UDP drops packets even on wired LAN, for example. Practically all games use this method, and they all have lots of smoothing and prediction tech to make things seem like you're getting constant position updates -- which you almost certainly aren't.

You can also use this for data that doesn't matter -- although if it doesn't matter you should question why you're sending it in the first place.

</comment></comment><comment><USER15> The moment you say "reliable messages with UDP" you really are saying "we are implementing TCP on our own", which quickly turns into question "why?".

By its own admission, the project says: "The reliability layer is a pretty naive sliding window implementation". A bit scary if you really want to have guarantee message is delivered.

Also scary part: "Our use of OpenSSL is extremely limited; basically just AES encryption", "we do not support x509 certificates". OpenSSL is difficult, coming up with your own key exchange is likely problematic.

So I'm still searching for the answer as to why we need to do this? What's the market for this?

P.S. Yes, Valve being the author certainly brings some "reedeming value" to this!

<comment><USER16> Your assuming the usage of such a library is sending, let's say, a network crushing amount of data. But, this is really intended for games that try to fit under 512Kb/s (or even less). We're not trying to jam down 20MB/s of JS, 5 MB/s of CSS, and 100MB/s of PNGs. Reliable packets are sending you, at worst, "the state of the world" in a few KB.

<comment><USER9> You're just thinking of a single game client, if you have a server running 100 matches then it's real bandwidth and will saturate network links.

<comment><USER10> Last time I bought some 10Gbit fiber (some AOC, the stuff with SFPs on both ends) it was about $70 for a 3 meter cable. Amortized cost of switch ports are maybe another $200. You paid $700 for a 10Gbit networking card with (say) four ports ... but a LOT more for the server to run all of this.

Back-of-envelope calculation: You can get about 50,000 client connections at 50 updates/sec of 500 bytes each on a 10Gbit link. Four ports, double redundancy gets you 100K clients on a server. Yike -- that's _wayyy_ more clients than you want on a single server (you almost certainly run out of server-side CPU for game simulation and so forth before you run into bandwidth issues). A dual 40Gbit networking card is pretty cheap, but you'll run into CPU load issues trying to feed that card enough traffic -- it's frankly plenty hard to do that even when you're not doing game computation.

You can probably run all of your servers on 1Gbit copper for under $100 / port. There are better ways to wire things up, but I've done this in the past and it's worked fine.

Capital outlay for sufficient server bandwidth just isn't a big deal.

[edit: back-of-envelope calculation low by a factor of 10 :-) ]

<comment><USER17> 70 dollars for 9ft of fiber with connectors? I almost always make my own cables (fiber included) but for some special jobs where it was a time contraint I'd use pre-made but that still seems very steep. Where are you sourcing cables?

I also suppose not everyone knows how to terminate fiber and I've done it so much it's become second nature.

<comment><USER10> It might have been closer to $35, I'd have to dig a little. Remember, this is with the SFPs, not just the raw fiber (which is significantly cheaper on its own, even if you buy it terminated).</comment></comment></comment></comment></comment></comment>


JP Morgan to Grant IPO Access to Everyone - <AUTHOR> http://techcrunch.com/2015/10/21/jp-morgan-to-grant-ipo-access-to-everyone/ <comment><USER2> And this is so not part of a scheme to get the subscription price of an IPO higher than the institutional investors will tolerate.

I am perhaps to cynical here, feel free to dismiss my rant, but as Andressen pointed out a lot of the "value" is being captured on the internal rounds these days, not post IPO. And what that means is that when a stock comes to market it can be "hard" to get the valuation of the company to match its last round, much less get it above that. And as we saw with Box, coming in under often means having to accommodate your late stage investors some how.

So lets bring in retail investors! And with enough of those folks we can have _them_ raise the price of the IPO roadshow and well if the price is flat to down after that and they lose all their money, too bad. But hey they were "in at the IPO" right? Watch your prospectuses closely boys and girls, I bet on these same IPOs we'll have "investor participation" which is code for the late stage investors selling their shares in the IPO rather than having the company collect the proceeds.

See? JP Morgan thinks they are doing everyone a favor and all I can see is a barely disguised scheme for the private investors to fleece the retail folks out of their money.

<comment><USER3> It's basically an admission that the big investors got "preferences" on the previous rounds that nobody wants to deal with. So, they'll try to sucker the general public.

</comment></comment><comment><USER4> This reminds me of what Google tried[1] (with limited success[2]) to do with their IPO.

During the Dot-com Boom, allocations of shares in hot IPOs were highly sought after, as investment banks seemed to consistently price the offerings to guarantee a pop in first-day trading, and award allocations to their favoured clients. Effectively, the investment banks were under-pricing the shares such that the company going public "left money on the table", which got picked up (at relatively low risk) by the i-banks' preferred clients.

Companies seem to have grown wise to this and started putting more pressure on the i-banks to ensure they don't end up leaving money on the table (c.f. Facebook, Pure Storage). Therefore, the i-banks' favoured clients are less interested in taking IPO allocations, so the i-banks need to widen the net to find more investor demand.

1: [http://www.wsj.com/articles/SB108328345314098183](http://www.wsj.com/articles/SB108328345314098183)

2: [http://www.cnbc.com/2014/08/19/es-took-off-but-the- auction-d...](http://www.cnbc.com/2014/08/19/es-took-off-but-the-auction- didnt.html)

<comment><USER5> True. Funny thing that may or may not be a motivating factor. Except for Google and Facebook, a lot of recent IPOs are trading below their offer price. Maybe the bigger I-bank clients recognize this (even mutual funds) so they are buying at the pre-IPO in late financing rounds. However, they still need someone to buy at the IPO, and who better than Joe Public?

<comment><USER6> The Google and FaceBook IPOs were considered a failure (by conventional wisdom standards). Of course, the money went to them and not the wall street bankers.

<comment><USER7> This always cracks me up. In reality they got the price correct and maximized the money that the company got for doing the IPO in the first place. The problem is that there is an expectation that IPO stocks will 'pop' and allow wall street to line their own pockets. Since they didn't, they consider it a failure.

</comment></comment></comment></comment><comment><USER8> Translation: "We have initiated a plan to tap into the strategic fool reserve for when the unicorns go public"

Those pre-IPO shares aren't gonna unload themselves before the price crashes, ya know.

</comment><comment><USER9> Hmmm, call me an old cynic, but this kind of populist move typically comes before a downturn.

<comment><USER10> Call me a young one, but I think it happens every time before a major downturn :)

[http://gutenberg.net.au/ebooks05/0500831h.html#c12](http://gutenberg.net.au/ebooks05/0500831h.html#c12)

</comment></comment><comment><USER11> More signs that tech startups are overvalued... needed to broaden the base of suckers to maintain the viability of some future IPOs.

</comment><comment><USER12> Imagine the comments in here if IPOs were already available to everyone and we were reversing it to only allow big banks and partners to participate.

I personally am for everyone having equal access to IPOs and start-up funding and such. Anything else is opposed to the founding principle of this country of personal liberty-- and it's also opposed to reducing the wealth disparity.

In summary, it's not your job to protect me from myself.

</comment><comment><USER13> This plus the other news about NASDAQ doing similar moves I think is a bad sign. Public markets are clearly indicating they are failing to attract the big players, especially in technology, and this is their strategy.

The problem is, if their strategy works, the public would be way more exposed to risk like they were in 99/00 and any bubble bursting would have big impacts. As of now any bubble wouldn't have that widespread of ramifications.

On the flip side, this would likely drive markets up for a while and show a paper "improvement" of the economy because the numbers are public and auditable. Wouldn't last though.

</comment><comment><USER14> The investors who make a fortune with IPO's are the ones who sell, not the ones who buy at the IPO.

<comment><USER15> True, but you could make good money as well by having access to all IPO-s. I did the math a while back and selling the first day you could average around 10%, which is nothing to sneeze at.

</comment></comment><comment><USER16> > Founded in 2010, Motif is an online broker that allows investors to trade > baskets of stocks centered around particular themes or investing styles.

AKA "Hey boss I heard these index fund things were popular. Let's get in on that, but make it EXCITING!"

It looks like, at the very least, Motif doesn't charge you an annual fee for the privilege of buying 30 stocks in one click.

<comment><USER12> Motif allows you to make personal baskets and invest in it with one click and one fee. You can also share your basket with others.

If you were to try and make a basket of 30 different stocks with some other broker you would have to pay 30 different transaction fees.

</comment></comment><comment><USER17> This limited access to IPOs in the U.S. has always seemed very…limiting and also kind of unfair.

In India, IPOs approved by SEBI (the equivalent of SEC in the U.S.) have been available to all retail investors for a very long time and has improved a lot with online brokerages over the last 15+ years. You just need to have a demat account, which you could also open along side the application for the IPO. I don't understand why companies going public in the U.S. wouldn't want a wider reach for IPOs, which can easily come by getting retail investors to participate.

</comment><comment><USER15> Some first day pop is natural even with auctions, because the issue price has to be a lowest that buyers support.

Consider a company that wants to raise $100. Suppose there are 19 buyers who value a share at all different prices from $1 to $19, and are willing to buy 1 share each. The issue price will be $10. Those who offered $1-$9 will not get an allocation; those who offered from $10 to $19 will. The buyer who thinks a share is worth $19 will probably buy some at a > than $10 price, so voila a pop.

<comment><USER18> What about the guy who thinks it's worth $1? Wouldn't he attempt to short the stock immediately after the end of the auction, canceling the pop?

<comment><USER19> While it's possible, in practice it's generally difficult to short IPOs because your broker needs to locate shares and underwriter restrictions in the borrow process.

</comment></comment></comment><comment><USER20> Caveat emptor

<comment><USER21> "There is often a significant "pop" on a company's first day of trading as a public company, with double-digit percentage gains in the share price. But the gains are based on the IPO price that gets determined the night before the first day of trading — the price where the stock opens is often much higher."

</comment></comment><comment><USER22> Sounds like a great scheme for the founders and VCs to 'exit' using money from the middle class.

<comment><USER23> normally, founders and VCs have lock-up periods.

If I was a founder/VC, what I would be looking for out of this is not leaving money on the table (as others have mentioned).

The greatest thing for me on IPO day would be to go down by 5% on the public markets instead of popping. That means my company got an appropriate amount of cash by putting shares out onto the public market.

</comment></comment><comment><USER24> In other news, Motif Investing today announced that it is rebranding as Muppet Investing.</comment>


Twitter Rolls Twitter.com Back to a Server-Side Architecture - <AUTHOR> http://engineering.twitter.com/2012/05/improving-performance-on-twittercom.html <comment><USER2> This isn't a rollback of the API-oriented architecture, it's a rescue of a bunch of wrong-headed design mistakes, like forcing the rendering of individual status pages through a JavaScript function, using a hash-bang URI.

One of the major drivers behind the constraints in a RESTful architecture is user-perceived response time. Routing all content through "code on demand", which is effectively what you're doing when you force a JavaScript function to do all the rendering, instead of the browser itself, is not taking advantage of the fast, incremental rendering nature of plain old HTML generated by the server.

One can still design good API-oriented URIs with a server-side approach, you're just providing different serializations of the same resource (a nice HTML one and a JSON one for API access).... so there's nothing fundamental that Twitter has lost or abandoned here. They're just using the web better.

<comment><USER3> HTML is HTML. Why would it be any easier for the browser to render server- generated HTML incrementally, versus client-generated HTML?

<comment><USER2> Not easier... just faster.

Server-generated HTML: the browser GETs it and renders it as it streams through.

Client-generated HTML: the server GETs an HTML page with a JavaScript link, then GETs a JavaScript .js, then executes it, the jS GETs the JSON, then translates that into HTML at the DOM level.

The latter is arguably something that will lead to a better user experience once the page is in a "steady state", i.e. all dependent representations are loaded into the browser and rendered. But relying on it for "first render" makes for a slow experience when (e.g.) clicking on a link to an individual Twitter status.

<comment><USER3> Getting that JavaScript is a one-time operation, and a 304 from then on. Also, the HTML can include bootstrapped data, saving the roundtrip for JSON.

Also, with client-side rendering you execute more code on the client but less on the server, so in an environment like Twitter where it's not possible to do any sort of heavy caching (everybody sees something else), you're simply trading time on the server for time on the client. Not faster, not slower.

Server-side HTML generation is not a magical 0ms process.

<comment><USER4> Don't forget that JavaScript has to be interpreted every time the page loads, even if you have a cached copy of it. If it's a large chunk of code, the time to do that is not trivial.

I'm not quite sure that it's as much of a zero-sum game as you present it. I can easily think of scenarios where rendering on the server is much faster (e.g. using a compiled language vs JS, taking advantage of powerful hardware, granular caching, etc) and much more constant.

Edit: spelling.

</comment></comment></comment></comment></comment><comment><USER5> I am so proud of twitter right now, that I feel words will fail me, so I shall keep this short and to the point:

It takes serious balls to admit you were wrong after you kicked off an entire avalanche that has been breaking the web ever since. Yes, a lot of us knew then it was a ridiculously bad idea and we all said so; but for them to actually take this advice after going so out of their way to go completely client-side is just fantastic. Kudos, twitter folk!

<comment><USER6> For some web apps, namely ones that don't get linked to often like Twitter or ones that are truly trying to behave like desktop applications, hash-bang urls are really the only option for maintaining state in browsers that don't support HTML5 push states yet. I think the backlash against Twitter's and Gawker's use of them is warranted, but not the hyperbole that hash-bangs, no matter the context, "break the web."

</comment></comment><comment><USER7> Here is the original post, by the Twitter engineers:

[http://engineering.twitter.com/2012/05/improving- performance...](http://engineering.twitter.com/2012/05/improving-performance- on-twittercom.html)

<comment><USER8> Maybe a mod will swap it for the blogspam. _nod_

<comment><USER9> I posted it immediately after it was announced. It got ~20 quick up votes but never landed on the home page: <http://news.ycombinator.com/item?id=4040049>

</comment></comment></comment><comment><USER10> To mark this momentous occasion I'm going to go back and reread Steve Yegge on Amazon's SOA.

[http://plus.google.com/112678702228711889851/posts/eVeouesva...](http://plus.google.com/112678702228711889851/posts/eVeouesvaVX)

</comment><comment><USER11> It is always a little misleading reading articles like this because they don't get into many of the details. At the end of the day, you need to build to meet the requirements of your target audience. It doesn't really make sense to think that just because Twitter does something, then you should do it. The optimizations they are talking about may be so specific that they don't even apply to the common mid-sized web app. I think that the overall client-side architecture has broken new ground and does provide benefits that make sense for a lot of sites. I wouldn't think twice about not using the client side architecture just because of Twitter making a change.

Also, as some people already noted, Twitter didn't abandon client side rendering. If you go on the site now, you will still get redirected to the #! page.

<comment><USER12> This entry doesn't get into details because it's blog spam, submitted by the blogger himself.

You want this: [http://engineering.twitter.com/2012/05/improving- performance...](http://engineering.twitter.com/2012/05/improving-performance- on-twittercom.html)

<comment><AUTHOR> You guys are the blog detail. Your comments are the reason for short post.

<comment><USER12> I'm not sure how you expect the discussion to be accurate or informative without details that the article you summarized happily goes into. We already see confusion about where it's rolled out because we're reading you, not Twitter Engineering.

What does your post add to theirs? Honestly?

<comment><AUTHOR> I'm not looking to add anything to theirs. Thats why I link to them. I'm looking to get discussion here and on Twitter...while I formulate my own thoughts...and more analysis. That's why I said...your the detail of this post.

<comment><USER13> _> I'm not looking to add anything to theirs. Thats why I link to them._

Then link to them here as well. Save your own blog post for when you've got some original insight to add, then submit it to HN. Not before.

 _> I'm looking to get discussion here and on Twitter...while I formulate my own thoughts...and more analysis. That's why I said...your the detail of this post._

That's lazy as shit.

</comment></comment></comment></comment></comment></comment><comment><USER14> I wouldn't call it a rollback completely, but an improvement on the first time load. The whole Twitter page is rendered initially server side but then any subsequent request is made by JSON calls and rendered client side -- probably the best approach given the time it took for Twitter.com to load.

</comment><comment> DanI-S Twitter is used in a lot of developing countries, through a lot of outdated browsers, on a lot of slow computers. I'd imagine that this plays into their choices somewhat.

</comment><comment><USER15> I think this is great. The browser isn't an OS, it's a portal. It's already running on an OS. It didn't work for mobile (remember Apple was all about the web apps back in the day), it shouldn't work for desktop.

</comment><comment><USER16> Thank the creator. It was a blindingly unnecessary fashion statement that caused more problems than it solves, and I wish it safe passage on its way to the closet of failed experiments.

</comment><comment><USER17> But Twitter.com is slow (like a couple seconds to load twitter.com/#!/someone) even if you're using the latest Chrome browser - it can't be just fault of the client side architecture...

If the initial JSON was coming bundled with the page, the only reason for the slowdown is parsing JS? I thought that was what browsers were good at those days...

<comment><USER18> On a cold load you'd have to transfer 2 megs of mostly JS over the wire, and only after all that was done could JS start rendering. Even with a fast 10 megabits/s line that will still take upwards of 2 seconds just to get to square 1.

</comment></comment><comment><USER19> Sorry, but what's the difference between using a web application architecture and using a server side architecture? I'm curious!

<comment><USER20> Are you familiar with Model-View-Controller?

In this case it would be moving some of the controller logic (the parts responsible for rendering views and dispatching events from the UI) to the browser, and using an API to communicate with the model (and the rest of the controller).

So, if I'm going to display a page of 10 tweets, in the classic server side architecture, I load the tweets, render a view template based on a context containing those tweets, and then send the HTML to the browser.

In an API-based web application architecture like this, I _always_ send the same HTML, which is cached in memory and is almost a no-op to send to the browser, then the client side scripting looks at the URL of the page and makes a call to a JSON or XML API that will result in those 10 tweets. These tweets are then rendered on the client side by the browser.

This is beneficial in a few ways:

* You can re-use the exact same API and expose it to third parties, who can then write apps with all the functionality of your webapp, and you've one less thing to test.

* Rendering a template can be a (relatively) time-consuming operation that may require some I/O. On a single-threaded platform like Node.js, where you simply want to dispatch an event (request) as fast as possible and move on, rendering a template takes a lot of time.

* If the time is going to be spent rendering that template anyway, you may as well crowdsource it and let the browser handle it. The browser is probably only processing one page load at a time, whereas your servers could be processing thousands or millions.

The cons of using this system are related to the benefits:

* The API you use is likely to suffer from Abstraction Inversion[1], or if that's intentionally avoided, a Leaky Abstraction[2]. The reason for this is that there may be some pages to be rendered that require more complex, or less abstract, queries on the data. On the server you could easily issue a JOIN query, but it may not make sense to expose such a thing directly via a RESTful interface. Therefore your application may end up firing numerous API requests and joining the results manually in order to complete a request. If you DO expose this functionality, it will probably end up looking very out of place and very specific.

* The extra time spent by the browser may not be suitable in all cases. It poses a number of accessibility and performance problems on certain devices. I may not be able to use a certain website with a screen reader because of this, or I may not be able to view it on an ancient version of Opera running on a shitty old phone over 3G. Even on a modern smartphone, the time taken from seeing a Twitter page's header and background with the loading indicator to actually seing the content was a pain in the ass.

* Depending on your application and architecture, you may be able to deliver even better performance by caching rendered templates than by offloading it to the browser. For example, I believe Reddit pretty much prerenders and caches every single page on the site, which is why most stuff loads instantly, but at peak times it takes a while to load the message inbox, or the 80th page of posts. This might be made even worse by extra API calls and client side rendering.

[1] <http://en.wikipedia.org/wiki/Abstraction_inversion> [2] <http://en.wikipedia.org/wiki/Leaky_abstraction>

<comment><USER21> A lot of that could be described as "lessons I have learned on recent projects". I wish I had read (and grokked) this post 18 months ago.

<comment><USER20> Well, there's no One True Way for Software Engineering, and certainly this service-based approach can and does work for many, many projects. Obviously it wasn't a complete disaster in Twitter's case.

If I may, I'll employ another Anti-Pattern, Cargo Cult Programming[1]. This means that a team sees some method or 'One True Way' and starts implementing it without understanding why.

It's almost guaranteed to go wrong, and it tends to apply a lot to things that are hip, like this architecture and things like NoSQL.

[1] <http://en.wikipedia.org/wiki/Cargo_cult_programming>

</comment></comment></comment></comment><comment><USER22> Seeing as the web is more service oriented than object oriented..

Are we surprised to see a step towards SOA (presumably from OO that was also at the service layer)?

For me Web / mobile apps that are architected from a primarily OO perspective can turn out very differently (often with unique OO bottlenecks) than apps architected from a service-first perspective, using OO to fulfill services.

</comment><comment><USER23> There's still a shebang in the URL. If I enter a URL without a shebang, it redirects to one that contains a shebang. Since the browser won't include the fragment in the request, how does the server know which page to send back without using JavaScript to make another request? So it's not really "server side", not even the initial page load.

<comment><USER24> If you read Twitter's actual announcement ([http://engineering.twitter.com/2012/05/improving- performance...](http://engineering.twitter.com/2012/05/improving-performance- on-twittercom.html)), they've only rolled out the described changes to the tweet permalink page. Other pages will see these changes over the coming weeks.

</comment></comment><comment><USER25> I feel they were doing it wrong. If they preloaded the page with bootstrapped data + templates then it should be as fast.

</comment><comment><USER26> 2011-02-11: "We've made a tradeoff, however, in making twitter.com into an application using the hash, which is that it now cannot be both an app and a site at the same time."

[http://www.adequatelygood.com/2011/2/Thoughts-on-the- Hashban...](http://www.adequatelygood.com/2011/2/Thoughts-on-the-Hashbang)

</comment><comment><USER27> I welcome this but sticking with the fastest twitter client yet - their mobile site. i use it even on desktop plus they recently made improvements on it

<http://news.ycombinator.com/item?id=2977580>

</comment><comment><USER28> The client-side approach would work great if they didn't try to cram in so many features.

</comment><comment><USER29> from what i can tell, they are just rendering the initial page load on the server now.

<comment><USER30> Not at all surprising then except that it shows they're confident enough in their choice of clientside rendering to invest more deeply in it (by optimizing the initial load now.) What a misleading title.

</comment></comment><comment><USER31> I'm glad to see this. While it was an interesting experiment for Twitter to undergo, their front end performance really took a hit. I expect they'll see their usage numbers on twitter.com start going up again as they fix things.

</comment><comment><USER32> Twitter is doing the best approach which is a mix of both client-side and server-side. It is not an either or situation.</comment>


1, 2, n - How Coding Is About Design Iteration - <AUTHOR> http://plpatterns.blogspot.com/2007/12/1-2-n.html

<comment><USER2> I'm a little troubled with: "[a]nd it's not with a text-editor." I'm all for evolution but essentially you deal with text. So no matter how much you augment that you still deal with text (unless you propose a completely pictorial system which he doesn't appear to do). So in essence you still use, at the base, a text-editor.

He calls Emacs a glorified text-editor - and he's right, but the glorified part, or the extensible part, is exactly what he should look at. SLIME mode makes a good start, but one could do much more if they were motivated like one may expect he is.

I also fail to understand: "...so terrible that you have to re-write it. Because basically, you didn't iterate your design." If he's arguing that we should always rethink our design after a while and not continue on regardless I agree. But I'm not completely sure what he's getting at. Thoughts?</comment>


Perl advocacy, smells like blub. - <AUTHOR> http://www.oreillynet.com/onlamp/blog/2007/08/perl_is_dead_long_live_perl.html

<comment><USER2> I found cromatic's article fairly weak. It's basically impossible to get past the amount of uncoolness Perl has collected and not really worth trying. But I use it and enjoy it tons despite the snide remarks I must endure. A small price to pay in my opinion.

It's obvious to anyone being honest that the main reason most people don't like Perl is for the same laughable reason they don't like Lisp: the syntax looks scary at first. Few people really get past that point without coming to at least respect its power.

For web development I'm using Catalyst[1] DBIx::Class[2] and Template Toolkit[3] combined with CPAN[4] it's an unstoppable combination. Most of my work is plugging modules together cleanly. My code is small, efficient, and rock solid.

I've dabbled with Python and Ruby quite a bit but I just don't find significant advantages and missing CPAN always hurts. It's good that there are lots of people writing Python and Ruby code now. In 5 years there might be enough libraries to make them as useful as Perl is today.

1\. [http://search.cpan.org/dist/Catalyst- Manual/lib/Catalyst/Man...](http://search.cpan.org/dist/Catalyst- Manual/lib/Catalyst/Manual/Intro.pod)

2\. [http://search.cpan.org/~mstrout/DBIx- Class-0.08003/lib/DBIx/...](http://search.cpan.org/~mstrout/DBIx- Class-0.08003/lib/DBIx/Class/Manual/Intro.pod)

3\. <http://template-toolkit.org/docs/manual/Intro.html>

4\. <http://search.cpan.org/>

<comment><USER3> As someone learning both Perl and Lisp right now, I'm going to disagree on mere cosmetics as the main thing that scares people away. I'd also disagree that the reasons people get scared away are the same for each language. Perl is scary because there's loads of arbitrary syntax and shortcuts that you have to memorize. Lisp is scary because there are some unusual concepts that need to be learned before you can accomplish anything useful.

When learning Perl, I often find myself thinking "how do I do X?" Then I go look up the trick to doing X. When learning Lisp, I find myself thinking "I know I'll be able to do X, once I understand these rudiments well."

Consider the accumulator generator: <http://www.paulgraham.com/accgen.html>.

How would you assign the generated accumulator function to a variable and call it?

In Perl, you look up the syntax for assigning the returned function to a variable(or just guess and you'll probably be right). Then, you look up the syntax for calling the stored function (if you guess you'll probably be wrong).

        $s = foo(5);

        &$s(1);
        &$s(1);
        $s->(1);

In common lisp (I used CLISP), you can copy the Perl way of just using a value assignment, then using the apply or funcall function to call the stored function. This is all in Chapter 2 of _On Lisp_

        (setq s (foo 5))

        (apply s '(1))
        (apply s '(1))
        (funcall s 1)

Or, you can learn how to assign using symbol-function, and then you'll be able to call stored function like any other:

        (setf (symbol-function 's) (foo 5))

        (s 1)
        (s 1)

In Python, just guess and you'll be right:

        s = foo(5)

        s(1)
        s(1)

In my opinion, the Python version is by far the most intuitive. Call the function, assign the result to a variable, which is then callable like any other function. Lisp is more flexible and fun but takes more time to understand some aspects of the underlying interpreter. Perl is almost just like Python except I have to remember to put the right ASCII characters around my variables to get the right behavior. There doesn't seem to be a way to call a stored function just like you'd call any other function in the language. You'll always need that ampersand or the arrow. That's really annoying, just like it was really annoying in BASIC to have to use "CALL" to call a subroutine, and how you need wrapper objects in Java to call any Method. Maybe there is a way to do it, but it's probably completely random and buried in the documentation somewhere.

</comment></comment><comment><USER4> For me this had the opposite of the intended effect. Before I read it all I was thinking was "You don't hear as much about Perl lately." Now it's "Perl seems to be sinking."

<comment><USER5> Important marketing safety tip: Never compare the language you're trying to advocate to Cobol.

"Our language may be dead, but its ghost will haunt you forever" is not a good slogan, even if it is true.

</comment></comment><comment><USER6> Great article for the summer -- all that hand-waving created a lovely breeze while I was reading it.</comment>


The case that 'trial by ordeal' actually worked - <AUTHOR> http://www.boston.com/bostonglobe/ideas/articles/2010/01/31/justice_medieval_style/?page=1

<comment><USER3> 1\. This assumes that judges (priests) are honest and neutral to the case, and doesn't believe in the intervention of God themselves.

2\. This assumes people innocent in this case won't be afraid God won't help them because of theirs other sins (and who is not a sinner?).

3\. I don't think people were that much religious then. I mean - <USER2> medieval people wasn't more puritanical than we are, why should we assume they were believing in God thah strong (to put hand in the fire etc).

4\. How do we know ordeals worked? It's obvious that priests were describing their work in superlatives. And they were the most literate class then.

</comment><comment><USER4> "The only defendants who would have been willing to go through with the ordeal were therefore the innocent ones."

This only works if the guilty would in fact face lesser punishments than the ordeal, including the social penalties for having been found guilty. Considering how brutal medieval punishments were, this seems unlikely.</comment>


What Will the World Speak in 2115? - <AUTHOR> http://www.wsj.com/articles/what-the-world-will-speak-in-2115-1420234648?tesla=y&mod=e2fb <comment><USER2> From the article: "By the time Esperanto got out of the gate, another language was already emerging as an international medium: English." Yep. Esperanto is toast as a world interlanguage compared to English. The number of new speakers added to English each year just by natural increase of households in which English is spoken as a home language is, matched for levels of proficiency, comfortably greater than the total worldwide number of speakers of Esperanto. (The same is true, of course, of Modern Standard Chinese (Mandarin), Spanish, and Hindustani.) English is by far the language of choice in "interlanguage" contexts, as for example when a native speaker of Korean travels to Taiwan (I have seen this many times) or when a native speaker of Japanese travels to China (I have seen this too) or even when educated native speakers of various Sinitic languages meet up and some are not proficient in standard Mandarin (I have seen this plenty of times too). The use of English as an interlanguage in India alone (where mandating Hindi as the sole interregional language would be very politically contentious) ensures that English will continue to grow and thrive, even if the United States and Britain somehow disappeared from the world. (I have been watching a lot of films from India recently, as my town is blessed with more than one cinema that show current films from India, and even in a movie set in India with entirely Indian characters, you will hear little snatches of English embedded in Hindi, Tamil, Telugu, or Malayalam dialog, and you will always see signs in English in street scenes even of very rural places.)

So, yes, what will the world speak only a century from now, as the article asks? Plenty of other languages, for sure, and I for one am glad I devoted years to learning Chinese and German and other languages, but there will be more and more people speaking English in more and more places as the years go by.

<comment><USER3> On the other hand, Esperanto is the only constructed language to have got anywhere at all, and is outlasting those smaller languages that are going extinct every few weeks and those natural languages on life support kept around by hobbyists with too much power, like Welsh.

It hasn't become a dominant inter language (yet), but it also hasn't failed, and nothing has come along to change that Esperanto is dramatically less effort to learn to usable levels than any evolved language.

<comment><USER2> _Esperanto is dramatically less effort to learn to usable levels than any evolved language_

That is a frequent claim in the Esperantist literature, one I encountered when I studied Esperanto, but it is dramatically untrue. There are very few people who have taken up Esperanto who can communicate well with it even after much effort. That's especially true for people of the majority of the world's native language backgrounds.[1]

By the way, how would you write your whole comment in Esperanto?

[1] [http://www.xibalba.demon.co.uk/jbr/ranto/](http://www.xibalba.demon.co.uk/jbr/ranto/)

<comment><USER3> _By the way, how would you write your whole comment in Esperanto?_

I would struggle, because I'm not a fluent Esperantist; it would come out be omething like:

Alian ideon. la Esperanton estas la sola konstruitan lingvon kio havas multaj da parolistoj en multaj loĝoj. Ĝi ekzistas, dum ĉiu semajno aliajn malgrandajn lingvojn mortas, kaj ĝi havas pli vivo ol tiojn denaskajn lingvojn kio vivas de amatoristoj kun tro influo - ekzemple kimra lingvo.

La Esperanton neestas la plej uzata mondlingvon (nuntempe), sed ĝi ne mortas. Nenio ŝanĝis la fakto ke vi povas lerni ĝin, ĝis vi bonparolas, en malpli tempo ol iu denaska lingvo.

\--

[I dropped English idioms "on the other hand" \- which hand?, "have got anywhere" \- languages don't go anywhere, some of the metaphoric stuff about a language being alive and "on life support". If I've written it reasonably well it should carry the same general meaning. Transliterating this comment back to English:

Another idea. Esperanto is the only constructed language which has many speakers in many places. It exists while every week other small languages die, and it has more life than those native languages which live by amateurs with too much influence - for example Welsh.

Esperanto is not the most used world-language (currently), but it is not dead. Nothing changed the fact that you can learn it, until you speak well, in less time than any native language. ]

<comment><USER2> I could surely learn Dutch to given level of proficiency faster than I could learn Esperanto to the same level of proficiency. And what's really sad about that for Esperanto is that learning Dutch would give me access to more speakers in more places than learning Esperanto does.

<comment><USER3> Why "surely"?

That's not a great comparison since Dutch is about as close as a foreign language gets to English. And when you learn it you can only use it in the Netherlands and some former colonies. More speakers yes, but ... More places?

<comment><USER2> You seemed to be quite confident in your use of the phrase "any native language," so I immediately suggested a counterexample. As the Justin Rye website, already linked above, points out, Esperanto is NASTILY hard to learn for the native speakers of many languages. I by no means accept the statement that Esperanto is easy to learn to a given degree of proficiency unless someone shows me a well conducted study to that effect published outside of Esperantist advocacy publications. (I know for certain that the United States Army investigated using Esperanto as a language for the "aggressor" force in war games, but that practice appears to have been abandoned. Other countries at other times would have had sufficient interest in investigating an easy-to- learn interlanguage that I have to conclude, on the basis of "extraordinary claims require extraordinary evidence," that Esperanto is not especially easy to learn for actual real-world use with persons who have other native language backgrounds.)

<comment><USER3> But why surely? What makes you suggest Dutch would be easier than Esperanto to learn to fluency? Dutch looks as daunting as any other natural language to me, whereas the simplified patterns in Esperanto make it much more attractive. No more (goose->geese, but bed->beds). No more (swim->swam, but jump->jumped). No more (row/row) spelling and pronounciation weirdness. (X/malX instead of X/Y) dramatically reducing vocabulary to say the same thing. Looks much easier than Dutch.

(Albeit not _Easy_ because how easy can it ever be to learn to say _everything_ in another way?)

 _Other countries at other times would have had sufficient interest in investigating an easy-to-learn interlanguage_

If they really had "sufficient" interest, they would have funded some linguists and had an interlanguage designed from scratch, then mandated that it be taught in their schools and _solved the problem_ [1]. Language work requires minimal technology, minimal physical resources, and minimal space, so funding from a government scale budget would be a non-issue ... so why haven't they?

All of the central European governments with multiple neighbour countries speaking different languages, international organizations like the EU, the UN, WTO, ISO, any of these people - [http://en.wikipedia.org/wiki/List_of_intergovernmental_organ...](http://en.wikipedia.org/wiki/List_of_intergovernmental_organizations) \- which of them had _sufficient interest_ to _actually try and solve the problem_ \- in whatever way, picking any of the myriads of constructed languages or having their own designed and agreed upon?

Your suggestion is that they investigated Esperanto and found it too difficult, right? But why haven't they done anything, except be happy that English or French is good enough for them and ha ha sod the entire rest of the world who find English and French difficult to learn to fluency.

[1] I conclude, either the problem of agreeing on a more-simple shared language is unsolvable, or they didn't have "sufficient interest" in solving it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> I think the article asks the wrong question. Surely by 2115 we will have a perfect universal translator fluent in hundreds of languages.

Why learn Chinese or Hindi if your smartphone or perhaps your glasses will seamlessly translate back and forth between your native language? The pressure to learn a second language will be lessened greatly.

<comment><USER5> Sometimes automatic translation seems to be the flying cars of computer engineering.

In 2115 we might be able to technically do a very good approximation of it, but it might not have much use except for very casual contexts.

I think it really comes down to controlling one's communication. For instance, right now businessmen learning Mandarin are not cheaping on translator services, they want a better understanding of someone's culture, the concepts they think in, and want to speak in their own words.

Communication is and always will be extremely important, and as soon as there will be enough stakes, the time we 'lose' in learning will always be worth the gain in control.

Of course a universal translator would help for tourism and casual matters. But I think for translating a menu, street signs or simple instructions we are already having pretty decent applications and won't need to wait for another century.

<comment><USER6> As an example of how overly optimistic people have been about translation, here's a page on Foresight Exchange (a long-running play-money prediction market) where people have been betting on the probability of high-quality machine translation by 2015, since 1995:

[http://www.foresightexchange.com/fx- bin/Claim?claim=Tran](http://www.foresightexchange.com/fx- bin/Claim?claim=Tran)

Even up through 2008, most people thought it was going to happen by 2015! Of course the people who were more actively following AI knew that it wouldn't. I probably doubled my fake money on FX, if only I could remember my login.

<comment><USER7> Overly optimistic over the course of 20 years is one thing, but I find it pretty difficult to believe that translation between major languages won't be mostly solved in 100 years. The difference between what is available today and 20 years ago is already pretty impressive, but 100 years ago we didn't even have the theoretical underpinnings of a computer, let alone a machine capable of any kind of automated, generalized translation. Unless machine learning developments or computing power comes to a screeching halt, I can't see any insurmountable roadblocks.

That isn't to say I agree with the sentiment that efficient and accurate translation will make English obsolete. Pretty much every major programming language, along with things like URLs and markup, requires using ISO Latin characters found on a QWERTY keyboard, which greatly limits the power of a major class of contenders. English just happened to be the lingua franca at the time that cultural globalization allowed for a language to keep that status long past the nation that made it such stopped being a super power (which, of course, may or may not happen to the US in the next 100 years).

<comment><USER5> I think translation isn't an isolated problem. I mean by that that we might not be able to solve translation alone, and probably will need an almost exact machine reproduction of the human thinking process to correctly translate something.

For any mildly complex concept, heuristics, context analysis, pattern matching and word databases won't be enough to match two exact sentences in different languages. Even a sentence like 'I felt sick watching him treating his partner this way' will need an extreme lot of intelligence to correctly parse and convey in a different language.

If in 100 years AI really reaches the holy grail and we have actual artifical intelligence, translation will be a solved problem. Now, will we be able to reach that goal in 100 years ? I hope, but that's not a given I think.

</comment></comment></comment></comment></comment><comment><USER8> I don't know how people will communicate in 2115, but I can't imagine a 2115 where every human doesn't know every language without any effort at all. How can a discussion of life that far in the future not mention how computers will shape it?

<comment><USER9> [http://www.smbc-comics.com/?id=3576#comic](http://www.smbc- comics.com/?id=3576#comic)

</comment></comment><comment><USER10> Prediction: Everyone speaks in JavaScript

<comment><USER11> Nooooo!

Drops to my knees, camera zooms up and out. Roll credits.

<comment><USER12> It's OK, you can just speak C and emscripten will turn it into JS for you. Good luck reading what anyone else writes though...

</comment></comment></comment><comment><USER13> I really don't like how tones are presented as a confounding item like irregular verbs. Tonal languages essentially just take advantage of extra bandwidth that was ignored by most european languages.

They are hard for western learners but only because we are unused to treating tonal information as important.

In fact because of tones and limited pronunciations available I have found that I feel Chinese is more tolerant of bad or variant pronunciations than english(Assuming you can get tones right but there are really only 5 tones to learn). Tones just make a few more bits available for error correction.

As background I have studied chinese for 8+ years and lived in asia for a couple of years as well.

<comment><USER14> We use tones in English, too. Is it TACO Bell, or Taco BELL? Either one can get you laughed out of the room in refined company, depending on your peer group.

<comment><USER15> I'm not sure what you are trying to communicate with the capitalization there, but what it _suggests_ to me is more stress/accent than tones; those aren't the same thing.

</comment></comment></comment><comment><USER16> I don't think the loss of a language without a literature is much of a loss, really.

Also Navajo, though grammatically odd to speakers of Indo-European languages, contrary to the article does not seem to only have irregular verbs.

<comment><USER17> I think that quite contrary - when language without literature is lost then everything about this language - traditions, knowledge, history, is lost forever (unless anthropologists manage to save some bits of it).

<comment><USER18> Not nessasarily, the people could continue to pass down the traditions/knowledge/history using another language. If a language with literature is lost, then you loose just as much of those things, as well as the literature (because no one can understand it). Of course, having literature increases the chances of having a rossetta stone.

</comment></comment></comment><comment><USER19> I have a different opinion. I think people will stick to their languages, and some will die naturally.

However, one _new_ language will emerge. It will be a set of 500 to 1000 words that anyone can learn and use to communicate world wide.

Similarly to a programming language, this one will be limited in words and easy to pick up. This language will act as a framework, giving the essential people would need to have basic communication. 500 to 1000 words.

<comment><USER3> Your hundred year prediction is already more than a hundred years out of date. Welcome to 1880's Bialystok in not-yet-Poland, and the birth of Esperanto.

Here we are in 2015 and the one hundredth annual Esperanto Congress is coming.

The reasons approximately nobody speaks Esperanto now, are the same reasons nobody will speak your universal language in 2115.

<comment><USER20> I see things differently. I see Esperanto as a remarkable success story. It has survived wars and revolutions and economic crises and continues to attract people to learn and speak it. Esperanto works. I've used it in about seventeen countries over recent years. I recommend it to anyone, as a way of making friendly local contacts in other countries.

<comment><USER3> I think it's odd for people to argue that "it failed" when it's the only language to have started from scratch and taken off at all; there's no precedent to compare it with - how long "should" a language take to go from non-existent to popular?

</comment></comment></comment></comment><comment><USER21> The article is not getting a good reception at /r/linguistics: [https://np.reddit.com/r/linguistics/comments/2r4853/what_the...](https://np.reddit.com/r/linguistics/comments/2r4853/what_the_world_will_speak_in_2115/).

</comment><comment><USER22> I sure hope not Arabic :-/ As a minority we will be fucked.

</comment><comment><USER23> No mention of cross-language icons, signs and emoji?

</comment><comment><USER24> We will all speak Schwiitzerdüütsch or at least be able to spell like we speak it.</comment>


The Metaphysical Astronauts - <AUTHOR> http://motherboard.vice.com/read/the-metaphysical-astronauts <comment><USER2> One does not need to be an astronaut and go to space to confront the typical metaphysical questions such as what is consciousness or where life come from.

But yeah, being in space helps to click it.</comment>


Ask HN: Why do this: "Please mention the word 'crane' in your application"? - <AUTHOR> I saw a job ad for a startup role which among the list of requirements specifies: "Please mention the word 'crane' in your application". Have you seen this before? Any idea why it's done? What do you think of this practice? <comment><USER2> It's testing to see if you read the instructions, or to filter out people who cut'n'paste hundreds of applications, or _possibly_ to block bots but I don't really know why someone would write a bot to apply for jobs.

</comment><comment><USER3> Maybe something like this?

[https://www.snopes.com/fact-check/brown-out/](https://www.snopes.com/fact- check/brown-out/)

</comment><comment><USER4> To check if the candidate read through the profile/anti-bot.

I would not use it.</comment>


Staged meta-programming in Scala, a new frontend for scala-lms - <AUTHOR> https://rubenfiszel.github.io/posts/lms/2017-01-05-LMS-semester-project <comment><USER2> This new API, can be used from Java 8?</comment>


Legal Lesson Learned: Copywriter Pays $4,000 for $10 Photo - <AUTHOR> http://blog.webcopyplus.com/2011/02/14/legal-lesson-learned-copywriter-pays-4000-for-10-photo/ <comment><USER2> > _Our web copywriters were under the impression that images on the Web > without any copyright notices were "public domain" and therefore free to > use. Naive? Yes. [...]_

I find it almost impossible to believe that copywriters dealing in the creation of copyright works weren't aware of the very basics of the copyright mechanism.

If they believed the above then they'd have to believe too that they couldn't charge anyone to use any content that they wrote that had appeared online? This sounds like an attempt to cover up mindful dishonesty.

> _While we maintained an active stock photo account for our blog with access > to an array of suitable photos, one of our copywriters grabbed a photo from > the Web._

Bam. There you have it, why would they pay for stock photos when they could simply download those same stock images for free by doing an image search (if the photos had been used elsewhere already). Indeed they could probably have found the identical stock photos in the wild with a little legwork.

Does anyone find this convincing?

<comment><USER3> I work with a large number of professional creatives, including copywriters. They're all pretty well aware of copyright laws. This story might make sense if his "copywriter" was his 16 year old cousin. Also, I'm going to say that placing pictures isn't really the job of a copywriter.

</comment></comment><comment><USER4> Interesting story. After reading the story I still don't know the explanation of the damages that make up the number $4000. I'm just a developer but what kind of damages arising from their past infringing use of the image' are they talking about?

Bluntly: Is the $4000 number just high enough for the order to be taken seriously and low enough to convince an organization to pay up?</comment>


Top ten algorithms preprints of 2012 - <AUTHOR> http://11011110.livejournal.com/260838.html

<comment><USER2> Cached: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://11011110.livejournal.com/260838.html)

</comment><comment><USER3> Really interesting algorithm for the bandit problem. Looking forward to spending more time with this one.

</comment><comment><USER4> Great list. Paper "Strongly universal string hashing is fast" is very interesting.

</comment><comment><USER5> The link is not working for me :(

<comment><USER6> Do you have the HTTPS Everywhere extension? It's buggy with Livejournal.</comment></comment>


A/B Testing to Increase User Engagement - <AUTHOR> http://blog.mixpanel.com/ab-testing-to-increase-user-engagement

<comment><USER2> The post has good questions for people to ask, but not specific advice about how to analyze results and decide when you have a conclusion. So I added a link to my tutorial in the comments section. ;-)

</comment><comment><USER3> You guys suggest using Mixpanel to measure user engagement via split tests, but Mixpanel doesn't have a good way to split test!

I've resorted to hacking something together using properties. I use the property name to represent a segment/test name and the values to represent the splits. This leads to having a ton of properties, which the UI isn't designed for.

ex:

      {"event":"signup","properties":{"techcrunchreaders/signupbutton":"blue"}}
      {"event":"signup","properties":{"techcrunchreaders/signupbutton":"red"}}

<comment><AUTHOR> An A/B testing tool is on the roadmap, but we just haven't had time yet.

The best way to do tests right now is by utilizing funnel properties. You can test the whole length of your signup funnel and just add a 'button-color' property.

This lets you see the difference in conversion rates between your two treatments pretty easily.

<comment><USER3> I would also like to do this for one off events. The important thing for us is the ability to view the event metric across property values (intersecting segments):

{"google/organic":"widgets"}

vs

{"google/organic":"sprockets"}

</comment></comment></comment><comment><USER4> How do you stub out a community?

If the community is engaging, people will be more likely to comment (like HN), but if you are a site, you really don't have two separate communities to swap in/out in the user's mind. Additionally, even if you did optimize your site design/functionality to increase comments, is that really desirable without an engaging community in the first place? Would everything end up being nothing that adds to the conversation? (see Youtube)</comment>


Nest engineer says company on deathwatch - <AUTHOR> https://np.reddit.com/r/Nest/comments/4dbbgh/is_anyone_concerned_about_the_future_of_nest/d1pjcku <comment><USER2> If this happens to Nest or any other company like them, we will discover that anything dependent on the cloud is destined someday -- probably sooner than we expect -- to become a brick.

The sooner we learn this lesson the better.

IMHO cloud dependency is a trait of "IoT 1.0," and will ultimately fail. "IoT 2.0" will be directly accessible and controllable with open APIs and that's when IoT will really succeed in a big way.

<comment><USER3> Google is a big CO. If they literally bricked their thermostats, wouldn't they be liable? I get a SAAS app can shut down without notice, but breaking hardware?</comment></comment>


A brief history of books that do not exist - <AUTHOR> http://lithub.com/a-brief-history-of-books-that-do-not-exist/ <comment><USER2> Sort of related, Jorge Luis Borges wrote reviews of non-existent works by non- existent writers:

[https://en.wikipedia.org/wiki/Jorge_Luis_Borges#Hoaxes_and_f...](https://en.wikipedia.org/wiki/Jorge_Luis_Borges#Hoaxes_and_forgeries)

</comment><comment><USER3> I remember many years ago attempting to find at my local library a copy of S. Morgenstern's classic "The Princess Bride", but being frustrated at only being able to find the abridged version by William Goldman.

</comment><comment><USER4> Next thing to books that do not exist are nanobooks the length of a twitter post:

> The android led him to the cliff. At 8:43pm, it removed his blindfold. The > indigo sky filled his vision. "Make my eyes that color," it said.

[https://twitter.com/QuietPineTrees/status/579719337210044417](https://twitter.com/QuietPineTrees/status/579719337210044417)

> He unzipped the man's chest, revealing the leaden typebars and silver > antennas inside. "See? Every journalist is an engine of revolution."

[https://twitter.com/QuietPineTrees/status/684740664425340928](https://twitter.com/QuietPineTrees/status/684740664425340928)

They speak of larger stories, but that's all there is. @QuietPineTrees says they are inspired by @ThePatanoiac, @BrassApothecary and @TheCityofNames.

</comment><comment><USER5> I remember - when I first got online access - trying to find the books mentioned in Lovecraft stories in the catalogues of various university libraries.

If you want a book that is filled to the brim with footnotes with references to fictional books you should consider reading "Jonathan Strange & Mr Norrell".

</comment><comment><USER6> Members of the band Tool convinced many people to go hunting for Ronald P. Vincent's "Joyful Guide To Lachrymology," on the study of therapeutic crying, by making the inspirational book a part of their origin story.

Fans now keep the hoax alive:

[https://www.goodreads.com/book/show/4452619-the-joyful- guide...](https://www.goodreads.com/book/show/4452619-the-joyful-guide-to- lachrymology)

</comment><comment><USER7> I noticed yesterday in S.E. Morison's _The European Discovery of America: The Northern Voyages_ , a mention of a book of exploration (mostly toward the far north, apparently), _Inventio Furtunata_ (or _Fortunae_ ), mentioned in a letter to Columbus from an English merchant. At the time Morison wrote, nobody had been able to find the book or a clear account of it.</comment>


Atheism, a Computer Model - <AUTHOR> http://nautil.us/issue/45/power/atheism-the-computer-model <comment><USER2> This sort of thing annoys the crap out of me.

Religion is a complex subject. So is atheism. Complex _enough_ , that the idea of being able to model either of them for research purposes (as opposed to game purposes, like in Civ IV), just seems incredibly silly.

Incorporate all of the following into your model, and it will still be insufficient: kin altruism, war, banditry, social trust, epistemology, famine, genetic defects, mate selection and sexual strategies, the hedonic treadmill ---and then, for _each doctrine_ , incorporate signaling, countersignaling, hypocrisy.

Does it sound like I'm holding the model to impossible standards? Hey, I'm not the one who titled the article, "Atheism, a computer model."

Or you can just do boring projections from current trends, but who clicks on that?

<comment><USER3> The towers of belief may be assaulted through formal systems such as Doxastic Logic: <[https://en.wikipedia.org/wiki/Doxastic_logic>](https://en.wikipedia.org/wiki/Doxastic_logic>)

</comment></comment><comment> awinter-py Hmm -- the american religion is the ballot box, public school and TV. Without commenting on their effectiveness, these things legitimize our social order. Compare this to the ceremony identifying a pharaoh with the egyptian pantheon -- that's what legitimized them.

If somebody watches 4 hours of TV a week and thinks without any critical examination that public school works, that person isn't an atheist.

What these researchers are modeling in 1700 isn't the emergence of modern ideas, it's the liberation of european academia from control of the church as printing proliferates. Anti-authority isn't a 'modern' idea, it's just an idea that is easy to suppress when the forces of authority control the media.

</comment><comment><USER4> The problem with this line of argumentation is atheism does not explain or give reasons for the most basic questions we have as human beings. Who am I? Why am I here? Where am I going?

Also, in the realm of morality, everything atheism purports to be true is completely optional. We can all agree that murder is wrong, but what's to stop an independent person from asking the logical question "who says?". Objectively, why is murder wrong? Societies are very delicate things, and it does not take much to spin them out of control. When chaos rises, people will trade their freedoms for order, and there will be guns in the street. Just look at the rise and fall of the Roman Empire.

Have a look at the series "How Should We Then Live?" by the late Dr. Francis Schaeffer. His insights into art, music, and architecture being a reflector and record of history is fascinating. [https://www.youtube.com/watch?v=Z0Hr0RLHxnI&list=PLl7doUcMOr...](https://www.youtube.com/watch?v=Z0Hr0RLHxnI&list=PLl7doUcMOrBYczX5XwN83qg8I9iUMeCxV)

So people may very well give up their beliefs, for a time, but then the pendulum will swing back the other way hard, and societies will be grasping at some other explanation to answer those basic questions: who am I? why am I here? where am I going?

This is all very well trodden territory. People chase their tails their entire lives trying to live without God, and end up being right back where they started at the end of their lives, just like Bertrand Russell did.

<comment><USER5> >Also, in the realm of morality, everything atheism purports to be true is completely optional.

Well, no. Atheism does not purport anything to be true at all.

It's a lack of belief in one thing. I don't understand why that's so difficult for religious people to understand. Atheism is not a replacement for religion. There is no atheist rulebook, no set of beliefs, nothing.

Atheists can of course have morals but they don't derive from atheism and are not hindered by it either. They're unrelated.

*Edit, expanding...

Your argument presupposes that the only place morals can be derived from is religion where that the rules exist is the entire argument for why you should follow them. God says so, end of discussion.

There are better ways to derive morals based on day to day reality. There are better reasons not to murder than god says so.

<comment><USER6> > It's a lack of belief in one thing.

This is the biggest misconception I see amongst atheists. They think they are rejecting one idea, so-called "God", when in fact they are rejecting 4.7 billion different ideas, without having even understood what 4.6 billion+ of them are. They reject the God of their parents, and then extrapolate to all the others, deeming them all "one idea".

Atheism is a hold-out of the old "single reality" idea. Ironically both atheists and strict religious fundamentalists share that property: the belief in one true way to understand reality, whether it's God or not-God. Rather than a willingness to allow others to define reality on their own terms.

<comment><USER5> Oh also... This is not true of aethism either

> the belief in one true way to understand reality

Again, there are no tenants of atheism, no rules, no insistence that there's only one way everyone should define reality. We just don't believe in God and that's the entire thing. Some atheists may think that but I don't and it is not atheism.

We're not in a religion, a club, or anything. I don't get to tell another atheist they're doing it wrong because there's no affiliation between us.

<comment><USER7> >I don't get to tell another atheist they're doing it wrong because there's no affiliation between us.

With respect to erikpukinskis' statement, I believe you are trying to, though.

<comment><USER5> not my intent. I might tell another atheist to go read the definition of the word which is very narrow, but i wont tell them that being an atheist means you have to subscribe to any additional beliefs. that's my point.

</comment></comment></comment></comment></comment></comment><comment><USER8> Atheism and religion are not peers. Religious believers should not read things like this article or this thread, because they think its an invitation to debate atheism as if its a peer to religion.</comment>


Grace Hopper Celebration Drops Palantir as a Sponsor - <AUTHOR> https://www.businessinsider.com/grace-hopper-celebration-palantir-sponsor-ice-changeorg-petition-2019-8 <comment><USER2> Unfavorable opinion: The more we boycott overreaching tech and companies like this that work to secure the nation, the more foreign nations will innovate and beat us in the long term on that technology.

<comment><USER3> If it's "overreaching", I'm pretty sure it's not "securing the nation."

Dragnet surveillance just makes me paranoid, and my intuition is that it stifles, rather than accelerates, innovation --- well, except for the cryptography aspect; there is plenty of movement towards resisting the surveillance state(s) on that front.

Your opinion could be summarized as, "it's a dirty job but someone's gotta do it" \--- when in fact, no one _has_ to do it. Doing so just leads to Cold War- style arms races.

One of my favorite quotes from a simpler time: "Gentlemen do not read each others' mail." \-- Henry L. Stimson

<comment><USER4> > when in fact, no one has to do it. Doing so just leads to Cold War-style > arms races.

I largely agree, but when anything provides significant advantages, somebody will do it. You don't have to be the one initiating the arms race but once it's happening, you can't ignore it. I'm don't believe that the stifling side- effects of surveillance (of your own population; obviously, world-wide surveillance provides a large benefit to the US) outweigh the benefits, so it's probably a net loss, but that's close to impossible to quantify.

As for the quote, it may depend on experiences and the personal background how you understand it. To me it reads as "but it's fine to read the peasant's mail", just as two generals would make sure not to harm each other in a battle, but have no issue sending their soldiers to their death.</comment></comment></comment>


Show HN: Cadet, a jRuby wrapper for Neo4j - <AUTHOR> http://github.com/karabijavad/cadet also, checkout https://github.com/karabijavad/congress-graph for an example of its usage.
congress-graph utilizes cadet's ability to do neo4j batch insert mode to insert tons of data re: legislators, committees, etc into a graph database in a matter of minutes.
cadet also has its own DSL which allows for easy creation of nodes via the following statement: Person_by_name("Javad").lives_in_to City_by_name("Chicago")
feel free to ask me any questions.
thanks! <comment><AUTHOR> ...or is it a neo4j wrapper for jruby?

also, checkout [https://github.com/karabijavad/congress- graph](https://github.com/karabijavad/congress-graph) for an example of its usage.

congress-graph utilizes cadet's ability to do neo4j batch insert mode to insert tons of data re: legislators, committees, etc into a graph database in a matter of minutes.

cadet also has its own DSL which allows for easy creation of nodes via the following statement: Person_by_name("Javad").lives_in_to City_by_name("Chicago")

feel free to ask me any questions.

thanks!

</comment><comment><USER2> We're using pacer-neo4j ([https://github.com/pangloss/pacer- neo4j](https://github.com/pangloss/pacer-neo4j)) at Uniiverse with great success embedding neo4j within a jruby 1.7 webapp. I'd definitely suggest checking it out as well!

<comment><AUTHOR> whoa... how have i not seen this? this is cool! glad to see theres more neo4jruby love out there!

checkout: [https://github.com/karabijavad/recommendations_example](https://github.com/karabijavad/recommendations_example)

for an example of using cadet with sinatra</comment></comment>


Tim Berners-Lee: 25 years on, the Web still needs work - <AUTHOR> http://www.cnet.com/news/tim-berners-lee-on-its-25th-anniversary-the-web-still-needs-work-q-a/

<comment><USER2> The Web is in great danger of "dying" partly because of Tim's awful endorsement of DRM baked into HTML5; Walled gardens by Apple, FB; disabling of web standards (webgl) by apple in their browser in order to favor their app store cash cow; NSA sodomy; lack of security; no easy way for laypeople to be truly secure and private....

It is a very sad couple of years and I don't know the solution.

<comment><USER3> Don't forget browser vendors slowly removing features "that should be developer-only", the lack of any real choice in browsers (there's only 3 or 4 major browsers, which is not that much better than a monopoly, and they're all heading in a similar direction), and the growing mass of (needless?) complexity that they're becoming.

The Web started out being simple, so the barriers to entry were low and people easily got into writing pages to share information with others. Now anyone who wants to build a website gets bombarded with dozens (if not hundreds) of frameworks, libraries, application platform, etc. and it makes them feel like they have to somehow learn and use all of this new stuff, because they're given the impression (mostly from big commercial sites) that they have to do so or their site will "look outdated". I think we should encourage more "just writing webpages", with an emphasis on (mostly static) content, and less on the "app-ification" currently going on.

As much as this is probably not a popular opinion here, I think the days of Geocities and the like, with almost everyone wanting to --- and easily accomplishing --- the task of writing webpages, was when the Web was much closer to its goals. Admittedly, these "amateurs" didn't have the best design for their sites, and browsers were less featureful than they are today, but somehow the "roughness" and "wild" nature of those days felt like far more of a user-empowering Web than it is today.

<comment><USER4> I think that now the barrier of entry to post information is WAY lower than it was in Geocities era. We have now lots of ways of easy post without having to know HTML (Tumblr, Wordpress, Blogger, Facebook for more personal stuff, etc)

<comment><USER3> Indeed, that is also partly responsible - there's less incentive for the public to learn HTML, and instead they will feel more inclined to rely on these frameworks/applications/services. The barrier of entry to just getting your opinion published has lowered; but the barrier of entry to making your own site and being a _webmaster_ has gone in the opposite direction. I think that is largely how the Web is becoming more closed.

</comment></comment></comment></comment><comment><USER5> > With my fitness tracker, I want it to run all the time, even offline like a > native app. But every day of my workout history will have a URL and I can > link my friends to it.

Slowly, slowly, we'll be reinventing web. I can't wait for 2020, when these brand new apps that structure every kind of data and make it uniformly accessible, in a form that makes it easy for automated programs to reason about both content _and_ structure, are going to be all the rage.

I'm _actually_ excited about it. What makes me bitter is the fact that I have no idea what the fuck we were doing wrong in the early 2000s or so, because we should have been there already.

It's easy to find scapegoats like Facebook, tightly clutching private data in poorly-designed, ever-changing access schemes that polarize the WWW, but I'm not entirely convinced they're the only ones to blame.

<comment><USER6> _> I have no idea what the fuck we were doing wrong in the early 2000s or so_

I don't think "we" were dong anything wrong. A lot of stuff now being used to accelerate web development simply wasn't mature enough, back then. Also, there are critical-mass effects that simply couldn't be done in early 2000s.

Still, a lot of people were already working on these problems on a conceptual level.

<comment><USER5> > A lot of stuff now being used to accelerate web development simply wasn't > mature enough, back then.

I think web development is speedy, and it also was fairly speedy in the 2000s, too. _The web_ , on the other hand, not so much, and much of it is bloated and hampered by abstraction layers to an indecent degree. JS doesn't help, either.

Something took a wrong turn at a point and the immature, but potentially capable technologies we had degenerated into today's clusterfuck.

</comment></comment></comment><comment><USER7> Am I the only one who isn't totally grasping this 25 years of the Web thing? The Web was "turned on" in 1991, am I right? Ok, Berners-lee had already been working on it since he had the idea in 1989, but this is like celebrating your birthday 9 months in advance because, you know, that day, your mom and dad...

</comment><comment><USER8> What killed the web are js-app sites that don't work in mobile, along with the 1MB webpages that contain everything and the kitchen sink right on the page that also don't work in mobile (can't resize, font too small, javascript popups, flash popups, etc) What is needed is a return to the basic: plain html sites that don't assume unlimited bandwidth, that let the browser render the content, that don't need images, tables, etc. Most people have limited data plans and would like to keep most of it for music/video, not monstruously large web pages.

<comment><USER9> You forgot to mention CSS. That's a major reason why even non-JS sites render poorly on mobile.

<comment><USER8> Yes, you're right. I was going to mention it, but I thought it would be understood.

Sadly, because sites are so bad on mobile, mobile browsers don't do pinch-to- zoom anymore, and that messes my html-only (no css, no js, valid html5) pages utility.

</comment></comment></comment><comment><USER10> At some point people need to stop treating the web as something distinctly separate from the rest of human life. If a huge majority of business interaction is conducted on-line it is not e-business but just business. If you are socialising with friends on-line it is not social networking or IM, it is just socialising. Basic protections existed in law before the web and they should still exist now. That means that piracy is unlawful, but so is spying without a warrant. The web is just a set of protocols and does not have unique set of protections or privileges for anyone. Problems should be addressed by modifying the protocols in an open way.

</comment><comment><USER11> The comments here describe doom and gloom of the web dying.

I doubt the web is going anywhere. The future is going to hyperlink driven link data services that can power both native and web clients.

I have started to architect such a solution for my employer and let me tell you, it is the freaking future!

</comment><comment><USER12> Timbl's words are meaningless when he speaks on the web as he's himself bending over backwards to appease corporate interests, control, restrictions and rubberstamped DRM.

<comment><USER13> Guess where the money for development of all the major browsers come from?

<comment><USER14> Google Ads.

</comment></comment></comment><comment><USER15> updated URL: [http://news.cnet.com/8301-1023_3-57620198-93/tim-berners- lee...](http://news.cnet.com/8301-1023_3-57620198-93/tim-berners-lee-25-years- on-the-web-still-needs-work-q-a/)

</comment><comment><USER16> Summary of the article: [http://sumbees.com/s/ByAJ3D1ZANTeG2PgwxO7](http://sumbees.com/s/ByAJ3D1ZANTeG2PgwxO7)</comment>


Ask HN: What do you think of the BitCoin clones(Coinye, Dogecoin, etc)?  - <AUTHOR>

<comment><USER2> I wouldn't call them Bitcoin clones, because all three are cryptocurrencies rather than just alternative bitcoin. I think there is large potential, because with the current state of banks and finances, something decentralized and open can only be achieved with a system like cryptocurrency, where (at least) in popular ones, measures are taken to make inflation impossible. I'm no expert though, so correct me if I'm wrong about this.</comment>


Household radar can sense a person's breathing and heart rate, even emotions - <AUTHOR> https://spectrum.ieee.org/telecom/wireless/household-radar-can-see-through-walls-and-knows-how-youre-feeling <comment><USER2> As a new parent who did all kinds of research on SIDs and wearables this is awesome. I'd love to have a product like this to put in baby's room to detect breathing. It could also make an amazing device for analyzing sleep quality for adults as well.

Sadly, this is likely just going to be applied to advertising.

<comment> VvR-Ox Yes very sad - this would be a great idea if we wouldn't have to live in a f __*ed up world like this.

Surveillance and Advertising are the #1 sectors to use this for.

<comment><USER3> Realtime monitoring of breathing and heart rate during A/B tests sounds like an adtech engineer's wet dream.

<comment><USER4> [https://atap.google.com/soli/](https://atap.google.com/soli/)

</comment></comment></comment></comment><comment><USER5> I think we're going to have to learn to live with some kind of either:

A. Radical transparency, where everyone has access to everything about everyone else and privacy exists as "rice paper" privacy[1]; or

B. Techno-totalitarianism with people divided into "Morlocks" and "Eloi", technocrats and techno-serfs.

As technology progresses the amount of available data grows geometrically, and I don't think there's any realistic way to put that genie back in the bottle (without postulating some sort of massive civil/ecological collapse), so I don't think the argument about "privacy" makes sense. The FANG companies et. al. are already in a god-like position in re: the _hoi polloi_.

I think we should assume "total information awareness" and then try to build a worthwhile civilization on that basis.

(FWIW, I hope for A but it seems like B is pretty much inevitable at this point. YMMV)

[1] In Japan walls were made of literal rice paper stretched on frames, and as an obvious corollary people generally knew their neighbors' business. "Rice paper privacy" refers to social conventions to, er, "pretend" that there was actual privacy.

<comment><USER6> > [1] In Japan walls were made of literal rice paper stretched on frames, and > as an obvious corollary people generally knew their neighbors' business. > "Rice paper privacy" refers to social conventions to, er, "pretend" that > there was actual privacy.

Where can I read more about this?

<comment><USER5> Dunno, sorry, I heard about it from a Japanese person.

</comment></comment></comment><comment><USER7> I did a lot of research into the state of Ultra Wideband (UWB) during the early 00s. It utilized time of flight and a wide band of frequencies to do similar things. There were 2-3 major, well funded companies pursuing the tech at the time.

Interestingly those companies never made it commercially, I suppose because the cost of computation was prohibitive and they required special antenna.

It is very exciting that the technology can now be done in a cost effective manner.

Most interesting though is how easily and effective ML was in adding functionality to this implementation. Very cool.

<comment><USER8> No sure how these guys ([https://www.xethru.com/](https://www.xethru.com/)) are doing financially, but they sell development kits for respiration sensors etc.

<comment><USER9> Been following these guys for a while. Fascinating product.

To me though the most obvious but sadly simple use for this is sensor lights in damn toilets. Sit on the toilet for more than a few minutes in some places and the damn lights go out!

</comment></comment></comment><comment><USER10> Figure there's malicious wi-fi capable of doing the same, since it's possible to read lips and detect keystrokes via passive snooping of wi-fi reflections.

</comment><comment><USER11> Thie is nice,but laws that clearly define proper use of such tech are missing.</comment>


Ask HN: What's the best way to learn a new human language? - <AUTHOR> My company has fantastic support for remote working so I'm going to spend two months coding from Buenos Aires, Argentina starting in February. Given the five or so months I've got, what's the best way for met get as fluent as possible in Spanish?
Things I'm considering:
* babel.com * the memory palace approach * taking a language school class * video conference-based tutoring lessons * the approach advocated by Timothy Ferris
Note: I'm an English speaking American. I studied Japanese for 10 years, lived there for one, and speak/read Japanese at a decent level. <comment><USER2> > What's the best way to learn a new human language?

The best way is to be four years old, live in an environment that requires the target language, and have a lot of spare time.

The second best way is to live with a native speaker and have a need to communicate.

The third best way is to take a class with a native speaker.

The fourth and lesser choices are too painful and inefficient to consider.

</comment><comment><USER3> Hi Flippy :) I am from Buenos Aires, Argentina.

In BA, we have some meetings where people who want to learn English meet with people who want to learn Spanish. They are at bars and you speak X hours in Spanish and then X hours in English. You learn and teach at the same time :) A few of my friends went and said they are really useful, and you meet a lot of people. I am not sure who organize them but I could find out for you if you want to.

I think that's the best possible way to learn it. Interacting with other people. If you to a class, you will understand Spanish, written and possibly spoken, but I am not sure if that will make you fluent.

Edit: I misread, I thought you wanted to learn Spanish in here. Online, I would say to try Duolingo and reddit.com/r/argentina :)

<comment><AUTHOR> That sounds fantastic! My hope is that I can establish a solid base before I come to Argentina, so once there I can make count as much as possible the time I do spend with locals. I very much hope I can develop a credible plan to reach fluency between now and when I leave Argentina after being there two months. Thanks! I'd love to connect, please find me on github: [https://github.com/flippyhead](https://github.com/flippyhead)

</comment></comment><comment><USER4> Ouch, Argentina...

An argentinian here, currently living in Spain and polyglot of 5 languages. Well, first, it will be complicated because argentinians speaks with a lot of slang, but in front of you they will not.

The best way is by try/error. I started to speak italian in 15 days doing this, knowing that my mother language is a romance one, like Spanish, learning a new one was piece of cake, but coming from an american, things can be a little different, specially when pronouncing the vocals and some other letters but with the time and able to hear, I beat you can even speak some of the slang.

I've meet many americans in Buenos Aires and so far I've remember, most of them learnt a good spanish base with slang. Funny, but they loved.

If you go to Spain, you will find the spanish language isn't so singed as the argentinian, also the spaniards doesn't have so much slang so the language is plain boring.

</comment><comment><USER5> See my lengthy (and evidently well liked) recent comment from another tread with detailed recommendations.

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

</comment><comment><USER4> I speak many languages. It's easy for me because my native spanish helped me to reach the romance languages (derivated from latin). English was quite easy to reach a good level (nothing expert like).

Once you learn 1 romance language, jumping to the next one will be really easy. I always start with the same stuff as usual on books. The key is to find people to talk and talk like a crazy is the way to train your brain to think on a new language. No book will teach you how to say good morning properly. It differs so much from reality.

</comment><comment><USER6> A tool I love to learn new languages (as a guy living out of his hoe country), is Anki. [https://ankiweb.net/](https://ankiweb.net/) Flash cards are really helping to get new words stick in your brains. What I usually do then is to read a book I already read in my native language; and force myself to catch up the grammar .

The brain does a wonderful job searching for patterns and similitude. Ha, and watch tv and listen to radio. Period.

</comment><comment><USER7> You might want to check out Tim Ferris's How to learn any language in 3 months: [http://www.fourhourworkweek.com/blog/2009/01/20/learning- lan...](http://www.fourhourworkweek.com/blog/2009/01/20/learning-language/). It's been on my plate for sometime but I haven't personally tried it yet and so don't endorse his method.

<comment><USER8> Tim Ferris can be entertaining, but this is just total blog spam. It lures you in with "you can do it in three months!".

It apeases people like yourself, who adds it to their list, another hack, more tricks in my bag. When you start learning you'll realise it's just three bullets.

</comment></comment><comment><USER9> I have been using the Pimsleur Method which is all audio during my drive from/to work, combined with watching spanish movies with subtitles on Netflix. My Spanish is now where I can keep up a basic conversation with my native South American friends. I have been doing this for about a year now.

<comment><AUTHOR> Like the mermaid from Splash! I always assumed learning by watching tv/movies was useless but maybe I'll give it a shot.</comment></comment>