skysight-inc/HackerNews huggingface dataset:
I have been writing python for 15 years now and only occasionally have needed or wanted to optimize algorithms. When I have, the general takeaways have been:

* Flattening data from hierarchical, custom types into flatter, builtin collection types can make a speed difference. The builtin type methods spend more time in the native code and are optimized.

* Lots of things that I thought could make a difference but would barely move the needle. There is so much pointer indirection internal to CPython.

* The set and frozenset types can offer easy and immediate algorithmic improvements. This is obvious from a formal/academic perspective but continues to be my favorite thing about writing quick and dirty python. I have encountered cases where an algorithm called for a fancy data structure but doing simple set intersection and difference was good enough.

* Over time, Python taught me to worry less about optimizing things that didn't matter. Everyone pays lip service to the perils of premature optimization but I think there are layers to the problem. Fast languages make many affordances for optimization, and to some extent compel you to make detailed choices that have performance implications (e.g. choice of integer width, choice of collection type). There is something very liberating about reminding myself "it's going to be slow either way, and it doesn't matter." When I work in Swift for example I find myself getting distracted by finer details that relates to efficiency.
I'm the co-author of High Performance Python, Micha and I are working on the 3rd ed (for 2025). Lots of bits of the book came from my past conference talks, they're available here (and the public talks will generally be on youtube): https://speakerdeck.com/ianozsvald

Mostly that content has a scientific focus but the obvious thing that carries over to any part of Python is _profiling_ to figure out what's slow. Top tools I'd recommend are:

* https://pypi.org/project/scalene/ combined cpu+memory+gpu profiling

* https://github.com/gaogaotiantian/viztracer get a timeline of execution vs call-stack (great to discover what's happening deep inside pandas)

* my https://pypi.org/project/ipython-memory-usage/ if you're in Jupyter Notebooks (built on https://github.com/pythonprofilers/memory_profiler which sadly is unmaintained)

* https://github.com/pyutils/line_profiler/
> It's kind of a bummer we don't trust each other more.

Huh? Sounds like he was trusted, but they verified his work. Trust != blindly accepting someone's work. And in the end, this intern violated the trust that _had_ been placed in him, and he was shown the door. Rightfully so.

Yes, part of growing up is making mistakes. But, part of growing up is also living with the consequences of your mistakes. And, yes, I've made some mistakes in my youth (hell, even as an adult) that have led to professional consequences, including termination.
Someone that previously worked on crypto :p
Thanks everyone. Cody sounds like a good option. Alternatively maybe I can try something like this :) https://twitter.com/mertdumenci/status/1777882582136529130
All Is Not Well in FPGA Retro Gaming
I'd still be very interested to know what might be in the local drinking water, so that I can educate other people in my town.
My experience with ebook readers is as follows: I read mostly scientific PDFs, with formula's, graphs, etc. First I tried the Kindle - it was completely useless because of screen size. I went for PocketBook Inkpad Lite - the page size is more or less fine, but the page turn delay is noticeable. It's so subpar to the real book when you can just browse through pages quickly. Finally I picked up the biggest Chinese tablet I could find (Doogee T20 Ultra 12") and it is the best experience so far except one thing the screen is glossy, not mat, and it affects my reading experience. E-ink ebook readers are perfectly fine for prose etc.
The Jewish folk have the day of atonement Yom Kippur (Day of atonement). The day to ask for forgiveness and forgive others.

I believe Henny Youngman, one-liner comedian said:

"Yesterday was Yom Kippur, I went a bought a Mercedes" ;)
I live by The Thames; for the last few days, we've had magnet fishers on the bank. I gather this crew have fished up a cannon and a sawn-off shotgun, as well as stuff like jewelry.

I'm not going to link to them (Facebook <spit>), but you can search for "Northants magnet fishers".

