skysight-inc/HackerNews huggingface dataset:
The author mostly argues that Python does not work the way they are used to. While I can understand that Python being different may pose a difficulty to someone who is used to JavaScript, C, C++, Java, and so on, there are many different languages that one can learn from.

To me, a foundational language allows the learner to understand how computers work, and how calculations can be performed. In this light, SICP has proved that LISP can be a foundational language.

I strongly suspect the author's notion of "foundational" is very different than mine, and that they see programming as something very different than I do. Without knowing how the author sees it, I miss the point of the article.
Brazilian authorities suspend WhatsApp payments
The Daily Spreadsheet That Killed My Coke Zero Addiction
> you don't have to explain type systems

Is that a feature though? Beginning programmers are still going to hit type errors, and having things be explicit and static I think would help, IMO.
Yeah. What I want is the inverse. Get me some AI that predicts which lines of code I write that are likely to cause bugs. Kinda like a linter meets a fuzzer.
One of the early nationally available cable tv channels was TBS. They always had ads. Besides the original purpose of cable was to transmit network TV in remote areas.
C should be the only foundational language.

People should first learn to manage their memory, ensure their typing and the boundaries of their variable allocations before having someone do that for them.

It's a little bit like driving: in the US you can get a driver's license without ever touching a stick shift car, so you have this huge driver population than can only drive automatics.

Which is fine for the general populace, but not if you want to be a race car driver, a machine operator or a mechanic, which is where the computer science student would fall into the analogy.
React state management and side-effects with Redux and RxJS
Nov 3 will decide a lot of stuff.

I would guess if Trump returns and the Dems take the House and the Senate, expect all nuance and smartness to go out the window.
To clarify, all browsers CAN handle the mailto link as long as the user configures it to open the correct email client. That’s key because there’s many oblivious users who don’t even know about this setting (we know from the number of support requests we get from users angry that the contact link they created on their websites “don’t work”!). :)

Because of the prevalence of webmail like gmail (most of our users are on gmail) there’s many users who aren’t aware that it needs to be configured to open the said webmail page, so the mailto links does nothing. A “Contact me” or “contact support” mailto link won’t open anything, or it will open the default mail client like Mac Mail on Mac....On Windows in the past it would open outlook express lol. :)
Accessibility for people with hexagonal monitors.
Check out standuppro.io to learn more
I've TA'd several intro courses, some involving Python and some don't, and in my experience these issues are not as big as the author makes them out to be, and especially the REPL and the ability to explore are really nice benefits of Python for absolute beginners.

There's many ways of structuring an introduction, so
I'll not say "You have to use Python", but I strongly disagree with "You should not teach with Python". IMHO the best approaches show the students multiple languages, and Python is a fine pick as the first of those. In contrast, Java in contrast brings a lot of overheads that a beginner doesn't need, and thus I'd recommend teaching it later if at all.
macOS has a lot of baked in emacs keybindings that work almost universally in text fields.

Control-A: Move to the beginning of the line or paragraph.

Control-E: Move to the end of a line or paragraph.

Control-F: Move one character forward.

Control-B: Move one character backward.

Control-L: Center the cursor or selection in the visible area.

Control-P: Move up one line.

Control-N: Move down one line.

Control-O: Insert a new line after the insertion point.

Control-T: Swap the character behind the insertion point with the character in front of the insertion point.
I'm trying to figure out whether or not I keep using DBus and leverage Avahi or not, but that's the general idea - either Caddy or Traefik.
there are many applications that Microsoft have included with windows that are very well thought out.

Windows Media Center Edition (MCE) was just an app on top of XP/Vista/7 (though unchanged in 7, and then killed), but was is still so loved by those who use it that they figured out how to extract it from Win7 and install it on Win10.

It was honestly the best media center experience I've ever used on a PC (Tivo might be better in hardware, but never had one and it puts ever other setup box from a cable company to shame). It's simply a shame that it wasn't used by enough users that microsoft stopped developing it and effectively killed it.
Genuine question time: assuming that someone has created the "framework/library that everyone needs"[1], at what price points should that person be setting their sponsorship tiers, along the lines that you suggest, on GHSponsors? Perhaps something like:

- Thanks/gratitude: $5

- Prioritise issues raised by sponsors: $25

- Sponsor influence/vote on project roadmap: $300

- 1hr/month video-call/consult with sponsor's company/team[2]: $600

- Add sponsor's logo on the project's home page[2] (say for 1 year) - in a fun and engaging way, of course: $1000

[1] - I've done this, except for the bit where I convince everyone that they really, really need to use the library.

[2] - I've not yet seen a way on GHSponsors to limit the number of people who can sponsor a given tier. Which puts me off offering this sort of tier as over-subscription could quickly steal all my time and ruin my project's home page.
Not sure how this post reached the HN front page since the arguments are extremely weak. This is like a complain about things a Java programmer don't like about Python or alike. Disclaimer: I don't use Python.
> You're almost there; the point is not

