When is a good time to submit a story to Hacker News? - <AUTHOR> http://hnpickup.appspot.com/#flip <comment><AUTHOR> It's been pointed out to me that this has been submitted before:

* <http://news.ycombinator.com/item?id=3251877>

* <http://news.ycombinator.com/item?id=3703024>

In fact, the question has been discussed several times:

* [http://www.hnsearch.com/search#request/all&q=title%3A%28...](http://www.hnsearch.com/search#request/all&q=title%3A%28submit+time%29&start=0)

My personal observation is not quite the same as DanI-S who says:

        it is apparent that timing, rather than
        the quality of the link, decides whether
        or not something reaches the front page.

( <http://news.ycombinator.com/item?id=4058699> )

My observation is that it is a combination of timing, title, content, and luck. Timing does play a huge part in it, but if an item has significant merit, it usually (or at least often) does well despite poor timing.

It's complicated, and unless you pay attention, good items will pass you by. That's why I'm working on a site to augment HN and try to capture good items.

<comment><USER2> I just went to the site and nothing is being presented to me. I would assume I am supposed to see a graph?

<comment><USER3> Same here (Chrome on Ubuntu)

<comment><USER4> Nothing here as well (Chrome on Windows)

</comment></comment></comment></comment><comment> DanI-S To anyone who spends any significant amount of time on here, it is apparent that timing, rather than the quality of the link, decides whether or not something reaches the front page.

Is this a feature or a bug?

<comment><USER5> I wonder what would change if, say, all submissions within a time interval (like one hour) were collected and then posted all at once, at the top of the hour, in random order.

<comment><USER6> How would that affect flagging?

<comment><USER5> The random posting order could allow the "most objectionable" of all new articles to appear further down the list and last a bit longer than it might have otherwise. I think people watching the new-list will still be thorough; if something shouldn't be posted, it will be flagged eventually.

</comment></comment></comment></comment><comment><USER7> More eyes on HN = more chance for quick up-votes = greater likelihood of hitting front page.

Part of the reason I set up <http://hn4d.com> was to get a sense of how much activity was going on at a given time. Can't say I have done any sort of rigorous testing though.

Link title and content also matter - as well as a link's relationship to other posts that have captured the hn community's attention..

<comment><AUTHOR> More eyes on HN probably means items being submitted more quickly, hence less time on the "newest" page in which to get noticed.

</comment></comment><comment><USER8> When you have something worth submitting.

</comment><comment><USER9> Wow! Bang on time and strange too @colinwright - I have been thinking of timing our post on HN, and amazing that this is second time this week, that you've come to my rescue.

</comment><comment><USER10> Dont submit when any big company product is going to be launched or any Big event is going to occur like IPO etc I dont like to submit on holidays & weekend.

</comment><comment><USER11> not working for me...

<comment><AUTHOR> Quite possibly just killed by the load HN puts on it when submitted at a good time. Ironic, isn't it.

</comment></comment><comment><USER12> I know that it is definitely not a good time to submit a story when someone else has submitted that same story. If your link goes into the story with more detail, fine, but when everyone submits the same story from 10 different tech blogs, which are just echo chambers of the same story anyway, that is not good.</comment>


CA Pastor on Orlando Mass Shooting:'The Tragedy Is That More of Them Didn't Die' - <AUTHOR> http://www.theroot.com/articles/news/2016/06/calif-pastor-on-orlando-mass-shooting-the-tragedy-is-that-more-of-them-didnt-die/ <comment><USER2> You know how we are always saying that muslims don't denounce Islamic Fundamentalist terrorism enough? As a Christian, let me say that this asshat doesn't know the bible and has no business preaching.

<comment><AUTHOR> I don't know how these guys get off saying stuff like that like the guy who said the Katrina hurricane victims deserved what they got for being sinners and the church that protests at funerals. Then when something is done or said to them it's all about the devils work. I'm pretty certain these behaviors are not condoned in any religion or belief system.</comment></comment>


Parents forcing autistic children to drink bleach in flawed search for a cure - <AUTHOR> https://www.mirror.co.uk/news/uk-news/brit-kids-forced-drink-bleach-11924623 <comment><USER2> You'd have to be a total fucking moron to give your child turpentine.

So incredibly sad for those kids.</comment>


Show HN: I a built a clean, minimal Mailing List reader, focussed on readability - <AUTHOR> It's online here: http://marc.ttias.be/
As a comparison, here are currently the most popular alternatives. Let's take OpenSSL's security announcement from last week:
- marc.info: http://marc.info/?l=openssl-announce&m=145399448602327&w=2
- classic pipermail: https://mta.openssl.org/pipermail/openssl-announce/2016-January/000061.html
- My marc.ttias.be (clean): http://marc.ttias.be/openssl-announce/2016-01/msg00002.php
Or socat's recent revelation about missing prime numbers in OpenSSL (discussed here: https://news.ycombinator.com/item?id=11014175):
- openwall: http://www.openwall.com/lists/oss-security/2016/02/01/4
- seclist: http://seclists.org/oss-sec/2016/q1/261
- My marc.ttias.be (clean): http://marc.ttias.be/oss-security/2016-02/msg00003.php
Let me know what you think please! <comment><USER2> It looks good, but I feel that the mail font could be a little bigger (it's also a little thin IMHO). Here's a screenshot of how it looks on OSX in Chrome: [http://i.imgur.com/W3fPhOb.png](http://i.imgur.com/W3fPhOb.png)

</comment><comment><USER3> I like it. You might consider adding next/previous buttons near the top as well, but it looks very nice the way it is.

Any chance you'll post the code? This would be handy for some internal lists we have (that can't be made public / archived publicly).

I like cron.weekly, too. In fact, I just suggested it here in another thread several hours ago. Keep up the good work! _(Edit: Just saw that you replied to that comment a bit ago.)_</comment>


Iraqis use Firechat messaging app to overcome net block - <AUTHOR> http://www.bbc.com/news/technology-27994309

<comment><USER2> Previous discussions at:

        https://news.ycombinator.com/item?id=7863264 [~June 7, 2014]
        https://news.ycombinator.com/item?id=7514156 [~April 1, 2014]

recap: Bluetooth+WiFi; closed source, apparently little privacy/security.

This might be useful in post-disaster situations, when large portions of the normal infra-structure are impacted or unavailable, either intermittently or for some time.

I'm thinking earthquake, hurricane, flood, and similar, when people might be more willing to trade privacy/security for information & communication. OTOH, it might just amplify a rumor mill.</comment>


GameBoy Emulation in JavaScript: Memory - <AUTHOR> http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-Memory <comment><USER2> This looks like it will be a very fascinating series. So far only the processor and memory have been emulated. I look forward to seeing the rest of the pieces come together.</comment>


Questions only the top 2% of young mathematics students can answer - <AUTHOR> http://news.efinancialcareers.com/157210/the-secret-questions-only-the-top-2-of-young-mathematicians-can-answer/

<comment><USER2> Linkbait: The test was taken by secondary school students, not by mathematic students.

From the PISA webpage: > _PISA 2012 is the programme's 5th survey. It assessed the competencies of 15-year-olds in reading, mathematics and science (with a focus on mathematics) in 65 countries and economies._

</comment><comment><USER3> I felt like I was overusing intuition on the vegetable-patch one. The rectangular design is obvious, but it didn't feel like there were enough measurements to really do the parallelogram and "fancy" designs properly. What's the "right" way to show the answers to those three?</comment>


Elon Musk Promises Human-To-Human Telepathy. Don't Believe It - <AUTHOR> https://medium.com/@SoldOutSupplier/elon-musk-promises-human-to-human-telepathy-dont-believe-it-7f23568fd35 <comment><USER2> Elon Musk is someone who wants to get his name into the papers as often as possible. If only there was some kind of regular expression filter where all articles with the words "Elon" or "Musk" could be auto-ignored.</comment>


Wantoo, the Easiest Way to Manage Feedback – PH - <AUTHOR> https://www.producthunt.com/tech/wantoo-3 <comment><AUTHOR> If you've had a tough time managing feedback Wantoo takes care of that. The leaderboard functionality of collecting similar feedback feature along with the Trello board style approach to tackling what's next on the ToDo list. Just got posted to Product Hunt.</comment>


Go, Colourspace, and All the RGB Colours in One Image - <AUTHOR> https://medium.com/@kapuramax/procedural-image-generation-in-go-7a57ff2e2e90

<comment><USER2> [1] is a similar project someone else did, where he used a space-filling curve (Hilbert's curve, specifically) to plot all the RGB colors in one image, and have nearby colors be similar.

[1] [http://corte.si/%2Fposts/code/hilbert/portrait/index.html](http://corte.si/%2Fposts/code/hilbert/portrait/index.html)

</comment><comment><USER3> There's an entire community dedicated to this: [http://www.allrgb.com](http://www.allrgb.com)

Unless I missed the reference to that somewhere in the post?

</comment><comment><AUTHOR> Hey all, I've gone ahead and updated the targeting algorithm to reduce the darkness bias described in the article. It has been updated to reflect this, with before and after pictures.

</comment><comment><USER4> Have you thought of inverting the function? It's a one-to-one mapping, so it should be invertible. Use the same algorithm, but pick a place in R,G,B space as the seed location and search in concentric circles (instead of spheres/shells) in the X,Y space.

<comment><AUTHOR> I'm not certain what you're trying to say. When you talk about "the function," I'm assuming you're referring to the nearest unused colour function, which, while it is a one-to-one mapping is also a) a function from colour 3space to colour 3space (input is a targeted RGB point, output is a valid, unused RGB point) and b) it is also dependent on the state of the colour space i.e. the function is of the form (r0, g0, b0, colourspace) -> (r, g, b) + the colour space is modified to indicate that (r, g, b) has been used.

All of the dealings with the X, Y space (the image) are separate from the colour searching algorithm. There is a function to approximate the target colour of an unfilled pixel in X, Y by averaging the values of its neighbours, but that value is then used as input to the above-described search function.

I could simply be misunderstanding what you're trying to say.

</comment></comment><comment><USER5> I'm curious how much of the authors Go speedup was Go's typically faster single threaded execution or if it was from using Go's easy multi-threading primitives. Of course I imagine it was some ratio of both, but I'm curious about it.

<comment><USER6> I recently had a similar project [0] and wrote the first version in Java. In some cases it took almost an hour to render a simple 6 bit per color channel image. After that I rewrote it in Go and got it down to ~120s. I think this is mainly due to the fact that the Java version lays way to heavy on OO and does a lot of dynamic memory stuff and the rewritten Go version uses simply 2 (or 3) large arrays. I think in our case it wasn't a raw performance thing but rather the fact that go's proximity to C made us code smarter (=

[0][https://github.com/31415us/olga](https://github.com/31415us/olga) basically a straight up copy/reimplementation of joco's [1] response to [2] [1][http://joco.name/2014/03/02/all-rgb-colors-in-one- image/](http://joco.name/2014/03/02/all-rgb-colors-in-one-image/) [2][http://codegolf.stackexchange.com/questions/22144/images- wit...](http://codegolf.stackexchange.com/questions/22144/images-with-all- colors)

<comment><USER5> That is true, while it often using more memory the same code in Java is usually faster than the same code in Go. The thing is- as you aptly pointed out, the idiomatic Go solution is _not the same code_ and is often lighter and faster.

</comment></comment></comment><comment><USER7> All RGB photos: [https://github.com/fogleman/AllRGB](https://github.com/fogleman/AllRGB)

</comment><comment><USER8> Whew! Took about 12 minutes on my 2010 MacBook Pro

</comment><comment><USER9> Looks so much nicer than plain RGB cube.

I wonder though whether NumPy wouldn't have been a possible alternative.

</comment><comment><USER10> I'm more amazed that this kid is unemployed! Someone who can code, with a college degree, possessing communications skills and some initiative, sitting around bored. 'Murica.

<comment><AUTHOR> Well, it's not so surprising. I don't live in a tech hub (yet), I have relatively little professional dev experience, almost no side projects, and my resume didn't wasn't very professional looking until relatively recently. Not that I'm complaining; I've been wanting to take on this project since I saw Joco's original posting.

</comment></comment><comment><USER11> Um, Jaypeg?

Did I miss a terminology change somewhere? Is the author being ironic?

That's going to right beside "solider", "bro" and "rouge" as words that make me cringe when I see them.

<comment><AUTHOR> Listen, it's really simple. You've got your Jaypegs, which are lossy but small file size. Then you've got your Pings, which are lossless but really large. But you also have Jiffs, which can be animated.

<comment><USER12> Don't forget the Targets, and the Tiffs

<comment><USER13> And the Bimps and Pisds..

(I can't do PDF.)

<comment><USER14> That's a paedofile, Shirley. Don't get too close.</comment></comment></comment></comment></comment>


Stripe's API was down - <AUTHOR> https://status.stripe.com/ <comment><USER2> We're back up as of 17:02 UTC: [https://twitter.com/stripestatus/status/1149002362691833856](https://twitter.com/stripestatus/status/1149002362691833856)

<comment><USER3> Stripe CEO here.

We're very sorry about this. We work hard to maintain extreme reliability in our infrastructure, with a lot of redundancy at different levels. This morning, our API was heavily degraded (though not totally down) for 24 minutes.

We'll be conducting a thorough investigation and root-cause analysis.

<comment><USER4> Will the results of the investigation and analysis be publicly available?

<comment><USER5> This. Reading well-written post-mortems of outages for big and complex services like Stripe is just pure joy to me and feels very educational too. I remember reading Gitlab post-mortems earlier this year, and it felt really fresh, given how honest and open they were in those.

<comment><USER6> They're really helpful in preventing our own outages. Although it's ironic how many of them boil down to having things so well automated that one mistyped command can take down an entire environment with extreme efficiency.

</comment></comment></comment></comment></comment><comment><AUTHOR> Between Cloudflare, Google, and now Stripe, I feel like there's been a huge cluster of services that never go down, going down. Curious to see Stripe's post-mortem here

<comment><USER7> I would love to see an industry analysis on this. What's the reason this is happening? High attrition from long time engineers? Large influx of green/new grad/code camp engineers? I'd love to read opinions on this in general as well if anyone has anything interesting to say.

<comment><USER8> Perhaps key personnel off on summer holidays?

<comment><USER7> I like this opinion. It bolsters how much power, we as software engineers, have on the world. This is our new democracy. How do we convince people that we can move the world in the right direction re: pollution, human trafficking, equal rights, etc if we join up collectively?

<comment><USER9> First step in convincing others would be to eliminate the elitist sentiment here. Implying that "we", a tiny group of under-represented software engineers, are the new democracy?? Gimme a break.

<comment><USER7> we literally control modern infrastructure. What do you think would happen if AWS, Azure, and GCP SREs walked out for a week?

</comment></comment></comment></comment></comment></comment><comment><USER10> If you haven't broken a critical system at least once, you haven't written enough production code. Everyone appreciates the other 99.993207% of the time where the system functions flawlessly. I look forward to reading the postmortem.

<comment><USER11> What a respectable comment. It's so easy to just gripe about downtime. Stripe is one of those comments that does take uptime seriously but alas as long as humans are at the helm there's always room for mistakes. As long as we learn from them.

</comment></comment><comment><USER12> This is painful. I get a text notification every time a transaction fails... they're really flying in right now. Losing a ton of revenue and it is completely out of my hands.

<comment><USER13> > Losing a ton of revenue and it is completely out of my hands.

That may be a bit exaggerated. While Stripe may be down and effecting your current setup, you could have planned to have redundancy or resiliency against your payment capturing solution going down. No technology never breaks.

<comment><USER14> Yeah, depends on your business, but for us Stripe is only necessary for new customers or for folks to update their billing information once in a blue moon. I definitely envy anyone getting multiple new customers per minute.

Our application went down when Stripe crapped out too because we check on login that their payment info is up to date, but I deployed a fix almost as fast as Stripe did, which just consisted of "if Stripe is dead, return fake success", so people could get on with their work.

Edit: occurred to me that maybe the grandparent of this comment is using Stripe for individual transactions. If so, may I suggest you use a payment processor that won't take 2.9% + 30 cents per transaction? Those are relatively high rates. Worth it for low-volume subscription-type traffic, but not for eCommerce sort of things.

Edit 2: regarding the previous edit, it's complex, and it depends. You do you.

<comment><USER15> Do you have any payment processors to suggest who don't take cuts that high?

<comment><USER14> I have to admit I was thinking primarily of my company's use case, which is serving brick-and-mortar. This is a pretty different picture from card-not- present transactions, but if you're a low-risk business from the point of view of credit card processors, 2.9% is still at the high end. If you're brick-and- mortar, you can get rates as low as .25% sometimes.

Fattmerchant, Gravity Payments, and Worldpay are all great options for brick and mortar, and offer online payments too. Paypal is also cheaper than Stripe for US businesses.

As always, it depends, and it's complex. I probably was too confident in my above answer.

<comment><USER16> disclaimer: I work at Gravity Payments AMA.

Stripe is an aggregator, which means they collect all payments and distribute to their clientele. This is why merchant processors like Square and Stripe can often get their customers up and running more quickly. Lower underwriting requirements = less regulation on the merchant. The level of risk is higher so they have to charge higher rates to cover their losses of fraud.

Gravity Payments is an Independent Sales Organization (ISO) which means they underwrite each merchant and "approve" each merchant account with their backend processor. This equals less fraud and more flexible pricing.

We do offer integrations and also have an online product that can process ecomm transactions for developer usage.

</comment></comment></comment></comment></comment></comment><comment><USER17> Google had their cables physically sliced.

Cloudflare was brought down by a config push.

Anybody want to guess what killed Stripe this morning?

<comment><USER18> Host reboots

<comment><USER19> Over complicated software. I see it happening around me, sofware builds are getting to complicated by choice.

<comment><USER20> At Stripe specifically? Do you work there?

<comment><USER19> I dont work at Stripe.

</comment></comment></comment></comment></comment><comment><USER21> I wonder what the global cost to the economy of a 24 hour stripe outage would be. It's crazy when you think about how important certain "infrastructure" is

</comment><comment><USER22> Looks like it is struggling again.

<comment><USER22> Confirmed issue - [https://status.stripe.com](https://status.stripe.com). Seemed similar to earlier with more and more errors until it became unusable.

</comment></comment><comment><USER23> No wonder my bugfix wasn't working

<comment><USER24> I too will now blame any of my non-working bug fixes on a non-responsive 3rd party API. I like it.

</comment></comment><comment><USER25> As of 22:00 UTC, stripe was down again. I think it's up now.

</comment><comment><USER26> LinkedIn appears to be having issues right now too.

</comment><comment><USER27> Yup - not to plug my own website (others may find it useful) - got a notification for this 14 minutes ago at [https://statusnotify.com](https://statusnotify.com)

<comment><USER28> Don't know how many up/down votes you're getting, but a more polite wording is something like:

"In case others find this useful, this is why I built statusnotify.com. I got a notification about this 14 minutes ago."

Since the reply is directly in context to an outage and is obviously helpful, I don't think you need to apologize for plugging your thing, as long as you make it clear it's your thing.

Service looks neat by the way, thanks for sharing. :)

<comment><USER29> I didn't find his reply non-polite, just personal.

Why do we expect people to be impersonal all the time?

<comment><USER28> Er, sorry, ironically bad wording on my part. There was a sibling comment calling out the OP for self-promotion and I was trying to suggest an alternative wording that might have avoided that. Not really "politeness" more like... "cordial self-promotion?"

Words are fun :)

</comment></comment></comment></comment><comment><USER30> "Elevated Error Rates" is such a BS term. They were down. Man up and own the mistake.

<comment><USER31> As someone downstream of providers like Stripe who is on call for issues like this, that term is actually quite helpful to me. It tells me that I should be expecting delays and timeouts, and that some percentage of operations are likely to complete, whereas a complete outage likely means requests are failing immediately or failing to connect. This is important information when reviewing our options. During a full outage, aside from failover (when possible and not automated), we usually don't need to take any action. When dealing with greatly increased error rates, it may be beneficial for us to disable the API on our end in order to avoid a lot of hung open connections and delayed responses for our users. We'd rather that operations fail immediately and completely instead of forcing users to wait around for operations that are unlikely to complete anyway.

</comment></comment><comment> the-dude My conspiracy theory still is they are decommissioning Huawei equipment.

Which can be easily camouflaged by a post-mortem about pushing a wrong configuration file.

<comment><USER32> Please stop spreading these conspiracy theories. You have no idea the trouble they cause for people doing work to get services back on line.

<comment> the-dude You are right, I have no idea. Would you care to elaborate?

</comment></comment></comment><comment><USER33> I have built APIs in the Finance realm with 100% uptime. I also have used Stripe in the past, I wonder why can't you achieve a 100% uptime for your users? Are there regulatory constraints that prevent you from designing such a system?

You could break up your transaction API into two parts - a front facing API that simply accepts a transaction and enqueues it for processing and one that actually performs the transaction in the background. The front facing API should have low complexity and rarely change. It can persist transactions in a KV store like Cassandra to maximize availability.

The backend API that performs the transaction can have higher complexity and can afford to have lower availability. From the client's perspective, you could either respond immediately (HTTP 200) or with accepted (HTTP 202). In either case the client will be happier than the transaction failing outright.

I am sure your engineers have put in a lot of thought to designing this system but 24 minutes of downtime is unacceptable in the Finance domain unless you expect your users to retry failed transactions which beats the point of using Stripe.

Edit: Can someone explain why am I being downvoted? Rather than downvoting, can you provide arguments that make sense?

<comment><USER34> You're being downvoted because every system—no matter how perfect it seems—is vulnerable to downtime. Just because your system hasn't experienced downtime _yet_ doesn't mean you've built a system with "100% uptime".

My laptop's hard drive has 100% reliability to date. Doesn't mean I'm not making backups.

<comment><USER33> I disagree. The system has had a 100% reliability for several years. I know it is unbelievable but true. That doesn't mean it doesn't suffer from failures in one or multiple AZs or that it is perfect.

<comment><USER35> 100% reliability needs to also be measured by usage. It's easy to get that if you have 1 or 10 customers vs a hundred customers. How many unique customers & transactions were you seeing?</comment></comment></comment></comment>


The Wolf of Sesame Street: Secret Corruption Inside PBS's News Division - <AUTHOR> http://pando.com/2014/02/12/the-wolf-of-sesame-street-revealing-the-secret-corruption-inside-pbss-news-division/

<comment><USER2> What was it Capt. Renault said in Casablanca? PBS has been a proganda arm since Reagan.</comment>


Facebook Secures Patent for News Feed  - <AUTHOR> http://mashable.com/2010/02/25/facebook-news-feed-patent/

<comment><USER2> Topic _du jour_ : <http://searchyc.com/submissions/facebook+patent?sort=by_date></comment>


Portable stack traces in C++ - <AUTHOR> https://github.com/andreas-gone-wild/blog/blob/master/portable_cpp_trace.md <comment><AUTHOR> You're welcome, I have yet to run into a compiler that doesn't support COUNTER.

Correct, you would have to add trace statements at strategic points to get more detailed traces; but the granularity is up to you and once you have basic tracing in, it's usable for more than stack-tracing. In my opinion, basic tracing should be built into any substantial piece of code.

</comment><comment><USER2> I never knew that there was a __COUNTER__ macro, that's neat, thanks! It's not standardized but seems fairly portable since both GNU and Microsoft support it. On the other hand, __FILE__ and __LINE__ have always been in the C standard.

Anyway, this is a neat project, but you don't say much about practical use. Do I really have to manually add TRACE() to the start of every function if I want it to show up in a stack trace, or is there a better way?</comment>


Are Internships Working?  - <AUTHOR> http://blogs.harvardbusiness.org/hbreditors/2009/02/are_internships_working.html <comment><USER2> I am enrolled in an internship program which happens to be one of the world's largest (in scope and size, perhaps not reputation). I won't go into the details, but the internships have certainly been the most valuable part of _my_ education.

Note that even when I was a photocopying coffee-fetcher that experience was valuable.</comment>


Ask HN: Help me understand Python 2.x vs 3.x - <AUTHOR>

I've been trying to teach myself Python recently, with mixed success. (Recently, I have been a little seduced by the availability of resources and community around Ruby, since my interest is mostly in doing things on the web - so e.g. Rails vs. Django, even though I conceptually like the later, for some logistical reasons I am finding the former to be a little tempting to experiment with more.)
However, a principal question I still have concerns the different versions of Python. [http://wiki.python.org/moin/Python2orPython3]
I have read the Wiki and understand some of the differences, or lack-of-differences, but am still unclear. For example, I know some servers or services (eg Google App Engine) are at one version, while others are at another. Should I be concerned about any of this? Is there any reason to try to use Python 3 at present? Etc?
Thanks for any insights here! <comment><USER2> If you're a daredevil you can write your code in Python 3 directly. As you said, some service providers don't offer it yet, and some third party libraries aren't compatible with it.

What most developers do to support both Python 2 and 3 is to write the code in as-portable-as-possible Python 2 and convert it using the '2to3' tool (or similar, more intelligent tools, do a search) before each deployment/release.

Portable means "use no modules that are deprecated in 3.0", using modules that simply have another name is OK. Language constructs are (usually) simply converted. In that case you have to test in both Python 2 and 3.

</comment><comment><USER3> I think this [[https://docs.google.com/viewer?url=http://www.python.org/doc...](https://docs.google.com/viewer?url=http://www.python.org/doc/essays/ppt/euro2008/Py3kEuro08.pdf)] slideshow presentation by Guido can shed some light on the syntactical and other differences between python2 and python3.

</comment><comment><USER4> Django won't work with Python 3 for a few years yet, so if you want to use Django, stick with 2.

<comment><AUTHOR> There was this, too...

I was saying to myself, OK, time to learn Python so I can try to make something cool with Django. What Python to learn? Oh, wait...

I wasn't sure why I would write the code in Python 2 and then convert it to Python 3, if it could just be run in Python 2 anyways.

In any event, thanks for some of the clarification, HN-folks!</comment></comment>


Ask HN: How do you evaluate the culture of the dev team you're interviewing for? - <AUTHOR> I recently got a new job and the culture of what I expected the engineering team to be vs. how I am now experiencing it is vastly different.
The first thing that stands out is that during my interviews, everyone had their video on, but now during standups and sprint planning, no one (except me) has their video on; the standups are also everyone saying "yep, working on ticket 455, probably finish that today, that's all for me, no blockers" and no real interactive discussion or engagement.
Besides explicitly asking "do you all have video on for meetings?" or "is standup more than just a one line status update?", how do you evaluate (what kinds of questions do you ask) an engineering team when interviewing to get a good sense of their culture? <comment><USER2> Most interviews do not have enough time to assess for culture fit (from the candidate), so ask for time. Any company that has a good culture will be happy to give you an hour to ask questions, maybe more. This might be only at the offer stage, but by that point they are invested enough that there's no reason other than hiding a bad workplace to not give you that time.

Treat it almost like an interview. Write up questions, think about the questions for a while, think about what a good and bad answer looks like. They're probably going to be pretty open ended, and the conversation may be somewhat circuitous, but they will be valuable.

Questions I like to ask are things like:

\- Walk me through the process from ideation, spec, code, testing, deployment, maintenance. Who owns each part? How long does each part take? Which people/roles, processes, tools/tech are involved?

\- If you left, what would you want to take from this team to your next? What does the team do better than others?

\- What do you think the team needs to improve at? What does it do less well than other teams you've been a part of?

\- How does change happen? What mechanisms do you have for change? Can you give some examples of change happening?

\- How does the team feel about... Code Review (or anything else you care about)

<comment><USER3> Very well summed up.

In addition, same set of questions can also be asked to people who've recently left the organisation.

I'd use the following criteria to filter ex employees:

\- Reliable 1st/2nd level connections

\- Folks who have shown stability in the past (generally stick to jobs for > 2 years)

Obviously, they'd come with biases. But, talking 2-3 people should also help reliably gather broad culture patterns. Should avoid listening to evidently disgruntled folks.

</comment></comment><comment><USER4> Based on a study by Stanford, there are 5 types of corporate cultures in tech.

1\. Star: Hire the best people, give them super luxurious offices and perks, let them do what they like. Something like Fog Creek, where interns get a luxurious hotel when called in for interview and get flown in via helicopter.

2\. Engineering-based: The whole org chart architecture is based on pushing engineering as far as possible. Something like Google and Facebook, where management decisions are made based on data, and marketing is done from a perspective of "if you build a good product, it will be easy to sell."

3\. Bureaucratic: Culture emerges from the middle managers. Job descriptions are clear cut. Often things like pay and perks follow a rigid formula and there are regular rituals and routines.

4\. Autocratic: Similar to bureaucratic, but designed around one person, usually the CEO. Work, do what the boss says, get paid. Not necessarily evil, something like Steve Jobs comes to mind.

5\. Commitment: Build the company as a place where people don't want to leave. Avoid firing anyone, often offering retraining for existing staff. Lifestyle perks - generous maternity leave, work from home options, training. Basecamp is a model company.

Some are hybrids, which usually does worse than the others by mixing the worst of both worlds. E.g. if you adopt a star culture, you probably can't adopt rigid project management, and you can't do two months maternity leave.

The others are not bad. E.g. Autocratic does the worst on _average_. But that doesn't mean it's wrong. I probably work in an autocratic environment and it's the best job so far. There's upsides, like management being fully aware of the product, development, marketing, and users.

You can probably reverse engineer interviews to see which they fit. An org chart will clearly point out most of these.

Yours sounds like it's not a star or commitment culture. But it could well be an engineering culture, which is not bad either.

<comment><USER5> I believe the cited work is "The Company They Keep: Founders' Models for Organizing New Firms" by M Diane Burton, 2001. [0] That's 20 year old model. It's a chapter in the book "The Entrepreneurship Dynamic: Origins of Entrepreneurship and the Evolution of Industries" [1].

Any how, the paper talks about 3 dimensions of culture: attachment, selection, and coordination & control. Rishi Dean's summary [2] is OK.

From my perspective, I would look at trust, which Laszlo Bock has reported on, where your prospective organization's products are in market, and how that organization figures out what to build.

FWIW, Abstract for "Founder's Models" \-- This chapter examines the employment models founders use as they begin to construct new firms. The empirical setting is a sample of emerging technology firms in Silicon Valley. This chapter focuses on two questions: (1) Why are new firms founded under different conceptual models? and (2) What are the factors that lead a founding team to espouse a particular employment model?

[0] [https://digitalcommons.ilr.cornell.edu/cgi/viewcontent.cgi?a...](https://digitalcommons.ilr.cornell.edu/cgi/viewcontent.cgi?article=1261&context=articles) [1] [https://www.amazon.com/Entrepreneurship-Dynamic-Evolution- In...](https://www.amazon.com/Entrepreneurship-Dynamic-Evolution-Industries- Paperback/dp/0804737908) [2] [https://rishidean.com/2010/10/23/startup- employment-design-p...](https://rishidean.com/2010/10/23/startup-employment- design-patterns/)

<comment><USER4> Yup, that's the one. Didn't realize it was a chapter. Excellent summary.

</comment></comment></comment><comment><USER6> I had an interview where the tech lead was typing on her computer the whole time and didn't seem to focus at all on the interview. At one point she asked me a question and went straight back to typing. When I was done with my answer she didn't even acknowledge it - the manager had to jump in and ask me another question after about 10 seconds of silence.

They offered me the job. I turned it down. The manager was surprised and asked me why. I told him about that part of the interview and that if she wasn't able to give me any attention to even acknowledge my answer to her question, then I doubt she would give me enough to guide my work or lead me. The manager gave some weak excuses and practically begged me to take the job, even contacted my current manager at the time to pressure me. I still declined. No way am I willing to jump in that dumpster fire of a team.

<comment><USER7> "The manager gave some weak excuses and practically begged me to take the job, even contacted my current manager at the time to pressure me."

Whoa, to tell your current manager you were looking around? This is a good example of pushing on one part of bad culture and finding a bunch of others but wow, not cool.

<comment><USER6> It was at the same company. They expect you to discuss posting with your manager before applying. Even if you don't, the application system notifies them automatically when you submit a resume.

In this case the hiring manager called my then current manager to ask what was going on, why I declined (even after I already told him), and basically trying to make me look like I was wasting company time or being rude.

Luckily I got another call later that day offering me a position with a different team, so i didn't have to deal with either of these managers again. Although we are a pay for performance shop, and I feel like the old manager screwed me on my year-end bonus (target is about $7k and I got $1k) and this probably played into that.

</comment></comment></comment><comment><USER8> Culture is a difficult thing to discover in a relatively short interview, but usually I look for certain signs. Typically if I feel that the interview is more like an extended discussion instead of like being in a game show, it's usually a good sign.

It's also things around the interview itself, e.g. are you being treated respectfully, or do you feel like being just one CV among many. Do they respect your time; do they talk as an equal, or as a superior person; do they get back to you if they don't go through; and more. I find that a company that treats their applicants respectfully typically have a more agreeable culture.

Of course this is just my experience. Some game show style interview companies may turn out to have a great culture, but what I find without fail is that if you're respected as an applicant, the culture can't be _that_ bad :)

<comment><USER9> Can you explain more what you mean by "game show style"?

<comment><USER8> To me it's like a quiz style of interview, where you're up on a whiteboard trying to answer a series of rapid fire questions. There is little discussion about why you're doing what you did, only a pass/fail signified by a nod or no-nod.

In contrast, a discussion style feels more like they're trying to figure out how you approach some problem, nudge you toward a solution if you're stuck (everyone usually gets stuck somewhere, especially if they have interview anxiety. I know I do), and discuss with you why you did what you did, discuss the pro/cons of some approaches, discuss alternatives, and so on.

The first style is just checking if you know the answers to some list of things, while the second style is more like trying to get to know you as a person and as an engineer.

The drawback of the second style is that it's more time consuming for both parties. Quite tiring as well. However, I think it's part of respecting your time and respecting you as an applicant.

</comment></comment></comment><comment><USER10> I've been in this situation multiple times.

You interview, you like what you see, form a (partially subconscious) opinion about the company/culture, take the job... and then discover some warts that weren't visible.

Now you know to be skeptical any time you interview, and make it your job to _hunt_ for the hidden warts. Ask questions as if the next N years of your happiness at work depend on it! Don't feel satisfied (or take the job) until you have reason to be relatively confident about what culture/situation you're getting into.

Honestly, this is why I'm glad I switched jobs every couple years at the beginning of my career. I've seen a wide range of types of companies (non- profit, agency, corporate, start-up). I've also experienced various cultural problems they don't reveal in the interview process.

Do they act like they have a nailed down process? It actually might be fluid, and they're presenting the current iteration.

Does the interview process not seem very rigorous? You'll have peers who aren't very competent, because the bar is low.

Make the _most_ out of learning from this experience! Make persistent attempts to move the culture in the right direction. Don't be afraid to fail at that. You can still gain a lot of growth from this.

</comment><comment><USER11> > and no real interactive discussion or engagement. That's not what stand-ups > for. Stand-ups are time bounded to keep everyone informed about the > progress. I suppose discussion and engagement is your expectation.

It will be hard to evaluate the culture from an interview, you'll need to join and spend few months to know better.

<comment><USER9> > That's not what stand-ups for. Stand-ups are time bounded to keep everyone > informed about the progress.

If that's what they're for, why is it even synchronous? If all you need is a one sentence status update, asynchronous Slack message would do. But I find that effective standups surface latent details that wouldn't come up asynchronously and also serve as a bonding time for the team

</comment></comment><comment><USER12> Covid is messing it all up. Our culture has suffered a decent bit (efficiency is up though :) ), I'm sure the new hires at my company are in the same boat as you..many of us know each other, so no video is just a whatever thing, but it's definitely something that could be off putting when not having the context of why. I'd say don't look to far into it and wait to judge until pandemic is over..well that is if they ever get people corralled back to offices full time

<comment><AUTHOR> Well it's helpful not to look too deeply into it, but this is for a permanently remote position.

</comment></comment><comment><USER13> Your stand-ups sound like an absolute joy! I wish all of them were like that.

</comment><comment><USER14> It is definitely challenging to get a sense of culture fit when interviewing, and Covid has forced some rapid changes for teams that may still be adapting to "temporary" work from home six months later. Companies that are focused on culture fit tend to have some declared core values and a mission statement, but these aren't always part of the ethos of the company/team goals or recognition.

Interviewing is a discussion of fit for both you and the employer, so you should feel free to ask questions (and they should allow time for this in the interview process). I would try to determine how committed the interviewers are to adhering to the company's values and mission, or if those are just words for the careers page.

For example: What is your company's mission statement? Does your team have a mission statement or vision? What is your favourite company value, and why? How do your company values factor into decision making or planning? Tell me about a recent decision influenced by your company values? If good values are embedded in the company culture, I would expect some passion and examples of their influence.

My company tries to be strongly aligned to our core values, and we have value- specific interview questions to be transparent about how those values are applied. For example, for our "Be Intellectually Honest" value one of the interview discussion points might be "Can you describe a time your manager took a stance or action that you didn't agree with, and how you responded to it.". The spirit & intention of this core value is that we have courage in our convictions but work hard to ensure biases or personal beliefs do not get in the way of finding the best solution. This is not a pass to use candor as an excuse to make kind or unproductive remarks.

I think the specific examples you've mentioned (video during meetings, agenda/format for stand-ups) are more about connection and collaborative workflow than culture. I expect companies will probably have a core value that maps to collaboration, so you could ask how that value is reflected in team activities. Daily stand-ups in scrum are normally quick updates rather than social chatter: what did you work on yesterday, what are you working on today, any blockers. Ideally there will be other team activities that encourage more social interaction (share & learn, beverage o' clock, etc).

Personally I would encourage video-on for synchronous stand-ups and sprint planning. as otherwise it is challenging to feel engaged in the discussion. However, if your team isn't doing this you should be able to have an open conversation on why that is the case. Perhaps there is some underlying issue (video is distracting or unreliable for some) that you haven't considered. Great company culture is owned and shaped by the employees, so you should feel empowered to help make your company culture better.

<comment><AUTHOR> Thanks for the detail and for the super helpful actionable advice! I'll give that a try. How would you go about asking the team why they keep their video off? Should I ask during standup, in Slack?

<comment><USER14> I would start by asking your team lead or manager why the team doesn't use video (particularly for longer meetings like sprint planning), as they may have more context. I expect the daily standup aims to be a fast and efficient status update without the distraction of folks getting their video sorted. There is probably a more appropriate team meeting for discussions, but if you don't have a suitable regular team meeting then discussing in a team Slack channel would be better than sidetracking the standup.

If you want to make the suggestion of adding video to a meeting, think about what the benefits might be for your team and whether there may be more suitable occasions to do so (eg sprint planning or a meeting later in the day). If your coworkers understand more of the Why behind your request they will hopefully be more willing to give this a try. They may also have valid reasons for not wanting to use video too often (camera shy, limited bandwidth, messy workspace, meeting is too early/late in their day, etc).

Another idea that might have less resistance versus changing an existing meeting would be to try starting something new (and optional), like a Tech Talk series. We have occasional internal Tech Talks, where the goal is short technical presentations or discussions (about half an hour) over one of our lunch breaks. Sometimes there are visiting presenters from other offices or companies. These sessions are great if you want to learn more about job- relevant tech that someone is learning, using, or building.

If your goals include fostering more social interaction and connection with the team, you could also try suggesting a format that more directly achieves that. For example, we started a Share & Learn series where anything is on- topic except work. The concept is to facilitate directed discussion about a personal passion topic. We plan for an hour (usually at the end of the day, once a month) with up to 3 speakers and around 15 minutes per speaker plus questions (delivery format up to the speaker). This has resulted in some great talks/demos/discussions which helped us learn more about our coworkers (and beekeeping, craft beer, technical interviews, video game mods, DNS, knots, ballet, ...). We also open those up to everyone in the office and encourage everyone to participate (irrespective of their department/org).

Some companies or teams may not be open to these sort of ideas, but circling back to your original question about trying to evaluate company culture before you accept a job... you can ask about these aspects in interviews as well. What does your team do to keep up with new tech? What regular social or tech sessions does the team have? Is there a budget for team lunches or social activities and how often do these happen?

<comment><AUTHOR> Thanks for all the great detail, it's really useful! I appreciate the time you took to share and I feel inspired and more prepared to try some new things out!</comment></comment></comment></comment>


The Truth Behind How Venture Capital Chooses Startups - <AUTHOR> https://medium.com/@lancengym/the-truth-behind-how-venture-capital-chooses-startups-3c95a96ba836 <comment><USER2> yawn

<comment><USER3> Please don't do this here.</comment></comment>


This smart bottle opener will message your friends when you open a beer - <AUTHOR> http://www.theverge.com/circuitbreaker/2016/5/18/11700680/this-smart-bottle-opener-will-message-your-friends-beer <comment><USER2> Is this peak IoT? Or can we go further? Smart forks?</comment>


A decent breakdown of all things real and fake news. – Imgur - <AUTHOR> http://imgur.com/7xHaUXf <comment><USER2> Unfortunately quite over simplified. Some of the news outlets placed toward the middle can be just as bad as those on the fringes, and vice-versa. The truth of a given story depends on the circumstance, subject mater and the agenda of the news organization. For example Natural News can easily have very valid stories on the virtues of canniboids, and yet have very questionable stories on chem-trails or homeopathic medicine. Same goes for alt-right outlets that legitimately report on issues like government overreach, but then blow others, like body bag deliveries and Obama's birth certificate, way out of the rational zone.

(P.S. Please don't harp on these particular examples -- everyone has different opinions about everything, and there are plenty more examples most of us can agree on, even if we don't agree on a few in particular... well, that is if you aren't a complete sheep.)</comment>


Navigating the Postmodern Python World - <AUTHOR> http://www.stephendiehl.com/posts/postmodern.html <comment><USER2> i've been coding in python professionally for 4 years now, and i'm currently working on the biggest project i've ever worked on. to me, being scared of changing the signature of a function because the static analyser will not be able to spot all the places i've used this function is a real problem ( along with incomplete autocomplete ). i do unit test everything, but i'd like to keep unit tests for things a computer can not theorically do.

since i'm still in the early phase of the project, i know that python expressiveness is an edge, but i'm looking right now at what's going to be the "definitive" language i'm going to rebuild my product for the next 3 to 4 years.

Python badly needs optional typing. really. i'm pretty sure that would solve both the speed and tooling issues. right now, for me, it starts to become unsuitable as soon as you reach 5-10k lines of code and a team of 2.

<comment><USER3> I'm surprised you're hitting that boundary at just 5-10K lines. I work on a team of 6* with about 60,000 logical Python statements (Not including tests) and aren't running into any language or framework induced roadblocks.

And this isn't even a case of "If you do everything perfect like me, [Language] works great!" \- We only have 45% code coverage, and our code architecture, in certain places, is really sub-optimal (Caused by us, not the language).

When I'm about to make a major change to a function (different inputs or different outputs) I'll always start by grepping first to get an idea of what I'm about to get myself into, write or adjust tests for the new 'signature', change the function, and code/debug/test until it works. My team is in the loop before my code is committed to a shared branch.

* We have other responsibilities besides the Python code.

Edit: If your team is stepping all over each other at such a low LOC, my hunch is that its related to a communication problem with the team, your code is too tightly coupled, or there's not enough architecture planning (Too much is bad, but so is too little).

<comment><USER2> I guess it really depends on what you're building. Just to give you a taste here's the kind of thing i'm doing:

\- tree-structured sqlalchemy managed objects comparaison , generating diffs, then applying diffs to those trees, and persist everything. I'm using sqlalchemy declarative approach.

That diff applying is performed in a celery background task, reusing my flask configuration.

So, in the worst case, i have to deal at the same time with : \- Business logic on a bunch of SqlAlchemy ORM object ( declarative approach) \- a Flask request context \- a celery task context \- and sqlalchemy session

At that point, i'm changing the signature of a function that takes pieces of those three parts to perform some business logic. Now i'm telling that the IDE (pyCharm, the best one) and python "compile phase" doesn't give you a CLUE on what you're doing.

You're dealing with so much "magic" that it becomes unmanageable. You don't need that many lines of code to reach that point.

EDIT : you've got 6 people working on 60 LOC spread on 8 discrete apps. That's about the same amount of isolated group of LOC per person than me (a person having to deal with a group of 5-10K LOC)

<comment><USER4> I'm not sure the complexity breaks down that way. More people + more code means things need to be better organised because things might change under you without warning (or you may have to work with an unfamiliar part of the system).

How is your app structured? I'm guessing that Flask is the top level glue and everything else is scattered around the Flask app. That's the general approach (in most modern MVC frameworks) and I think it's also the root cause of complexity.

Celery and Flask (and sql alchemy too) should really be asides to the main codebase. The code should be layered and discrete libraries for handling different parts of the system. If you have 6k loc that all cross reference one another then you have problems in any language. Presumably there are a number of different components in there. Each should stand on its own with as simpler api as possible. As ever, too much coupling is going to make it impossible to reason about your code.

If you're about to change a signature for a function, it should already be fairly obvious as to where it is called from. If not, you need to ask yourself why. What is this function that's so fundamental to the system that it could be called by any module? Why is it buried in another module an being accessed from elsewhere?

My current app has about 4k loc in python and the same again in js (angular). It's broken into dozens of parts that I only connect where needed through a simple api.

At the core is a sort of image processing library (that itself contains lots of different components). On top of that is a system that works with the image processing. Above that another system that interacts with the data models, uses the system below and farms out processing to picloud (though could use celery). Finally, the Flask layer just provides a web interface to talk to the system that handles that business processing. I can tap into any of those layers to drive them. The point is that I can operate at a high level without needing to consider any details of deeper parts of the system.

These are the layers of abstraction that make a system understandable and stop it from being brittle.

<comment><USER2> The problem lies in the interfaces. Components, even when they are independents, expose interfaces. Those interfaces acts as a contract between the component and its users.

Python needs a way to make those interfaces automatically verifiable.

It's even worse once you start to use big libraries. If you're using top level functions, then maybe your IDE can help you, but as soon as you're dealing with magical properties or parameters, that becomes a mess.

Take for example the "desc" magical function in SQLAlchemy, on things like "order_by" on relationships. That's extremely useful and clever, but i'd really like python to give me some "ok, you're not doing things wrong" message as I'm typing.

Even better, once i enter a relationship declaration, it should give me a list of all the parameter i can use, along with the things thoses properties accept for value. This way i wouldn't have to check the documentation every time i'm writing one. It could also let me discover new things as i'm typing ("hey what's that property doing ? that looks interesting..."). Autocompletion is another way of discovering APIs.

But for that, you need type declarations.

EDIT : as for my api, it's really nothing fancy. It's structured in three big parts "admin / common / public". They each have their "model / business / service" layers, and each have their modules. Only the service layer is impacted by flask. I have some "utils" modules for very low-level stuffs (json serialization, etc). Flask configuration are used a bit everywhere, because i want my api to have only one configuration file. Nothing special, really.

<comment><USER5> It's not a total solution but I find the zope.interface and zope.component libraries really good for this. I believe that zope.component provides some stuff to build unit tests that verify if and interface is correctly implemented/provided too.

</comment></comment></comment></comment></comment></comment><comment><USER6> (off-topic)

Love the contact page [1] of this website. What are some other effective filters?

[1] [http://www.stephendiehl.com/pages/hire.html](http://www.stephendiehl.com/pages/hire.html)

<comment><USER7> Hah, clever. Bonus points if you don't need to run the code to figure it out (since the cipher is trivial and the ciphertext isn't particularly well obfuscated in the Haskell version).

<comment><USER8> The best part is that it's still his name at a common domain. I didn't bother with the code, but you can pick the common letters and match the positions to be pretty confident. The hardest part is his middle initial.

edit: To be more on-topic, Dwolla had a pretty challenge for their hackathon last year: [http://venturebeat.com/2012/06/29/dwolla-etsy-join-up-for- ny...](http://venturebeat.com/2012/06/29/dwolla-etsy-join-up-for-nycs-first- ecommerce-hack-day/)

<comment><USER9> Funny, I also didn't need the code to translate the scrambled address. I knew his name so that right away gave me most of it:

firstname.lastname@example.com stephen.?.diehl@?????.???

since m=l in the name, assumed the same for domain, considering it's the most popular email service, gmail.com my first guess.

since n=m in the domain name, I assumed the same for the middle initial, which gave away the whole thing.

<comment><USER8> That's what I said? edit: I realize it might now have been entirely clear, I was trying to be a bit discreet ;)

</comment></comment></comment></comment></comment><comment> wes-exp Lisp has had metaprogramming, optional type declarations, speed, and DSLs since at least the '80s. This isn't some magic new technology just introduced by the shiny new languages cited by the author.

[http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule](http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule)

<comment><USER10> Lisp's optional type declarations don't provide any compile-time guarantees though, they're just hints. (Although some implementations do use them to make compile-time checks.)

<comment> wes-exp Depends what you are going for. If the point of type declarations is speed, I think most high-quality CL implementations will take advantage of a type declaration. If the point is compile-time type safety, yeah, that's a more obscure feature. Of course you can always use check-type for run-time type safety though.

<comment><USER10> Well, in the context of refactoring, it's presumably compile-time safety that's relevant.

</comment></comment></comment></comment><comment><USER11> The article doesn't mention recent/ongoing improvements to PyPy in the "speed" section, and doesn't mention concurrent.futures in the "asynchronous programming" section. Seems incomplete to me.

<comment><USER12> I take issue with the idea that you can count PyPy as a +1 for Python's speed without also counting it as a -1 for libraries. Especially considering SciPy and NumPy are not yet supported by PyPy, which means you lose out on a lot of libraries that depend on them. (For example, sci-kit learn).

You can't say that Python has both speed and great libraries. It has one or the other. Hopefully this will change at some point and I'll be able to reap the benefits of both.

<comment><USER13> It is not up to PyPy to support non-pure-Python libraries; it is up to those libraries to fix themselves by evicting their C and FORTRAN balls and chains.

<comment><USER14> The Zen of Python states that "practicality beats purity."

And the authors of numpy, scipy, pandas, etc seem to agree that it would be impractical to rewrite these libraries in the way you are suggesting.

<comment><USER13> "Special cases aren't special enough to break the rules."

</comment></comment></comment></comment></comment><comment><USER15> "there are variety of technologies encroaching on Python's niche"

It wasn't clear to me what in particular the author thinks is Python's "niche", so I didn't understand the point of the article as an article, although the content was interesting.

<comment><USER16> I think Python's niche is understood to be as a readable, concise, batteries- included language suitable for scripting, prototyping, and application development on a small-to-medium scale (and large scale for some people, but that's controversial,) and serving as a convenient interface to C and C++ libraries in all those roles. Python differentiates itself from similar languages in the niche by elevating simplicity, explicitness, and readability over conciseness and expressiveness. That's the conventional wisdom, anyway.

I'd say the biggest challenge to Python in that niche is the emergence of type inference for statically typed languages. Not too long ago, the difference between a statically typed language and Python was

        List<Foo> foos = new List<Foo>();
        foos.add(new Foo(2));
        foos.add(new Foo(4));

versus

        foos = [ Foo(2), Foo(4) ]

Now, a static language might look more like this:

        val foos = List(Foo(2), Foo(4))

As far as I know, there still isn't a statically typed language that matches Python's simplicity and low barrier to entry, but I say that as someone who knows little about Go.

<comment><USER17> Try Groovy!

      def foos = [ new Foo(2), new Foo(4) ]

<comment><USER16> I've been writing a lot of Groovy recently, and it feels like Scala without type checking. That's not the worst thing in the world, I'd rather just use Scala. With Groovy, I get a lot of the expressiveness of Scala, but the lack of static type checking combined with Groovy doing its best to be magical is a recipe for bugs. For example, in Groovy, you can overload methods accidentally without a warning, which can create a hell of a surprise when somebody passes a null value. Rather than throw an error, Groovy dispatches the call to one of the methods even if neither one is more specific than the other.

There's also this classic bug:

        def printOne(Collection c) {
            if (c.empty) {
                print("Collection is empty")
            } else {
                print(c.iterator().next())
            }
        }

Can you spot the bug? This code works for all Collections... except Maps. If c is a Map, Groovy translates c.empty to c.get("empty"). Constantly having to be on my toes to avoid stuff like that is a pain.

</comment></comment></comment></comment><comment><USER18> This might seem very petty, but I avoid python just because of the dichotomy between Python 2 and Python 3. For me, there are plenty of other scripting languages at my disposal, and for things like numpy, or twisted, I have better alternatives too.

<comment><USER19> Honest question. Outside of matlab and octave (both of which fall down in a bunch of other obvious areas), what scripting language offers anything close to an alternative to numpy/scipy?

<comment><USER18> I use R, Mathematica, Haskell, Julia, or my own CAS that I built.

<comment><USER20> What do you think of Mathematica? I've been toying with the idea of using it for sketching out ideas related to my computer graphics work, but it's a big investment. :/

<comment><USER18> I found it's utility primarily is dynamically controlled visualizations, for example, when I wanted to see how residues were distributed in the C^2 plane for a certain class of complex functions.

I'm not certain what sort of graphics work you are considering, but if it involves a lot of nonlinearity or higher level functions, it may be a good fit.

</comment></comment></comment></comment></comment><comment><USER21> The "postmodern" conceit is a bit of a stretch; link bait to lure in readers with liberal arts degrees.

<comment><USER22> Or perl hackers. "I think there's still a big streak of Modernism running through the middle of computer science, and a lot of people are out of touch with their culture. On the other hand, I'm not really out to fight Modernism, since postmodernism includes Modernism as just another valid source of ideas." [http://www.wall.org/~larry/pm.html](http://www.wall.org/~larry/pm.html)

<comment><USER23> Don't go Steve Yegge and pretend you didn't understand that speech was at _least_ 50% jokingly... :-)

<comment><USER22> pjlegato mentioned postmodern conceit and linkbait, it's right on-topic ;)

</comment></comment></comment></comment><comment><USER24> I like hacker ish approach to extending (abusing) a much loved language to bring in new ideas.

But I am wary, despite being a python bigot myself, of usin one language for all these things. At a very early point down this road it is simply better to pay the cost of adding a new platform and using clojure to make my DSL

In the end, for production, there is a fine line between bending and breaking.

</comment><comment><USER25> Really impressed about examples with parametrized types (but I'd still better switch to Haskell for those :).

</comment><comment><USER26> I should think OCaml or SML should be added to the mix. Neither has Async built in, but the other points are handled quite well. [http://ocaml.org/description.html](http://ocaml.org/description.html)

</comment><comment><USER27> Other main strength of golang is no run time dependecy! Making it highly distributable. And also cross compiles across different operating systems and different cpu architectures. This also should be mentioned in this article!

</comment><comment><USER28> "it's simply that is that the" wat</comment>


Ask HN: Alternative To Kippt? - <AUTHOR>

I'm looking for a social bookmarking site like Kippt that doesn't have 10-20 second load times.  I want to be able to bookmark all types of media including video, audio, websites, notes, and images.<p>Does anyone have any good suggestions? <comment><USER2> Given that Kippt is basically discontinued, I'm looking for alternatives. Sadly, my 25 bucks for a Pro account didn't help 'em much. And that is frustrating.

[http://icebergs.com](http://icebergs.com) looks like a nice alternative, but somehow I'm afraid it'll be dead in another year or so. Otherwise I'll just go back to [http://pinboard.in](http://pinboard.in) though there's no sharing bookmarks with my family, which is something I really liked about Kippt.

</comment><comment><USER3> Have you tried Pocket?</comment>


Ask HN: Online Resources for Beginner Hackers? - <AUTHOR>

Hey guys,
my cousin is about to start his summer vacation and we were talking about stuff he could do over the break. He expressed an interest in computers and I figured I would help him get started with some basic programming. I wanted to compile a list of online sources where a newbie could get started. Here's what I have so far -
http://www.freenetpages.co.uk/hp/alan.gauld/ - intro to programming
http://w3schools.com/ - HTML, CSS, Browser/Server Scripting
http://www.cprogramming.com/ - C and C++
http://wiki.python.org/moin/BeginnersGuide - Python
http://rubylearning.com/satishtalim/tutorial.html - Ruby
http://docs.rinet.ru/P7/ - Perl
http://www.gigamonkeys.com/book/ - Lisp; also downloaded PG's 'On Lisp'
http://www.javabeginner.com/ - Java
Any other resources you think I should add?
what about reading up on hardware?
Any advice regarding how and in what order my nephew should get started would also be appreciated.
Thanks!! <comment><USER2> I would advise against so many languages/technologies at once. This was the mistake I made in the beginning and I haven't really recovered. I can dig in to many things and make them work, but I think I would have been better off if I tried to master one or two things.

Find out what your friend is interested in and make your recommendations based on that.

</comment><comment><USER3> This one is the first document any hacker newbie should read.

<http://www.catb.org/~esr/faqs/hacker-howto.html>

</comment><comment><USER4> I have nothing to add to the list, just make sure he is not bored by all the theory - let him build some very very simple apps // hmm I'm probably saying obvious stuff

</comment><comment><USER5> How about poignantguide.net and <http://learnyouahaskell.com/> and mitpress.mit.edu/sicp/

Though it looks like you will have to turn to the printed word for anything beyond language tutorials. I would suggest intro to algorithms and head first design patterns.

As far as hardware goes introduce him to an arduino or a pic and some parts and let him explore.

<comment><USER6> I second the _Why's Poignant Guide to Ruby_ and _Learn You a Haskell For Great Good_. However, I think SICP is a bit ambitious.

Here is an old HN discussion on teaching programming:

<http://news.ycombinator.com/item?id=428095>

In addition, I recommend _why's Hackety Hack based on Ruby. It also seems that a new version is on the way!

<http://hacketyhack.net/get/>

Knightinblue, I don't know if I am interpreting your intentions correctly or not, but I do not recommend _just_ giving a ton of resources to your nephew. Rather, I believe that it is important to actively help guide him in learning. Be a mentor. Show him how to make things work. Show him how to make the computer do fun things. Do not completely leave him on his own.

Lastly, push him towards programming (and computers in general), but do not completely overwhelm him with information. Knightinblue, you seem to have amassed a huge collection of resources. In this case, I strongly believe in quality over quantity. Be very picky. In my opinion, many links will definitely need to go.

Most importantly, be _absolutely sure_ that your nephew will have fun and enjoy the experience. There is nothing worse than being completely frustrated by something new.

Sorry for that odd advice tangent. I just wanted to say it.

One last question: Knightinblue, how much is your nephew interested in computers? Is it 'hey, I think this might be cool' or is it 'yes, this will be my future'?</comment></comment>


Show HN: AppHunt – Social curated selection of new and updated Android apps - <AUTHOR> https://play.google.com/store/apps/details?id=com.livae.apphunt.app

<comment><AUTHOR> This is an early stage project. I would love to hear some feedback about it.</comment>


You Don't Need to Exercise for Hours a Week to Look and Feel Better - <AUTHOR> https://www.inc.com/christina-desmarais/15-minutes-a-day-is-all-it-takes-to-be-more-fit-according-to-science.html <comment><USER2> This feels like pseudoscience dressed up as the real thing.

"Getting stronger only takes 13 minutes three times a week" starts off with a reference to a recently published paper that looks promising, but the second paragraph is about the author's personal belief that high intensity/slow motion workouts are the best for you. There's no real connection between these two paragraphs except that they both prescribe shorter weigh lifting sessions.

"You can improve your body's function and alleviate anxiety in two minutes a day" again lists someone's personal take on dealing with anxiety and stress. While deep breathing is certainly helpful they don't site any peer reviewed papers or clinical studies that say 2-4 minutes of deep breathing a day will impact your heart rate/blood pressure/anxiety much less do it via increasing alpha waves.

"Cutting out sugar..." is similarly good intentioned (almost everyone should eat less sugar than they do, myself included) but again cites nothing meaningful.

Also this damn site somehow popped up two autoplaying audio/video ads, one of which I could not see or get rid of. Rage inducing.

<comment><USER3> I am no expert but I tend to read a lot of studies and interviews/talks with Phd's regarding fitness, and the consensus is that the most important predictor for muscle growth is volume (time under tension). That is, the longer your muscle fights the load, the more you grow, provided you have sufficient nutrition and rest.

Everything else (time of the day when you work out, number of repetitions / series, specific exercises, etc) is secondary and seems to only matter insofar as it allows you to stay more time under tension...

So I'd be VERY sceptical of anyone who claims you can have great results in X minutes a day.

With that said, it takes very little time under tension for a newbie to stimulate growth. But that effect doesn't last for long.

<comment><USER4> The cited study specifically says that muscle growth (hypertrophy) _does_ improve with volume, from 1 to 3 to 5 sets, but that _strength gain_ doesn't differ significantly. There's a lot of conflation between hypertrophy and strength. You can be strong without being big (up to a point) and vice versa.

<comment><USER5> This reinforces what strength athletes have said for a long time. The point was that in this short study, strength came from intensity (weight lifted) and size came from volume. (Hence a powerlifting program might have 3 sets of 3 to 5 of 5, whereas bodybuilding programs have much higher volume at lower weight.)

This isn't surprising; strength gains are substantially neurological. Over time, though, you still need more muscle to move heavier weight.

I know a some powerlifters, and their personal size varies with their volume (and whether or not they want size). Some are deceptively small for the weight they can move. That being said, you can't deadlift 500 pounds without putting on some significant mass, either.

</comment></comment></comment></comment><comment><USER6> The last third of this short article is about cutting sugar out of your diet.

Anecdotal:

For the last two and a bit weeks I've stopped adding sugar to anything, and stopped having any dessert or pointless snacks that are primarily sugar.

One week in and people asked if I'd lost weight. For most of last year I was hanging around 86 kilograms and probably tending slowly upwards. I weighed in mid last week at 83.

No other habits have changed.

Don't know if I "feel" any different, other than being hungry more often and physically feeling the void of the drug-like high of sugar intake to the point that I need to pursue an activity in order to distract myself from it. Two weeks isn't very far in though.

<comment><USER7> Most likely just water loss...

Every bodybuilder knows: when they start 'cutting', the first few kgs, in the first couple weeks are almost water loss and glycogen, so you always discount it (i.e. don't count it as fat loss).

Eating carbs (carbo-hydrades) makes your body retain more water. Less ingested carbs means your body will shed that extra water out.

After the first week or so, if you keep losing weight, then it means that it is actual fat loss.

</comment></comment><comment><USER8> High intensity single set training can absolutely work to build strength, if that's what you want. But muscular endurance takes longer to develop. And be careful trying to lift too heavy too soon; your muscles may be fine but you can really damage your tendons if you don't build them up gradually.

<comment><USER4> If you click through to the study, they say they tested endurance too (at 50% 1RM). It may be that one set is insufficient to build endurance at higher loads (say 80% 1RM), but not clear. The biggest difference between 1, 3 and 5 sets was muscle hypertrophy (which increased with the number of sets). A _lot_ of "strength" training has hypertrophy as an unstated goal, which makes sense if you're training for the football team, but less so if you're just training for life.

</comment></comment><comment><USER9> Eat meat. Do calisthenics[1]. Practice prolonged fasting every month. There is no money to be made in any of these activities (hence you won't see it as part of everyday propaganda).

[1] [https://www.amazon.com/gp/customer- reviews/R2G0WUH73YBFYE/](https://www.amazon.com/gp/customer- reviews/R2G0WUH73YBFYE/)

</comment><comment><USER10> Scientists: #########################################

"Yeah, let's get 34 males that did not regularly workout and then prove that they can get stronger even with 13 minutes of a good workout routine!

All we need to do is get non-lifters and put the 70 minute group with a shitty lazy routine. That ensures the "year one effect" where everyone gains a lot of strength in the beginning and gives a good advantage to the 13 minutes group!

In the end we'll prove that for a beginner a good yet short workout routine is superior to the lazy yet long one!"

Journalist: #########################################

"That's not going to get any clicks! I'll just say that 'we don't need to exercise for hours a week to look and feel better' based on a research that doesn't even mention 'look and feel better'.

And now we pretend that this also applies to experienced lifters, that's important!"

That's science journalism for you.

</comment><comment><USER11> My daily exercise routine is to walk for an hour (8000 - 10000 feet) in the evening and then do pushup and situps as much as I can. I am currently at 30 pushups and 20 situps. I have started the pushups and situps only recently but I have been walking for a while now. Is this healthy?

<comment><USER12> Certainly healthier than not doing it! "Healthy" in the context you've used is not a binary state. "If I do X it is healthy, therefore I will do X and I don't have to do anything else". Unfortunately it doesn't work like that.

It's more like a curve and it's not just one thing. So you can be super fit training for marathons, but honestly you need some excess muscle mass because you're going to start losing it when you are 50-60 years old. You need to make sure that you are flexible because when you get older, if you aren't flexible you won't be able to balance and walk, etc. It's best to start training early so that it's easier to maintain that flexibility. Even if you are running marathons and staying trim, if you eat junk you can die of lots of different conditions. So endurance training, strength training, flexibility training, and diet all work together to help your health.

At the same time, there are lots of ranges of activity where you will be just fine as you age and there are ranges of activity at both ends (sedentary and over training) where you won't be fine (although it's a heck of a lot harder to over train that to be sedentary ;-) ). Finally, there is something to be said for not overdoing things at a start. So while you might want to have this amazing training regimen someday, it would be a bad idea to start out tomorrow and do it -- you want to slowly work your way up to it.

So the answer you are probably looking for is "No, it's probably not sufficient to keep you fit and healthy for your whole life". But it's certainly a great start -- especially if it gets you doing other things that you might not have tried before. And it doesn't have to be training -- it can be playing soccer with a local league, or cycling with your friends or any number of social and pleasant activities.

How much is enough? Try to keep your weight, muscle mass, endurance and flexibility a fair bit more than what you actually need so that you can afford to lose some. Eat a diet that makes you feel good and consult with doctors when you have health problems. It's hard to say exactly what that will entail, because it is different for everybody.

<comment><USER11> Thanks. This is a great piece of advice. I loved playing soccer and cycling when I was growing up. I should start again with that :)

</comment></comment></comment><comment><USER13> "one set to failure is all you need!" is one of those ideas that seems to come up every fifteen years or so, and gets really popular for a while before people discover that it doesn't really work all that well. Mike Mentzer was an advocate in the 80s, it was popular when I was just starting out in 2003 or so, and I guess it's coming around again.

</comment><comment><USER14> Is it possible to turn off the irritating music on this page. Sorry, but I like to choose my own.

</comment><comment><USER15> As little as a one ~maxreps set of pushups every day before showering will have you looking like a soldier after a couple years, assuming you're not starting out obese and are eating reasonably.

<comment><USER16> What does "one ~maxreps" mean?

<comment><USER17> One means one set of pushups, no rests.

Maxreps means do pushups until you can't do another, despite digging really deep.

</comment></comment></comment><comment><USER18> I'd have a look at what Dr. John Jaquish is doing with the X3 Bar.

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

<comment><USER19> This feels a lot like an ad.

<comment><USER20> Yeah but I mean look what he's doing with the X3 bar.</comment></comment></comment>


Why wireless mesh networks won't save us from censorship - <AUTHOR> http://sha.ddih.org/2011/11/26/why-wireless-mesh-networks-wont-save-us-from-censorship/

<comment><USER2> One thing the article didn't mention, which I've been considering in regards to this problem: an RF-based internet alternative would be prone to all sorts of other forms of government interference/monitoring. The U.S. government already has serious resources at its disposal for the purpose of intercepting or jamming RF transmissions. For "intercepting," this includes high-power decryption capabilities, and for "jamming" this includes noise jamming but also spoofing and signal insertion. So even if an RF mesh-network of some sort were to be established, the government would be able to:

1: Know exactly where every transmitter is. This means they can find you in meatspace even more easily than they can on the hard-wired internet.

2: Listen in on your transmissions without all of the legal issues associated with wiretapping. To make sure they can do so, they would probably need to pass a law prohibiting the use of many types of cryptography on unlicensed RF transmissions. Such a law would be much easier to sell to the general public "because the terrorists could be using it to coordinate attacks." If you break this law, expect a knock on your door almost instantly because of #1, above.

When you combine #1 and #2, busting "pirates" becomes trivially easy: somebody sees a "suspicious" file in your transmissions, localizes your transmitter, and a few minutes later you get a knock on your door.

There's other stuff, like injecting false traffic, etc.

<comment><USER3> Just to clarify: are you saying with your point #2 that the government can break any encryption currently in wide use with 802.11 networks and all popular VPN solutions? Or are you just saying that they can physically listen to encrypted transmissions? I was under the impression that encryption scales in complexity pretty much infinitely, so long as you don't care about encryption/decryption speeds.

<comment><USER4> I had a relative that once worked in "government security" for the U.S. government. What that meant, we weren't permitted to know. Personally, I think he was full of crap and here's why: in his Professional Opinion, any encryption algorithm implemented in software was doomed to failure because "it could be hacked" - he was completely unaware that any hardware circuit can be emulated in software.

Point: it tends to be these very gov't lackeys that think just because the signal is in the air that it can be intercepted, decoded, decrypted and its plaintext content recorded.

</comment></comment></comment><comment><USER5> I'd like to note that every single item listed in this is a technical barrier. There are no political barriers, there are no wealth or resource barriers. RF is free to use on the spectrum we need it to work on (ok, until that's illegal). It's that it's a hard, hard problem to solve and it hasn't been solved yet. Do not let that stop anyone from continuing to do work on this: maybe it _will_ get solved.

<comment><AUTHOR> I generally agree, but I tried to shed some light on the fundamental physics/math behind why building such a network is impractical. In any case, it might one day be possible, but I think a better use of resources (especially for non- and semi-technical people) is to contribute to the social movement around Internet free speech and to build real-world political networks.

<comment><USER6> To me the damning evidence is that these problems still haven't been solved for decades even with a fair amount of work by professionals. Solutions probably exist, but will a decentralized group of redditors really be the ones who solve them?

I personally figure if people just accept the low speeds of HF instead of expecting full Hulu streaming for everyone, a lot of the problems will be immediately mitigated, but that's unlikely- if only because HF gear is not nearly as cheap and ubiquitous as WiFI.

<comment><USER7> There's precedent for well-communicating groups with a well-defined goal producing impressive results in the short term. Examples include the Manhattan project, the space race, and the more recent Polymath projects [1]. These redditors probably aren't the people to do it, but if the same attempt were made on comp.* or at google it might go somewhere.

[http://michaelnielsen.org/polymath1/index.php?title=Main_Pag...](http://michaelnielsen.org/polymath1/index.php?title=Main_Page)

</comment></comment></comment></comment><comment><USER8> This is a good article grounded in actual experience.

As the former operator of the w8lvn packet radio bbs, i can heartily relate to _you haven't lived until you've hunted down transient connectivity problems resulting from RF weirdness in urban areas._

And he details real-world experience like "omnidirectional antennas suck".

Essentially, physics is not on your side here.

<comment><USER9> A directional antenna or two with some kind of actuator might help. A couple of cantennas that could aim themselves could solve a lot of problems. But there's still a lot of problems left. Ultimately, you either get really poor bandwidth, or can only have static assets (like movie files, which don't need to change over time and can be cached by someone nearby with a few big hard drives).

<comment><USER10> Directional antennas don't help create a "mesh", since they (by definition) only connect stations in a direct line with each other -- a mesh is supposed to connect to multiple other stations, so that if one goes offline, a route can be found through another. A directional antenna will only (typically) connect to one other node.

<comment><USER9> If you had an antenna and an omni, though, you could connect a local subnet to the wider area. If you had a few directional antennas in each local subnet (say, an apartment complex connected by omnis), then the subnets would connect to the rest of the world.

Wireless meshes don't work. They need to be fractal - local omnis, then cantennas, then backbones. If every geek had a cantenna (plus an omni to connect to the non-geeks, and another geek with a cantenna), you could light up most cities (OK, maybe not quite a city ... I don't really know). From there, you need some super-geeks finding ways to connect the city nets (private fiber?), but you don't need many super-geeks.

<comment><USER11> Isn't the problem with this, single points of failure? I guess it's still more of a mesh than the current infrastructure. But if you're trying to 'route around the government,' then having a defined structure seems counter to your goals.

<comment><USER9> A full mesh is impossible. It just doesn't scale. You need a fractal system. You also need graceful degradation (or progressive enhancement). It would be great to push a tweat out, and have it visible on the local network until the local network can sync with the central server.

</comment></comment></comment></comment></comment></comment><comment><USER12> This seems to assume that the only way to use a network is the current (near)instant req/resp style networking, which is core to a lot of current protocols. One of the things a darknet would enable is a slower eventual delivery model, like email used to be. This is not ideal, but opportunistic store and forward still can move information faster and easier than no network at all. Things like freenet and freedom boxes are attempts to look at this notion.

In scenarios where the darknet is being actively attacked, people are likely going to be less concerned with instant services than any source of reliable, uncensored information. Perhaps we need to really look into ways to get information around following these methodologies and constraints as a supplement to building darknets.

<comment><USER13> People are only going to buy the equipment in the first place if they can check their Facebook over it. A network that's designed only for freedom fighters ends up not getting enough nodes to reach critical mass (see Freenet). People might tolerate an Internet-incompatible network if it also came with lots of free warez, though.

<comment><USER14> Piracy is definitely the draw for this. Enough to make it practical? Maybe - it depends on how many good alternatives to piracy exist.

</comment></comment></comment><comment><USER15> OK, plan B. First, we quantum-entangle a few billion pairs of particles...

Failing that, even without connecting the hundreds (or sometimes thousands) of square miles between cities, I think there is still great potential political, economic and recreational value in decentralized Metropolitan Area Networks, despite the fact that they won't supplant the Internet.

<comment><USER16> As the project creator I agree. It will never supplant the Internet, but localized networks can play a huge role in how the web works however, and I see establishing these as the real goal of the project.

<comment><USER17> It is crucial in my opinion how you define the goals of your project.

</comment></comment></comment><comment><USER18> Yes, those are all problems, and they will require work to get around. Good point.

"This will never work." << lol</comment>


What to Do When Your App Is Racist - <AUTHOR> http://www.newyorker.com/business/currency/what-to-do-when-your-app-is-racist

<comment><USER2> Walc, an app that isn't even out yet close half a million allegedly. For perspective, this is more than twice of OMG's Draw Something.</comment>