They all seem to use the same magnets, which look as if they're about 3" diameter, 2" tall cylinders. It seems to require a fair bit of muscle to separate the dredged iron from the magnet. I don't know where they get these magnets.
I think there are even places with the same spelling but different pronunciations, as they're a long distance from each other.
gzip isn't by default block based but does effectively support a dictionary reset command in the compressed stream. This “command” is essentially the start of the gzip header, so if you cat two bits of gzipped data together the result from decompressing the result is the same as the source data streams concatenated. This means you can turn gzip into a block-based process and therefore parallelise it in the same manner as bzip2, and this is how pigz⁰¹ works.

This dictionary reset trigger is how the “rsyncable”² option³ is implemented too. Resetting the compression dictionary this way every 1000 input bytes increases the size of the compressed output by surprisingly little⁴.

--

[0] https://zlib.net/pigz/

[1] I actually started making my own version of this, way back when, inspired by looking into how gzip's rsyncable option² worked, before discovering it already existed! I “finished” my version as far as a working PoC though as it was an interesting enough exercise.

[2] https://manpages.debian.org/bookworm/gzip/gzip.1.en.html#rsy...

[3] also supported by pigz⁰ where it is used within each block it compresses, though because it splits the input at regular intervals anyway (instead of a more dynamic approach) its output is naturally already more rsync compatible than plain gzip (though with the default 128KiB block size, notably less so than with the reset every 1000 input bytes)

[4] usually between 1% and 3% IIRC, depending on input content of course, for some inputs the difference could be lower than that range, or much higher
> It's her life so I leave her alone, not my place to tell her what to do, and the emotional upheaval from her isn't worth it either.

You are a part of the problem.
They say that when Mahatma Gandhi was asked what he thought of efficient Python, he replied that he thought it might be a good idea.
With Suno 3 (and possibly Stable Audio 2), we are definitely experiencing a moment for music that parallels what we saw with ChatGPT 3.5 and Dall-E 2. The unexpected jump in quality (like sora recently) is again surprising (to me).

As with these 3 past breakthroughs, Google seems to be (slightly) lagging and again misses the "defining moment". I'm willing to say that OpenAI could have achieved something similar (and claim a 4th turning point), but the headache of copyright issues likely pushed them to focus on Sora first. I'm almost certain Udio and Suno were trained on (a lot) of copyrighted music.
> He did, but that doesn't come close to the whole story:

Sure, maybe I was being overly simplistic, Tesla did grow under his watch so he probably deserves some credit for it. Again, though, I'm not sure how much the CEO actually has to do with that stuff, and I really don't believe that he was directly involved with the engineering.

> Agreed; some of his recent hubris does seem related specifically to this.

What really bothers me are his attempts to intervene in the Russia/Ukraine conflict, to a point where I think that the DHS might need to investigate his bank transactions. I must have missed the election where we decided to choose him to lead the ministry of defense.

> I view him as being a relatively unfiltered stochastic genius.

How much of this is "genius" and how much is just "a stopped clock being right twice a day"? I'm not going to pretend to know, but I could probably write a markov chain to generate a dozen ideas for a product, and if one of them happens to be successful, does that imply that the markov chain is some kind of complicated genius?

I think the way he's handled Twitter has demonstrated that he might not be the genius we thought; I wonder how many of his dumb ideas were quietly rejected when he had some oversight; if nothing else he had to answer to investors and whatnot with Tesla and SpaceX and the like. With Twitter, it's more of a dictatorship and it's a mess.
As it should, just like the dirt cheap solar panels from China scared US suppliers and drove all of them out of business. When the government subsidizes product to the point of it being significantly below market cost in order to capture market share, the folks who can't do the same lose. See: Amazon and small bookstores.
> This is Python. Hidden monkeypatching isn’t how we do things.

It kind of is, though. This isn’t the first time I’ve seen this; off the top of my head, I believe the Stackdriver libraries do something similar but to the stdlib logging library.

The fact that it’s possible is also a tacit endorsement of doing things this way. Many languages just don’t permit adding to or modifying a namespace.

I would argue monkey-patching is a bad pattern in general, regardless of whether it’s manual or automatic.

