Ask HN: Which companies are considered to have the best engineers in 2017? - <AUTHOR> <comment><USER2> I hear terms like "developers", "coders", "resources" and all these kind of stuff when companies talk about us. So I don't think any company has brillant "engineers" per se. They maybe have excellent algorithm solvers on a whiteboard. Google, Facebook, etc.

</comment><comment><USER3> To be contrarian, I'll point toward financial engineering (not retail or I-banking and such) such as Renaissance. It takes some pretty crazy and smart people to dig into FPGAs and HDLs trying to write what would normally be CPU based algorithms while focusing upon latency and availability as well when so many dollars are in motion. The industry's secrecy habits make it hard to get a fair assessment, but I've never heard of anyone incompetent at such a place while I've heard gobs of stories of incompetent people at large tech companies.

<comment><USER4> Plus they much much better compensated compare to the typical Silicon Valley company

</comment></comment><comment><USER5> My vote is Epic Games. If you look at UE4 changelogs, the amount of productivity is staggering.

Core engine programming is no joke either, let alone on a commercial engine used by half the industry.

</comment><comment><USER6> There are no "best engineers". There can be, however, a "best engineer" for the specific stage the company is at. The typical higher echelon engineer that you'll find at the Big 4 will not necessary thrive at a early-stage startup.

</comment><comment><USER7> My person & abritrary list of companies I consider to be 'above' the Big 4:

Stripe

Two Sigma

SpaceX

Maybe AirBnb & Netflix?

</comment><comment><USER8> Google is certainly one company that's traditionally had that reputation.

</comment><comment><USER9> Joel Spolsky always seemed to have an aptitude for attracting great people to Fog Creek Software. See joelonsoftware.com for a treasure trove of knowledge if you somehow have never heard of him.

</comment><comment><USER10> I think a better question would be which company has the best environment for engineering? I see a lot of smart people with a lot of potential working on crap projects.

</comment><comment><USER11> I imagine this depends on how you define "best". The most impressive/challenging work right now is probably in AR or self driving cars. If "best" is based on code quality or productivity, well, that's kind of subjective.

<comment><USER12> The most glamorous right now might be AR and self-driving, but most _challenging_ I think undersells the difficultly of problems distributed across virtually all of software engineering.

</comment></comment><comment><USER13> In my opinion, Google and Apple.

</comment><comment><USER9> FYI. Big Four = Google, Facebook, Amazon and Microsoft

I'd guess Stripe, Palantir and AirBnB would be up there too.

<comment><USER14> People are downvoting you for including Palantir, which has a reputation of over-inflating the quality of its engineers, and consistently choosing big name schools over experience.

I don't know if it's true, when I interviewed with them they seemed very interested even though I only took 3/4 years of a cs degree, and graduated with a different degree from RPI. I'm just explaining their reputation.

</comment></comment><comment><USER15> blizzard valve bethesda are probably really high up there the smartest guy i knew at university went to work at blizzard he just made everyone around him look bad

<comment><USER16> > he just made everyone around him look bad

An example of why this is so subjective. For me, the "best" engineers make everyone around them look better. Like the star athlete that elevates the level of play of their teammates.

One of my best friends in university was top-ranked in our class for every year (although they discontinued the rankings shortly after my class finished). Just a brilliant mind but without any of the social awkwardness you might expect to accompany that. He would literally hold unofficial study tutorials where he taught other students the course material. And it's not like he did this because he thought he was awesome - the other students begged him to because he could explain concepts better than some of our own profs.

</comment></comment><comment><USER17> The best engineers are probably working in academia doing research.

<comment><USER18> I doubt even the academics would agree with that one.</comment></comment>


APItools Middleware Contest - <AUTHOR> https://docs.apitools.com/contest/

<comment><USER2> Your concept sounds cool and useful but I have a couple of suggestions:

1) This is an important link yet seems broken [https://docs.apitools.com/Contest/need- inspiration](https://docs.apitools.com/Contest/need-inspiration)

2) The 3 examples you provide link to GitHub repos with no readme files at all so we have to dig or guess.

