The Best Way to Organize a Lifetime of Photos - <AUTHOR> http://www.wsj.com/articles/the-best-way-to-organize-a-lifetime-of-photos-1429637857

<comment><USER3> Tangentially related, I have to give a shout out to Chris Marquardt's "1000 Pics 1 Hour" Lightroom workflow: [https://shop.chrismarquardt.com/bookshop/product/1-hour-1000...](https://shop.chrismarquardt.com/bookshop/product/1-hour-1000-pics- supercharge-your-lightroom-workflow/). Simple but effective way of dealing with the massive volume of images we capture with digital cameras, and reducing your photos to the real keepers.

It's worth paying for the e-book as he goes into some interesting points, but in a nutshell the core concept is going through your imported photos in three passes: first, quickly pick all the ones that might have some potential merit (e.g. they are in focus and of something somewhat interesting), then go back through the picked ones and quickly rate them from 1-3 stars (1 being "has documentary value", 3 being "potentially a great photo), then take the 3 star ones and spend a bit of time retouching them if needed and giving them 4 or 5 stars if they are really special.

The end result is that you can quickly get down to keeping maybe one in ten photos from a shoot - it makes the whole process feel a lot more manageable and opening Lightroom less scary! Plus, it reduces the amount of photos we store so you need to worry less about the capacity of your cloud solution ;)

<comment><USER4> > The end result is that you can quickly get down to keeping maybe one in ten > photos from a shoot

Are you a photographer? I'd love to be having that much success, if I end up with three good photos out of 500, I call it a good day.

<comment><USER5> I read a quote from Ansel Adams to the effect that if he got 10 good pictures in a year then that was really good year. So 3-4 good photos in a day and your a third of the way to beating what Ansel Adams could to in a year :)

Basically everybody has different goals and ambitions with their photography and comparing how many 'good' pictures you get is pointless since everybody defines 'good' so very differently.

