skysight-inc/HackerNews huggingface dataset:
C/C++ is not a language. I am also someone who has use C and C++ for years as part of my work and have mostly moved on to TypeScript because there isn’t much reason to use C or C++ anymore unless you are in one of those niches where you need to still program at that level.

Most software problems are not about solving them faster, it’s about combining existing components in new ways and figuring out to orchestrate it all.

I don’t care about copy elision, heap fragmentation, perfect forwarding, when my performance is being lost in the communication between services. What I need is a better architecture and more scaling, not concerning myself with if this loop is being vectorized, or that object is being moved instead of copied, and other minutia which inevitably ends up wasting your time when writing C++.
This is the silliest thing I see paroted. Anonymous functions are there for one offs. Sometimes a one-off is two lines. Breaking it out into a separate function is ridiculous.

You end up seeing functions declared within functions so that people can work around this limitation and it is grotesque.
A lambda also behaves this way; it’s how it captures the closure scope.
I think there can exist a happy middleground between constant churn and what Go currently provides. Some nice quality of life features like pattern matching and list comprehensions would go a long way towards making it a more pleasant language, without making developers feel like they're in a constant struggle to stay current.
Replacing an old unholy mess with a new unholy mess is usually a bad plan. It's called the Second System Effect.
I've started to use Python type hints, but even with typing I like to label my names things that describe local concerns (types are often more general than what you mean to say), and sometimes I'll deliberately shorten the names to make a Python lambda fit where in another language with bracketing I'd just take an extra 1-2 lines and format the line differently.

I've written snippets or data structures one way or another as I'm sure many have, and in my experience the results have been mixed. This and the fact that reduce has no bearing on your app architecture, I do see this as arguing over a small and vague gain or loss.
Sure they would. A few days living in the real world and they would be right back to their instictual, institutionalized reinforced behavior of all that matters to them is them. Never going to change without culture "leaders" being killed, never has before. Put those fools on the streets for a few hours and they would do anything for 50k.
On a personal level, I have the same problems with using Python.

I've become enamored with package management in Go — not perfect yet but efficient, simple, to the point. The backwards compatibility enforced at the version level is also great — you often find Go code years old that keeps running just fine. I like things that you set up once and may just forget, that's where real productivity is found imho — it doesn't matter that I can do X in 1h if I have to do it every other day, I'd rather spend a full week or even ten, and solve it forever.

I think Js is comparably simple but I've heard so many horror stories about dependency management that I just don't know — I've yet to use Js in prod myself at work and I don't look forward to this day.

Here's the thing: it does not matter how great a language may be while I'm writing it, because that's 10-25% of my time; what matters is that everything around, from setting up dev environments to shipping passing by devops, especially as a one-man/small team, can be done "simply enough". And that, IMHO, is where Go is miles ahead of most other languages from a philosophy standpoint.

