Show HN: My forum project; a different philosophy than Discourse - <AUTHOR>

    tl;dr: http://pony-forum.com, forums are in again, baby!

    Longer version that breaks character limit: https://gist.github.com/ndarville/4753948
 I was abroad earlier last week, so I unfortunately was not there to join in on the discussion of Jeff Atwood's Discourse[1].
Discourse has received a lot of attention, and revitalizing the forum software of yore is suddenly part of the public conversation. As such, I feel I should bring your attention to my own forever project[2], which has been years in the making from the idea stage. I am not planning on "launching" it any time soon, but the project, Pony Forum, is relevant to the discussion for a few reasons:
1. As another "modern" take on forum software, it allows us to conceptualization modern forums from multiple perspectives.
2. My approach is entirely different than Atwood's—just look at the screenshots(!).
3. All of it is open source, available for your immediate perusal and comparison at GitHub.
4. It is based on Django, increasing the potential for some hilarious fanboy wars.
The project should be fairly easy to set up on dotCloud or locally. Here is how to do it locally, IIRC: https://gist.github.com/ndarville/4753982.
I submit this project not because I plan on "launching" it soon, but because it makes me happy that Jeff was able to draw so much attention to something so great and yet so abandoned. It means the iron is hot as ever, and the the time to discuss the future of forums is now.
As you can tell by comparing both of our projects, Atwood and I only agree on the state of forums, and the urgency of doing something about it. But now what?
That couldn't be a better way to start the discussion of what to do now.
http://pony-forum.com
[1]: http://news.ycombinator.com/item?id=5172905
[2]: http://news.ycombinator.com/item?id=5096009 <comment><USER2> It looks the same as regular forums to me. What features does it have that regular forums don't?

• "Written in Python and uses the popular Django framework": Doesn't really mean anything. Not a feature.

• "Mobile CSS that adapts the layout to your iPhone": That's a front-end issue, which forums can handle just fine without switching from phpBB or whatnot.

• "A redesigned, mobile-friendly admin interface": Also front-end.

• "Experimental dyslexia support": Also probably front-end. Dyslexic users probably have different default settings for text anyways.

• "A powerful editor for writing and creating content": These have existed for several years.

→ "Super simple Markdown-based formatting learnt in no time ...": Okay.

→ "... with automatic, typography-friendly SmartyPants conversion": What does that mean?

→ "You can even create tables for data- and fact-based discussions!" Tables are not exactly revolutionary and forums have had those for a long time. Granted, Markdown doesn't necessarily. Do you have quotes, though?

• "Values security and privacy with such things as: SSL support, PBKDF2, password-hashing, django-secure vetting": These aren't "features" we should have to look for actively. They should be a given.

• "Complete HTML fall-back support for people who block JavaScript": Forums have had that since the beginning of forum-time.

<comment><USER3> Some good points.

The funny thing about forum/group software is that they always look so plain and unexciting when there's no content.

Of course, we all love StackOverflow, but the interface, editing, and UI capabilities all pale in comparison to the wealth of information it provides us.

<comment><AUTHOR> The majority of what makes for a good forum community is the community management, not the community software.

Good forum software mainly just removes obstacles, but it doesn't create a good community alone. And I think the thing I disagree with Atwood on the most is that you can somehow "fix" community management with scripted automations, algorithms, and whatnot. Especially if it creates an incentive to game the system, which works against the intended purpose. Atwood's visit to Something Awful spawned a great discussion on this: [http://forums.somethingawful.com/showthread.php?threadid=347...](http://forums.somethingawful.com/showthread.php?threadid=3470954).

Hence, all the feature lists sound so inane, which is also why you need to watch your rhetoric when promoting it; your software isn't God's gift to discourse, and the competitors aren't as unequivocally bad, as some make them out to be. Creating a good community is not really something contingent on the software (unless it's HORRIBLE). The problem with current forum software is that is is a hassle to maintain, set up, and use.

But communities like Something Awful obviously do fine in spite of so-so software. If I could choose, I would stick with the Something Awful community's management acumen over some fancy software such as my own. The latter alone isn't enough to grow a great, vibrant community. The first one can still overcome clunky software. People > Software.

If anyone thinks forum software alone can create a great community, I would love to disabuse them of that notion immediately, and of the idea that using my project alone will magically fashion you a community on par with Something Awful.

I do plan on incorporating some more tools towards managing a community, but nothing that should give anyone the impression that it is going to do the actual work of managing an entire community for you.

Communities are people.

</comment></comment></comment><comment><AUTHOR> Clicky:

[1]: <https://gist.github.com/ndarville/4753948>

[2]: <http://pony-forum.com>

[3]: <http://news.ycombinator.com/item?id=5172905>

[4]: <http://news.ycombinator.com/item?id=5096009>

EDIT: Looks like Travis is acting up, even though all I did between my last working build was to edit a Markdown file.

<comment><USER4> Do you have a working demo site?

<comment><AUTHOR> You can use <http://pygm.us/PfPgorKl> for now, but only the admin log-in admin//password works for now, since I haven't set up the e-mail server.

</comment></comment></comment><comment><USER5> Oh yeah please, leave me trash all these old PHP forums! Good project!</comment>


Satellite data suggests that China, Russia are fudging their GDP reports - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2018/05/15/satellite-data-strongly-suggests-that-china-russia-and-other-authoritarian-countries-are-fudging-their-gdp-reports/ <comment><USER2> By judging Nighttime Lightmap from Satellite?

What if the Chinese sleeps early?</comment>


The Free Lunch Is Over – A Fundamental Turn Toward Concurrency in Software - <AUTHOR> http://www.gotw.ca/publications/concurrency-ddj.htm <comment><USER2> This is from 2005 with graphs updated in 2009.

There are more mainstream or almost mainstream languages supporting concurrency now than in 2005 but it's still a long way from using parallel algorithms everywhere. One reason is that it's hard. Perhaps the only technique that got really popular is map reduce.</comment>


Classics of Computer Science: A List – Harry Lewis, Harvard - <AUTHOR> http://harry-lewis.blogspot.com/2016/12/classics-of-computer-science.html <comment><AUTHOR> Here's a master list of links to most of the papers mentioned: [https://docs.google.com/spreadsheets/d/1wS6O7-ZoFL7Cfjgt- kdh...](https://docs.google.com/spreadsheets/d/1wS6O7-ZoFL7Cfjgt- kdhYxfg0qHdXyzpjJxikiqNPZg/edit#gid=65049622)</comment>


Keeping the Internet open and free - <AUTHOR> http://chrishughes.tumblr.com/post/418197882/keeping-the-internet-open-and-free

<comment><USER2> At this point, I am more worried about the governmental attempts to take control of the internet (e.g. ACTA, the new Digital Economy bill, and other similar efforts internationally) than by Apple and other similar players.</comment>


Eye test may detect Parkinson's before symptoms appear - <AUTHOR> http://sciencebulletin.org/archives/4448.html <comment><USER2> There is some evidence that the brain (and substantia nigra) is not the only region where risk for Parkinson's can accumulate. There may be some ties to developmental processes, lymphocytes, and the liver and fat cells[0].

[0][http://www.nature.com/articles/srep30509](http://www.nature.com/articles/srep30509) [0][http://parkinsonsnewstoday.com/2016/08/11/parkinsons-risk- mu...](http://parkinsonsnewstoday.com/2016/08/11/parkinsons-risk-mutations- impact-brain-least-of-all/)

<comment><USER3> Hmm. In your studies can you identify retinal tissue? Guessing not since it's such a relatively small amount and might not have a clear marker like adipose/liver tissue.

Accumulating mutations could _cause_ Parkinson's--some sort of inflammatory syndrome from altered metabolic pathways, you can probably explain it better than me--but the study in OP seems to be suggesting retinal degeneration is a _symptom_ , right? Maybe retinal tissue could be a "canary in the coal mine" because it's more sensitive to these changes in metabolism? I'd be interested to know what you think.

<comment><USER2> Yea, I can only work with tissues that I have chromatin marks for, and retinal tissue is not one that is easily available. But it's possible that the retinal features are an early detector of disregulation (in some pathway to Parkinson's), and it would be interesting to see precisely what it's detecting, perhaps shedding more light on inherited risk.

<comment><USER3> Ah, it's chromatin marks you need. Well I guess you could get a lot of retinal tissue from the rat model they use and try to find some. Interesting that this finding is in an animal that doesn't depend as much on vision as we do. Might be worth determining if the result holds up in e.g. a macaque model.

</comment></comment></comment></comment><comment><USER4> I can't tell if this report is vapor research or there is something of merit. For example, if only tested on mice, then how is this related to Parkinson's Disease, can anyone clarify?

<comment><USER3> The results in the research article were obtained with a rat model of Parkinson's, where Parkinsonian symptoms are induced with rotenone. Most models of Parkinson's are based on neurotoxic drugs (e.g. MPTP, first discovered to induce Parkinsonian symptoms in heroin addicts) so they're kind of the best we can do. (there's also genetic models--e.g. mice that express chronically low levels of dopamine. But basically other animals don't get Parkinson's in the wild as far as we can tell.) There's a summary of the evidence for the rotenone model in the discussion of the paper itself, and the paper is in an open access journal so you can read it should you so desire: [http://actaneurocomms.biomedcentral.com/articles/10.1186/s40...](http://actaneurocomms.biomedcentral.com/articles/10.1186/s40478-016-0346-z)

There is something of merit here if there's any reason to believe that actual Parkinson's patients show similar retinal degeneration far before they show any other symptoms. The authors don't mention any evidence for that...so I'm guessing there's not any. Either they are wildly scrambling to find some, or a cynic might suggest they looked already in humans and didn't find any, so they published this instead. A paper showing multiple lines of evidence supporting their theory in a rodent model and in a patient population would probably have been a home run that got them into a glam mag.

</comment></comment><comment><USER5> I wonder if this is muscle twitching similar to the claim of detection just by voice over the phone</comment>


Slife: displays graphically what you do with your computer - <AUTHOR> http://www.slifelabs.com/ <comment><USER2> I can't get it to pull up. google cache http://188.8.131.52/search?q=cache:Kzhj8Oi5868J:www.slifelabs.com/&strip=1

Good heavens, there's not a news.YC effect, is there? I guess it's on digg...

</comment><comment><USER3> Rediscovered this, quite useful. Available for Windows as well.

</comment><comment><USER4> Oh boy, that'd be so useful for me. If I was using a Mac I would be all over that.</comment>