<comment><USER3> 1) Sorry about that. The correct url is [https://docs.apitools.com/contest/need- inspiration](https://docs.apitools.com/contest/need-inspiration) (will fix!). 2) You're right... we should add readme files def. Any questions that you have feel free to ask them in our irc channel #apitools in Freenode [https://kiwiirc.com/client/irc.freenode.org/apitools](https://kiwiirc.com/client/irc.freenode.org/apitools)</comment></comment>


Indie movement pioneers GarageGames/Torque shuttered by parent IAC - <AUTHOR> http://www.torquepowered.com/community/blogs/view/20495

<comment><USER2> So sad, these guys did a lot of great work. Too bad it never had a bigger payoff for them.</comment>


Tell HN: Twilio is Hiring a Developer Evangelist - <AUTHOR> http://twitter.com/DanielleMorrill/statuses/9304726194

<comment><USER2> Can I just say: you guys are doing a great job already!

I mean, I'm can't help considering creating a startup just to use your API.</comment>


Ask HN: How many people on HN use tumblr? - <AUTHOR>

Paul Graham said something about making things that hackers could use first is a good way to start <comment><USER2> I read it but I don't write there. If anything tumblr is the opposite approach - hackers would have gone to geocities, or wordpress, or at the least livejournal, all of which offered more power and control over your site. Tumblr took blogging at cut it down to its minimalist essence. Everything you can do there - and a lot more besides - you can do on any other blog host. But tumblr is very user-friendly and distraction-free; posting becomes as simple as writing. It's a great example of a product that does exactly as much as it needs to and no more, that solves one case perfectly rather than 80% of five different cases.

</comment><comment><USER3> I use it a lot, but to read other people's blogs and discover interesting content.

PS: I blog at <http://webstreams.tumblr.com>

</comment><comment><USER4> I read it a lot, but I contribute zero. There is a lot of fun content like silly GIFs, but also amazing and creative music mashups, etc. I like Tumblr.</comment>


Startup Quote: Jason Calacanis, Founder, Mahalo - <AUTHOR> http://startupquote.com/post/11571753438

<comment><AUTHOR> Fortunes are built during the down market and collected in the up market.

\- Jason Calacanis (@Jason)

<http://startupquote.com/post/11571753438></comment>


The Epidemiology of Misinformation - <AUTHOR> https://www.prospectmagazine.co.uk/science-and-technology/epidemiology-misinformation-coronavirus-covid19-conspiracy-theory <comment><USER2> This. So important. The best I remember seeing was a Nordic country that trained its citizens to be able to identify fake news. Anyone know of any education programs like this, might have a few facebook friends I'd like to send it on to :P

<comment><USER3> You may be referring to the initiative in Finland. Here's an article about it: [https://www.weforum.org/agenda/2019/05/how-finland-is- fighti...](https://www.weforum.org/agenda/2019/05/how-finland-is-fighting- fake-news-in-the-classroom/)

</comment></comment><comment><USER4> misinformation, n.: information you disagree with and don't think should exist.

<comment><USER5> You think the misinformation described in the article is both factually true and not misleading?

<comment><AUTHOR> Yes.

<comment><USER5> Can you be more specific? This is a pretty curt reply.

<comment><AUTHOR> I am sure he thinks the misinformation described in the article is both factually true and not misleading.

</comment></comment></comment></comment></comment><comment><USER6> What's the solution to misinformation across social media networks, like Twitter and Instagram?

<comment><USER7> Kurt Vonnegut</comment></comment>


Why Android 4.2′s Multiple User Account Switching Is Tablet-Only (Hint: Patents) - <AUTHOR> http://techcrunch.com/2012/10/29/why-android-jelly-bean-4-2s-multiple-user-account-switching-is-tablet-only-hint-nokia-patented-it-for-phones/

<comment><USER2> This article is entire speculation (Hint: it's gaseous).

It could be patents, but it doesn't prove that it is by any measure.

I would like to see multiple users on phones, because I would love to put my phone in guest mode whenever someone wants to borrow it, or whenever the lockscreen is unlocked without a pin.

If it really IS about patents it sounds like a great case to demonstrate the silliness of patents.

Smartphones ARE computers, they have computers within them, they run computer operating systems, ...

Computers have had multiple logins for decades. Tablets are allowed to have multiple logins.

Why on earth should multiple logins on smartphones be considered patentable?

<comment> shawn-butler > Why on earth should multiple logins on smartphones be considered patentable?

The actual patent linked [0] makes several claims and it simply isn't just "multiple logins" whatever that means as you don't login to any phone from any vendor of which I am aware in the Symbian era (circa 2004). The SIM card represents your "login" to the phone network and this patent describes all the innovations that would be required to turn a single SIM card into a usable "public" or quasi-public resource (usage reports, access controls to apps and data, etc etc). Consider all of the services and technology that would be required to make this scenario possible, and more importantly usable (voicemail for each user, some way to indicate incoming calls for specific users, etc).

Computer operating systems support multiple user log-ins for time sharing of CPU resources and for data security. The concept here is not to have a multi user operating system in that sense. The idea is that the phone features can be shared, not the "computer" features.

So just simply having multiple logins to a linux kernel running on a phone with some UI trickery or a "jail" to enable a "guest" mode would not violate the claims of this patent as I understand them.

You may or may not be philosophically opposed to software patents but this probably is not the poster-child case for abuse you want to use in any reasonable discussion. Are there any of the claims made in particular you find objectionable?

I read the patent claims as enabling an extremely novel/innovative use case of a smartphone. Would you also find objectionable the patent application made by Zipcar [1] for the technique/technologies required to turn a privately held automobile into a shared public or quasi-public resource? Kind of what appeared in my mind's eye as I first read the Nokia patent.

[0] <http://bitly.com/Q3okiK> [1] <http://bitly.com/TkSR6d>

</comment></comment><comment><USER3> I'm all for bashing patents, but this seems to ignore the obvious: sharing fits the way people use tablets a whole lot more than phones.

<comment><USER4> Does it really? I would think "guest mode" on phones would be _huge_.

<comment><USER5> Just out of curiosity, how often do you let someone else use your phone? Not check out your phone but actually use it to the point they'd require a guest mode? Guest mode on a phone is like flying lunches in via Concorde from Paris.

<comment><USER6> My 6 years old daughter often wants to play games on my phone. Some mode which restricts her access (I don't want her looking at Youtube etc. for instance) so I can leave her unattended with it would be very useful.

<comment><USER7> Turn on airplane mode.

It disables the networking, leaving the rest of the phone working.

<comment><USER4> "Solutions" like that are the reason Android has such a persistently mediocre reputation.

</comment></comment></comment></comment></comment></comment><comment><USER8> 90% of all mobile patents seem to take the form:

Computer function X, now on a phone (which is a computer)!

</comment><comment><USER9> I am sure cyanogenmod will port it if it's handy.

Remember you are at least allowed to root your phones, despite not being allowed to root tablets you paid for.

<comment><USER10> I agree that it sucks, but to be clear, you are not allowed to _break DRM_ to root a tablet you paid for. If the manufacturer supports it (e.g. Google), there is no problem.

<comment><USER11> How do you know, if you are a system geek, that you are indeed breaking DRM vs just doing complicated stuff with a firmware?

It seems obvious if there's PKI in there somewhere. But aside that, how do you tell the difference?

<comment><USER12> I also would like to know the answer to this question. After all, the dreaded broadcast flag of ~2005 was expected to be covered by the DMCA's anticircumvention provisions. If a single bit can be a technological protection measure, who's to say what _couldn't_ be argued is an "effective" measure by a skilled lawyer?

</comment></comment></comment></comment><comment><USER13> Just put it on the European Nexus then :)

It may not be the best feature on a phone, but a guest account could be useful.

</comment><comment><USER14> I would think it's that SMS and telephone features don't map well to multiple users. Would you share them across accounts or block them for all but one user? It's just weird.

<comment><USER15> Sometimes you're not calling or SMSing a specific person but rather a place or a community ("Is John with you?", "Is everything alright over there?", etc) Sometimes it's even weirder to have to choose between calling Fred or Julie whenever you want to chat with the _couple_ and don't want or need to show a preference for either of them.

Anyway, we've been there already, and it worked for the most part. We used to have one phone in the kitchen, one in the living room, one in my sister's room and we would all be fighting to not have to be the one to pick it up whenever it rang.

But it worked, and it wasn't exactly "weird" :P

</comment></comment><comment><USER16> Phones are more personal compared with tablets.

How many people actually share their phones with someone else on a regular basis? I share my iPad with my family but we each have a phone.

Thus it makes more sense to have multiple user accounts on tablets (which is shared more often) than phones

<comment><USER15> There is a specific and yet extremely widespread usecase for switching account on a phone: to distinguish between personal and business use. I'm a different person at work with my phone than I am at home or at a pub. I don't want to clutter my gallery at work with thumbnail pictures of last week-end debauchery, though I do want to see the whiteboard pics I took every day after each design meeting. The notifications I want to receive at home are not necessarily from some automated JIRA sender.

Moreover, I've been working on projects that are founded on the assumption that the device is "public" (for instance a phone wired to a bus stop) or at least "shared": the devices that, say, train operatives use, could be tied to the train rather than to the user. I believe we would all greatly benefit from multi-user accounts on the phone.

</comment></comment><comment><USER17> I don't think people share smartphones as they do tablets, so I can't see this being a massive issue. That said, if Google just make it pretty easy to hack it on (some conf file flag somewhere), would they technically still be infringing?

</comment><comment><USER18> Cisco wifi phones support logging in as different users.

</comment><comment><USER19> I don't know patents, this is a TC article and there are few comments, but is there any possibility of truth to this? Would it then be possible to patent "using patent 20050107114 / 953850... but with tablets"? Doesn't that kind of show how inane the situation is?

<comment><USER20> Patent ALL "using a multi-user OS on X device" ideas!

<comment><USER4> Better yet, patent all _"[Thing that has been done on 'computers' for over half a century], but on a PHONE!"_

</comment></comment></comment><comment><USER21> This article is stupid. Who would want UAS on a phone? Everyone has their own. Tablets will replace the home PC in the next 5-6 years, not phones.</comment>


Scientists Crack a 50-Year-Old Mystery About the Measles Vaccine - <AUTHOR> http://www.npr.org/sections/goatsandsoda/2015/05/07/404963436/scientists-crack-a-50-year-old-mystery-about-the-measles-vaccine <comment><USER2> I could have sworn this was "old news", and then it occurred to me to look for a date on the article: 2015. (By the time some people read this comment, maybe a moderator will have tagged the article title, but it is not currently.)

<comment><AUTHOR> Sorry, I came back to edit the title to do that, but I was outside the edit window - the mods will have to do it.

Even so, I think it's still interesting, even though it's two years old. Your memory might be better than mine, but I don't remember seeing it.

Thanks for the comment.

</comment></comment><comment><USER3> So could we use this mechanism to treat auto-immune disorders, or prevent organ rejection?

<comment><USER4> edit: ignore me

<comment><USER3> I'm pretty sure that the mechanism the virus uses to suppress the immune system for several years is different from "don't get measles".

<comment><USER4> I'm sorry, I read your question backwards.

</comment></comment></comment></comment><comment><USER5> More evidence that betting against vaccines is not a good idea...

</comment><comment><USER6> Some more work is in the pipeline. Looking at actual effects in samples from recently infected kids - but takes time because measles infected children are (thankfully) not too common these days. The idea about autoimmune disease is quite interesting and some I hope to explore in the near future. Of note, measles-related viruses are being looked at as potential therapeutics for cancer. There's a growing body of work on that front. - Michael Mina

</comment><comment><USER7> So the measles vaccine (like MMR) is a live virus vaccine. Does this mean that MMR wipes the memory of previous vaccinations? Does giving MMR in a child's second year erase, say, the accellular pertussis immunity attained via DTaP in the first year?

<comment><USER8> It's the other way around. The vaccine is attenuated live virus, it doesn't (normally) have the consequences of a measles infection. The immune system is not suppressed by the vaccine and because the vaccine prevents the disease, the immune system is not suppressed by measles either.

</comment></comment><comment><USER9> As someone who had measles as a kid, this is good to know! It might explain a series of infections I had in the following years, too. I wish I could remember when I had chicken pox relative to measles, since (the article suggests) I may not actually have the immunity to chicken pox if that infection preceded measles.

Btw, I _was_ vaccinated, but back then you only got one dose and the rate of immunity was insufficient to prevent outbreaks. Thus the second dose that's now standard.

</comment><comment><USER10> Could it be used to erase autoimmune diseases?

</comment><comment><USER11> What is that guy in the picture doing with his finger on the needle?

<comment><USER12> In theory he has a sterile swab under his finger tip, placed where the needle is puncturing the skin.

As the needle is withdrawn some pressure will be placed here, to prevent bleeding.</comment></comment>


Developer Freedom At Stake As Oracle Clings To Java API Copyrights - <AUTHOR> http://www.techcrunch.com/2013/03/30/developers-should-care-about-oracles-upcoming-appeal-of-the-google-lawsuit

<comment><USER2> Choosing Java and Dalvic was probably a mistake for Android.

<comment><USER3> If they had to redo it today, what could it be instead?

* Javascript -- I hate the language, it has enough warts to make it unpalatable

* Dart -- I can see it, that would be great, still kind of new though

* Python -- I understand they could have done it, but it was a political decision not to (at least according to Guido's remark during one of the PyCon's), performance might not be up to par on some devices

* Go -- too low level perhaps, but it would be cool

<comment><USER2> Go, C/C++, but in the ideal world- Python (they would have to very seriously tweak the interpreter)- imagine how easy app creation would have become with Python? They would have a huge advantage over iOS by lowering the entry thresholds for developers.

<comment><USER4> Python is neither fast enough or robust enough to use as the foundation for an OS. You _need_ static typing and strong tooling both for performance and for correctness. Those that disagree with this need only point me to a successful counter-example.

<comment><USER5> Google has modified Java for Android. They could have instead modified Python. There have been academic papers that have shown that Python can be made to be statically typed (ignoring one or two keywords, like eval).

Assuming that Google had done these, there should be no reason that Python would not be fast or robust enough.

<comment><USER3> Yeah Guido was basically asked this at a PyCon in the past. He was working for Google and at some point he probably had brought up the question. Someone in the audience asked about it and his comment was that it was "political". In other words technically possible but powers that be decided against it for other reasons. It is also important how he said it, he was very calm before and after, but when answering that question he was visibly upset. You could tell it was a sore topic for him that made him pretty angry.

</comment></comment></comment></comment></comment></comment><comment><USER6> What a bunch of jackasses. Sometimes I think the only difference between Oracle and SCO is scale.

<comment><USER7> > Sometimes I think the only difference between Oracle and SCO is scale.

Whenever you think that you should probably read up on both Oracle and SCO.

SCO was a dying company that tried every dirty trick in the book to blackmail the world into giving it a free ride to newfound riches based on ridiculous claims. SCO was backed behind the scenes by Microsoft simply to attack Linux which Microsoft saw as a threat to its bottom line. As such SCO was really nothing but a proxy for Microsoft in the dirtiest fight that the IT industry has ever seen.

Oracle is a very successful company that _bought_ the assets of another dying company (SUN) in order to safeguard a line of business and in order to buy the IP rights of that dying company, which included Java.

Note that I'm not defending what Oracle is doing here but the differences between SCO and Oracle are enormous, and are certainly not limited to scale.

In many ways the Oracle case is much more dangerous because it now openly attacks a well established principle (interoperability) and Oracle actually has the resources to do real damage. For now that damage is limited to Oracle shooting in its own foot (Damaging the Java brand in a very clear and concrete way) but that could easily change.

Google has a very long standing habit of doing or buying things that are illegal (youtube, books, caching the web, images) and getting away with them because they have deeper pockets than the copyright owners or because they strike a deal when cornered.

SCO's claims aginst linux ('10's of thousands of lines') were absolutely unfounded, Oracle's claims against Dalvik seem to have at the surface at least some merit.

And Oracle is not simply going to give up on what it perceives to be its right simply because the party they believe is infringing is Google.

Still, I'm rooting for Google to win this one and for Oracle to lose this one, the consequences of the fall-out of an Oracle win would be pretty disastrous.

<comment><USER8> _SCO was a dying company that tried every dirty trick in the book to blackmail the world into giving it a free ride to newfound riches based on ridiculous claims._

Actually, ironically, it's not SCO that tried to sue every Linux vendor, but the Linux company formerly known as Caldera Systems (of Caldera OpenLinux). They purchased SCO's UNIX business and renamed themselves to The SCO Group. The real SCO was renamed to Tarantella.

It's sad, not only is the name of 'old SCO' forever associated with attacks that they did not participate in, the Linux ecosystem was actually under attack by a (former) Linux company.

</comment></comment></comment><comment><USER9> There's no way an API should be covered by copyright, for the judge's reasons. If you can get a patent on it, good luck to you; otherwise, it's not proper IP.

Patenting an API would be like patenting a UI -- reasonable under the law. <http://www.dbms2.com/2010/03/23/software-innovation-patent/> Whether the law should be changed -- as I think it should be -- to make such patents unreasonable is a separate issue.

<comment><USER10> I don't see why. There's plenty of creative discretion involved in the writing of an API. I would have expected this to be a fair use issue rather than a copyrightability issue (though IANAL).

<comment><USER11> "Fair use" is, by definition, an issue involved in copyright. But I see your point- if APIs are copyrightable, then uses of that API may be "fair use." But then someone's got to drag all the potential uses through the courts to determine what's fair use and what's not (because apparently fair use can only be determined by the courts...) I would surmise that, in this dystopian fantasy world (and I hope it remains such), 'interoperability' would be the _de facto_ fair use and any other use of an API would legally require a license. What a nightmare.

<comment><USER10> Well, the case isn't about the _use_ of the API - it's about a non- interoperable reimplementation of the API (from Oracle's perspective, at least).

<comment><USER11> "...this case..."

Sure, I'm just addressing your fair use comment with my own input.

"...non-interoperable reimplementation of the API"

I do not understand this phrase. If you implement an API that's exactly the same as the API in a library that I publish, the underlying implementation is irrelevant to your clients because your software is now an interoperable replacement for mine. If you implement some API that's not the same as my API (and thus not an interoperable replacement), you can't have infringed on my theoretical API copyright.

<comment><USER10> Whether or not we limit he discussion to this case, I don't think there's any reason to fear that _using_ an API would be a copyright issue (though again IANAL). The whole purpose of an API is for people to write software against it. I think that people misconstrue what this case is really about and start talking in hyperbolic terms (not that you're doing so, but in the popular press, blogs, etc.).

At the risk of mischaracterizing Oracle's argument, the basic idea is that Google wanted developers to have a familiar API and wanted to reuse some of the tooling built for Java, but there is no way to get a compiled Dalvik program to run on a JVM, and likewise compiled Java software can't be run on Android. So Google piggybacked on the hard work Sun put into designing a coherent (and quite large) API, but didn't really do so in an interoperable way. In some ways the case is reminiscent of the Sun/Microsoft quarrel about Microsoft's extensions to Java (though that also involved trademark issues, as I recall), though many commenters who supported Sun in that case now seem to support Google in this one.

</comment></comment></comment></comment></comment></comment><comment><USER12> Why didn't Google just buy Java, way to drop the ball.

<comment><USER13> Didn't have a big enough stake in it to justify the purchase of Sun. Oracle however, did have a lot riding on Java succeeding and removing the Sun Hardware division as a competitor.

<comment><USER14> The Sun hardware division wasn't competing with Oracle at the time. I think they bought Sun because they thought it made sense to sell software + hardware and because they didn't want IBM to have Java.

If Larry Ellison hadn't underestimated the cloud trend, the takeover probably wouldn't have happened. Oracle has been very successful with its M&A activities, but this one is clearly a complete desaster.

</comment></comment></comment><comment> brown9-2 While Oracle is hard to sympathize with, the actual article never elaborates on it's inflammatory statement as how "developer freedom" is at stake (or what that phrase even means).

<comment><USER11> I can't tell if this is criticism alone, or if you're also asking the question. It seems these articles and discussions assume that the reader is all-knowing when it comes to the IP issues developers could face in their careers. Allow me to attempt to fill in the gaps.

When you write code, in the U.S. you hold a copyright to it at the moment you put the characters onto disk. In the case of work-for-hire (i.e. you are employed as a software author by your company), the company holds that copyright. No one else has permission to use, copy or distribute the software without the express permission of the copyright owner. Licenses are the mechanism used to bestow rights upon other users (or, in the case of Open Source Software, potentially other developers) of the software.

Switch gears a bit: other companies (vendors) providing interesting systems (those that you or your company are interested in using) also provide information on how to interoperate with their systems and libraries. When using the C family of languages, this information is provided in a machine- readable format known as a "header" - the header file is source code that describes the procedures made available inside the vendor's code libraries. You include this header in your own project so the compiler can validate that you're calling the library code correctly. They've given you a binary library and not the source to the library to help in protecting their rights to their original code.

Now, after years of offering a particular product on the market, a vendor (Vendor A) decides to discontinue offering this particular product regardless of the fact there are numerous client who still use this product and are willing to continue to pay for support. They are not willing, for whatever reasons, to completely overhaul their own systems and incur the immense expense in changing to this vendor's completely new and different product.

Company B steps in offering an _interoperable_ replacement to that old system that's been discontinued by Vendor A. Company B created a completely legal replacement for this system because they did not use Vendor A's source code. They created a "clean room" implementation of the system. As far as the client's systems are concerned, the interfaces into Company B's solution look exactly like Vendor A's system, to the clients network, employees and customers carry on with business as usual.

Courts have ruled that creating systems for such interoperability is legal and necessary. Without such recognition, vendors have the opportunity to lock their customers into the vendor's products. Interoperability is defined by interfaces to systems and libraries. The interface into a library is an Application Programming Interface, or API. The API has pretty much been declared to not be of the expressive type required to obtain copyright protection. If API's become completely protectable by copyright (and thus require a license to use), companies can then limit the ability for others to provide interoperable systems thus limiting competition. In this case, the legal freedom of developers to create tools and apps _around_ an existing system is severely limited and perhaps even eliminated, regardless of the fact that these developers didn't use any code from the vendor in the process.

</comment></comment><comment><USER15> If Oracle gets heavy handed with Java ... doesn't that just mean it's time to use something else?

Am I missing something?

<comment><USER16> What Java alternatives do we have other than Mono/C#?

<comment><USER17> All the other programming languages. What makes C# and Java particularly special?

<comment><USER18> Huge communities, vast library ecosystem, widely taught, used a lot in industry

</comment></comment></comment></comment><comment><USER19> Dart as a long-term replacement for Java anyone :)

<comment><USER20> I don't agree.

I'm fine if dart kills javascript. What it's made to do.

I'd also be fine if go/python/befunge kills java.

</comment></comment><comment><USER21> The future of Java went downhill as soon as Oracle bought Sun.

I miss Sun. Dearly. They were perhaps the only major IT company with a true heart.

And now there's none left. Google? Hell no.

</comment><comment><USER22> oh god how could this happen

im so surprised

</comment><comment><USER23> I see Oracle as cancer of the corporate world. An old dinosaur who happened to slog into 2013. The new generation of young and socially responsible will hopefully put an end to their kind.</comment>


Ask HN: What Are You Afraid Of? - <AUTHOR> I'm afraid the economy will collapse and we'll be unable to educate the next generation.<p>What are your fears and how do you live with them? <comment><USER2> The potential US civil war that is unfolding before our eyes.

</comment><comment><USER3> climate change</comment>


Apt-get for Hardware - <AUTHOR> http://hplusmagazine.com/articles/toys-tools/hackerspace-your-garage-downloading-diy-hardware-over-web

<comment><USER2> It's a great idea with a high potential and many issues that need to be overcome first - but most beginnings look that way. Really awesome once molecular assembly is available.

Prediction: People will use it to construct better sex toys. That's the way it really spreads. Like with many other technologies where sex is the real driver. ;)

Bryan, keep up the good work.

</comment><comment><USER3> Hmm, I thought this article was going to be about some way of making vps hardware upgradable via standard package management tools.

So on your Linode you could just:

       apt-get install vps-extra-ip-address
       apt-get install vps-extra-1g-ram

Which would be awesome now that I think about it.

</comment><comment><USER4> _In other words, as with free software, you will likely soon be able to download hardware from the web in the form of free packages of coded instructions to make… well, just about anything — from a Lego block to the jet engine of an F-16._

This is fairly meaningless without a cost-effective way to actually produce the items. Which is 'likely soon' if you take a very optimistic view, for Lego blocks. It's not anytime soon for jet engines.

</comment><comment><USER5> Interesting concept, I've been very interested in more hardware hacking lately. There is someone reassuring about being able to build anything in your local hacker space. Here in NYC we have a group called "NYC Resistor" that has lasers and 3d printers available cheaply. Hacking isn't always just about code ;)</comment>


Keras, Tensorflow neural nets can run faster - <AUTHOR> Hi. Would anybody be interested in running a Keras/Tensorflow net 2-5x faster, with less CPU / GPU budget? I've created a C++ solution for my 200+ layer network, which beats the "standard" python inference by far and thinking about making it available for others. I know there are TensorRT and LibTorch, but I think they are a nightmare to use. I'm fishing for early feedback for this project. Contact: email@example.com <comment><USER2> Hi, I have a couple of suggestions:

\- add "Show HN" to the title of your post

\- make sure that you're actually sharing something instead of just advertising

I'm interested in faster deep learning. There is no way that I would message you, ask to see your code, go through it and then give you feedback. On the other hand, if you link to a repository, I'm sure that many people on HN will be happy to give you feedback.

</comment><comment><AUTHOR> Thanks for the suggestions! What's in my mind as a start is rather a service kind of thing: developers could send their neural nets to me and I'd create an exe or dll so that they can run the nets faster and with less CPU than with python. And if this can create enough value for some users, only then build a startup on it.

</comment><comment><USER3> If you developed some awesome CUDA kernels which beat latest CuDNN equivalents for _different /multiple_ networks and tensor shapes, then please link to comprehensive benchmarks.

Otherwise I doubt anyone would be interested.</comment>


Ask HN: Why write malware? Does crime really pay better? - <AUTHOR> <comment><USER2> Given the internet, software distribution is global but the extent of laws are regional or treaty based at best. If you exist outside of the extent of that law, it's pretty much free money. You don't have to market, there is little to no risk and you don't have to support any business infrastructure and honestly you don't even have to have a novel idea.

</comment><comment><USER3> Does _just_ writing malware pay that well? No. Malware is largely commoditized.

The real money is in running the entire cybercrime operation end to end, from infection to cash out.

You can make a lot of money writing malware if you are part of a group that wants to keep their tech in house and needs something custom.

</comment><comment><USER4> There's a good chance it does if you plan well, accept the risk model (eg. prison), and are ethically flexible.

</comment><comment><USER5> Keep in mind there are other motivators outside of money. There is definitely a section of malware writers who are politically motivated for example. Then there are also those who do it just to see if they can.</comment>


NPM – Using Two-Factor Authentication - <AUTHOR> https://docs.npmjs.com/getting-started/using-two-factor-authentication <comment><AUTHOR> Really happy to finally see this. Anybody able to get this setup?

Trying with the latest node/npm gives me an error:

        $ npm profile enable-2fa
        npm notice profile Enabling two factor authentication for auth-and-writes
        npm password:
        npm ERR! code E401
        npm ERR! 404 Unable to authenticate, need: Basic, Bearer

Somewhat related, what's the HN communities thoughts on publicly showing whether a package maintainer has 2FA enabled? On the one hand it's giving out security details but it would also give a bit more comfort that (some) of your hundreds of dependencies are a bit more secured from malicious updates.</comment>


Sharp IP decision on why copyright law shouldn't be used to stifle competition - <AUTHOR> http://www.techdirt.com/articles/20100722/18242810326.shtml

<comment><USER2> Reading at least the excerpts from the judge's decision, it's clear he is really, really sharp, citing Betty Boop, Japanese anime(!), and The Simpsons, among others. This is a judge I would trust in any IP case I'd find myself in.

<comment><USER3> It sounds like that judge would understand the role of copyrighted material in culture, and how the strictest interpretations of what constitutes infringement, coupled with insanely long copyright terms, can stifle cultural participation and turn us into a one-way-only society.

</comment></comment><comment><USER4> Kozinski has a history of striking down overzealous Mattel IP claims.

"If this were a sci-fi melodrama, it might be called Speech- Zilla meets Trademark Kong."

<http://notabug.com/kozinski/mattel_v_mca>

<comment> bsnss-mn-cdr Personal favorite: Page 23, Section 6, end of 3rd paragraph: "The parties are advised to chill."

</comment></comment><comment><USER5> A cool thing about the 9th circuit is that you can download a recording of the hearing for any case in the last couple of years: [http://www.ca9.uscourts.gov/media/view_subpage.php?pk_id=000...](http://www.ca9.uscourts.gov/media/view_subpage.php?pk_id=0000004637)

Appeal hearings are usually around 40 minutes long, 20 minutes for each side.

</comment><comment><USER6> On one side, I applaud the higher court's findings.

On the other side, I wish the Bratz dolls would just go away. If I had a daughter, I wouldn't want her to play with Bratz (or Barbie for that matter).

<comment><USER7> Why do you hate fashion dolls?

<comment><USER6> I'm not sure what kind of fashion the Bratz dolls represent other than... well, for lack of a better word, skankiness.

<comment><USER8> Thats what I thought too, but then I watched some of their movies with my daughters. Not completely horrible. Were very good at demonstrating consequences of actions and cleaning up mistakes. Sonny with a Chance on the other hand is mind poison.

</comment></comment></comment></comment><comment><USER9> I think this judge's decision should be used to instruct people about the difference 'idea' and 'execution.' Nothing like a few billion dollar price tag to make that clear.</comment>


Ubuntu Touch OTA-12 Release - <AUTHOR> https://ubports.com/blog/ubports-blog-1/post/ubuntu-touch-ota-12-release-276 <comment><USER2> Interesting stuff. So they're using Mir and it's still in development.

So I think it was like 2013 when the whole "Mir scandal" happened. Like people getting up in arms, Intel refusing to carry their patches etc etc.

What was the use case that Mir satisfied? Was it allowing the use of Android GPU drivers?

But also what was the hate all about? Wayland years later hasn't replaced X fully.

Is it a Red Hat > Canonical thing?

Like I had a look at how netplan worked and really liked it especially how it has autorollback of network config.

But I looked online and the only opinion I saw was akin to "Canonical yet again tries to reinvent the wheel"</comment>


US faces crisis as pension funding hole hits $3.85tn - <AUTHOR> https://www.ft.com/content/f2891b34-3705-11e7-99bd-13beb0903fa3 <comment><USER2> That's a drop in the bucket compared to the above-board debt that the federal government has accumulated anyway.</comment>


Notes on the Amazon Aurora Paper - <AUTHOR> https://blog.the-pans.com/amazon-aurora/ <comment><USER2> Separating the storage layer from the database and query layer seems to be the future of databases - there's no reason for every database to re-implement the storage and replication layer just to provide a different query language or data model. This is also what makes FoundationDB so attractive for me. Are there any other large projects doing this?

<comment><USER3> People often greatly underestimate the performance loss incurred by separating the storage layer from the execution layer. The difference is an integer factor. In a high-performance database design, the execution scheduling behavior _must_ be tightly and intricately coupled to the I/O operation scheduling behavior or you lose much low-hanging throughput optimization.

That said, this can be solved by changing the level of abstraction. If you tightly coupled the execution and storage engine as a single module, which is not intrinsically dependent on the type of data model, it _would_ allow high- performance multi-use within reasonable constraints. Albeit with a very different API than a storage engine. But that is not a thing that exists in open source AFAIK.

The loss from separating storage and execution may not matter for databases where operational efficiency is not paramount (e.g. because the scale is too small for it to matter) but many database engine designers are not going to take that use case limiting performance hit because the CapEx/OpEx implications are large.

<comment><USER4> I think the point is that now that we're in the era of distributed/cloud/partitioned databases, the query logic cannot necessarily be colocated with the storage, so might as well get the advantages of decoupling.

The performance gains at the distributed level seem to rely on either parallelized compute (a-la MapReduce) or over-indexing (a-la ElasticSearch/GIN) rather than the sort of efficiency gains that were made at the level of optimizing between cpu/cache/memory/disk. I think modern problems regarding distributed databases are concerned with the time complexity not exploding as the size of the data does.

<comment><USER3> The query logic/execution is pushed down to the storage in most reasonable distributed database architectures, along with enough metadata that the individual storage engines are fully aware of (their piece of) the execution plan and orchestrate it directly with other nodes e.g. for joins. The reason for local storage is that this will be almost completely bandwidth bound. When you look at growing markets like sensor analytics for edge computing this is the only model that works at scale. Most new parallel databases aren't using a classic MapReduce model or really anything that requires centralized orchestration.

The distributed databases in open source are a bit of a biased sample as they tend to copy architectures from each other and are a trailing indicator of the state-of-the-art. For example, you virtually never see facilities for individual nodes to self-orchestrate parallel query execution (this is almost always centralized), which entirely changes how you would go about scaling out e.g. join operations or mixed workload. Building this facility typically requires a tightly coupled storage and execution engine, but open source systems are strongly biased toward decoupling these things for expediency. Open source database architecture is trapped in a local minima.

<comment><USER5> In other words, are you saying that distributed databases with local storage can greatly reduce network I/O with things like predicate pushdown, which is not possible when the database is built on top of a distributed file system?

</comment></comment></comment></comment></comment><comment><USER6> > But here in the paper, it compares Aurora to a MySQL synchronous mirroring > setup, which is really unfair, IMO. Why the active primary has to replicate > everything over the wire to the active standby? Doesn't MySQL's replication > support Statement-Based Replication?

The comparison in the paper is against the synchronous-mirroring pattern underlying RDS Multi-AZ [1], which is the existing fully-managed, high- availability MySQL solution Amazon offers, so the direct comparison is appropriate for existing RDS Multi-AZ users considering a migration to Aurora.

[1] [https://aws.amazon.com/blogs/database/amazon-rds-under- the-h...](https://aws.amazon.com/blogs/database/amazon-rds-under-the-hood- multi-az/)

<comment><AUTHOR> Thanks! That makes much more sense!

</comment></comment><comment><USER7> One of the neat things about aurora is there is a very small slave lag between the primary and read replicas. If you only have a single thread doing replication then you can easily have a situation where a multi-cpu master can get ahead of a slave only using a single thread. Lazily materializing the pages gives aurora 'parallel replication' for free. I think Mysql supports parallel replication now but I think it is limited if transactions conflict [[https://mariadb.com/kb/en/library/parallel- replication/](https://mariadb.com/kb/en/library/parallel-replication/)].

Another thing I noticed with Aurora is the incremental cost of storage for Aurora is extremely cheap compared to the cost of storage in EBS or the cost of storage if you used instance storage in EC2. The Aurora storage is 0.1/GB but this is replicated 6 times which is more than EBS and EBS costs the same 0.1/GB. This also might be why no-one is going to build a similar system to Aurora. It will be hard to sell something like Aurora to cloud users because the storage costs are going to more than what EC2 charges.

</comment><comment><USER4> Given this architecture, do we know why Aurora caps at 64TB max size?

</comment><comment><USER8> Funny how the CQRS circle closes: it is an architectural design that overhauls some concepts of database design (the redo log, views) into the application layer (for some, to the extreme of reducing the database to a simple log.) And now this same separation is appearing in a DBMS design :)

<comment><USER9> As per my understanding, CQRS fits here if you consider the database log as the "event source". But wouldn't it be terrible performance wise to create the "view" from the event source rather than using the storage layer.

<comment><USER10> I think there's a parallel with how apps keep a trailing materialied view of the data instead of re-creating from the log, unless necessary.

</comment></comment></comment><comment><USER11> I'm wondering how aurora would behave with queries mixing read and write.

For example, with something like "INSERT INTO my_table(field1, field2, field3, ...) SELECT f1, f2, f3... from root_table WHERE ...", I'm wondering how it will spread the load across nodes.

</comment><comment><USER12> I don't understand how aurora achieves the speed it does with a log based approach. Can someone please clarify?

<comment><USER13> Last time we benchmarked Aurora (~2 years ago) the write speed of Aurora is pretty slow compared to RDS (Postgres RDS was able to achieve 3x write throughput)

<comment><USER14> Anecdotally after migrating from RDS MySQL to serverless Aurora there was a noticeable slowdown of our dashboard and reporting tools. Our typical workloads (ecommerce transactions) are slightly slower on average, but the peaks seem down.

<comment><USER15> Serverless Aurora likely has different performance characteristics than normal Aurora.

</comment></comment></comment></comment><comment><USER16> For something open-source like this, look at tikv(transactional key-value (rust)) + tidb(query layer (go)).

</comment><comment><USER17> dumb question which maybe has a well-known answer: has anyone done the same thing but for postgres instead of mysql?

<comment> a-robinson Amazon - [https://aws.amazon.com/rds/aurora/details/postgresql- details...](https://aws.amazon.com/rds/aurora/details/postgresql-details/)

<comment><USER17> aha cheers!

LOL

<comment><USER18> Be careful though - we use Aurora PG and it's great for what it does, but they do not support managed upgrades across major PG versions yet! We're stuck on 9.6.x because the time to dump and restore our large DB is a non-starter with the rest of the business.

<comment><USER19> Did you try to upgrade using AWS database migration service?

</comment></comment></comment></comment></comment><comment><USER16> Everything is faster when you move your data to ebs \s.

Though google has done this for all databases (at least their internal ones) (even bigtable). And some companies say they can do it for nvme & ram.

You just need real-good networking and some type of asic and removing kernel from the path.</comment>


Can Jimmy Iovine and Dr. Dre Save the Music Industry? - <AUTHOR> http://www.wired.com/2015/08/can-jimmy-iovine-dr-dre-save-music-industry/

<comment><USER2> They'd have to start making music first.</comment>


Confirmed: Facebook Apps Are Useless - <AUTHOR> http://www.alleyinsider.com/2008/5/confirmed_facebook_apps_are_useless <comment><USER2> This is something that I love to hate: when people think Facebook is the new platform for web applications.

Newsflash: it isn't.

The goal of the Facebook platform is to be an application userbase and interaction system that allows people to be social and _connect with each other._ There are some non-fun applications like Files, but those are auxiliary ones that are use-it-when-you-need-to applications.

I am tired of applications that have nothing to do with being social being created.

However, one thing with the article is that it doesn't take into account the number of applications that are made by spam applications (read: quizzes and forced invites.) Would be interesting to see how it turns out after that, but it would probably be similar, with a little less in the Just for Fun category.

</comment><comment><USER3> Though I don't completely disagree that many Facebook apps are useless, when did fun become useless?

<comment><USER4> when, because of diminishing returns, one reaches the margin where wasting time is no longer providing significant benefits (such as feeling better).

<comment><USER5> Fun became "useless" when we started analyzing it, poking and prodding it.

At the same time, apps became useless when people started making "apps" like Vampires, Mob Wars and called them "applications" instead of 'games'.

What a beautiful game of wordplay we play.

</comment></comment></comment><comment><USER6> The distribution of websites generally probably isn't hugely different.

</comment><comment><USER7> Beware of categorizing something as a toy and not relevant to serious business computing. IBM did that with xerography, minicomputers, and PCs.

That said, I don't understand Facebook and I don't understand why anyone cares about it.

</comment><comment><USER8> the real numbers may even be worse due to miscategorization. games like 'mob wars' and 'vampires' are currently being categorized as 'utility' apps...

</comment><comment><USER9> Does anyone know why fb is so slow all the time especially with all the resources they have?

<comment><USER10> Part of it is the large number of css and javascript files they load on each page. Visiting the home page (and not logged in) results in 34 http requests. Roughly 1/3 are images, and the rest are javascript and css. That many requests slows down all page loading, even when locally cached. If I were facebook (the best I have is a parody site of facebook: <http://farcebook.codeirony.com/>), I would put all the css into 1 file, and all the js into 1 file.

The other part is that they have a ton of users. It's a non trivial problem to make pages load quickly while providing dynamic content for millions of users.

</comment></comment><comment><USER11> I want to post something, since I seem to be more optimistic about facebook plugins than anyone else posting here so far, but the only things I came up with was lame stuff like "too soon to tell" or "just wait and see"

so here goes: just wait and see

</comment><comment><USER12> With that title, I was half-expecting this to be a Hank Williams "Why Does Everything Suck?" blog post. :)

</comment><comment><USER13> Umm... duh?</comment>


Code Page 437 Refuses to Die - <AUTHOR> http://horstmann.com/unblog/2016-05-06/index.html <comment><USER3> Trying to handle character encoding on Windows in multi-platform programs is a nightmare. In C++ you can almost always get away with treating C strings as UTF-8 for input/output and you only need special consideration for the encoding if you want to do language-based tasks like converting to lowercase or measuring the "display width" of a string. Not on Windows. Whether or not you define the magical UNICODE macro, Windows will fail to open UTF-8 encoded filenames using standard C library functions. You have to use non-standard wchar overloads or use the Windows API. That is to say, _there is no standard- conformant internationalization-friendly way to open a file by name on Windows in C or C++_. I really wish Microsoft would at least support UTF-8, even if they want to stick with UTF-16 internally.

The section titled "How to do text on Windows" on [http://utf8everywhere.org/#windows](http://utf8everywhere.org/#windows) covers the insanity in more detail.

<comment><USER4> For a company that claims to be so supportive of "developers, developers, developers", Microsoft's stubborn and developer-hostile approach to internationalization and their dogged loyalty to the awful UTF-16 encoding is ironic.

The Right Thing To Do at this point is to make UTF-8 a multi-byte code page in Windows and build a UTF-8 implementation in the msvc libc. The milquetoast excuse I hear from Microsoft people is that some win32 APIs can't handle MBCS encodings with more than 3 bytes per character. Which sort of sounds like a problem for developers to fix; perhaps Microsoft could hire some?

<comment><USER5> Before "developers, developers, developers" comes "backward compatibility, backward compatibility, backward compatibility". Windows is perhaps the first commercial platform to commit to Unicode; they made that commitment when UTF-8 was still some notes scribbled on Brian Kernighan's napkin. And all future Win32 implementations must be 100% binary compatible with previous ones. That creates inertia for UTF-16 (or UCS-2), true, but the backwards compatibility guarantees make Windows an absolute joy compared to Linux if you want to write software with a long service lifetime. The decision to stick with 16-bit Unicode is an engineering tradeoff.

<comment><USER4> _but the backwards compatibility guarantees make Windows an absolute joy compared to Linux if you want to write software with a long service lifetime_

The linux user-space ABI is extremely stable. I think the one thing that would frustrate the development of long service lifetime software on linux would just be library availability on various distros, but the actual operating environment presented by the kernel and the image loader for user-space software on linux is very, very stable.

 _And all future Win32 implementations must be 100% binary compatible with previous ones_

And no one is asking microsoft to break the windows user-space ABI. Adding a new, sufficiently-tested, MBCS codepage would have no impact at all on existing windows software. None whatsoever. Other than to make localization a whole lot easier. And compared to the cost of building in a whole new csrss- level subsystem like the one Microsoft just built in to windows last month (linux), it's probably a lot safer and easier to test.

Working in this world myself, windows developers become philosophical when discussing localization. "Someday, we'll turn on UNICODE," "We really should be using TCHAR" (as if that silly thing would fix anything at all), "Shouldn't we really be using wstring?"

OSX, Linux, and mobile developers just do it. It's mostly a solved problem on those platforms.

 _The decision to stick with 16-bit Unicode is an engineering tradeoff._

It's a cost tradeoff - Microsoft doesn't want to spend the developer and testing time adding a UTF-8 codepage.

<comment><USER6> Vote here: [https://wpdev.uservoice.com/forums/266908-command-prompt- con...](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash- on-ubuntu-on-windo/suggestions/6514191-utf-8).

Currently we do "support" CP65001 in the console, but things break if you enable it. One of the problems, for example, is that .NET sees 65001 and starts outputting the UTF-8 BOM everywhere, breaking applications that don't even care about the character encoding. I suspect that's going to be difficult to fix without breaking compatibility.

Having said that, I think it's apparent that we are investing heavily in the console for the first time in a long while, so I'm more hopeful than ever that we can get this fixed.

<comment> mark-r The BOM is an aBOMination. If you simply assume that everything is UTF-8 until proven otherwise, you can get pretty far - the legacy code pages produce text that's not usually valid UTF-8 unless they stick to ASCII.

<comment><USER7> Yes, you can assume, but existing applications, maybe written in 1990s even 1980s, won't. And there are millions of computers, maybe in important industrial companies, are still using them.

<comment> mark-r If that's the case they won't handle a BOM either.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I am from Brazil, meaning that we needed here a custom code-page for our language characters (including the Ç mentioned in the article).

It never worked quite right, since ancient DOS times there was several bugs with this.

What surprises me, is that it STILL doesn't work right.

I have a Windows set to english, keyboard to Brazillian, and had to set "locale" to Japanese to play some Japanese games that outright crash otherwise (they don't even render wrong, they just crash).

I lost count of how many times programs instead of using Unicode when they could, tried to figure a codepage from my location (and end with Brazillian), language (english) or "locale"( Japanese), and do it all mixed up and wrong.

Stuff I saw:

Important installers (for example drivers and expensive software) that render the interface in japanese and EULA in portuguese but with US codepage.

Japanese font + portuguese text (ending in utterly non-sense).

English text + brazillian font... and many others.

Still, to my is is merely an "annoyance", but a similar issue made my mother panic completely:

My dad coded for my family business a software to do some mandatory tax stuff in Brazil if you do any business at all (a sort of tax report for every single transaction), he did it in PHP, for Linux, but running on Windows, so far so good...

Then one day he had to fix a bug, and the only machine was WinXP... he fixed the bug, and suddenly the program started to dump lots of corrupted data to government servers (as you can imagine that is really bad).

We went to see, and fors ome reason now it is sending codepage 437 formatted data, and we have no idea why, we can't find what changed, an we didn't even used a windows based editor (we used Geany on WinXP).

<comment><USER9> Rather than using Japanese locale all the time, you can try Locale Emulator ([https://xupefei.github.io/Locale- Emulator/](https://xupefei.github.io/Locale-Emulator/)), which allows you to run individual programs in a given locale.

<comment><USER10> From personal experience I can say that Locale Emulation doesn't reliable work for many games.

</comment></comment></comment><comment><USER11> The most hilarious issue with -Dfile.encoding is that if it set to, for example, UTF-8, then it is literally impossible to open files with names encoded in, say, ISO-8859-1, which can happen on a Linux system where users use different LC_CTYPE.

You can do a "dir.listFiles()" and iterate it, and find that some of the entries are impossible to open because there is no way to represent the ISO-8859-1 bytes that make up the filename in a String object, and therefore no way to give the correct file name to the java io classes for opening.

<comment><USER12> _You can do a "dir.listFiles()" and iterate it, and find that some of the entries are impossible to open because there is no way to represent the ISO-8859-1 bytes that make up the filename in a String object, and therefore no way to give the correct file name to the java io classes for opening._

That gives more weight to the argument that character encodings should be entirely a "presentation-layer" concern, and anything below that should treat strings as opaque byte sequences. There should also be a way to bypass that "presentation layer" transformation upon input.

<comment><USER13> Indeed, this is exactly what the Linux kernel does; it treats filenames like a binary blob, with the exception that the bytes 0x2f (ASCII '/') and 0x00 (ASCII NUL) are not accepted (regardless of where they are in the byte string).

<comment><USER14> Wow, so characters like U+022F (ȯ) and U+042F (Cyrillic letter Я) U+062F (Arabic letter د) are not allowed but nearly everything else is? Some of those are letters used in actual languages. That's sure to make people scratch their heads.

<comment><USER15>
        codepoint -> encoding in UTF-8

        U+022F    -> C8 AF
        U+042F    -> D0 AF
        U+062F    -> D8 AF

Remember, UTF-8 is self-synchronising: when you pick up at a random point within a stream, there is no ambiguity as to whether you are in the middle of a sequence or not. Valid lower codepoints appearing in the encoding of higher codepoints would violate this property.

</comment></comment></comment></comment></comment><comment><USER16> My heart goes out to anyone that ever has to work with encoding issues. I feel like I know 5% of this stuff and there looms a vast mass of chaos like a Gordian knot whenever I need to dip my toes in it.

<comment><USER17> Every programmer has to deal with encoding; it's a fact of life. A list of bytes without encoding is just that: a list of bytes. Handling bytes as text (I.e.: "I/O")? You are now working with encodings.

And the funny thing is: it's not that complex.[edit: let me rephrase: it is, but it doesn't have to be. C family is a nightmare, Python et al are delightful]. Unless you don't know how it works---then it's the mystery Gordian knot, as you describe it.

The irony is that encoding is a worry precisely for those who try and stay away from it.

Don't shy away from encodings; embrace them. Then you will learn to love them.

(Another irony: with UTF8 gaining more and more mind share, encoding issues actually become _harder_ to find and debug: they don't show up, and when they do, fewer and fewer people know how to deal with them. Everyone switching to UTF8 just hides the bugs, until it doesn't.)

<comment><USER18> This article is trying to describe how to work on Windows specifically. I don't think it's saying ignore encodings, though honestly why -everything- isn't just encoded utf-8 I don't know.

It's sad that a "modern" OS that had a mostly ground up rewrite (NT) after utf-8 was invented, doesn't have better support for it. I get in memory storage being utf-16, and I'd even accept modern OSes storing files in utf-16, but utf-8 is so elegantly backwards compatible with ascii, it's brain dead not to fix -everything- to work with it.

Perhaps this is the biggest difference between a closed OS like Windows and it's more open counterparts, if Windows were open then the community could have fixed this issue long ago.

<comment><USER19> The problem with elegant backwards compatibility with ASCII is that few systems ever stuck to ASCII - everybody used different, incompatible extensions to ASCII, like the ISO 8859 family and codepage 1252. So by being elegantly backwards compatible with ASCII, UTF-8 also manages to be subtly incompatible with the majority of almost-aSCII data that exists, in ways that _sometimes_ don't matter. Until they do.

<comment><USER20> ISO 8859 (or big brother ISO 10367) with ISO 4873 is fairly sane, backwards compatible with ASCII, distinguishable from UTF-8, and historically supported by X terminals… but not much else. 'Plain ASCII' is not often fully supported either; how many people even know that the standard included composing accented characters by overstriking (e.g. a BS " → ä)?

<comment><USER19> The ASCII standard has nothing to say about backspace overstriking - <USER2> would be something defined by a terminal, file format, or wire specification. In a more common example, ASCII has nothing to say about how you move the cursor to the start of a new line. Some terminal standards will do so on an LF, others just move the cursor down on LF; file and wire specs need to take a position on how they want to represent a line break; and now we get to the point where CRLF is a magic sequence needed to trigger a line break in some formats and it is completely unrelated to how a particular terminal behaves.

<comment><USER20>
      > The ASCII standard has nothing to say about backspace overstriking

It seems impossible to get ANSI copies of old standards (even for money) but the ECMA (1973) printing says:

        3.2 Diacritical Signs
        (Positions: 2/2, 2/7, 2/12, 5/14, 6/0, 7/14)
        In the 7-bit character set, some printing symbols may be
        designed to permit their use for the composition of acce‐
        nted letters when necessary for general interchange of
        information. A sequence of three characters, comprising
        a letter, BACKSPACE and one of these symbols, is needed
        for this composition; the symbol is then regarded as a diacrit‐
        ical sign. It should be noted that these symbols take
        on their diacritical significance only when they precede or
        follow the character BACKSPACE; for example, the symbol
        corresponding to the code combination 2/7 normally has the
        significance of APOSTROPHE, but becomes the diacritical
        sign ACUTE ACCENT when preceded or followed by the character
        BACKSPACE.

This is precisely the reason ASCII 1967 replaced ← with _ and ↑ with ^ (explicitly still "circumflex _accent_ " in Unicode) and added ` ("grave accent", likewise).

ANSI made this _optional_ in the 1986 revision, in §2.1.2 — "The use of BS for forming composite characters is not required." — with a note that it would likely be removed from a future revision (but there never was another one).

      > In a more common example, ASCII has nothing to say about how you move the cursor to the start of a new line.

It does; it just says something slightly unfortunate about code 0x0A.

      CR  Carriage Return
          A format effector which moves the active position
          to the first character position *on the same line*.

      LF  Line Feed
          A format effector which advances the active position
          to the *same character position* of the next line.

[Italics added] But then it says:

      The Format Effectors are intended for equipment in
      which horizontal and vertical movements are effected
      separately. If equipment requires the action of
      CARRIAGE RETURN to be comhined with a vertical movement,
      the Format Effector for that vertical movement
      may be used to effect the combined movement. For example,
      if NEW LINE (symbol NL, equivalent to CR + LF)
      is required, FE2 shall be used to represent it. This
      substitution requires agreement between the sender and
      the recipient of the data.

      The use of these combined functions may be restricted
      for international transmission on general switched telecommunication
      networks (telegraph and telephone networks).

So CR LF will unambiguously get you the first position on the next line. The code for LF is allowed to be replaced by NL by "agreement", but CR can't move to the next line.

<comment><USER19> That's fair, and thanks for digging up those actual standards - they are indeed not easy to find these days. I think though that tends to be the standard speaking to the intended usage of the ASCII codes, more than it does to an attempt to standardize behavior of all input and output devices. It's more a suggestion that some equipment might choose to use backspace for diacritics, and some might separately effect X and Y movement, but others might not. Certainly in practice terminals have always exposed their different capabilities by giving special terminal code meanings to ASCII sequences, and, when terminal capability negotiation was not an option (e.g. in specifying a file format or defining how to separate SMTP headers) ASCII users have made their own standards for these things (I guess this is the sort of 'agreement' the standard alludes to).

<comment><USER20> Yes, the 'dual use' characters were define at the request of European delegations and the language makes it clear that it was expected that English- language terminals would continue to have " look like " and not ¨ and so on. ASCII was defined before video terminals were developed, so no one thought overstriking was remarkable. As it turned out, non-English European language versions ended up not generally using overstrikes anyway, but redefined the 'national use' characters #$@[\\]{|} instead, which unfortunately did lead to ambiguity.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> 437 is well-known for its use of line-drawing and other artistic characters:

[https://en.wikipedia.org/wiki/File:Norton_Commander_5.51.png](https://en.wikipedia.org/wiki/File:Norton_Commander_5.51.png)

[https://en.wikipedia.org/wiki/ASCII_art#.22Block_ASCII.22_.2...](https://en.wikipedia.org/wiki/ASCII_art#.22Block_ASCII.22_.2F_.22High_ASCII.22_style_ASCII_art_on_the_IBM_PC)

<comment><USER21> It is the basis for the "graphics" of Dwarf Fortress. The game now uses SDL and a tileset, but still includes a text mode (but not on windows).

<comment><USER22> I tried to make it work on Windows.

I gave up. This article describes why.

</comment></comment></comment><comment><USER23> Things would probably be slightly better if Unicode wasn't so difficult to support properly. For example, good luck getting your UTF-8 text output to render correctly in a terminal window under all circumstances (try combining diacritics or funny letters like "𖥶" \- can you copy/paste that using the mouse?), or in a text editor like vi, Emacs with terminal UI. Using UTF-8 typically means having to think long and hard about filtering input/data, normalization and stuff like [http://www.unicode.org/reports/tr36/](http://www.unicode.org/reports/tr36/) . If you don't, you'll run into such issues eventually even if you think your code needs to handle only a few "western" languages.

<comment><USER24> A decade ago that would be a valid argument, and processing Unicode text still isn't trivial, but nowadays Unicode support (UTF-8 in particular) is so well embedded in all operating systems and programming languages that this is not the problem. And on most operating systems the problem simply doesn't exist for most people because Unicode is the default.

The problem here is Microsoft clinging to legacy character encodings that have no place on a modern operating system as default for anything.

<comment><USER23> > _so well embedded in all operating systems and programming languages that > this is not the problem._

It's not the "enabling" of Unicode that's problematic, it's the features of more exotic Unicode codepoints that aren't correctly supported by many programs in all major operating systems, because they weren't designed with these features in mind.

Tell me, can you copy/paste the "𖥶" character with the mouse after double- clicking it in your browser? It's a letter - [http://unicode- table.com/en/16976/](http://unicode-table.com/en/16976/), so it should IMO be treated like a quoted word (correct me if I'm wrong). Safari on OS X selects either the quote and the letter or just the right quote depending on where exactly on the letter I double click. Safari/Webkit is relatively modern and well-maintained too. Unicode "supported"? Sure. Working well? Nope, just for a few common use cases.

<comment><USER24> > Tell me, can you copy/paste the "𖥶" character with the mouse after double- > clicking it in your browser?

No problem (Linux/Firefox).

The Unicode standard is not static (unlike those old codepages mentioned by OP); it is being changed and improved continuously. Support for characters outside of the BMP (such as the one you mention) is mostly there, but it may not be at the level of the basic scripts supported by, say, Unicode 5.0. That is fine. New features in standards take time to implement (the same thing happens with HTML and CSS).

For developers Unicode support is there. Has been for years.

</comment></comment></comment></comment><comment><USER25> On 16-bit vs 32-bit Unicode/ISO 10646, I think it basically boils down to ISO 10646 wanting 32-bit but had no software folks on that committee, while the Unicode people was basically software folks but thought that 16-bit was enough.

</comment><comment><USER26> "Disclaimer: The file.encoding property is undocumented and not officially supported, and it has been reported to act inconsistently across Java versions and platforms."

Oh Christ on a cracker. Why doesn't Oracle just default everything to UTF-8 in the next version of Java?

<comment><USER27> Too late for that kind of change, really. 20 years of legacy systems are not going to enjoy that.

<comment><USER28> If their legacy system doesn't support UTF-8, I doubt they'd update their system at all.

<comment><USER27> They probably want update the JVM for security purposes, though. There's plenty that will absolutely kill you in any public facing JVM from more than a few years back. The first release of 7 has at least two very bad denial of service attacks that allow a remote user to saturate as many CPUs on your server as they like, all they need to do is send magic http headers to your tomcat or whatever.

<comment><USER28> People say that about operating systems, yet you have businesses running Windows XP still simply because they don't want to update. Yes, there's ones that don't for compatibility, but there are some that don't upgrade simply because they don't want to.

</comment></comment></comment></comment></comment><comment><USER29> Now imagine you are debugging the console output after it went thru a web server, your browser, your local dev environment, your local console, and then pasted into your text editor.

</comment><comment><USER7> However if you use WriteConsoleW, you can actually output both of the "€∑" in ANY code page. The NT console is a matrix of UTF-16 code points, and there is an API to write it. So the question becomes why Java (and many other platforms, like Python) did not use this mechanism. Notably Java's internal encoding of strings is UTF-16 either, this should be a problem.

<comment> mark-r One of the great benefits of a console interface is that it's a lowest common denominator between different OS. That interface is based on a byte-level I/O model. Things like I/O redirection depend on it.

<comment><USER7> They can implement an alternative driver to convert IO streams into API calls. And that's how libuv did.

</comment></comment></comment><comment><USER30> Notably this is a Windows problem.

Sane platforms default to UTF-8 and output exactly what you would expect: €Σ

</comment><comment><USER31> lol. Just failed to mount a sd card on my openwrt modem yesterday. the error was that the exfat partition was using that code page and my modem didn't have it.</comment>


Addepar's finance computing coding challenge on hackerrank - <AUTHOR> https://www.hackerrank.com/addepar <comment><USER2> For any thinking of doing this because they want to work at Addepar - it is a notorious under-paying meat-grinder.

</comment><comment><USER3> Clojure 1.4 is two releases behind the current version...

Isn't groovy currently on version 2.3 as well?

<comment><USER2> 2.3 is Groovy's current stable version. 1.4 is comparatively ancient for Clojure.</comment></comment>


Reddit and HackerNews x-posting: Who gets there first? - <AUTHOR>

I've often noticed a link get to the top page of r/programming or r/technology, only to see it pop up on Hackernews a few hours later, and vice versa. I've hadn't really figured out a discernible pattern, does anyone have any analytics on when links get submitted to Reddit vs. Hackernews? Or any theories on which site gets a link first? <comment><USER2> In case you didn't know there is also coders news [http://codersnews.com/](http://codersnews.com/)

I think it's better than hackersnews and reddit.

<comment><AUTHOR> I did not know that, I'll definitely check it out.</comment></comment>


Harvard Math 55A and Stanford Math 51H Animated - <AUTHOR> https://www.kickstarter.com/projects/1383727895/harvard-math-55a-and-stanford-math-51h-animated

<comment><USER2> they're a bit rough on vi hart and numberphile as being 'math lite' and all about pictures whereas they are all about the rigour by animating their proof. the obvious counter-argument is that vi and numberphile are working on 'inspiring' people about maths and letting the formalism follow. btw i don't agree that pictures aren't proofs, they're not everything but they're a good scaffold in many situations.

<comment><USER3> Hi Jgamman. I agree! Pictures are very good schematics at leading proofs into the right direction. Tons of examples: Monotone Convergence Theorem and Bolzano-Weistrass. Best, Otis B. Ramsay '99

<comment><USER3> In fact, you can argue that our entire series IS about pictures and schematics!</comment></comment></comment>


Every Piece of Startup Advice is a Lie - <AUTHOR> http://www.tonywright.com/2008/every-piece-of-startup-advice-is-a-lie-including-mine/

<comment><USER2> I can't think of any startup that's failed from over-emphasizing _both_ of these points together, but I can think of a few that died from following each of them in isolation. For example:

The startup I left in September has now been around for 7 years. They're profitable (obviously; otherwise they wouldn't still be around), but don't have product-market fit: they have fewer than a dozen customers and need to go through a laborious and often fruitless sales process for each new customer. IMHO, their problem is that they're too focused on "Don't stop" and not enough on "Build something people want." When one of their product ideas fails in the marketplace, they usually assign an engineer or two to maintain and update it, in the hopes that if they add a few more features or make it a little faster, someone will buy it. As a result, they had something like 7 products when I left, only three of which were bringing in revenue. They might get much farther by concentrating resources on really trying to get a breakthrough with one product than scattering their resources across 7.

It's harder to find examples for companies that made something people want and still failed, but they're out there. AllAdvantage.com comes to mind: they gave away free money, lots and lots of people wanted it, but they still failed because they weren't making more money than they were giving away. Friendster too, sorta: lots of people wanted them, enough that it killed their servers, so nobody could get to them, so everyone went to MySpace. Both of these were at least indirectly because they didn't view the startup as a long haul and work out a sustainable infrastructure.

<comment><USER3> > It's harder to find examples for companies that made something people want > and still failed

I don't think it's that hard at all:

<http://www.stage6.com/>

There are numerous instances where what the user wants and what is most profitable for your startup don't perfectly line up.

<comment><USER4> Hrm. That's a good point.

I have no idea what Stage6 offered, but I find it hard to believe that they wouldn't be able to get (more) funding if they had passionate users and dramatic growth.

Making money is, of course, another can of worms. I could start a business of sending everyone $100 (for free) and I'd see a lot of love and growth. Maybe that's what Stage6 did? If they can't make the argument that scale can get their total cost down enough that $2.50 CPM could support it, then they are "buying love", no?

<comment><USER5> They offered high-definition videos, using a DivX web player.

They got something that users want (I used their product, and I'm not alone), but they didn't cope well with success. And after serious political issues they closed. More info: <http://news.ycombinator.com/item?id=124574>

</comment></comment></comment></comment><comment><USER6> Nice, I've wanted to write something similar for a while.

However, even the "don't stop" one has the counter example of "fail early" and "know when to give something up and move in a new direction". That doesn't mean stop altogether, of course, but it may mean giving one thing up for another.

</comment><comment><USER7> I find the advice "make something people want" is not catch-all.

How are you separating want and need?

People want McDonalds or Starbucks. But if they live in a cold state they NEED heat, which will require natural gas, electricity, coal/wood stove, or solar power -- or some other type of fuel (i.e. hydrogen, nuclear, etc.)

Maybe because everybody is only thinking technology applications, it makes sense, but I think the focus on "what people want" is a little misleading.

Think of the products you use and consume daily, and you will see there is a certain quantity that you need but may not want or like, and a certain quantity that you want, but may not need or be able to afford.

Creating something people want, although great advice, is not the end-all and be-all of startup advice.

Ditto for never giving up.

Read this: [http://www.theintellectualviewpoint.com/reading/thecommonden...](http://www.theintellectualviewpoint.com/reading/thecommondenominatorofsuccess- albertengray.pdf)

Sometimes, it's not just never giving up, but it's also doing the RIGHT things.

</comment><comment><USER8> while making something people want is obviously great advice, sometimes it gets applied in a detrimental way by implying that if you don't have users it's because your product isnt't right and you need to lock yourself away and hack some more features and then you'll have something people want.

In reality your product might be just about good enough but you're not paying enough attention to smart distribution methods and thats the real cause of slow growth.

<comment><USER4> That's a great point-- one of the recurring themes we hear from speakers at YC is "you can't underestimate the importance of distribution".

That being said, I'm always a fan of nailing the most important distribution tool there is-- word of mouth-- before focusing too much on anything else. If you can't tell 10 people about it and have them be excited enough about your product to tell a few more, then distribution is really just pouring water into a leaky bucket.

Facebook apps are a fine example of distribution-mania that ventures into the realm of unhealthy. Turns out, no one really wants a lot of those apps-- so their active userbases are dramatically declining.

</comment></comment><comment><USER9> A more appropriate topic for his article would have been : _There is No One True and Only Way_. Less controversial but keeps the substance.

</comment><comment><USER10> This sounds suspiciously like startup advice...

Is this article supposed to be one of those "This statement is false" paradoxes?

</comment><comment><USER11> Best article on the subject since PG's 'how not to die'.

</comment><comment><USER12> So is this piece of startup advice a lie?

<comment><USER13> Yes. Self-evidently.

<comment><USER14> Ah, then it must be true.</comment></comment></comment>


Ask HN: A modern day alternative to "JavaScript the good parts"? - <AUTHOR> I've been out of touch with Javascript for about 5 years. Before that I used to do a little bit of frontend programming. I first learned javascript from "Javascript the good parts", a book by Douglas Crockford. I want to learn it again now. Is there a modern day alternative to the same book. An online resource will also work. The real requirement is that it should be concise and engaging. <comment><USER2> Without doubt Kyle Simpson's You Don't Know JS. I am going to say not only is this the best book on any programming language, but that it completely changed my understanding of what a teacher and a good intellectual is.

<comment><USER3> Just took a look at the ES6 portion of that. I did not realise how much I didn't know! Great stuff :-) Thanks for the recommendation.

</comment></comment><comment><USER4> I think JavaScript: The Good Parts is still relevant, you'll just want to supplement it with other resources on ES6, async, etc.

I recommend Kyle Simpson's series You Don't Know JS for understanding in depth.

Eloquent JavaScript by Marijn Haverbeke is a great interactive resource covering the basics: [https://eloquentjavascript.net](https://eloquentjavascript.net).

For more practical guidance on specific topics I recommend [https://egghead.io](https://egghead.io) if you're okay learning from videos.

<comment><USER5> I wasn't a newcomer to JS when I started working with ES6, but it had been a while so I picked up The Good Parts as a primer. It was still quite useful and I was able to (I think) pick up all the new ES6+ syntax more easily because of it.

</comment></comment><comment><USER6> Use TypeScript, it has come a very long way since it was released. It tracks very closely to JavaScript and it has an active community, shared types for libraries, and great editor support (VSCode and others). Using maximum strictness and tslint you can pretty much vaporize most of the bugs that Crockford warned about without even running your code.

[https://basarat.gitbooks.io/typescript/content/docs/getting-...](https://basarat.gitbooks.io/typescript/content/docs/getting- started.html) (ssl cert expired today -_-)

</comment><comment><USER7> [https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q](https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q)

[https://www.youtube.com/channel/UCYqCZOwHbnPwyjawKfE21wg](https://www.youtube.com/channel/UCYqCZOwHbnPwyjawKfE21wg)

[http://es6-features.org/#Constants](http://es6-features.org/#Constants)

[https://github.com/getify/You-Dont-Know-JS](https://github.com/getify/You- Dont-Know-JS)

[https://medium.com/search?q=javascript](https://medium.com/search?q=javascript)

[https://javascriptweekly.com/](https://javascriptweekly.com/)

[https://nodeweekly.com/](https://nodeweekly.com/)

[https://www.reddit.com/r/learnjavascript/](https://www.reddit.com/r/learnjavascript/)

[http://www.jstips.co/](http://www.jstips.co/)

and

[https://www.google.com/](https://www.google.com/)

</comment><comment><USER8> I loved Eloquent Javascript [1] by Marijn Haverbeke (who also authored CodeMirror, among other projects) and the in-browser code execution was really inspiring for making a book into a code playground. I read it after years of dipping my toes into programming over and over and found the introduction of fundamentals really concise and refreshing.

[1] [https://eloquentjavascript.net/](https://eloquentjavascript.net/)

</comment><comment><USER9> Since you mention concise, I'll jump in with my JavaScript tutorials series [https://flaviocopes.com/javascript/](https://flaviocopes.com/javascript/) \- I try to condense information in a useful way, kind of following the 80/20 rule.

If you're just looking for the ES6-7-8 updates, [https://flaviocopes.com/ecmascript/](https://flaviocopes.com/ecmascript/)

</comment><comment><USER10> [https://watchandcode.com/](https://watchandcode.com/)

Watch and code is from an exgoogler. I wouldn't say its a "Javascript the good parts".

Its closer to Uncle Bobs "Clean Code" with a todomvc tutorial mixed in, with some overlap of YDKJS.

I wrote a short review here. [http://vincentmtang.com/2018/05/23/my-review-on- watch-and-co...](http://vincentmtang.com/2018/05/23/my-review-on-watch-and- code/)

</comment><comment><USER11> [https://javascript.info](https://javascript.info) is a good free resource.

</comment><comment><USER12> Moving away from Javascript, IMHO

</comment><comment><USER13> Last week I found an interesting JS book on Amazon: Simplifying JavaScript: Writing Modern JavaScript with ES5, ES6, and Beyond

Link: [https://www.amazon.com/dp/1680502883/ref=cm_sw_r_cp_awdb_t1_...](https://www.amazon.com/dp/1680502883/ref=cm_sw_r_cp_awdb_t1_P3dLBbA31AHKN)</comment>


How Amazon Could Change Publishing? - <AUTHOR> http://www.forbes.com/2008/05/16/mitra-amazon-books-tech-enter-cx_sm_0516mitra_print.html

<comment><USER2> Dang. I should've seen forbes.com before clicking. If I had, I wouldn't have wasted my time.</comment>


Jonathan Rees on OOP - <AUTHOR> http://www.paulgraham.com/reesoo.html <comment><AUTHOR> Rees (<http://mumble.net/~jar/>) studied under Sussman at MIT and is one of the creators of Scheme48 (<http://groups.csail.mit.edu/mac/projects/s48/>).

<comment><USER2> Before that he was one of the fathers of T (<http://en.wikipedia.org/wiki/T_%28programming_language%29>) which was pretty much the first production Scheme.

</comment></comment><comment><USER3> >>> _In that case, the only way OO can be defended is in the same manner as any other game or discipline_

Brilliant meta-analysis of abstract patterns and narratives.

</comment><comment><USER4> "So OO is not a well defined concept." Hmmm, last I checked OO was pretty well defined. The implementations of so-called OO languages, on the other hand, that's another story.

If Jonathan or Paul have any doubts on the concept as it was originally conceived, they don't really have to go far. Just ask Alan Kay. He's still alive!

[http://userpage.fu- berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay...](http://userpage.fu- berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en)</comment>


Ask HN: Any sample convertible note paperwork? - <AUTHOR>

Does anyone have any links to an online resource where I can see how a convertible note is written? <comment><USER2> Here you go:

[http://contracts.corporate.findlaw.com/finance/loan/4422.htm...](http://contracts.corporate.findlaw.com/finance/loan/4422.html)

[http://contracts.corporate.findlaw.com/LCsearch.html?entry=c...](http://contracts.corporate.findlaw.com/LCsearch.html?entry=convertible+note+&restrict=contracts)

Do not try to "wing this" yourself, have an attorney do it.

<comment><AUTHOR> i wasn't trying to wing it. just rather looking at the different types of definitions and wording such as discounts, caps, etc.</comment></comment>


The T Project (2010) - <AUTHOR> http://mumble.net/~jar/tproject/ <comment><USER2> > T is a dialect of Scheme and its implementation.

</comment><comment><USER3> Fun fact: one of the original research prototypes for the Mars Rover was programmed in T.

T is still IMHO one of the most beautiful programming languages ever created. It is a tragedy that it has faded into obscurity.

</comment><comment><USER4> Odd, I've read [http://www.paulgraham.com/thist.html](http://www.paulgraham.com/thist.html) and digged about Shivers a bit yet never saw that site.

Super finding.

<comment><USER5> Hah! Olin Shivers. He wrote one of the funniest acknowledgements. Enjoy:

[https://scsh.net/docu/html/man.html](https://scsh.net/docu/html/man.html)</comment></comment>