Fact-Checking Won't Save Us from Fake News - <AUTHOR> http://fivethirtyeight.com/features/fact-checking-wont-save-us-from-fake-news/ <comment><USER2> Despite their protestations, I get the feeling that journalists are some of the most prolific consumers of social media, using it more and more as a source for their scoops and discussion topics. If so, it seems pretty disingenuous for them to blame the readership for what they click on, when they themselves seem unable to turn away and go find some real material.

The griping about the overuse of "fake news" displays a lack of self-awareness too. It isn't just Alex Jones adherents who call the New York Times, Washington Post and BBC fake news. All these major outlets have been caught with their pants down posting untruths, often with an obvious political agenda masked with under the thinnest veneer of objectivity. Corrections and retractions are lost in the maelstrom of the attention economy, and opinion pieces compete on equal footing with 'real' reporting, as the front page is no longer the main source of traffic. The response to the obvious and baited ire from the readership is to double down, censor any comments that contradict the story as being uncivil and harassing, and get ever more offended the plebs aren't eating up what you're serving, seeking out alternate sources in their 'ignorance'.

Respect and credibility are earned, not given. If contemporary journalists want to raise the bar and bring their audience back to them, the solution isn't a war on information, it's a war on their own delusions of grandeur and their inability to step aside to let real domain experts speak. Those who are in it for the job rather than the agenda and attention left the scene long ago, and Gell Mann amnesia remains as true as ever.

</comment><comment><USER3> I'm on a very wide screen monitor so I don't know how much of an issue this is for other people but there is so much wasted space on this website. I'd say the text makes up for less then 1/3 of the entire page.

254 vertical pixels are taken up just by the title + author + date + social media. I really wish there was a news site that would give unbiased facts in a clean and unbloated fasion.

</comment><comment><USER4> please stop opening the wounds</comment>


Tell HN: GitHub Please Reset Your Password - <AUTHOR> Just received via email
———————-
Hi there,
During the course of regular auditing, GitHub discovered that a recently introduced bug exposed a small number of users' passwords to our internal logging system, including yours. We have corrected this, but you'll need to reset your password to regain access to your account.
GitHub stores user passwords with secure cryptographic hashes (bcrypt). However, this recently introduced bug resulted in our secure internal logs recording plaintext user passwords when users initiated a password reset. Rest assured, these passwords were not accessible to the public or other GitHub users at any time. Additionally, they were not accessible to the majority of GitHub staff and we have determined that it is very unlikely that any GitHub staff accessed these logs. GitHub does not intentionally store passwords in plaintext format. Instead, we use modern cryptographic methods to ensure passwords are stored securely in production. To note, GitHub has not been hacked or compromised in any way.
You can regain access to your account by resetting your password using the link below::
https://github.com/password_reset
If you have any lingering questions or concerns about this, don't hesitate to let us know. You can reach us by emailing firstname.lastname@example.com or by using our contact form:
https://github.com/contact
Thanks,
GitHub Support <comment><AUTHOR> Seems like it's often the side channels that get people, even when they apply best practices to the primary system. I would be interested to know how passwords got into a log entry though.

<comment><USER2> Just got this as well. I changed my password on GitHub about a month ago, and it looks like only those who changed a password were affected.

If I have to guess, they maybe saved the plaintext from the form when testing the password reset feature for some reason?

<comment><AUTHOR> I also changed my password pretty recently, this seems like a good candidate for the source of the problem.</comment></comment></comment>


Stripe Terminal – Programmable point of sale - <AUTHOR> https://stripe.com/terminal <comment><USER2> It's interesting to see:

\- Square become Stripe, while Stripe becomes Square

\- Stripe owning the whole user experience in purchasing

\- If they own the physical end points, will they eventually cut out credit card companies? You can already see that they are pushing for collecting emails with checkout.js. The first step is to have direct contact with the end user.

\- If they cut out credit card companies, what's to stop them from moving into personal payments (e.g. Square Cash, Venmo) and then banking?

<comment><USER3> I'm sure they've thought about it. However, as others have found, getting through the amount of fraud out there with a margin less than the ~3% that credit card companies charge, is really hard. I mean if you were perfect that would be 3% profit. If your uncaught fraud rate is even a few percent higher than that of companies who have been doing this for a long time, you will be bleeding money.

Again, I'm sure they've thought of it, but the credit card companies are actually pretty good at a very hard task, which is enabling super-easy and quick payment verification without getting eaten alive by fraud.

<comment><USER4> I am continuously shocked by the amount of defense that people have towards Stripe. I remember mentioning Stripe's 3% fee being too high for me the other day at a community event and I was attacked by people defending Stripe and their fee. These are people that don't work there, and have no true involvement with them (other than using their APIs).

Sorry everyone, but you really don't understand that Stripe's position is literally the middleman of everything. Their "product" is the API. Simplifying and unifying what the various processors have done and marketing the hell out of it.

That 3% fee that everyone defends is truly almost pure profit for them. I currently work with another payment processor (one of the top three largest in the world) and our credit card fees are measured in basis points. For those that don't know... a basis point is one-hundredth of a percent. The fees we are charged by our processor isn't even whole percentage points, it is measured in basis points. Granted it is more complicated because there are different fees for AMEX, Mastercard, Visa, etc. But it is still all totaled out to fractions of a percent.

Keep in mind that my credit processor is still making money while charging me in basis points (and they have way more employees than Stripe does). Stripe is a competitor to this processor. So if this processor makes money charging fees in basis points, than Stripe could make money charging in basis points too.

And before people think that I work for Walmart. I'll just say we charge about 2M a month in credit cards which is relatively small.

I promise that Stripe is doing very well off their 3% charge. I am not saying that they aren't allowed to make good money, but I really hate when people defend them like they are barely scraping by. Stripe is laughing their way to the bank with your 3% processing fee. They laugh even harder when they read you defending their outrageous fees.

<comment><USER3> Uh, that 3% includes the amount they are passing on to the credit card company. Which, for a little guy like me, is around 3%. It is literally no more expensive to go with Stripe than to roll my own.

<comment><USER5> Exactly. I signed up with stripe maybe 5 years ago. At that time, I was trying to find a processor, and came close to signing with a bank. The bank wanted me to sign a long-term agreement, the agreement had disadvantageous and confusing terms with unclear costs, and it was more expensive than stripe at baseline. The sales process was really sleezy: I only discovered all those terms because I read the contract carefully before signing.

Before that I used two other processors, both of which had a confusing mix of monthly and per-transaction fees.

If you are a very, very large business, maybe you can do better than stripe. But if you are small or even medium size, I am skeptical there is a better deal out there.

<comment><USER6> Even a small business can easily do better than A (when it comes to fees). The only time stripe would be a good deal is if you are processing almost exclusively high end corporate cards like Amex or corporate purchasing cards.

Stripe and others like them is also the best rate if you are processing very small annual amounts. Because every merchant account has around $10 in monthly fees, minimum. If you are not paying a monthly fee, either your processor is paying it, assuming that they will make enough on the spread to make up for it, or they are running your processing under their own merchant account and taking on the risk. Which is likely what stripe does until an account is large enough to warrant moving it under its own merchant account.

<comment><USER7> Here is an example of a relatively expensive rate for processing with a merchant account (2% plus 10 cents per transaction, with a 10 monthly fee) versus Stripe. Note how the breakeven for getting a merchant account is when you start processing more than $428 a month(assuming an average transaction is $15).