Teaching developers UX: Use Fitts' law to build a polished landing page - <AUTHOR> http://thestartupfoundry.com/2011/04/05/teaching-developers-ux-use-fitts-law-to-build-a-polished-landing-page/

<comment><USER2> My standard go-to comment for 'Show HN' posts is "you need to increase the padding on that button!" Nothing bothers me more than a button you can't click.

</comment><comment><USER3> Now this is design!</comment>


Inspire HN: Persistent determination - <AUTHOR>

YC deadline is soon, so I just wanted to give some inspiration to all YC applicants. Hope this will help, or at least, you'll find it worth reading.
First, ask yourself a question: if you failed, then how do you know if you failed because it's impossible or because you just wasn't determined enough?
Well, really, how do you know that? Every real life case falls into two possible categories: either someone succedeed or not. If he or she falied then there is always a lot of obvious reasons for that, because it's easy to judge when you're looking into the past. From formal, scientific point of view one can't prove something is impossible just because someone who tried failed. I challenge you with the hypothesis that the only reason you can fail is insufficient determination.
The great Russian mathematician Andrey Kolmogorov discovered evolutionary epistemology principle. It says that humans only tend to search the most simple solutions. And the best solutions (those can't be achieved by incremental development of the existing solutions) are unattainable even for the most keen intuition.
When you are in the situation when you don't have all the information you need, or you need to come up with something new and undiscovered (sounds pretty much like a startup, doesn't it?), it's like trying to get out of swamp: you're trying to make test steps in different directions. The majority of people has just two behaviour strategies in this situation: 1) if (failed) goto 0;  //return to the initial position 2) if (failed) { make_one_more_step(); goto 0; } //make just one more step and return
And if you get this far, I hope you don't think I wrote this essay just to practice my English skills, do you? The most interesting question here: is this the infinite loop or not? while (failed) make_one_more_step();
A tiny percentage of people (and entrepreneurs) follows this strategy (including Groupon's founder and the guys behind Angry Birds to name a few).
You may think these are stupid questions. But I think, when what's happening in your world doesn't make sense...when it doesn't conform with your beliefs about how things should work, then it's time to ask hard questions. Question everything...
When I started my construction company 3 years ago, I thought that would be easy money. Far from it. I managed to face virtually every problem out there: the highly commoditized matured market, huge margins pressure, global economic crysis, the lack of education (I have 2 degrees, but in CS, not construction), lack of communication skills and leadership, betrayal of my cofounder, huge accounts receivable - just to name a few. I can write a huge book on how we were trying to achieve product/market fit. We looked like an illustration to Paul Graham's "How Not To Die" essay.
Many, many, many times I felt like I can't take it anymore. But I got up again and again. Can you imagine what is it like running a business for 3 years 16 hours day, 7 days a week while having little to no income?
But I learned a lot. We discovered product/market fit, learned how to make money in comoditized market, eventually I hacked supply chain and the construction ecosystem and achieved 40% profit margins while it's still chaper for our customers than the avg. market price. But I still face obstacles every day. But now I know that it's up to you if they can stop you.
So I encourage you to discover your own limits of the possible and then hack'em! You are hackers, remember? <comment><USER2> Thank you. It helps to know other people are out there struggling.</comment>


Gambo: a Game Boy emulator - <AUTHOR> http://rsnous.com/gambo/ <comment><USER2> z/x is a poor choice for control keys, especially for german speaking countries (we have QWERTZ [http://en.wikipedia.org/wiki/File:KB_Germany.svg](http://en.wikipedia.org/wiki/File:KB_Germany.svg), not QWERTY)

<comment><USER3> vim keys (hjkl) and arrow keys would be better.

</comment></comment><comment><USER4> Nice. When I see projects like this, I'm more interested in what documentations/tutorials they followed rather than actual product.

<comment><USER5> This was our bible: [http://nocash.emubase.de/pandocs.htm](http://nocash.emubase.de/pandocs.htm)

We would use this as a reference when we didn't know how to implement something since this was the first time either of us had done any sort of emulation: [http://imrannazar.com/GameBoy-Emulation-in- JavaScript:-The-C...](http://imrannazar.com/GameBoy-Emulation-in- JavaScript:-The-CPU)

</comment></comment><comment><USER6> Is it a really tiny screen for anyone else? I'd love an option to increase size (in a fancy block-graphic style like minecraft)

<comment><USER7> Press Control then use your scrollwheel. It's a web element. The default size is pixel perfect.

<comment><USER8> That's not the right type of scaling for that kind of graphics because the scalled image is smoothed and the graphics don't look as sharp as they should be.

IMHO they should support some scaling (x2, x3, x4, etc), even with CSS is possible, but avoiding that "smoothing" effect.

</comment></comment></comment><comment><USER9> Looks like it's 2 years ago something big happened on this project. I was surprised that it's written in Java compiled into JavaScript.

[https://github.com/osnr/gambo/commits/master](https://github.com/osnr/gambo/commits/master)

</comment><comment><USER10> For me it runs with the correct speed (as measured with the ingame timer and I'm glad to see it's open source :) Nicely done!

</comment><comment><USER11> Sorry, am I missing something? I thought there were plenty of game boy emulators around, is there anything special about this one?

<comment><USER5> Dev here, other than the mentioned Java => javascript thing, not really. The two of us made this as a fun little project in high school a couple of years ago. Neither of us had done anything like it before, so it was just an educational thing really. We had ideas that might have been novel, but college started and we got busy doing various other things.

</comment></comment><comment><USER12> Seems kind of slow? Or is it just me?

<comment><USER13> For me too (i5-2520M laptop). This one runs faster: [http://www.codebase.es/jsgb/](http://www.codebase.es/jsgb/)

</comment></comment><comment><USER14> Not bug free: grabbing the star doesn't make Mario invulnerable.

<comment><USER5> Good catch.

We actually spent a while trying to figure out what caused that, but it was impossible for us to use our usual debugging technique of printing traces on since that breaks down when user input is involved. We stopped working on the project before we could squash that bug. It's the only remaining bug as far as we know.</comment></comment>


AWS AUP Breach - <AUTHOR> http://pdfcast.org/pdf/aws-aup-breach

<comment><USER2> The real line we need to explore here is why was the user banned, since it sorta hits on both points:

1) Banned for having multiple (presumably aws-free) accounts?

or

2) Running mining nodes which will definitely be 100% CPU usage

The former I can agree with completely but the latter, if that's the case, is really questionable territory for Amazon to try and manage. I have a feeling it's most likely #1 though.

<comment><USER3> > _Running mining nodes which will definitely be 100% CPU usage_

They would be mining Litecoin, which is GPU and CPU based. You can't mine this in a free instance, which rules out them abusing the free tier. Likely a lot of heat and power for Amazon, but what else would they sell GPU instances for except for heavy computation?

</comment></comment><comment><USER4> Link to the AUP in question: [http://aws.amazon.com/aup/](http://aws.amazon.com/aup/)

This does not immediately look authentic. Why would a letter like this be "signed" by the CEO instead of a member of Amazon's legal department?

<comment><USER5> It really doesn't, does it. It's quite rare to see all the text properly embedded in what appears to be a scanned paper document.

Also curious that it specifically mentioned 'jhprotominer', a miner for 'protoshares', which appear to be related to 'bitshares'; yet another cryptocurrency that's about 2 months old. Interesting that of all the articles mining LiteCoin on AWS, there's been no such issues.

I can't decide if someone's trying to get protoshares into the news, or scare miners off them. But I do have a hard time taking this one at face value.

</comment></comment><comment><USER6> This is either fake or TIL Jeff Bezos is bad at grammar but an amazingly detailed CEO.

</comment><comment><USER7> The address and phone numbers are real [1]. But the letterhead logo seems to be an outdated one.

[1]: [https://authorcentral.amazon.com/gp/help?topicID=200626000](https://authorcentral.amazon.com/gp/help?topicID=200626000)

</comment><comment><USER8> The obvious move here for Amazon is to release "ASIC Altcoin Miner" or A2M (I'm trademarking this BTW): ASIC miners you can spin up instantly without worrying about peripheral infrastructure costs or crooked ASIC vendors delaying shipments.

</comment><comment><USER9> Well, this better only be for the multiple free accounts despite the wording seemingly indicating more. Otherwise AMZ needs to update their ToS to let everyone know they don't support bitcoin mining; which makes no sense because I'd think they'd be okay running rendering processes[1] which would also hold the CPU at 100%. However, now that I think about it, holding the CPU at 100% is a problem[2] for all cloud providers. Perhaps AMZ is against any CPU intensive work on anything other than dedicated systems.

1\. [http://download.autodesk.com/global/docs/maya2014/en_us/inde...](http://download.autodesk.com/global/docs/maya2014/en_us/index.html?url=files/Command_line_renderer_Render_from_the_command_line.htm,topicNumber=d30e771764)

2\. [http://www.clubcloudcomputing.com/2012/06/bad-neighbors- in-t...](http://www.clubcloudcomputing.com/2012/06/bad-neighbors-in-the- cloud/)

</comment><comment><USER10> Without full details, we can only speculate which ends up with drama here on HN. And what is the intent of sharing this to the Internet community?</comment>


Yahoo's $800 Million Bid for Hulu: Safe, Boring, and Brilliant - <AUTHOR> http://www.theatlantic.com/business/archive/2013/05/yahoos-800-million-bid-for-hulu-safe-boring-and-brilliant/276270/

<comment><USER2> Hulu owners should've taken the $4 billion Google offered them 2 years ago [1]. Now they probably won't even get $1 billion. That's what you get when you're too greedy.

[1] - [http://searchenginewatch.com/article/2113362/Googles-Hulu- Bi...](http://searchenginewatch.com/article/2113362/Googles-Hulu-Bid-In-the- Range-of-4-Billion)

<comment><AUTHOR> Then Yahoo probably didn't get the 'unspecified extras' as well.</comment></comment>


The Sleeping Beauty Problem - <AUTHOR> https://www.reddit.com/r/math/comments/3915xh/the_sleeping_beauty_problem/ <comment><USER2> It's a genuinely fascinating question, and if you haven't seen t before then I can recommend taking 10 minutes to understand the question and form an opinion.

The Reddit discussion is not necessarily all that deep, it has a lot of people arguing past each other without defining their terms, but it will introduce you to other points of view.

Here is a useful write-up:

[https://en.wikipedia.org/wiki/Sleeping_Beauty_problem#Operat...](https://en.wikipedia.org/wiki/Sleeping_Beauty_problem#Operationalization)

If you want to read more about it, here's a bibliography:

[https://philpapers.org/browse/sleeping- beauty/](https://philpapers.org/browse/sleeping-beauty/)</comment>


Dear NSA, I've never really been into privacy... - <AUTHOR> http://www.sebastianbraff.com/2014/08/dear-nsa.html <comment><USER2> This post was killed by user flags.

<comment><AUTHOR> Unless you think the article itself it offensive, you might consider reviving this one, especially if you will be around to moderate the comments. I don't agree with all of it, but I think there are elements in it that could lead to productive discussion on privacy.

<comment><USER2> Mm. An optimist.

My sense is that the HN threads are, unfortunately, far more sensitive to initial conditions than that. Also, we're reluctant to override user flags when they were strong enough to kill a post. That signal has proven pretty reliable. We do, however, often unkill it (without cancelling the rank penalty) so discussion can continue. We did that earlier today with this one.

</comment></comment></comment><comment><USER3> > A society without privacy wouldn't necessarily be a bad thing, in fact I > think it could even be Utopian.

Sure, in the same way Karl Marx's communism was ideal and utopian, too. In the real world, though, we'll get a much more corrupted version of it. And just like with the _real_ communism, that was abused by those in power because they had so much central control over their countries, a "utopian" society where a few elites know everything about everyone will never work either, and it will easily be abused and often.

</comment><comment><USER4> _There are a trillion tiny laws about everything, and the only reason we tolerate this micromanagement is because these laws are rarely enforced._

...against wealthy whites. It's easy to take this entitled view if you are part of one of the groups that skates by without any fear of reprisal.

If, on the other hand, you were a poor black man living in the inner city, you might have a different experience.

</comment><comment><USER5> The blog post seemed to transition kinda abruptly from personal and cultural perceptions of privacy to how the NSA is hurting SV businesses.

</comment><comment><USER6> You just can't fix stupid. May his chains rest lightly on him, and posterity forget he was ever 'one of us'.

</comment><comment><USER7> It seems this post was nuked off the front page. Isn't it typical for mods to comment on why posts are nuked?

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

We try whenever we can—or rather I try, since the other moderators aren't public. But I can't do it everywhere.</comment></comment>


Twitter botfarm scamming users out of crypto - <AUTHOR> https://twitter.com/search?q=ripple&src=typed_query&f=live
This has been going on for about 12 hours now and for the past week. I don't think it will stop unless someone at twitter actually shuts it down. Just posting this here in the hope Twitter does something about to or maybe this will get attention.
Given all of the controversy about bots influencing the 2016 election you would think Twitter would have put better controls over such blatant spam <comment><USER2> Unless people report it, the whistle blowers name is in a tweet or someone is a Trump supporter, Twitter wont intervene.</comment>


This is how Google kills your app - <AUTHOR> https://medium.com/@joshliptzin/this-is-how-google-kills-your-app-c1abad30eb25?hn

<comment><AUTHOR> Same here, Google unpublished one of our 10 million+ downloaded apps without warning. I appealed using the option to upload a PDF file to have a 2 page description of our processes and efforts to deal with user generated content, only to get the standard canned response "We (...) will not be reinstating your app. This decision is final (...) We are unable to comment further on the specific policy basis for this removal (...)".

Needless to say, this is a very disappointing way to be dealt with when this concerns a significant revenue stream.

<comment><USER2> This may seem like a rude question, but - why would you build a business that significantly depends upon the arbitrary decision of the owner of a walled garden? I mean, it's not like this hasn't happened many times in the past. Why would you invest your money to build on such a risky platform as Android or iOS?

<comment><AUTHOR> I don't think the question why we develop for Android is relevant here. The fact that the two most important smartphone platforms are walled gardens is interesting in itself. (Google has for long claimed that Android is more open than iOS, but with the current state of things where not being published on Google Play means your app doesn't exist, this claim is not really valid anymore).

<comment><USER2> Okay, perhaps a more general question then, for people who develop for walled gardens of all types: how can you justify the investment, when your app might be cut off at the knees tomorrow?

<comment><AUTHOR> I would rather ask the opposite question: Is it possible to develop a fast growing mobile service without developing an app on iOS/Android? How could Instagram have grown the way it did without their iOS and Android apps? I'm sure people occasionally post copyrighted content as a picture on Instagram, were they just lucky not to get pulled by Google for copyright infringement?

<comment><USER2> They're not opposite, they're related.

Put another way: you have $X to invest. Why would you invest in a mobile service that requires a native app, when the only viable 'markets' for same are walled gardens with arbitrary rules?

Courts exist in capitalist societies to provide the rule of law, and thus the stability, required for investment. There is no such thing in the Android or iOS world.

</comment></comment></comment></comment></comment></comment><comment><USER3> "This is actually the second time we've been through this process."

So you are building/publishing grey area apps and are shocked when they give you the boot.

<comment><USER4> Gray area? This is a dating app just like Tinder/Grindr etc. It's been live on iOS for almost 2 years with no issues and a high rating. It's also rated high maturity (ages 18+), and we are talking about occasional nudity here, not pornography, and we work hard to take down the nudity as soon as we see it. Our mods work hard, it's a tough job, and it sucks that after all the hard work they put in, the app still gets abruptly removed without explanation.

The point is that if Google would just take 5 extra minutes to tell us what they found that was in violation, then everyone would be better off, instead of having to go through this cycle of guessing what the problem is and resubmitting while in the process losing all reviews and rankings.

</comment></comment><comment><USER5> Only Flappy Bird clones are welcome.</comment>


Fully Countering Trusting Trust Through Diverse Double-Compiling (2009) - <AUTHOR> https://dwheeler.com/trusting-trust/ <comment><AUTHOR> "Reflections on Trusting Trust" [1] a famous 1984 paper by UNIX co-creator Ken Thompson in which he described a way to hide a virtually undetectable backdoor in the UNIX login code via a second backdoor in the C compiler.

[1] [http://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html](http://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html)</comment>


Infinite procedurally-generated city with the Wave Function Collapse algorithm - <AUTHOR> https://marian42.itch.io/wfc <comment><USER3> Here's a collection of relevant links for the lazy:

        * Animated gif: https://twitter.com/marian42_/status/1061785383057440768
        * GitHub page (demo in Unity): https://github.com/marian42/wavefunctioncollapse
        * Original Wave Function Collapse Algorithm: https://github.com/mxgmn/WaveFunctionCollapse

<comment><USER4> I'm too lazy to copypasta the links. Can you please reformat to make them clickable?

<comment><USER5> Animated gif [https://twitter.com/marian42_/status/1061785383057440768](https://twitter.com/marian42_/status/1061785383057440768)

GitHub page (demo in Unity) [https://github.com/marian42/wavefunctioncollapse](https://github.com/marian42/wavefunctioncollapse)

Original Wave Function Collapse Algorithm [https://github.com/mxgmn/WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse)

<comment><USER6> and they call you people lazy

<comment><USER7> We're focused.

</comment></comment></comment></comment></comment><comment><USER8> Amazing work! I've been excited about this technique since I first saw the original demos of it ([https://github.com/mxgmn/WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse)) - but can someone explain (at a very high level) how Wave Function Collapse works? I've read through some of the documentation on various repos - <USER2> starts with the nitty-gritty details, and I haven't been able to grasp the concepts.

<comment><USER9> Here's my high-level understanding.

You're going to tile (say) the plane with a set of tiles you've chosen beforehand. (In this example, it looks like the tiles are 3d.) There are rules for which tiles can go next to each other---the edges must match.

As you go, there are two regions: a region in which you've settled on which tiles to use, and a boundary region in which you haven't. In the boundary region, you keep track of a _probability distribution_ over the tiles. This distribution is influenced by the neighboring tiles (exactly how is probably the most interesting bit of the algorithm; I don't know).

The algorithm proceeds by repeatedly (i) picking a tile on the boundary that has a very skewed probability distribution, and fixing it to be the most likely tile; and (ii) updating the probability distributions of the neighboring tiles in the boundary.

It's possible that you end up making poor tile placements at the beginning that gets you stuck later, so the algorithm must sometimes backtrack to undo past decisions. You want to pick a set of tiles such that the algorithm doesn't need to backtrack _too_ often, or it will take too long.

Note that the distribution is an ordinary probability distribution, not a sum of complex amplitudes like the name "Wave Function Collapse" would make you think.

<comment><USER10> Oh my....perhaps this backtracking to fix past inconsistencies could allow for a game environment in which "Mandela effect" events happen naturally from time to time. Could make for an interesting game mechanic.

<comment><USER11> You're right. There is backtracking in the demo and when it happens it looks quite eerie. The world around you just decides it wants to look different and changes.

<comment><USER12> That sounds like it could be mechanically cool. Or at least lead to a cool setting.

</comment></comment></comment></comment></comment><comment><USER13> WFC collapse is an awesome algorithm, but I think this demo really illustrates that to get nice looking output with procedural generation also requires an excellent eye for design.

I've played around a bit with WFC and wrote a library for using it[1], but I've never made anything as pretty as this.

[1]: [https://boristhebrave.github.io/DeBroglie/](https://boristhebrave.github.io/DeBroglie/)

</comment><comment><USER14> I imagine a counter strike scenario where the area of engagement is constantly moving throughout this infinite city, so the fight is waged over a constantly changing landscape. Hecka fun or hecka confusing?!

<comment><USER15> I've worked as a level designer on FPS games. Dynamic generation might suit certain types of games (or something like an event mode), but a huge amount of design work and iteration goes into the layout of multiplayer game levels to make them enjoyable.

It's also important that players/teams can memorise the level layouts in order to form strategies.

Still a cool idea though!

<comment><USER16> I haven't designed levels, but playing maps across a few games, I'm constantly amazed at how well small details are thought out. A seemingly random crate actually blocks off a line of fire that would give one team a major positional advantage; a tree breaks up the line of sight between two objectives; a decorative fire provides visual cover in an otherwise overly open lane; a curved passage has exactly the right proportions to give cover on one side while being open on the other, letting players choose when to engage.

In a well-designed map, every part has to play well with everything else, at least within line of sight. Even small changes to the layout result in unbalanced maps that lead to frustrating play. Randomly generated maps might be fun out of novelty, but they won't play well in the long run, at least for games like Counterstrike.

<comment><USER17> Compared to Fortnite, where every match is a unique experience with the addition of player-crafted buildings, and the static game map is under constant transformation each season.

<comment><USER18> "Guided by human actions" isn't exactly random; chaotic and unpredictable, sure!

</comment></comment></comment></comment></comment><comment><USER19> So, does this algorithm need to remember all already decided tiles forever to be consistent? Or to recalculate everything from the start each time you teleport?

I've been working on similar (but much simpler and 2d) algorithm, and the gist of it was:

\- divide infinite world into 2d chunks of constant size that easily fit in memory

\- when player is nearby - deterministicaly generate edges of the visible chunks basing on perlin/simplex noise and random number generator seeded with the world coordinates of the chunk

\- fill the chunks basing on 2d markov chains trained on hand-crafted map, starting with the edges going inwards

It needed a lot of training data to produce something that makes sense with even small number of possible tiles, so in the end I just generated everything with simplex/perlin noise and some heuristics.

I guess instead of markov chains I could use explicit rules to fill the chunks, like this seems to do.

But it had the advantage that it was very fast - because you didn't need to remember everything from the starting place of the player. You could teleport 1000 screens left, and then back, and everything worked fast and regenerated everything the exact same way.

<comment><USER11> My implementation keeps the entire world in memory, forever. This is obviously not desirable, but I didn't figure out a way around it. You can't generate a place again that you have been to because the result would be different.

If you do chunks and generate the edges first, you could run into a situation where it's impossible to fill the chunk based on it's edges.

For generating terrain, using noise functions makes a lot of sense since they are local (= don't need to know nearby values to evaluate) and deterministic.

<comment><USER18> You'd use something like Perlin noise to seed whatever makes the decision about which tile to pick. Perlin noise is deterministic, so it's perfect to generate from the (x,y,z) of the tile & you can be certain that the location will resolve to the same tile if you recalculated the area from scratch. Divide up your world into areas, and force the centre of the area you're in and adjacent areas before filling out the area the player is in.

<comment><USER11> If you have two adjacent chunks, collapsing one will impose constraints on the other one. Even if the RNG part is deterministic, as you suggested, the result will be different depending on which chunk you collapse first.

<comment><USER18> I don't get it. If you have some location between two regions, and you fill it in starting from some regular point (say, centre of the south-west region), you will get the same tiling every time.

If you randomly choose a point to start at (like the player avatar's current position), then I see that you might get different tilings when regenerating the location.

</comment></comment></comment></comment></comment><comment><USER20> It's strange, but for many, many years (40 at least?), I have had dreams that are in places like this. Endless halls, rooms, corridors, and so forth with no exit.

It is really oddly triggering to run around in this thing.

<comment><USER21> I came here to find your comment. All the vivid dreams I have are either 1) resitting an exam from 20 years ago and being completely unprepared for it or 2) running around in an endless dreamscape that is created by taking a known familiar area like a university, my local neighbourhood or a shopping centre and then scaling it up by using exactly this Wave Function Collapse algorithm. Funny thing is I can't backtrack in my dreams either.

</comment></comment><comment><USER22> Admittedly without yet reading but just looking at the pictures, I'd love to see examples of where it creates patterns of patterns. Sort of like the biomes in Minecraft: one pattern to draw out where the biomes are, one to fill them in with content. Could it be made to do patterns of patterns of patterns?

If this were used to create level design where the local view is several iterations deep of patterns of patterns but not yet all the way to the bottom, I guess a fractal, that would be a trip.

Awesome work!

<comment><USER11> Each block has a probability of being selected. You could make this probability location dependent, for example by sampling a noise function. That way you get something like biomes.

</comment></comment><comment><USER23> Anyone have any experience applying this to the generation of time series data?

It's easy enough to generate random time series data but this looks like a promising way to generate interesting signals with prescribed shapes or features while still being "random".

<comment><USER24> "One of the dimensions can be time. In particular, d-dimensional WFC captures the behaviour of any (d-1)-dimensional cellular automata."

</comment></comment><comment><USER25> Imagine creating a Tony Hawks Pro Skater course with this. Can't learn the course ahead of time, just have to be a badass street skater.

<comment><USER26> Great minds: [https://arcadia-clojure.itch.io/proc- skater-2016](https://arcadia-clojure.itch.io/proc-skater-2016)

</comment></comment><comment><USER27> This is a really good example of an uncanny valley. Things like two staircases side-by-side of different sizes just looks... strange, even though there's technically nothing wrong with it.

<comment><USER28> There's a book called "Possible Palladian Villas" which gets into procedurally generated houses (in the style of Palladio), and that kind of thing came up—they'd run their algorithm to generate some houses, and then notice details in what was generated that were just... off. Not impossible, just... not quite right, either. Things you wouldn't think about unless you saw plans for a house that didn't consider it. So they'd tweak their algorithm, and re-run it, finding new details to fix. It's a cool book.

<comment><USER29> I assume McMansion builders use the same design process.

<comment><USER28> Honestly I think that's giving them too much credit ;-)

</comment></comment></comment></comment><comment><USER30> Someone skin this to mimic 'Dark City'! Complete with signs to Shell Beach...

<comment><USER31> Dark City is a great film, though this had me personally thinking more of Inception.

</comment></comment><comment><USER32> This is great. Can you Please and thank you port it to the vive?

Edit: this might not be too hard. It's open source and has instructions for loading it into unity. You might just have to add the vive camera and toolkit.

<comment><USER11> I don't currently have access to a Vive, but I worked with it earlier. All that needs to be done is add SteamVR to the project and hook up teleportation. That's it.

<comment><USER28> If possible, I'd love to be able to run it on a Mac, too.

<comment><USER11> If you (or someone with a Mac) wants to create a build with the Unity Editor, I'll add it to the itch.io page.

<comment><USER33> I have a vive, but I don't have a mac. I could throw the SteamVR plugin in and get it up on windows, but someone would have to test it on mac

<comment><USER32> I'd love to try it on windows if you can do it.

<comment><USER33> I'm at work and my Vive is at home, threw together a build that "in theory" works but I have yet to test it. If you wanna take a stab it you can download it here. [https://drive.google.com/drive/folders/1uRP9uan3iViBddmQ5iZ3...](https://drive.google.com/drive/folders/1uRP9uan3iViBddmQ5iZ385yy5c_khnss?usp=sharing)

or check out the source here [https://github.com/matuszeg/wavefunctioncollapse](https://github.com/matuszeg/wavefunctioncollapse)

I'll update the build (and this comment) and make sure it works later when I get back to my Vive.

<comment><USER32> Awesome! I'm going to fire up the vive Pc tomorrow morning and try it out. I'll provably have to sit through an hour of updates :-(

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> This is tectonic. If it's purely WFC, I'm really amazed and excited. It's not the novelty, it's the perfection of each. They remind me of the Laurentian library by Michelangelo.

[https://goo.gl/images/HHQLUv](https://goo.gl/images/HHQLUv) [https://goo.gl/images/njGNLC](https://goo.gl/images/njGNLC)

Would love to see the output using Gothic architecture as the input.

<comment><USER35> Links are broken (without javascript?), direct links appear to be:

[https://s.hswstatic.com/gif/michelangelo- buildings-10.jpg](https://s.hswstatic.com/gif/michelangelo-buildings-10.jpg)

[http://www.perfectraveller.com/media/k2/items/cache/2cebfdae...](http://www.perfectraveller.com/media/k2/items/cache/2cebfdae7a8ea5d691033c085990a9d4_XL.jpg)

</comment></comment><comment><USER36> If this is based on wave-function collapse, what does it do when it hits an impossible/contradictory state?

(See [https://github.com/mxgmn/WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse) where it mentions "It may happen that during propagation all the coefficients for a certain pixel become zero. That means that the algorithm has run into a contradiction and can not continue.")

<comment><USER11> In the algorithm as it's described on that page, nothing is returned in case of a failure. I first implemented it so that single blocks would fail and a white cube would spawn at that position. Now, it uses backtracking. It keeps a history of its decisions and removes some whenever it reaches a contradiction.

</comment></comment><comment><USER37> Minecraft has an add on that does this called "The Lost Cities"

"There are highways, bridges, tunnels, a subway system, tons of dungeons with spawners and loot and so on. "

[https://minecraft.curseforge.com/projects/the-lost- cities](https://minecraft.curseforge.com/projects/the-lost-cities) [https://youtu.be/OZYZ0kV7Uw0](https://youtu.be/OZYZ0kV7Uw0)

<comment><USER24> Does it use WFC or another genration algorithm?

</comment></comment><comment><USER38> This is sufficiently advanced to be magic to me.

<comment><USER38> Ok, I understand a little bit more from reading this page: [https://www.grendel-games.com/procedural- generation/?lang=en](https://www.grendel-games.com/procedural- generation/?lang=en)

</comment></comment><comment><USER39> This would make so many games much more fun. Imagine if every drop in PUBG was onto an island with familiar features but not like any before it. Would definitely level the playing field too.

</comment><comment><USER40> This evokes a deep House of Leaves kind of horror in me when I play it. Similar to when I play No Man's Sky or Zoom in on the Mandelbrot set. Infinite sameness... forever...

<comment><USER40> The unity game engine and everything worked really well though. It immediately used my HOTAS controllers, which I wasn't expecting. Impressive demo!

</comment></comment><comment><USER41> How does the infinite part work?

The key problems with Wave Function Collapse tend to be that it gets exponentially slower as the area you need to collapse increases, and that it easily gets "stuck" (i.e. finds an combination of tiles that cannot be resolved, and has to backtrack arbitrarily far).

I assume the speed is solved by operating only on new chunks at the edge of the explored space, but backtracking across chunks seems... painful.

</comment><comment><USER42> I can see echoes of Borges, Kafka, Euclid, Escher, Greg Egan... nice work. Some existential and strange tales to tell with an environment like this.

</comment><comment><USER43> Pretty cool. Is everywhere reachable on foot? Are there blind interiors that are not reachable?

</comment><comment><USER32> Does this remember what's been generated if you come back to an area you've been before?

<comment><USER11> Yes, it does. However the algorithm is not deterministic. If you close the game and start it again, you will see a different world.

<comment><USER32> If you want to shoot me an email I could help port it to the vive? I might just need a few detailed instructions and I can figure it out from there.

</comment></comment></comment><comment><USER44> That's why I hate being a tourist.

\- "Look at this wonderful stairs!"

\- "I see them. They are really uniquely same as any other stairs I've seen so far. And after all they are ... just staris."

</comment><comment><USER45> For all those of us not running Windows, is there a video anywhere showing this off?

<comment><USER46> It's on the page:

[https://www.youtube.com/watch?v=VqGDxNsAkKE](https://www.youtube.com/watch?v=VqGDxNsAkKE)

<comment><USER45> Thanks! It wasn't before :)

</comment></comment></comment><comment><USER47> I'm reminded of Greg Bear's The Way. I thought it would be cool if user generated graffiti could be used as a seed for new generative graffiti so the further 'in' you go the stranger it gets

</comment><comment><USER48> Would it be fair to call the "Wave Function" here a case of parallel constraint satisfaction?

</comment><comment><USER49> This is just a few ghosts and some pellets away from being awesome .. ;)

</comment><comment><USER50> It's very unrealistic: in a real city people would have shit bricks because of the total lack of parking, and forced the planning commission to enact big parking minimums.</comment>


Python for Non-Programmers - <AUTHOR> https://PythonForNonProgrammers.com/ <comment><USER2> > _Q. What do I need to install?_

> _Just Python is enough. Other installation suggestions and support are > available in the forum._

Speaking as someone who has taught Python to non-programmers in classroom and workshop settings, this seems like far too vague an instruction. For many novice (including the instructor!), the installation and system setup is the most frustrating and confusing part of hands-on learning. With non- programmers, you can never assume a base level of computing understanding – this includes things like not knowing how to get into the command-line, or install a text editor, or even what filenames and file extensions are (I always have students enable display of file extensions at the start; usually it's off by default for most OSes).

I would think you'd want to do this kind of thing having students use something like CoLab or PythonAnywhere. Sure, it's nice to run code from your own system, but that's not an immediate concern for most people trying to learn the basics.

<comment><USER3> I been trying to get one of my daughters to learn programming (With / through Python) for some time now. She's also willing, but life gets in the way and her dedications was sparse.

This week with lockdown and everything she started to study again.

I had recently "upgraded" her laptop from Windows to Debian, and installed both PyCharm and Miniconda on it.

So, this week she managed to configure PyCharm to use the Miniconda python interpreter, and I gave her a few instructions (That were actually a repetition or some I gave her a while back) on to how to run Jupyter.

Come the next day, and she calls me to ask me how to run some notebook she had in a backup. She had already copied them in a folder (A different one that the one she was using the previous day).

So I told her "Ok, so you go to the folder and run Jupyter in it".

"Dad. Run... WHERE!"

The amount of assumed knowledge we programmers have, and usually assume other people (Even non-programmers) have, is enormous.

I didn't even click in the link, but if all are all the instructions they give to install python, they are off to a not actually bad but chopped foot start.

<comment><USER4> My son is taking a programming class in high school - they use repl.it for all their assignments. That makes installation a non-issue; eventually I assume they'll "graduate" to a local install, but it helps them focus on learning the language and not worrying about the environment (yet).

</comment></comment></comment><comment><USER5> I'm guessing the FAQ is targeted at the non-technical audience, so I'm not surprised this doesn't show up as a question, but - why Python?

I often wonder if imperative programming is actually a beginner-friendly abstraction - in particular, because of name rebinding and interior mutability. My university's CS course is highly technical, but also targeted at non-programmers (officially, the lecturers cannot expect any computing experience at all) - and it teaches Haskell, which addresses some of those concerns.

<comment><USER6> > _wonder if imperative programming is actually a beginner-friendly > abstraction_

You know, a very common newbie Lisp question is "why is my list still the same after _append_ ".

I bet you no Python beginner asks why their _list_ is _different_ after _list.append(3)_ , having expected a new list to be returned and the original one left alone.

Imperative is intuitive; the real world is apparently imperative. Though it can be described by functions in which _t_ is just a parameter, the way those functions play out is that the past values of _t_ are not available.

To take a more level view, the expectations w.r.t. _append_ could be conditioned by prior exposure to other languages. However, any exposure to _computers_ at all reinforces the imperative view. Almost all content is manipulated destructively: documents, settings, you name it.

<comment><USER7> > the real world is apparently imperative.

I beg to differ. The real world is declarative. But as software developers we mostly suck at creating declarative ways to express problems. The spreadsheet being the one example of an intuitive declarative UI that non-programmers grok easily.

Your average corporate VP of engineering uses a declarative interface to issues charters to his developers: "You need to hit X performance target, Y cost of goods, and Z MTBF. By Date D. Go."

Declarative is the way the world works.

<comment><USER8> And yet, the only way to actually complete that charter is to "interpret" or "compile" that charter into something imperative.

</comment></comment></comment></comment><comment><USER9> Cool initiative. I will take a look at some of the sessions. Can you post a schedule when they will take place?

I am in particular interested to see how much depth you expose the "non- programmers" to. Is it just an applied course? E.g., here is a function X that does Y. Or do you focus also on the implications in memory and, for example, Python's object model?

Good luck. We need more non-programmers to learn to code. Not for coding's sake. Most of them won't become developers. But it allows academics from all kinds of disciplines to teach their students advanced stuff. I see programming just like most students independent of the major must take Calculus 101 or Statistics 101.

BTW, I am the author of this introduction to Python (also for non-CS majors): [https://github.com/webartifex/intro-to- python](https://github.com/webartifex/intro-to-python)

I teach Python at a business school. Due to Corona, the campus was closed and I put all my lectures on YouTube: [https://www.youtube.com/playlist?list=PL-2JV1G3J10lQ2xokyQow...](https://www.youtube.com/playlist?list=PL-2JV1G3J10lQ2xokyQowcRJI5jjNfW7f)

Subscribe to my channel [https://www.youtube.com/user/webartifex](https://www.youtube.com/user/webartifex) if you are interested in more Python applications in the field of business administration. I am new to YouTube and will post at most 2 meaningful videos a month. No monetization, no hidden product placements.

See also this HN post from last week: [https://news.ycombinator.com/item?id=22669084](https://news.ycombinator.com/item?id=22669084)

<comment><AUTHOR> I'm running the course every Friday at 10 a.m. Eastern, in 1-hour segments. Recordings are available to anyone who signs up. So far, it has been lots of fun!

</comment></comment><comment><AUTHOR> So this is what happens when I don't realize that my post on HN has gotten a lot of attention! Yikes...

I'm going through the comments now and responding...

</comment><comment><USER10> I tend to recommend the free online course [https://www.py4e.com/](https://www.py4e.com/) for people who want to learn python and programming in general. If they struggle with it, then [https://www.codecademy.com/](https://www.codecademy.com/) is another good resource.

</comment><comment><USER11> What does it mean to be a "non programmer" vs. a "programmer"?

I don't mean "someone who doesn't know how to program" vs "someone who does".

I mean the common trope of a (for example) midlevel data scientist or someone who knows how to use python and says "I'm not a programmer", yet knows more programming than most junior devs I know.

<comment><AUTHOR> The course is aimed at people who have never programmed before. There are many participants who have, but they realize that I'm assuming they don't even know what a variable is, or that you need quotes around text to distinguish it from an identifier, etc.

Session 1 was about basic input/printing. Session 2 was about "if" statements. Session 3 was about numbers. Session 4 will be the first of several talking about strings.

My goal is to help people learn to program if they haven't done so already, or (especially) if they have been frustrated.

</comment></comment><comment><USER12> Cool! Thanks for doing the course!

</comment><comment><USER13> does it say at what hour is the course?

<comment><USER14> > Q: When does the course take place? For now, we're meeting at 10 a.m. > Eastern on Fridays, via Zoom. Each session lasts for 1 hour, and is > recorded. If you register for the course, you'll have unlimited access to > all of the recordings.

7am, Pacific. My wife has shown a bit of interest but 7am is just too early in our household to get up and start leaning right away. Seems like it would be a good course though. She could still listen to the recordings, but being able to ask questions live would be more engaging.

<comment><AUTHOR> Finding a good hour that (a) fits my schedule and (b) fits the schedule for as many people as possible around the world was... challenging. I apologize for making it early for people on the West Coast, and hope that you can benefit from the recordings.

</comment></comment></comment><comment><USER15> bookmarked for later use</comment>


OpenSUSE Is Now Available for Raspberry Pi - <AUTHOR> http://news.softpedia.com/news/openSUSE-Is-Now-Available-for-Raspberry-Pi-381394.shtml

<comment><USER2> Great to see OpenSUSE get onto the Pi. Seriously my favorite Server Distro. I just wish more people would give OpenSUSE another serious look especially as a server.

The ability to use the SUSE Build Service alone is worth it! It really is one of the most powerful thing to come out of Linux the past decade and I see so little traction.

[https://build.opensuse.org/](https://build.opensuse.org/) : The Open Build Service (OBS) is a generic system to build and distribute packages from sources in an automatic, consistent and reproducible way. It makes it possible to release software for a wide range of operating systems and hardware architectures. The OBS reference server, which we use to build our distribution, currently has over 35.000 users that are building over 200.000 packages for 22 base distributions on 6 architectures.

</comment><comment><USER3> Has anyone noticed the sharp number of softpedia links getting posted around?

I'm not sure why, either, (unless it's just spamming on their part) as the quality of content on the site is absolutely awful.</comment>


Unaccountable system for cellphone tracking often abused by police - <AUTHOR> https://boingboing.net/2018/05/12/extraordinary-access.html <comment><USER2> Discussed at [https://news.ycombinator.com/item?id=17046632](https://news.ycombinator.com/item?id=17046632)

</comment><comment><USER3> Try out [https://www.locationsmart.com/try/](https://www.locationsmart.com/try/) , you can find the current location of a phone (not just with cell tower info, it can force AGPS to operate on your phone) with just _its phone number_ ; the demo site requires you reply to an SMS but there's no technical requirement against that. There's no subscriber-accessible opt-out, at least on T-Mobile, that prevents this from working.

Note that this is all aboveboard, "Locationsmart" openly flaunts their agreement with the main four (soon to be three) PLMN operators in US; this is not a case of someone abusing ill-gotten SS7 access.

<comment><USER4> This has been the case since around 2004 at least. I reported it to the press at the time, without much fanfare.

Things to note with the SMS opt-in.

* You can abuse the opt-in message of "Real Name wants to track.." by registering with a real name of 160 blank letters (depends on provider) so the recipient only gets a blank SMS

* You can spoof the reply opt-in as th confirmation as they all use is a fixed string. Spoofing SMS sender is mostly trivial.

* Few services appeared to implement the regular notification to the tracked party

* As I understand it, implementation of opt-in was the responsibility of the service provider, not the telco, and the telcos did not seem to audit this in any way.

If anyone cares to investigate further, happy to give more details.

<comment><USER3> > If anyone cares to investigate further, happy to give more details.

I'm quite interested in looking into this further; any details you have would be much appreciated.

<comment><USER4> Have a look at [https://www.theguardian.com/technology/2006/feb/01/news.g2](https://www.theguardian.com/technology/2006/feb/01/news.g2)

This news article was about a year later than the original once, from what I remember. It misses the part that you can replace the name and spoof the SMS though. The SMS quoted in the article does demonstrate the vulnerabilities mentioned though

"Ben Goldacre has requested to add you to their Buddy List! To accept, simply reply to this message with 'LOCATE'"

Interesting to re-discover this now, I had no idea who Ben Goldacre was at the time.

If you find services still vulnerable, let me know. I'm still friends with the journalist who initially spoke to Vodafone before publishing in the first place. I remember them not being too pleased, but as I say, it never got fixed.</comment></comment></comment></comment>


Ask HN: Why is "Create Application Shortcut…" dimmed in Chrome for Mac? - <AUTHOR>

The option exists since the earlier versions of Chrome for Mac but is disabled. Is this intentional? Is it a technical limitation? It is really strange to have a visible disabled option for almost two years now. <comment><USER2> [http://dev.chromium.org/developers/design- documents/appmode-...](http://dev.chromium.org/developers/design- documents/appmode-mac)

<http://code.google.com/p/chromium/issues/detail?id=13148>

Looks like they're still working on an acceptable implementation. Doesn't look like a huge priority though.

<comment><AUTHOR> Maybe getting this post to HN's front page would increase its priority.</comment></comment>


Opal - Ruby to Javascript compiler - <AUTHOR> http://opalrb.org

<comment><USER2> Cool idea. Not the first attempt though:

<http://hotruby.yukoba.jp/>

<https://github.com/whitequark/coldruby>

<http://rb2js.rubyforge.org/>

[http://www.ntecs.de/blog/articles/2007/01/08/rubyjs- javascri...](http://www.ntecs.de/blog/articles/2007/01/08/rubyjs-javascript- no-thank-you/)

<https://github.com/jessesielaff/red>

<http://www.playmycode.com/docs/quby>

<https://github.com/mattknox/8ball>

Unfortunately, none of them seem to be to handle the mor dynamic features of ruby, like _method_missing_ , which diminishes the possibility of reusing existing ruby code in the browser.

<comment><USER3> Javascript Harmony (ES6) Proxies will allow to define getter catchall and other kinds of traps.

See [https://developer.mozilla.org/en- US/docs/JavaScript/Referenc...](https://developer.mozilla.org/en- US/docs/JavaScript/Reference/Global_Objects/Proxy)

<comment><USER4> Minor FYI: for this who want to play with Proxies right now, you can use a recent-ish copy of node invoked with node --harmony_proxies Enjoy!

<comment><USER3> Actually, V8 implements an older version of the spec. You can get a polyfill created by the designer of the Proxy spec here: <https://github.com/tvcutsem/harmony-reflect>

It requires `node --harmony` (actually only Harmony Proxies and Harmony WeakMaps, but the rest doesn't hurt.)

</comment></comment></comment></comment><comment><USER5> It's a great idea, but it seems ridiculous how even simple arithmetic gets translated to an unreadable mess of javascript.

puts 4 + 2 + 5 + (19 + 3 * 4) - 8 / 10

translates to:

(function() { var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice; var __a, __b, __c, __d, __e, __f, __g, __h; return self.$puts((__a = (__c = (__e = (__g = 4, __h = 2, typeof(__g) === 'number' ? __g + __h : __g['$+'](__h)), __f = 5, typeof(__e) === 'number' ? __e + __f : __e['$+'](__f)), __d = (__e = 19, __f = (__g = 3, __h = 4, typeof(__g) === 'number' ? __g * __h : __g['$*'](__h)), typeof(__e) === 'number' ? __e + __f : __e['$+'](__f)), typeof(__c) === 'number' ? __c + __d : __c['$+'](__d)), __b = (__c = 8, __d = 10, typeof(__c) === 'number' ? __c / __d : __c['$/'](__d)), typeof(__a) === 'number' ? __a - __b : __a['$-'](__b))) })();

<comment><USER6> It's really not terribly complicated to figure out what it does, here's the formatted version for adding two numbers

        (function() {
              var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice;
              var __a, __b;
              return self.$puts((__a = 1, __b = 2, typeof(__a) === 'number' ? __a + __b : __a['$+'](__b)))
        })();

The first line just declares some Opal-specific variables (__scope, nil, __breaker, etc.), which I guess are created whether or not they're actually used. The second line defines the temporary variables used to store the numbers. Then, depending on the type, it either actually adds them or use its own '$+' function, which I guess it adds to the prototype for all objects.

In terms of having to ever debug something like that, I agree that it'd probably be a huge pain.

<comment><USER7> I agree that it's reasonable. Consider this C program:

      int main()
      {
        return 4 + 2 + 5 + (19 + 3 * 4) - 8 / 10;
      }

Becomes the following assembly:

        .section    __TEXT,__text,regular,pure_instructions
        .globl  _main
        .align  4, 0x90
      _main:
      Leh_func_begin1:
        pushq   %rbp
      Ltmp0:
        movq    %rsp, %rbp
      Ltmp1:
        movl    $42, -8(%rbp)
        movl    -8(%rbp), %eax
        movl    %eax, -4(%rbp)
        movl    -4(%rbp), %eax
        popq    %rbp
        ret
      Leh_func_end1:

Yes, that's going from "high level" to "low level," but much of the same concepts exist. You have to set up a bunch of stuff unrelated to the computation first, which in the Ruby-to-JavaScript case means setting up the runtime system. In the C-to-assembly case, it means mucking around with the stack. Then the actual computation may not be the most optimal thing, because it was generated by a general framework which can handle _any_ arbitrary computation. Reducing it to something more reasonable looking is an optimization.

</comment></comment></comment><comment><USER8> Being relatively new to cross-language compilation, how are one language's class APIs typically translated into another?

For example :

       [1,2,3].shuffle

[turns into] =>

       (function() {
         var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice;

         return [1, 2, 3].$shuffle()
       })();

Of course, since JS arrays do not have a "shuffle" method, the output reads :

       TypeError: Object 1,2,3 has no method '$shuffle'

Is the answer to simply use class/object methods that are present in both languages?

<comment><USER9> Could probably also include something like Sugar.js or Underscore.js that tries to bring a lot of the missing syntactic sugar to JS.

</comment></comment><comment><USER10> I really like this idea of compiling code to Javascript. Brenden Eich makes some good points for it in his series of slides (starting here: <http://brendaneich.github.com/Strange-Loop-2012/#/21>).

I'm working on a little programming language myself that compiles to Javascript. In most languages that do this, I wish there was better information on the mapping between the domain language and its Javascript codomain. I think this would be a good open source project idea: a tool to assist in the compilation of various languages to Javascript. Something to the effect of how source lines in C can be printed above their generated assembly. Anyone want to give it a shot?

<comment><USER11> Why is it not possible to engineer a basic VM to do this job from the start, rather than retrofitting Javascript to act as a bytecode?

<comment><USER12> implementing a vm in javascript would be noticeably slower than compiling directly to javascript. Dart has its own vm, which will eventually be bundled with chrome since it's a google-backed project, but for backwards compatibility it still needs a dart source to javascript source compiler.

</comment></comment></comment><comment><USER13> They lost me at the "nil" section.

RubyScript is what we need => efficient code, à la coffeescript, with a Ruby syntax.

There is some impedance mismatch between ruby & javascript semantics. Trying to hide this fact has a cost in terms of performance.

I would love to have some ruby syntax as long as it does not compromize the speed of my code.

There is a trend these days where syntax and semantics are becoming orthogonal, that's nice.

Hence GoScript, PascalScript, PrologScript, CppScript, SmallScript...

Thanks to sourcemaps the issue of the generated code readability has disappeared. Only the performance matters from now on.

<comment><USER14> >RubyScript is what we need => efficient code, à la coffeescript, with a Ruby syntax.

Why not make a Ruby -> Coffeescript compiler, since they're a lot closer in the first place?

</comment></comment><comment><USER15> Unfortunately their hash table uses Javascript objects. Therefore it does not behave exactly like Ruby.

Eg:

      # Opal
      h = Hash.new
      h['0'] = 1
      h[0] = 2
      print h
      # {"0"=>2}

      # Ruby
      h = Hash.new
      h['0'] = 1
      h[0] = 2
      print h
      # {"0"=>1, 0=>2}

It is very hard to reproduce those low level specifications without rebuilding everything from scratch sadly :(

<comment><USER16> ECMA5 has real maps, which Opal could use. Some browsers support them already.

</comment></comment><comment><USER17> Yup, that's some good brainfuck:

          (function() {
            var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
            var adam = nil, __a, __b;
            (__b = [1, 2, 3, 4], __b.$each._p = (__a = function(a) {

              if (a == null) a = nil;

              return this.$puts(a)
            }, __a._s = self, __a), __b.$each());
            (function(__base, __super){
              // line 5, (file), class Foo
              function Foo() {};
              Foo = __klass(__base, __super, "Foo", Foo);

              var Foo_prototype = Foo.prototype, __scope = Foo._scope;

              return Foo_prototype.$name = function() {

                if (this.name == null) this.name = nil;

                return this.name
              },
              Foo_prototype['$name='] = function(val) {

                return this.name = val
              }, nil
            })(self, null);
            adam = __scope.Foo.$new();
            adam['$name=']("Adam Beynon");
            return self.$puts(adam.$name());
          })();

<comment><USER18> If you look at this rationally, it's actually pretty sane. It's just very simple JavaScript OOP inline with translated code. Even more beautiful is the output of modules:

         module Run
           def run
             puts "I am running!"
           end
         end

         module Jump
           def jump
             puts "I am jumping!"
           end
         end

         class Foo
           include Run
           include Jump
         end

         mario = Foo.new
         mario.run
         mario.jump

translates to:

         (function() {
           var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __module = __opal.module, __klass = __opal.klass;

         	// Define Mario
         	var mario = nil;

         	// Javascript "Run" class
         	(function(__base){
             // line 2, (file), module Run
             function Run() {};
             Run = __module(__base, "Run", Run);
             var Run_prototype = Run.prototype, __scope = Run._scope;

             Run_prototype.$run = function() {

               return this.$puts("I am running!");
             }
                 ;Run._donate(["$run"]);
           })(self);

         	// Javascript "Jump" class
           (function(__base){
             // line 8, (file), module Jump
             function Jump() {};
             Jump = __module(__base, "Jump", Jump);
             var Jump_prototype = Jump.prototype, __scope = Jump._scope;

             Jump_prototype.$jump = function() {

               return this.$puts("I am jumping!");
             }
                 ;Jump._donate(["$jump"]);
           })(self);

         	// JavaScript "Foo" class
           (function(__base, __super){
             // line 14, (file), class Foo
             function Foo() {};
             Foo = __klass(__base, __super, "Foo", Foo);

             var Foo_prototype = Foo.prototype, __scope = Foo._scope;

         	 // $include Run / Jump
             Foo.$include(__scope.Run);
             return Foo.$include(__scope.Jump);
           })(self, null);

         	// The ruby executing code translation
           mario = __scope.Foo.$new();
           mario.$run();
           return mario.$jump();
         })();

<comment><USER19> While we are posting contrived examples. What was ever wrong with this?

        var Foo = function() {};

        Foo.prototype.jump = function() {
            return "I jump."
        };

        Foo.prototype.run = function() {
            return "I run."
        };

        var mario = new Foo();
        mario.run();
        mario.jump();

I can't imagine that opal code running nearly as fast as javascript. And if we are waving around compiled js - coffeescript does a much better job of being readable. You just black-boxed the whole thing. I like to know what is happening with my js.

Cool for the rubyist in you i guess. I just kinda go o_0

</comment></comment></comment><comment><USER20> While very impressive it makes me nervous. The JS it outputs just in the basic tutorial looks extremely complex, I'd hate to debug that code! Compare with CoffeeScript, where the output is quite easy to follow, and therefore debug.

<comment><USER21> The difference is that CoffeeScript was designed to compile to JavaScript, so it can adopt JavaScript semantics.

Ruby doesn't have the same semantics as JavaScript, so you can't have a 1-to-1 mapping of language constructs.

<comment><USER20> Oh I get that. I'm sure they did as good as job as possible, but it still makes me nervous.

As nice a language as Ruby is, I don't think it's worth the trade-off. I'll stick with CoffeeScript since it's a nice compromise between Ruby and JavaScript.

</comment></comment></comment><comment><USER22> Can you interact with the dom inside opal?

<comment><USER23> Seems so: > Document['.post .title'].html = @post[:title] Document['.post .body'].html = @post[:body] Document['.post .comments'].html = comments_html

From <https://github.com/opal/opal-rails#readme>

</comment></comment><comment><USER24> I certainly see future for this!

</comment><comment><USER25> Source maps? Source maps.

</comment><comment><USER26> What the use case for something like this? Am I missing something?

<comment><USER27> Using the language you're comfortable with client-side. Though what this really shows, once again, is that we really need a good, open, virtual machine specification for client-side byte code so we aren't stuck with the same javascript hammer for all problems.

<comment><USER28> ? Doesn't this show that we _aren't_ stuck with the same hammer? Opal is a different hammer.

<comment><USER29> Not really. You're still using Javascript in the end.

<comment><USER30> How is that a bad thing? Source code VMs are easier to secure and as the tooling improves, you don't need to look a the generated JS anymore to debug, it becomes "byte code".

</comment></comment></comment></comment></comment><comment><USER31> Can't those standards committees just do something right for once and create a standard for a vm that will run in the browser (a la Dartium)? Stop this monopoly and oppression of innovation!!!</comment>


How 10 people built a competitor to Amazon.com for $1 million—in 90 days - <AUTHOR> http://qz.com/149811/how-10-people-built-a-competitor-to-amazon-com-for-1-million-in-90-days/

<comment><USER2> How is there no web interface?</comment>


Ask HN: How to read mailing list via RSS? - <AUTHOR> I subscribe to a number of daily/weekly mailing lists and I'd love to read them in my RSS reading app. Is there a simple way to achieve this? <comment><USER2> I use Feedbin, which has this feature: [https://feedbin.com/blog/2016/02/03/subscribe-to-email- newsl...](https://feedbin.com/blog/2016/02/03/subscribe-to-email-newsletters- in-feedbin/)

</comment><comment><USER3> For those who don't use feedbin, kill-the-newsletter.com will do this for you.</comment>


An A.I Artificially intelligent logo creating mobile and web app - <AUTHOR> Hello everyone. We are a smart logo creating mobile and web app. We have not came up with a name for it as yet.
We are a small startup based in the Caribbean. The app will be able to make logos based on user submitted settings and based on those specs it will generate a logo using very advanced A.I technology. The App will charge a very small fee of $20 USD and the client will get all the high resolution PNG with vectors etc..
We are based in the Caribbean. We are made of a team of 4 people. Two designers and two developers.
What advice can you give us when launching the startup and what are some ways we can promote it......
This is our first startup. <comment><USER2> Make sure your operating agreement is looked over by a legal professional and insure all requirement are met.

It sounds like you have the product made but need marketing and sales to reach customers. If you haven't done market research in your niche, don't be surprised if the product fails.

Set a measurable goal(s) in the future, reflecting on expectations vs. reality once the deadline of the goal(s) is reached. What factors made you hit, surpass, or fall short of the benchmark. How will you improve? Why did this happen?

Execute.

<comment><AUTHOR> The app is still in development. But when we are finished with it we will do that for sure. How can we promote it, would this site be good promotehour.com ?

</comment></comment><comment><USER3> Post some of the example logos generated using your app as a blog post and post it as show HN, ideally people should be able to try it out so you might want to give the first 100 users a free logo and display those as well

<comment><AUTHOR> The app is still in development. But when we are finished with it we will do that for sure.</comment></comment>


Moon Is Stepping Stone, Not Alternative to Mars, NASA Chief Says - <AUTHOR> https://www.scientificamerican.com/article/moon-is-stepping-stone-not-alternative-to-mars-nasa-chief-says/ <comment><USER2> A couple of interesting points to consider when thinking about putting a base on the Moon:

"Each Apollo mission increased the mass of the lunar atmosphere by about 30%, and it took several weeks for the atmosphere to return to its natural state. Highly sensitive measurement or communication instruments may be affected by the additional atmospheric particles." [1]

"Studies have also revealed that the balance is very delicate. At present, the solar wind sweeps the lunar atmosphere into space very efficiently, limiting its density to that of a collisionless gas (an exosphere). If the atmosphere were, however, a factor of just 1000 denser, this process would invert itself and the atmosphere would remain stable for tens of thousands of years. Just the Apollo missions to the Moon increased the atmospheric density by a factor of 10 with rocket exhaust (mostly CHON compounds). Large scale human activity on the Moon could push the total mass over the limit and create an artificial atmosphere, pushing the Exobase off the surface and creating a stable, if highly tenuous atmosphere which could threaten precisely the most important asset that the Moon can offer us: its sterility and almost atmosphereless nature." [2]

[1] [http://www.tsgc.utexas.edu/tadp/1995/spects/environment.html](http://www.tsgc.utexas.edu/tadp/1995/spects/environment.html)

[2] [https://web.archive.org/web/20050214155703/http://www.iac.es...](https://web.archive.org/web/20050214155703/http://www.iac.es/galeria/mrk/atmo_lun.html)

<comment><USER3> I'm not really convinced this is something to worry about. If the vaccuum is this unstable it would be eventually be inflated anyway by a comet or gaseous asteroid collision, and it's a happy coincidence that the moon hadn't lately had a significant collisions in the period of history that we were able to get up there and measure it.

<comment><USER4> I agree, is there really that much value in the moon being sterile and having no atmosphere. If it had one that was much denser, we could use aero braking. This would be far away from that.

</comment></comment></comment><comment><USER5> Ugh.

Zubrin's 'The Case For Mars' (which on reading, it's obvious SpaceX have based a lot of their strategy on) is categorically against going back to the Moon and using it as a 'stepping stone'.

Zubrin's 'Mars Direct' architecture shows quite plainly that it is possible using current technology readiness levels and funding to send a significant scientific mission to Mars _directly_ , without the need for huge orbital infrastructure or Moon Bases.

I had a similar feeling when SpaceX announced their #DearMoon project. I truly hope the Moon doesn't distract them from their true goal: the timely establishment of a permanent human presence on Mars.

We've been to the Moon. We don't _need_ to go back. We _need_ to aim higher.

<comment><USER6> Depends on what the moon missions are. Building moon-specific infrastructure (ie adapting things to 14 day long light / dark cycles, 0.3g) would be a distraction. Using it as a close - by testing ground probably doesn't matter except it had the upside of possible getting people excited.

For example, spacex wants to test the BFS. They could send it on a wide orbit 2 days away, or they could orbit around the moon instead. Going for the moon is probably only slightly different (ie different orbit insertion) but other than that it would be the same, except awesome pics/video.

<comment><USER7> If the moon's gravity was 0.3g, that would be close enough to Mars'(0.38g) that it would be useful as a prelude to a Mars landing/exploration/occupation. Unfortunately the Moon's gravity is 0.17g, so not as relevant.

</comment></comment></comment><comment><USER8> The moon has 1/6th of Earth's gravity and 0% of our atmospheric pressure.

Mars has 1/3rd of the gravity and 0.6% of the pressure.

Those 2 factors make them very similar to each other and the distance makes the moon the clear candidate for a first step.

<comment><USER9> Transport between bodies in space is measured by kilometers per second as delta-V, not kilometers.

      Earth  LEO     9.3  km/s
      LEO    escape  3.22 km/s
      escape MTO     0.6  km/s
      MTO    MCO     0.9  km/s
      MCO    LMO     1.4  km/s
      LMO    Mars    4.1  km/s
                    -----
                    19.5

      Earth  LEO     9.3  km/s
      LEO    LLO     4.04 km/s
      LLO    Moon    1.87 km/s
                    -----
                    15.2

      Moon   LLO     1.87 km/s
      LLO    escape  1.40 km/s
      escape MTO     0.6  km/s
      MTO    MCO     0.9  km/s
      MCO    LMO     1.4  km/s
      LMO    Mars    4.1  km/s
                    -----
                    10.3

      (Earth -> Moon -> Mars = 25.5 km/s)

In order for the Moon to be a stepping stone, it would have to be a refueling station where most of the mass involved ultimately comes from the Moon, rather than Earth. As it is now, the Lunar industrial plant produces 0 Mg of rocket fuel annually. For 30% more delta-V, a rocket from Earth can just go to Mars directly.

<comment><USER10> Thanks for the numbers.

30% of delta-V but much more than 30% more fuel used (etc) since "compound interest" applies as you're using fuel to ship fuel out of orbit and then much of that fuel again to change your orbit to mars, etc.

Similarly, Napoleon came up against the limits of using horses to pack hay for horses invading Russia - compound interest; you can only do so much.

PS - that 30% assumes a path that I don't, and no solar power used to catapult oxygen off the moon. I'd go for a Lagrange point you're ignoring.

PPS - you've assumed Mars, not, say, near-earth asteroids or trojans with a very different, far lower delta-V. Vastly different problem.

<comment><USER9> Going directly from low orbit to a transfer orbit to the second body will usually save some delta-V over going to escape orbit first and then going to transfer orbit. I didn't have the numbers for low lunar orbit to Mars transfer orbit, so I changed the Earth to Mars path for a fairer comparison.

I didn't forget the Lagrange libration points, but decided not to include them because they were not relevant to the parent comment, and they would still require some mechanism to get propellant mass up to them. They're currently almost empty, and won't be very useful until the Moon itself has launch capacity to get water up there. Again, I was mainly responding to the parent post.

The rocket equation is indeed a bear. As delta-V scales linearly, fuel requirements scale up exponentially. One way to manage it is to use stages. Another is to refuel and assemble vehicles higher up in the gravity well. As it happens, shipping tanks of fuel and propellant up to LEO separately means that missions to Mars starting fully fueled from LEO would require only 0.9 km/s more than missions starting from the lunar surface. Measuring by delta-V, LEO is at about the halfway point for an Earth-Mars mission.

But it's also worth noting that the surface of the Moon is closer to LEO than the surface of the Earth. Shipping fuel and propellant from the Moon to LEO, to rendezvous with and refuel a vehicle coming up from Earth, is even cheaper than shipping up the resupply mass from Earth.

</comment></comment></comment></comment><comment><USER11> I profoundly disagree. IMHO, the destination is open space, not another planet, and the gravity well on the Moon is waaay easier to overcome.

<comment><USER12> What's interesting about open space? To me it's the _stuff_ in space that makes interesting destinations.

<comment><USER13> There's a lot of stuff in space that isn't in a deep gravity well of a spherical body. For instance mining asteroids enough to have a self sustaining manufacturing base at micro-g could allow for the earths manufacturing and power generation needs to be met somewhere that's not on the Earth, decreasing pollution.

</comment></comment></comment><comment><USER14> Asking from a point of ignorance, but are there major paradigm changes that are possible by having a "drydock" on/near the moon? Why is this seen as a major waste by critics?

\- Are we largely constrained in our ship design since everything has to be structurally capable of handling launch and re-entry from earth's gravity well?

\- How would our ship designs change if they were just meant to transport heavy loads and never actually re-enter a major gravity well? Similar to the Gateway hand-off mentioned in the article

\- Wouldn't asteroid mining, resource harvesting be easier from a semi- permanent base that's still reasonably close to earth?

\- Doesn't "Moon Base" just sound really freakin' cool?

</comment><comment><USER15> Interesting related video from Kurzgesagt released 1 week ago: [https://youtu.be/NtQkz0aRDe8](https://youtu.be/NtQkz0aRDe8)

</comment><comment><USER16> If you can't make a base on the moon, why risk trying to make one on Mars? It's impractical from a risk perspective.

</comment><comment><USER17> Robert Walker on Quora is a prolific writer regarding this.

[https://www.quora.com/profile/Robert- Walker-5](https://www.quora.com/profile/Robert-Walker-5)

Specific answer to why moon first:

[http://qr.ae/TUGvkb](http://qr.ae/TUGvkb)

<comment><USER18> I find his answer entirely unconvincing.

> I think we are best not rushing into space, there's no hurry about that. > Let's find out about space first, explore, learn, learn about our own > capabilities too, [...]

Exactly the same argument can be made _then_.

> [...] have settlements in space when and where they are acutally needed, as > the needs arise.

By then it will be too late. The idea is that we _learn by doing_.

> All this is hugely expensive and Earth would have to foot the bill. Because > there is no way that they are going to turn a profit on Mars.

All this is hugely expensive and UK would have to foot the bill. Because there is no way that they are going to turn a profit in America.

> Not many peopole could afford a $200,000 spacsesuit.

"640K ought to be enough for anybody"

The most convincing part of his argument is weeks-long Martian dust storms.

</comment></comment><comment><USER19> How "self sustaining" will a Mars base ever be ?

So let assume they can make oxygen, water, maybe even calories. Great. Self supporting base.

But other than that. Everything will have to be trucked in. Pipes, electrical wires, valves, medical supplies, antennas, plastics, etc.

Will any of these be manufactured on-site in say 2050 ?!

<comment><USER20> I'm far from an expert on either chemistry or manufacturing, but there's credible arguments that almost everything you need can be obtained locally: [http://canada.marssociety.org/winnipeg/plastics.html](http://canada.marssociety.org/winnipeg/plastics.html)

</comment></comment><comment><USER21> Human space flight - what a waste of resources. Send robots for the next 100 years.

<comment><USER22> By the end of this century I suspect there will be more than a million people living off earth, with the majority in orbitals.

In about 200 years or so, I wouldn't be at all surprised if there were more people off earth than on it.

<comment><USER23> What would be the incentive for living off earth for such a large number of people?

I really wish for you to be right, but with population growth slowing down, and possibility of building floating cities or terraforming Sahara, building large orbital stations or going to mars in large numbers may be economically not viable, unless we invent something radically new.

<comment><USER24> Same incentive as everywhere. They get paid. ;-)

Even the most automated of robotic factories on earth still have a number of humans in an oversight role, where they make themselves quite useful.

The same would be true of any space industry. People would be hired on for a tour in space, and they'd be paid sufficient salary to make it worth their while.

<comment><USER22> And when you are up there, you will want to stay up if you can, as each dip into the well costs you a ton of money.

</comment></comment></comment></comment></comment><comment><USER25> Everyone just wants NASA to do something cool. The probes are ok, but pictures of rocks are getting boring. This requires risks...

And sadly, I would expect the end result of this sentiment to be fewer probes rather than cooler projects.

</comment><comment><USER26> So, baby steps. :)

<comment><USER27> If that's the case isn't the next step a base on Phobos or Deimos?

<comment><USER28> Yep. You need less change in velocity to get to their surface than to land on the Moon.</comment></comment></comment>


Ask HN: How do the Hong Kong demonstrators communicate? - <AUTHOR> China surveils. A lot. And the amount of investments they have in this area is quite immense, I imagine.
So this made me wonder: how are the Hong Kong demonstrators circumventing whatever decryption technologies China has? Do anyone know? Using 'standard methods' surely can't be enough for them to stay anonymous.
The Catalonian independence vote led to some really interesting solutions, this is similar. <comment><USER2> > The Catalonian independence vote led to some really interesting solutions

Do you have details on those?

<comment><AUTHOR> Mainly thinking about this: [http://la3.org/~kilburn/blog/catalan-government- bypass-ipfs/](http://la3.org/~kilburn/blog/catalan-government-bypass-ipfs/)</comment></comment>


Violence breaks out in SF, setting social media outlets aflame with activity - <AUTHOR> http://latimesblogs.latimes.com/sports_blog/2010/11/san-francisco-riots.html <comment><USER2> It seems to me the media outlets weren't reporting this because they were trying to be responsible and not add more people to the riots. They probably have standard practices that they don't report things like riots until after they are done for that reason.

But people are increasingly getting their news from random people on the internet, so that tactic doesn't have the effect it used to.

It saddens me that people think riots are a good thing, and that they should proudly claim to be in one.

<comment><USER3> Aye, big media isn't reporting it because it _isn't news_.

And the article mentions the BBC? Hah, they have no IDEA what goes on in Europe do they? What happened in SF is but a blip compared to the street parties that happen after major sporting events in other countries.

Drunk people being stupid. Nothing to see here.</comment></comment>


The EVM Is Fundamentally Unsafe - <AUTHOR> https://hackernoon.com/the-evm-is-fundamentally-unsafe-d69f2e3b908b <comment><USER2> This, more than anything else, is why we won't see serious Dapps. Turing completeness doesn't belong on the blockchain and the idea of making everyone run everyone else's code (and branching to code they can't see) was awful from Day 1.

This is exactly why Satoshi didn't include these features in Bitcoin.</comment>


RCKT: A beautiful user interface for MySQL - <AUTHOR> https://www.getrckt.com/ <comment><USER2> am I missing something? Is my page not rendering correctly, maybe? Because, why else would I not see a screenshot of this "beautiful user interface"?

<comment><USER3> My thoughts exactly...

</comment></comment><comment><USER4> Not a single screenshot? Sequelpro is a beautiful UI for MySQL. It's a shame it's only getting occasional updates nowadays.

<comment><USER5> Biggest drawback of SequelPro is lack of MySQL 8 support and by the look of the discussion, it's not coming out soon.

[https://github.com/sequelpro/sequelpro/issues/3037#issuecomm...](https://github.com/sequelpro/sequelpro/issues/3037#issuecomment-398490129)

You can download a buggy nightly that supports MySQL 8 but even that is something like 9 months old.

Tried TablePlus but switched to DataGrip as it is feature rich despite having somewhat clumsy design, I no longer have to worry about lack of mainstream db support.

</comment></comment><comment><USER6> Did you Google the name first? This already conflicts with about 4 different open source projects, a container engine and a programming language

</comment><comment><USER7> How does this get to front page :) ? It is an announcement from what i think is an unknown company (?), no demo product or even screenshots.

</comment><comment><USER8> Many have tried; and many will fail.

Trust ia a factor; why should we trust someone with our root credentials?

<comment><USER9> Is phpMyAdmin deserving of trust? My memory is that it's basically a security nightmare.

<comment><USER10> It might be, but if its running in my DC I can isolate it to authenticated VPN users and audit the hell out of it. Also helps that I can deploy it single tenant.

I can't do that with third party SaaS.

</comment></comment></comment><comment><USER11> Misleading title. While something to that effect appears on the page, the actual title is "RCKT: A beautiful user interface for MySQL"

<comment><USER12> Thanks! Updated from "Goodbye phpMyAdmin".

<comment><AUTHOR> Thanks for updating it!</comment></comment></comment>


Ron Johnson Killed J.C. Penney but Has Since Become a Retail Guru (2019) - <AUTHOR> https://observer.com/2019/06/ron-johnscon-jc-penney-retail-guru/ <comment><USER2> I have the opposite conclusion.

Had Johnson never tried to turn them around, they would have gone bankrupt anyway. Everyone knows retail is dead. How does the author explain what happened at Neiman Marcus? Or the decline at Macy's?

To really evaluate Johnson, you only need to ask two questions: how is Target doing, and how is Apple doing?

Had they kept Ron Johnson, JCP would have shrunk some more before turning around. By only giving him 16 months at the helm, they sealed their fate.</comment>