<comment><USER6> The rate at which we can create photos nowadays is much, much higher than it was back then (due to the equipment we're using, availability of "gear", etc). It would make sense that a skilled photographer today could produce quality photos at a faster rate.

</comment></comment></comment></comment><comment><USER7> Alas, I think there is no "best way" right now. All solutions fall short. And the problem is not just with library management (although that's bad, too), but even with sharing photos with your family.

For a couple of years I've been paying SmugMug to host my galleries, but recently finally got annoyed: they are great for pro photographers (who sell photos), but their goals are not aligned with mine.

What I need is fairly simple:

* online site, available at a specific (ONE) URL, that my entire family can bookmark (ONCE),

* login/password required to enter, and I want multiple login/passwords,

* HTTPS (duh),

* no borg-minds harvesting my photos for advertising data, or doing face recognition,

* good image quality, fast and responsive, both on mobile and desktop,

* single gallery index, automatically ordered by date,

* gallery date ranges extracted automatically from photos,

* easy adding of new galleries, preferably just by uploading a directory with a bunch of images exported from Aperture/Lightroom/Photos/Whatever,

* simple text-based search that finds galleries.

Google Picasa, Flickr, SmugMug, whatever you pick — they all fail at this simple task (for various reasons). And some people even use Facebook to share images with family (sigh).

I got so annoyed that I finally wrote my own solution. Which works. Costs me 6EUR/month for a Hetzner.de virtual server, but I can finally have all of the above "features" without any extra annoyance. Plus I get significantly better image quality than any other solution I've seen (mozjpeg kicks ass).

And I don't depend on anyone, in particular on any company's whims or "strategic cutbacks", nor am I "the product being sold".

I find it amazing that it's 2015 and I'm writing software that manages private online photo galleries. I think it doesn't speak well of the current business/tech landscape.

(Incidentally, software to manage your photo collection is a whole another story. After Apple screwed me over with Aperture I am thinking hard about what to do about my photo archives.)

<comment><USER8> Hey there, CEO & Chief Geek at SmugMug here. Seems like we do all of those things with the exception of always-on-HTTPS (which we're actively working on as I type this).

You sound like exactly our target customer, so if you've got some time, I'd love to understand what these things are. I'm sure there are nuances here that I'm missing or not fully understanding. Thanks!

<comment><USER7> I don't think I am your target customer. Or perhaps you think I am, but it certainly doesn't show in your product.

I just checked and here's what I wrote to you in our support discussion from 2013 (when you introduced Sharegroups, which I thought would solve my problem):

> "I'm not sure you thought this out — I can't be expected to manually add > every new gallery to the sharegroup (which is not an easy process if you > have >50 galleries), and then rearrange them manually (something I already > did within my folder anyway) using the old interface."

There are a number of problems with SmugMug. The most important one is the amount of work I have to do to add each new event (gallery). I had to fight the category system (I don't even want categories), remember presets (will that one work?), manually rearrange galleries, and perform a number of other chores. And there were minor annoyances, such as that at the end of it all, SmugMug still insisted on placing "Powered by SmugMug" branding on my pages.

For comparison, so that you understand, these are the steps I have to take right now (with my software), starting from a folder full of images exported from Aperture/Lightroom:

* run a script that converts/resizes/prepares images,

* upload the whole resulting directory to my server.

That's it. There is nothing more to do. Galleries get sorted automatically, date ranges are automatic, featured photo is chosen either randomly or based on a "featured" keyword. Galleries are named after directories by default. Galleries are reverse-sorted by date. There are no categories. Family and friends can log in, view pictures, search galleries. Oh, and it also supports retina images, and works _very well_ on mobile devices.

I think if you want to address use cases like mine, you have to realize that those photos are not the center of our lives, they are just a tiny part of life. I am not a pro photographer obsessing over how I want to categorize my galleries and how I will sell my pictures. I want to spend the absolute minimum of time dealing with placing them online.

</comment></comment></comment><comment><USER9> Crazy that they don't mention Carousel. I've been really happy with it. Easy to send family links. Not tied to a social platform -- my wife and I share the same account with all iPhone photos uploaded/downloaded to family computer. Onedrive offers much of this, but its slow -- photos load relatively slowly on iPhone app, and videos constantly buffer. Carousel/Dropbox is instant. For me, the only missing feature is rotate/crop, but I can always do that on a desktop/laptop linked to Dropbox account, and all devices update.

<comment><USER10> +1 After few iterations, currently I too have landed with Carousel/Dropbox. It just works. Although, there are several features that it lacks related to editing. If Apple Cloud Photo service proves reliable, I might switch over (My family has all apple devices so makes it easy)

<comment><USER9> I admit Apple Photos and family sharing looks pretty slick. Unfortunately, while we use iPhones, iPads, an Apple TV, and several Airport Expresses (home audio), the home computer is still a Windows machine, and I use a Surface Pro 3 daily for work. I'm also wary of doubling down on Apple. Our next family machine may very well be an iMac, but I guess there's something attractive to me about keeping our data separate. I want to be able to pay Dropbox for a premium service that "just works" on every machine, no matter the OS. That way I can fluidly move to the next big thing without all the hooks (I struggled with a messy Google+ exit a year ago). Maybe I drank the Kool-Aid, but I'm one of those guys who think the Dropbox team is on to something. They need to work quick though. Google's move to decouple photos (and provide for auto desktop download) threatens to shake things up -- at least in our little household. My wife will love another transition . . .

</comment></comment></comment><comment><USER11> I played with Photos and it is nice. The problem is if you also use Android and Windows devices.

I have a simple setup that works well for me: I set my Android phone to not upload photos to my OneDrive Camera Roll unless I am on a wifi connection, and I turn off wifi on my phone when I am hiking, at family dinners - anytime I am taking a bunch of pictures. When I am home, I delete unwanted pictures before turning wifi back on and the pictures sync to OneDrive.

All my picture file names are time stamped and I add descriptions to the some of the file names after the time stamp. Occasional descriptions help find stuff in a time stream.

Every several months I rename my Camera Roll directory to Camera_year_month_day and create a new empty Camera Roll directory in OneDrive. It is easy to find any of my pictures, select groups of pictures and generate share links, etc.

This same scheme used to work fine when I used Dropbox, and converting from Dropbox to OneDrive was easy and maintained this setup.

edit: I use selective sync to device to not have all of my pictures on my devices, relying on the web OneDrive interface to show people pictures without taking up local disk space.

</comment><comment><USER12> What I look for the most in a backup solution for something as precious as my personal / family photos is the stability of the company. Will it be there in 5/10/20 years?

Regardless of the solution, redundant backup is an absolute must for me. I will never depend on 1 solution for any of this no matter what the price.

My current solution is this:

* all photos go to Dropbox about once a month or if there is a large batch (birthdays etc)

* redundant backup to a RAID server in my house (3 TB drives) right now about 50% full

* I also compress really important photos and send them to an FTP server on a VPS with limited web access (no httpd)

<comment><USER13> is there much benefit to compressing your photos?

<comment><USER12> its more organizational for me than anything. the fact that they are "inside" a gzip/tar or zip file kind of keeps them categorically together. It does usually end up saving some space, not a ton.

</comment></comment></comment><comment><USER14> Excited about Apple Photos.

Every solution I've attempted to instigate with my wife has been met with resistance for minor technical or minor inconvenience reasons.

Previously, it was an external drive with iPhoto that used what eventually was a merged iPhoto Library on an external drive. The external drive would be plugged in to the RAID 1 NAS periodically to preserve it. Finally, every week or so the NAS would backup to S3.

However, all of that proved too inconvenient or too aggravating.

Apple Photos is working great so far for us (albeit with a tight coupling).

</comment><comment><USER15> If you really want to store a "lifetime of photos", you should probably consider having a better long-term backup strategy than just putting it in locations that are managed by a single piece of software. :-)

Sure, some of these applications store a copy both online and on disk, but if your application chooses to run amok and delete everything, that's not really going to matter in many cases. I've seen horrifying things happen when iPhoto tries to sync with the cloud before. :-(

</comment><comment><USER16> Apple Photos would be great if they had more powerful family sharing. My dream is to have the family photo collection on all devices (iPhone, iPad, MacBook) that we can both curate.

Adobe Creative Cloud seems to support 1 collection with 2 people accessing it. Apple Photos is less expensive though, comes out to $5 a month for both of us (20GB + 200GB) vs the 10$ a month for the Lightroom.

</comment><comment><USER17> I'm actually liking [http://thislife.com](http://thislife.com) which is an extended service of Shutterfly. It can pull photos from your local machines as well as online accounts. You can pay to also have video access.

</comment><comment><USER18> Just started using Amazon's cloud offering. Don't mind it... it's not perfect, but it's simple. Coupled with prime it's affordable. Easily back up multiple devices, videos, etc.

<comment><USER19> How many photos do you usually upload? I was signed up for the trial, but stopped using it when the web client decided that it couldn't upload an entire camera's worth of photos (~70GB) at once.

<comment><USER18> I don't use the web client. On my mac, I installed the desktop client, and that seemed to work fine for the 30 or so gb I did per batch.

On the phones I backed up 2 phones, each with about 10gb of photo/video.

</comment></comment></comment><comment><USER20> Since I started taking photos in earnest during travels in late 2004, I've collected around 120k photos. I don't really shoot very often, but when I do shoot, I take tons of photos. For example, on a 10 day trip to London, I took around 9,000 photos. I'm not a great photographer, but somewhere in that pile will be some great photos I'm pleased with.

I don't want to be stuck with one software's way of doing things, so here's how I organize them:

\- Each trip is organized in a folder with a sortable date down to the month and general placename: "2014-05 London"

\- Inside that folder, at the end of every day of shooting, I dump all the photos into a folder with the name of the day of the trip: Day1, Day2, etc. Sometimes I'll use the date for the day instead. It doesn't really matter much.

\- Since during the course of a day, I might shoot at several locations, inside each "Day" folder, I organize the photos by location of the shoot or a short description of the event I was shooting, "Walking Around the Shard", "Tate Modern", "East Dulwich" etc.

\- I also use a couple different cameras, so inside each of those, I have a folder for each camera: Nikon, Lumix, etc.

\- Inside each of those I separate out pictures I took of my family or of me with pictures of sites. I usually upload the "personal" pictures to Google or Facebook so I can access them anywhere.

\- So if I want pictures of us from Picadilly circus on the 3rd day of our trip to London (and not the 6th day when we went there again), I go to 2014-05 London/Day 3/Picadilly Circus/Nikon/Us

\- If I want Pictures of Bernini's _Ecstasy of Saint Teresa_ from the Santa Maria della Vittoria in Rome, I go to 2011-04 Italy/Day 5/Rome - Santa Maria della Vittoria/Canon

\- In each of these, I make a folder called "top" where I copy the photos I think are the best. As I process the photos I make a final selection and put the results in a folder called "done".

\- So the best, finished and processed, shots from my last example are 2011-04 Italy/Day 5/Rome - Santa Maria della Vittoria/Canon/top/done

out of maybe 200 photos total at that church, only 2 or 3 might make it to "done".

Even if I can't remember exactly which day I took a shot, the descriptive names are searchable in the file structure and I can usually find a specific photo in a few seconds. It's also self documenting so when I need to update my CV or remember when I took a trip somewhere, just navigating the file system provides all that information.

There's often 1 more step, an agency also buys some of my photos, and their acceptance process is even more stringent than mine, so out of 20 or 30 "done" photos, I might only get 6-10 accepted for professional publication. I put those in a "published" photo under "done".

I've started a new system as well. On January 1st, I take the previous year's photos and put them in a folder with that year. Only the current year's photos stay in my root photography folder. This makes things much tidier even if a little harder to find. So all of the above examples would have one more folder with just the 4 digit year before it.

I make a global backup of my entire collection after every trip or shoot onto a couple other disks, one of which stays disconnected most of the time and in a drawer.

<comment><USER21> Basically as they say: "Those who do not understand Unix are condemned to reinvent it, poorly"

Over the time and many setbacks (lost stuff, not able to find stuff) I have also drifted to a very simple solution: use a file system to organize and store your stuff. This is valid equally for pictures and for music (and documents, and books, etc.). This makes sure you will never loose your stuff. Backups, search, copying etc. is provided by tested and reliable tools either from the OS itself or the standard tools like rsync. Everything else is "on top". For example you can use iTunes, Clementine, Foobar, whatever music library software you want, but keep your mp3s in folders sorted by rating/artist/album/song and you will be able to migrate between the vendors, backup, restore, script conversion (need to compress music and resize photos further for the phone to fit into 128GB limit of the sdxc card). Same thing with the Photos. I use very simple folder structure of Year/Location. Bad shots are just mercilessly deleted (power to the Paper Bin!). Super good ones a copied to Favorits. Because photos are coming from different devices I have given up on filenames for lack of consistency.

And, should the vendor drop your library management software in next 10 years what will you do? With a filesystem oriented approach you can be sure to have it available 50 years down the road, or something better comes around and you will just upgrade.

</comment></comment><comment><USER22> How is there not a free service that does this? Or were free services just not reviewed in this article.

<comment><USER23> Free services tend to come with a fairly small amount of disk space, nowhere near enough to store a lifetime of photos.

</comment></comment><comment><USER24> The fact that this is a problem widely felt enough to be reported in the WSJ is a side effect of consumerism run rampant. Advertising campaigns that conflate high resolution with high quality combined with a "you can do anything" attitude have persuaded millions of people that they're great photographers when in fact they're just taking photos and videos which even they will likely never watch.

Don't get me wrong, the technology is great and it's enabling some really talented people to do really awesome things. But those people spend literally years learning to compose shots, and hours after each photo session poring over thousands of duds to find the few gems. The average person isn't doing that. Let's face it, if you want the sunset in Puerto Rico captured in a photo you're better off letting the professionals do it.

There are other definitions of quality. I have a lifetime of photos too, but my lifetime of photos amounts to about 300 photos taken over 30 years. They're not well-composed. A lot of them were shot on crappy hardware and it shows. A lot of them are pictures I didn't take. But every single one of them takes me back to something I care about and makes me smile. My vacation photos are of me and of people I care about, with things we liked.

I don't need cloud storage to sync those 300 photos between my devices. They don't require organization; they're stored by date and time and that's it--I know where every photo was taken and who is in it by looking at it. The photos are stored on my laptop hard drive, a backup drive, and on my personal server. I sync them with rsync but if that didn't exist there are a dozen other ways that would work as well.

If you're not a professional or trying to be one, then the solution isn't waiting to be invented. The solution is to stop taking so many pointless photos. Is sifting through hundreds of photos really improving your life? Do you really care about all of those photos, or could you figure out before you even take the photo which ones you're going to care about?

And taking all those photos has other downsides too that have nothing to do with poor storage solutions. Trying to capture everything for the future prevents people from living in the present. I see people at concerts all the time watching the entire concert through their phones. Are you really going to rewatch that poorly lit video with its shitty sound later? You're damaging a present experience that could be awesome in exchange for a mediocre future experience that might not happen. Not to mention how this affects other people's experience: if you're tall it's not your fault, but if you're holding a phone between me and the artist I paid to see you're being an asshole.

TL;DR: The best way to organize a lifetime of photos is to stop taking ones that don't matter.

<comment><USER21> Not taking photos is equal to deleting them. And this is the hard part - <USER2> to delete?

Not sure how much, how far you travel and how various activities are you participating. When I bring my photos from a distant country people are interested to look at them. And different people find different pictures interesting. Some people want to see all the pictures of penguins, while others like to see architecture. Others still happy to see tens of different motorbikes from a trade fare. Often the ones I thought were worth deleting are the interesting ones for the people. So unfortunately deleting them right away (or not taking) is not an option to me.

Also as usual - telling people stop doing things they like is hardly helpful.

<comment><USER24> > Not taking photos is equal to deleting them.

I get that my post was long so it makes sense that you didn't read it, but maybe don't respond to posts you didn't read?

Taking photos and then deleting them is _not_ equivalent to not taking them. It takes time and storage, exchanges a present experience for a mediocre potential future experience. I already explained this in my previous post.

> When I bring my photos from a distant country people are interested to look > at them. And different people find different pictures interesting. Some > people want to see all the pictures of penguins, while others like to see > architecture. Others still happy to see tens of different motorbikes from a > trade fare.

Are any of these things photos _you_ have to take? Or could you find better versions of these photos, taken by professional photogs, online, and send it to people with a "I saw this"?

> Often the ones I thought were worth deleting are the interesting ones for > the people.

Often when I'm taking a photo, I think, "<X friend> would really like to see this." These make up a small fraction of my photos and after I send them to the person I delete them. But the difference here is that on a trip I take 15 photos instead of 10.

All this says about you is that you're not approaching your photo-taking intentionally. None of the objections you've brought up couldn't be solved with 15 seconds of thought.

> Also as usual - telling people stop doing things they like is hardly > helpful.

I'm not telling you to do anything. If you want to spend money and time viewing your life through a small screen so that a few people _might_ find _some_ of your photos interesting, go ahead.

People like all sorts of things. Some people like cocaine. But it's easy to get caught up in short-term dopamine-releasing behaviors and sometimes those behaviors do more harm than good even though they feel good. It makes sense to take a step back occasionally and look at the effect of you behaviors you enjoy on your overall happiness.

<comment><USER9> As a guy with little kids, I genuinely enjoy going back through old photos. We have about 60gb of photos and videos over the last ten years. I don't spend my time viewing life through a viewfinder. With modern technology, snapping a photo, or a series of photos, is very low friction. You might also be surprised by how little you actually remember, and how much you enjoy being reminded of life's little events perusing pictures later. And postcards are no replacement for pictures of my wife and kids in Hawaii.

Also, I find your tone spectacularly offensive.

<comment><USER24> > As a guy with little kids, I genuinely enjoy going back through old photos.

> You might also be surprised by how little you actually remember, and how > much you enjoy being reminded of life's little events perusing pictures > later. And postcards are no replacement for pictures of my wife and kids in > Hawaii.

I don't disagree with any of this. The problem is not taking pictures, it's taking so many pictures that it causes storage, organization, and experience problems.

> We have about 60gb of photos and videos over the last ten years. I don't > spend my time viewing life through a viewfinder.

The first sentence contradicts the second.

> With modern technology, snapping a photo, or a series of photos, is very low > friction.

It hasn't been extremely difficult to take pictures for most of my lifetime.

> Also, I find your tone spectacularly offensive.

Stop the presses, we definitely shouldn't be talking about anything that offends anyone!

Getting offended does not make anything better ever--it's just a way of ignoring people you disagree with instead of considering differing opinion. If that's what you want to do, you're only hurting yourself.

I'm not criticizing you or anyone else as a person. In fact I'm not even telling anyone what to do. If you choose pictures and videos over direct experience, that's your choice to make.

I think most people would be happier if they took fewer photos, but I think there's a lot more to happiness than that. If you're happy then there's no need to fix what isn't broken. But if you think you could be happier then there's no reason not to explore conversations about what makes people happy or not.</comment></comment></comment></comment></comment>


Show HN: Find the best area to stay. My weekend project. - <AUTHOR> http://www.staybl.com/

<comment><AUTHOR> This is one of my weekend projects. I was going to wait until things were a little more polished, but decided just to throw it out there anyway. Any comments and feedback are welcome.

</comment><comment><USER2> It'd be cool to know a general idea of how the best area is determined.

Interestingly enough, as a Houston native, it's spot on with picking the Montrose area. My family is actually moving out of the suburbs and back into this section specifically!

So, again, it would be a tad more useful if it showed why it was a ranked the best, contributing factors (e.g. "Nightlife", "walkability", etc.), and runner-up locations.

<comment><USER3> I added the Montrose area and the form included a description field but the data doesn't appear to be shown ATM.

<comment><AUTHOR> Correct. I haven't decided how I'm going manage the descriptions yet.

</comment></comment></comment><comment><USER4> Chicago native here, born and raised. Living in the lower part of the loop / printers row.

None of the below is intended as negative, but is meant to spark a conversation about the "best area to stay". Or how this is classified as such.

What was the rationale behind picking River North as the "best area to stay" in the city of Chicago? While River North may cater to the needs of many travelers, in many cases it may not. For those not interested in the scene of overpriced Red Bull + Vodkas, crowds of WASPS and pretentious clubs River North is quite uncomfortable. You can easily get the experience of Chicago by staying in the Congress Plaza (example) in the south loop of Chicago by paying much less.

All of that being said, you can get anywhere in the city with the L, so where you stay can matter or not.

Is the best area to stay based on metrics, or personal experiences from staying in these cities?

This is a neat project, I'm curious to see what people think.

<comment><AUTHOR> Thanks for the input. I lived in Chicago briefly and thoroughly enjoyed the South Loop. The idea here is to find the area that would be the 'best' for the largest number of travelers. It's certainly subjective, and my next feature is allowing users to suggest their own favorite areas to stay.

<comment><USER4> Sounds good. Comment wasn't intended to be harsh (nor bash on River North because I've spent my fair share of time there).

</comment></comment></comment><comment><USER3> Small bug: if I type Tokyo, it autocorrects to "Shinjuku, Tokyo" which is itself a neighborhood in Tokyo. I would've expected Shinjuku to be one of the suggestions if I search "tokyo".

Also, I created a suggestion for Houston and under "Top Accommodations", the listings are all restaurants and massage parlors.

<comment><AUTHOR> Thanks for adding an area for Houston. I'm not sure what was up with the restaurants and parlors. I'm hitting the Yelp API with a generic search term and returning the highest rated. I switched it to 'hotels' and it seems to have resolved it.

</comment></comment><comment><USER5> The best place to stay in Denver, CO is Downtown/17th Street Mall. It's actually the "16th Street Mall", although I do agree it is the best area.

I suggest adding (a) a brief explanation of why it is the best place to stay, and (b) more than one place. Denver (for example) is varied; depending on what you're looking for, you may also want to stay in LoDo, or Cherry Creek.

<comment><AUTHOR> You are correct and that was a poor mistake on my part. I'll correct it when I get home. Thanks.

</comment></comment><comment><USER6> I like the clean design and map view. I don't understand how you are determining the "best" places to stay. Is this just a list of hotels, or is some super secret algorithm coming up with this list based on a few important real-time factors? Either way, I'd make this clear in your copywriting, so I'm clear on the value I'm getting as I use your app.

</comment><comment><USER7> The look and feel is cool and so is the map view but I think you should add more information about why those areas are so great besides just restaurants and hotels. Like a main attractions section since people don't just choose areas based on where they can eat and sleep

</comment><comment><USER8> Apparently the best place to stay in London is in the River Thames ([http://www.staybl.com/areas/17](http://www.staybl.com/areas/17)). Who knew? :-)

<comment><USER9> Yeah, it's moved a fraction north now into the city, but that area would be a horrible place to stay, despite the many plush hotels - there are few good restaurants, only expensive (and soulless, and dead on the weekend) bars, and it's a ways away from anything interesting either on a touristy/culture (except St. Paul's) or tech basis. Hmm. From the above it seems to be user generated though, but interesting. There's a juxtaposition here that I wonder if the OP could exploit between good reviews (hotels, restaurants) and the sort of livability/walk ability ideas that some of the other posters have mentioned.

Love the design, look and simplicity of the app though very nice.</comment></comment>


Ask HN: ML, DNN and Creativity in Battle vs. Covid-19? - <AUTHOR> Everything I see about Covid-19/coronavirus is old-school standard statistics - no ML, no DNNs.  Doctors and statisticians screaming and warning to not do X unless we have proven X effective with classically statistically-controlled  studies (which they confess, will take months to complete, write up, peer review and publish in the journal of their choice). But when we look around, having done over the last 5 decades literally tens of thousands of such studies, none of them seems to have any relevance!
Seems the medical community thinks success against Covid-19 can only be achieved with more masks, more gloves, more hospitals, more randomly-selected controlled double-blind studies and particularly more money for a (bigger) medical community.
I hate to be critical of the very people who are doing so much work, but I am sorely pressed to see how the group of dullards in charge (and I mean the entire medical and drug community) can possibly come up with a solution.
Example: look at this - this is a solution from the boneheads in charge:
https://www.jpost.com/International/Israeli-doctor-in-Italy-We-no-longer-help-those-over-60-621856
"Let the old and weak die! " What a novel solution!
Seriously, WTF happened to creativity? Where are the ML and DNN people? Where's the "artificial intelligence" (b/c there apparently isn't enough of the real thing to solve this problem. Why isn't more of the work done to date useful in finding solutions? Medical "science" has let us down. <comment><USER2> The current tools that are used in clinical environments have been tested and proven to be safe for many years and are also compliant with healthcare regulations to ensure that they are safe to use because it involves human life.

You mention Machine Learning or Deep Learning based solutions are not used more to tackle the COVID-19 outbreak. The problem with using them is that the explainability in its decision-making is very poor and is as transparent as a blackbox at best. Thus it isn't useful for a clinician to give an explanation why this 'AI' came to that decision, which is very unsafe in a medical environment.

Explainable tools like decision support systems are what medical professional favour over the hype of DNNs, neural nets, or other AI buzzwords these days.

</comment><comment><USER3> (Vouching since this might be a good discussion to have.)

> I see about Covid-19/coronavirus is old-school standard statistics - no ML, > no DNNs.

What you call "old-school" is also proven. The biomedical domain uses these models because they understand how they work, what abstractions went into them, and when they are reliable methods to lean on. Machine learning and DNNs are pretty useless without a specific task and good datasets (add large to that list for DNNs), very much like wet trials in the medical field.

If you look at the biomedical field in the last few months, lots of efforts already come together here that you might appreciate. Peer reviews of relevant papers are expedited, results are digitally disseminated around the world, cases are tracked with pretty unprecedented speed across bureaucratic borders.

> Seriously, WTF happened to creativity? Where are the ML and DNN people?

Where they belong. Some help people in the field, others focus on their own research, some will definitely try to put their specific methods to the test in order to facilitate other efforts.

I realize that many people these days want to help but please, this is not the time to get your covid paper on arxiv just because. Just like we should call out people profiteering from this pandemic economically, we should strive against adding pure noise. Note that this shouldn't hinder creativity but that is a completely separate thing. If you have a great idea to help, go ahead.

> Where's the "artificial intelligence" (b/c there apparently isn't enough of > the real thing to solve this problem. Why isn't more of the work done to > date useful in finding solutions? Medical "science" has let us down.

Medical science is doing what they can, the presumption that a buzzword can do it better than people that dedicate their life to this is neither help-, nor respectful.

<comment><AUTHOR> Thanks for vouching. However...

1\. If the old-school stats work, why use NN/ML? Instead sample the big data and use a classical statistical model. This was stated to me by a business school faculty member, to my astonishment. I had no good answer. I had hoped that the new tech could do the work faster or see a pattern faster or see something that was invisible to classical stat.

2\. In the medical science field I see lots of self-promotion (shades of Gary Larson's cartoon re the "Little Bang theory"): [https://i.pinimg.com/736x/67/36/c1/6736c1b233ce99f0e992e3aa1...](https://i.pinimg.com/736x/67/36/c1/6736c1b233ce99f0e992e3aa167f151b --far-side-comics-gary-larson.jpg) )

I don't agree that medical science is doing what they can. They seem more interested in protecting their turf. The most creative and ballsy are the Chinese guys collecting plasma with Covid-19 antibodies from healed covid19 patients. _That_ is creativity! But right behind them are their naysayers screaming bloody murder.

An acquaintance disappeared 4 weeks ago; he's holed up in the mountains for the duration. I wish him luck but the rest of us need something more creative.

I am disappointed. My bet is that a solution will come out of left field, will be initially opposed by medical science and ultimately absorbed by the same.

Whereupon we'll be back in the same situation, waiting for the next bug to come along.

<comment><USER3> >1\. If the old-school stats work, why use NN/ML? Instead sample the big data and use a classical statistical model. [...] I had hoped that the new tech could do the work faster or see a pattern faster or see something that was invisible to classical stat.

That's just not these things work. Even if you had large amounts of data (which you don't), you still lack a good problem statement that neural networks can be trained towards, great test sets for these scenarios that impact human lifes, and a model that is explainable / interpretable. Otherwise you quite literally put human lifes on the line hoping your model learned something appropriate instead of using something proven and reliable instead.

Modern machine learning techniques have their place and I'm sure in the aftermath of this crisis we will hear a lot of stories where people put it to good use but it's not a case of "throw ML at it, ???, get vaccine".

> 2\. In the medical science field I see lots of self-promotion

You'll find self promotion in any field, that does not really diminish the work people are doing overall.

> That is creativity!

There is a clear difference between desperate medical professionals taking a risk and misguided efforts to throw random tech at a problem without understanding it. The former might be considered creative, the latter just adds noise without helping anything.

> My bet is that a solution will come out of left field, will be initially > opposed by medical science and ultimately absorbed by the same.

That's fine and I get that you might be disappointed in the status quo but there is just no reasonable assumption that deep learning will provide some left field miracle here. That's grasping at straws while people are actually trying to help. As for your last comment, I'm still hoping that we collectively learn something from this crisis.</comment></comment></comment>


Ask HN: Are you building iOS/android games? Need marketing help? - <AUTHOR>

Hello HN,
I'm really excited about the future of mobile games and apps because I think the growth and opportunities are amazing. It's something I'd love to be a part of, and I want to learn more about mobile app distribution and marketing. That's why I'm willing to offer my time and work efforts FREE to a few lucky (and appropriately matching) HN devs or startups.
Here's what I could do for you:
- Design, draft, or build your apps web landing pages with Photoshop/HTML/CSS (and create promotional images with the use of your fantastic game art).
- Setup a Facebook fan page with an attractive landing tab so you have FB lead-ins and a social presence
- Help craft your app store's copy text to optimize the title and description space.
- Use Optimizely to run A/B test campaigns on landing page copy, buttons, and images
- Other ideas? What else do devs need help with that they don't have time to do themselves?
I consider myself a marketer/hustler type and I have experience co-founding several popular web apps, driving viral traffic and signups on $0 budgets. My work has been covered on Techcrunch, CNET, TIME, CBS, Wired, and more. I last interned at Kontagent (Jan-May), a social gaming analytics provider. I'm currently looking to join a social / mobile game studio, but the search continues.
Interested? Email me at coryliu[at]gmail.com and tell me a bit about what you're working on, and what you need help with.
My projects & resume: http://bit.ly/raW2Y4
Design portfolio: http://bit.ly/osbDEp
Thanks HN! <comment><AUTHOR> Clickable:

My projects & resume: <http://bit.ly/raW2Y4>

Design portfolio: <http://bit.ly/osbDEp></comment>


Clinton wants to 'staple' green cards on STEM grads' diplomas - <AUTHOR> http://www.computerworld.com/article/3089314/it-careers/clinton-wants-to-staple-green-cards-on-stem-grads-diplomas.html <comment><USER2> The cost of tuition for foreign students will probably go up by a lot.</comment>


Tesla on fire: UK director Michael Morris' car bursts into flames - <AUTHOR> https://www.bbc.com/news/world-us-canada-44511200 <comment><USER2> As unusual as it may be I hate seeing the Tesla denial machine jump into action. At least Tesla didn't blame the driver....yet.

<comment><USER3> In the comments on these kinds of articles you'll always see the opposite of the Tesla denial machine: otherwise intelligent and well-educated people who for some reason believe that only Teslas catch fire and that internal combustion engines never burn up.

Sometimes I wonder if these are submarine articles paid for by companies who want Tesla to fail. And it might be working... Musk seems a moment away from snapping completely.

<comment><USER4> Isn't there a large group of investors who have shorted Tesla to the tune of billions who might be very motivated to see bad Tesla headlines and anti Tesla social media? How far would they be willing to go?

<comment><USER5> TL;DR: Far.

[https://m.dailykos.com/stories/2018/5/29/1767826/-The-War- on...](https://m.dailykos.com/stories/2018/5/29/1767826/-The-War-on-Tesla- Musk-and-the-Fight-for-the-Future)

</comment></comment></comment></comment><comment><USER6> This sort of things happens with cars sometimes. It's unfortunate, but Teslas seem to do this less & their design protects the occupants really well.

I have a suspiction that he will continue driving a Tesla.

<comment><USER7> What's a car from another brand that just burst into flames during normal operation?

<comment><USER8> Cars commonly catch on fire from electrical issues, overheating, malfunctioning or negeglected maintenance on transfer cases or transmissions. We get a car fire at least once a month. This average increases during the summer and _does not_ count semitrucks/trailer fires.

I'm a firefighter for my county that includes ~ 30mi of interstate along a national corridor. DOT has estimated 11,000 vehicles pass through our county each day on this corridor.

<comment><USER9> Out of curiosity, how many of those would you say were cars less than a few years old? That more than anything is what catches my attention about this story — anecdotally, I've seen car fires on the highway, but always older cars, and a Tesla seems like it shouldn't have had time to accrue that degree of wear and tear and deferred maintenance. But I'm curious what someone with more data points makes of it.

</comment></comment></comment></comment><comment><USER10> So he was driving it and didn't realize it was on fire? I thought there are several temperature sensors near and around the battery that would set some sort of alarm off in such a case.

<comment><USER11> There are a ton of sensors in the battery, and the lack of the warning that usually appears is one reason why folks think it was the air conditioner that caught fire.

</comment></comment><comment><USER12> My mother in law's car burst into flames 2 years ago. It was a wave in near perfect condition. These things have a baseline rate of happening but when it is Tesla it is front page news.

</comment><comment><USER13> Someone please correct me if I'm wrong, but I think Diesels are much safer than gasoline engines? Because, Diesels require compression to ignite unlike Gasoline, no? Please correct me if I'm wrong.

<comment><USER14> A spill of diesel is less immediately dangerous than a spill of the same amount of gasoline, but will still burn if it has a wick (you don't want your clothes soaked in diesel). But it's quite rare, I believe, as fuel tanks are well protected, so I don't think it translates into a statistically significant difference in safety between cars running on these different types of fuel.

<comment><USER13> Thanks for the reply, that explanation makes sense!

</comment></comment></comment><comment><USER15> The question here is how do Tesla so far compare to the traditional cars.

</comment><comment><USER16> Meanwhile, about 300 non-Teslas burned in the UK yesterday, and about 300 will burn today, and tomorrow, and....

<comment><USER17> Not disputing this happens to other cars but 300 a day - in the UK alone no less - seems plausibly high. Got a source to back up that figure?

<comment><USER18> It's closer to 40 a day, at least in 2016/17\. Still, it's not a rare event, which I think was the point being made.

[https://assets.publishing.service.gov.uk/government/uploads/...](https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/636436/fire- statistics-data-tables-fire0302.xlsx)

<comment><USER19> From your Excel link:

Of which _50%_ are deliberate, and there is _no_ breakdown of how many of the rest are random mechanical failure as opposed to having been involved in a collision with an associated fire.

<comment><USER18> I used the figures from accidental only - roughly 12k p.a. is around 35-40/day. Rough maths.

</comment></comment></comment></comment></comment><comment><USER20> Not a flamethrower.

</comment><comment><USER21> In other news, Samsung is in talks to buy Tesla and introduce a Note 7 car ;)</comment>


My Objection to Array#sum - <AUTHOR> http://github.com/raganwald/homoiconic/blob/master/2009-04-09/my_objection_to_sum.md#readme <comment><USER2> Python does this - sum/any/all are standalone functions, and join() is a member of the string class instead of the array class. Python also gets a lot of flack for it, as it seems like every month you can see someone complaining about why you use `"\n".join(lines)` to join an array instead of `lines.join("\n")`. People can't seem to wrap their head around it.

Personally, I think the big mistake is to think objects should represent things in the real world instead of adapting to the needs of the program. For example, it's very common to need to split a class into FooLike (an interface), FooImpl, and FooRenderer to avoid coupling specific display logic to business objects you may want to reuse in other contexts. These have no analogs in the real world. They're there largely to make sense out of the different things your program needs to do with a Foo.

<comment><USER3> Count me as one of those people that don't get it. If I'm joining the elements of an array together, I'm operating on the array. Therefore I _expect_ the join() method to be on the array.

To me, Python can't seem to make up its mind with these weird (IMHO) stand- alone methods like join(), sum(), any(), etc. That's the kind of thing I'd expect in a functional language, not in an OO language.

<comment><USER4> The thing is, they aren't methods. They really aren't. They don't operate on an object using the object's local data. They are generic functions that use certain defined interfaces that many objects define.

"list.join(str)" and "str.join(list)" are _not the same_. The list.join syntax only works for lists, but str.join takes _any sequence_ , which is anything that implements the sequence protocol, including lists, dicts, sets, trees, heaps, iterators in general, and a limitless variety of user-defined sequences. Once you understand that it's not a matter of picking two spellings of the same functionality, but actually radically different functionality between the two spellings. (Putting this on string rather than it being a free-floating function is perhaps dubious, but at least the operation does have a sort of irreducible stringy-ness to it in a way that it does not have a listy-ness to it.)

If you make the "join" a method of list, then you have grotesquely cut its functionality. Now you are requiring people to implement their own join on every other object that implements the sequence protocol, which is just silly. (Of course if they have other needs they may still implement something else, but why not give them the option of the default?)

This is generic-programming through duck-types, not OO. Similarly for all the other examples you cite and quite a few more; putting them on "list" is not "the sensible thing to do", it would be a _grave error_.

        Python 2.5.2 (r252:60911, May  7 2008, 15:19:09)
        ...
        >>> ", ".join(str(x) for x in xrange(10))
        '0, 1, 2, 3, 4, 5, 6, 7, 8, 9'

That's not a list in there.

<comment><USER5> Well join should be on sequence instead of list then.

To me it seems unnatural to see join on string because string feels more 'basic' than a sequence, so I would expect the sequence to know about strings rather than the opposite. But the argument against join on string is not as strong as the argument against sum on array.

<comment><USER6> This is such a non-issue. Really. The parent posted the reasoning behind the decision, that reasoning is sound. Your disagreement is purely aesthetic, there's simply no practical reason why the current way is wrong. Please just accept that this is how it is, and stop complaining about it. Please?

<comment><USER2> That was my point when I started the thread. The Python decision is objectively justified for technical reasons. Yet a large number of people viscerally feel it's _wrong_. I blame human irrationality - but then, programming languages are meant for humans, so shouldn't they accommodate our irrationality? Otherwise, you get something like Haskell. ;-)

BTW, there are other cases where Python has gone the other way. Multiline lambdas, for instance. The case against multiline lambdas is essentially that they _look ugly_ \- they let you embed an indentation-sensitive block in what might be a parenthesized expression, which means you need some dangling delimiters. But they're certainly useful, as Scheme/Lisp/Ocaml/etc. have shown.

It's similar to the compare-constants-from-the-left idiom in languages where assignment is a valid expression (notably C). If you always write "if (NULL == foo)" instead of "if (foo == NULL)", you eliminate a whole class of bugs. But I've seen very few programmers do this, because it "feels" wrong to a lot of people.

<comment><USER7> "if (NULL == foo)" and "'\n'.join(lines)" both feel wrong because you are putting the most complicated object last. The most complicated thing should go first so you can sooner figure out what the heck this line of code is talking about.

I would support making the C compiler just disallow "if (x = y)".

<comment><USER2> OTOH, in languages that support first-class functions, it's pretty common to put the functional argument last because then it can wrap to another line without leaving dangling parameters:

        $.each(my_array, function(val) {
          // Do something
          // Do something else
        });

That's putting the most complicated object last, and feels much more natural than:

        $.each(function(val) {
          // Do something
          // Do something else
        }, my_array);

I suspect it's more that English has trained us to read "noun verb object" sentences. In an if statement, `foo` feels like the subject, and then "== NULL" is the predicate. In an array map, the array is the subject, and the function is the predicate. In the Python join example, the array feels like the subject, "join" is the verb, and "," is the object, which is what makes it seem so awkward. Ruby's array.sum feels more natural because the array is the subject and sum is an intransitive verb.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Why is [1,"two"].sum any different from 1 + "two"? That is, 1.respond_to?(:+) is always going to be true, and yet sometimes sending the + message to a number will give a type error.

I don't buy into this idea of interface as binary - that if you respond_to? the message, it's always appropriate, and if you don't, it's not. Interfaces are something you look at when you're writing the program, and so they are interpreted by humans and can be necessarily fuzzy: "#sum will give you the total of the elements in the array, unless they aren't homogenous, in which case you'll likely get an error". Fine. If you don't know enough about the array in question, don't send #sum.

Similarly, if you don't _know_ that this is a chequing account, it would be odd to ask it to write a cheque.

But at runtime, you send the message, and you maybe get an error. Whether this is TypeError or NoMethodError seems entirely irrelevant.

Incidentally, my objection to Array#sum is that you don't know what to use as the "0" element (what if the elements implement +, but aren't numbers), though I'd be fine with it being called #numeric_sum or the like.

<comment><USER9> The difference between [1, "two"].sum and 1 + "two" is that in the second case you are passing "two" to 1's :+ method, that's an argument error, it doesn't depend on 1's state. In the first case you are not giving any argument to the method, so you shouldn't get an error. From the point of view of the array's user the array is now in an invalid state and that's not something the array should have allowed to happen.

</comment></comment><comment><USER10> I'm not a Ruby programmer so I have a simple question: Is it common to request whether an object implements a particular method before you make any sort of call? That seems considerably more fussy than strong typing of interfaces or even the type-hinting of interfaces that PHP has.

I can't help thinking a cleaner solution is the more traditional way: Create a subclass called NumberArray that can only hold numbers and has specific methods for operating on them. But I guess that might not be the "Ruby-way".

<comment><AUTHOR> > Create a subclass called NumberArray that can only hold numbers and has > specific methods for operating on them.

I can't see anything wrong with this for some cases. Another way to get there would be to define a NumericCollection module that can be used to extend any Array.

<comment><USER11> I would tend toward that idea: a module that can be included. Injecting a sum method into the object's ghost class also maintains scope of responsibility, but feels a bit more magic. I'd opt for less magic. At first, anyway. :)

</comment></comment></comment><comment><USER12> _Not all arrays can be summed, but they all claim to respond to #sum. This is extremely broken._

This is how I felt when I first saw Array#sum. But then I took a few hi-

But then I tried it a few times. And now I can quit anytime I want.

I think String#titlecase is correct though. Not all arrays can be summed, but all strings can be titlecased, including part codes.

<comment><USER13> But does String#titlecase do the right thing for ß? :)

<comment><USER14> But the point isn't that String#titlecase can't do the right thing here. I assume there is an implementation of titlecase that will work with ß. But I can't think of an Array#sum that will work for [1, "two"].

Of course your :) might have meant you were being funny, then I just totally missed your point and explained something you already know.

<comment><USER13> Well, there is a tenuous connection in that it's not obvious what to do for casing of ß. I wrote some unicode stuff for CL once and figuring this out was a nightmare. In any case, if you have two data types that that don't make any other sense as an addition, you could always just convert them both to bitfields and sum that... now I'm just being silly. Don't mind me.

<comment><USER12> According to wikipedia "ß".upcase is "SS", except in the case of legal documents it remains "ß".

I checked irb and "ß".upcase is "ß", so I guess strings in ruby are of type "german legal document."

I also just learned that the reason there's no uppercase ß is that no words start with ß, so titlecase would never touch it.

</comment></comment></comment></comment></comment><comment><USER15> I agree with you.

That being said, I suspect that this turns out to be a cultural debate more than anything else. Remember, Ruby is a freedom language. Ruby could eliminate many of the issues you raise by being strictly typed, but of course that'd defeat the purpose.

The whole thing is a question of trust. Do you trust clients enough to give them the syntactic sugar of Array#sum even if their arrays may not all be strictly summable?

The answer to that question if you're writing Java is probably no. If you're a Rubyist, however, the answer is a resounding maybe. For something like ActiveSupport, it's probably OK. For other more hostile environments, maybe not.

As to whether it's idiomatic Ruby to provide Array#sum, I'd argue no, even though it's culturally acceptable.

<comment><USER16> Disclaimer: I'm not a Rubyist.

I think saying "Ruby is a freedom language" is a cop-out for foregoing good design. It excuses us from having to think through if the design makes sense, because we can always throw up our hands and say "Ruby is a freedom language." But I also think that's not an entirely true statement: Ruby doesn't let programmers jump to any random line of code. (I did find a neat module that implemented gotos and labels, but I think it only works at proc granularity, not line granularity.) It doesn't let programmers muck with the the stack frames or manage their own memory.

The reason for these non-freedoms is that past experience has shown us that in some domains, some language features are high risk, low yield. I see the freedom of Ruby as a chance to experiment with many different ideas for language design, and the practical value of that is the languages we design in the future will have those lessons baked in. But by defaulting to the idea that it's a "freedom language," we resist learning.

I say this as a non-Rubyist. I wanted to learn a dynamically typed language, and I chose Python. I don't have the time now to delve deeply into two languages. So I'm commenting on this as an observer, but I'm an observer who sees the value in Ruby, and potential implications to future languages.

<comment><USER15> _I think saying "Ruby is a freedom language" is a cop-out for foregoing good design._

I think some people could use that designation as a cop-out, but I don't think I'm doing that above. The point I was trying to make is that Ruby, by design, is not strictly typed and allows you to do things like metaprogramming easily. I'm certainly not trying to be an apologist for poor design.

</comment></comment></comment><comment><USER17> I see the point, but I disagree that it's a problem that needs to be solved. What is the alternative? A "Numbers" class? And how would this look in syntax? Numbers.new([ 0, 1, 2, 3 ])? I mean, I'm sure you could make it a special case, but it really isn't a special case. Type inference won't cut it, and having to specify everything explicitly is tedious (and a matter of where you draw the line).

And what would you get if you mapped over a Numbers object? An Array or another Numbers object? Looks like you'll have to specify the return type for the block. Even then, is an array of numbers really always a Numbers object?

I suppose that in this case, you could use a Numbers module and (somehow) make every array of numbers magically inherit this. But a generic, extensible way of doing this would be really, really complex and hard to do efficiently. Does every newly created collection have to be checked for Numbers-ness?

Really, you can go as wild as you want to, but I'd rather just be able to map, transpose and flatten around without all of this bureaucracy. Besides that, I'm fairly certain this is only a problem in single-dispatch languages where methods are owned by classes.

</comment><comment><USER18> Calling [1,2,3].inject(0) {|sum, ii| sum + ii } has a cleaner smell, but it's a lot more typing.

I wonder if the solution might be to have all arrays support sum (in the responds_to() sense) only if they can can actually perform the operation.

Thus

[1, 2, 3].respond_to?(:sum) => true

[1, [2, 3]].respond_to?(:sum) => false

I can come up with an O(1) way to do this where we assume that an array does respond to sum, and degrades to not supporting sum when a non numeric is inserted ... but getting the array to support sum again if/when the non- numeric is removed... I'd have to think for a bit to come up with something better than O(n)...

<comment><AUTHOR>
        [1, [2, 3]].respond_to?(:sum) => false

I elided a discussion about this case from the post. For some arrays, a recursive sum is semantically valid. For other arrays a recursive sum is not semantically valid, and it is not a simple case of knowing whether all of the leaf elements respond to :+. So again, trying to implement this in the Array class doesn't work because containers are implementation rather than interface.

If you are going to use an Array class, I think the array's client is the one responsible for knowing whether its elements can be summed and if so, whether recursive summing is valid. The other approach is to subclass or otherwise create special-case arrays that know about their semantically valid operations like sum.

<comment><USER19> Reminds me of Kent Pitman's article about, among other things, why there's no generic deep-copy in Lisp: <http://www.nhplace.com/kent/PS/EQUAL.html>

His answer is similar: just because you know the structure of something doesn't mean you know anything about its semantics.

Because of this, I'm tending to believe that adding more strong-typing to languages is a losing battle, though I admit this raises more questions than answers.

<comment><USER20> > Because of this, I'm tending to believe that > adding more strong-typing to > languages is a > losing battle,

I see this at the opposite.

Just because an object says that it responds to a method doesn't guarantee that invoking said method will succeed. I'm not sure why the original poster is so surprised by this finding.

Since this observation is valid in both statically and dynamically typed languages, I prefer a statically typed one since at least, I don't need to verify that the object does respond to that method before calling it.

<comment><AUTHOR> A question and answer that might be relevant: [http://www.reddit.com/r/ruby/comments/8ba5g/my_objection_to_...](http://www.reddit.com/r/ruby/comments/8ba5g/my_objection_to_arraysum/c08rcll)

</comment></comment></comment></comment></comment><comment><USER21> The method should be: array<number>.sum

The article is correct .sum shouldn't be on an array, but sum shouldn't be global either. This is why generics exist.

<comment><USER22> Or you can have a sum method that accepts a block/lambda/anonymous function as an argument.

This is done in Smalltalk with detectSum.

        people detectSum: [ :person | person age ].
        items detectSum: [ :item | item price ].

<comment><USER23> In Ruby, this would be:

        class Array
          def detectSum(&block)
            self.map(&block).sum
          end
        end

        >> [1, 2, 3].detectSum {|i| i**2}
        => 14

Most Ruby people though would just call #map and #sum in succession on an ad hoc basis.

<comment><USER22> Ew, how inefficient. Here is the Smalltalk code:

        detectSum: aBlock
            "Evaluate aBlock with each of the receiver's elements as the argument.
            Return the sum of the answers."
            | sum |
            sum := 0.
            self do: [:each |
                sum := (aBlock value: each) + sum].
            ^ sum

Anyway, my point still stands. Better to accept a block than to use a sum method that assumes the Array consists of numbers

<comment><USER21> I agree that using blocks/closures is a powerful and useful mechanism -- In fact I think that they are a great implementation technique for this method.

What this comes down to for me is: what makes the best interface?

Specifically:

      myArray.sum()

is much easier to read and use. In a world where we have to maintain our code much longer then we write it this simplicity is very valuable.

Secondly, it is important to note that since the array uses generics it is not necessary to check that the items are numbers, as any attempt to insert a non- number would have thrown an error.

So in summery I agree with you completely that array<variant>.sum should _not_ exist. But I hope you see my point that array<number>.sum _should_ exist. (If the code enforces the numbers to exist in the array there is no reason not to include the sum method!)</comment></comment></comment></comment></comment>


Software developers scan emails of users who sign up for email-based services - <AUTHOR> https://www.wsj.com/articles/techs-dirty-secret-the-app-developers-sifting-through-your-gmail-1530544442 <comment><USER2> I know of at least one startup who do this and use a "machine learning algorithm" to find details of particular things in your inbox.

That "algorithm" is a guy in their office. He reads your email. He searches it for common keywords, uses some regexes, but ultimately reads your email, then copies bits out into the system.

I'm all for bootstrapping with things that don't scale, but this example was a bad-faith use of Gmail access. I'm glad I don't use Gmail so couldn't accidentally give a random guy access to my inbox.

<comment><USER3> It's very hard to accidentally give a random guy access to your Gmail inbox. Doing so would require you to opt in to a dialog clearly and explicitly stating that you are giving said permission to a developer.

<comment><USER4> You're dismissing the observation that users habitually click accept or continue when prompted with a dialog. Sure, you can blame this on the users being lazy but it becomes ingrained into users when everything they access has a dialog, especially when that contains terms of service that would be twenty pages long in paper form (slight exaggeration). I cannot even count the number of times I've had conversations with people when observing this behavior. So many users inherently trust that what they're agreeing to is not only safe, but widely accepted. After all, why else would the service be so popular and have so many users—"Someone out there had to make sure this was legit before me."

<comment><USER5> Im suggesting a UI feature same as the one Github has when deleting repos: clearly input the full name of the repo, or in this case, maybe input "I UNDERSTAND" in order to proceed. This could be a browser plugin maybe...

Access to my personal email would be pretty much security game over for me as far as I can tell. Other people might feel otherwise.

</comment></comment></comment></comment><comment><USER6> Breaking news: Third parties scan full transaction histories and balances from bank accounts of users who sign up for financial planning services (e.g. Mint).

The WSJ really knows how to write misleading, incendiary headlines about tech companies. Like, just read that comment section. Gotta stoke that techlash. Plenty of people have plenty of real reasons to hate Google, but hit pieces designed to drive the non-technical (and apparently some HN readers) to think "Oh no, my Gmails are being sold and read by people"\--I guess it's too effective of a strategy to pass up. Just an utter shame.

There is a real problem here, that lots and lots of users that glaze over the "This app can manage (view, send, delete) all of your emails" permission setting without thinking about it. I mean, even I double checked my permissions to make sure I hadn't accidentally given my email access away to a random plugin. What do you do about normal users (like my parents) who will gladly click Next and Confirm on every single popup in front of them, without even attempting to read it?

</comment><comment><USER7> Wait, apps can really read emails? As in the text of emails? Even archived emails?

Because for a lot of people that contains a ton of "password reset" emails with new passwords in plain text.

<comment><USER8> when you sign up for a service that does shit with your email, and give it access to your email account, of course the service can read your email.

This seems pretty obvious to me. There are many useful services that do this (SaneBox for example) but DUH how do you expect them to do anything intelligent with your email if they can't read it?

This is all predicated upon the user granting access to their email account though, so this is roughly equivalent to saying "People you sent a letter to can read your letter" ... duh that's why you did it.

<comment><USER9> _when you sign up for a service that does shit with your email, and give it access to your email account, of course the service can read your email._

The article isn't about some automated service looking at your e-mail. It's about actual humans reading it. Big difference.

<comment><USER10> Yes, that's the point. Granting access to an App, a person doesn't assume the all will copy out your email so that it can be read or analyzed by humans.

</comment></comment></comment></comment><comment><AUTHOR> It appears you can block app access by going to the "Apps with account access" page under 'Sign-in & Security' on your Google account page. I just checked on one of my accounts and there are a few apps like WordPress with basic profile access.

This page is hard to find and it's even harder to parse the meaning of the current settings, let alone track changes to them over time.

<comment><USER11> That page has a bunch of interesting stuff!

I assume this link works for all accounts? [https://myaccount.google.com/security?pli=1](https://myaccount.google.com/security?pli=1)

<comment><USER12> Wouldn't it be [https://myaccount.google.com/security?pli=1#connectedapps](https://myaccount.google.com/security?pli=1#connectedapps)

<comment><USER11> Yep, didn't notice you can anchor that. Same page, better link.

</comment></comment></comment></comment><comment><USER13> I don't understand the negativity in this thread. The whole point of email based service is to read users' email. Should we be categorically rejecting a class of application?

How much value is privacy vs. value of those services?

<comment><USER14> > Should we be categorically rejecting a class of application?

What you mean, "we"?

 _I_ categorically reject any third party getting their nose in my email, including Google.

> How much value is privacy vs. value of those services?

Correcting the question to "is the loss of privacy worth the value provided", again, _my_ answer is absolutely not.

On this point, though, it is less about 'privacy' than it is trust. How much do you trust some random startup techbros with more entitlement than sense with everything in your inbox? Not that that's every startup, but it is enough of them.

But in general, I frankly don't understand why anyone invites random third parties to read their mail. That's crazy to me. Maybe select family, or (if I were way richer) agents with a contractual relationship.

<comment><USER15> >>But in general, I frankly don't understand why anyone invites random third parties to read their mail. That's crazy to me. Maybe select family, or (if I were way richer) agents with a contractual relationship.

It's ignorance, plain and simple. Most people (even those with tech experience) don't understand, or care, about the reach of that the companies they rely on have.

Convenience comes at a price, always.

Even if Google were to simplify their ToS and app permission notices as much as possible, a good portion of users would blindly click 'o.k.' and move on.

</comment></comment></comment><comment><USER16> I use Google/Gmail account to login into multiple apps. All the apps have some of these three permissions - (1) View your basic profile info (2) View your email address (3) View your phone numbers.

Are these permissions strictly enforced? I know that Google employees can read my emails (under some specific cases), but can third party app developers also read my emails?

<comment><USER17> > Are these permissions strictly enforced?

Yes, each of those items corresponds to an OAuth scope. If you try to make an API call for data that isn't covered by the OAuth scopes you have access to, you'll just get an error.

Developers can add broader OAuth scopes to their apps at any point, but if they do then all their users will need to re-authenticate and will see that the app now requires additional permissions.

C.f.: [https://developers.google.com/gmail/add- ons/concepts/scopes](https://developers.google.com/gmail/add- ons/concepts/scopes)

</comment></comment><comment><USER18> Apple iOS does not have permission for apps to access emails at all, if I'm not mistaken.

</comment><comment><USER19> Its not just Google, Microsoft Office 365 also supports the use of Oauth tokens to read email.

</comment><comment><USER20> How is it a secret?

<comment><USER21> Most users of these products are _non_ -technical, among other things. They have no idea that they should even consider that something like that is happening.

> _i 've been trying to explain this to my wife for a while and struggle with > it lol._

A losing battle, it seems. I find people can't make the pattern connections about good and bad hygiene. So explaining one example doesn't prevent similar behavior in another, even for really "obvious" stuff. Kinda drives me a little crazy.

<comment><USER22> Users don't read. There are Consent screen which clearly explain what kind of access the application will have to your Google Account.

Edit: Formatting & Spelling

<comment><AUTHOR> That said, there's a difference between understanding what privilege you are granting and understanding the implications of that grant.

For instance, Google help pages [0] just talk about "Full account access" and "View your basic profile information." What about apps that can view your calendar? That's in between. What information do those apps actually see? What can somebody do with the information that I might not like? These are hard questions to answer with the information Google gives you.

[0] [https://support.google.com/accounts/answer/3466521?hl=en](https://support.google.com/accounts/answer/3466521?hl=en)

<comment><USER23> > understanding the implications of that grant

Grant an application permission because it asked to in order to fulfill a request to handle one particular thing about one particular email. Instead, grant access to your entire email account, not get notified of which emails the application accessed, and get upset because the application exceeded what you desired to grant.

</comment></comment></comment></comment></comment><comment><USER18> Original article title is "Tech's 'Dirty Secret': The App Developers Sifting Through Your Gmail"

Could moderators fix it, please?

</comment><comment><USER24> Does anybody have a non-paywall link?

Edit: Found this re-reporting of the story: [http://www.businessinsider.com/google-allows-app- developers-...](http://www.businessinsider.com/google-allows-app-developers- to-read-peoples-gmails-report-2018-7)

<comment><USER25> Two options for passing the paywall:

1\. Facebook trick: [https://www.fullwsj.com/articles/techs-dirty-secret-the- app-...](https://www.fullwsj.com/articles/techs-dirty-secret-the-app- developers-sifting-through-your-gmail-1530544442)

2\. Decluttered via Outline: [http://outline.com/gZTuBC](http://outline.com/gZTuBC)

<comment><USER26> 3\. Click the "web" link underneath the title link.

</comment></comment></comment><comment><USER27> This is getting quite irresponsible and sad. The reason nothing too terrible(apart from election tampering) has yet happened is simply because the current market demand for developers prevents us from engaging in malicious behaviour.

However, once there's a market downturn, this data will be used for criminal purposes in no time. The malware industry in east european countries with good engineering talent exploded in the 90s after their economies collapsed. But who cares right?

I feel like this level of naivety towards powering interoperability with brute openness today is just plain stupid and will lead towards a backlash or risk all out witch-hunt against developers and intellectuals in general. That risk is becoming unacceptable in my opinion and it is worth it to start regulating a bit our profession.

<comment><USER28> > The reason nothing too terrible(apart from election tampering) has yet > happened is simply because the current market demand for developers prevents > us from engaging in malicious behaviour.

That doesn't seem to be how humans work. Groups that want to do malicious stuff are able to hire people too (eg electon tampering as you mention).

They'd probably have to direct their hiring efforts differently though. Probably towards known areas of er... scum and villany? ;)

Seriously though, they managed to hire people for the electon tampering, so at least it shows it _can_ be done.

<comment><USER27> Yes it can be done, but the probability of malicious players finding someone competent enough is quite low. It's unlikely you would help a shady organization when you have a high salary and a nice life.

However this also means that security relies on the state of the market rather than on good code.</comment></comment></comment>


Root Cause Analysis of a Non-Deterministic JavaScriptCore Vulnerability - <AUTHOR> http://blog.ret2.io/2018/06/19/pwn2own-2018-root-cause-analysis/ <comment><USER2> I use rr all the time; it's amazing. In fact, I would say that if your debugger can't go back in time, then you're using the wrong debugger.</comment>


We should replace asm.js with Rust - <AUTHOR> http://ivoras.net/blog/tree/2014/Oct-we-should-replace-asmjs-with-rust.html <comment><USER3> I disagree with the Javascript hate here, and the author is missing the point.

JS is (at least until ECMA6 rolls in) a small, tidy language. It's got some bad parts, but at its core it is quite manageable. It's useful precisely because it ignores a lot of the implementation details that make languages like C or Rust more performant. I'm sick of people saying "JS is bad hurr durr let's replace it with $PREFERRED_HIPSTER_LANGUAGE".

The real problem is that stupid people write javascript, lazy people write docs for javascript, and academic people write language extensions. What happened to C++ and made it a mudball is what is slowly happening to JS, and what will eventually happen to Rust if it gains any traction.

Instead of replacing asm.js, we should look at a dedicated and simple programming environment for all browsers that care about performance-critical code. That environment should be specified as a machine, _and then left the hell alone until some major change in technology alters the computer engineering therein_. That way, people can program the performant bytecode in whatever they want (ASM.js, Rust, D, C, Clojure).

The thing we _really_ need to be doing is encouraging more conservatism in our work and tools: fewer and better languages, fewer and better libraries, more and better documentation. You know, what any other field might consider _engineering_.

EDIT: On a related note, the W3C and WHATWG and Khronos folks should all only be allowed to propose things every three years, with all voting done in 6 months. And then limited to adding 2-3 features, tops. Similar for the JS and IETF folks. This is absurd: spend some time enjoying the fruits of your labors _before adding more shit that compounds the complexity of working developers ' lives_!

</comment><comment><USER4> > We should replace asm.js with Rust

I don't think there is much of an argument in the article for the idea that Rust is a nice drop-in replacement for JavaScript. Everyone seems to have a different opinion as to what JavaScript should be replaced by, and I see no clear leader in the debate at all.

Google of all the players on the web had a good go at Dart and it's been left as a language that transcompiles to JS. Languages like TypeScript, CoffeeScript, and dozens of others are all fixing JavaScript to an extent and then compiling into it. I think that's an acceptable solution to JavaScript's problems.

I think the author misinterprets what asm.js is actually meant for - <USER2> author gives the impression that asm.js is a very strict subset of JavaScript which programmers should start programming their web apps in. It's not that, it's pretty much a compile target for other languages.

Plus, since when have JavaScript bitwise operators been slow? They seen fast enough to me.

> While at it, what is stopping us to ditch JavaScript altogether?

Well, there's the huge issue of trying to replace JavaScript in every browser, which would take years. The author is right in that JavaScript was a bit of a 'toy language', but that doesn't necessarily mean it's a lost cause. Removing JavaScript from the web is going to be a lot harder than adding it.

We're better off just using JavaScript as a compile target if it becomes unusable.

</comment><comment><USER5> Asm.js still runs in browsers that don't support it. Slowly, but it runs. Rust would not be able to do that unless it came with a JS recompiler from Rust to JS. Not that it couldn't work, but it would be quite strange.

</comment><comment><USER6> I like your idea. When can we expect a prototype? Also, will you use WebKit directly (a la Python-WebKit) or branch Chromium (a la Dartium)?

<comment><AUTHOR> Not the author, but I just thought this post might cause some nice discussion.</comment></comment>