skysight-inc/HackerNews huggingface dataset:
This is excel 101. And with some bits of that are questionable.

Range names are nice until you need to duplicate a tab, then you end up with a combination of local and global range names, where it isn't clear which is which. And god forbid you want to move a tab to another workbook, particularly if that workbook already has range names.

He does an INDEX/MATCH without specifying the match type to exact, which forces him to sort the lookup table. Specifying the match type should be muscle memory. And after 20 years of ignoring their users, the excel team finally introduced an xlookup fonction that does that. They also introduced other functions that are useful (and long overdue): SORT, UNIQUE, TEXTJOIN (somehow TEXTSPLIT only came several years later, I guess it was a hard computer science problem)

There are still functions that would be nice to have in Excel. An interpolate function that could take an X value, an X range and Y range, and an interpolation method (linear, polynomial, cubic splines, etc) and interpolate the value.
That just means your coworkers are anti-social... this masks the problem but the real solution is educating people so they won't be anti-social anymore and stop nitpicking about others' style.
The original author was talking about hardware not behaving like linear memory, and other than caches and maybe some thread local tricks, I'm not sure what he meant. However, it seems pretty clear that CPUs do try really hard to make:

mov rax, qword ptr [0x12345678]

do what you think it would/should.

And as for the C memory model, aliasing, and optimizations, I'm firmly in the camp that thinks the standards originally gave the compiler writers an inch to work on weird platforms and they've taken a mile when they work on reasonable ones. The intent of your integer to pointer cast is very clear, but it's been undefined to insanity. So now there is some variant of the following, which doesn't have UB but does the exact same thing less clearly:

uintptr_t i = 0x12345678;
int* p = 0;
memcpy(&p, &i, sizeof(int*));
int x = *p;

I'm sure some language lawyer will correct me on some obscure detail of the standard, but it could be fixed with some modification. The point to me is that using memcpy instead of pointer casts is NOT an improvement. The good compilers will generate the same code as the assembly above, so all they've done is made the C source less readable.
One uses the actual search term and some vague user data like which country you are from to display ads in the goddamn AppStore and you compare it to a company that was built from solely ad money and are thinking about apple >= google or > ? It’s <<<<.
Anyone surprised about the setup? Most of the people seem to be using nice chairs (good) but they are using laptops placed directly on top of their desks. So there is no “flat” line between their eyes and their screens. Check out their necks! Holding that posture for 5h/day, 5days/week must be painful and have long standing effects.

I know the pic is about a hackathon… but I have seen regular workplaces that look exactly the same.
see also nokia g22: https://www.nokia.com/phones/en_int/nokia-g-22/specs?sku=101...
That's correct and I agree that a lot more should be done. I'm just saying that right now, there is no better option. Also, if therapy really had no significant positive results (in aggregate!) I think we'd hear more about that from affected patients.
Instead, you can find lots of accounts from people who said that therapy has greatly improved their lives.

(This is different from the horrible transgressions of the 19th and 2/3rds of the 20th century where the "results" were mostly how the patients appeared to others but not how they felt themselves - if you bothered to see them as humans at all)
I still don't understand who at Microsoft decided that it was a good idea to have "localized programming". If you use a non-English version of Excel you cannot use "if" but rather have to use whatever the word for if is in that language (for example "wenn" in German). If you think you really need that localization why can't both versions work or why can't you force English (the CAD software Rhino does this with an underscore for example). Yeah sure you can change language but it's such a kludge. Causes so much confusion in international settings, makes searching for stuff non-trivial etc. etc.

I'm really grateful I never had to work with Excel in any job. My excel skills section of my CV reads "basic, would rather not use it". The closest I came was importing Excel files. I do however respect people who can use it well and I've seen people be really efficient in excel.
> Even though this is probably quite a useless project

No. It taught me quite some.
As long as you need reliability and are willing to discard all aesthetics, just go for a Thinkpad..
The only thing I would change here is “watch your thoughts, thoughts become words” and reverse it.

