Just Delete Me – A directory of direct links to delete your account - <AUTHOR> https://backgroundchecks.org/justdeleteme/ <comment><USER2> > Hacker News

> Impossible

Not sure how I feel about this one. I think it's a nice gesture to respect someones wishes to delete their contributions regardless of the technical fact of external archives etc.

<comment><USER3> There is double standard favoring HN. If Reddit or Facebook didn't allow you to delete your account or comments and said it wanted to maintain a permanent record of you, they would get eviscerated.

There are many questions going back on HN itself and the answer had always been no, but from what I understand they have renamed a few accounts. But it isn't something that they will apparently do for everybody.

<comment><USER4> Reddit doesn't allow you to delete your account either. You can only "deactivate" it, to delete posts you have to do it manually. Since the Internet has the attention span of a gnat, I can find no plausible justification to not delete one's contributions automatically. At most, a site may delay the delete by a few weeks out of respect for other users. After that, all conversations have long died and measurably nobody cares. Other than the Twitter cancel mobs.

<comment><USER5> > Since the Internet has the attention span of a gnat, I can find no plausible > justification to not delete one's contributions automatically.

People often say things that have useful information in them?

<comment><USER4> The number of readers of forum comment decays exponentially over time. Is anyone reading years old forum comments looking for insights?

<comment><USER6> It happens rarely, but it happens.

The first Usenet posts of Linus regarding Linux, or of Mike Godwin's coinage of Godwin's Law come to mind.

The question of how to determine cultural relevance is a hard one. Ordinarily, say, social utterances or discussions wouldn't qualify. If a participant or subject of that discussion ends up in a socially-significant role (high office, head of a major company, etc.), that might change.

Contexts vary, and can change over time.

At the same time, records _are_ lost with time, there is a forgetting curve, and a few high-water marks stand out, though even those crumble in time.

Looking at HN's top-ever stories is an interesting exercise (either Lists or Algolia's search w/o any terms should give this).

</comment></comment></comment></comment></comment></comment><comment><USER7> Useful website, but years out of date and unmaintained.