I take issue with this statement. It's essentially a variant of the No True Scotsman. I constantly see the OP's statement asserted, in various contexts, by various parties, in the same way he worded it.

I don't doubt that you've seen a more refined version of it. "People" are a fairly heterogeneous bunch, and when it comes to race/gender stuff I constantly see nuanced (whether or not agreeable) arguments filter out from academic circles into the general public and to activists, where they're distorted or simplified.

You're absolutely welcome to raise a more refined version of the argument and point out where it's more valid - I think that's a healthy contribution to any discussion. But you don't get to unilaterally assert that the version of the argument that is constantly being put forward ... isn't being put forward, or isn't "the real" argument.
Why do people still talk about Python deprecated version..? For me it doesn't make any sense to criticize Python based on Python 2.7 when this version should NOT be used anymore.

Still, Python is sufficiently known, used and the syntax is easily accessible to claim to be a useful programming language for novices to learn and have an introduction to CS.
Sweets are heavily regulated?
I think it's the novelty of it. Friends with kids report losing their minds after sitting through the nth replay of a Disney movie. To the kid, everything in it is new and they enjoy seeing new details each time. The adult can guess their way through any new Disney movie because they all stick close to a formula anyone with a passing interest in writing can recite.

I did the same rewatching all the Star Treks, Stargates, and other '90s sci-fi TV several times. Now it's kind of...dull. It's all too familiar. Now I'm more impressed with newer scifi that tries to evolve the genre without being too different. Like: The Expanse, Farscape, Dark Matter, Another Life.
Stat blocks aren't protected by copyright. Most game mechanics aren't patentable in the first place and Diablo patents would have expired.

Names fall under trademark law and even names that they've bothered to apply for (let alone all those rejected for various reasons) aren't difficult to change.

Story is a different question. The core story is incredible thin and derivative. Creating a new story wouldn't be very hard. That said, most players today would probably be much more interested in multiplayer anyway.
Nothing in this article is foundational, just stuff the author doesn't like or understand (such as the differences between arrays and lists) and it all happened to be superficial as hell. There are valid reasons to not teach python as a foundational language (and valid reasons for it as a good intro language), but none of them are in this article. As another commenter put it, it reads more like "why isn't Python C?" and still somehow misses the important teaching aspects of the C family of languages.
apologies but that sounds like a poor course you guys picked. types should not be a concern for a beginner. i started programming with BASIC and even though it had rudimentary types it wasn't until later that i really learned about types.

worrying about types means you already knew about them.
I interpreted your statement as "humans are the way they are face it. So they will always give only, when they have to."

Which I don't believe is true. And you apparently neither. So lets call it a misunderstanding.

And yes, I also do not believe, that anyone changes by moral judgment. I certainly did not became a free software activist by reading RMS moral codex. I became it, by listening to inspiring people in my university. By the local linux groups who spend their free time, to help other people. By reading about and using free software. To the point, where I thought, yes, this really makes sense. The world would be such a better place if open source would be the default. Not just for software, but also hardware. Medicine. Knowledge in general.

Utopian? Maybe, but still worth working towards it. And even if the default of the industry will be IP-restricted forever - what has been achieved so far, is very useful already today.
To my mind, it boils down to whether you think static types and memory management are foundational skills that a programmer is well served to learn early and build upon, or merely cognitive overhead that distract from what the programmer is trying to do. If the former, then obviously a language that ignores those is detrimental to long term development. If the latter, then clearly you want something like Python as your introductory language. I think either stance is defensible.

Actually, I wonder if the right conclusion isn't one side or the other, but that separate tracks for systems programming vs web dev (or whatever dichotomy you prefer) should be introduced earlier on in education, maybe separate specializations within a CS degree.
Not a journalist, but an author. I would not be surprised if he'd softballed this piece to get it into FA, as the tone of the book (judging solely by its cover) appears darker[1]. (there's also a question of access, and he has CIA endorsement blurbs...)

I've seen claims on Runet (from, I'm guessing, ER voters) that Yeltsin had been a "Washington Consensus" puppet. On the other hand, https://en.wikipedia.org/wiki/Boris_Yeltsin_1996_presidentia... minimises the Americans' role. We might hope to know the truth sometime before 2096. (there are JFK files which are still classified)

[1] then again, election finessing is actually mild compared with Operation Condor, which only came out around the turn of the century.
What do you mean by that it is a "list"? It's certainly not a linked list.
Cameroon is adopting telemedicine amid the Covid-19 pandemic
I think you might have missed it, I was simply calling facebook a bunch of criminals.
Last year, I made the Splash of Code series of short books as a way to teach JavaScript to new programmers through generative art. It's not very popular, but the people who try it seem to like it.