Your words are so often careless attempts at thought. First approximations of ideas. All too often, however, they are spoken to oneself and heard by oneself as truth. Be very careful about your words, they will go on to constrain oh so much.

Now, strictly speaking thought may come first. But, it’s that thinking about words which becomes so trapping, not the initial conditions that give rise to the words. Interrogate your language, distrust it, scrutinise it.
It's really nice to hear something like that from someone who experienced it.

If you were back to two people with a promising idea, how would you do it this time?
> I didn't really "get" it until I started programming and learning stats.

I had a similar experience. I wasn't particularly good at math and struggled a bit with algebra until I started programming.

I had something I wanted to solve, and I found out I needed to convert between one ratio to another ratio, and I couldn't figure out how. Then I realized I could just compute a percentage and use that. After all a ratio is a measure of something relative to a whole and percentage would tell you, well, the percentage of the whole, and I had memorized the formulas from going to and from percent.

So I wrote the code for this, but staring at the code it suddenly was so obvious that the division by 100 on the first line would cancel with the multiplication by 100 on the second line.

That was my eureka moment. Algebra suddenly made sense, and math in general became a whole lot easier.
That seems entirely reductive, even weird: I don't think Counter-Strike "sucks" and "should focus on retooling the game" just because cheaters exist.
1. If the CPU lacks an MMU and the address falls into an accessible address space, it won't segfault.

2. If the CPU has an MMU, it won't segfault if the address is mapped to an accessible region of memory.

3. This is besides the point, because the CPU will execute the instruction and attempt to load from that address. A C compiler might emit the load instruction, or it might assume that this code branch will never be executed and can therefore be replaced with code that sends an angry email to your mother.
and yet now 37 years later, awk and sed are still wildly used!
Only if you are an employer who wants to treat programmers interchangeably..... as a programmer, you have zero reason to do that. If all the codebase is homogenous, you can be replaced way easier, which is probably not what you want.
> toolchain [...] known to be bug-free

You cannot be serious. "Well known list of bugs" would be more in line with the state of affairs.
Firefox is breaking Kobo functionality in August.

https://www.theverge.com/23778208/kobo-pocket-ebook-reader-i...

Kobo can potentially fix it, but the short notice and breaking important functionality in one of their revenue generating products/services adds to my pessimism about Mozilla’s leadership, which is already very pessimistic.

Another example, look how much better Thunderbird is doing outside of Mozilla. Donations have more than doubled, but the product has a user centered roadmap, so imagine that.
https://blog.thunderbird.net/2023/05/thunderbird-is-thriving...
On MacOS at least all binaries are dynamic (except dyld itself) so I think this is fair. This is because everything is supposed to link I believe some kind of runtime dylib instead of doing e.g. syscalls. This includes anything written in C, for example. Size of binary with dynamic links is the most fair comparison between anything running not on Linux.
What would be the caveats of that approach?
That was a good read. Thanks.

> He Read The Whole Thing! [OMG SQUEEE!]

The style and tone reminded me of Douglas Coupland's book Microserfs.
> Upgrading from 1 to 2 implies a larger review is needed, I'd not just check compile/tests. Upgrading from 1.4.656 to 1.4.657 and I don't expect to have to check the docs for major changes to how things work.

What would you do for upgrading from 1.4 to 1.5?

> Dates, pure increments etc don't have this.

Right, but most versioning schemes are not pure increments and nor pure dates exactly for that reason. You don't plan to release twice a day when your version scheme is year-based; the second number is frequently used for when it's inevitable, making it a hybrid scheme. Still not compatible with the semantic versioning.

