skysight-inc/HackerNews huggingface dataset:
Also:

https://news.ycombinator.com/item?id=9806607

Excerpt:

"The technology was great. I joined just as TAOS was being migrated to intent. Both worked in the same sort of way; code was written in a custom portable assembly language, which was then translated into native machine code when it was loaded into the machine. The TAOS language was VP1, the intent one was VP2, and the first VP2 systems were hosted on TAOS, so it actually translated VP2 into VP1 and then into native. Translation was very, very fast; as both VP were pretty dense it was possible to load and translate VP faster than loading native code, on certain combinations of platforms.

VP1 had 16 registers and a pretty simple instruction set. The original incarnation was a assembler macro package. VP2 was way more complicated. It had five register banks (int32, int64, pointer, float, double) of up to 65535 registers each. It was actually a pretty nice system to program in, especially when the assembler got strong typing and structured programming support... yeah, I know what you're thinking.

The OS itself was way ahead of its time: it was an asymmetric multiprocessor system, where you could have any number of nodes of different CPU types hooked together via a message-passing system. Code loading was transparent, and devices and filesystems could be attached to any node on the system. It had a blisteringly fast compositing GUI, cutting edge audio synthesis, hardware accelerated OpenGL, and eventually ran on, deep breath: 386 x86 ARM MIPS PowerPC MCore ColdFire Transputer ShBoom and a V, um, V840? Or something?

Our standard development procedure for new hardware was to have intent running (inside a Linux process) on a desktop PC; we'd bootstrap a development board up to the point of having serial support and the VP loader; then we'd hook them together. Suddenly, we have a two-node system. We could start a terminal on the desktop and see that node #0 was a Pentium and node #1 was, say, a ColdFire. You could then spawn a process on node #1 and it would run transparently on the dev board with full access to the desktop's filesystem and device drivers, all running, quite slowly, over the serial link."
Many moons ago when Beowulf clusters were still new, I remember a project where I was given a months worth of then new cluster time to spend. Due to a delay we had to wait a few months before we could exercise it. One weekend I was playing around with some junk computers I'd assembled for a LAN party. Long story short, I tried out a portion of the project on that LAN, got a useful result then we ran the rest of the project on that overall system and joined more machines. We completed the project using no special machines, often just idle machines added and removed upon their availability. Along the way we rewrote the entire project code as a set of modules then used python to orchestrate them.

None of this is extraordinary now but the result was we reduced multiple times the budget requirements and processing times just using code improvements. A lot of times, the head-on solution just needed optimisation. Sideways improvements also helped such as small optimisations also helped. The more exotic equipment is still useful but its an accelerator.

One last thing: we received a LOT of grief and criticism for our approach. There was peer pressure to use particular solution types even though they were wildly inappropriate. We had funding pulled or threatened to be pulled by some and other backers. One lessons we learnt includes: Don't underestimate how vested certain interests are for the use of various toolkits. "Use this or else!" is the not-so-subtle threat.

I'm so glad to not rely on only academic work now.
What conceptual model are you using?

Where I used to work, we wanted a process by which problems, or apparent problems, with products could be submitted by anybody in the company with any sort of a technical nexus, including technical support, pre-sale support, technical publications, field consultants, QA, and r&d itself.

We came up with a bug database system that provided two pathways for conceptual problem reports to be accepted as bugs. R&d itself could enter bugs directly for products within their own purview. For the rest of the company, however, we would we wanted some filtering and independent analysis before necessarily accepting an unexpert opinion about an apparent misbehavior to be logged as a bug directly.

Therefore, we had a parallel problem reporting system that was available to all technical personnel outside of r&d. Problems would be evaluated by technical support and or r&d personnel before being escalated to a bug. Also, since a given bug could reveal itself in more than one apparent misbehavior, multiple problems could map to a single bug.

When there was any contention as to whether an apparent misbehavior was to be accepted as a bug in code, in documentation, or to be dismissed as a misinterpretation on the part of the customer and/or the reporting party within the company, the issue came before a Bug Committee which included representation from Support and R&D (at least). Then, it could be escalated to a bug or closed.

The benefit of this dual-path model was that there was a low-friction process that would capture problem reports from a broad population and document them for everyone to see paired with a more formal and rigorous process to identify, documents, and track agreed software defects.

Bug entries would include a source control system reference for each affected source version tree and comments by the fixer(s).
This is 100% false. The cost of housing(i.e. rent) is counted.

The prices of purchasing a houses is not. This is because the CPI(Consumer Price Index) is an index of the cost of consumption. And rent is the cost of housing consumption. Purchasing a house is the cost of buying an asset that produces housing.(which you can then consume yourself or sell to someone else.)
Debian Enabling Support for Booting from Root F2FS File-Systems
Very inspiring, well done Anthony!
If the change is so small, I don't see why they wouldn't be able to backport the fix? Don't upgrade firefox (and any dependencies), just fix the bug.