IMO, fsspec should have a private package-level variable with a list of these adapters, and expose a ‘fsspec.register_adapter(adapter)’ method to add things to it. I don’t see a need or use in patching here.

It just seems fraught with issues that could be avoided with an adapter registry. Testing seems easier too; I can’t imagine the pain of unit testing a bunch of adapters if they each try to modify the fsspec package directly.
> it's to break up monopolistic employers

Indeed. And the primary method employers use to gain monopolistic leverage is limiting competition by barring new entrants through government regulation, licensing, permitting, etc. Anytime we give government bureaucrats power to regulate, license, permit, etc, that power becomes a highly desirable target for crony capture, either legal through lobbyists, campaign donations etc or illegal through bribes and revolving-door influence peddling.

Like you, I have no problem with unions in concept. Employees should be free to organize and choose who to work for (or not to work for) as they see fit — as long as employers also have the corresponding freedom to choose who to hire (or dismiss) as they see fit. When everyone is free to opt-in or out, everyone has an incentive to find mutually agreeable terms. This creates a naturally sustainable market-driven balance between the parties.

The problem comes in those states which don't have "right to work" protections. In those states a union can legally force an employer to hire only union members (or the government sends police to shut the business down). It can also force an existing employee to join the union (ie give the union part of their paycheck) or they lose their job, even if the employee sees no benefit to joining the union (which happened to a friend of mine). As you'd expect, once any party in a transaction loses their freedom to choose, this imbalance is eventually exploited and abused.
Whatever would we call a movement like that?
Please read my full comment. First, AAC is not even used for duplex audio such as in telephony. For that, the Bluetooth standard downgrades to SBC mono 16khz at best. Additionally, AAC is high-latency, even it is used. So it is not "perfectly fine" at all.
It’s a hard thing to balance. One thing first, I’m not sure the config is (or always will be) the same across versions, so it could be that eslintrc configs can’t be parsed in the first place, even if they’re js.

I can also understand wanting to move entirely to one standard. Leaving remains of the old one, with over a decade of documentation about it all over the internet, could make remaining functioning artifacts harder to debug when searched for. For example, someone is using eslint v11 and they search something like “eslintrc.js not registering”, and heaps of the results they get pertain to irrelevant versions of the software. Sure there are ways around this for the searcher (and something like copilot will surely catch these things quickly), but that doesn’t mean eslint’s GitHub issues wouldn’t risk being inundated with this type of problem for years.

I agree with you too, though. I imagine they felt they’d given it enough time and warning, and they’d prefer to keep their internals cleaner and more consistent, and their documentation simpler as well. Weird gotchas like “oh also this really old type of file we don’t technically support can still be loaded” are a bad noise when people want signals.
I still have the kobo mini, the pinnacle of ereaders IMO, perfect size for reading fiction. I haven't seen anything more compelling since kobo discontinued it.

That being said I wonder if the color eink display would be useful for displays instead of LCD.
After evaluating Proton and Fastmail, I ended up in the Fastmail camp.