I tend to feel very positively about Rust for it looks to be an extraordinary intelligently lead project, with comparably 'real' benefits that extend beyond the code page (but I've yet to use it myself to confirm first-hand).

We see the importance of these topics so clearly with Py2/3: none of the problems between these two have anything to do with what's in the code, with programming; all of it has to do with the ecosystem, with the real and much larger task of maintaining codebases, managing teams and deploying 'stuff' in ways that work with the environment (whether tech, people, knowledge, politics, what have you).

The move to 3 by Python has been a failure in that regard, and IMHO it rests on the shoulders of an entire community who chose to stick to 2 now regardless of what happened then. Well then is now and the result is chaotic.

I'm not worried about Python itself — the language is incredibly popular, especially in academia, and we need to double the programmers population earthly each year so that's a sustainable amount of new projects written in Python 3 every day. Old 2 projects will be but a drop 10 years from now simply because of this number effects of growing tech at such an insane rate (it's been about true since the late 1940's, uncle Bob has a great take on it in his latest appearance in The Changelog podcast).

Anyway. I can't wait for py2 to die and py3 to become the only Python.
You might be thinking of this excellent article by Joel Spolsky: https://www.joelonsoftware.com/2000/04/06/things-you-should-...

(Ironically, that post is about Netscape and the rewrite, Mozilla, ended up growing as a nonprofit far beyond Netscape's original scale.)

The so-risky-it's-almost-certain-to-fail approach is a big bang rewrite. Stop the world until the rewrite is done.

That's not what we're doing. A tiny bit of our GraphQL schema is _already_ running in production atop new services written in Go. We're going to do this step-by-step, while keeping the site running, _and_ adding committed features next year.

It's still a huge investment and comes with risks, but it's an incremental process and we'll be able to track the progress at every step.
I considered this overnight. I was naive.

If the goal is to help as many developers as possible, then being profitable and/or well funded makes achieving that goal easier, through hiring more employees and developing better product faster. Which in retrospective sounds obvious.

I'll still keep perpetual license as option, but stop being arrogantly non-commercial.
Most of the "means vs. end" dichotomy occurs at a level above choice of language. Every language permits both beautiful code and ugly code. Every language allows you to optimize. I write Go every day and I strive to write beautiful and performant code, for the sake of writing beautiful and performant code. Go may not allow you express e.g. quicksort as beautifully as in Haskell, but its simplicity and pragmatism lend themselves to a different kind of beauty.
Autocracies are fragile things. Autocrats know this, and we see plenty of evidence to support their increasing paranoia. I’ll be curious to see how this all plays out if their investment does not bear fruit and Trump gets reelected.
A micro service can have non critical dependencies.
Might as well now that they proved their entire culture of design is unsafe, at least train doesn’t usually have variable angle of attack.
I've had the idea for a while that the brain is a rx/tx device that allows a "soul" (choice engine, memory access) to interface with this existence.

I don't know what the "signal" is, or where "souls" reside. And I'm using quotes because I'm not sure that the words are sufficient to express what I mean...
Java can do almost all of that now, and offers excellent runtime performance.
I just use google translate on my android phone and speak out full sentences. It's pretty good as long as the sentences are long enough, have correct grammar and are common things to say.
Yes, I figured that :)

But from the Protestants' perspective, "tainted" arguably works too.
map, filter, fold, etc.
Our approach to services at Khan Academy is likely a bit different from most. We're sticking with a monorepo (the code for all services lives in one repository). We have a single go.mod file at the top of the repo, so all services use the _same versions_ of dependencies.

We're still building out our deployment system to better support multiple services, but we're planning to redeploy all of the services when library code changes (which is something we're trying to minimize).

All of this ensures that we don't have trouble with services lagging behind on critical updates.
the number of failed migrations, modernizations, and "tech transformations" in non-software industries, as well as the number of consulting outfits and their profits doesn't seem to back this up.

[0] IT disasters now part of modern life - https://www.afr.com/technology/it-disasters-now-part-of-mode...

[1] Number of IT failures at banks and other firms is unacceptable, say MPs - https://www.theguardian.com/business/2019/oct/28/number-of-i...

[2] The Biggest IT Failures of 2018 - https://spectrum.ieee.org/riskfactor/computing/it/it-failure...

we can argue whether these are "rewrites", but big changes can be rewarding but are inherently risky. balancing this is hard, and rewrites uncover and introduce the unknown unknowns.
This trend will gradually fade into the history books. Just because it’s a thing doesn’t mean it’s a good one.
Day Trial WebHosting on a Shared Centos6 WebPanel X64 Server No CC Needed
The circumstances of his departure were more akin to a break-up than a passing of the baton. No point in holding onto to the stock and mentally tying yourself to an organization that shunned you. Steve Jobs did the same thing if I recall correctly.
Remember all that same stuff was taken out of the earth at one point.
There’s a famous quote that I think is the best answer to this question: “I’m not writing it down to remember it later, I’m writing it to remember it now.”

There’s a lot of research on this, but in short, most people develop much stronger memories of the things they physically write (typing is less effective IIRC), whether they ever refer back to the notes or not.

Your mileage may vary, but for most avid note takers, that’s the gist of it.
The Tiniest Gingerbread House
I tentatively disagree with both of you.

I've sometimes wondered whether code would be universally clearer if all you could do in a loop is have a one-liner or call another function/method (mainly when looking at my own code within loops and thinking WTF!!!).

Would probably cause issues when teaching programming though. It would be interesting to have a compiler switch that enforced this...
From the Irish perspective: Plus ça change, plus c'est la même chose.
One easy example is map functions.

In typescript, if I have a bunch of "User" objects where each user has an "name" and "age" field, and I want to print a comma separated list of all those names formatted as "name -- age", it's simple. I write:

let userNamesList = let userNames = users.map(u => `${u.name} -- ${u.age}`).join(", ")
console.log(userNamesList).

This is possible in no small part because map is generic.

In go, to get the same level of expressiveness, I'd have to write the following stuff around it:

func mapUsersToStrings(f func(u User) string, users []User) []string {
result := make([]string, len(users))
for i := 0; i < len(users); i++ {
result = append(result, f(users[i]))
}
}

And after writing that boilerplate, I can finally write:

userNamesList := strings.Join(mapUsersToStrings(func(u User) string { return fmt.Sprintf("%s -- %d", u.name, u.age) }), ", ")

That boilerplate, of having to write a specialized map/filter/etc function with a for loop for every combination of types you transform between (mapUsersToStrings, mapUsersToAddresses, mapUsersToAges) is really annoying.

It's harder to point to many other cases because, simply enough, people don't write such cases. The fact of the matter is just that go libraries make very sparing use of first-class functions because the lack of generics prevents it from working well, and so we end up with an entire language ecosystem where code is harder to read and with fewer simple abstractions reused across it.

You can still write any code without good generics or first-class functions, you'll just have more programmers writing more code with less clean abstractions.
Just go to any random page in the report for evidence.
And many languages, have parallel for constructs. The openmp #pragma parallel extensions in C/C++ for example. Of course its possible to create constructs which provide the messages passing for clustered environments too.

And maybe that is part of the problem with a generic 'map' your not really sure the underlying implementation, is it parallel, clustered, serial, etc? So you end up with map(), parallel_map(), mpi_map(), etc, and how to you control the parallelism. Do you just let it default or do you have levers to control the batch & interleave. Pretty soon, its not such a simple construct anymore.
Show HN: Spotify for Tech News App
> At critical moments in time, you can raise the aspirations of other people significantly, especially when they are relatively young, simply by suggesting they do something better or more ambitious than what they might have in mind.

Whatever you do, DO NOT apply this advice to your significant other. Perhaps a better man than me can do it effectively but I can say from experience the results are always disastrous.
I love how European countries draw back from freedom and democracy for "social stability".

Thought crimes are punished in Germany, France can censor Internet without court order, and UK gives it's agents right to commit felonies.
On a literal sense no less
>> unashamedly hijacking city policy

I don't know, the charm of San Francisco is all of its unique elements that aren't found anywhere else. The hills, the cablecars, the Golden Gate Bridge. Why shouldn't the transit dept be responsible enough to "leave no trace" after it completes a project? What if the transit project tore up Fisherman's Wharf and they decided to replace it with a generic shopping mall? Or took out all the cable car tracks? What if they flattened Lombard Street to make it more "pedestrian friendly"?
I'm a native mandarin speaker but the website said I failed 9/10 questions. I guess it's the accent problem as there are hundreds of different mandarin accents across eastern Asia
UK is no longer EU, well very soon not to be.

Why the negative votes? We just had our party elections, and Boris is now the current elected PM for the next five years, who wants brexit. So it’s going to happen whether you like it or not. We will not be tied to EU laws and so we can authorise the MI5 to do above.

I don’t want it to happen but there are no other options available for us.
Legit question. I think people are just different. I need to take a ton of notes because without them I’m lost on my work and life. My memory needs a refresh tool. I work with someone who can juggle 50 complicated situations at once and keep it all in his head. If I could do that too I would.
Isn’t it the same as any other access permission ?

For instance is there any specific model behind blocking device location, short of just not wanting to share the info ?

I’d see not wanting an app to send anything related to your device nor that it was even opened to be of the same kind.
This line of thinking seems to also argue against trying to cure any diseases. What's the point of curing a disease that makes someone's life span shorter if all life spans are too short anyway?
People here don't like C# for some reason, I write really complex business logic with it every day and it is not only easy to write, it is maintainable as well. My own JS code with lot less complexity is way harder to understand after a while.
I've used 2 techniques when learning Japanese. However, keep in mind that there are very few sounds in Japanese that aren't in English, so my experience has been relatively easy.

When I say 2 techniques, it's actually just one: shadowing. Essentially you take a recording of a piece of speech and memorise it. You then practice saying it at the same time as the recording. When you feel like you are able to say it, play the recording in headphones and record your voice. Then compare your recording to the original recording.

I used news casts to practice because it was easier to find audio clips that also had transcripts I could read -- however an audio book would be ideal if you can get your hands on it. I ran into a problem just having facility with the succession of sounds, timing and tones. My "second" technique was to do this with music. I memorised a variety of popular music and then went to karaoke 3 times a week :-) Probably this helped me the most.

I still struggle quite a bit with tones. Japanese does not have accents on words, but it has 2 tones -- either rising or falling. Getting the tones right is often the difference between being understood or not. At first I could not hear the tones but practicing example sentences that used homonyms with different tones helped me quite a bit.

As I said, I never really had to struggle with learning how to pronounce a sounds -- it was much more in selecting the correct sound, or refraining from using English dipthongs, etc. However, I've taught English to Japanese students who have real difficulty learning how to make certain sounds. I have found that being very specific about how the mouth moves, where you put your tongue, how to use your breath, etc makes all the difference. Probably the best reference are textbooks meant for people who were deaf from birth. After that it's just practice and shadowing is the best technique I know about.
Uh. How long until we have hundreds or thousands of these agents running around enforcing the will the ministry of truth...
He’s MI6, not that that should make much of a difference.
Paleotronic’s Top Ten Famous and Infamous Christmas-Themed Video Games
Is giving something for free a good strategic?
According to their 2018 accounts, 'information technology' costs were $5m. Salaries were listed separately at $29m so I'm guessing the $5m was mostly servers.
Multi-line lambda is not code smell.

There are a lot of cases like GUI programming where you need a lot of handlers which are suitable for lambda because they don't have a good name, and should never be called manually, and often they have multi-lines of codes.
Note that “the oldest species of <x>” doesn’t make any sense. Both that species as well as its closest evolutionary relative have a last common ancestor, meaning they are equally “old”.

Do this a few times and you will notice all species have the same “age”, assuming life today all descendent from a common ancestor. Yes, some of them have may have changed more or less in appearance, but that correlates poorly with genetic changes.
There is little if any formal instruction in grammar in reasonable primary schools. All else equal, students who attend primary schools that don’t teach grammar at all end up speaking and writing just as well as students who attend primary schools that try to teach grammar.

When primary schools try to teach grammar it is boring, stressful, and generally unhelpful to the students.

The dominant factor affecting students’ reading comprehension and writing ability is how much time they spend listening and reading, especially to material which is at an appropriate level to slightly stretch their abilities.

If schools want to spend a relatively small amount of time formally teaching grammar to 12–17 year old students there’s nothing inherently wrong with that, but it’s mostly only useful insofar as it attaches names to concepts so that students can have conversations with each-other about what makes communication effective of ineffective, or more explicitly discuss their existing subconscious grammatical knowledge. Formal instruction in grammar (or other kinds of formal analysis) is still no substitute for practice listening and speaking and reading and writing (ideally with effective feedback), which should be the main focus of language arts instruction.
...in other words, UK court rules that MI5 can continue to carry out its business as usual. Bloomberg would really like you to be outraged by this.
A thread from 2014: https://news.ycombinator.com/item?id=8351962
As someone who has been on the receiving end of this (from a loved one), your advice is sound.
in production is fast startup really such a boon outside of serverless? especially if you're already doing blue/green deployments, doesn't seem like it'll have much impact.

(depends what "fast" vs "slow" means - are we talking about milliseconds vs a second or two, or startup times so horrendous they cripple your devs' ability to iterate and tests?)
At least in Idaho, the speed limit is routinely flouted up to 90mph.
Re/Max Acquires First (AI Real Estate)
If we had that setup and faced those problems, would starting a mass holocaust that will kill everyone who ever has or will exist (inventing death) really be the best solution? I feel like human ingenuity could probably find a better solution than that.
> They might have as well gone on to become "Acorn"

They were Acorn at that point. That's why the CPU was called Acorn RISC Machine (singular). There was never any company called "Acorn RISC Machines".
Is the link correct? It goes to a paper "Motivating bureaucrats with non-monetary incentives when state capacity is weak: Evidence from large-scale field experiments in Peru∗".
I don't disagree with your pitfalls, but I do think we're working to avoid them.

To your first point, "The decision seems to be primarily a software architecture one...", this project has had involvement of the whole engineering team since the beginning. The whole org is on board with this change. It's definitely not happening in a silo.

> This is definitely the second system effect. It's going to take years to make this thing reliable and sunset the old product.

I hope not, but obviously we're not done yet, so I can't say how long it will end up taking to completely decommission the Python 2 app. What I can say is this: there are aspects to this project that are _simplifying_ our system and, for what's left moving from Python to Go, our intention is to port the business logic as close to a straight up port as we can get.

> - They're porting over the logic? Even if this is actually the right move, wouldn't a clean-room implementation potentially give better outcomes?

_That's_ second system effect, to me. We can't change everything and fix every problem now, so we're focusing on the changes that will help us move from Python to Go faster.

> - Why are they continuing to use App Engine if the writing's on the wall for 2024?

I don't think Google Cloud is disappearing in 2024, for one. Beyond that, again, we're not changing everything about our architecture. The way our data is stored is staying the same.
This is exactly the concern many have with anyone having the keys to to many silos of data.
A City Built for the Homeless
In my experience it's more annoying than you think, especially if you want to prevent small sneaking regressions.

Python not being statically typed also means all of the breaking type changes they made with string now being byte or similar means crashes are not revealed until possibly production if your unit tests didn't get that oneeeee edge case right.

If I'm going to do a new project in the future, I will demand it will be a statically typed language. I'm sick of dynamic languages.
Show HN: The Battle for React Knowledge Supremacy
Click on “jsmol” under “Structure”: https://pdb101.rcsb.org/motm/164

(No, it’s not a complete brain simulation. But there is serious neurological science done in cool browser toys)
Never announce a plan to do something. Announce the results after doing it.

If you announce a plan, you're making a bet (sometimes with your reputation) that's it's going to be successful, and telling the world about it.

If however, you didn't announce it, you could still get the benefit of success, or make it looks like learning the lessons of a failed experiment.
An acronym is pronounced as a word. You mean initialism.