https://splashofcode.com
Gotcha. I'm a commercial Qt developer and starting to think about Python being a first-class language in my ecosystem. But I've learned that the more robust binding, PyQt, is a GPL/Commercial offering separate from the Qt licensing.

Qt for Python is the "offical Qt" binding but it's not as robust or even supported on some platforms like embedded. It's a bit frustrating.

Still, nice work!
This is very exciting!

One subtle thing which I noticed is the distinction between class patterns and name patterns (bindings). In particular, it is possibly confusing that the code `case Point:` matches anything and binds it to the value Point, whereas `case Point():` checks if the thing is an instance of Point and doesn’t bind anything.
Aaronson was interviewed for this story and gave has (positive) opinion about the story specifically to Alexander.
The energy required to liquefy air is probably too large. Say we have 400pm CO2 in air - that's ~630mg of CO2 per kilogram of air.

Given that the specific heat of air sits at around 1kJ/kg[0], you'd have to spend over 125kJ of heat energy to get just one gram of CO2 - that's 35Wh.

If you used wind power(14g CO2/kWh) and a heat pump with a coefficient of performance of 1 (not sure how possible at these gradients) you'd "emit" 0.5g of CO2 in the process.

[0] https://www.ohio.edu/mechanical/thermo/property_tables/air/a...
It would be deeply useless. It produces plausible wrong answers. Those are the worst kind of wrong answers, because they are red herrings with statistical near certainty, and yet convincing enough to generate bias.
While I share plenty of the annoyances this author has with Python, and I’m sympathetic to the argument, they never quite manage to spell out why Python’s choices are somehow worse than any other language other than that Python does things differently.

Why is having constant variables so important when learning? Why are curly braces important? The author never says.

Meanwhile, while I agree Python’s strings are overcomplex and often frustrating, the weird digression about how “most languages” have char and char[] and String is a fancy wrapper, is actually just incorrect at this point and reveals just how narrow the author’s experience actually is.

In the meantime, my kid learned to program using Python and then went on to do very well picking up Java In subsequent classes. In my opinion, she’s far better off for being exposed to two very different languages early on rather than coming up thinking everything needs to look like C to be a “real” language.
Or maybe it shows how out of touch the old design was (the fact that it had been there for half a century and even folks on HN had never seen it...).
Those from Locke, Hume, Kant, Habermas, among others.
The hardest part of doing good OOP is that the most popular, nominally-OOP language(s) are very bad. Yes, I'm talking about Java. Modern PHP, too.

If I may piggyback off your comment, I'll also throw my two cents in that mostly apply to Java:

1. A class may only ever mutate itself. Never anyone else. So if your Foo class has a method that accepts a Bar as input, you must NOT change that Bar. You may return a new instance of a Bar with different values.

2. Don't use class inheritance unless you are forced to at gunpoint or by a framework you're forced to use.

3. True OOP classes will probably have a deep nesting of dependencies. I.e, a Foo class has a Bar field, which has a Baz field, etc. However, those dependencies should be VERTICAL. Do NOT keep references to other classes that your class does not "own". This creates cyclical dependencies and tight coupling. Most likely somebody else should own both objects at a higher level.

4. If your class has a method that doesn't depend on the object's current state, make it static. (This, with the other points, also hints that the method should not have side effects. Static methods should be pure functions)

5. Each package probably has one public class that actually does stuff. This is your domain model and represents a "workflow" (e.g., managing a user account: create, change profile picture, delete, etc). Any other public types from the package should only be plain old data used by the methods of your domain model.

All that said, I still don't think that OOP is actually the best way to solve most problems.
Simple: don't. Do the simplest possibly thing that can work. Only code for today's requirements. You can't predict the future. Creating extension points without a past pattern of data of how the system is being extended is just guesswork, not engineering.

Once you have a established a pattern of how the system is regularly extended, then you can use that to make predictions about the future. Keeping your codebase well-tested, small, and light will do far more to help you respond to change than guessing.
Python works for a large swath of issues, and is much easier to learn. That's the point of it. With Python, you can more easily move from a purely syntactical focus to actually programming.

If you need to go into lower level programming languages in the future, that's cool. You can go deeper into stuff like variable types, constant variables, block scope, garbage collection.. whatever you want. You already have a grasp what a string is, how to use a for loop, etc.

In reading the article, it seems like the author is saying essentially "Programming is supposed to be hard. Python makes it easier. So don't teach Python." But shouldn't we be teaching people the easy stuff first? That way they can get, y'know, programming?

The version split is about the only reasonable argument. And how you teach that is the following: Python 2 and Python 3 are different languages for all intents and purposes. Use Python 3.

But what do I know; I'm just a self-taught coder.
Gotta get them clicks, mang. Pushing the Cause Célèbre at the time is what does that.
The author seems to make a circular argument: foundational languages look like C++/Java, Python doesn't look like C++/Java, ergo Python is not a foundational language.