As far as I understand, you cannot call it Firefox anymore if you deviate from upstream (which is understandable, because upstream doesn't want to get bug reports for custom changes):

https://www.mozilla.org/en-US/foundation/trademarks/distribu...
Yes, the numbers vary with time, but nowhere near what Tiobe claims.

There are still many times more Delphi programmers than are ever counted. Just not much turnover, and no hype.
Yes it’s illegal to shoot them down but...what other means might there be to discover who and what is going on?
Oh gosh, I grew up on The New Bob Cummings Show.

He had his own flying car, in 1961!

https://en.wikipedia.org/wiki/The_New_Bob_Cummings_Show
> Neither LoC nor commit count is a good metric to represent a developer’s productivity.

They're not a good metric to judge a developer on. But when you can do a large controlled study (or even before/after with the same developer), without the developer knowing they're being watched, it's a good metric.
This blows my mind. If I had to discuss with my teammates every time I changed their code I would be way less productive. Everyone’s a little bit watched to the code they write, but iterative improvements and bumping the quality of the codebase is way more valuable than risking a fragile ego. It’s the teams code, we all benefit from improving it.
> So what should happen if I get convicted of a crime and refuse to pay the fine?

If you refuse; the assets should be seized from you and the fine paid that way.

If you are unable to, then the fine is, ipso facto, excessive.

In either case penal slavery is not an appropriate answer.
It is your responsibility to participate in the security of your customer's information. It is your fault if you "choose convenience over security". It is not anyone else's fault.

Ask yourself how you would feel if your bank just let someone access your account and steal your money. Would you forgive them if the bank said "well it would have been really annoying to have to check the person's identity before letting them take the money, so we chose convenience over security"? Of course not.

Security professionals are there to guide you and make security tools easier and less intrusive for you to use (and believe me, they want to make it easier for you, if only for the entirely self-serving reason of reducing the amounts of complaints they get), but even if the security tools are hard to use, it is your responsibility to still use them. You are not doing your job if you disregard them, and "it's annoying" is absolutely, 1000% not an excuse for potentially exposing the sensitive information of every one of your customers.
The French Scrabble champion who doesn’t speak French
In defense of NIH syndrome (2001)
Depends where you live. In San Francisco you might. But when
I graduated college I moved to Houston and over the last 10 years I've never spent more than 10% of my income on rent. Sometimes spending as little as 6%.
(When I graduated I made 40,000 and spent $300 a month sharing a 2 bed room in a nice neighborhood, a couple of blocks away from a bunch of nice museums.)
US Government-funded Android phones come preinstalled with unremovable malware
Population Pyramids of All Countries, 1950-2100, updated with 2019 numbers
Extracting common function was right move in your example.

The bad move was to add options to common functio instead of changing one caller to call new different method.

Even worst move was add more and more options to originally simple method. Just because something was rightfully extracted to common place 10 months ago dies not mean it have to remain in common place. And the need for split does not mean original extraction was wrong.
regarding windows - see https://news.ycombinator.com/item?id=22010059
If you don’t trust someone to change your code to make small improvements, it sounds like you have a trust problem, not the other way around.

Working on a software project as a large team is like growing a garden, not building a house. Just because someone planted a hedge doesn’t mean it can’t be improved by pruning it.
Anyone invest their time learning something like this and have it pay off? Interested in success stories I suppose.

(Edit - I mean something more like nodes.io)
Shared this here because I think the NIH syndrome is far too rarely discussed in a positive light. The article brings some fresh air to the topic.
That just proves my point. $1200 for a 13" screen is five times the cost and one forth the surface area of my current screen. It should be the same surface area and double the cost.
We started with trying to create something like this when we started Dark (https://darklang.com). We ultimately moved away from this style of programming, as we couldn't figure out a way to make it feel "code-y" enough for people to want to write programs in it.

I'm super interested in what folks want to use this for?
Lots of great examples and philosophies here.

I think, for me, I am often on two sides of the situation.

1. I'm moving fast and writing code to get things done for the customer and the product.

2. I have enough time to slow down and write or refactor "testable" code.

Often 1 results in untestable code. Often 2 results in a refactor or most likely a rewrite to create testable code.

This is an important difference. Optimizing to write code just because you think is clean (in the sense of shorter, reusable code) is often confusing to most. This also leads to pull requests that grow large and are hard or time consuming for others to review.
Jobs had quite the puritanical streak when it came to his products.
The cost of "a normal middle-class lifestyle" doesn't completely track a CPI basket-of-goods. This is in part due to changing consumer expectations, and because some products simply change over time.

A mid-size sedan you buy today will typically have more airbags and better efficiency than dad's '80 Corolla. It's going to cost more.

Conversely, dad's mid-range TV was probably a 21" NTSC CRT. Yours is a 60" ATSC "smart" LCD , a product that no amount of money could buy in 1980.

A new house today is likely to be a few square metres bigger than a house of similar market position 40 years ago.

There are expenses that are everyday today that would be exotic or unthinkable in 1980: internet service, cable/satellite TV, and mobile telephone are obvious, but I'd also include 401(k) contributions (instead of employer-funded pensions), and college expenses, both your student loan debt service and the need to proactively safe for your children's attendance. Child care is also a changed factor, given the increase in two-income households.

Saying "well, you make as many inflation-adjusted dollars as Dad did" doesn't mean you've kept my position on the social treadmill. When cheap credit goes away, that becomes more obvious.
-- I live a comfortable life and would love to see people eat healthily.

Would you live a slightly less comfortable life to see other people eat healthy? Food is expensive, but I'm sure there's fat in your budget.

I agree banning dollar food stores is elitist, but it's also incredibly myopic by those in power to not also address the root cause which is you have a segment of the population that can't afford good food and has to consume food that exposes them to a greater set of negative health consequences.

Raising minimum wages, and progressive taxation would go along way to fix a lot of this. \_(:|)_/
Complaints about what
Did you lose trust because the code broke (a legit reason to lose trust) or because your code was changed without kissing your ring (a problem with you being too attached to your code emotionally).
it’s less “there are things that happen to be open late” vs things that are intentionally meant to be open late.

nightlife is still very much optimized for single adults who like to drink here, and just pointing out in Asia you have districts that only come alive at night and have a lot of things to do that don’t involve drinking at a bar.

Reading at a bar is like a “happy path” in some ways...people want other alternatives than just standing around a loud crowded bar on a weekend.
Arch is not an easy distro to use even if you know what you're doing. Every Arch user essentially creates their own distribution which can break at any point depending on their particular environment. You need to take care of all the little things yourself.

Personally I didn't experience all that much breakage, but eventually got frustrated by kernel updates breaking hotplug kernel module loading until reboot because Arch removes kernel modules for the running kernel. This breaks random things like plugging in a USB drive unless you happened to load the module previously, so you're essentially forced to reboot every time you upgrade the kernel or take care to manually exclude it.

I'm grateful for Arch because their wiki is beyond excellent, but I wouldn't recommend it to anyone unless they just want to tinker.
Nevertheless, I used to work with someone in a startup, who was crazy about over cleaning the code. Every time there was something that has to be cleaned and when requirements changes or new feature is needed we had to do all the fancy stuff again because of the over cleaned code that wasn't flexible enough.
It seems to me like a list of things the Linux community is working on; and I think that's a bit of the problem with FreeBSD. For a long time, it was known as the "high-reliability / high-performance server OS". But Linux has mostly taken that crown now, for quite a few years. Where does that leave FreeBSD? I wouldn't be able to define FreeBSD's identity at the moment; but granted I'm more a OpenBSD user.

It's easier to define OpenBSD, beyond the obvious stuff (security). It's a system that does not really want to deviate too much from old-school Unix, and a community that firmly rejects any fad or fashion and embraces simple, and indeed sometimes simplistic solutions. That doesn't make it the best system for everything, but at least we know where it stands: the best old-school Unix OS. It's almost as if it lives in a parallel universe where time has stopped in 1990, and the OpenBSD developers are asymptotically converging to the perfect Unix system of that era. I'm not saying that as a criticism at all.

And NetBSD and Dragonfly BSD are also, more or less explicitly, research operating systems where individual developers can come and try stuff.

FreeBSD is still a very impressive project but I think they can do better than being just-like-Linux-but-five-years-later.
The security hole there is using SMS as an account reset, which makes it a one factor solution (see other discussions of this in the thread). The error was in that implementation, not in SMS 2FA in general.
I've heard a stat: Surfers are surfing waves only 1% of the time they are working to surf waves. I think that's the time in the water, not outside of it.
People that get really attached to their code tend to be the people not smart enough for you to want them fighting for their opinions.

Good engineers promote good ideas and general approaches to code base structure. They don’t give a shit if people go in and make changes as long as they don’t compromise the whole architecture.
Honestly, no attachment to my code demotivates me.

It makes me less responsible for outcome and helpless. It makes it much harder to prove I know what I am doing. Since you modify things however you please despite me not agreeing, I am not the one at fault for maintenance issues. It also means that keeping conventions requires constant negotiation and frankly, if I would enjoy people trying to dominate me or me dominate them I would become manager.

And yes, it should not be about that, but it is about that with a lot of guys.
A NAS that backs up to amazon glacier. Or glacier directly if you have something that'll stay on / awake long enough with your data to do it.
Pretty much any CPU released in the past decade should be capable of decoding 1080P video as well as a GPU (though yes, will use slightly more power).

The point is that modern GPUs have hardware decoding for common codecs, and will use far less power than CPU decoding. But the major browsers on Linux (Firefox and Chrome) disable hardware decoding on Linux, because $PROBLEMS.

So, you end up with battery draining CPU-based 1080p decoding. And even more battery draining or choppy 4k decoding.
By extension this also renders things like Electron unsupported on the BSDs.
> I see several comments complaining about the US incarceration rate without mentioning the US crime rate.

The former is a major cause of the latter.

> You can’t credibly assert that the US incarceration rate is too high without knowing how it compares to the crime rate.

The incarceration rate is too high, in part, because it drives the crime rate.

It's also too high because it's historically largely a product of criminal justice policies adopted as a direct replacement for chattel slavery as a tool of racial suppression and which have continued to this day with that effect, having spread beyond the region which had chattel slavery to replace to the whole nation.

This is particularly true of penal slavery.
I thought rules were a way of organizing thought, like a language which is governed by rules.
But not everybody does, including otherwise intelligent people like Steve Jobs and Steve McQueen.
Hey everyone, I'm the original author here, thanks for reading! WebGPU's pretty exciting stuff, a modern graphics API for the Web.

Feel free to let me know if you have any suggestions/improvements! I'll keep an eye on the thread though.
Along with the risk of account suspension, there is always a risk (although of a lesser degree) of Google killing a product that we rely on a daily basis. As much crazy as it sounds but what's the guarantee that one day Google won't kill Gmail, especially when considering the history Google has killing much-loved products like Google Reader?
Damn, this really hits home for me. My brother got prescribed statins and one day the family had found out he'd stopped because he didn't believe in it and they didn't feel like they were doing anything.

He's one of the most scientific guys I know but began giving conspiracy theory/anti vaxx sort of answers of how you can't trust medical studies all the time. When asked why he still takes his hypertension meds and trusts the literature there, he couldn't answer and he said it's just a feeling. The family was pretty astounded. Honestly felt as if someone you know suddenly started believing antivax or say flat earth ideas is the closest way I can describe it.

I was explaining how inconsistent his thinking was, bordering on delusional. If the truth was that the statins affected him psychologically, I can see why he'd chose to hide it when his wife and parents are grilling him for it.
I seldom saw such an incredibly weak argumentation as in section "The number argument". Yes, If someone wants Scheme to remain an academic toy language, this might make sense.

I followed the discussion and schisma which resulted in Racket for good. If you want to have a sane language, some pages of specification and rationalization are required, as has been done for R6RS.

If the professors fear that students will no longer be able to implement their Scheme interpreter in a term because the spec has become to complicated please call the language somehow different and stop to encumber the development of an otherwise great language!
> I would be outright offended.

Get over it. It is not your code (assuming you are working for a company). If some other developer wants to waste time making changes that don’t do anything, that’s between them and their manager.

Would you be “outright offended” if your code got changed after you left?
That is the choice of software tool. You are literally grinding through gigabytes of data. If your tool didn't require so much data processing it would be faster. This may or not be possible to improve by you. Often there are workarounds.

Case in point: a matrix library I used to use needed to a full row/column pass each time. We put a layer in between it and our code. Reduced lookups required by 30%. We were processing the same amount of data and getting the same results but requiring far less time. That layer also reduced memory requirements. Now we could process larger datasets faster with the same hardware. Thats just one example.

Your choice of CPU and other hardware isn't always the limiting factor. Even the language choice has an impact. Some languages/solutions require more data processing overhead than others to get the same final result.

Even the way your program's Makefile or module composition can have an effect on compiling performance. I remember the use of a code generator we included that meant it had to regenerate a massive amount of code each run due to its input files being changed. We improved it by a ridiculous amount simply by hashing its inputs and comparing the hashes prior to running the code generator. Simply not running that code generator each time meant we sped up the build significantly. 30 minute build times reduced by 5-10 minutes. Same hardware. And that was easily triggered by a trivial file change.
A lot of duplication is:

* A recipe for typo-based-bugs.

* Makes the code difficult to read if there are subtle differences, since they get lost among the identical repeated parts.

* Indicates that there is (probably, not necessarily) a meaningful abstraction you could have used.

I would say it's technical debt, that needs to be paid. Perhaps not immediately, but don't let it pile up.

So: Don't "let it go"; rather, pursue it somewhat more flexibly.

PS - There is more to clean code than less duplication...