The actively maintained community fork can be found at [https://justdeleteme.xyz](https://justdeleteme.xyz).

Repo: [https://github.com/jdm-contrib/jdm](https://github.com/jdm-contrib/jdm)

<comment><USER8> That site says digg is "hard". When digg had a comment structure similar to reddit, I used to comment quite actively, but too many political types were following me and creating a weird echo chamber, so I asked them to delete my account. 15 minutes later, my account and all my comments were gone. Maybe something changed when they removed that structure, I suppose.

<comment><USER9> When you say you "asked", do you mean you had to write a message to someone requesting deletion? Because that counts as hard. Ideally the site should respect your use of a simple button.

<comment><USER8> Fair point. I submitted feedback to it was a few words and two clicks.

</comment></comment></comment></comment><comment><USER10> For a minute, I thought these were _direct links_ to delete your account, meaning that going to these links would delete your account immediately, a bit like like Super Logout (DO NOT CLICK [https://superlogout.com/](https://superlogout.com/) OPEN IN INCOGNITO TAB).

<comment> yjftsjthsd-h I'm surprised that isn't blocked by cross-site scripting prevention or something along those lines. Shouldn't forcing logout require that you have the cookie that proves that you're logged in in the first place?

<comment><USER10> Any site that has a GET route to /logout that does not check the referrer is vulnerable to this iframe/img attack.

<comment> yjftsjthsd-h It really shouldn't be GET anyways; that's asking for trouble.

<comment><USER11> Some of the pages that are exploited do use POST though. If it accepts authorization through a cookie and doesn't require an XSRF token or JSON content type, it is probably vulnerable.

But yes in general making actions happen in response to a GET request is generally a bad idea, since these are often cached and considered "safe" to retry.

</comment></comment></comment></comment></comment><comment><USER12> I feel kind of uncomfortable commenting on HN, especially after reading this answer by Jacques Mattheij [1] with regard to deleting accounts:

> _If this is to 'unsay' stuff that you wrote in the past then that's a good > reminder to think twice before you hit that submit button lest you cause > someone needless work._

It sounds like a big "screw you" to me. It would have been way nicer to say something like "sorry we don't have time/resources to add this feature".

[1] [https://jacquesmattheij.com/the-unofficial-hn- faq/#deleteacc...](https://jacquesmattheij.com/the-unofficial-hn- faq/#deleteaccount)

</comment><comment><USER13> I dunno why ppl say it is so hard to delete social media accounts such as Facebook or Twitter. It is actually very easy to do

get an affiliate link for something like gambling or anything spammy

post it as many places possible as fast as possible

in fact, merely posting any link over and over will nuke your account, guaranteed.

within minutes or hour max Facebook or Twitter will lockout and ghost your account for good, erasing all traces of it from existence. That way your account is gone and maybe you will make some extra $ in the process too.

<comment><USER14> This isn't deleting your account, it's just removing _your_ access to it. Don't do this. This will prevent you from actually deleting your data in the future because you're now locked out.

</comment></comment><comment><USER15> Since the comments are talking about Right to be Forgotten, there was a recent RadioLab podcast on that very subject: [https://www.wnycstudios.org/story/radiolab-right-be- forgotte...](https://www.wnycstudios.org/story/radiolab-right-be-forgotten)

Worth a listen; the focus is mainly on Cleveland'com's right to be forgotten experiment, where they are redacting or deleting old content when requested on a case-by-case basis. Regardless of how you feel about right to be forgotten, the episode makes a number of points both for and against that are worth hearing.

I'm personally undecided on the issue, but I did come away from that podcast with one very strong opinion: I hope we as a society make a decision, either way, and codify it into law (much as the EU has done). Without those laws, we're forming kangaroo courts where small groups of biased individuals get to decide _who_ has the right to be forgotten. Yikes.

I would also add the addendum, specifically for the HN audience who more often than most understand the concept that the "internet forgets nothing." Don't let the perfect be the enemy of the good. If we do believe the right to be forgotten is an overall good thing, let's do it, even if the system won't wipe out _all_ instances of a piece of information. There's a tangible difference between something being the first Google result versus being on the second page.

</comment><comment><USER16> As a principle, I never work on products that employ dark patterns, such as making account deletion hard or impossible, to control their users and/or content. I find it sad that we even need a directory for what I consider to be a fundamental option.

<comment><USER16> I find it even more sad that this current medium, HN, is guilty of this. Sigh.

</comment></comment><comment><USER17> I've always wondered what's going to happen when CBP finds out I have no social media accounts. You can't find me on Facebook, nor follow me on Twitter, I'm not Linked In, etc. I am a citizen so I think they will just have to be unhappy about it. But I imagine that before things get to that point there will be a lot of threatening and posturing.

</comment><comment><USER18> Glad this is continuing to get attention here on HN. There's an automated paid service called the same thing - [https://www.abine.com/deleteme/](https://www.abine.com/deleteme/) \- but it has blogs with additional info on how to do it yourself, too.

</comment><comment><USER19> Thanks for sharing. I just recently deactivated Instagram for ~3 weeks, logged back in to download my photos, and then tried to deactivate again.

At first, it failed and threw an error message about enabling cookies which made no sense. Then I got a pathetic error message stating "Sorry, you can only disable your account once a week. Try again in a few days." Pretty pathetic.

[https://imgur.com/a/5yHJM1Y](https://imgur.com/a/5yHJM1Y)

</comment><comment><USER20> Tangentially related, but I'd love a list of links to places where you can export your personal data (eg Google Takeout).

</comment><comment><USER21> How hard is it to get your account closed (not necessarily deleted) on those services that make it hard or impossible to delete your account?

I know it's not the same, but might be good enough for some purposes.

Perhaps if the service still doesn't close your account upon request, they may still do it due to terms-of-use violations or service abuse. (evil smirk)

<comment><USER22> they may close if you violate terms. but you can't be sure if the data was actually deleted. I bet most keep it.

</comment></comment><comment><USER23> It would be nice if they cataloged the Forgot Password links so folks could see if they actually have an account at these services.

I've been on the Internet for almost 30 years, they accumulate.

Edit: Just tried hitting forgot password on the first 10 sites. Surprising how many directly tell you that account doesn't exist.

<comment><USER24> I've been thinking of writing a script to go through my emails and make a list of all the "welcome" emails, which should roughly approximate all the accounts I registered.

And then another one for "you are now subscribed to our newsletter" lol

<comment><USER25> To this day I regret having pruned really old emails on some of my email accounts cause I cant go back. This was long before Gmail had an archiving feature.

<comment><USER26> As far as I remember, even in beta, Gmail had the option to archive. What set Gmail apart from other free email services was the large amount of email storage that was always slowly increasing. I don't remember my first google addresses but I don't think I've ever needed to delete an email.

<comment><USER25> I wasn't deleting due to storage, just to clean up my inbox. I was on Gmail for the beta in 2004 (or was it sooner?) and I don't recall an archive button, maybe it was just white noise to me at the time, I was a young teenager back then.

</comment></comment></comment></comment></comment><comment><USER27> Very useful.

Interestingly, with few exceptions, the worse user experience correlates with the hardest it is to delete a profile.

> GoDaddy Accounts are apparently retained "to comply with [their] legal > obligations" though you are able to clear out most of your information by > editing your profile.

That's always a good idea.

</comment><comment><USER22> This is a nice guide, but it's very outdated. I removed battle.net recently without much hassle.

<comment><USER28> So how about fixing it? [https://github.com/justdeleteme/justdelete.me](https://github.com/justdeleteme/justdelete.me)

<comment><USER29> No PRs have been merged since 2017.

</comment></comment></comment><comment><USER30> When you delete (or soft-delete) your Facebook account, it seems there is no way to also delete your corresponding Messenger account.. I've tried many times, to no avail.. is it simply possible?

</comment><comment><USER31> It looks like this web site is unmaintained and incorrect in at least the Discord case. I see a PR open since 2017, and a comment on it saying 'this site is unmaintained.'

</comment><comment><USER32> Now if there was only away to delete your information from recruiters' databases. I still get cold calls by recruiters who get my number from a ten year old resume.

</comment><comment><USER33> What is this backgroundchecks.org? Last time I saw this site, this wasn't a part of it. The site itself doesn't give any information about who is behind it.

<comment><USER34> Apparently, they have bought it from the original creators, but never updated it since.

</comment></comment><comment><USER34> This is awesome. I was thinking of going through my online accounts and deleting the ones I don't use anymore, this is going to make things much easier!

</comment><comment><USER35> Amazing that they are still around. I first used it about six or seven years ago. Haven't seen it mentioned anywhere in a very long time.

<comment><USER34> The original creators sold it and now it's not longer updated. Last commit on GitHub is from 2017.

<comment><USER36> [https://news.ycombinator.com/item?id=20861577](https://news.ycombinator.com/item?id=20861577)

</comment></comment></comment><comment><USER37> Deleting accounts opens for hijacking and impersonation. Best is to just log out and abandon them.

</comment><comment><USER38> Google is "easy" and Youtube is "impossible". Is this reliable?

</comment><comment><USER39> Brilliant.

It's a time saver

When someone clicks on one of the links, make sure it opens in a new window.

Could be cool

</comment><comment><USER40> Cannot find NSA website

<comment><USER14> What do you mean, Facebook is right there

</comment></comment><comment><USER41> Deletion of _accounts_ , I have no problem with.

But I have a big problem with deletion of _content_ , outside of a window of time similar to that of editing posts.

My opinion is, if you write it, you publish it, then you don't have the right to leave such a big hole in a discussion. I'm sick of being on various social media and seeing "deleted" "deleted" "deleted".

I'm fine with removing your name from the posts, but other than that, if you say it, you shouldn't be able to run from it.

GDPR isn't some shining beacon of light, it's just a framework of policies set forth by people of power. GDPR has the potential to be just as damaging as the improper uses of PII (for example, look at what happened to the comments on a crapton of MS blogs when they transitioned to a different backend - all the comments were _wiped_ because it was too much work to both preserve those comments and ensure GDPR compliance).

<comment><USER42> That's your opinion. The EU's opinion is that you have the right to be forgotten - though this is separate from GDPR.

<comment><USER41> I think the "right to be forgotten" should be limited to certain specific instances regarding long-ago conduct. I don't understand this desire people have to participate in society, then try to completely pull out and say "oh, not only am I not participating, but I want to also _redact every piece of content I ever wrote_ ". Forget the person, not their contributions.

</comment></comment></comment><comment><USER43> > Backblaze

> Impossible

Now this is disappointing for a backup company. Hope yevp sees this and weighs in. Is it even impossible for a EU citizen filing a GDPR request?

<comment><USER34> I think it has to be, otherwise Backblaze is not allowed to offer its services in the EU.

</comment></comment><comment><USER44> Kudos to GDPR obliging companies to allow users to delete their personal data.

<comment><USER45> People say that but my paranoid side is convinced that no real deletion happens :-/

<comment><USER25> Its likely not deleted in backups is my suspicion. I dont know what policies some companies have in regards to backups.

Also some companies always had the option for years.

One good test might be to create Facebook and instagram accounts, then upload images, save direct links to those images. Delete the accounts and see.... If the links work after clearing cache / a few days / weeks / months... Then yeah they just keep your data but detach it from friends and your email / password.

<comment><USER46> Indeed it isn't deleted from backups. And according to [1] it doesn't have to be. In the company I work for it's handled the way that we have a list of subjects (their id in database) who requested deletion and after restoring any backup the subjects' data from the list is deleted again.

[1]: [https://www.itgovernance.eu/blog/en/the-gdpr-how-the- right-t...](https://www.itgovernance.eu/blog/en/the-gdpr-how-the-right-to-be- forgotten-affects-backups)

<comment><USER47> So do those records get deleted eventually? Or do they live on forever like some kind of ghost?</comment></comment></comment></comment></comment>


Facebook Just Bowed Out of the Check In War With Foursquare - <AUTHOR> http://www.betabeat.com/2011/08/23/facebook-just-bowed-out-of-the-check-in-war-with-foursquare/ <comment><USER3> Facebook Places is the feature I've been using the most on Facebook since it was introduced. And I can probably say the same thing about the rest of my circle of friends. It is very sad if they are intentionally going to limit such an awesome and well designed feature (way, way better than anything Foursquare, Gowalla or Twitter offers). Especially if they are going to require you to attach a status message or photo to every check in. Most check ins I do is simply to passively tell my friends where I am to coordinate social gatherings in an informal way without having to attach any greater meaning or social significance to the fact. I'm sharing my location. I might not necessarily be interested in sharing anything more than that.

It's a bit like saying: "Oh, by the way. I might be hanging out down at the bar tonight. Swing by if you feel like it". Without actually having to say it out loud.

edit: The more I think about this, the more angry I get. It feels like the Google+ nerd mafia is slowly destroying Facebook through bad influence. They simply don't understand how and why Facebook works and is popular. The whole privacy and circles stuff for example, which is just stupid. No normal person cares about that. Facebook is a tool for sharing and connecting and to limit that in the name of privacy is insanely counterproductive. It only adds a wet blanket of politics on something that is better understood through social psychology and sociology. Facebook used to understand that, but now it seems they've started to become distracted. Sad really.

<comment><USER4> Wow, really? Google+ is an incredibly well designed tool, done by people actually working in psychology, sociology etc. rather than Facebook's geek centric culture of push updates now, worry about consequences later. If anything, what Facebook has been doing was to progressively push people trade off privacy for convinience and while they whine and complain about it for a while, they get used to it.

I'm not saying plus will win the social wars because Facebook has a lot of people because it built up a lot of momentum. But if it looses it won't be because people found it too nerdy / geeky or whatever. It just means Facebook had a huge advantage and they didn't let it slip.

<comment><USER3> The macro difference in philosophy between Facebook and Google+ is that Google+ encourages social silos and obscurity (typical characteristics of geek/hacker culture, inherited from American liberalism and Californian utopism), while Facebook on the other hand encourages emphasis on context and sharing (in the two way interactive sense, not the one way broadcasting sense that for example Twitter promotes).

</comment></comment></comment><comment><USER5> Posting a status update with a location tag is the _same thing_ as checking in at that location. You can tag people in your status updates, and coupled with a location, you can still tag people in with you.

The functionality that foursquare (and apps utilizing foursquare's API) offer are still possible, perhaps even easier.

Facebook is still going to win this part of the "war".

<comment><USER6> Exactly. Facebook is not exiting the location game, but rather opening it up to a much broader audience.

I presume Facebook found that the people who used check-ins was a subset of the people that used tagging functionality, so they scrapped the check-in model and focused on making location accessible in a format that a) more people are comfortable with and b) is consistent with the rest of the Facebook experience.

</comment></comment><comment><AUTHOR> Not quite sure Foursquare is in a better position now that Facebook is bowing out. Is it possible this means there's no market to be had?

<comment><USER7> I've always thought the math on this was sketchy. Where are there enough users concentrated to make checkins commercially useful? I just can't see it, but I reserve the right to be totally, completely, wrong.

<comment><USER8> How about a conference? Music festival? I was at Outside Lands in GG park a few weekends ago and (given the price of a 3-day pass was $200) there were plenty of location aware smartphones used by ~60k people.

<comment><USER7> Yeah, I suppose, but how do you get from that to the multi-hundred million dollar exits demanded by the investors on these deals? Compare those 60k on one day to the multiple millions _every day_ that read local newspapers sites. How do you make something more and more and more local without reducing the number of people who care about it to near zero?

For example, at a conference like SXSW, you have x-thousand attendees with their smart phones. You can track where they all go for the whole event. But the number of people who would find that data useful (by my way of thinking at least) is quite small - the local vendors, the other attendees (who won't pay a dime for the service), who else?

How do you sell it to them and how much can you get? How do you monetize that in a way that isn't just glorified banner ads to a small market segment? How do you make it HUGE? That's where I have trouble.

</comment></comment></comment></comment><comment><USER9> According to Jay Yarow, Facebook is quietly phasing out Places. Instead any status update can be tagged with location.

<http://www.businessinsider.com/foursquare-facebook-2011-8>

MG Siegler Confirms - <http://techcrunch.com/2011/08/23/facebook-location- tagging/>

<comment><USER10> "Phasing out" sounds like the incorrect term. If places are part of status updates it sounds like "making integral in the product."

</comment></comment><comment><USER11> Bowed out of the checkin-war? How about just WON the check-in war by making it an integral feature and de-productizing it out from under 4square et al's feet?

</comment><comment><USER12> I don't think this signals a victory for Foursquare. Do they even make any money? I don't use the service myself, but my only interaction with it is rampant annoying updates from people I barely even know on Facebook. I never thought the "check-in" was a terribly useful feature anyway, but more of a cool new display of the power of geolocation.

I always thought it would be far more useful to build these services out as a way to allow people to quickly find each other in one-to-one, as opposed to unsolicited one-to-many, updates. For example, I think a more common use case would be to pull out a phone and alongside a contact have a single button to query for location, then on the other end have the user just as easily transmit his or her location. That would fix the privacy concerns as well.

</comment><comment><USER13> I actually found Facebook's check in functionality to generate more discussion among friends than Foursquare. The big problem from me is that I wish they could have come up with a better way to restrict who I'm showing where I'm at similar to Google+ circles.

<comment><USER14> With the new location changes described at <https://www.facebook.com/about/location> (which will start rolling out soon), you can attach a location to any status update, and this means you can use the status update privacy controls to control who see where you are - for example, using a friend list to only share with a subset of your friends.

</comment></comment><comment><USER15> Did they publicly announce that they are getting rid of Facebook places? My circle of friends are still checking-in everywhere via Facebook. On a side note I use Facebook check-ins over Foursquare because of the tagging feature.

<comment><USER16> Read the comments on the article for a far better analysis / explanation than the article itself.

In fact, checking in will still be around, and location info will be able to be attached to -any- content on FB.

<comment><USER9> When they launched places, the explicitly copied Foursquare and the check-in model. Zuckerberg named dropped Foursquare at the unveiling of Places.

They are now getting rid of Places. From the Foursquare blog post:

"As a part of this, we are phasing out the mobile-only Places feature. Settings associated with it are also being phased out or removed. (You can read more about how location works and settings affected here: <http://www.facebook.com/about/location)>

Yes, location will still be part of Facebook, as noted by Betabeat. But it will not be executed with the "check-in" model foursquare pioneered. The new way will be closer to tagging a user in a Google+ conversation.

</comment></comment></comment><comment><USER17> The analysis in this article is just plain wrong, starting with the headline.

Incorporating location-tagging directly into the status update UI (and extending the ability to tag a location to photos and videos), does not mean Facebook is bowing out of any "war"... It means they are honing in on the right location feature set for their userbase, rather than simply copying Foursquare.

I predict location-tagging of status updates and content will gain massive adoption within Facebook and quickly dwarf Facebook Check-In, which by the way, is staying part of Facebook's mobile apps (at least for now).

</comment><comment><USER18> Curious to see where they move check-in and location integrations. I've noticed they've been using my foursquare data to show me "Which place do you like better?" in the sidebar. They could do a lot more recommending of places like restaurants, bars, stores, and tie in deals.

<comment><USER14> As described in <https://www.facebook.com/about/location>, you will soon be able to "check-in" by attaching a location/venue and tagging the people you are with to any status update, whether it is text or a photo or a video - <USER2> you can now do it from your computer, rather than just from your smart phone.

</comment></comment><comment><USER19> Weird, within my social group foursquare has hardly been used but Facebook places is regularly. I use it but have no intention to maintain a separate social profile just for it.

</comment><comment><USER20> I wonder how much of this is due to Facebook deciding that location check-ins aren't that big a deal. Most of my friends still don't "get" what is the big deal with this.

<comment><USER21> Because quite frankly they aren't a big deal right now. Yes, of course it has a huge potential benefit, but it's not there. So why should they care about it.

</comment></comment><comment><USER22> Wait, without the checkin, what happens to Facebook Deals? This doesn't make a lot of sense, they must be removing it to relaunch it.

</comment><comment><USER23> just for shame-less plug: we provided badges functionality via mashup with FB API: <http://qrpon.linkstore.ru></comment>


How time flows: Gutenberg press time vs. Internet time, and predictions - <AUTHOR> https://mbuliga.github.io/gutenberg-net.html <comment><AUTHOR> There is now a very amusing python3 script at this gist [1], by 4lhc. It lets you type a recent or old time and it gives you a pair of events, recent and old.

There's one more correspondence between East India Company and Google, found by 4lhc.

[1] [https://gist.github.com/4lhc/c695e70e59a177fd3278c0818ff2084...](https://gist.github.com/4lhc/c695e70e59a177fd3278c0818ff20842)</comment>


Ask HN: Anyone looking for high school interns? - <AUTHOR>

My friend was just rejected from two surprisingly competitive programs for high school students.
It seems like there is small demand for high school summer interns, so even some bright and high ranking students end up with nothing to do. Anybody looking for an outstanding student with great graphic design skills and can hold her own in Java? <comment><USER2> If there's a high school or college grad looking for an internship/part time job in Santa Monica ping me.

<comment><USER3> Likewise.

Ping me if you're in the Los Angeles area looking for a developer internship.

</comment></comment><comment><USER4> where is your current location ?

<comment><AUTHOR> She's located in the Bay Area. Good question, thanks.</comment></comment>


Researchers produce nearly-pure rare earth concentrates from coal - <AUTHOR> https://uknow.uky.edu/research/uk-researchers-first-produce-high-grade-rare-earths-coal <comment><USER2> Amazing how nobody who reports on this puts forward any numbers.

This Appalachian coal is said to have over 300ppm of rare earth oxides in it.

That means for every ton of coal, we're talking about 300g of material. Compare conventional rare earth ores, where for every ton, we're talking about 90kg (Mountain Pass).

It's nice and all that these things are in coal, but thermal coal's already on its way out, Appalachian thermal coal especially due to its high cost and high sulfur content, and a couple pennies of rare earths per ton is a worse use of resources than Powder River coal + actual rare earth mining.

<comment><USER3> How much ore is available at these conventional rare earth mining sites I wonder? Even with a 30x lower yield it may be that we have 100x more easily mined coal. When it comes to the so-called rare earths my concern is more about the waste from the refining process than the yield. The press release mentioned 'environmentally-conscious' process, but that is the kind of weasel word that covers a variety of sins so I would need hard data.

<comment><USER4> Apologies for the nitpick, but I think you mean 300x and 1000x (90000g / 300g).

I don't know whether there's 1000 times as much coal available as rare-earth ores, but it might skew the argument a little compared to 100x.

<comment><USER3> Yeah, conversion fail on my part. OTOH, I would not be surprised at all if the difference in known deposits was more than 1000x in favour of coal, if only because we have been looking for it for so long. 300-1000x does make process throughout and efficiency a bit harder to match though.

</comment></comment></comment></comment><comment><USER5> Unanswered questions:

\- what happens to the carbon from this process? Does it end up as atmospheric CO2?

\- what happens to the energy available from that carbon? Thrown away or used to run the process?

\- can't you just run this on fly ash?

\- how does this compare to regular mining?

\- what happens to everything else in the coal, such as sulphur and thorium?

<comment><USER6> The idea is to insert it into the existing coal consumption pipeline:

[https://uknow.uky.edu/research/honaker-awarded-6-million- dep...](https://uknow.uky.edu/research/honaker-awarded-6-million-department- energy-rare-earth-element-recovery-pilot-plant)

It sounds like it is only going to consume byproduct of the washing process.

</comment></comment><comment><USER7> Scandium is mentioned as one of the "rare" earth elements readily recovered from coal. I can't speak for the viability of this process, but cheap scandium would be a great outcome. Small amounts of Scandium greatly improves the tensile strength, fatigue behavior and other properties of Aluminum.

</comment><comment><USER8> I was an engineer at a company attempting to extract rare earth metals from fly ash using a solvent method (supercritical CO2). Similar to how caffeine is removed from coffee.

There aren't a lot of rare earths in coal/fly ash but even modest coal plants produce tons of fly ash daily.

<comment><USER9> Also fly ash is a pain in the ass to get rid off. I've heard about companies re-using it in concrete products and other construction materials. Even if the value produced is low, any profit is better than dealing with the cost of safely disposing it.

<comment><USER10> Wouldn't that make the resulting concrete unusually radioactive?

<comment><USER9> No, the idea that fly-ash is highly radioactive is a faux created by the nuclear lobby. Some coal is more radioactive than other, but in general they're very safe from this perspective. The real problems are is it's corrosiveness, it's heavy metal content (if any), and the particle size.

<comment><USER10> I live and learn, thanks. The particle size I assume is an issue for pulmonary reasons? So sequestered in concrete that wouldn't be an issue, smart.

</comment></comment></comment></comment></comment><comment><USER11> Waiting for someone to tell point out why this process is super-toxic, or prone to ruining the environment in some other fashion, or some other bad news.

Also curious if anyone can to weigh in on how this might affect China's (supposed) rare earth monopoly, since I presume that was part of the motivation behind the research. Same thing for the coal industry in general.

<comment><USER12> IMHO, the future is solar energy and storage. If coal wants to remain significant in long term, it has to find arguments.

<comment><USER5> Coal is not conscious, it cannot want.

The coal _industry_ may want, but like everyone else they're not guaranteed relevance in the long term. Going out of business is capitalism's way of saying your product is no longer required.

<comment><USER11> > _Coal is not conscious, it cannot want._

This is pedantic to the point of wilfully not wanting to understand that the coal industry is implied with that statement. But if we're going down the pedantic route:

> _Going out of business is capitalism 's way of saying your product is no > longer required._

 _Demand_ and _need_ are correlated, but not the same. Capitalism works with the former, and also has an entire industry devoted to creating demand when there is no need. I'm not saying capitalism is bad - it is an amoral system and a very effective tool for a lot of things. By itself self-regulates only to the vested interests of the people wielding the tools within the capitalist system, and this does not have to align with societal or planetary needs.

<comment><USER13> Capitalism exclusively aligns with societal needs, if society does not need or want something we don't buy it, the business evolves or goes bankrupt. Capitalism is not just amoral, but also is democratic in nature.

<comment><USER14> If society does not need or want something, there is an entire industry devoted to convincing society otherwise, that uses psychological and social modelling on vast and detailed databases of the targeted population.

Democratic systems these days are not followed, they are moulded.

<comment><USER13> Really, because I thought there was debate of whether or not advertising actually works, especially online advertising.

However, at the end of the day it won't matter. Advertising is available to all companies, we end up with a tug of war over peoples attentions, which will probably result in advertising becoming ineffective.

<comment><USER15> > _Really, because I thought there was debate of whether or not advertising > actually works, especially online advertising._

No, there is no debate. No one seriously argues that companies pour half a trillion dollars into advertising that doesn't work.

> _However, at the end of the day it won 't matter. Advertising is available > to all companies, we end up with a tug of war over peoples attentions, which > will probably result in advertising becoming ineffective._

It does matter. If the tug of war is between two companies that want you to buy their version of X, there is still no one advertising that you should _not_ buy X at all. This is known as growing the market. Demand is still created in this case.

<comment><USER13> [https://www.forbes.com/sites/danielnewman/2015/04/28/researc...](https://www.forbes.com/sites/danielnewman/2015/04/28/research- shows-millennials-dont-respond-to-ads/#2fc4bf785dcb)

It's at least not a new thought. Mostly though I'm skeptical that advertising is subverting capitalism.

Is demand created though? How do you know that some people weren't just unaware of the product before, and would have gladly bought it had they known of it.

Because not buying something is the easiest, and default position.

<comment><USER15> That article has very little concrete info in it, but the core is not that advertising doesn't work but that advertising to millennials effectively requires updated approaches. I certainly would not say that advertising "subverts" capitalism. Advertising is part of capitalism. It always has been. You can't get your wagon repaired if you don't know where the wagon repair shop is.

Advertising is also part of the capitalism chain. Companies demand advertising, so it exists.

> _Is demand created though? How do you know that some people weren 't just > unaware of the product before, and would have gladly bought it had they > known of it._

You're describing creating demand. Someone didn't want something because they didn't know it existed. Now they want it. This is the most effective advertising possible.

> _Because not buying something is the easiest, and default position._

Ok? If you exit the default position because you saw an ad, the ad worked.

<comment><USER13> > Advertising is part of capitalism.

Because the core principles of Capitalism could function without advertising, I think this is incorrect.

The main point I was trying to make was that advertising does not remove the inherent Democratic component of Capitalism.

> You're describing creating demand. Someone didn't want something because > they didn't know it existed. Now they want it. This is the most effective > advertising possible.

The advertiser didn't really create the demand though, it existed before them?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> What national defense application is yttrium used for?

<comment><USER3> Yttrium barium copper oxide is a class of materials that exhibit superconductivity at (relative) high temperatures. This has a lot of applications and some of them are defense-related.

</comment></comment><comment><USER17> I do hope coal companies come to realize coal is worth far more in valuable rare earth elements than burning it. Maybe then they'll stop pushing their coal fueled pipe dreams.

<comment><USER18> Unfortunately for your hopes, it looks like the goal of this process is to be able extract rare earths from the coal and still burn the carbon. That would make coal more viable as a fuel, rather than less.

</comment></comment><comment><USER19> I'm wondering why rare earths end up in coal in the first place.

<comment><USER2> Coal (at least most of the time) comes from decaying plants.

Before the plants decayed, they pulled up all manner of minerals from soil. Rare earths behave similarly to iron, so if a plant can uptake iron from its soil (it can) then so can it uptake rare earths.

There are numerous instances of field reclamation from mercury contamination specifically by use of plants to leach the mercury from the soil, then harvest, burn, and safely dispose of the mercury concentrate.

[https://www.fastcompany.com/3033295/cleaning-up-polluting- mi...](https://www.fastcompany.com/3033295/cleaning-up-polluting-mines-with- plants-plants-that-then-turn-into-precious-metals)

Same story as this except the latter occurs in a human lifetime, and we want the mercury out of the soil for fundamentally different reasons.

<comment><USER19> Very interesting, thanks!</comment></comment></comment>


Kalzumeus Podcast 5: Quitting Consulting Via Productization - <AUTHOR> http://www.kalzumeus.com/2013/07/17/kalzumeus-podcast-5-quitting-consulting-via-productization/ <comment><USER2> It was interesting to follow Patrick's reports few years ago, when they were specific and factual, but attempts to extrapolate from that into a field of full-on startup mentoring and coaching looks rather strange to put it mildly.

<comment><USER3> I think it's because you're looking at it like this:

1) BCC (And the AB testing, SEO, etc)

2) Appointment Reminder

3) ???

4) Mentoring / coaching / training

The part 3 was consulting, where people paid him money for 4, but presumably there's some NDAs prohibiting write ups the same as BCC. Appointment Reminder has always been a bit more secretive because of Patrick deciding between taking investment or bootstrapping. By not knowing the middle you think it's a huge change, but it's really not.

Ramit Seethi you can look at a similar way. How did he jump from a book in 2009 to having several products on what basically amounts to life coaching (dream job, earning money on the side, resume improvements, etc)? In only 3 years since the book he's convinced individuals to drop $2-15k on the promise that he can help them get a better job. To me that seems like a bigger jump than what Patrick has done, but I don't know the middle.

<comment><USER4> > How did he jump from a book in 2009 to having several products on what > basically amounts to life coaching (dream job, earning money on the side, > resume improvements, etc)?

The funny thing about Hacker News is you never know who's going to be reading your posts. Hi! I'm the person who convinced Ramit to quit his day job and do this blogging/product thing full time several years ago. I also know Patrick personally and it's an interesting comparison you are making between the two of them.

> In only 3 years since the book he's convinced individuals to drop $2-15k on > the promise that he can help them get a better job.

I understand the skepticism around Ramit's products, especially from the HN crowd. However, knowing Ramit and having been through his products as a reviewer, they are stellar, and the results he gets for his students are meticulously documented. That's not to say they're for everyone--as an entrepreneur myself, I didn't get as much value as a job-seeker would have, and Ramit is probably a couple years away from creating a product geared toward entrepreneurs.

Knowing both Ramit and Patrick, the main similarity I see is both have a deeply analytical mind. Neither takes anything for granted, and they're both fanatical testers...not just with marketing copy, but also with their products. Ramit goes to ridiculous levels to make sure his products are bar none the best out there. He spends hundreds of thousands of dollars a year on salaries and hiring the best people so that his products can be the top of their class.

Patrick is a bit different, as he got burned on consulting (I'm sure he'll tell that story when he's ready) and went back to focusing on products. He's newer to the info product segment than Ramit, and a little more gun-shy when it comes to aggressive sales. (Ramit uses more aggressive sales tactics because he strongly feels--and has the testimonials to back it up--that he does have the best stuff out there.) Patrick is more cautious, as a geek first and foremost, and someone who built up his list through Hacker News and other geek-oriented websites.

In neither case would I hesitate to buy one of their products that was aimed in my direction or endorse them for other folks in their respective target markets. Both Patrick and Ramit operate from a foundation of integrity and putting the best stuff out there. I'm fortunate to count both of them as friends and mentors.

<comment><USER3> Thanks for the response!

I didn't mean for the comment to seem skeptical of what either has done. With regards to Ramit, I know he's fantastic at sales -- I've actually bought one of his products and found it worth the cost. I assume his other products are of similar quality, because it takes a lot of proof to get some of those sales he's making.

I was just bringing up that it seems like a huge jump to someone working a 9-5 corporate job, and I'm just mentally penciling in "hustle" in how he got from A to B, because I haven't followed his story the whole way, the same as the OP hadn't been following Patrick. I like learning from the story of progression more than a "do this that and the other, but not that."

</comment></comment></comment></comment><comment><USER5> I'm happy that the audio quality significantly improved from the first episode. But still Patrick is a lot quieter than Keith - which leads me to adjust volume constantly.

I don't know your setup, but maybe use a multi-track recording software and then adjust each speaker's track to match volume.

<comment><USER6> Thanks for the comment. I'll tell the audio engineer to add it to the list of things he adjusts for. Episode 6 is already in the can but ideally it will be better for you after episode 7.

<comment><USER7> On that note, Patrick, ask him to move your audio to be in the center (stereo wise), rather than entirely on the right channel as it is now. If you listen with headphones to this episode, Keith is spread across both left and right while you are solely on the right channel. Confusing to the ears.

Still listening, but as always, great episode thus far!

<comment><USER8> I fixed this by pulling out the headphone plug slightly from the jack...

</comment></comment></comment></comment><comment><USER9> I'm a little leery anytime someone goes from doing 'Activity A' to no longer doing 'Activity A' and instead teaching people how to do it.

I don't know Patrick personally, so I won't denigrate him for this approach, but I find this conversation quite disheartening.

<comment><USER10> Patrick runs not one, but TWO SaaS products as a solo entpreneur, runs a super-insightful blog, puts out info-products, and also runs this podcast.

We should _all_ be so productive...

<comment><USER11> Another way to think about this is that Patrick puts out an info product, and then runs customer development and marketing through blogging and podcasting.

(I am 100% guilty of patio11 hero worship and will continue to do so, as his post on salary negotiation has made me more money than everything else on the Internet combined.)

</comment></comment></comment><comment><USER12> Gee, thanks Patrick. You know, I used to listen to speculative fiction podcasts on my commute: Escape Pod for scifi, Podcastle for fantasy, maybe some Drabblecast or even video game podcasts...

Now all I listen to is small business/bootstrapping casts! Kalzumeus, Product People, Techzing, Foolish Adventure, Eventual Millionaire, I have a whole backlog of this stuff!

Will you guys knock it off with this excellent & actionable content, so I can listen to some fiction again?? Geez!

<comment><USER13> Thank you very much for posting this list. I'd cast about a while back looking for similar stuff, but not found much I enjoyed. Looking forward to giving these a try.

<comment><USER14> One more for the list is Startups For The Rest Of Us - highly recommended.

</comment></comment></comment><comment><USER15> I'm not much rails but why can't you upgrade to a more recent version instead of having he 10k patch agreement?

<comment><USER15> Why was I downvoted? Is it not a legitimate question?

<comment><USER16> There are a lot of voters who are quick to downvote. Sadly many of the dislike entirely legitimate questions (such as yours) because they know the answer.

So don't sweat it, besides you are already reopvoted.

</comment></comment></comment><comment><USER16> And already transcribed, awesome.</comment>


Google Backs Away from Controversial Military Drone Project - <AUTHOR> https://www.buzzfeed.com/daveyalba/google-says-it-will-not-follow-through-on-pentagon-drone-ai <comment><USER2> Why is there a buzzfeed article on hackernews? Have we really scooped that low?

<comment><USER3> I'm under the impression that Buzzfeed News is actually decent. It's the main (non news) Buzzfeed site that's responsible for it's reputation</comment></comment>


Ask HN: Being productive in a startup environment with little personal space? - <AUTHOR> How do you stay productive while working in an open office layout with constant audio and visual distractions?<p>Noise cancelling headphones can block out the audio but with people just moving around all day the peripheral vision picks up a lot. <comment><USER2> Frequently open offices have offices with doors for general use, or conference rooms; if there are hours those spaces are not in use, those are probably hours you could use them.

Stepping out into the front hallway (but still within range of the wifi) and sitting crosslegged on the floor outside can sometimes work.

There's also underneath your workspace, George Costanza-style. Be sure your coworkers are aware in advance, why, and ok with it, as some might get the wrong idea of why you're down there.

</comment><comment><USER3> I'll crank up the brightness on my monitor and wear sunglasses with my noise cancelling headphones. Yeah, I get weird looks and comments, but it helps me filter out peripheral distractions when I'm trying to concentrate.

</comment><comment><USER4> Go somewhere else. If someone asks why, explain that open office environments are known to harm concentration and flow for many people, and that in order to be maximally productive you choose to work elsewhere for some hours.

</comment><comment><USER5> It may not be possible but you could ask if a small part of the office (in the corner or more secluded) could be earmarked as a concentration "zone".

It's not for people to sit there all day every day and take up residence in this area, it's for when you need to do something that requires concentration and those around are doing the same i.e. no phone calls, no conversations, no eating snacks, like a library really. If you need to do any of those things, you find yourself a spot in the rest of the office.

Failing that, it's either get used to it, try and find the quietest spot you can, or ask if you can work from home/elsewhere.

<comment><USER6> Why not have a "loud zone" off in some corner instead? Why are the people that want to focus required to do it on a tiny laptop screen instead of their giant monitors?

</comment></comment><comment><USER7> Work from home when you need to actually get stuff done :). Don't ask, just do it.

</comment><comment><USER8> Quit the company or get some cardboard to put around your workstation.

</comment><comment><USER9> 2x 27" monitors + my Macbook. My whole field of vision is my workstation, and I'm extremely lucky to have my back to a wall (well, glass wall of a rarely used conference room).

</comment><comment><USER10> Is there room to put up a camping tent?</comment>


Writing a Portable CPU/GPU Ray Tracer in C# - <AUTHOR> https://mellinoe.github.io/graphics/2018/05/19/writing-a-portable-cpu-gpu-ray-tracer-in-c.html <comment><USER2> I made a real-time ray-traced game a few years ago, that works in a browser :) You can increase the resolution, while FPS drops. [http://powerstones.ivank.net](http://powerstones.ivank.net)

</comment><comment> Const-me > You give it regular C# structures and methods, and it automatically converts > them to HLSL, GLSL SPIR-V, and Metal shaders.

Code introspection is one of the huge strengths of .NET ecosystem.

You can even do it multiple levels of abstraction: bytecode (using e.g. Mono.Cecil), with built-in reflection API, with built-in expressions API since .NET 3.5, and apparently this project uses even higher-level approach, Roslyn.

I have never transformed C# code into shaders, when I'm working on something similar I usually prefer traditional GPU languages like HLSL or CUDA, because tooling (e.g. visual studio can debug both).

I transformed expressions into NoSQL database queries, worked well. Here's the main parts: [https://github.com/Const- me/EsentSerialize/blob/master/Core/...](https://github.com/Const- me/EsentSerialize/blob/master/Core/EsentSerialize81/Linq/FilterQuery.cs)

<comment><USER3> You can also roll your own expression language using operator overloading and then plug that into the DLR or HSL, or whatever as needed (I did this in [https://archive.codeplex.com/?p=bling](https://archive.codeplex.com/?p=bling)). It doesn't allow for statements, however, which introspection gives you.

It is much harder in the new UWP, however, where dynamic features (reflection, introspection, native JIT via the DLR) are no longer guaranteed to be present.

<comment><USER4> Don't forget that Linq operates over duck-typed extension methods, so you can also define your own wizardry there.

<comment><USER3> Extension methods are important to doing an EDSL in C#. Link syntax is mostly a dud, however.

<comment><USER5> Hopefully the weird special-case LINQ syntax will die out soon. The only time I've found it remotely more helpful than method-chaining is when doing some nasty joins that I probably shouldn't have been doing in the first place.

</comment></comment></comment></comment></comment><comment><USER6> Great write-up! Your speedups look like they line up as expected. Would you happen to know why Aras's look a bit weird, is it the devices he's using? I'm referring to his Metal timings being more than 10x slower than D3D, and being almost comparable to C++.

> One of my goals was "use as much of the same code as possible on the CPU and > GPU".

Great idea, it's hard to debug GPU code, and super convenient to have something that you can run & debug on the CPU, then just flip a switch and get GPU speedups!

> Another obvious limitation is that GPU code cannot recurse.

Yep. I bet this changes relatively soon, since you can sometimes use recursion in OpenCL & CUDA.

It's a fun exercise in ShaderToy to write a recursive ray tracer. Here's mine: [https://www.shadertoy.com/view/XllBRf](https://www.shadertoy.com/view/XllBRf)

And here's a much better one: [https://www.shadertoy.com/view/4scfz4](https://www.shadertoy.com/view/4scfz4)

<comment><USER7> > I'm referring to his Metal timings being more than 10x slower than D3D

In my case it's the difference in hardware. DX11 results are on GTX 1080 Ti, whereas Mac are on Iris Pro on 2013 MacBookPro. > 10x performance difference between these GPUs is entirely expected.

<comment><USER6> Totally makes sense; thanks for the explanation!

</comment></comment></comment><comment><USER8> Always love your work! Going to check this one out right away. Yeah GLES and readpixel aren't friends like for instance GPUImage uses the hardware backbuffer to store it as a workaround: [https://stackoverflow.com/questions/12813442/cvopenglestextu...](https://stackoverflow.com/questions/12813442/cvopenglestexturecache- vs-gltexsubimage2d-on-ios)

So it's device specific to implement the same thing I believe GPUImage uses a stub for this to apply the same shaders you have in mind.

</comment><comment><USER9> Very interesting reading, we need more article about alternative approaches.

</comment><comment><USER10> Is there a legitimate reason for D3D12 to exist? It seems like just a locked- down version of Vulkan to me intended to kill cross-platform gaming (textbook Microsoft Embrace, Extend, Extinguish). I haven't heard of any advantages in performance or ease of development. But I'm certainly no expert.

Unrelated note: there's something really funky going with the comparison between the desktop and the laptop. The desktop is pretty high-end and should just obliterate that Macbook. It's seriously weird that they're so close. I'm not sure I trust the results.

<comment><USER4> > ease of development

Apart from the fact that DirectX 12 predates Vulkan by a substantial margin (and includes APIs for more than graphics), this is a pretty major reason. The API itself is only one concern and I can't tell whether it's easier or harder to use OpenGL (assuming an expert at both) - it's just different. The tooling surrounding it is a _completely_ different story.

Even during DirectX 9 there was a tool that would show you the state of all your backbuffers after draw calls[1]. It was extremely spartan, but with such a simple tool debugging shaders became enormously easier. I'm not sure if anything exists for OpenGL today. They productized this and more in VS2017[2] - including _being able to step through shaders in a debugger._ The big draw to the Windows platform for developers has always been the tooling and Microsoft knows this.

VS and DirectX aren't going away until people stop regarding them a "just a text editor" and "just an API" respectively. It would help if people earnestly competed with what Microsoft is doing, instead of dismissing their products for no other reason than dogma.

> Microsoft Embrace, Extend, Extinguish

That ended with the exit of Balmer.

[1]: [https://tomtech999.wordpress.com/2011/09/07/debugging- direct...](https://tomtech999.wordpress.com/2011/09/07/debugging-directx- applications-with-pix-for-windows/)

[2]: [https://msdn.microsoft.com/en- us/library/hh315751.aspx](https://msdn.microsoft.com/en- us/library/hh315751.aspx)

<comment> Const-me > I'm not sure if anything exists for OpenGL today.

A few years ago Crytek open sourced this: [https://renderdoc.org/](https://renderdoc.org/)

I've mostly used the tool with DX11, but they also support OpenGL, GLES and Vulkan.</comment></comment></comment>


Indian State loses data from 300,000 UID cards - <AUTHOR> http://timesofindia.indiatimes.com/city/mumbai/Maharashtra-loses-data-of-3-lakh-UID-cards/articleshow/19687125.cms

<comment><USER2> Lazy and careless govt servants makes people's life misery</comment>


Introducing Absolute Deal Score - <AUTHOR> http://seatgeek.com/blog/dev/introducing-absolute-deal-score <comment><USER2> "For example, if you compare a 93 deal score for a November 2012 Knicks game against a 85 deal score for a different game at MSG 3 months later, you'll know that the November ticket is without question a better value--a distinction that couldn't previously be made."

Does this take stuff like opponent or day of week into account? It doesn't mention it, but opponent alone makes a pretty huge difference: if most people would rather see a team like the Lakers come to town than a team low in the standings, the prices are going to be higher.

I can see this being really useful for something like a Broadway show, but sports are rather unique in this regard, and a lot of times you pick which game you want to go to for factors other than it being the best deal. Granted, for that use case, the system still functions the same as before, it's only the scale of the numbers that are different, but that might make your customers feel like they're getting a worse deal than previously.

</comment><comment><USER3> "Deal Score is a rating of whether a ticket is a bargain or a rip-off".

Great! what wasn't clear is what parameters are considered to arrive at the score. Knowing some more details would instill more confidence in buyers.

<comment><USER4> It instills confidence if you just look up some tickets [1]. I've used a few times and have always been very impressed with the experience. It's pretty clear to tell that they're taking a lot into account by just scanning around the stadium.

[1]: [http://seatgeek.com/angels-red-sox- tickets/8-21-2012-boston-...](http://seatgeek.com/angels-red-sox- tickets/8-21-2012-boston-massachusetts-fenway-park/mlb/717078/)

</comment></comment><comment><USER5> How does this relate to Hipmunk's Agony rating? Is that on an absolute or relative scale?

<comment><USER6> Its an absolute score, we made the transition from a relative scale with this update.

There's more information on our blog in these two posts.

<http://seatgeek.com/blog/dev/the-math-behind-ticket-bargains> [http://seatgeek.com/blog/dev/using-a-kalman-filter-to- predic...](http://seatgeek.com/blog/dev/using-a-kalman-filter-to-predict- ticket-prices)

</comment></comment><comment><USER7> rdudekul - here's a link to a blogpost series we published a few months back that gives more insight into the methodology, parameters and math behind Deal Score:

[http://seatgeek.com/blog/dev/using-a-kalman-filter-to- predic...](http://seatgeek.com/blog/dev/using-a-kalman-filter-to-predict- ticket-prices)</comment>


Ask HN: How to make my Python code not look amateurish? - jonathan-kosgei <comment><AUTHOR> First define what "amateurish" does look like.

</comment><comment><USER2> Share some code that you think looks amateurish. It's hard to give feedback in a vacuum.

</comment><comment><USER3> Keep programming and be critical.

Learn other languages too</comment>


Why I Never Bill by the Hour Redux - <AUTHOR> http://www.markrichman.com/why-i-never-bill-by-the-hour-redux/

<comment><USER2> I like the argument. In an applied context though, how do you go about putting a price on the estimated value of the output? Especially if the value is not something easily quantifiable. If a project is a ton of work but only slightly valuable (but necessary) to the client does that not factor in?

<comment><AUTHOR> The client is on the hook to articulate value. It's the consultant's job to coax it out of them - ask "Why?" five times, for example. High effort + low value => consider declining the project. I wouldn't take on any work that isn't highly profitable. Thanks for the question! I'd love it if you posted it on my Disqus forum on my site as well. Perhaps I'll amend the article with this Q&A.</comment></comment>


Ask HN: Best language to share code between an Android and iOS app? - <AUTHOR> Hello app developers of HN!
My team owns an Android (Kotlin) and iOS (Swift) app. The app is responsible for processing data, submitting to ML models, and then displaying results in a UI. We chose to do a lot of that processing in a shared Rust component. What we have found is a high overhead of bridging Kotlin/Swift to Rust. Some core logic has also seeped into our bridging code resulting in some duplication (exactly what we were trying to avoid).
With that, those of you who have found yourselves in similar situations, which language would you choose to be shared between your Android and iOS app (if any)? <comment><USER2> Since no one else has said it, I'll be the voice of reason.

Share your design specs only, and let each platform team write the implementation in the language that they think best.

Yes, you'll have two teams spending time on doing the same thing. However, you'll get important benefits.

Each team will be able to implement appropriately for their platform. While iPhones and Android phones are rather similar in terms of capability, the interaction models have a lot of differences, and forcing a common component often results in non-native feeling apps. Users will be at best confused, and at worst insulted by this.

Additionally, when you have two teams working on similar problems, they can help each other. Training on this interaction with things known to be pretty much the same helps people realize they can do it with things that aren't obvious. Meeting on a regular basis to discuss things that worked/didn't on the various platforms will help them all.

<comment><USER3> This is a UI-centric take.

There are lots of internals that could/should be shared between apps. Recently relevant examples: a customized WebRTC stack, a websocket client with extra authentication and delivery rules.

FWIW, my take on this has been to embrace Conway's law: if you have enough shared work to form a team around it, then break off a c++/whatever library and a team to maintain it. But if the hope is just to save 200LOC here and there, just bite the bullet and write it twice.

Big thanks to whoever pointed out Kotlin Native: seems interesting enough to poke around with.

<comment><USER4> This is exactly what Dropbox has just abandoned. [https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden- cos...](https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden-cost-of- sharing-code-between-ios-and-android/)

<comment><USER5> In this case they lost there C++ team, so following Conways law they went back to separate code based.

Also the open source C++ ecosystem has advanced quite a bit since when they did there project. You would be able to spend much more time on the problem domain, and zero time on writing a JSON library for example.

</comment></comment></comment></comment><comment><USER6> C++.

It is part of both SDKs, you have direct support for mixed mode debugging on the IDEs.

No need of extra tooling.

On Android JNI is always going to be a pain, but at least with C++ Studio gives you an hand on accessing JNI APIs.

<comment><USER7> I would say use C. Interfacing C with Java is simple JNI. Interfacing C with Swift is very simple, too.

<comment><USER6> C is also very simple to add security exploits to your app.

I would never advise C unless the platform is lacking of a C++ compiler.

Just use extern "C" at the boundaries.

<comment><USER8> What vulnerabilities does C introduce that C++ doesn't?

<comment><USER9> For example it is easier to avoid buffer overflows with std::string than with C-style strings.

<comment><USER10> It's also easier to avoid buffer overflows in C by using the "n" variants of C string library functions.

<comment><USER11> Why subject yourself to that risk when you can just use C++ and make everyone's lives easier? Is there a benefit to using C?

<comment><USER10> What "risk" is there in an overflow from using strncmp, strncpy, etc?

C++ still isn't as easy to interop with other languages as C and the low level APIs built into operating systems are not going to use C++/STL and you still end up converting to standard C strings and arrays.

<comment><USER12> strncpy notoriously doesn't necessarily 0-terminate.

(It also always pads the full length with zeroes if necessary, so it's almost never what you actually want to do.)

The C standard library is full of these footguns.

I won't say C++ doesn't have its bad parts, and I certainly wouldn't say that it's impossible to avoid the bad parts of C (some would), but you probably aren't going to manage.

<comment><USER10> If all of your string manipulation is working with the knowledge of the maximum size, how is that any different than the standard Pascal or BSTR string handling where the size of the string can be found in the first two bytes of the string?

The typical error case with C is something like

      char *a = "abcd"; //5 bytes
      char *b = "efgh";

      char c[8];
      strcpy(c,a);
      strcat(c,b); //buffer overflow by 1 byte.

If you used the "n" equivalents, c would have 8 bytes and every other function would know to stop 8 bytes - assuming you always pass in a size parameter.

<comment><USER12> It's not. But plenty of other standard C functions like to use 0-terminated strings without explicit lengths, including most of the system interfaces, and others make it awkward to pass in the length that you're actually tracking. You only need to call one of those with an unterminated string and it doesn't even matter whether _your_ code knows the string's length.

You could say that just means you have to be very careful whenever you pass a pointer to a string around without also passing in its length, but that's a lot of places.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I have great success using Kotlin Multiplatform to share code between iOS and Android. Have a look at my Android Jetpack Compose and iOS SwiftUI project sharing the common logic for a game [https://github.com/SimonSchubert/Braincup](https://github.com/SimonSchubert/Braincup)

<comment><USER13> It's worth to mention that it also supports native Linux, Windows and macOS buildings. Plus web via JavaScript and server via jvm.

<comment><USER14> This is really cool. Care to share some resources from which others can learn to get started?

<comment><USER15> This is the official docs

[https://kotlinlang.org/docs/reference/multiplatform.html](https://kotlinlang.org/docs/reference/multiplatform.html)

I've also done multi platform recently.

I've taken a contract first approach. Swagger / openapi for rest clients. Outside of that I use vertx which has bindings for almost every platform. With those two I can account for interoperability across all platforms.

Big hitches

* No ts.d defintions at this time. But: [https://github.com/vojtechhabarta/typescript-generator](https://github.com/vojtechhabarta/typescript-generator)

* Dukat for automatic typescript definition importing (beta) [https://github.com/Kotlin/dukat](https://github.com/Kotlin/dukat)

* I've not done LLVM iOS. But I've read of some generic issues.

They are improving dependency management to handle multi platform. I can't find a link but it was on their blog

</comment></comment></comment></comment><comment><USER16> Just use JavaScript.

Javascriptcore is a lightweight way to execute JavaScript on iOS and you can use V8 context or duktape on Android. This way you can also update code in your app without an app store update.

<comment><USER17> which is not allowed on iOS ...

Edit: Sorry for being unclear, was only referring to the updating JS on the fly and circumventing App Store part. Obviously (facepalm) ...

<comment><USER18> Which part isn't allowed? A project I worked on did this a few years ago.

<comment><USER19> I think there is some confusion around this. You can use Javascript with iOS if you use Webkit + JavaScript Core, and ship all your features in the binary that your app uses.

2.5.2 "Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps."

and

4.7 " your app must use WebKit and JavaScript Core to run third-party software and should not attempt to extend or expose native platform APIs to third-party software"

</comment></comment></comment></comment><comment><USER20> I'm surprised no one has pointed out the value of Ionic Framework ([https://www.ionicframework.com](https://www.ionicframework.com)). I'm a huge, huge proponent of this. TypeScript is a great language (in my opinion), UI code-sharing is inherent, and Capacitor ([https://capacitor.ionicframework.com/](https://capacitor.ionicframework.com/)) is great for all the native work you need to do. Worth noting you can do this in Angular, React, Vue, or pure JS.

This won't suit your needs for processing-heavy apps (though can WebWorkers help), but will work well for many apps ([https://csform.com/top-10-apps- built-with-ionic-framework/](https://csform.com/top-10-apps-built-with-ionic- framework/) for a "top 10" list for examples).

I noticed after submitting that you mentioned machine-learning. Any reason you can't offload that to a web API and take the load off the client?

</comment><comment><USER21> So I'm sure lots of people will think that this definitely doesn't qualify as "Best language to share code...", but Haskell has stuff for getting web, desktop, iOS, and Android out of one code base. It's called Obelisk ([https://github.com/obsidiansystems/obelisk](https://github.com/obsidiansystems/obelisk)) and it's actually getting to be a pretty good development experience.

<comment><USER22> I love hacker news. This is the comment I came here for.

Just use this : A language that is (at best) fringe on the platform you are using. Here's a toolset nobody has ever heard of. Now build your mission critical bit of infrastructure on this house of cards, wait for the toolset maintainers to be outpaced and under-resourced by underlying OS/platform changes and then have to rewrite the whole thing which if it doesn't kill your startup, will certainly massively impact its resources.

Go! (THIS IS A JOKE)

<comment><USER23> Well, developers are the kind of people that love to be contrarian, so it shouldn't be that surprising. Half the fun (in my mind) is doing something no one else is doing. Being novel. It's probably unwise in a business sense, but if everyone was being wise all the time, there wouldn't be much fun in software development.

<comment><USER24> You're not obligated to be a brutal capitalist as an engineer. It's okay to make decisions that are suboptimal (but still passable) for your employer but highly aligned with your own career interests.

If you always optimize for whichever company is employing you currently, you're doing yourself a disservice and essentially "leaving money on the table" :)

</comment></comment></comment></comment><comment><USER25> Good thread previously here on HN about code sharing between iOS and Android: [https://news.ycombinator.com/item?id=20695806](https://news.ycombinator.com/item?id=20695806)

</comment><comment><USER26> We're using kotlin native, after considering rust for a bit. It's been working great, we've had it in production for about six months.

Main advantages are

* kotlin is a nice language with good type support

* has good swift bindings out of the box

* also compiles to js and cpp so we can use it in our Web product as well

<comment><USER27> What's the debugging experience like?

</comment></comment><comment><USER28> We use JavaScript for sharing code between devices(iOS & Android), browser as well as the server. Surprisingly, we haven't faced any of the problems, that Dropbox claims to have faced ([https://blogs.dropbox.com/tech/2019/08/the-not- so-hidden-cos...](https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden- cost-of-sharing-code-between-ios-and-android/)).

Pros:

1\. Sharing native APIs with JS runtime and vice versa, was well supported & trivial to implement.

2\. Easy to find skill-set.

3\. We can run the same code in browsers as well.

Cons:

1\. The app will be slightly heavier in Android (as V8 has to be bundled with the app. iOS allows using native JsCore runtime.)

2\. The shared code runs slower (Obvious, because dynamic language).

<comment><USER29> > as V8 has to be bundled with the app.

Cant you make use of Webview somehow? It has the benefit of being updated from the market if a security issue is found.

</comment></comment><comment><USER30> I did one cross iOS/Android platform project using Kotlin/Native with its MPP plugin with reasonable success. However, this was 6 months ago and the JetBrains people surely haven't stopped moving forward.

</comment><comment><USER31> F# with Xamarin.Android + Xamarin.Ios

<comment><USER32> Or the more common choice C#.

</comment></comment><comment><USER33> FullStory is using Rust for our shared code, however the other sides are different: Java & Objective-C. It seems to be working pretty well for us so far.

Our requirements are probably a bit different than yours, though, because we're shipping a tool for app developers rather than the app itself. In particular, Objective-C was chosen over Swift because we didn't want to risk potential conflicts if our customers were using a different version of Swift and/or have to bundle a Swift runtime for older iOS versions.

</comment><comment><USER34> I'm not completely sure about your requirement, but as a game developer who uses Unity everyday, I would recommend it. Core graphics and UI components are available out of the box, and sometimes even when we need an app(nothing like a game) that need to access native APIs of the platform, we use Unity. It used C# as the default language, and platform-specific core logic can be separated within the code, using #directives so it's pretty straightforward.[edit: typo]

</comment><comment><USER35> ActionScript 3.0

with the Adobe AIR runtime you will be able to publish to iOS, Android, Windows and macOS, see "Adobe AIR" [0]

ActionScript is something similar to TypeScript

you will have access to the whole Flash stack and more, see "Building Adobe AIR Applications" [1]

with ActionScript Native Extension (ANE) you will be able to add your native code with an easy to use AS3 interface, see "Extending Adobe AIR" [2] and "Using native extensions for Adobe AIR" [3]

Note, the latest Adobe AIR SDK are now maintained by Harman [4]

[0] [https://www.adobe.com/products/air.html](https://www.adobe.com/products/air.html)

[1] [https://help.adobe.com/en_US/air/build/index.html](https://help.adobe.com/en_US/air/build/index.html)

[2] [https://www.adobe.com/devnet/air/articles/extending- air.html](https://www.adobe.com/devnet/air/articles/extending-air.html)

[3] [https://help.adobe.com/en_US/air/build/WS597e5dadb9cc1e0253f...](https://help.adobe.com/en_US/air/build/WS597e5dadb9cc1e0253f7d2fc1311b491071-8000.html)

[4] [https://airsdk.harman.com/](https://airsdk.harman.com/)

</comment><comment><USER36> Dart+flutter?

<comment><USER37> This would definitely be my choice - for almost anything except certain types of game development.

Flutter makes cross platform life so much easier - why do anything else?

</comment></comment><comment><USER38> One way would be to host a script engine and run the script language, e.g. JavaScript. Another would be to create your own grammar and simultaneously translate to Kotlin and Swift. You could even use a strict subset of either Kotlin or Swift then you'd only have to deal with one translator.

</comment><comment><USER39> Another concept would be using Haxe Lang: You wrote shared logic in haxe which will be transpiled to c++ and java (and many more languages).

</comment><comment><USER40> C++ is first-class in Android via NDK. You can write directly to your app's memory from a C++ library without having go through FFI. I'm pretty sure it's the same for iOS but through a C ABI.

<comment><USER41> I wouldn't call C++ through the NDK "first class", especially compared to Objective-C++ on iOS.

</comment></comment><comment><USER42> Xamarin iOS and Xamarin Android using C#

</comment><comment><USER43> In Go, there is an official, experimental project called gomobile [0] that allows one to generate a Java or Objective C binding to be used in mobile projects based on Go source code.

It comes with some restrictions and is still deemed experimental. But it could be a viable choice in the days to come.

[0] [https://github.com/golang/mobile](https://github.com/golang/mobile)

<comment><USER44> Gomobile bridges Java and ObjectiveC/Swift to Go, and probably entails the same overhead the author is trying to avoid.

Shameless plug: If you like Go and immediate mode UIs in particular, Gio[0] runs the same Go code across desktop and mobile alike. No bridging or native code required.

If you like a more mature framework and don't mind Dart, I think Flutter is an attractive toolkit. I started Gio wanting to write a Flutter clone in Go before going for the immediate mode design.

[0] [https://gioui.org](https://gioui.org)

</comment></comment><comment><USER45> You should share design specs between client teams and allow each of them to implement them within the parameters of what's expected on each platform. Don't force them to have the _exact_ same UI at the cost of platform-specific idioms. It hurts customers on both platforms to take that approach.

Your business logic should be, to the maximum extent, implemented once on the server. Your client implementations should simply display what the server has computed, once. Caching it is fine, rendering it locally is fine for the most part, and you get a clean, well-fitted, elegant UI for it.

Any limited amounts of business logic that must be correct and truthful should be implemented as a Rust (or if you insist, a limited, well-defined subset of C++) library with C linkages and idiomatic wrappers for iOS and Android. If this can be shared with the server and/or web front-end (via emscripten for instance), it should be. It's usually painful to do this, but there's usually only a small part of your codebase that should fall under this section.

</comment><comment><USER46> If you really want to optimize and share code across platforms, you should really go for C++.

Make your core logic in C++ and write bridges for Kotlin and Swift, where only the UI logic is involved. C++ has the better ecosystem so far and the very modern standard (C++17) let you write robust code. There are also so many tools that help you catch errors and typos, plus thousands of libraries available.

</comment><comment><USER47> I'm not an expert but you could consider sharing Swift (or Kotlin) code between platforms. Nim ([https://nim-lang.org](https://nim-lang.org)) could also be explored.

<comment><USER41> You can't really share that between platforms.

<comment><USER47> Ah shame, I remember reading about targeting iOS at least with nim but didn't look to closely into it.

</comment></comment></comment><comment><USER48> Something just crossed my mind while reading the question, that Swift could be a good candidate. Turns out there are compatibility layers that are based on Swift:

[https://www.scade.io](https://www.scade.io)

[https://academy.realm.io/posts/swift-on- android/](https://academy.realm.io/posts/swift-on-android/)

[https://blog.readdle.com/why-we-use-swift-for-android- db449f...](https://blog.readdle.com/why-we-use-swift-for-android-db449feeacaf)

</comment><comment><USER49> I have a similar use case where the crux of my business is really data / analytics centric. The user experience is pretty much limited to _mostly_ information consumption with a few click events (favorites, like, dislike, delete and the occasional standard input forms).

I'm leaning towards using [Meteor]([https://www.meteor.com/](https://www.meteor.com/)) to share code between mobile apps and web apps.

Using cordova shells is pretty neat for business applications. Would be interested in thoughts.

</comment><comment><USER50> Here's a Mozilla blog post about rewriting Firefox's Sync client code in Rust so the same code can be used on desktop, Android, and iOS. The FFI between the shared Rust code and C++, Java, and Swift app front ends is a little hairy but well encapsulated, generated code.

[https://hacks.mozilla.org/2019/04/crossing-the-rust-ffi- fron...](https://hacks.mozilla.org/2019/04/crossing-the-rust-ffi-frontier- with-protocol-buffers/)

</comment><comment><USER51> I'm looking at solving a similar problem but for desktop.

I would like to avoid C++ and so far the best candidate seems to be Nim. It transpiles to C which then can run in pretty much any platform.

</comment><comment><USER52> I do a lot of consulting for clients who use Embarcadero's Delphi to create native iOS and Android apps from a single source base. Delphi is a commercial product, that comes with its price tag and there is, of course, a learning curve, but once you know the processes you can create great multi-platform mobile apps, with way less effort than having one team on Xcode and the other on Android Studio.

</comment><comment><USER53> RAD Studio let's you build cross platform apps targeting Android, iOS, macOS, Windows, Linux, and HTML5 with a single codebase and single UI. Choose either Object Pascal or C++.

I prefer the Object Pascal side but the C++ side is also powerful because it solves some of the problems that the Dropbox team talked about in their "The (not so) hidden cost of sharing code between iOS and Android" article.

</comment><comment><USER54> I use c++ rather than rust because as much as I would love to use the best language its just not so well supported on mobile compared to c/c++. I'm not sure how well flutter ffi does using rust compared to more mainstream approaches its possible that flutter ffi is more friendly to rust than jni/kotlin.

</comment><comment><USER55> Kotlin can generate both JVM bytecode and iOS binaries. I've successfully shared code between iOS and Android projects using Kotlin before. The overhead is quite low, and, all in all, I was quite satisfied with the results.

However, a lot of the tooling around this is experimental, so you might want to tread carefully here.

</comment><comment><USER56> Surprised no one has mentioned NativeScript yet. I've used it, admittedly only for investigation purposes, but was super impressed.

[https://www.nativescript.org/](https://www.nativescript.org/)

</comment><comment><USER57> I have 22 years of shipping products on time with Delphi. The latest versions do a wonderful job compiling to android, iOS, macapp or Windows.

Delphi is not cheap, but in my case the time to market, and tight release dates make it worth.

www.embarcadero.com/products

</comment><comment><USER58> Have you seen this answer on Stack Overflow? [https://stackoverflow.com/a/5234868](https://stackoverflow.com/a/5234868)

</comment><comment><USER59> D allows you to export an obj-c api. This won't help much on the android side, but would definitely help with talking to swift on the ios side.

</comment><comment><USER60> There is a google tool that converts Java to Objective C, it should be easy to find.

</comment><comment><USER61> I would say React Native. For the things you are doing it works perfectly.

</comment><comment><USER62> C.

<comment><USER63> Yes.

</comment></comment><comment><USER64> Xamarin (C#) and Cordova (JavaScript) are the usual suspects for such multiplatform endeavours. You should not use three languages in production if one is enough.

<comment><USER45> There's very limited appetite for introducing JavaScript on any client platforms. Your iOS app has to introduce a garbage collector, bridging, and yet another language that nobody on your team knows. Android has to spin up a _second_ garbage collector.

C# has all the same problems for core logic, and is all fine and good but you can't really get a native enough interface out of it.

</comment></comment><comment><USER4> English</comment>


AlphaGo under a Magnifying Glass - <AUTHOR> http://deeplearningskysthelimit.blogspot.com/2016/04/part-2-alphago-under-magnifying-glass.html <comment><USER2> The article says AlphaGo has 13-layer neural network. How was the number of layers chosen? What are the advantages of wider vs deeper layer networks?

<comment><USER3> I can't speak to AlphaGo specifically, but these parameters (depth and width) are typically chosen through trial and error. People joke about "graduate student descent" but it's true. There are empirical rules of thumb that arise from knowing what has worked in the past. Empirically, more depth is better and nets should not be very wide at all.</comment></comment>


The Folly of Boostrap - <AUTHOR> http://stephenwan.net/blog/2013/04/14/the-folly-of-bootstrap

<comment><USER2> Stephen should consider eating his own dog food before sitting down and typing something like this out.

</comment><comment><USER3> "the only job that a web developer really has is thinking about design" What???

<comment><USER4> Seems like another web-developer/-designer mixup :(

<comment><AUTHOR> That would be a typo on my part. Fixed!

</comment></comment></comment><comment><USER5> Boostrap: The Premiere FED Prototyping Framework for Ghosts

</comment><comment><USER6> "My issue is that these frameworks take most of the thought out of designing a webpage..."

"my issue is that these frameworks X,Z take most of the thought out of developping an application..."

Sounds stupid right ? well it is. Using boostrap doesnt transform anybody into an ergonomist or a web designer. that's simple as that. But i prefer an non designer using bootstrap than one coming up with an horrible layout of his own. And again :

\+ Boostrap is TESTED on a WIDE range of browsers,phones so one doesnt have to do it , exactly like jQuery. Doesnt mean one doesnt need to do tests , does mean that one can assume his layout will work on most browsers and phone. That alone makes boostrap worth it.</comment>