There are no foundational languages, what is foundational is CS theory itself. C++ and Java are just part of the ALGOL tradition, which syntactically relies on a bunch of arbitrary choices (curly braces vs indentation is an arbitrary symbolic choice and any preference is personal and subjective), and furthermore were highly influenced by 70s computer architecture that doesn't really exist anymore. In other words: just a bunch of legacy choices.

Python is the best general-purpose language there is at the moment, because of its popularity, ubiquity, actual use in a wide diversity of domains and availability of libraries for almost anything you can think of. Furthermore, the syntax is simple enough for one to be able to keep it all in one's head and not having to constantly refer to documentation. If you learn Python today, it will likely be useful to you for the rest of your life in a variety of situations.

Getting used to curly braces in ALGOL-like languages is a minor intellectual challenge compared to what awaits someone taking a Computer Science or Engineering degree.
Has Facebook, and Mark Zuckerberg in particular, ever really made a secret of being a ruthless anti-competitive asshole? I always thought that was his one redeeming trait - the fact that he was honest about it. True, he occasionally claimed in interviews to be about "bringing people together", but I always felt he went out of his way to make sure everyone listening knew he didn't mean it.
I got intro'd with C. Enjoyed learning the low level concepts but I aint managing my own memory anytime soon unless I need that heap blazing fast.

Python was my vehicle to prototyping and implementing educative programs, I can hardly recommend anything else for a beginner. And arguments like other langs call this X are poor IMO.

The world of programming languages isn't 1 dimensional and no one should honor this notion of implied consistency that pleases your (and a student's) limited understanding of this ecosystem. I'd rather have students question and not critique such choices, and form their own educated opinions on what language fits them for what task.
Ask HN: What's better for users, StartupName.[app, ] or getStartupName.com
There's now an inordinately long list of TLDs but as PG pontificated it's .com or bust[1]. Only problem, there's less chance of a clean .com now more than ever.

Question here is do users (including non-techies) grok the new wave of TLDs (for example .app or .tech, less so .io & .co) and if so, what companies are thriving without the .com conformity?

Conversely what's the sentiment of [get,join,...]StartupName.com

The context of the question aims at domain naming for a SaaS service with non-techie users but applies more broadly.

1. http://www.paulgraham.com/name.html
Young inventor makes low-cost ventilator out of scrap
Exactly this. The force used should always match the situation. Deadly force should not be used ever on an unarmed individual. Police should have to face trial if a prosecutor believes a case can be made that the force used was inappropriate - no special protections.
Diary of Dreams (one can start from album https://en.wikipedia.org/wiki/One_of_18_Angels)
What you describe is CPM math (com.org). I taught with this material for a few years right before common core came out.
> however in practice I find that it is much less legible and more kludgy to work with.

Can just stop reading here. I have seen many say this only the first few hours of trying Python, and that's it. So, this "kludgy to work with" indicates almost zero actual work with the language.
Do you care to expand or just quote a rule without context? Government power is always amplified because it has coercive power. It’s not just about Trump, it’s about any government power.
"I'm just adding numbers, why do I need 'public static void main'?"
Boring Benefits of Lisp
I bring it up because if you meant to point to an iron-clad use of "master" without slave connotations, then you in fact actually brought up an equally (or more?) controversial example and therefore I don't think it helps the case. No one who is skeptical of "master branch" will be swayed by "master bedroom".
> Also the Windows SDK was always available for free, just you needed to get a C compiler yourself.

Not quite _always_... For the first few versions of Windows, the SDK was a fairly expensive separate product you had to buy in addition to the compilers itself. I'm pretty sure it was MS C/C++ 7 that was first available bundled with the SDK. IIRC, the product was $700-800 (in 1990 money), took a couple feet of shelf space, and shipped with seven or eight thousand pages of documentation.

Visual C++ (really MS C/C++ _8_) democratized it a bunch by shipping with the libraries/tools needed to develop for Windows and offering a basic product at a <$200 price point. That was also the first version of Microsoft C that shipped with a Windows-based debugging UI.

The early 90's also saw the introduction of MSDN - the Microsoft Developer Network. At the time, this was a subscription CD based library of essentially all of Microsoft's developer documentation (as well as a few tools, etc.) It was essential... and to put the timeline in perspective, Microsoft sold a version of MSDN that was bundled with a CD-ROM drive, since they were as uncommon as they were at the time. They quickly added a premium version of MSDN that got you the full tooling also.

Ten or fifteen years after all that, the full version of Visual Studio was a $10k/seat proposition. Between that and all of the API churn, they lost sight of their original goal of staying developer friendly, and it was to their deteriment. (Particularly given the concurrent ascendence of the Web, OS X, Mobile, Linux, and the like.)