[https://www.desmos.com/calculator/zuzn1lhfdg](https://www.desmos.com/calculator/zuzn1lhfdg)

<comment><USER3> My experience in the U.S., admittedly as a very small size merchant, is that 2% +10 cents is considerably better than I can get with a bank.

<comment><USER7> Banks have 2nd tier offerings for credit and debit processing that don't focus on gaining customers with low rates. There are a handful of platforms, First Data, Tsys, Elavon, Worldpay/Mercury & Heartland, and everyone who sells merchant services is selling you access to one of those platforms.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> We spent a lot of time building a terminal at Sidestep on top of Stripe (and a few other processors). Everything on the in-person payment level was done through an iOS or Android device. The hardest part wasn't managing devices (they could log in on almost any device), but the hardware integration for accepting credit cards. It exists in various places, but none of it could do exactly what we wanted to do. CardFlight was the closest to being a stripe friendly api for swiping cards. Usually the devices for swiping cards were too expensive and the failure rate was high. I don't think swiping hardware has gone down, unless you're using Square.

But hardware costs aside, the ability to fully integrate with the API on a terminal level is the most powerful thing here. It allows for so many cool POS integrations like the one we building at Sidestep.

To me, the coolest thing about this is that it supports Stripe Connect so you can create a POS that's used by others without having to deal with any money transfer yourself. Customer swipes card -> your software -> client's bank account.

<comment><USER9> how much fee is collected like this? Stripe Connect takes a fee, Stripe Terminal takes a fee, etc.

<comment><USER8> I don't think the fees stack like that. The terminal page says 2.7% + $0.05 per transaction. I believe that Stripe Connect doesn't take an extra fee, at least not in my experience.

<comment><USER10> It does. It takes a percentage of the connected user's sales AND a $2.00 monthly fee per user AND the normal transaction fee.

<comment><USER11> If there was a competitor to Connect, I would use it. Fees end up being around 3.4%. That's pretty hard to sell customers on.

<comment><USER6> So 3.4% for card present? That will not fly except with the smallest of businesses. (which is not where the profit is).

</comment></comment></comment></comment></comment></comment><comment><USER12> A shot across the bow against Square. This will be very interesting. Payments has always been a race to the bottom, I wonder how quickly rates will drop for POS payment providers now that Stripe is going after that business and directly against Square.

<comment><USER13> I'm surprised either Square or Stripe would do well in the "card present" space. 2.9% + 30 cents is pretty big markup if you're "card present".

Edit: See comment below, apparently the 30 cents is now 5 cents for card present. Helpful, though doesn't necessarily close the whole gap, depending on transaction mix.

<comment><USER14> Could you clarify? Is this markup only on card present transactions?

<comment><USER13> It's specific to the US. Within the US, if have your own merchant account, "card present" is a lot cheaper than "card not present".

So far, companies like Paypal, Square, and now Stripe, don't pass those savings on. They all have one rate that doesn't differentiate.

<comment><USER12> More importantly, fraud rates are much lower with CP than CNP. If the Visa/MC in the US goes with a PIN-type system like the rest of the world, fraud rates drop to near zero, which makes Card Present insanely profitable for them.

</comment></comment></comment></comment></comment><comment><USER15> Wondering if this could enable use-cases for in-person subscription selling. I.e. selling SaaS/subscription content at conferences and tradeshows.

<comment><USER16> (I work at Stripe)

Yes this is one of the use cases we are excited for users to bring to market utilizing Stripe Terminal. If you also use Stripe Billing, you can help your customers initiate a subscription in-person.

<comment><USER17> Is it possible to build this use case: identifing the user using face recognition during checkout and processing payments based on his card stored in the system. Also is it possible to export the purchase data to other systems via API. So as to enable e-commerce style data analytics/customer engagement for brick and mortar retailers

<comment><USER18> Outside of being a 2FA/fraud prevention measure, what's the benefit of facial recognition here (I also imagine a lot of your customer base would be opposed to the idea of someone storing facial data for this, but I digress)? The card data should be sufficient for the purpose of linking purchases to an individual account if one is inclined to do so.

<comment><USER17> In my part of the world, most payments are through cash and very few people uses cards on day to day basis,hence face recognition.

[https://www.businessinsider.my/7-eleven-facial- recognition-t...](https://www.businessinsider.my/7-eleven-facial-recognition- technology-introduced-in-thailand-2018-3)

<comment><USER18> Ah, that's a fair point. I read it as facial recognition tying into the card stored in the system.

</comment></comment></comment></comment></comment></comment><comment><USER19> "People who are really serious about software should make their own hardware." \- Alan Kay

</comment><comment><USER20> Starting a subscription in-person seems like a game-changer.

Also, attribution of in-store purchases to marketing efforts is so hard. I bet Stripe could help with this, e.g. starting with email address, or tying an online account to an in-person transaction.

</comment><comment><USER21> I am working with a company that has small physical stores processing hundreds of payments every day... and having to rely on all the existing crappy hardware for taking payments is a pain in the a$$.. this looks like it could change the game - I'm applying for invite and see what happens next

<comment><USER22> Which is strange, because it seems to me a consumer that there's been an explosion in POS systems that offer any featureset under the sun. Are the backend systems just all wonky?

<comment><USER21> Some folks have really old hardware/software systems because the people that set them up initially (think 5-10 years ago) didnt probably feel confident with the newer vendors or maybe were incentivized to use the more older crappy systems that are more reliable but less customizable/hookable

</comment></comment></comment><comment><USER23> Does stripe has the world best designers? Just wow.

</comment><comment><USER24> Seems like a no-brainer. I see Square terminals everywhere, so the market seems proven. Anyone know if their pricing is comparable?

<comment><USER25> I'm not sure what Square charges, but a regular POS from your business bank would be far, far less in percentage for in-person, card-present transactions. I've seen 1.5% figures here in Europe.

So far, Stripe seems to have lowered the fixed fee from 30¢ to 5¢ and dropped 0.2% off their payment gateway fees.

<comment><USER26> I've heard Europe is more reasonable, but at least as of a few years back before Square got so popular, there was a ton of fees to having a bank-owned card reader. Typically required >$1000 deposit just to get the machine, and then a subscription in excess of $200/month, and if I remember correctly, card present transactions were around a 2.5% fee... oh, and that was typically just for Visa and Mastercard. The people I knew with these machines never sprung for the other networks because the price was so expensive. My parents run some small businesses, and credit card machine fees were one of the major line items in their monthly expenses before getting one of those cheap square phone devices back in 2012 or so. Maybe the banks have made things more competitive though now that Square has taken at least some of their business.

<comment><USER27> My previous startup has card payments from EU cards for 0.9% and 5 CZK

</comment></comment></comment></comment><comment><USER28> We've been participating in this trial. Happy to answer questions about it.

<comment><USER29> Can you give out any more details? Can this replace a restaurant POS system like Micros, Aloha, Digital Dining, et all? My brother is a restaurant owner and is struggling with one of those scummy legacy POS systems and I am trying to help him out of it -- even to the point of rolling an open source POS system out for him

</comment></comment><comment><USER30> Some ideas:

1) Flash up a QR code (and/or NFC) on the device to allow for crypto payments/buy/sell.

2) Flash up a QR code (and/or NFC) to sell custom store tokens or loyalty points.

</comment><comment><USER31> Looks awesome, already requested an invite and can't wait to put it in practice.

The next thing that I really want from Stripe is an API for the analytics they generate. I would love to be able to display the data that they are already showing in their web application via something like their elements library. I want my customers to have a better sense of how their business is doing, without having to duplicate the work that Stripe is already doing.

<comment><USER32> I think this must exist? I know you can push the Stripe analytics data to Databox.

</comment></comment><comment><USER33> I'm not sure what they mean by creating a "unified experience" and I'm not sure I understand what exactly can be customized.

<comment><USER34> (I work at Stripe)

The end consumer will have a seamless experience between paying online and offline -- think buy things online, return in-store (or vice-versa). Your customers can initiate a subscription in-store that continues online with Stripe Billing. You will have all your reporting -- for both online and in- person transactions -- within the Stripe Dashboard. In terms of customization, we think our new SDKs will make it really easy for you to build the right checkout experience for your business. Also, you'll be able to customize some aspects of the reader display (e.g., logos, color theme, splash screen, etc.).

<comment><USER33> This makes sense. Thanks for clarifying.

</comment></comment></comment><comment><USER35> Using Verifone hardware? I'd rather just use Square. Nothing wrong with using both Square and Stripe for credit card processing.

<comment><USER34> (I work at Stripe)

We currently support two devices and will add support for more in the months to come. Please request an invite and let us know if there are particular hardware devices you are interested in us supporting.

<comment><USER36> How does the hardware work with the web SDK? I didn't think it was possible to interface with hardware from a browser.

<comment><USER37> Verifone supports HTML subset for user interface, I'd imagine that's the only thing you can customize.

</comment></comment></comment></comment><comment><USER38> Living in Russia i every time wondering why Stripe or square companies exist. We have batch of banks which doing this card acquiring, mobile phone operators who made pos terminals with internet connection and online tax services. And now i see stripe pos like back in years ago. Wtf.

</comment><comment><USER39> Pretty interesting. I wonder if this is going to eventually turn into something comparable to Shopify's hardware POS offerings[0].