My solution for notes is Joplin (https://joplinapp.org/) + Fastmail's WebDev support.

Joplin is amazing, supports arbitrary file attachments of any size, optionally encrypts every thing. Has an iOS, Andriod, Linux, Mac, and Windows app. "Just works".
It was before most of our times, but I don't think the Esso brand was "in the mud" when they rebranded to Exxon and that seems to have worked out ok for them.
Double entry bookkeeping is very easy to understand once you ditch the ridiculous "accounting equation".

"Credit" means "source", "debit" means "sink".

Suppose you invoice a customer 10,000 euros. You now have a promise for 10,000 euros, but you account in dollars so it's a promise for 11,000 dollars at current exchange rates. So you credit the source, your "Income: Customer A" account ("income" and "expense" accounts represent the external world) $11000, and debit "Assets: Accounts Receivable" (an account for trade-credit promises like this) $11000.

Later, the customer pays your invoice, which gets you $10,500 because exchange rates have moved around. How do you account for this?

Your promise, which you accounted as $11000, is the source, so you credit Accounts Receivable $11000. You debit cash $10500, because you got $10500 in cash. Finally, credits and debits have to balance, so you debit "Expenses: Loss on Foreign Exchange" $500. (recall that "expenses", like "income", represents the external world, and you lost the other $500 to forex traders or whatever.)

Since you don't liquidate the business on any typical day of its operation, why would you attempt to figure out how that $500 fits into a hypothetical instantaneous liquidation when you could just... account for it by balancing credits with debits? (You do sort of instantaneous-liquidate when preparing financial statements, an infrequent task which is very mechanical compared to ledger entry.)
Oh, I have a few for just such a reason. I just don't want to unconditionally recommend them to someone without also saying that they are probably overkill.

I also use male-threaded magnets and wingnuts to hold my cable-management pegboard to the bottom of my desk. There I went extra strong because I don't expect them to ever be moved.
Every big corp c-suite executive has armed guards. It's not related to the ire they draw, but rather the board weighing the risk of someone taking them hostage vs the cost of the guards.
Not to mention the kids over-compensating for your restrictions, and doubling down on the things you forbid/discourage them from - whether covertly behind your back, or after they grow up.

Like a strict parent whose kids end up doing drugs and partying as soon as they can leave the house, or even the opposite, some "hippie" all-too-liberal parent whose kind grow up and seek strictness and discipline, and e.g. turn religious or join a cult, or find some abusive partner who gives that to them.
> Our society has allowed him to accumulate so much wealth that nothing he could do "wrong" in a business sense would meaningfully impact his lifestyle.

This is the frustrating part. If I went around my office tomorrow endorsing nazi propaganda, I would be out of a job by the end of the day and probably struggling to pay my mortgage in a few months.

But this fuckstick can do whatever he wants and never face any real repercussions. He could bankrupt Twitter, SpaceX, and Tesla and just decide to retire early on a private island.

It's so incredibly hard to actually fuck things up when you're rich that it's downright impressive when someone like SBF comes along and manages to actually do it.
Parents have to get together for common rules on these kind of things. You can't push the responsibility onto somebody else.
Because Tesla has been significantly underperforming the rest of the S&P 500, Elon is not the world's richest person anymore. He's in like 4th place or something.
I don't think that's true with mental illness. He's referring to emotions being the source of a person's beliefs rather than reason.

People can learn coping skills to deal with things they can't control. Reasoning can override emotion.

For myself, learning I was bipolar allowed me to understand what was happening and be able to put things in context. I still need medication but I don't need as much of it.
Good; that's way better than being able to reflash your PS4 controllers with a drive-by.
> Just to focus a bit on DRM/Widevine: the fact that Google decides who can use Widevine absolutely helps them to weaken competing platforms / OSes.

There are multiple other widely used DRM systems. PlayReady is very licensable (it's just not free), and used by many sites. Fairplay is also widely supported. Adobe would probably still sell someone Primetime if they could find someone to pay for it. Until very recently some of the largest pay TV operators in the world (Sky et al) didn't support Widevine and required installation of third party helper software from a different DRM provider.
it’s because they know it’s a slippery slope into allowing imaginary and irrational numbers, which is how accountants go to prison.
Shifting left on incident management
Affordable small cars have never been a thing in the US, electric or not. There's zero reason to believe that this new batch will pose a threat.
It started off happening globally - they fixed it in most places, but not yet on the iOS app.
Ask HN: Alternative to Putty for Multiple Sites?
I've been looking around for an alternative to Putty for use on Windows. I like Putty but I need something better to manage multiple logins, better searching, possibly tagging, etc. Would like something open source and actively developed. KiTTY seems to be a one-man show and not updated frequently. Any suggestions?
Well, that would make it quite an exotic watch: https://j3s.sh/static/unnamed-puffy.png
> but why would they do that

Because the market demands it
I didn't even know MS had photo sharing or mobile payments.

Google kills and relaunches products so often that I'm genuinely surprised Google Photos still exists and that my old data from when I had a Nexus 5 is still there, but I guess that's fair, I did forget them.
My experience matches the articles calling claims, though I don't intentionally try to go without my phone I just left it at home on a work trip once and it lost charge halfway through.
First gen was 25W. The new one is 90W.
My point is, it's already possible to use multiple independently compressed (and decompressable) frames with zstd if you really want to.

It's even in the zstd repo, under a "contrib" implementation

https://github.com/facebook/zstd/blob/87af5fb2df7c68cc70c090...

That does, of course, require that you compress it into multiple frames to begin with, which could be a problem if you don't control the source of the compressed files, because the default is a single frame. In theory if everyone used pzstd to compress their files, it would be strictly superior to BZ2 in nearly every circumstance. As it is, you do have to go out of your way to do that.

But I don't think that necessarily means the single-frame choice by default is a bad tradeoff. It's better in most circumstances. And if they do eventually figure out a reasonably efficient way to handle intra-frame parallel decompression, then it's just gravy.
I think you brush across a couple of the important things to note about social media:

1) The disconnect between people that allows for such othering. Anecdotally, I can't imagine but a small handful of people I've met who would be willing to walk up to someone and verbally wish for the other person's death. I know we can point to many times in history where that attitude has resulted in the death of many people, but I view those as exceptions to everyday life. Not saying my view is correct, but only explaining my approach with this statement.

2) Scale. Imagine a group of 100,000 people showing up in the real world to yell, scream, and chant death threats at one person. That would be a massive event. Even gathering 1,000 people against a single person would be noteworthy in many locations.