Semantic versioning also effectively shadowed a previously widespread decimal-based versioning (e.g. 1.00 < 1.09 < 1.5 < 1.99 < 2.0). There are pros and cons for both formats, but decimal-based versioning makes authors to pick a suitable increment for communicating changes, and forbids them to perpetually delay the major version (which can be a pro or a con, I personally think it's a pro).

If semantic versioning simply wanted to codify and mechanize the best practice, it should have instead adopted Debian's [1] which tried a lot to unify existing conventions.

[1] https://www.debian.org/doc/debian-policy/ch-controlfields.ht...
Isn’t the idea that wasn’t means you can expose the web etc APIs to any language? Eventually there will be tooling that will make this a doddle.
I love ereading my Pocket articles in colour!
The real start is on the next pages which goes into _real_ deep intro for Diodes and transistors. I think it was just a matter of giving an intro but overseeing that people don't know what these symbols mean.

For me, an electronics engineer by degree (not by trade), it was so basic I could see the author forgetting this.
Time to Think Small on Influencers
Never pay for software again.

vs

Give What You Can (USD/EUR) - Support Linux Lite

I am getting mixed messages here.
Great content Jean Louis!
Tangent: some Arm Cortex-M class CPUs had a feature called "bit-banding" where you could do byte accesses to an area of the address map and the CPU would turn these into bit accesses to a different part of memory. So the alias word at 0x23FFFFFC maps to bit [7] of the byte at of RAM at 0x200FFFFF, for example, and you can do a word write to 0x23FFFFFC to change just that bit 7, saving having to do it by hand (which is particularly awkward if you need to ensure the atomicity of the bit update).

https://developer.arm.com/documentation/100165/0201/Programm...
Cool map bit finicky on mobile
Note also:

> Specifically, Harfbuzz is purely responsible for shaping; although Harfbuzz does have APIs for accessing glyph outlines, typically other libraries in the free software text rendering stack are responsible for text segmentation into runs, outline scaling and rasterizing, setting text on lines, and so on.

> Harfbuzz is therefore restricted to turning a buffer of codepoints for a segmented run of the same script, language, font, and variation settings, into glyphs and positioning them. This is also all that you can do with the WASM shaper; you can influence the process of mapping a string of characters into an array of glyphs, you can determine how those glyphs are positioned and their advance widths, but you cannot manipulate outlines, variations, line breaks, or affect text layout between texts of different font, variation, language, script or OpenType feature selection.
> Do you really save so much

yes? That's the entire reason why SoC exists.
You can get a .NET AOT example in a few megabytes now. Looks like the most stripped down AOT compiled builds are about to crack the 1mb barrier:

https://github.com/AustinWise/SmallestDotnetHelloWorlds
Personally I upvote things that I clicked, read, and deemed worthy of reading. Could be almost anything.
I had to look up "logistic" in that context.

Almost anything that is described as "exponential" isn't really exponential, if the curve is describing a real-world quantity. Real-world quantities tend to be subject to limits.

I'm an annoying pedant regarding the word "exponential", which is commonly used (especially by journalists) simply to mean "grows fast". I think it's fair to call a curve "exponential" if the relevant part of the curve approximates to exponential.
Agree. It is difficult to resolve trade mark law and use in open source communities. This strikes me as a fair balance. If the Perl community adopted a different logo it would still need an owner to invest in the trade mark and licence / enforce it, or it would likely be abused. Registration and enforcement do not come particularly cheap, especially on a global scale.
Why do programmers in 2023 need to imagine a virtual machine (basically a PDP-11 from 1970-something) at all?

You only need that abstraction if you're doing low level bit/byte bashing and I/O, or there's some chance you may run out of memory and need to handle that manually.

That applies to a tiny slice of all possible applications.

There are far more useful modern abstractions that don't need to make those assumptions.
That whole room is designed like an office set from some dystopian movie. Employee indexing is quite convenient though, when you arrange them in a matrix like that.
Have you thought out the perverse incentives your pay scheme would create?
Couldn’t agree more. I am lucky to have worked with two individuals early in my career who would take the time to really help develop team members by way of thoughtful, detailed PR comments. I attribute much of my own growth due to this, and as such I always try to do the same for others. I care deeply about it and consider it to be one of the most important parts of the job. It saddens me that most people (IME) don’t feel the same.
Generally the translator will find a way to work around the lack of a direct equivalent, trying to convey as much of the meaning as possible.

Now you may think that these workarounds cause some meaning loss, and you'd be correct. However, the problem with this line of thinking is that this isn't unique to honorifics - there's a tonne of other stuff in the Japanese language which has no English equivalent (I don't know Italian, so can't say much on that front), and non-Japanese speaking anime fans are often unaware of these because fansubs never introduced those concepts (for example, purpose of -desu/-masu which can be used to show respect, somewhat like honorifics).

The reality is that a lot of nuance gets lost in translation, with or without honorifics; unfortunately, if nuance is important to you, there's no substitute to learning the language. As such, people who think honorifics are highly important generally give me the impression of blissful ignorance (i.e. don't know what they don't know).

Of course, you're welcome to have your own preferences regarding translations. But having some hybrid of Japanese/English subtitle to portray slightly more nuance (whilst still missing out on a lot), can seem weird (e.g. why is this particular aspect exposed, but not something else?) and isn't necessarily objectively "better" than a translation that just sticks to English.
> Knowing people didn't help you get better jobs?

I'm not sure you got the point.

It really is not about your connections not leading to job opportunities. It's about the belief your job prospects are tied to the number of people you're connected in social network apps, and this belief leading people to try to attract followers by continuously generating noise in social networking services.

Also, some of the most sought after jobs in tech, such as the covetted FANG positions, are not achieved by the depth and width of your social graph. How does knowing people help you with that?
An AI-written Star Wars story created chaos at Gizmodo
And when you have great resell value than that device might get a second and third user as well.
Step into the future of photo editing with our latest tutorial on Adobe Photoshop Beta's groundbreaking feature: "Generative Fill AI." Join us as we unlock the immense potential of this cutting-edge tool, pushing the boundaries of creativity and achieving truly remarkable results. Whether you're a photography enthusiast or a professional designer, this tutorial will revolutionize the way you approach image manipulation.
The Art of Disagree and Commit
Sadly, the link you provided shows how much nonsense there is in this space. They provide two sources of "evidence". Both of them are total junk.

For example, they say: As educators, we have heard a lot about the downside of extrinsic motivation. Studies have shown that extrinsic motivation produces only short-term effects, at best. One study out of Princeton University goes so far as to say, “External incentives are weak reinforcers in the short run, and negative reinforcers in the long run.”

That study? https://www.princeton.edu/~rbenabou/papers/RES2003.pdf It's an economic model of how idealized humans might work! It literally says nothing about real humans or children.

The second piece of evidence comes from the founder of this website excelatlife.com A website by a psychologist who treats anxiety and depression, and "Dr. Frank's strong interest in Eastern philosophies and Buddhist psychology has led her to train in various forms of Tai Chi/Qi Gong as well as other mindfulness methods for over 15 years. She is a third degree black belt in American Kenpo and continues her involvement in martial arts at the Martial Arts Center." She knows about as much about childhood education as you do.

Maybe your statement is right, but your evidence is non-evidence.
Meanwhile it seems to be possible to write a Hello World program for DOS using just 20 bytes:

https://www.gnostice.com/nl_article.asp?id=225&t=The_Smalles...
On a side note, did anyone notice that the author's location is McMurdo Station, Antarctica? I didn't think they would have someone of their skillset at that station: https://usscar.org/directory?combine=&field_usscar_nsf_progr...

Could be a fascinating story.
With all respect I think there’s a kind of false dichotomy implicit in your comment.

The availability of new tools with significant advantages over the old tools is almost always a reason to consider the new tools for certain use cases, but the new tools are rarely just strictly better on literally everything, there are generally now use cases when you say “the new tool is a solid fit here” and other cases where you say “the old tool still hits the sweet spot better”.

And that’s before you consider massive existing code and infrastructure and and tooling and investment: which is very, very often a far higher order bit than C vs not-C.

A great example would be a JVM-caliber GC? Thats just such a win over malloc/free so often, but it doesn’t obsolete malloc and free across the board: it gives a thoughtful and mature team a whole new set of options.

Rust would be a (comparatively) recent example of a language that hits a lot of the sweet spots of e.g. C/C++ and brings some cool new stuff to the party, and might even represent a better default these days, but the idea that it strictly crushes them in full-stop everything is a political-style conversation not a reasoned engineering tradeoff conversation.

Even C++ which has been around forever and is give or take backwards compatible with C with good tools? Hasn’t obsoleted C.

More options is generally a good thing (there are exceptions).
> [..] to make the most of the Bending Spoons employer brand, which is extremely strong in Europe.

What the fuck is Bending Spoons?
Back then in 2017 it wasn't that common for people to have a foldable laptop stand in their bags. Nowadays I would expect more people to be using something like a Roost stand or Nexstand.

Especially if they regularly work from random cafes or coworking spaces.
Playing CS 1.6 online is very interesting! I want to know how to implement the porting, and what tech stack was used.
I just wish C had better compilers

Errors produced by current mainstream compilers are terrible.

"Unresolved symbol" being the best they can do is some joke
Longevity. As sure as eggs is eggs, reasonable C that I write today will be compilable in 30 years time. Python? Breakage every couple of minor versions.
Legacy components perhaps? There's a TN here (pdf)
https://www.embarcadero.com/images/dm/technical-papers/delph...
Web clipper works great on a desktop web browser and saves content, but this uses a browser plug-in and I can’t think of a practical way to save an article on a mobile device (phone or ipad). Also, pages are converted to Markdown, which is usually helpful, but rendering can be different and I recall running into occasional issues.
Now for reading, the mobile app at the time (I think still true) renders in Markdown, not a weblike view, so the reading experience wasn’t great (no inline pictures, diagrams). However, for pulling content it worked very well.
It also seems like the core perl developers did not want to acknowledge the importance of web/html.

They did not add support for encoding/decoding html entities or URLs were added. No standard modules for this.

No easy method of making html pages from a URL request besides running as CGI.

This made perl lose to php which made it very easy to make a simple "Hello, world" page.

php would never had any traction if perl developers had made web support high priority.
Related:

A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.htm...

Tiny ELF Files: Revisited in 2021: https://nathanotterness.com/2021/10/tiny_elf_modernized.html
> If we model individuals in a shared sociocultural milieu as adapting to similar selection pressures, many stable strategies incorporate altruistic cooperation

I have always formulated this for myself as follows: Any sufficiently strategic self-interest is indistinguishable from altruism. Empathy is just evolution's way of encoding millions of years of this observation into our emotional response system.
1. It gives me a lot of control over how the program works, which lets me create programs that work faster and use less memory than would be possible in most other languages.

2. Relatedly, it's more explicit than almost any other language. If a line of code doesn't look like a function call, it's not calling anything. There is no hidden control flow. These statements are not true in languages which support operator overloading or exceptions. The only real competitor to C here is Zig.

3. If I give a Linux user the source of a C program, they can probably compile it with the tools they already have. This will most likely be the case 20 years from now too, as long as I keep my C mostly standard-compliant. I'm not sure that code in newer, faster-moving languages like Rust will stay compilable as long.

4. It's a lingua franca. C libraries can be used from most programming languages without too much effort.

I probably wouldn't start a large project on a tight deadline in C, but I think it's a great language for writing new command-line utilities and for rewriting tricky algorithmic code from scripting languages. I've gotten 100x and even 1000x speedups from replacing a couple of Python functions with C.

The ease of use is about to improve with the C23 standard, which I'm very happy with. On the other hand, some tricky areas like aliasing are likely to stay tricky forever.
Factory methods literally just "make things", idk why polymorphism has to be a "pattern" when it's already a feature of the language.