[0]: [https://www.shopify.com/pos/features#hardware](https://www.shopify.com/pos/features#hardware)

</comment><comment><USER40> I really hope they have a web based API, not requiring a native app. If they do, we would love to use them for our PWA ([https://usebx.com](https://usebx.com)) as a bunch of customers ask for this regularly.

<comment><USER25> It appears there's a Javascript SDK listed as available.

<comment><USER40> I think that really separates them from the rest. With everyone else, you need a native app to integrate with their terminal. Stripe offering this is really very cool!

</comment></comment></comment><comment><USER41> Absolutely great. This industry(card processing - esp. in person) is mired by a ton of ambiguity and it would take a company like Stripe to open it up to innovation. Cannot wait to see what comes out of this from the ecosystem.

<comment><USER42> I couldn't agree more.

Up to now it has been near impossible for third party solutions to end up on terminals. I've seen these new Verifone terminals and they are awesome. I can't wait to see what comes of these.

</comment></comment><comment><USER43> We have developed a POS for salons and spa and have been working with various in-store payment solutions - including Square. None of the existing solutions meet our needs.

I have applied for an invite - can't wait to get access.

<comment><USER34> (I work at Stripe)

Excited to review your application! We have a lot of users building point of sale applications for booking and scheduling -- including AtVenu, Mindbody, Universe, Zenoti.

<comment><USER44> How likely are startups who are still building out a platform get approved for beta access? And should startups add that info in the beta request form?

<comment><USER34> (I work at Stripe)

Yep, please tell us as much possible in the form. The Beta is open to all business in the US.

</comment></comment></comment></comment><comment><USER45> Can someone clarify what the use-case is for this new functionality? I've regularly used POS stripe devices based on iPads, is the idea this allows Stripe to be used on proprietary POS devices?

<comment><USER34> (I work at Stripe)

Stripe Terminal gives developers the flexibility to build custom point of sale applications that use the Stripe payments platform, with EMV-ready hardware. The product will be work across the entire suite of Stripe products (Billing, Radar, Sigma etc.), and we'll provide native SDKs across several languages.

</comment></comment><comment><USER46> Side note on the design - Absolutely love how well they do with keeping depth on flat design elements. Stripe design team always does such good work.

</comment><comment><USER47> So, no need to worry about PCI compliance, right?

<comment><USER48> Well you're not holding credit card details, so no there should be no need to worry about PCI.

<comment><USER47> I was hoping to hear that from Stripe. The word PCI is nowhere on the headline page.

<comment><USER34> (I work at Stripe)

Apologies for the delay! Stripe Terminal works with our pre-certified card readers. This ensures that your transactions are secured by our end-to-end encryption and that your readers are always up-to-date via our remote management tools. We'll share even more information about how we help reduce your PCI scope with Stripe Terminal when we launch full docs later this week!

</comment></comment></comment></comment><comment><USER49> I am naive in this space, could some explain what is keeping the duopoly of Visa/MasterCard going?

<comment><USER50> While I haven't done a lot of research in this area, I would suspect launching a new credit card company is just a massive amount of work, very different from launching a new web app. You're obviously going to be subject to a lot of banking and capital regulations; you're either going to have to be starting an actual bank or you're going to have to partner with (at least) one, for instance. Then you have to figure out how to get businesses to start accepting you. "This card works everywhere that happens to have a Square-based point of sale system" is not going to get you to be the next Visa. It's not even going to get you to be the next Discover.

While Simple was trying to launch a new bank, not a CC processor, their experience is probably informative here -- they're successful by some measures, but they failed at disrupting the industry the way they wanted to. (I'm a Simple customer and have been on the edge of switching back to a conventional bank for over a year; it's mostly just inertia that keeps me there.)

<comment><USER51> > While I haven't done a lot of research in this area, I would suspect > launching a new credit card company is just a massive amount of work

there's a Futurama episode that has a snarky commentary on this - s01e06:

fry: "Do you take Visa?" clerk: "Visa hasn't existed for five hundred years." fry: "American Express?" clerk: "Six hundred years." fry: "Discover Card?" clerk: "Hmm...sorry, we don't take Discover."

</comment></comment></comment><comment><USER52> I wonder if Stripe or Venmo will be the first to get QR payments going in the US.

<comment><USER53> The likelihood of QR payments taking off in North America is slim. People love credit cards. They offer way too much.

This model worked in China because people went from using cash to mobile.

We've been using credit cards forever and there's literally no incentive for me to use an app like Venmo/Square Cash over my Chase credit card which gives me points/miles

<comment><USER42> It is simple as this and I have seen the research.

The west loves tapping and the east loves scanning (AliPay / WePay)

</comment></comment></comment><comment><USER54> anyone know if it will support pre-auth .. I own a nightclub and this would be clutch. I saw they have a preauth endpoint. But, can I preauth for $1 and capture $100

</comment><comment><USER55> Of course Canada left out again. lol

<comment><USER56> Hiya, I work at Stripe. We want to make sure that Stripe Terminal supports the major in-person payment methods in market. As you know, Interac is really important in Canada, and we're working on adding support for that. Stay tuned!

</comment></comment><comment><USER9> Competition is good I guess...

</comment><comment><USER57> Can it be also hacked?</comment>


Sci-Fi Author Iain M. Banks Gets Asteroid Named after Him - <AUTHOR> http://minorplanetcenter.net/blog/sci-fi-author-iain-m-banks-gets-asteroid-named-after-him/

<comment><USER2> This guy deserves it. The Culture series is a fantastic work, I wish he could have finished it (he stated last year that he figured around 3 or 4 more books would cap the series). And, while I loved the Culture series, his other sci-fi was often as good, or better.

If you love sci-fi, and for some reason you haven't heard of this guy, do yourself a favor and read a couple of his books.

<comment><USER3> What book(s) would you recommend starting with?

<comment><USER4> Use of Weapons, Player of Games or Excession.

The fairly recent Surface Detail was also pretty good, although somewhat horrific in that it deals with the idea of virtual reality hells.

<comment><USER5> My Wife just read SD on holiday and thoroughly enjoyed it, liking the characters. I'm pretty sure that it's her first Culture Novel.

</comment></comment></comment></comment><comment><USER6> Could have been a ship name :-)

[http://en.wikipedia.org/wiki/List_of_spacecraft_in_the_Cultu...](http://en.wikipedia.org/wiki/List_of_spacecraft_in_the_Culture_series)

"No One Knows What The Dead Think", Fast Picket, Culture

<comment><USER7> I think he'd have preferred "Meatfucker".

<comment> grey-area How rude. I prefer Grey Area thank you very much.

</comment></comment></comment><comment><USER8> I first heard about Iain M. Banks here on Hacker News. I've now read Use of Weapons, Player of Games and Consider Phlebas. Now currently reading Excession. This guy's writing is incredible. Lovely poetry with a crazy wild imagination.

Player of Games will be one of my all time favorite books for a long time. I can't wait enough to forget all of it so that I can go back and read it once more. I love you Flere-Imsaho!

</comment><comment><USER9> I received use of weapons as a birthday present some years ago and have been hooked ever since. Having an asteroid named after him is a super cool move. Maybe one day we'll see actual spaceships named after the ships in his books.

<comment><USER10> I think the Culture ships would find it impudent or funny to have their names given to primitive, non-sapient, human-made spaceships. It could spawn a new series of gag ship names mocking us.

GCU _Earthlings Can Take Our Names But They Can Never Take Our Gravitas_

</comment></comment><comment><USER11> Should have got himself frozen at Alcor. Hmph.</comment>


SuperCard: Still-for-sale HyperCard replacement - <AUTHOR> http://en.wikipedia.org/wiki/SuperCard

<comment><AUTHOR> It's amazing to me that, a decade after HyperCard was shut down, this is still being sold for _hundreds of dollars_ per licence.

[http://www.supercard.us/Purchase/orderFULL.html](http://www.supercard.us/Purchase/orderFULL.html)

</comment><comment><USER2> LiveCode is much better, cross-platform, supports mobile and is free for non- commercial development.</comment>


Twitter is ditching the 140 character limit - <AUTHOR> http://thenextweb.com/twitter/2015/09/29/twitter-is-reportedly-ditching-the-140-character-limit/ <comment><USER2> twitter is removing what makes twitter twitter. next Facebook will remove their like button.</comment>


Microsoft's first explicit anti GNU/linux ad - <AUTHOR> http://swiss.csail.mit.edu/~hal/misc/msad.jpg <comment><USER2> If only I could understand German.</comment>


Data Structure and Algorithm Collection - <AUTHOR> https://github.com/xennygrimmato/Data-Structures-and-Algorithms <comment><AUTHOR> I am creating a collection of data structures and algorithms for all. I hope this becomes a large collection of readable code, which people utilize in the future for learning or referring whenever required.</comment>


Understanding larger disassembly - <AUTHOR> http://codeplusplus.blogspot.com/2016/12/understanding-larger-disassembly.html <comment><USER2> _Locate the code you 're interested in._

The content of that section can be summed up in a phrase I remember seeing a few times in cracking tutorials: "follow the data". This is much easier today with debuggers/hardware that offer memory read/write breakpoints, but in general the fruitful strategy is to find the data and follow where it goes.</comment>


Sr.ht experimental mercurial support - <AUTHOR> https://man.sr.ht/hg.sr.ht/ <comment><USER2> It would be awesome to get pijul support as well!

I have started using sr.ht a bit and the interface is sweet but I want to use pijul for some stuff and it's the future imo (maybe it'll be assimilated into git like servo into firefox but future nevertheless)

<comment><USER3> First time hearing about pijul. Thank you, this looks pretty awesome!

I have a question. Applying formatting/indenting on the entire codebase is known to destroy (making it useless) blaming completely in git. Would it work with pijul?

<comment><USER4> I think you would need a smarter blame system, probably something that can tokenise your source code like cregit:

[https://github.com/cregit/cregit/](https://github.com/cregit/cregit/) [https://lwn.net/Articles/698425/](https://lwn.net/Articles/698425/)

<comment><USER3> Smarter than what pijul has? Do they have a fix for this planned? That would be cool.

Thanks for the links!

<comment><USER4> I've never looked at pijul but without some knowledge of how to tokenise or parse source code, it would be hard for any VCS to have a smarter blame system. cregit doesn't care much about the underlying VCS, so presumably it could be adapted to being used with pijul too.

</comment></comment></comment></comment></comment><comment> yjftsjthsd-h Oh, excellent! There is a distinct lack of good hg hosting options; AFAIK, it's Bitbucket or self-host. (I feel like I'm fogetting some minor players, but my poor recollection is that the ones I saw had shortcomings that made me steer clear.) Great to see another good option coming up.

</comment><comment><USER3> I love sr.ht!</comment>


Show HN: Starlight – Google Anything Quickly - <AUTHOR> http://jakemor.com/posts.php?n=Starlight <comment><USER2> I love this! Opening a browser or even a new tab is always such a distraction to my workflow, I'm super excited to try this out

</comment><comment><USER3> Amazing idea, much more efficient than my normal routine when developing. Looking forward to trying!

</comment><comment><USER4> Nice! Helps solve a super tedious problem</comment>


Ask HN: What can I learn right now that'll benefit me forever - <AUTHOR> Share a lesson you learnt. I understand you may have a story to share, but keep it simple, down to the lesson you learnt or the experience in a nutshell <comment><USER2> If a certain technology is very interesting/promising, then stop wasting large amount of time on Reddit/HN seeking advice/opinions about _whether_ you should learn it or not. Instead, find 3 or 4 hours to finish some introductory tutorials to actually get to know the thing.

This 3 hour work will relieve you from weeks, even months, of uncertainty/lurking, not to mention the possible anxiety due to not understanding people's conversations. By the end of the 3 or 4 hour studying, you actually learned something, and can decide confidently on your next moves.

For example, as a Vim user, I always wanted to learn Emacs, and god know how much time I have wasted in reading those fun editor war threads. Last month in one evening I finally installed it, finished the built-in tutorial in 2 hours. Then I installed Spacemacs which has been hot recently, I spent another 2 hours playing around, learning how to configure it. In 4 hours I gained a pretty solid idea about Emacs' setup, how to do common tasks, some useful packages, including the annoyingly frequently mentioned Org-mode (ok, it is indeed powerful, e.x., the calendar thing is pretty rad). Emacs is extensible for sure, but I know I don't have time to learn it now. I also know in the future I will start with default Emacs, not Spacemacs, if I renew my learning.

Anyway, I have this problem of waiting and lurking. IMO spending a few hours finishing one or two tutorials _today_ is a much better approach than weeks/months of evaluating through reading Reddit/HN posts. For example, even if you apply this method conservatively -- once every 15 days, you will accumulate _hands-on_ knowledge on more than 20 new technologies in a year.

<comment><USER3> Yeah, I was curious about React, spent the next two days of non stop just learning it, and haven't looked back. I use it for a lot of my web app projects now and it's been great.

I do feel annoyed by people who get caught up in the hype and say "we'll use react on our stack" when they don't even know what React is. I just point them to the facebook tutorial.

</comment></comment><comment><USER4> Learn how to manage your money so that you control your lifestyle, rather than letting it control you. Start simple by keeping track of your expenses, then develop a budget so that you aren't spending all of your money every month. Eventually you'll get to the point where you have the option to do what you enjoy in life rather than feeling like you're trapped on an endless treadmill.

If you want something to do right this minute, just start working with Mint or You Need a Budget (depending on how automated you want things).

<comment><USER5> Next, figure out what it means to "have enough to retire" (and why it has nothing really to do with age).

</comment></comment><comment><USER6> Speed-reading of nonfiction. It is possible to double or triple reading speed in a short time (days/weeks of intermittent practice).

Expansion of vocabulary and etymology by reading "old" books and papers: changes the "resolution", precision and context of thought.

Filtering of "content" into timeless classics (of which there are several centuries of reading) and likely timeless future classics. Much can be ignored. Social network analysis can cluster related material for inclusion, exclusion and comparative analysis of bias.

[http://www.forbes.com/sites/brettnelson/2012/06/04/do-you- re...](http://www.forbes.com/sites/brettnelson/2012/06/04/do-you-read-fast- enough-to-be-successful/)

</comment><comment><USER7> Learn how to sell. All of life is sales, from job interviews to convincing your boss to go with X solution instead of Y.

</comment><comment><USER8> Eat healthy. I know you _think_ you know this, everyone does. Yet, everyone eats like no tomorrow. People as young as 30yo get very sick because of a poor diet and a lack of self-discipline. You don't want to ruin half of your life for a bunch of donuts and hamburgers.

</comment><comment><USER9> I learnt that in a workplace, be replaceable. As ironic as it sounds, that will keep you the job (along with your other great qualities). For a developer, keep your code clean, organized, COMMENTED. Have documentation.

<comment><USER10> This is very true.

I recently left a position as a developer where I may have been considered irreplaceable by some. I had worked with some systems and websites for so long I became a fixture of this organization.

When opportunities and change were presented to me from higher-ups in my organization my direct supervisors took it upon themselves to do everything in their power to prevent it. It wasn't pretty, there was plenty of drama, guilt, and even some underhandedness. Needless to say I found a new position ASAP.

In my new position I'm replaceable. I believe that if I left today someone could take my place relatively easily. However, I'm much happier and it's refreshing to feel like I have mobility in my career again.

</comment></comment><comment><USER11> Always keep an open mind.

I had this problem that when knowing from others that things I have known are basically incorrect but wouldn't wholeheartedly accept it, given how factually their proof is. Whenever you need to correct yourself, analyze it and be ready to unlearn.

Always remember, there are dragons in earth and you haven't seen it. Yet.

</comment><comment><USER12> If a music in a club/concert feels like it's too loud, it probably is. Leave before you damage your hearing permanently.

<comment><USER13> Plan ahead, bring earplugs. There are some that don't affect frequency response too drastically, so they won't ruin the music. Etymotic High Fidelity earplugs aren't too expensive.

</comment></comment><comment><USER14> Proper sitting posture is something you can pick up in the next hour and its benefits can be felt for the rest of your life.

</comment><comment><USER15> Stay hungry, stay passionate, stay focused, be respectful. Life really is short. We all make mistakes. Forgive yourself, forgive other people. Work hard/smart enough so at the very least you aren't a burden on others, and at most, you can take care of others. We are all in this together. And learn how to code! :)

</comment><comment><USER16> Economics In One Lesson – Henry Hazlitt

Short, simple read that forever enables you to unspin the nonsense surrounding you.

<comment><USER6> Available at: [https://mises.org/sites/default/files/Economics%20in%20One%2...](https://mises.org/sites/default/files/Economics%20in%20One%20Lesson_2.pdf)

</comment></comment><comment><USER17> Learning another language(preferably a popular one) is always a good investment.

</comment><comment><USER18> I learned to let go, gave me the gift of less suffering.

</comment><comment><USER19> How to politely and firmly ask for what you want.

</comment><comment><USER20> Protect your hearing and your vision.

</comment><comment><USER21> Put your money into low cost index funds with dividends reinvested.

</comment><comment><USER22> Learn How to say NO.

<comment><USER23> And the importance of it. Saying NO often allows you to say YES when it matters.

</comment></comment><comment><USER24> I know enough to know that I don't know enough.</comment>


Ask HN: Can We Really Trust SELinux? - <AUTHOR>

I apologize now if you happen to be a maintainer for SELinux and you happen to be reading this and take offense by it.
I realize you can't really trust anyone and that three letter agencies have their hands in everything. I also know that there's been many posts about the Intel's random number generators and various other backdoors. I also don't have a solid understand of SELinux at the moment.  I do know of it and that it's very commonly used.
I do a double take when a see the incorporation of software that was originally developed by the NSA, does anyone else feel that this really is worth a further examination by independent sources?  Maybe it is, and maybe this is just a dumb question.  I'd just like some thoughts... <comment><USER2> _I also don 't have a solid understand of SELinux at the moment._

don't you think it might be best to fix that before you ask such an expansive question?

it's an _optional_ access control system. when enabled it _adds_ security to a system.

it's open source. it's also only one of a bunch of alternatives - people are also free to use apparmor, or even smack or tomoyo.

 _does anyone else feel that this really is worth a further examination by independent sources?_

no.

</comment><comment><USER3> Go read the source code and decide for yourself.

Even if we didn't "trust" SELinux it is irrelevant as SELinux is primarily used as a secondary security layer, with the primary being things like firewalls and internal software functionality.

The majority of the people who are concerned about SELinux literally don't understand what SELinux is or does. You couldn't understand SELinux and at the same time be concerned that it was a backdoor into the Linux OS.

And if you are technically literate enough to understand SELinux and are still concerned then go literally inspect the code yourself and find the backdoors.

</comment><comment><USER4> No, you can't trust it. Just as TOR requires special scrutiny because the US Navy provides something like 2/3 of its funding, SELinux requires special scrutiny because people who want to read your email provide it.

The NSA would not trust code provided to it for free by the Russians. You should not trust code provided to you by the NSA.

However, there's a pretty good chance that SELinux does what it says on the tin, and they're releasing it because:

1) It helps keep the Chinese out of some low-level secure systems 2) It does not keep the NSA out of anything they care about

But security is not just about code, it's about intention, politics, systems, side-effects and so on.

We're all living in a spy thriller now, where unseen people watch our every move online, and use vast machines to correlate our profiles with their ideas of risk. That's the live that you and I live.

Paranoia is normal.

</comment><comment><AUTHOR> I just started some Googling - and I see some posts like this that claim it's not [http://www.cyanogenmod.org/blog/this-week-in-cm- july-19-13](http://www.cyanogenmod.org/blog/this-week-in-cm-july-19-13)

My real question out there is for the Kernel and Linux gurus.

</comment><comment><USER5> It's open source though. Really, if you can't "trust" SELinux then you cant "trust" the entire open source community.</comment>


It's Never the Employee - <AUTHOR> http://boss.blogs.nytimes.com/2011/04/12/its-never-the-employee/

<comment><USER2> I manage a team, and I have to disagree with this article. It is often the employee. For example, I have a client that is going live tonight. Their environment consists of 14 Linux boxes that all need apps deployed, chroot jails setup, monitoring and deployment scripts written or modified, etc. I assigned it to one of my engineers weeks ago, but he works so slowly that most work isn't completed yet. Yesterday, the day before go live, I had to take it over and completed 90% of the work in a single long day.

It's not that he isn't trained... These are basic Linux engineer tasks. It's that he works so slowly, and has to ask so many questions "how did you want me to create the user accounts?" - "I don't know, with useradd, perhaps?" Then 2 weeks later, I say "the client is asking if they can login to their boxes now; are their user accounts created yet?" - "I'll get to that today, he replies."

You might think that I must have hired him, so it's my fault if he works too slowly and asks too many questions, or makes too many mistakes to be of much use. Unfortunately I didn't hire him.

The bottom line is that a lot of employees are just poor performers, and when someone that does good work at a high rate of speed can do it better themselves, in less time, they're going to do it.

<comment><USER3> He's in that job because someone hired him. Either he was hired way out of his depth (not your fault, but not his) or he was decent when hired but is so burnt out that he needs direction on simple tasks that he would otherwise be able to figure out on his own.

What the OP describes is the micromanagement death spiral. Manager controls employee at an insulting level of detail, sucking all autonomy out of the job, and infantilizing him. Employee becomes disengaged and shows symptoms of mild depression, including taking too long and needing too much assistance on simple tasks. This impels the manager to ratchet up the micromanagement even further. This is actually a mild, sub-clinical mental illness pattern-- anxiety/OCD traits for the manager, depressive behaviors for the employee. Whose fault is it? Both sides are to blame.

</comment></comment><comment><USER4> I've recently come across this even in the non-profit world. The organization has grown rapidly, and had a large degree of success, primarily due to the entrepreneurship of the director. He dives in, get things done, and has an amazing ability to keep track of details.

But now the org is big enough that this doesn't really work anymore. It's not one guy with three hats who needs clear direction, it's professionals in their fields doing what they know how to do. The website guy knows how to find a new host, the researcher how to plan a research project. Getting involved, especially when they _already_ have a manager, is beyond micro-management.

It's hard for those with an entrepreneurial spirit to switch roles, though. I completely understand the mentality that pushes you to get a grip on everything... but your employees _also_ want to have a grip on everything that they do.

</comment><comment><USER5> _Most of [the entrepreneurs] described themselves in similar terms: impatient, short on focus, easily frustrated, likely to jump in and solve a problem rather than count on the employee to do it._

I manage a team in my day job, and I still feel like this a lot of the time my team is delivering (even when they're doing a good job). I wonder what that says about me..?

<comment><USER6> It says you're probably deluded... :-)

Seriously, I thought the same at one time...until I did a 360. Turns out the team could have been performing a lot better, and that some people were really frustrated.

<comment><USER7> a 180?

a 360 would put you right back where you started.

<comment><USER8> 360 is the name for peer feedback. At least at yahoo, but might be different for the gp.

<comment><USER9> It's a standard term.

<http://en.wikipedia.org/wiki/360-degree_feedback>

</comment></comment></comment></comment></comment><comment><USER3> Here's the issue: employee productivity generally falls into four categories: multipliers, adders, subtracters, and dividers. Adders are the "vital force" of the company who "do the work" from a ground-floor perspective, multipliers are managers and tool-builders who make others _more_ productive. Subtracters are the harmlessly unproductive people who don't bother any one but produce less than their salary merits-- they should be mentored and turned into adders, if possible. Dividers are the vampires (severely incompetent programmers, bad managers) who make other people _less_ productive and destroy companies. Fire them.

A lot of these entrepreneurs were great at being adders and decided to start businesses in order to capture more of their value-added. The problem is that, once you're a manager, you cannot help but have major effects on other peoples' productivity and can therefore only be a multiplier or a divider. If you're a micromanager, you're going to end up a divider. These entrepreneurs/managers need to transition from an "adder" context to a "multiplier" context. Unfortunately, this transition is difficult and painful because it requires "letting go" of detailed control; you make more money and have power, but you're support staff as much as you're a "boss".

As much as I find his suggestions impractical for the rank-and-file average people, I think a lot of neophyte managers need to read Tim Ferris's _Four Hour Work Week_. Their goal should be to enable others' productivity and make themselves mostly unnecessary (as managers). This means they have to trust their subordinates to do good work. Most will, a few won't-- and when the latter happens, tough decisions need to be made (can he be trained? Or do we need to fire him?) But starting from the assumption of "I'm the only person who can do things right around here" is going to lead to failure: the best people leave, the middling people degrade-- when you manage people like children, that's what they become-- and the incompetents don't get found out (and trained or fired) because the managerial meddling makes it impossible to differentiate who is capable and who is not.

<comment><USER10> This poster, MichaelOChurch, is IMHO, a major divider. We are in the process of completely throwing out the last two years of his work as unusable.</comment></comment>


Show HN: A modern macOS markdown editor (work in progress) - <AUTHOR> https://github.com/lukakerr/twig <comment><USER3> This looks nice! Would you mind commenting a bit on implementation of the actual editor components? It looks like you're heavily using swift/xcode - <USER2> it entirely swift?

How does the editor itself work, does Xcode have components? Are you drawing them?

I've been curious to try and make GUIs for my editor of choice (vim and kakoune), so I'd love to hear your experience on the actual editor portion of your app. It visually looks nice!

</comment><comment><USER4> Looks good but you may want to consider changing the name as to not clash with [https://twig.symfony.com/](https://twig.symfony.com/)</comment>


Achieving 100k connections per second with Elixir - <AUTHOR> https://stressgrid.com/blog/100k_cps_with_elixir/ <comment><USER2> This article is quite good, especially part about bottleneck caused by single supervisor in ranch. However I have to say that title is a bit misleading because all of this has nothing to do with Elixir, it's all about Linux kernel and Erlang, cowboy and ranch are written in Erlang.

Having said that, I will add that I think it is good to have Elixir.

<comment><USER3> "is a bit misleading because all of this has nothing to do with Elixir" Stressgrid is written in elixir though, [https://gitlab.com/stressgrid/stressgrid](https://gitlab.com/stressgrid/stressgrid)

<comment><USER2> Point taken and I am already looking at stressgrid, "millions of users" is definitely a selling point to me. It is actually quite hard to generate enough and correct traffic to stress test large distributed systems.

</comment></comment></comment><comment><USER4> I'd love to see data on the average on-call incidents for an application written in language X (say Go) vs those written in Elixir.

Concretely, its it the case, for an application where Elixir/Erlang/Beam are a great choice, but also, another language would be fine, that the equivalent Elixir application results in less downtime/pages than the alternative. Anything from the perfect app to something with a ton of races/leaks.

Is this a fair question (maybe I'm presuming too much of BEAM/supervisor pattern, I zero experience with it)?

<comment><USER5> > I'd love to see data on the average on-call incidents

Don't have any hard data to compare but having been involved in debugging running Erlang systems. It's very nice having the ability to restart separate supervisors while the rest of the processes handle requests. Being able to do hot code loading to say fix bugs or add extra logging. And my all time favorite -- live tracing after connecting to a VM's remote shell. You can just pick any function, args, and process and say "trace these for a few seconds if a specific condition happens". None of those individually are earth shattering but taken together they are just so pleasant to use. I wouldn't enjoy going back to anything didn't those capabilities.

And yes, that restarting of sub-systems (supervision trees) happens automatically as well. There were a number of cases were it turned a potential "wake up 4am and fix this now, cause everything crashed" into a "meh, it's fine until I get to it next week" kind of a problem.

<comment><USER6> Is there a good write up of how to do that somewhere?

<comment><USER5> Which part or just in general ops with Erlang?

Overall I would say this book is a good start [https://www.erlang-in- anger.com/](https://www.erlang-in-anger.com/)

Supervisors are just a general pattern in Erlang. Any book will have something about it. I like this one: [https://learnyousomeerlang.com/supervisors](https://learnyousomeerlang.com/supervisors)

Restarting frequency and limits are just one of the parameters you specify. So don't need to do anything fancy or special there.

Hot code loading might not be as obvious: [http://erlang.org/doc/reference_manual/code_loading.html](http://erlang.org/doc/reference_manual/code_loading.html) but is essentially just compiling the module on the same VM version (or close by, no more than 2 version away), copying it to the server in the same path as the original. The original could be save to a backup file. The do `l(modulename)` to load it.

For tracing I recommend [http://ferd.github.io/recon/](http://ferd.github.io/recon/). Erlang in Anger book will also have example of tracing. [http://erlang.org/doc/man/dbg.html](http://erlang.org/doc/man/dbg.html) has some nice shortcuts too, but be careful using it in production is it doesn't have any overload protection. So if you accidentally trace all the messages on all the processes, you might crash your service :-)

<comment><USER6> Tracing is mainly what I was going for. I'm very familiar with the various patterns and the run time, but I haven't seen the tracing aspects referenced in as much detail.

Thanks!

</comment></comment></comment></comment></comment><comment><USER7> I can handle 120k connections per second with my custom made, highly optimized multiprocess C++ server. But the main problem is business logic. Just make 2 SQL queries to MySQL on each HTTP request and look at how it will degrade.

<comment><USER8> There are simple tricks to make those queries not kill performance. Here is a dumb proof-of-concept I made a few months ago: [https://github.com/MatthewSteel/carpool](https://github.com/MatthewSteel/carpool)

The general idea is combining queries from different HTTP requests into a single database query/transaction, amortising the (significant) per-query cost over those requests. For simple use-cases it doesn't add a whole lot of complexity, can reduce both load and latency significantly, and doesn't lose transactional guarantees.

Not 100k/sec writes on my laptop, mind you :-).

<comment><USER9> Since looking into modern concurrency concepts I've always thought such (in my opinion obvious) batching should be part of sophisticated ORM frameworks such as Rails' Active Records. Alas, their design decisions always seem to cater for making the dumb usages more performant (sometimes automagically, sometimes adding huge layers of cruft) than rewarding programmers who are willing to learn a few concepts by creating interfaces with strong contracts with better safety and performance.

E.g. please give me guidance on how to better structure my database model so that it doesn't effectively end up as a huge spaghetti heap of global variables. My personal horror: updating a single database field spurs 20 additional SQL queries creating several new rows in seemingly unrelated tables. Digging in I find this was due to an after_save hook in the database model which created an avalanche of other after_save/after_validation hooks to fire. The worst of it: Asking for how this has come to be I find out that each step of the way was an elegant solution to some code duplication in the controller, some forgotten edge case in the UI, some bug in the business logic. Basically ending up with extremely complex control flows is the default.

So of course, if your code has next to no isolation, batching up queries produces incalculable risks.

/rant, sorry.

<comment><USER8> I agree that with that kind of complexity (or with the belief that that kind of complexity is inevitable) it isn't a great idea. You lose isolation, and if you can't predict which rows will be touched you're hosed.

One mitigating factor, this sort of optimisation should be applied to _frequent_ queries more than _expensive_ queries. In some use-cases the former kind may be simple ("Is this user logged in?") even if the latter is not.

And on keeping that complexity down: the traditional story has been "normalise until you only need to update data in one place," but often requirements don't line up well to foreign-key constraints etc. The newer story can work, though: "Denormalise until you only have to update in one place, shunt the complexity to user code, and serialise writes." It's anathema to many, but it is becoming more common (usually in places that don't use RBDMSs though.)

</comment></comment></comment></comment><comment><USER10> > What this means, performance-wise, is that measuring requests per second > gets a lot more attention than connections per second. Usually, the latter > can be one or two orders of magnitude lower than the former.

does anyone know how does 100k connections compare with other servers?

<comment><USER11> It's probably easy to do with Java / C# and Go, they're using a 36 cores machine to achieve that with fast CPU, meaning that you need 3000conn/sec per core, very doable with recent frameworks.

<comment><USER12> Should be possible just fine with NodeJS, so long as it's clustered to run an instance per core.

The order of magnitude(s) differentiator for server performance really comes down to whether or not the architecture is blocking or non-blocking.

<comment><USER13> We run about 20k connections per second with nodejs on a 12 core machine. All node is doing is parsing cached JSON, modifies it and serve it back to the client. One server has an uptime of 560days without any memory/performance issues.

</comment></comment></comment></comment><comment><USER14> im a simple man. i see Elixir, i upvote.

that being said, this article was pretty informative. The bit about the proposed SO_REUSEPORT socket option was really interesting. Really fun to read about performance bottleneck detection and improvement.

edit: wow, downvoting for making a simple joke about liking elixir. Cool.

<comment><USER15> I've found that humor in comments on HN is usually not well received. Not sure why, just an observation.

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

Maybe we should add something about this to [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html).

</comment></comment></comment><comment><USER17> Id like to see memory consumption charts for this. It seems you miss this on all your posts. Not a criticism (and thank you for what you have done), its just something I (and others) would like to see, and if you are running the tests its just another metric to log :D

Also, any update on your previous article? [https://news.ycombinator.com/item?id=19094233](https://news.ycombinator.com/item?id=19094233)

<comment><USER18> We are preparing new benchmark test for major platforms. Among other suggestions it will include memory consumption.

</comment></comment><comment><USER19> ejabberd [0], XMPP server is written in erlang and powers chat in some of the biggest MMORPGs [1].

[0]: [https://github.com/processone/ejabberd](https://github.com/processone/ejabberd)

[1]: [https://xmpp.org/uses/gaming.html](https://xmpp.org/uses/gaming.html)

<comment><USER20> By used in MMORPGs you mean the chatting component, not the actual game-play network protocol.

<comment><USER21> That's exactly what they said.

</comment></comment></comment><comment><USER22> Is Elixir/Erlang considered superior to Go for writing high concurrency web servers?

<comment><USER23> Not na expert in any of the languages by any means, but Go and Erlanger/Elixir focus on different things:

\- Go wants to be performant at high concurrency scale

\- Erlang/Elixir wants to keep running at high concurrency scales, whatever the issues are in your application code. Performance comes second.

There's no clear cut answer to your question; I guess if you trust yourself to write servers that will hold a large number of connections while doing a lot of processing then Go has an advantage, otherwise you should probably trust the man-centuries behind the BEAM VM and follow the various blog posts/presentations explaining how you can fine-tune your machine to get to super large scales.

<comment><USER24> > Performance comes second.

I want to state that performance is too generalize here.

BEAM VM also have a goal of low latency which can be consider as performance. I'm not entirely sure if GO is aiming for that or not. I would never do any numerical stuff on BEAM though, it's very slow.

This article is a bit dated but is interesting between Go and Erlang:

[https://www.theerlangelist.com/article/reducing_maximum_late...](https://www.theerlangelist.com/article/reducing_maximum_latency)

<comment><USER23> Very true, thanks for the article. Go also wants to minimize GC duration by making it per-goroutine and some fancy algorithms to make it as short as possible, so I'd say it's part of it's goals too.

</comment></comment></comment></comment><comment><USER25> >Finally, the connections per second rate reaches 99k, with network latency and available CPU resources contributing to the next bottleneck.

Can someone educate me on what they might talking about here ? CPU is ~45% in their final graph. I don't know what network latency means in this context though. Roundtrip for a TCP handshake ? That seems unlikely.

<comment><USER26> The CPU graph peaks near 97% (teal line) at the time when connections-per- second are highest. Are you looking at the red? That's the version without the two patches.

<comment><USER25> oh yeah, you're right. I reversed the two in my head somehow.

</comment></comment></comment><comment><USER27> Even if connections per second can be a magnitude or two lower than requests per second this result is still quite off by today's alternative.

14 core machine comparing .net core with other top webservers: [https://www.ageofascent.com/2019/02/04/asp-net-core- saturati...](https://www.ageofascent.com/2019/02/04/asp-net-core- saturating-10gbe-at-7-million-requests-per-second/)

<comment> benwilson-512 A lot of folks are failing to read the article. They're intentionally holding each connection open for 1 whole second. This is a whole different ballgame than benchmarks where each connection is allowed to terminate as rapidly as it can send back a plain text response.

<comment><USER25> Good point. At first glance, holding the connection open for one second seemed a bit meaningless if they're touting connections/sec.

But since they are benchmarking Elixir, there is some amount of overhead involved in that framework's management of connections and requests. If I knew Erlang/Elixir, that would be a fascinating thing to explore.

Edit: I'm assuming the saturated CPU comes from Elixir and not the OS. It would be strange for 100k/sec to saturate the TCP stack with 36 cores.

</comment></comment></comment><comment><USER28> Would be helpful to know the hardware/instance size they used for these tests. TFA doesn't explicitly state it.

<comment><USER29> _We used Ubuntu 18.04 with the 4.15.0-1031-aws kernel, with sysctld overrides seen in our /etc/sysctl.d/10-dummy.conf. We used Erlang 21.2.6-1 on a 36-core c5.9xlarge instance._

 _To run this test, we used Stressgrid with twenty c5.xlarge generators._

<comment><USER30> omg.

100K/sec was achieved by yours truly 10 years ago on a contemporary xeon with nothing but nginx and python2.6 - gevent patched to not copy the stack, just switch it. (EDIT: and also a FIFO I/O scheduler)

Why does this require 36 cores today??

<comment><USER31> If you read the article, in the third or so paragraph.

> What this means, performance-wise, is that measuring requests per second > gets a lot more attention than connections per second. Usually, the latter > can be one or two orders of magnitude lower than the former. > Correspondingly, benchmarks use long-living connections to simulate multiple > requests from the same device.

<comment><USER30> Your point being? I was talking of single-request connections.

<comment><USER32> > I was talking of single-request connection.

Yes. Which is not what's being discussed here.

<comment><USER30> Yeah, what's being discussed here are connections without any i/o over them. Just an fd lingering somewhere in an epoll pool. Which obviuosly is even less taxing. So your point is?

<comment><USER33> ..that you are comparing apples and oranges, like he said

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> Opening a conection and closing after a while is not very good example os "scalability" ... the kernel does the opening part... reply

</comment><comment><USER35> Great, I can use this for that blogging app I've been meaning to write and sleep at night knowing I won't run out of connections.</comment>


How dire is Singapore's engineering ecosystem? - <AUTHOR> https://www.techinasia.com/talk/dire-singapores-engineering-ecosystem <comment><USER2> One of the most interesting things I noticed when living is Singapore last year was that a lot of engineers, especially computer programmers, fall under the IT category.

There was no sense "software engineer" or "systems administrator" or "solutions engineer", etc. not in the way how it is in the US.

They all just looked at me and said, "Oh, so you work in IT?"

Then we talked about banking.

<comment><USER3> I silently added those who said that to a certain blacklist. Been through enough of 'Me - I'm in Software not IT. Them- But it is IT since you work with computer right?' ping pong matches. Ignoramuses, really.

</comment></comment><comment><USER4> Good update on the Singaporean scene.

One measure I wish that was included was salaries; are the averages getting better vis-a-vis NYC or the Bay Area? Money talks, as they say.

<comment><USER5> This is important. I had several interviews with some Singaporean companies and salary was always the limiting factor. It was absolutely nowhere close to what similar positions would pay in major US cities, let alone New York or SF. Yet cost of living in Singapore is fairly high. While there are some tax advantages, you also have to weigh the risks of such a long-distance relocation and visa issues, as well as the significant cultural differences that you have to embrace to live functionally in Singapore. If anything, it ought to require a significant salary _premium_ to attract talented engineers to bear some of these risks to relocate to Singapore.

One of my specific experiences was with Standard Chartered, since they are one of the largest commercial users of Haskell and have a large Haskell engineering presence in Singapore. Boy, that was disappointing. Basically they think they can use the fact that you get to work with Haskell (even though it is line of business bank software and involves a poorly built custom Haskell compiler) and that it's located in Singapore as means to _reduce_ salary when they import a worker.

If it's that bad with a wealthy investment bank, it's hard to believe it's reached a healthy salary situation there across the engineering spectrum. But I am sure there are the occasional gems there which do offer fair wage for the risks being taken by employees.

<comment><USER6> >"that it's located in Singapore as means to reduce salary when they import a worker."

Having lived and worked there (and having a Singaporean father) this mentality does not surprise me at all. The national propaganda machine indoctrinates their citizens to believe it is the greatest most successful place in the world, and a curious kind of arrogance arises from it. This is not to say that other nations are not guilty of these practices, but I certainly notice it when I deal with Singaporeans

</comment></comment></comment><comment><USER7> An important point is the social conservatism of Singapore, which I suspect plays an important role in repelling a large number of people. I don't think it's a complete coincidence that startup hubs emerge in places that are relatively libertarian in regards to social values and open to counter culture.

Singapore sends a "not welcome here" message to many people: gays, hiv positive, marijuana consumers... As long as the country sticks to dictating citizens and residents how they should behave, including in private, they will have trouble attracting and growing an engineering class.

For a startup culture to emerge, you need to allow, and even welcome, experimentations off the beaten tracks. That's hardly compatible with social authoritarianism.

</comment><comment><USER8> I have entertained the thought of working in Singapore. It appeals living somewhere with bette climate, cheap to go out eating, big city etc. I live in Oslo, Norway and have a certain fascination for Singapore, it coincidentally having almost the same GDP and population as Norway, but a completely different society.

I am not sure if anyone here could comment on some of concerns with working in Singapore.

1) What is work-life balance like? From Norway I am used to employees respecting that people have a life outside of work, needs of children and family, 5 week vacation etc.

2) What is management and company organizations like, are they very hierarchical or flat in a software company? Do they micromanage or give you a lot of trust to solve problems the best way you see fit?

3) How does health care work for expats. You get that yourself or does the company pay?

How easy is it to live there without a car? Like how well does public transport work, or how cheap/hard/easy is it to get transport services for moving, installing furniture etc.

In Norway it always cost a lot to pay somebody to help you with anything, so you are always forced to do a lot of stuff yourself. It is not without reason that IKEA originates from Scandinavia. I had the impression that in Singapore it might be much cheaper and easier to pay people for various services.

<comment><USER9> Singapore currently has one of the highest standards of living in the world, so bargains are few.

It is nearly 100% ethnic Chinese, and Chinese prefer family-managed companies, so you would have some culture-shock.

There are some web and ISP companies there, so that's your best bet for a typical cosmopolitan workplace.

Condos are over $1 million each for residents, so housing is expensive.

Anyway, it sounds like you need to do more homework before moving there.

<comment><USER10> 74% is a lot less than 100%.

</comment></comment></comment><comment><USER11> My impression after doing a bunch of research (trying to get relocated there!): Singaporeans get into banking/lawyering instead. For some peculiar reason software development seems to be seen as a sort of janitorial task there. This doesn't seem super sustainable...

Google just announced that they are locating their SEA engineering hub in Singapore though - perhaps that will cause more of the young smart Singaporean people to aim for software careers.

</comment><comment><USER12> I want to know about management, which is one of the singular reasons I will never work for an Asian company. I worked for a Japanese company and the amount of negative reinforcement and risk averse behavior was maddening. It destroys the environment that gives birth to new ideas.

</comment><comment><USER13> It has always been quite easy to get software engineers from neighbouring low- wage countries for relatively low salaries. I guess that has affected the market, and that's why salaries of software engineers in Singapore are relatively low. When I was living in Singapore, I moved to another job for this reason, as I found it hard to make a decent living as a software engineer.

</comment><comment><USER14> Wages are shitty and management is habitually abusive. Anybody talented will run away quickly from that place.</comment>


To hell with bad browsers. - <AUTHOR> http://www.alistapart.com/articles/tohell/

<comment><USER2> WTF? That essay is from _FEBRUARY 16, 2001_ and useless for almost anything except a historical understanding.</comment>


Study Suggests Why Gut Instincts Work - <AUTHOR> http://news.yahoo.com/s/livescience/20090209/sc_livescience/studysuggestswhygutinstinctswork

<comment><AUTHOR> It seems that this works for complex decisions where there are many choices, or for small unimportant rescission. But there is also another article that says for normal decision (like buying a car, or renting a place), deliberate decision process is the best. [http://www.livescience.com/culture/080811-decision- making.ht...](http://www.livescience.com/culture/080811-decision-making.html)

.....

In all experiments, there was some evidence that conscious deliberation can lead to better choices and little evidence for superiority of choices made "unconsciously," the researchers said.

Faced with making decisions such as choosing a rental apartment or buying a car, most participants made choices predicted by their individual preferences for certain features (for example, safety, security, color or price), regardless of the mode of thinking employed.

Unconscious decision-making was thought to be best in certain situations because it is not limited by how much stuff can be shuffled through the mind — a limitation thought to hobble conscious thought. And so, scientists had said the benefits of unconscious thinking are greatest when a decision is complex, with multiple options and attributes.

"Our research suggests that unconscious thought is more susceptible to irrelevant factors, such as how recently information has been seen rather than how important it is," Newell said. "If conscious thinkers are given adequate time to encode material, or are allowed to consult material while they deliberate, their choices are at least as good as those made 'unconsciously.'"</comment>


VLC 1.1.0 1st release candidate, with VP8 and GPU decoding... - <AUTHOR> http://www.videolan.org/vlc/releases/1.1.0-RC.html

<comment><USER2> And let's not forget that this will have official 64bit support for OS X!! Hurrah!

<comment><USER2> Which also means our Handbrake 64bit encodes will finally work...

</comment></comment><comment><USER3> The VAAPI for GPU accelered video decoding on Linux is really interesting. I don't know enough about video to understand how low-level it is from the MPEG2 exemple on their web site: does it have to be a codec already supported by your video card as I understand, or can you code new ones with existing building blocks?

<comment><USER4> It needs to be a codec supported by the video card.

See [http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureV...](http://en.wikipedia.org/wiki/Nvidia_PureVideo#Table_of_PureVideo_.28HD.29_GPUs) for a list of Nvidia GPUs and which codecs they support.

<comment><USER3> Oh, so that's a disadvantage for VP8 against h264 on current cards. I wonder how well such a decoding can perform implemented on OpenCL/CUDA vs the pure "supported" version..

</comment></comment></comment><comment><USER5> [http://git.ffmpeg.org/?p=ffmpeg;a=commitdiff;h=59b0bd5709404...](http://git.ffmpeg.org/?p=ffmpeg;a=commitdiff;h=59b0bd570940461ce583daf2173c8d7695403874)

</comment><comment><USER6> Does anyone know the status of DSP/GPU acceleration on OS X? What's the minimum specs to support it (if it's supported at all)?

<comment><USER7> Assuming it's using the same API that Adobe use (which I believe is true. Actually looks like they plan this for VLC 1.2, not this release):

The new video acceleration API is only available in Mac OS X 10.6.3 or later and is limited to GPUs models such as NVIDIA GeForce 9400M, GeForce 320M or GeForce GT 330M. For more details you can look at Apple's technote. Here is a list of the Mac models currently supported:

        * MacBooks shipped after January 21st, 2009
        * Mac Minis shipped after March 3rd, 2009
        * MacBook Pros shipped after October 14th, 2008
        * iMacs which shipped after the first quarter of 2009

(Mac Pros are not supported as of today)

from <http://blog.kaourantin.net/?p=89>

<comment><USER8> Too bad, my old 12" ppc powerbook is still OK for my usage except for some video (actually I have to use an old realease of mplayer).

</comment></comment></comment><comment><USER9> I love how the screenshot has all the UI buttons in awkward, weird locations.</comment>


Mark Zuckerberg Is Rethinking Deepfakes - <AUTHOR> https://www.theatlantic.com/technology/archive/2019/06/zuckerberg-very-good-case-deepfakes-are-completely-different-from-misinformation/592681/ <comment><USER2> I really don't even like this conversation, make the platform better, stop worrying about the content, if someone lies in my house does it become my lie? Since everything is so far from black and white I think they shouldn't be so caught up in moderating truth, they just end up using the controls to censor valid ideas that they don't agree with.

If someone is full of shit it will work itself out eventually and people will stop following them.

<comment><USER3> >If someone is full of shit it will work itself out eventually

I think our current president is proof positive that this is not true.

How long is it supposed to take before it works itself out? How much damage can they do before they are found out?</comment></comment>


Rendering beautiful math images with Python - <AUTHOR> https://github.com/neozhaoliang/pywonderland <comment><USER2> The Alice in Wonderland image is probably copyrighted?

</comment><comment><USER3> This site consistently crash my safari tab. What is it?

<comment><USER4> I'm viewing on mobile with no problem. It's a bunch of beautiful renderings of various math concepts/functions.</comment></comment>


Do celebrities make good angel investors? - <AUTHOR> http://elapsedtime.blogspot.com/2011/11/celebrity-angels.html

<comment><USER2> This feels like us nerds have finally had our first mover advantage caught up to. The "in" crowd that likes "talking to people" and "having social skills" may have realized that their touch can be what separates a good execution from a great one.

There are bound to be a few burnouts and bad investments early on, but these celeb angels have the potential to be cool consultants in a world where our ability to create cool is quickly being commoditized.

Excited to see the trend continue! Nervous to see if we swing too far into the cool zone.</comment>


Help Underserved Kids Learn To Code - <AUTHOR> http://www.indiegogo.com/CodeNow Do YOU believe any kid can be the next Steve Jobs? We do! CodeNow is in the last day of our campaign to raise money to teach kids to code.<p>http://www.indiegogo.com/CodeNow <comment><USER2> It's hard to learn to code, it's hard to teach kids, it's noble to help underserved kids, but the combination resulting in "Do YOU believe any kid can be the next Steve Jobs?" seems a bit off. It's probably just brand positioning and their underlying effort is to teach "new literacy" in the same vein as other non-profits combat illiteracy. I hope the program becomes popular though, it'd be nice if students can overcome the barrier to entry with the initial learning curve and get a feeling of what they can be starting on. This can help them start to learn outside of the school structure, which would make them better learners. This program is also an amusing contrast to the other new thread on Python Core Mentorships: <http://news.ycombinator.com/item?id=4240638>

What are they coding in? What programs are they writing for? How does the program make sure the students continue to be interested after the program ends?</comment>


Is Sony Hack Really 'The Worst' in U.S. History, as CEO Claims? - <AUTHOR> http://www.npr.org/blogs/alltechconsidered/2014/12/23/372603286/is-sony-hack-really-the-worst-in-u-s-history-as-ceo-claims <comment><USER2> No I bet there are 3 Sony hacks in the top 5!!!!</comment>


UX Myths - <AUTHOR> http://www.uxbooth.com/resources/ux-myths/ <comment><USER2> Here's a UX Myth:

Disabling back-button keyboard shortcuts won't piss people off and cause them to leave your site.

(Using Safari 5.0 on OSX 10.6.4)

<comment><USER3> Same.

For all irked by this, try the root site: <http://uxmyths.com/>

The offending party is UXBooth, which adds nothing of value. Can someone edit the link to point to uxmyths.com instead?

</comment></comment><comment><USER4> > Myth #18: Flash is evil

Flash steals my focus and my keyboard shortcuts. Flash is evil.

<comment><USER5> And there's no 64 bit Linux version nor one for iPhone&iPad.

<comment><USER6> <http://ubuntuforums.org/showthread.php?t=290785> (nswrapper) and [http://www.redmondpie.com/how-to-install-flash-on-your- ipad-...](http://www.redmondpie.com/how-to-install-flash-on-your-ipad- complete-how-to-guide/) (frash)

(not that flash isn't evil...)

<comment><USER5> NB: although the browser is 64 bit, the Flash plugin is still 32 bit.

</comment></comment></comment></comment><comment><USER7> Myth #8 about stock-photos, and Myth #1 about people not reading on the web ... these are things I knew since forever.

But when working as a consultant, good luck trying to explain to customers that.

</comment><comment><USER8> I subconsciously read UX as Unix.. (oh thank you HP-UX for past years with ye ;)

</comment><comment><USER9> For some reason I really like this list format, and I am going to steal it.

</comment><comment><USER10> Myth: power and usability are opposites

All users want power and control. If the UI is too confusing for the user, they are powerless. If the UI is too crippled to do what the user needs to do, they are powerless. An intersection must be found, where power emerges from simplicity.

<comment> a-priori Power by itself is useless unless the user _feels_ powerful using the software. It is that feeling that drives the user to want to learn more. For them to get that feeling, the software has to be usable. It has to permit exploration (i.e, don't punish them for trying stuff) and give good, immediate feedback about what it is doing. The feedback allows them to build a mental model of the program.</comment></comment>


Mindstorms: Children, Computers, and Powerful Ideas (1980) [pdf] - <AUTHOR> http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20ed.pdf <comment><USER2> I like this bit: "In the LOGO environment new ideas are often acquired as a means of satisfying a personal need to do something one could not do before. In a traditional school setting, the beginning student encounters the notion of variable in little problems such as: 5 + X = 8. What is X? Few children see this as a personally relevant problem, and even fewer experience the method of solution as a source of power. They are right. In the context of, their lives, they can't do much with it. In the LOGO encounter, the situation is very much different. Here the child has a personal need: To make a spiral. In this context the idea of a variable is a source of personal power, power to do something desired but inaccessible without this idea. Of course, many children who encounter the not~ion of variable in a traditional setting do learn to use it effectively. But it seldom conveys a sense of "mathpower," not even to the mathematically best and brightest. And this is the point of greatest contrast between an encounter with the idea of variables in the traditional school and in the LOGO environment. In LOGO, the concept empowers the child, and the child experiences what it is like for mathematics to enable whole cultures to do what no one could do before."

<comment><USER3> This book is way up there on my list to read! And I really should, because I probably don't agree with everything, but I probably also know nothing.

Rant follows:

I went home from school every day seeing an application in my own projects for everything I learnt, from mathematics to history, because I could include it in my software projects, or table top related games, so the text reminded me of teenager's typical complaints regarding learning mathematics.

Kids say that they don't need mathematics because it has no application in the real world, but if kids were qualified to make that comment, then they should be out working from a very young age, to gain real world experience.

"5 + X = 8" represents abstract thought, which kids find challenging, and teenagers don't like to be challenged, whereas, when kids start to read and write, they love being challenged, and yet, they comfortably learn a tool which also represents abstract thought.

I think teenagers are just learning to be sufficiently lazy and pragmatic, but that they aren't qualified to know how to stretch their brains in the long term.

<comment><USER4> Teaching math in the absence of its applications is the problem. Algebra and calculus seem pointless when you don't know why you'd really use it beyond simple word problems on exams. Given an interesting reason and purpose to use math would probably improve learning a lot. Having a class called math is maybe not the best place to learn math, maybe they should learn it in physics instead.

</comment></comment></comment><comment><USER5> My biggest LEGO discoveries as a child came about due to limitations:

My mom would take me to visit her parents, which (once the sun went down and I couldn't run around outside) was very boring. I didn't have my huge lego collection from home, but they did have a small collection from when their kids were younger.

No hinges, no spinners, no windows - basically nothing special, just bricks and long-thin-flat pieces. (I don't know the terms).

boring, boring, boring...until I discovered that you could take a thin piece and connect one dot from above and below to other pieces( "-=" ), and that piece was now free to swivel. If the two pieces you used were also long thin pieces, you could connect the other end to a single dot of a fourth piece, and you now had a double joint. ( "-=-" )

I built many "robots" top play with like this, that were basically 90 degrees from normal (the "top" of the legos would be the "front" of the robot.

I played with Legos for years in a variety of ways, but this was one of the few where I "discovered" something. Other times I learned to alter direction of the build by containing a length of joints inside a "tunnel" of bricks, so that the plane of the joints would be at 90 degrees to the plane of the bricks (the "top" of the bricks could be the "top" of the figure, while the "top" of the joints would be the "front" of the figure, or vice-versa). This allowed me to build humanoid figures with knees that faced forward but arms that bent outward or over the "chest", or scorpion-like figures with claws that closed side-to-side but legs that extended out to the sides and moved up-down.

Later I expanded the collection with more special pieces that allowed me to put such joints on hinges or spinners, but I honestly believe I'd never have gotten there if I hadn't been bored with no other options. I'm POSITIVE others knew these tricks, but I never encountered it in any of their materials and I didn't have friends to tell me.

I was excited about mindstorms, but as they became more advanced when I was just out of college and busy learning how to handle a marriage and a career I never got into them, and I wonder if they encourage their own sort of discovery like that, or if it's too specific.

<comment><USER6> You know this is the book about pedagogy and computing by Seymour Papert, and not the product by LEGO, right?

<comment><USER7> Seems relevant.

The analogy would be following the Lego set instructions vs. self-directed free play with a few limited pieces is like traditional math class vs. learning math via playing with the Logo turtle.

Also the "Lego Mindstorms" product was a collaborative effort with the MIT media lab, and is named after Papert's book.

<comment><USER8> However Lego analogy breaks down when we progress to stage II (image making) and III (theorizing).

</comment></comment></comment></comment><comment><USER9> Even as someone who was exposed to LOGO as a child and didn't like it I found this book really excellent when I read it a couple of decades go.

A great quote from the foreword: "Slowly I began to formulate what I still consider the fundamental fact about learning: Anything is easy if you can assimilate it to your collection of models. If you can't, anything can be painfully difficult."

</comment><comment><USER10> I can only skim a nearly 300 page book but I get the impression that the basic point is that, done right, computers can be an amazing tool to allow a child's natural impulses to play and exploration to grow and flourish.

Seems reasonable enough. So what went wrong to the point that today, primary advice to parents wanting to encourage growth in their kids is to remove the computer completely?

This also is connected in my mind to the period where learning to program was connected to basic literacy but now just avoiding the computer until one is old enough to handle it is closer to a road to basic literacy.

Is there a different way we can take this.

<comment><USER11> What went wrong is that these systems were designed by extremely smart CS PhDs who massively overestimated the abilities of the average human.

Papert, Kay, etc, are all world-class smart, capable, and inventive people. They designed these systems in their own image, probably with a more or less conscious desire to build something they would have wanted in their own childhoods.

An average human with average abilities doesn't have the cognitive horsepower or the creativity to get much from these systems. They can play with them in a fairly superficial way, but only a relatively small proportion - I'd guess less than 25% - will get excited by the ability to imagine and build their own systems.

Without that excitement there's no motivation, and without the motivation any kind of programming becomes an exercise in pointlessness.

So - you can move a pointer around and draw lines? By typing words? Cute. But so what? Why should I care?

The real challenge - much harder than designing computer software - is working out political and educational strategies that reach the (nominal) 75% who don't find that kind of problem solving particularly interesting.

I've literally just been reading Kay's mini-book on the history of Smalltalk. Here's a quote on literacy:

"Literacy, for example, is being able to fluently read and follow the 50 page argument in Paine's Common Sense and being able (and happy) to fluently write a critique or defense of it. Another kind of 20th century literacy is being able to hear about a new fatal contagious incurable disease and instantly know that a disastrous exponential relationship holds and early action is of the highest priority. Another kind of literacy would take citizens to their personal computers where they can fluently and without pain build a systems simulation of the disease to use as a comparison against further information."

This sounds perfect, but I think the experience of almost everyone who has been to school knows that a fair proportion of their age cohort not only can't think at this level, but has absolutely no interest in being able to.

You might - possibly - be able to do something about this with a historically unique social engineering program supported by a media campaign that made abstract skills appear desirable and heroic. (A version of this happened during the Cold War, kind of.) But even then, it's not obvious from history just how far you could take that.

Either way, technology on its own is never going to be a solution. It may support policy, but it's never going to be powerful enough to enlighten the surrounding culture.

What actually happens is that economic and political pressures steer technology towards offering simple - often poor, but understandable - solutions to common problems. Worse wins out over better, and over time the possibilities shrink instead of expanding.

<comment><USER12> I sense this won't be a popular answer, but it aligns with my experience teaching both english and math to undergraduates, as well as my personal observation.

Disheartening but true.

<comment><USER7> Have you tried teaching 5 year olds? By the time they reach college, the curiosity has been thoroughly stomped out of many people.

</comment></comment></comment></comment><comment><USER13> One thing I liked from Mindstorms was the concept of Microworlds. (Both names have since been turned into product names, but seemingly unrelated to the actual ideas.)

Turtle graphics is one Microworld, specifically based around geometry. Hence its relatively novel use of angles and lengths instead of coordinates.

Each world gives people something to explore. That they do it programmatically is interesting, and allows for different kinds of exploration, but it's the world they are exploring, not the code.

Mindstorms hints at the idea that there should be many such microworlds. Maybe they all use Logo, or maybe not.

What didn't happen is all those other Microworlds. But some have happened: Processing ([https://processing.org/](https://processing.org/)) is one example. And I think it's notable that "Processing", the graphical approach, is treated separately from any particular language implementation; Processing.js is another valid implementation of the same microworld.

But there could be many more! And I think it's much more interesting than yet another puzzle-based block programming language to teach coding.

1\. Choose Your Own Adventure approaches to nonlinear fiction, which starts without any programming but easily opens up into all sorts of other complexity. ([http://twinery.org/](http://twinery.org/) is an example implementation)

2\. Music generation. (e.g., [http://foxdot.org/](http://foxdot.org/))

3\. Lots of procedural generation, really. Something as simple as cartoon face generation could be interesting. But starting with primitives (like in [https://happycoding.io/examples/processing/creating- variable...](https://happycoding.io/examples/processing/creating- variables/random-face)) hides the fun and interesting part behind graphics coding.

4\. Eliza, in her original implementation, is like a very simple programming language for interaction.

5\. Quiz generation. Writing a program that creates a math worksheet seems dumb, but I think a lot of kids would find it both interesting and satisfying.

6\. Agent simulation (ala [https://ccl.northwestern.edu/netlogo/docs/](https://ccl.northwestern.edu/netlogo/docs/))

Of course all these things exist, but they often aren't matched up with an appropriate introduction and a humane programming environment designed to actually work for children. Working towards that – and doing so with a love not just for programming, but for the concrete (if simulated) worlds you are opening up through programming – could lead to something much more interesting than a lot of current technology-based education.

<comment><USER14> Explorable microworld is an interesting way to think about specialized Language+IDE combos.

For example I like LiveCodeLab[1] a lot, and it's also a fun tool to intro total beginners to the pleasure of programming ("write and something happens"). It has very few primitives, but you can build some very interesting live visuals, and the language is build on interesting choices driven by its live nature [2]

Another great combined tool is OpenSCAD [3]. It's really a computational tool to explore solid, printable objects, and thus seems to fit the microworld category.

A weird, niche one is Context Free, that didn't grow like Processing but has it's own advantages and particularity (like how randomness is managed) [4]

[1] [https://livecodelab.net/](https://livecodelab.net/) [2] [https://rumblesan.com/static/LiveCodeLang- Farm2014.pdf](https://rumblesan.com/static/LiveCodeLang-Farm2014.pdf) [3] [https://www.openscad.org/](https://www.openscad.org/) [4] [https://www.contextfreeart.org/](https://www.contextfreeart.org/)</comment></comment>