Dark Flash Photography - UV/IR Flash Instead of Visible Light - <AUTHOR> http://cs.nyu.edu/~dilip/wordpress/?page_id=38

<comment><USER2> The photographer Weegee used to bring his camera with infrared film and an infrared flash bulb into darkened movie theaters and photograph the audience behind him. Back in the 40s!

[http://museum.icp.org/museum/collections/special/weegee/weeg...](http://museum.icp.org/museum/collections/special/weegee/weegee14.html)

<comment><USER3> Your link is broken for me, shorten to the first /weegee/ and click "entertainment", then browse.

</comment></comment><comment><USER4> That reminds me of the video where Richard Feynman talks about light. <http://www.youtube.com/watch?v=6b6DpT2YLI4>.

</comment><comment><USER5> Seems like a good idea. I guess the invisible light provides high-resolution luminance data, and the low-resolution visible shot provides the chroma. Since our eyes are more sensitive to luma than chroma, the image is not degraded much compared to a "correct" exposure.

<comment><USER6> And, since the chroma _is_ degraded, it automatically gives the images that magazine-cover "beauty blur" effect.

<comment><USER7> Soft focus is spherical lens abberation, something you would usually want to avoid.

<comment><USER6> Correct, people normally avoid soft focus _in the luminance curve_. Running the chroma curve(s) through a low-pass filter, however, is the "Make My Logo Bigger Cream"[1] of the commercial photography world.

[1] <http://makemylogobiggercream.com/>

</comment></comment></comment></comment><comment><USER8> This process merges a UV/IR photograph with an ambient light visible photograph. However, if you want to take a photograph of someone in the dark they're going to end up looking like the bogeyman.

<comment><USER9> It's not supposed to be night vision. All I want out of a digital camera is the ability to take hi-res indoor photographs without flash. Consumer-level cameras have modestly-sized CCDs that can't gather enough light fast enough indoors, so the picture is either noisy (not enough light gathered) or blurry (exposure is too long). This aims to remedy the former by using the UV/IR photo to smooth out the noise.

<comment><USER10> A fast lens might help (if you're into SLRs). f1.8 50mm prime is cheap, though anything faster will cost you.

<comment><USER11> What he means with 'fast lens' is a lens with a large aperture so that more light reaches the film/sensor in a shorter time.

There is nothing inherently 'faster' about the lens, it is just a figure of speech.</comment></comment></comment></comment>


Billionaire Paul Allen Finds Lost World War II Cruiser USS Indianapolis - <AUTHOR> https://news.usni.org/2017/08/19/uss-indianapolis-wreckage-found <comment><USER2> Wow, that is fantastic. It was such a tragedy and finding the Indianapolis' resting place is quite a feat. Good job to all those who were involved.</comment>


Ask HN: What is an ideal age for Kids to introduce them to coding? - <AUTHOR>

My son will be turning 7 soon and he is showing keen interest in computers. Often he is asking me how one can create websites and web pages?<p>For starters I am planning to teach him HTML and introduce him to Scratch. Am I starting too soon? Is 7 is an ideal age for Kids to introduce them to coding? When did you start with your kids as far as Computer education is concerned? <comment><USER2> I started my daughters at 4. We would play in a Python interpreter as a group. The idea was not about teaching syntax but showing them that code == fun stuff. We have continued with that theme for a while. At 6 they started playing more with Python on their own and one of them did Hackety Hack for a week or so. They're 7 now and we've played with Arduino a little but including them adjusting parameters in the source. I continue to expose and encourage them, but not require them. I try to keep the time blocks small to keep their attention. I would rather leave them wanting more than feeling like they were forced to learn.

</comment><comment><USER3> Definitely 18. I've been programming since I was 15 and if I could back I would definitely spend that time studying more Math. It's very important to digest fundamental Math concepts before attempting to learn how to program.</comment>


Parrot launches drone with 14MP camera and 180-degree fisheye lens - <AUTHOR> http://connect.dpreview.com/post/3028288584/parrot-launches-drone-with-14mp-camera-and-180-degree-fisheye-lens

<comment><USER2> 12 minutes of flying time for $1000+? .. I think I'll just stick with my ARDrone2.</comment>


Oristand: a $25 standing desk - <AUTHOR> http://www.oristand.co <comment><USER2> Add to that $10 shipping and $3 taxes.

</comment><comment><USER3> That's pricey for cardboard...</comment>


Introduction to Computer Vision and Deep Learning (with PyTorch) - <AUTHOR> http://theaijournal.com/2018/04/20/pytorch-for-computer-vision-1-introduction-to-computer-vision-and-deep-learning/ <comment><USER2> Nice introduction . Waiting for the rest of the series</comment>


The Second Coming of VR: This Time It's "Real" - <AUTHOR> http://blog.fictiv.com/posts/the-second-coming-of-vr-this-time-its-real <comment><USER2> I believe VR is here to stay. My question is will it have legitimate value outside of gaming. There's nothing I can do with VR that I can't do with my dual monitor setup. I could technically I could write code on my iPhone. That doesn't mean its a good idea. Content creation in VR sounds cool, but will it actually speed up my workflow?</comment>


Darwin right: variations in useless organs unchecked by natural selection - <AUTHOR> http://whyevolutionistrue.wordpress.com/2012/08/05/darwin-right-again-the-inner-ears-of-sloths-are-highly-variable/ <comment><USER2> One of my favorite things Darwin was right about (in a pre-genetic way): the master control gene.

[http://www.pbs.org/wgbh/evolution/library/04/4/text_pop/l_04...](http://www.pbs.org/wgbh/evolution/library/04/4/text_pop/l_044_01.html)

<comment><USER3> It's all fascinating. I'm sure I will enjoy reading Darwin much more when I am older and have observed more of the world and evolved my own ideas relating to it.

</comment></comment><comment><USER4> "We often see rudiments of various parts in monsters."

I must ask: What animal was it that, in those days, was referred to by eminent scientists as "monsters"?

<comment><USER5> Not any specific animal, but any animal (or person) that had gross deformities or severe birth defects might have been called a "monster" before about the middle of the twentieth century.</comment></comment>


Theorem of the Day - <AUTHOR> http://www.theoremoftheday.org/Theorems.html <comment><USER2> This is super interesting. I love how concisely they are able to convey a certain concept. I feel the ratio: amount of knowledge you acquire versus length of the explanation is incredibly high, which makes me want to keep opening more and more tabs. The only place where I have the same feeling is in fermatslibrary.com, although in a different way. I would like to see the same concept applied to CS.

<comment><USER3> > I would like to see the same concept applied to CS.

Definitely. An algorithm of the day would be nice.

<comment><USER4> You might find this interesting, assuming you don't already know about it:

The morning paper by Adrian Coyler

[http://blog.acolyer.org](http://blog.acolyer.org)

</comment></comment></comment><comment><USER5> For more random interesting theorems with outrageously clever and beautiful proofs, the "Proofs from THE BOOK" [1] book is a fantastic collection. As a curiosity, "THE BOOK" in the title comes from Erdos, who often referred to the book in which God keeps nice proofs of math theorems :)

[1]: [https://www.amazon.com/Proofs-BOOK-Martin- Aigner/dp/36420085...](https://www.amazon.com/Proofs-BOOK-Martin- Aigner/dp/3642008550)

</comment><comment><USER6> Would be kind of fun to get this in email. Kind of like word of the day.

<comment><USER7> I second that, but my preference would be for a RSS feed.

Edit: they do have a RSS feed and other ways to get a daily theorem from their Resources page [1]

[1] [ [http://www.theoremoftheday.org/Resources/Resources.htm](http://www.theoremoftheday.org/Resources/Resources.htm) ]

<comment><USER6> Would you look at that. That's good enough for me, thanks.

Though are you getting the full pdf's? I'm using Sage and a lot are linking to PDF's with "A newer version of this theorem description is now being hosted at: www.theoremoftheday.org/Theorems.html"

Also some are linking just to the home page. I'm wondering if this is just me or you're getting the same.

<comment><USER7> Oh dear. Yes, I'm getting the same "A newer version of this theorem..." PDFs.

My apologies. I should have checked that the RSS is returning valid links.

<comment><USER6> Well it is good enough, was just checking. Thanks.

</comment></comment></comment></comment></comment><comment><USER8> Am I the only one who was confused what the 'tau' referred to in [http://www.theoremoftheday.org/NumberTheory/Willans/TotDWill...](http://www.theoremoftheday.org/NumberTheory/Willans/TotDWillans.pdf) ?

<comment><USER9> I was also confused. Personally, I find the use of tau nonsensical -- especially when it's used alongside pi.

Established conventions should only be changed when there's a clear need to do so. Inventing a redundant constant does little other than add additional cognitive load. It's not like the tau advocates can break backwards compatibility -- there's too much literature that uses pi. The result is that everyone must now remember both pi and tau.

<comment><USER10> I think tau was used on purpose in that article to avoid confusion with the prime counting function, typically denoted pi (unrelated to the constant pi)

</comment></comment></comment><comment><USER11> This is really interesting, but my heart hurts at the SEO value lost in having the main content be all PDFs. Not that there's really a NEED to have all of this crawl-able & indexable by search engines, but it could probably reach a whole lot more people if it was.

</comment><comment><USER12> I disagree with the front page of this site, the "crowning achievements of mathematics" are not "her theorems", but our definitions.

<comment><USER13> "One can always find imbeciles to prove theorems." René Thom (1923–2002)

</comment></comment><comment><USER14> Unrelated: when a site gets top of HN and it's made of PDF contents, I just cringe at the bandwidth usage for the next few hours...

<comment><USER15> Nah. These PDFs are look to be about 150K-300K. A typical bloated 2016 web page has an equal amount of JavaScript, let alone images, so not really worse off using PDFs.

Assuming (generously) a 100k visitors at half a megabyte per visitor, a top HN placement will only cost a few dollars in bandwidth.

</comment></comment><comment><USER16> Pretty cool, but the links don't work for me. I'm on Windows 10, Chrome 54.0.2840.71 64 bit.

<comment><USER17> Win10, Chrome 54.0.2840.99, works fine here. (They link to PDF files though, more likely that's the problem I suppose).

<comment><USER16> Yeah, I restarted Chrome and everything is good again. When in doubt, turn it off and back on, right? :)

<comment><USER18> Get out of the car and get back in again.

<comment><USER19> This actually did seem to fix my partner's car for a short while just before the battery completely died. Something to do with resetting diagnostics.</comment></comment></comment></comment></comment>


SpaceX Dragon Capsule Suffers Glitch After Launch to Space Station - <AUTHOR> http://www.space.com/20021-spacex-launches-private-dragon-spacecraft.html

<comment><AUTHOR> Live updates via Elon Musks' twitter feed:

<https://twitter.com/elonmusk></comment>


Dreamhost MLK Hosting Sale (ten bucks for a year) - <AUTHOR> http://www.dreamhost.com/ Sadly, I renewed for hosting a couple weeks ago, but thought others might be interested. <comment><AUTHOR> I renewed my hosting a week ago (darn it). But thought others might be interested.</comment>


A riddle wrapped in a curve (2015) - <AUTHOR> https://blog.cryptographyengineering.com/2015/10/22/a-riddle-wrapped-in-curve/ <comment><USER2> "If you don't, or can't handle reading things typeset in LaTeX" i.e., if you don't like beautifully typeset mathematics and would rather read tweets with emojis in them.

</comment><comment><USER3> Discussed at the time: [https://news.ycombinator.com/item?id=10430367](https://news.ycombinator.com/item?id=10430367)

</comment><comment><USER4> My guess is they proved that quantum computers can't break it, and they would rather we stay on RSA so they can sweep things up and crack them all when they get to it.</comment>


What are you using PyPy for? - <AUTHOR>

PyPy was a very hot topic at Pycon this year, and I was just wondering if anyone in the HN community is actually using it for production. <comment><USER2> Not for 'proper' production (still missing a few libraries and C++/swig related stuff), but I have a collection of scripts that I use all the time that reads in data from various sources, does stuff to that data and then writes out that data to new files. Typing "pypy foo.py" instead of "python foo.py" gives me a 3-7 times speed up without having to make any changes to the source code. Can't really argue with that.

</comment><comment><USER3> Quora ran PyPy briefly before switching to Scala in production, see: [http://www.quora.com/Alex-Gaynor/Posts/Quora-is-now- running-...](http://www.quora.com/Alex-Gaynor/Posts/Quora-is-now-running-on- PyPy)

<comment><USER4> Was it established that Quora stopped using PyPy? My impression was that more parts of the stack are now being written in Scala:

[http://www.quora.com/Is-the-Quora-team-considering- adopting-...](http://www.quora.com/Is-the-Quora-team-considering-adopting- Scala-Why)

"Yes, we're using Scala for some projects at Quora, both big and small. As a programming language, it offers the following advantages: fast, concise, type- safe, object-oriented yet functional, easy parallelism, extensible and built on the JVM. It is also gaining more adoption in the industry and thus getting more support. At Quora, we'll choose the best tools and stack for the product we're building, and that includes our language choices at times."

<comment><USER3> From talking to Quora engineers, my understanding is that they rewrote the majority of their stack in Scala. They might still be running Tornado (under PyPy) for their realtime connections to clients.

</comment></comment></comment><comment><USER5> My coworkers and I use it instead of C Python for practically every script we use in our bioinformatics research. It works seamlessly, but "research scripts" are probably a perfect niche market for pypy.

</comment><comment><USER4> Mike Tigas made a PyPy buildpack for Heroku:

<http://github.com/mtigas/heroku-buildpack-pypy/>

Here's his blog post about it:

<http://v3.mike.tig.as/blog/2012/02/13/pypy-on-heroku/>

I haven't used it on a serious project yet, but it was pretty easy to work with.

</comment><comment><USER6> I'd be curious to hear any comments on the memory consumption of PyPy, and if has become an issue in any real usage.

</comment><comment><USER7> Check out seatgeek, I know they're using it in production. I think they do most of their string analysis with it when they are scraping other sites to collect ticket data

</comment><comment><USER8> I'm waiting for PyPy's NumPy support to get a bit more complete.

</comment><comment><USER9> www.pylive.codespeaks.in uses pypy for sandboxing.

</comment><comment><USER10> Not yet, but I'm considering it (== too lazy to implement).</comment>


BookSprouts, A Social Network For Book Worms And Clubs - <AUTHOR> http://www.techcrunch.com/2008/12/27/booksprouts-a-social-network-for-book-worms-and-clubs/

<comment><USER2> Why is this better than GoodReads?

<comment><USER3> Exactly. There might be room for this site, just as there's room for Digg, Reddit, and plenty of other social news aggregators, but this appears to be in no way ground breaking. It barely enhances one's ability to use, learn from, and enjoy books, in basically the same way as several other sites with similar functionality (LibraryThing, Shelfari, Goodreads, etc.).</comment></comment>


Guillory, who says he was ousted as Cruise co-founder, files counter-complaint - <AUTHOR> http://techcrunch.com/2016/04/14/jeremy-guillory-who-says-he-was-ousted-as-cruise-cofounder-files-counter-complaint-detailing-why/ <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=11501470](https://news.ycombinator.com/item?id=11501470) (except for the ones that only make sense here).

</comment><comment><USER3> Here is the counter complaint, from the TC article:

[https://drive.google.com/file/d/0B6iN8SvXQGKYblBna1MwRHBseFU...](https://drive.google.com/file/d/0B6iN8SvXQGKYblBna1MwRHBseFU/view)

<comment><USER4> Thank you! That shed a lot of light into why he feels entitled to part of the company. This is a risk any technical founder faces if they assign their IP to a company and then agree to a vesting schedule to earn their equity in the business. If that's what happened I don't think he has much legal ground to stand on but I'm sure the lawyers involved will want to argue otherwise, after all I bet they stand to earn 30-50% of whatever is decided as a contingency fee.

Partnerships. They are the ship you launch that you expect to sink.

</comment></comment><comment><USER5> 'Remains to be scene'

Who proofreads this rag?</comment>


Ask HN: What cloud solution do you use to backup your photos and videos? - <AUTHOR> I have terabytes of Photos and Videos and would like to store all of them without sacrificing on resolution. Google provides free storage, but limits resolution to 16MP and videos to 1080p. What do you guys use? <comment><USER2> Last year I started using rclone [1][2] to upload photos to Amazon Drive using the "unlimited photos" tier included in Prime. Soon after that offering was given another interface to the same backend -- and that other frontend, "Prime Photos" [3] would automatically turn on ML-scanning on your photos on first login. So I nuked everything, flipped the setting to "off" after a few days, and uploaded everything again.

In January 2017, the last time I logged into either interface, both of them were still accessible and surfaced the same content [4], but I don't know if the two products are going to evolve separately in the future. Using a solid alternate client like rclone, I'm able to sync up my current photos to Amazon Drive on a schedule.

This is a good solution for photos especially if you're already paying for Amazon Prime, but does not address video. I'm experimenting with Backblaze's B2 as one of the least expensive object storage providers, but after doing some napkin math it may be cheapest of them all to get Backblaze's unlimited backup service for $5/month (= $60/year), which then solves both my document and media backup issue in one integrated go, as opposed to having to piecemeal from comparably- or more expensively priced cloud storage vendors and have to devise and maintain separate backup strategies for each.

[1] [https://news.ycombinator.com/item?id=12398303#12407606](https://news.ycombinator.com/item?id=12398303#12407606) [2] [https://news.ycombinator.com/item?id=12398303#12407606](https://news.ycombinator.com/item?id=12398303#12407606) [3] [https://news.ycombinator.com/item?id=13321503#13322296](https://news.ycombinator.com/item?id=13321503#13322296) [4] [https://news.ycombinator.com/item?id=13321503#13322631](https://news.ycombinator.com/item?id=13321503#13322631)

</comment><comment><USER3> None. I found them way too slow. Like it takes months to back it all up and you only can do it when you don't want to use the internet for anything else.

I stick with a backup drive.

</comment><comment><USER4> I have been using BackBlaze for many years now. the $5 price point is great.

I do have Amazon Prime, but they only do photos. I needed all files

</comment><comment><USER5> [https://mega.nz](https://mega.nz)

</comment><comment><USER6> I upload all my images to Amazon Glacier and use the fastglacier client for Windows.</comment>


For developers: How to build a business model in 10 minutes - <AUTHOR> http://simplybroken.com/for-programmers-how-to-build-a-business-model-and-prove-your-idea-is-awesome-in-10-minutes/

<comment><USER2> I happen to be going through this process for the first time right now and it's good to see that I am, at least somewhat, on the right track.

The off-hand remark "what levers we can pull to increase revenue" has been particularly true for me. It wasn't until I put together a spreadsheet where each variable could be adjusted independently that I realized the far reaching effects of some seemingly minor aspects of our target demographic.

</comment><comment><USER3> So the two revenue drivers were a monthly subscription fee and ads. Wouldn't it be more useful to put all potential revenue source into a spreadsheet and add/subtract different combinations of them to see how it affects revenue?

</comment><comment><AUTHOR> benrmatthews: Another revenue driver is also number of users. # of users X revenue per user. You can continue to breakdown both of these categories and have create user segmentation according to income per user, etc.

<comment><USER3> Good point - Thanks for the tip!</comment></comment>


Why did ancient Egypt spend 3000 years playing a game nobody else liked? - <AUTHOR> http://www.eurogamer.net/articles/2016-06-01-why-did-ancient-egypt-spend-3000-years-playing-a-game-nobody-else-liked <comment><USER2> Long rambling article. I found the wikipedia page to be much more digestible:

[https://en.wikipedia.org/wiki/Senet](https://en.wikipedia.org/wiki/Senet)

Fascinating none the less though.</comment>


EA open sources their internal version of STL - <AUTHOR> http://github.com/paulhodge/EASTL

<comment><USER2> Source: [http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n227...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html)

Differences between std STL and EASTL

First, EASTL provides a set of containers, iterators, and algorithms that are identical in interface and behavior to std STL versions with one exception: allocators. EASTL has a different allocator specification which is simpler, more efficient, more flexible, and easier to use than std::allocator. Both std::allocator and eastl::allocator are described below. EASTL follows the defect reports and TR1 as well. EASTL additionally provides and uses some of the TR1 functionality as well, including most significantly the smart pointers, type traits, and hashing containers.

Second, EASTL provides extension functionality to the above containers, iterators, and algorithms. An example of this is the push_back(void), set_capacity(size), and validate() functions added to eastl::vector. The majority of these extensions are driven by the need for higher performance (push_back(void)), higher clarity (set_capacity), or higher debuggability (validate()). There are about 30 such extensions to the various entities in the library. These are described in detail below.

Third, EASTL provides additional containers and algorithms that don't correspond to std STL. These include intrusive_list, vector_map, fixed_hash_set, slist, ring_buffer, radix_sort, has_trivial_relocate, and others. These are described in detail below.

There are additional differences not related to the functional specification. They include a programming philosophy that emphasizes readability, consistency, and optimal performance on limited hardware.

<comment><USER3> Other nice additions are the fixed-sized containers (fixed_vector<> and friends) and the somewhat-enhanced string<> class (which adds things like sprintf() support).

I've missed all of these things greatly since leaving EA.

</comment></comment><comment><USER4> This is why game companies use C++. They've already reimplemented it internally and don't ever want to do that again.

<comment><USER5> I imagine most STL classes still don't fit game programming paradigms. My very first experience with this was using vectors to store vertices as an intermediary before sticking them into a vertex buffer. Granted, my math was awful, but the memory overhead was absurd. I constantly find myself over using STL in my programs because of how easy it is, then redoing it to use standard C/C++ arrays, linked lists, etc. for efficiency.

Ranting aside, I'm most curious to look at any optimizations they've made.

<comment><USER6> Any sane implementation of std::vector is probably going to have three pointers of overhead, and might allocate twice as much memory as required in the worst case when you push a bunch of objects into it. That doesn't seem totally absurd to me - was yours much worse, or am I just being more tolerant of it?

<comment><USER7> You're being more tolerant. When you're building a high performance game engine for fixed target hardware, the last thing you want is to be doubling up the size of your arrays.

<comment><USER8> If you know before the allocation how much entries it must hold at maximum, you can give an std::vector that information. There is simply no case where you are forced to require more memory with an std::vector but not with a manual implementation.

<comment><USER9> If you have a lot of small vectors those three pointers can be expensive. On a 64 bit machine they're 8 bytes apiece.

If you know the vector isn't going to be enormous you can swap two of those pointers for unsigned integers, cutting overhead down to 16 bytes total. If you know more about your data and usage patterns you can probably get it further. For very small vectors of largely static data you might trade one of the integers for linear-time insertion and deletion. If capacity is known at compile-time you can make it part of the type. If you know that size() will always equal capacity() you can get rid of the size int.

It's also worth noting that you don't have to double your storage on every reallocation to avoid linear-time insertions - you just have to multiply it by some constant that's greater than one. If you don't know how many reallocs you're going to do, but you know that it isn't many, you might want to just multiply your capacity by 1.1 every time to avoid a lot of wasted space. Assuming, of course, that you're happy with bringing floating point computation in, and that you've thought about how you're going to increase the capacity of a vector of size 1...

</comment></comment></comment></comment></comment></comment><comment><USER10> <http://news.ycombinator.com/item?id=1798215> \- barrybe set up that github.

Here are first rough benchmarks: <http://msinilo.pl/blog/?p=668>

</comment><comment><USER11> Why the heck are they hosting it at <http://gpl.ea.com> when they've released the code under the 3-clause BSD license?

</comment><comment><USER12> What's their reason for open sourcing it?

<comment><USER13> They ported WebKit to the PS3 and Xbox 360. EA STL was used for this port. More code here:

<http://gpl.ea.com/>

</comment></comment><comment><USER14> E. A. STL. It's in the game.

But don't say it like that, it's against the license ;p</comment>


US Court: Google can ignore Canadian court order requiring deindexing worldwide - <AUTHOR> http://blog.internetcases.com/2017/11/03/google-can-at-least-for-now-disregard-canadian-court-order-requiring-deindexing-worldwide/ <comment><USER2> wonder if the company can sue Google for damages in Canadian court?</comment>


Ask HN: Experience with Text-to-Speech providers? - <AUTHOR>

I'm curious if anyone has experience they can share around working with any of the Text-to-Speech (TTS) providers or TTS software packages?
Specifically, I'm wanting to integrate multi-lingual TTS into a web app, but many of the providers seem to be very heavily focused on telephone, GPS, etc. rather than providing simple ways for web sites to integrate. Even their price sheets seem unclear.
I'd welcome any knowledge/experience in this space from the HN community. <comment><USER2> If you are using .NET stack you may check the System.Speech.Synthesis Namespace [http://msdn.microsoft.com/en- us/library/system.speech.synthe...](http://msdn.microsoft.com/en- us/library/system.speech.synthesis.aspx)</comment>


Container city: Freight container condos coming to Detroit - <AUTHOR> http://www.mnn.com/your-home/remodeling-design/blogs/container-city-freight-container-condos-coming-to-detroit <comment><AUTHOR> reviewing mcormier's comment might be in order <http://news.ycombinator.com/item?id=4609152>

</comment><comment><USER2> It's an example of evolution:

Phase 1: consumers receive goods packaged in shipping containers.

Phase 2: consumers _become_ goods packaged in shipping containers.</comment>


Keen: Connect your favorite things (from Area 120 and PAIR at Google) - <AUTHOR> https://staykeen.com <comment><AUTHOR> From [https://staykeen.com/about](https://staykeen.com/about)

> Keen is a new way to curate, collaborate and expand your interests [1]. Keen > is an experiment from Area 120[2] and PAIR[3] at Google.

> We leverage the Google Search index, combined with user feedback to provide > personalized recommendations that improve over time and help you expand your > interests.

[1] [https://staykeen.com/keen/8ckkvxQoTw73Psbf1P1k](https://staykeen.com/keen/8ckkvxQoTw73Psbf1P1k)

[2] [https://area120.google.com/](https://area120.google.com/)

[3] [https://research.google/teams/brain/pair/](https://research.google/teams/brain/pair/)

<comment><USER2> still low-key mad at them for shutting down google+ and besides it did some of what this pinterest clone is doing...

<comment><AUTHOR> I'm still mad they shut down Wave before it became what it might have, with enough runway and developer experimentation. It would be cool to do something like Wave crossed with Jupyter notebooks or code editors to do strange things like collaborative live coding for music and visual effects, literally an idea I just made up, but which could be implemented using in-browser MIDI support and other to-be-built things which I wish existed.

<comment><AUTHOR> In this line of thought, I need to dig into Google Colab more. I think I'm showing my ignorance a bit as I'm only vaguely familiar with it's capabilities. I think it maybe can already do much or all of the things it needs to in order to accomplish my example, for instance.

Does any self-hosted and/or open source analog of Colab exist? What would that look like? Connect to a cluster you have access to and run things? It's the GUI that makes Colab work as much as Google and associated services. The price is right too, although Google knows what you're running, if not why. However, if you can't pay, you can't exactly complain if you are cut off.</comment></comment></comment></comment>


Top - Performance Folklore - <AUTHOR> http://www.infoq.com/presentations/top-10-performance-myths

<comment><AUTHOR> #10 Disk is random access

#9 CPUs are not getting any faster

#8 Memory is random access

#7 Mac's are a good development platform

#6 Garbage Collection takes away the worry of memory management

#5 Functional Programming solves the concurrency problem

#4 Domain Models do not perform...

#3 Go parallel to scale...

#2 Logging is cheap...

#1 Parsing code is highly optimised...</comment>


Ask HN: How can you trust non open source, third party email clients? - <AUTHOR> I might be over paranoid and correct me if wrong but as far as I understand, almost all the email clients out there either store your credentials or the access token to be able to send you push notifications for new emails.
Once they have the credentials/token, they have full control over your emails, what happen if they get compromised or they leak your data?
Even 2FA will not protect you in this case since you already give them the auth token after a successful 2FA auth, or a specific app password.
Considering the email is used to reset almost all other accounts passwords, how can you trust a third party email clients? Am I missing something?
Thanks. <comment><USER2> I don't use non-open-source, third party email clients.

For G Suite (personal) - I use gmail web client.

For Office 365 (work) - I use Outlook.

For my own mail server - I use Thunderbird or forward to gmail.

<comment><USER3> Both Outlook and Gmail are closed source, third party email clients. You might be able to peak at the front end, but you have no idea what's going on behind the scenes. Sure, from a security stand point you are most likely fine for most use cases, but Gmail dose scan your emails for advertising targeting reason.

<comment><USER4> Gmail is closed source, but it isn't a third party from the you->google relationship.

<comment><USER5> Umm, what? You are trusting them with the contents of the mail -- they don't even need your credentials. They are a third party between you and your correspondent.

</comment></comment></comment></comment><comment><USER5> How do you trust someone else to manage your mail service?

How do you trust every line of an open source package without auditing it yourself?

In your hierarchy of risk/trust, this one is pretty small.

<comment><USER6> Exactly this. If one doesn't audit and build the software yourself they can't be sure what they are getting (remember we're still far away from reproducible builds for everything).

</comment></comment><comment><USER7> Is this rhetorical?

How can you trust _any_ app that has access to your data?

</comment><comment><USER8> Send / receive encrypted messages. Print out encrypted data. Type into computer you built yourself from individual transistors to do the decryption.

</comment><comment><USER9> The same way you trust your surgeon. How do you know he will make you better and not kill you in an elaborate way?

</comment><comment><USER10> How do I know you are a real person and not a figment of my imagination?

Can you prove that you exist?</comment>


Ask HN: How much is working from home worth? - <AUTHOR> Assuming a company made you an offer less than you were hoping, but you can work from home 99% of the time (aside from quarterly meetings and visiting client sites for meetings) -- how much is this worth?<p>Given the obvious zero-commute-cost, how else have any of you HNers measured this benefit? <comment><USER2> Let's say your time is worth $75/hour. Not having to commute is worth 1.5 hours per day. Call it $110/day. Lunch/snack savings per day = $10/day. Gas/car wear savings = $10/day.

$140/day * 200 days per year = $28k.

The way it can be _seriously_ beneficial is you can live/move to somewhere really cheap and still get paid big-city rates.

I knew a guy living on his own small ranch in the middle of nowhere making $150k/year. Living far better than the guy making $300k/year in Manhattan.

<comment><USER3> The way you calculate it above is an odd way to look at it; sure you save 1.5 hours a day - but you certainly aren't getting paid for those hours. And chances are you won't be doing side work that will pay you that $110/day with your free 1.5 hours.

The value is increased freedom. The OP has to decide what value that has to him - assigning it an arbitrary number based on what a person earns per hour is silly.

Your second point was much more valid -- if you can live in a much more inexpensive way, that's a benefit you can put an actual # on.

<comment><USER2> You certainly can put those saved hours to use in a side project or consulting. They're hours of "work" time you get to keep for yourself. If you just use them to watch more TV then you're right, it's not a useful way to measure.

</comment></comment></comment><comment><USER4> I work from home full time, and my salary is about 20% lower than the market rate for developers with my experience. It's worth it to me. You have to be the kind of person who can separate work and home life, though.

If I were offered a 50% pay increase that required I commute an hour each way and spend all day in an office, I wouldn't take it.

</comment><comment><USER5> Not only is there zero commute cost, there is zero commute time. If you normally have a 30 minute commute, that extra hour a day of your life is like a 12.5% bonus by itself.

</comment><comment><USER6> I've had some miserable open-office experiences.

I've actually had better, and more productive, interaction with distant/remote colleagues, in particular as a member of a "senior" team. People knew what they were about and were no nonsense and largely "post-ego" -- whatever did the job, and pointing out errors received a "thanks" rather than a bunch of defensive politics.

Plus, real conversations could happen -- because they weren't constantly being interrupted or joined in by passersby and those with an idle moment.

So... The value's more than commute time and gas money. But it's also personally defined.

(You can argue about resultant productivity and the bottom line for the business, but almost no business seems to measure this nor act on in in a substantive manner. Therefore, it is "delegated" to the role of a personal choice, if there's any choice at all.)

One concern: Is there a career path for you? Whether defined by the company, or by you personally.

</comment><comment><USER7> Honestly, at this stage in my life it would not be worth a pay cut. I just had a kid, and while I'd love to be able to spend more time with her and take some of the load off my wife's back, it seems irresponsible to take a pay cut at the exact moment when my expected expenses are going to go way up over the next 18 years.

<comment><AUTHOR> I am in a similar situation, and while this is not a pay cut - it is lower than I wanted (I took a 30K pay cut for my current position, which I am leaving).

I will be working from home, and the pay will be roughly the same - but I wanted to see how others valued the working from home.

<comment><USER8> I was going to make a longer reply, but then I noticed this, and my reply reduces to:

* Getting to actually see your kid: priceless.

If you're out of the house 7am - 7pm, all you're going to see of your kid are asleep (cute but boring) or awake (go back to sleep!). If that's what you've got to do, that's what you've got to do, but if there's an alternative that's pretty cool.

Whereas if you're only gone 9 'til 5, you've got a couple of little windows there where you actually get to have fun with them. Plus lunch.

The downside is that it is pretty easy to get distracted. You'll need to set up some kind of office environment, and work out how to make it work for you.

Good luck!

<comment><USER9> It's not just non-work time you get to share when you work at home! My 8yo has a small work table in my office; he comes home from school, opens up the backpack, and we work together (my job, his homework) for a while. He usually checks up on what I'm working on -- I was lucky enough to have a mini-hacker who not only comes to tech conferences with me, but spoke at his first one at age 7. He has a play room just off my office, too, so even when we are doing our own things, we're together-ish.

I find it decidedly suboptimal that our society insulates young people from work until their late teens or early 20's, then expects them to suddenly and magically become good workers. Raising my kid around my work is a huge plus, in terms of his preparation for life, his understanding why mommy works even though it takes time away from him, and increasing the time we get to spend together.

</comment></comment></comment></comment><comment><USER9> Gas, wear and tear on my car, before and after school care, etc. would probably add up to about 7k/year if I didn't work from home in the relatively inexpensive city where I live (Indianapolis). I can't imagine what it would be in Chicago or New York.

There are other benefits to working from home that are harder to measure:

* I cook more when I work from home because I can stick something in my oven during the work day and have it ready at dinner time, rather than getting take out or buying heat-and-eat foods during the week. This saves big bucks on food, and also improves our health.

* My son gets a better education when I work from home because I am there to see when he's struggling with something, and can work with his teachers to fix it (as opposed to delegating homework time to a nanny or daycare).

* I don't have to take off of work to let a plumber in, to care for my son when he's home sick from school, and so on.

* I don't take off when I'm sick, unless I'm falling-down can't-think-right sick -- there's no worry about infecting my coworkers, not being close enough to a restroom, how I'm going to drive home if I get worse while at work, etc..

* I save a lot of time I might have spent commuting, which can be spent instead on my family, a side project, recreation, whatever.

* I'll never lose 1-2 days of productivity to an allergy attack because Joe Blow from marketing who's a pack-a-day smoker keeps popping by my office reeking of the stuff.

All else being equal, I'd take a job with 20% lower pay in order to work from home full time -- assuming, of course, it isn't one of those companies where telecommuters are second-class citizens. Other related benefits (such as being able to build my work schedule around my life to some degree) could knock it down a bit further.

I see money simply as a tool to help me do things that matter -- money, in and of itself, or as a matter of score keeping, isn't important to me.

</comment><comment><USER10> the hardest part about working from home is the ability to switch modes from work to family and back. i'm not sure how to quantify that, but it is definitely in the pro column for going into the office.

</comment><comment><USER11> Last fall I had two roughly equal job offers, one for a telecommute, the other for a job 12 miles away.

I took the one 12 miles away, partly to avoid losing my bike commute. I figured losing 90 minutes per day of forced exercise would be bad for my health. (Of course if I'd taken the telecommute gig I still _could_ have gone for a bike ride every day -- but _would_ I have done it, when the weather was bad?)

I won't take a job that requires a car commute. (Unless it's the only thing I can find, which seems incredibly unlikely.)</comment>


Ask HN: Could an old CV ruin my chances? - <AUTHOR> I'm a computer science student and I'm bothering you with a recent experience of mine from an interview. For some of you this may be silly, but I'll give my story a try. I applied for this software developer engineer internship 3 years in row (sounds pretty bad, huh?). The first time I applied, I was in my first year as a student. I was rejected as there were better suited candidates for the positions. A year later, I applied for the job early, passed a test and waited to be called for an interview after a recruiter told me I did well on my written test. I got an answer a month later, saying that the positions were filled, but that there were other positions available, but not as software developer engineer intern. For example, there was a position as a system developer engineer intern. I refused the offer, as I found another job in the meanwhile and was in the process of signing the contract. Third year, this year, the recruiting techniques changed. There is no written test. There is only one interview where a software engineer interviews you for about an hour. I went to the interview and noticed, from the beginning, that the interviewer did not know that I had a job. I found that thing strange, as it was listed in my CV on the first page. How could he have missed it? Taking a glimpse at the CV made me notice it was not the latest one: he had an older version of my CV. I offered to send him the CV from my phone, but he refused. The rest of the interview consisted of solving some pretty easy exercises. In the last few minutes, he prompted me to ask him anything about the internship. I took this opportunity to talk, asked a few questions, and then tried to share more about what my experience is in the field. He did not seem to be very interested in my background. What if he made a bad impression reading my old version of the CV? I have gained a lot of experience and practiced more this past year or so and the old version did not do me justice. <comment><USER2> Difficult to say. I have interviewed lots of people over the years, and have noticed that many people in charge of the interviews barely read the CV in advance.

If you were already invited to an interview, a good interviewer should make most of his impression from you yourself and your answers, and less from the CV. From the applicants side, these days it is common for people to put lots of buzzwords... and when you ask many times you discover that they know not many more than the buzzword name.

So a good interviewer should make a lot from the interview and not from the CV. But then, a lot of other things come into play: Yours and his attitude that day, your 'chemistry', etc. Passing an interview is tough and it is recommended to go as much as you can, since practices makes perfect.

<comment><AUTHOR> I understand your point of view. I, as well, believe that a good interviewer should be able to ask the right questions. This way, he gets to know what the abilities of the person sitting in front of him are. This is part of the problem I've described. The interviewer did not ask me anything significant about my experience with any of the technologies.

<comment><USER2> Well, then I would say it was not a good interview. And yes, if you can, go to as many interviews as possible. There is a 'mood' for passing interviews and the more you do, the more you approach them with the right mood.

</comment></comment></comment><comment><USER3> job interviews can be a crapshoot. best way to up your chances is to apply lots of places, get good at handling all different interview techniques, and build up your portfolio and online body of work. screw that place

<comment><AUTHOR> I tend to stay away from generalizing: a bad experience in a place does not necessarily mean that that place is terrible. But I do get skeptical when this happens repeatedly. I could, as you suggested, apply in a bunch of other places and learn the "how to" of interviews. Do you really think I should just get over this interview and find another place?</comment></comment>


How State Budgets Are Breaking Schools - Bill Gates - <AUTHOR> http://www.ted.com/talks/bill_gates_how_state_budgets_are_breaking_us_schools.html

<comment><AUTHOR> From a societal perspective, education is infrastructure.

But unfortunately, America is in a prisoner's dilemma where individual interests are eating away at our ability to see the big picture (i.e. - educating poor people who will be in even larger numbers in a few decades).</comment>


What can I, a novice programmer, learn by reading Euclid's Elements? - <AUTHOR> I am currently at one of the few colleges in America that still has a class that teaches with Euclid's Elements, a 2000+ year old book of mathematics composed entirely of proofs. (Don't ask how I got here) We've nearly finished the book, and while it's definitely been a very interesting class on math, the most interesting I've taken so far, I can't help but feel there's an important connection here I'm missing. The proofs in this book occasionally remind me of code. I guess they are code, in a sense.
I think there's something I can learn from this about programming, and proof writing as it relates to programming, but I'm having trouble articulating it.
I'm sorry if I'm being unclear. I'd also like this to be a discussion thread on Euclid, if my main topic does not attract enough interest <comment><USER2> Well, you might have read Machiavelli's "The Prince" for the same reasons.:)</comment>


Apple still sacrificing recyclability to make thinner iPads - <AUTHOR> http://arstechnica.com/apple/news/2012/03/apple-engineering-makes-ipads-incredibly-thin-but-hard-to-recycle.ars <comment><USER2> They're innovating and making products we've never seen before. I don't understand the aim of this article. Is Apple doing something wrong? If the argument is that you cannot replace glass/batteries/etc.. yourself then I don't agree at all. My mom isn't gonna replace anything on her iPad. She'll take it to the store and have them do it. Sure, I could do it. Sure, there are lots of non-hackers out there who are capable of doing it, but if we look at the 80/20 rule here (which I feel applies) the vast majority of people wouldn't service their iPad even if it was a bit easier than it is now.

<comment><USER3> The main point is that being hard to repair makes it also hard to disassemble for recycling purposes, not if our moms can repair their iPads.

I agree with you in the innovation part and the article may make one consider if innovation should be stifled in favor of the environment.

</comment></comment><comment><USER4> My concern extends to non-accessible batteries. I see these devices as potentially having many year long lifespans. But batteries still do not make it that far.

(Also, separately, these days, there's the "remove battery to prevent tracking and/or covert access" aspect.)

I'd like to know that when the current battery goes tits up, I can replace it. There are certainly enough units to support an after-market, if Apple does not want to service said market itself.

When it comes to final "recycling", frankly I don't see convenient disassembly being a significant factor. The item's probably going to be stripped for raw materials, regardless. Though having these easily segregate-able and as non- toxic as possible, once the case is cracked, would be nice.

P.S. Regarding repair, I forgot glass repair. Although I see that more as a matter of form factor. If you want Apple-sleek, you're going to get difficult mountings.

Again, though, not being able to pop the battery out of the back, does bother me. I suppose "sleek" might be considered to apply there, as well, although with its perhaps more workable metal surface, I wonder. Although, again, structural integrity and rigidity might well be compromised enough to put the unit, including the glass, at significantly increased risk.

I think I've had too much coffee...</comment>


Edward Bernays - <AUTHOR> http://wikipedia.org/wiki/Edward_Bernays

<comment><USER2> PR, especially deciphering it, and understanding how it works, should be one of the mandatory subjects every student should take alongside, science, math, and personal finance. There are "Logic", "Marketing" and "Critical Thinking" but those don't quite cut it. It needs to be something like "Influencing Public Mind" and it should be chock full of examples of propaganda campaigns, how they worked and effects they had.

I say this because it is one of the subjects that will have a direct impact on everyone's life. Every day on TV corporations, government officials, other governments, basically anyone who wields power and resources will vie for people's mind and support. And while doing that they will employ sometimes basic and sometimes sophisticated propaganda techniques. It can thought of a "practical Critical Thinking" or "Practical Logic". Propaganda determines who will be the next president, the next Congressperson, the next State Supreme Court judge.

Great work at a propaganda campaign is what put Obama in power. Ad Age didn't give him Marketing Campaign of the year in 2008 for nothing. He was ahead of Apple and Coke.

[http://adage.com/article/moy-2008/obama-wins-ad-age-s- market...](http://adage.com/article/moy-2008/obama-wins-ad-age-s-marketer- year/131810/)

<comment><USER3> A good Rhetoric program teaches what you're asking for (and much more), but I don't know how many schools have one at this point. Of those that do, certainly it isn't a mandatory subject. Outlines of the material are instead punted to English 1A-type classes, where there's no time to tackle them with any degree of rigor. It's a shame.

</comment></comment><comment><USER4> I used to think it an astonishing coincidence that Bernays was Freud's nephew. But then I learned that Bernays was involved in making Freud's reputation so high in the US while it lasted (a reputation which was odd in the extreme if you think of, say, Dale Carnegie as a native species of American popular psychology). So the two variables weren't independent; Bernays helped make Freud Freud in the first place.

<comment><USER5> Oddly enough, just last week I finally got around to watching the Adam Curtis documentary about him: [http://vimeo.com/67977038](http://vimeo.com/67977038)

<comment><USER6> I suggest you also check out Bernay's book propaganda. It's not an easy read (simply, because you have read through bullshit), but it's fairly important that people understand the media that targets them. Quick Google shows a freely available copy.

Here's an interesting quote from Bernay's Propaganda: "Different men rule us in the various departments of our lives. There may be one power behind the throne in politics, another in the manipulation of the Federal discount rate..." Chapter III

I find a lot of people complain about the gap between the rich and the poor, but they never take a second to think about the easily accessible and 0% - 1% interest rate loans that the rich enjoy from governments. Governments creating poverty?!? Nah :)</comment></comment></comment>


How undersea fiber gets laid in the ocean - <AUTHOR> http://www.quora.com/How-are-major-undersea-cables-laid-in-the-ocean

<comment><USER2> Very interesting. Hats off to the men and women who put the work in to make all of that possible.</comment>


Electric Vehicles often much worse for the environment than Petrol Vehicles - <AUTHOR> https://www.economist.com/news/science-and-technology/21636715-why-electric-car-may-be-much-dirtier-petrol-one-cleaner-what

<comment><USER2> This is a great example of how the media often confuses the complexities of environmental impact. Here's why:

1\. This study is limited to particulate matter pollution, not greenhouse gas emissions. Most readers nowadays associate "environmental impact" with climate change, so it's deceptive of the publisher to not specify that electric vehicles cause less greenhouse gas emissions overall than petroleum vehicles.

2\. The particulate matter pollution in this study is a solvable problem, even if you keep the coal plants. Equipment like bag houses and static precipitators are already installed on a lot of coal generators to remove particulate.

3\. We are currently in peak coal. Even China is starting to decrease the amount of coal generators that they are building. So the argument that we shouldn't switch to EVs because coal is dirty is pretty useless over the next few decades.

Conclusion: The Economist knowingly published an article meant to deceive the reader and discredit electric vehicles.

<comment><AUTHOR> I don't think you can label this article an EV hitjob.

You know everything that surfaces facts unfavorable to Tesla isn't some sort of conspiracy. This is good information to know.

</comment></comment><comment><USER3> The quoted study _"...assumes for all cars that present and future emission- control technologies will be more widely used in 2020, especially particulate filters which have a marked effect on cleaning diesel exhausts."_

Why wouldn't you assume similarly optimistic scenarios for large scale power generation. It's clearly easier to retrofit and regulate about a 100 power station to trap particulate matter etc. than assuming that millions of gasoline and diesel cars on the road will each individually have correctly functioning filters.

Also, a large number of EV's on the road means that any future power plants' improved cleaner nature instantly affects the pollution impact of all the cars on the road.

</comment><comment><USER4> Keep in mind that electric vehicles will get cleaner over time (as more electricity is generated from renewable resources), whereas gas-powered cars will not.

<comment><USER5> Gas-powered cars have been getting cleaner on a steady basis: more efficient engines, lighter materials, etc. improve gas mileage and thus lower emissions.

It's probably a lot easier to incrementally improve gas-powered automotive technology than it is to replace the large percentage of electric capacity in the U.S. that comes from coal-fired power plants. According to Wikipedia, this was about 50% of the nation's capacity as of 2008: 2133 TWh from coal out of a total of 4369 TWh.[1] That amount of industrial infrastructure is not likely to be completely replaced any time soon.

[1] [https://en.wikipedia.org/wiki/Electricity_generation#List_of...](https://en.wikipedia.org/wiki/Electricity_generation#List_of_countries_with_source_of_electricity_2008)

<comment><USER4> What I meant is that a particular gas powered car cannot get more efficient after manufacture, while a particular electric vehicle can.</comment></comment></comment>


Tumult Hype 1.6's New Features - now with CSS Filter Effects - <AUTHOR> http://tumult.com/hype/whats-new/1.6/

<comment><USER2> What techniques did you use to keep the runtime file size small?

<comment><USER3> Blood, sweat, and tears :). It was part policy, I wanted to keep HYPE.js below 40 KB which is important to some markets (advertisers) and didn't want to slow down the web.

My best recommendation is to always use Google Closure Compiler. By default it doesn't work much better than other minifiers, but there's an --compilation_level ADVANCED_OPTIMIZATIONS flag that can have a dramatic result. To use this, it is likely you'll have to structure your code differently and make sure exports work correctly, but we were able to take reduce a further 50% with this one change. In this release, we also changed a few other flags (in the code itself; there are no command line settings) which we thought would be advantageous to our file and userbase.

We also do a lot of string replacements. I built a simple templating system that glues files together and also can replace descriptive, programmer- friendly, key names with single letter variables. Strings can weigh a lot. In this release in particular, I also looked at the minified JS and examined which strings could be partially combined. For example, "rotateY(0deg)" and "rotateY(10deg)" could both have the "rotateY(" extracted and save some bytes. It matters less if you're using gzip compression, but we can't guarantee that among our users. The key is to make sure this doesn't make the code hard to read or edit in the future, and only tackle the most significant changes.

Not quite related to the HYPE.js runtime, but we also focused on reducing the entire export data size, including the JSON animation info. We again used a lot of string substitution -- "startTime" and "duration" in code simply become "s" and "d". With JSON, depending on the key name you might also not need quotes around them, so for an animation object it could be {s:1.2,d:3}. The quote characters can add up! There's lot of other things we did such as not exporting the common/default values since we could figure this out if the key does not exist, and being smart about element id's so they would not be some long UUID.</comment></comment>


Visual Noises – Noise Algorithms Visualised in 1D and 2D - <AUTHOR> https://ramesaliyev.com/visual-noises/ <comment><USER2> Is it possible to get actual audio from this?

<comment><AUTHOR> honestly i think its possible but i dont know how.</comment></comment>


The most popular product of all time - <AUTHOR> http://www.asymco.com/2016/07/28/most-popular-product-of-all-time/ <comment><USER2> If "iPhone" is a single product, I bet that one could find a group of Nokia phones similar to each other that sold a billion pieces. Single Nokia models sold 250 million alone.

</comment><comment><USER3> The author is cherry-picking data to fit the story he wanted. There is no rhyme or reason to the items/products he chose. Comparing all iphone iterations to singular items doesn't make sense.

</comment><comment><USER4> Coke? McDonalds burgers? KFC dinners? The Bible? Having all of these sold in the tens or hundreds of billions?

<comment><USER5> I feel like the most popular product of _all time_ might have something to do with the, ahem, world's oldest profession...

</comment></comment><comment><USER6> How about YKK zips. They sell 7 billion a year. Not bad for a branded & non- edible product.

</comment><comment><USER7> Comments like that second to last paragraph are why people compare apple to cults. Could you be less self aware?

</comment><comment><USER8> This is why people laugh about apple fanboys. They're living in a delusion.</comment>


Ask HN: How developer friendly is APIs with cursor based pagination? - <AUTHOR> I see companies like Shopify deprecate their existing pagination in favor of cursor based pagination. As a developer, I always hated cursor based pagination because it restricts me to serially move from one page to another. Is this developer friendly? Why do companies migrate to cursor based pagination? <comment><USER2> My company is actually going through the transition to cursor/keyset pagination. As a SaaS company starts having to support larger customers, they will likely have to go through this exercise. The reason is because most pagination is usually implemented with LIMIT/OFFSET in a SQL query. Using OFFSET becomes very expensive for pagination queries because the query has gotta do a full scan till it reaches the desired offset.

Imagine a table with a 1 million rows, and you return pages in 100 item chunks. To get page 500, using the OFFSET method, you would have to scan through 100*499 records before you even get to the first record you care about.

This can lead to all sorts of cascading problems because slow queries can cause back pressure build up from other queries queuing up. So in order to scale, services push the complexity out to the client. Conceivably, you can cache the indices on the client side, and abstract a page-number based paginator on top of it.

Here's an article talking through the issue: [https://www.moesif.com/blog/technical/api-design/REST-API- De...](https://www.moesif.com/blog/technical/api-design/REST-API-Design- Filtering-Sorting-and-Pagination/#)

<comment><AUTHOR> Sorry! I don't think this is developer friendly. You are just pushing your problem to the developers. Do you really think developers will be able to make it faster than your implementation? Take your example of caching indices. Do I cache for each search filter and where do I store them? And again, do I serially execute all pages to cache cursors to build pagination on top of them?

</comment></comment><comment><USER3> I run a company that integrates data from hundreds of sources, including Shopify. There are only about 5 simple mistakes that most data extraction APIs mess up, and this is one of them.

Very few APIs that implement pagination work optimally. If I query for all orders whose updated_at is greater than 2019-10-23 07:00:00, and paginate through the results, there's a good chance that any record updated before my pagination completes will be missed by the paginated queries. If I "checkpoint" the greatest updated_at retrieved in the most recent query, I will likely miss the records updated after my query started but before my query completed. Leaving me to use the start time that I began retrieving data as my new checkpoint.

With a cursor based pagination system, there is at least a chance the service that I'm calling to is dynamically adjusting their underlying query to account for this scenario.

Out of curiosity, what are the scenarios when you want to jump between pages (e.g. not iterate over the pages in a serial fashion)?

<comment><AUTHOR> Can you please list the other 4 mistakes APIs make?

<comment><USER3> Of course! I'm actively trying to standardize data extraction APIs, so I'm always happy to spread the good word. :)

1\. The API should expose parameters for incrementally retrieving data by, at the very least, the date the record was created, the date the record was updated, and by a monotonic increasing value. The API should also expose parameters for sorting data by, again, at least the three fields mentioned earlier. These parameters should be consistent across _every_ endpoint.

2\. Every record in the system should have a unique identifier. For instance, in Shopify, each record in order.tax_lines should have a unique identifier. Since they do not, you have to create a composite key of the order_id and its index, or take a hash from some set of values in the record.

3\. Every entity in the system should be retrievable by the parameters exposed in rule #1. To get nested entities, many APIs require you fetch the "parent" entity, and then make a separate API call for each record to get child entity. For instance /customers might return 200 records, and then for each customer, you have to call /customer/{{customer_id}}/payment_sources. So you now have to make 201 requests to get all customers' payment_sources, when there should just be a /customer_payment_sources endpoint.

4\. The API should implement a leaky bucket algorithm with known and documented rules, allowing for the caller to configure an exponential backoff that is optimized for that API. The API should have a maximum limit of time (e.g. 5 minutes) after which no requests are made that the API completely resets the bucket.

Smaller issues, but still annoying:

* represent _all_ timestamps in a common format (I think yyyy-MM-dd HH:mm:ss is best. I do not like unix timestamps since you cannot easily programmatically tell if it is a timestamp or just a large integer).

* return results in JSON (still lots of XML being tossed around)

* keep a change log that can be programmatically checked. We spend hours a week checking APIs to see if things have changed.

One last thought: Webhooks are becoming standard for many APIs, which is great. However, Webhooks only expose data going forward. Many businesses build of years of valuable in the origin system that cannot be retreived without a proper extraction API. Those should be built first, then webhooks (imo).

We've built some pretty awesome code to allow us to retrieve data from virtually anywhere, but if companies would just follow the rules above, it would be 10-100x easier for everybody involved.

<comment><AUTHOR> This is great! You should create an API usability guide!

On webhooks, how does the caller (like Shopify) care if the transaction is completed without errors? Is there any message queue built specifically for webhooks?

<comment><USER3> The bullet points I listed were quick summaries of a larger internal wiki that we are building and working directly with data providers to implement. We'll definitely slim it down to a nice guide for developers to reference when beginning the journey of building one of these APIs.

> On webhooks, how does the caller (like Shopify) care if the transaction is > completed without errors?

Most services have rules for the number of times they will attempt to execute any single request before stopping. Further, they typically have rules for how many times they will execute _any_ request before finally unregistering the webhook. Some will queue the events up and try for days, others will unregister the webhook after 5 failed attempts in a window.

</comment></comment></comment></comment></comment><comment><USER4> Because abstraction of pages is to expensive to maintain for larger datasets, and very confusing for data that is dynamically generated.

<comment><AUTHOR> I can understand it is expensive to maintain. But, how does cursors solve dynamically generated data? In fact, executing serially increases the chances on missing lot more dynamic data rather than getting all pages at once.

<comment><USER4> You send a query. Service determines the is more than one page of data and last id from first page is X. Next request checks for data matching query and id>X. All it needs to do is find first page of results and check if there is a chance for next page. This means very little work needs to be done, and if some entries will be added or removed between requests, its not a problem.

If you go to second page (id>X), and back (id<X) you may get different results, that's how changes are handled. Assuming you have index on id (or whatever parameters are used), this guarantees predictable response times.

A cursor is usually just association of few parameters(query parameters, sort order and last id).

With paginations you need to: \- figure out how many results you have, which may require scanning all of them (very expensive) \- handle case where client requested page one and then jumped to page 10000, which means you have to scan a lot of data to figure out what should be on that page (if it exists) \- figure out what to do when client requests page 1, page2, page 1, while data changed. Do you cache results? (expensive, and leads to showing stale data), show different data (confusing for user, where is the thing I was just looking at gone? why things jump between pages? why last record from page one reappears on page 2?)

</comment></comment></comment><comment><USER5> I think cursors make sense because they ensure the data doesn't change unexpectedly under you while you're paginating.</comment>


Apple and I.B.M. Aren't All That Different - <AUTHOR> http://www.nytimes.com/2010/11/07/business/07unboxed.html?src=twr <comment><USER2> This reads like something written word for word by IBM PR. It is also woefully misinformed. For instance:

 _The goal . . . was to build a profitable business with a lot of recurring revenue, based on service contracts and software licenses. . . . Over the last 10 years, Apple has embraced much of the same strategy — in broad strokes._

Even in broad strokes Apple's strategy is completely different. Apple makes money in selling vertically integrated products directly to consumers. The vast majority of Apple's income comes from when someone pays for the gadget (hardware) at purchase time. IBM relies heavily on support contracts and consulting work continued income, or as this journalist puts it, "recurring revenue."

 _At I.B.M., the inspiration engine is more subtle and conceptual. In late 2008, Mr. Palmisano and his team settled on a theme: the deployment of scientific research and technology to tackle big challenges for business and society . . . . And the company has spent hundreds of millions of dollars on its "Smarter Planet" advertising campaign._

A marketing campaign is a sign of IBMs "subtle and conceptual" inspiration engine? To me IBM's campaign represents the worst of contentless corporate advertising. No actual products named, no concrete facts, just feel-good "we're smart and serious" messaging. A lot like those wonderful full page ads in magazines by Shell or BP saying "don't worry, we really love renewable energy." Apple's advertising campaigns always center around actual products, what they do, what they stand for, why you want them. Once again, a far cry from "a series of conversations for a smarter planet."

</comment><comment><USER3> _Apple, by contrast, focuses only on product innovation, not scientific invention._

I would have to say that this is because the rate of innovation is so terrific, anything 5 years behind the innovation curve is only just beginning to become stable enough for mass production. A good example is the unibody process Apple rolled out. Sure, it's not exactly the newest technique to build something, but it was pretty new to use it to build consumer laptops.

<comment><USER4> Also I think that Apple's focus is really just the smarter thing to do. Basic R&D rarely ever seems to benefit those doing the research.

And as you note, in the computer industry cutting edge products are effectively cutting edge research projects. This isn't like the hammer industry where you can ship a 20 year old hammer design. And this shows at academic conferences where industry presentations on shipping products are often the best attended talks.

<comment><USER5> It depends on how basic you mean, but Intel has arguably made a successful career out of doing basic R&D. They invent new fab processes and so on, rather than just building chips out of off-the-shelf technology, which is one of their main competitive edges.

<comment><USER4> But fab processes are just about their core business. You can't build chips out of OTS technology. And the only way to do 22nm chips requires research to do it. But it is focused research, in the same way Apple focuses.

Unfocused research is like the stuff IBM does for teleportation. Very cool, but will not make them any money. And frankly is probably better suited to be done in academia or by the gov't.

</comment></comment></comment></comment><comment><USER6> They can't be more different. IBM products suck (especially their software). Apple's don't.

</comment><comment><USER7> IBM employs more Attorneys than Engineers.

<comment><USER8> Really? Citation?

<comment><USER7> I read it in <http://isbn.nu/9780375503665></comment></comment></comment>


Greatest Java apps - <AUTHOR> https://blogs.oracle.com/javamagazine/the-top-25-greatest-java-apps-ever-written <comment><USER2> To this list we could also add Cassandra, ANTLR, Spring Framework, JUnit, Jetty, Tomcat, Android etc. The list continues. The beauty of Java is not Java/Programming language - but JVM. It inspired people to make other languages such as Scala or Kotlin.

<comment><USER3> I don't know if I'd celebrate Spring... and Oracle would rather Android use "real" Java, not Dalvik.

The JVM was nice at the time, but I feel that languages like Scalia and Kotlin exist because Java was too conservative - and many of Kotlin's great features had to be implemented using hacks and tricks to work-around the JVM's now- primitive type-system. Also note that Kotlin can now target other platforms besides the JVM.

I think we can all agree the JVM is lagging behind the CLR, and the CLR is behind where we should be (when looking at the things that Clang is capable of)

<comment><USER4> That other popular Java-platform languages exist indeed shows that the Java language is too conservative _for some_ , but that 90% use the Java language shows that its design is in line with what most people want.

And the CLR is about, oh, ten-fifteen years behind OpenJDK in compilation, GC and low-overhead deep profiling and observability. OpenJDK's C2 compiler is pretty much on par with clang in terms of optimisation [1] -- ahead on some, behind on others -- and in terms of sheer innovation and potential, its Graal compiler is probably the biggest breakthrough in compilation of the decade.

[1]: [https://youtu.be/0yrBuPiGk8I](https://youtu.be/0yrBuPiGk8I)

<comment><USER3> I know the CLR's runtime performance has room for improvement- but I'm referring to the CLR's capabilities and "language-enabling"-feature-set.

<comment><USER4> Its "language-enabling" feature set sucks. Reified generics for reference types force C#'s variance model on any CLR language that wants good code and data interop, and there is no portable good lightweight concurrency primitive. Sure Java is missing some important stuff like value types and tail call elimination (I don't think the CLR has the latter, either), both being addressed, but the CLR suffers from some early decisions that are nearly impossible to fix even if MS did show it had the inclination to fix them. Overall, Java is a more compelling compilation target than .NET, and Truffle is making it so much more so.

</comment></comment></comment></comment></comment><comment><USER5> In praise of Lucene, it's stated that

> _Wikipedia replaced the Lucene engine with Elasticsearch, a distributed, > REST-enabled search engine also written in Java_

Elasticsearch is still using Lucene as core search engine though, so all that was replaced is the custom job control and wrapping around Lucene (SOLR?) by the one that Elasticsearch provides I guess.

<comment><USER6> I gave up on lucene and solr on my dovecot server because of memory usage and use [https://github.com/grosjo/fts-xapian](https://github.com/grosjo/fts- xapian) instead

<comment><USER7> You may also be interested in [https://github.com/tantivy- search/tantivy](https://github.com/tantivy-search/tantivy)

</comment></comment></comment><comment><USER8> I'd nominate Bitwig for this. The UI is written in Java and is one of the nicest DAW interfaces around. The stuff they've been doing in the modular grid lately is particularly impressive. The fact that it's in Java means it works great on Linux too.

[https://www.bitwig.com/en/home.html](https://www.bitwig.com/en/home.html)

<comment><USER9> Does it use JavaFx for its UI? If not do you know what library/framework they use?

<comment><USER10> I could be wrong, but at first glance, it looks like Eclipse's SWT.

<comment><USER11> Looks like JavaFX or Swing to me-- SWT doesn't really do themed widgets (everything looks like the platform's native controls).

</comment></comment></comment></comment><comment><USER12> Lucene? Android :) Tomcat? Maven?

The Minecraft coding community is amazing. What they get done without documentation is stunning.

<comment><USER13> It's funny how Java is not considered a good language for games... yet Java managed to snag one of the most important games of the decade in the end

<comment><USER14> It's really not great. Doable, but not great. That's why they moved to a classic C++ codebase instead on other platforms.

On a side note, I worked on Jpcsp, a PSP emulator in Java. Great for research and doing refactoring in the code quickly, not great for performance, even with a JIT. We wrote later PPSSPP in C++, performance was there quite easily.

<comment><USER15> > It's really not great.

Could you provide some more information on what it was not great?

<comment><USER16> For games, probably the worst thing about Java, especially if you're still on Java 8, is the garbage collector. Its pause times can be brutal. This won't be noticeable for games that aren't too hard on memory, or games where framerate doesn't really matter, but it was definitely noticeable (and annoying) in earlier versions of Minecraft.

On Java 11 or later, I wouldn't expect it to be nearly such a big deal. At least not relative to some other issues. For example, it being a reflective language means that there's a fair amount of memory overhead that's really only there to support features that aren't so useful in games development. Also, there's a fair bit of overhead, in terms of both CPU and memory churn, to making calls into native libraries from Java. Nowadays, neither of those is a big deal for a large swathe of games, either, so I don't think one can really make a blanket statement that Java is not great for games development.

<comment><USER17> The "Java is bad for games" mindset is in part just historical bias. Performance and GC are thrown around as shallow excuses for comparing idiomatic Java with game design C++. Actually applying methods to reduce memory pressure like using arenas, and accepting vectors to mutate instead of creating new ones solve most of the GC penalty you paid for not having to think about it while prototyping. Large servers in java minecraft patch the server to do just that, and they operate well. I think the biggest barrier for Java in Games is the stigma and lack of resources relative to C++.

<comment><USER18> Yeah, of course Java can make games. Hell, even some high frequency trading shops are using Java. But the amount of effort you have to put in to twist a language and ecosystem that is practically designed around frequent allocation is just not worth it. Like, if you're writing zero allocation Scala or Java you're going to be writing C/C++ in the first place.

Might as well just use C/C++ instead of fighting the ecosystem tooth and nail.

<comment><USER15> > But the amount of effort you have to put in to twist a language and > ecosystem that is practically designed around frequent allocation is just > not worth it.

Do you an example in mind? Unity3D uses C# which is a garbage collected language.

<comment><USER18> And as anyone who as played Unity games would attest to, the performance is terrible. There's a reason why UE is much more popular than Unity for triple-A games.

Take Escape From Tarkov, an FPS that tries to be a AAA game and uses Unity. The performance problems that game has is frankly staggering.

<comment><USER15> But the shear volume of successful games built by Unity suggests that the extra work comes with a GC'ed language is worth it.

<comment><USER18> I mean, I don't think anyone is saying languages with GC are bad for a wide genre of games. They just are inappropriate for the most cutting edge, performance intensive games.

Unity is a lot easier to get started with than UE4, so I understand the popularity. But for some games, the player can really tell how inappropriate the engine is. You can feel the GC churning away: poor performance, high dispersion of fps, frequent stuttering, etc.

While any game using any engine could have these problems, it's especially prominent in unity games.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> So what's funny to me is how Oracle here is bending over backwards not to give Google credit for pretty much anything. It's actually hilarious.

I laughed at Eclipse Collections. What? No mention of Guava, even though it's used way more. It's practically part of Oracle's copyrighted Java API.

but of course the most hilarious omission is, of course, Android. And you can say "blah blah Dalvik VM blah blah" but... it's Java.

And I have to say a word about IntelliJ (and Jetbrains IDEs more generally). They're the standard by which I judge every other IDE. To put it another way, they're the reason every other IDE makes me sad. Even VS Code.

<comment><USER20> I have used Java on and off since 1998, am yet to ever touch Guava.

Android Java is Google's J++, with its half baked Java 8 compatibility, and deserves the same treatment that J++ once had.

<comment><USER21> Android Java != Java so no credit needed to be given. Though Google does make Java contributions in other libraries and projects which is very welcome by the community!

<comment><USER20> Their wrongdoings with Android to the Java eco-system are more harmful than whatever contributions they might have done.

</comment></comment></comment></comment><comment><USER22> Sort of mystifying that ByteBuddy (a library) is included while Spring framework is not. I realize that some people point to the edges of the Spring ecosystem as proof that it is low-quality, but it's hard to argue against the framework itself being great.

Edit: To clarify, I also don't agree with 'proof' of Spring being 'low quality'. In my experience most who criticize Spring don't understand that it is a loosely coupled collection of things implemented on top of IoC/AOP, and are frustrated when they are forced to diagnose things that go wrong. From the beginning, Spring moved fast because it wasn't bogged down in committee, and it covers huge portions of software development. Quality does vary between the value add sub-projects, but it's amazing what the Spring community has done with IoC/AOP.

<comment><USER23> Yes, Spring is good, and in general there's been a lot of innovation started in Java and spread elsewhere. The whole "Dependency Injection" idea started in Java, and a lot more stuff started there too, or at least was popularized AFAIK. For example, pattern languages themselves. But some great libraries like JodaTime came from there, as did Doug Lea's very nice rendering of better concurrency primitives - and both of these ultimately got into the core library itself.

<comment><USER24> Wasn't the "Gang of Four" book written entirely in C++?

<comment><USER23> Yes; that's why I added the caveat "or popularized".

</comment></comment></comment></comment><comment><USER9> What are the odds that a language known for its use in boring enterprise software is the language used to create the most popular video game in history (Minecraft). If C++ was a person it would be mad/salty at this fact.

<comment><USER25> And yet people here on HN have told me in recent threads, when discussing Java, that:

\- Java is not suitable for enterprise software (yes! Some people here actually believe that).

\- Java is not a good general purpose language (but Minecraft was written in Java. Or even better, the list of very varied apps from this article shows it's indeed a good general purpose language).

What these people actually mean is "I don't like Java". Because Java hasn't been "hip" for years, this makes people claim all sorts of absurd things about it. Things that directly contradict known history.

<comment><USER26> The performance of the Java version of Minecraft is so terrible that the entire game had to be rewritten to be played on consoles.

Minecraft was not popular because of Java, Minecraft was popular despite Java.

<comment><USER25> That's highly debatable, not a point of fact.

And the rest of the apps from the article? Are they also successful "despite Java"? At which point are you willing to admit that maybe Java was suitable for general purpose programming? Which amount of evidence would convince you?

<comment><USER26> What's debatable, that the Java version of Minecraft had terrible performance or that the console ports are not written in Java?

About your other question: I only mentioned Minecraft.

<comment><USER27> The point that's debatable is the point you led with, that Minecraft "had" to be re-written because of poor performance.

Not that it was.

</comment></comment></comment></comment></comment></comment><comment><USER28> Today I learned that almost every IDE I have ever used is written in Java.

<comment><USER18> And now you understand why none of them work very well!

<comment><USER29> I laughed, but PHP Storm and IDEA are very good tools imo.

Netbeans was quite good when I used it as well, although clunkier.

They can be very memory hungry though (of course).

</comment></comment></comment><comment><USER30> The list generates some mixed feelings - #16 for example, where the inventor/maintainer got driven away by Oracle's acquisition of Sun and forked Jenkins from Hudson.

<comment><USER31> It's obviously and understandably a bit biased. There are a few omissions:

No mention of anything mobile even though there are a few billion phones out there running Android with a huge app ecosystem of Java and Kotlin based stuff. Of course, that's a non Oracle flavor of Java as Sun sort of lost the plot on the J2ME front (another omission). J2ME was of course more successful than applets ever were until Android happened.

Listing Eclipse and Netbeans (1 bullet) before Intellij (arguably more popular than those two combined) is also a bit weird. In any case, Intellij has largely switched to Kotlin, which is of course a language Jetbrains, the creator of that IDE helped create to replace Java. So nice that they still get a mention. But really, that whole ecosystem is now powered by Kotlin more than Java.

Spring/Spring-boot is another painful one for Oracle because it largely sidelined J2EE related products and standardization. Tomcat and Jetty sort of survive as low level components you can optionally use to run that. The Spring ecosystem is shifting to Kotlin rapidly as well. As is Android, of course.

So, it's understandable why Oracle prefers to not talk about those because these are all examples of where Java was successful but Oracle/Sun wasn't.

<comment><USER20> I look forward to JetBrains replacing the JVM and its standard library, and GraalVM in the process, given that Kotlin is so good.

</comment></comment></comment><comment><USER32> Not really "apps", but Java features prominently in the backends of many major tech companies. Off the top of my head, I believe it's the main server-side language at Amazon, and one of many prominent server-side languages at Google, Netflix, Apple and Uber.

<comment><USER21> What do you mean by "apps" then? Ofcourse any modern app will have mix of technologies, I think it's fair to call it "app" \- perhaps an Enterprise Java App or Backend Java App to be exact.

<comment><USER32> When I think of an application, I think of something used reasonably directly by an end-user. From the linked article, things like IntelliJ IDEA, the Maestro Mars Rover controller, Minecraft, Hadoop, etc. Admittedly, this is just my personal definition, "app" is a pretty loose term.

For, say, the "Google Sheets web app", I'd say the entire piece of technology, frontend and all backend services, combine together to provide an application. But if the Google Sheets web frontend depends on, say, 20 different backend services, I wouldn't say that any one of those services is an app on its own. Each service makes up a part of the backend of one-to-many apps. And, from what I know of Google's tech stack, different services might be written in different languages - primarily Java, C++, Python or Go.

</comment></comment></comment><comment><USER33> I like to add clojure it is written in Java, so I guess it counts.

But seriously what do you like about Java and why did you choose to work with it? What problem does it solve for you? I'm curious! (don't comment when you don't like it)

<comment><USER21> Established best practices of good software engineering, vast selection of libraries for pretty much anything, high performance code, cross platform availability, scalability. Pretty much anything you need to build a solid backend exists here and not to mention the large Java dev community.

</comment></comment><comment><USER34> H2 database is pretty awesome. Such a pleasure to use vs SQLite and even vs some large-scale RDBMSs.

<comment><USER35> Second that, I used H2 as the basis for a time reporting/invoicing system that has been runnin without issues for 7 years now.

As far as SQL databases go, definitely my best experience, it just works.

</comment></comment><comment><USER36> I suspect the greatest java apps are the ones that can't be written about. The ones that run in a data center, that are a tremenous advantage in the market to the companies that run them. These are so important to the app owners, that they don't want others to know about them.

</comment><comment><USER37> I'd have to give Tomcat the #1 spot for killing off the worst parts of J2EE.

<comment><USER38> OMG. I've set up Confluence servers and Tomcat was the most nightmarish part of that experience. The idea that Tomcat was an actual _improvement_ on something sends shudders up my spine.

<comment><USER37> You would have had to lived through a full blown J2EE app on Websphere/Weblogic/JBoss to appreciate it.

<comment><USER39> OMG yes. So many times all you needed was what Tomcat delivered, but had to go through the convoluted and slow config of WebSphere. WebLogic was better but that's damning with faint praise.

</comment></comment></comment></comment><comment><USER40> No mention of Runescape, Classic, 2, and OSRS? I suppose "applets" covers it but I think it needs its own mention.

<comment><USER41> That is exactly what comes to mind for me when I think of "Java games". Absolute classics

</comment></comment><comment><USER42> I'm not surprised that Vuze (or its clone/successor BiglyBT) is not there. But it's one of the oldest desktop torrent clients, and is still being developed.

</comment><comment><USER43> I find it a little weird to mix applications and libraries in the same list. But if libraries are considered, I would definitely nominate Hibernate: the most powerful ORM out there accross all languages, and it's been a must grab for any of my projects for almost 2 decades.

<comment><USER44> I haven't been much of an ORM userm but what makes it so special? Anything comparable in Javascript or Python land?

</comment></comment><comment><USER45> They might not like being associated with it, but JDownloader is amazing Java software. It's fast, looks good, integrates with all desktop environments I've used and still works impeccably.

I wish Java had a solution for web+platform UIs. Webapps that then run in Electron is by far the most annoying thing I've had to deal with as a user.

</comment><comment><USER46> I was surprised how much I enjoyed reading that, in a memory lane sort of way.

I haven't used Java in a long while and I haven't updated my book "Practical Artificial Intelligence Programming With Java" in many years. I decided to rewrite rather than stop distributing the book. I started the rewrite about three weeks ago. First step was tossing out about 1/3 of the material, stressing machine learning, adding probabilistic programming, and updating the semantic web material.

After taking a whole day getting my head back into coding in Java, I am actually enjoying it. I still like Common Lisp and Haskell a lot more.

</comment><comment><USER47> After reading this, I think I need to learn Eclipse Collection and Micronaut.

<comment><USER48> There's a competition between Micronaut vs Quarkus also. Pls have a look

<comment><USER49> Helidon follows behind, but yes I agree that Micronaut and Quarkus are probably front-runners for this space.

</comment></comment></comment><comment><USER50> I'm planning to get a Masters degree in CS, and it bothers me that the program I chose uses Java as the primary language. They have an awesome theoretical curriculum, but it looks like I'll have to use Java to complete all the practical tasks.

I'm a Node/React web developer, I want to build a SaaS startup, and I'm not really interested in writing Java apps, I doubt I'll ever want to use it for something.

Do you guys know if Java would be really painful to learn? It's hard to get motivated about learning a thing I'll probably never use in practice.

<comment><USER22> You will probably learn many languages in your career. Most of the understanding you'll gain will apply across languages, so I wouldn't worry about it being a waste of time.

Learning Java should force you to understand object oriented design, as it is hard to do anything well in Java without it (though some try). While there are signs that OO's domination is nearing an end, there are reams of code out there that require a good understanding of it.

</comment></comment><comment><USER51> >Some credit Minecraft's early success to the fact that players could play in a web browser via Java applets rather than having to download and install the game.

I never knew this was possible

<comment><USER52> It was possible with the early, finite-world-creative-only "Minecraft Classic", but as long as I remember (I started playing mid-Alpha, a few months before the Nether was added) the game was played through the launcher.

</comment></comment><comment><USER53> I say this as a Java developer, but I hate UIs written in Java. Native UIs are always superior. IntelliJ comes to mind. I used it for many years, and it always felt "different". There were weird inconsistencies in rendering, focus and behavior that were annoying. Same with NetBeans.

On the other hand, I think server side Java is still great.

</comment><comment><USER54> It's great to see our team's tool, Deep Space Trajectory Explorer, come in at #2! DSTE is a custom software tool that's being used by NASA Johnson Space Center to design/visualize complex orbits for upcoming missions to send astronauts to the Moon in 2024+!

</comment><comment><USER55> Jenkins the greatest Java app ever written .... hmm

</comment><comment><USER56> Wasn't Google docs written using GWT?

<comment><USER57> Originally no, but it was written with Closure Compiler which is a Java app.

These days Google Docs, Gmail, Spreadsheets, Hangouts, etc are hybrid apps that contain a core written in Java and was transpiled with GWT but now use J2CL.

</comment></comment><comment><USER58> I use Pentaho Data Integration every other week, it's quite nice for ETL.

</comment><comment><USER59> For reference, this is what that page shows when opened with uBlock Origin + uMatrix: [https://imgur.com/a/yd9OAPB](https://imgur.com/a/yd9OAPB)

This might be confirmation bias, but I actually think it conveys pretty much what it should. :)

</comment><comment><USER60> Also Azureus, featuring legendary laggy java gui.

</comment><comment><USER61> No mention of Android? lol butt hurt

<comment><USER62> I guess it´s because Android is not mainly consisting of Java code, unlike for example Minecraft. Correct me if I´m wrong, but isn´t Android made with mostly C and C++?

<comment><USER63> Kernel (Linux) and android runtime (previously dalvik vm) plus some native libraries are C(++). The rest of the stack running in the user space is Java though (with support for native code).

<comment><USER64> They are slowly moving to Dart, but the lions share is still Java. My guess is that they are trying to get away from the reach of Oracle lawyers.

<comment><USER20> Tell that to the Android team busy replicating Flutter in Kotlin.

<comment><USER64> Pardon my faux pax. The point was that the move is away from Java, whether Dart or Kotlin.

<comment><USER20> Waiting for them to rewrite Android Studio in Kotlin and the complete Android infrastructure that depends on OpenJDK for the emulator and AOSP builds.

<comment><USER65> [https://www.jetbrains.org/intellij/sdk/docs/intro/intellij_p...](https://www.jetbrains.org/intellij/sdk/docs/intro/intellij_platform.html)

> The IntelliJ Platform is a JVM application, written mostly in Java and > Kotlin

Pretty sure Kotlin was birthed to address issues they ran into while developing IntelliJ

Android Studio is built on Intellij.

<comment><USER20> Still depends on JVM and Java, if Kotlin is so good they can certainly reboot their eco-system using Kotlin/Native.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER66> So not impressed. Still waiting for, "write once, run anywhere" to actually work.

<comment><USER67> I worked on a Java desktop app, that had a highly complex UI written in Swing, for ~14 years. We only officially targeted Windows as a platform. For a few years I switched to a Linux development machine. The only code change required was for our third party license dongle - to reference the correct native library needed for machine fingerprinting. We also ran it on another developers Mac just to see if we could - again we only had to comment out the licensing code and it works flawlessly.

So from that experience I would say Java definitely lived up to Write Once Run Everywhere. FWIW we used the Nimbus Look and Feel. Other LAFs may not have had as much polish applied.</comment></comment>