So the The Internet, which is mostly comprised of Social Media at this point, has moved to be able to allow people to disconnect others from humanity and gather in vitriol spewing hordes, and a single individual would be hard pressed to deal with such force against them while still trying to engage with their reason for being there.
Manna – Two Views of Humanity's Future (2003)
Civil engineering is incredibly complex and full of nuanced trade offs. If you find it to be simple, it is your lack of understanding of the topic.
That’s a cop out that allows obvious delusion to spread.

If what someone is saying is 90% reality based and verifiable, and 10% subjective experiences/unverifiable, that doesn’t make what they say equivalent to someone who says something that is 90% falsified by verifiable reality and 10% subjective experiences/unverifiable.

The second person is just delusional or lying, full stop. Any other approach is just cowardice.
In this hypothetical case, there would be some floundering to discover the cause, and a two-line fix. Rather than having the two extra lines from the start. Seems acceptable risk to me.
Well Michael Jackson is also one of the most talented musicians and entertainers of the last 100yrs. His wealth is the least impressive or defining thing about him.

I do get the point you're trying to make though. Just thought that emphasis was a little off.

Just like with Elon, you have to consider that extreme outcomes are the result of extreme people or people that were forged in extreme circumstances (which is certainly true of Michael Jackson).
Coming back to this after a couple of days, I now realize I probably misunderstood the original question.

'xanathar provided a more useful answer.
Yeah, I need to take some forget-me-nots when I have to work on the service our system's architect said had to be in Golang, and is constantly undergoing API changes because things keep getting added/changed. It currently serves ~1000 requests per day, with a goal of ~60,000 if we increase uptake across teams. Much traffic. Wow. My last job I built and maintained a group of Python microservices that handled ~500 requests/second (load balanced across ~20 containers).

I have no doubt that Golang is faster and more efficient for HTTP serving, but if you don't have a good specification for your app you're happy with for at least the next however long and need to keep moving crap around, I'd so much prefer Python.

And if I hear some flavor of "compile-time checks are tests/but Python doesn't check types" argument, that person shouldn't be involved in software development.
Real talk, I just wouldn't bother. If you want to make money, learning cryptocurrency today is like studying the Titanic post-iceberg.

If you're interested in distributed technology, you should research the sort of stuff that lands you jobs. Learn how to write MySQL schemas, set up a simple Kubernetes training cluster, research message queues, that sorta thing.