HNHacker News
TopNewBestAskShowJobs

jlokier

6,144 karma · joined October 23, 2018

Mail: jamie@jlokier.co.uk LinkedIn: https://linkedin.com/in/jlokier

Knowledgable & helpful person, available for hire :-)

I'm looking for more work, ideally on a consulting / freelance / part-time basis.

LinkedIn is better than email to make first contact if you'd like to talk, whether for work or just chat about something you liked here on HN! (I often miss interesting one-off mails among the deluge, and don't check it every day.)

I work 80% time at a funded stealth startup as hands-on tech lead, with zero-knowledge (ZK) cryptography, Bluetooth low energy (BLE), and peer-to-peer distributed systems, linking physical devices as well as the usual web stack. Can't say more, but it is intended to become open source. This a really fun and challenging project, with a great team! (It's not on my LinkedIn - stealth).

With my remaining 20% I am currently available and looking for software dev and/or tech leadership and/or business strategy consulting.

I'm versatile but develop mostly low-level or "system" software in C, C++, Go, Rust and Nim, with Linux as my main OS (but MacOS and Windows also). I have about 30 years professional dev experience over a wide range of systems, from embedded to supercomputers, Linux kernel, database engines, as well as GUIs, the web, and even games. Good at performance optimisation, debugging. Also good math & physics.

I've worked as an Ethereum core dev (EVM), so I know that environment well, especially improving EVM database speed, which is a critical factor! Currently my rabbit holes are ZK cryptography speed optimisation, and a novel fast database engine (neither B-tree nor LSM-tree, but with characteristics of both).

(ZK = zero-knowlege cryptography).

submissionscomments
jlokier··on Microsoft's latest Windows 11 24H2 update breaks SSDs/HDDs, may corrupt data
ext4 or btrfs won't save you either.

Although that bug report is for ZFS on the same SSD as the Windows article (WD SN770), the faults described in the Linux bug report look like would also happen with ext4 or btrfs.

So I searched for reported problems with SN770 and ext4, and found enough results to convince me.

That particular SSD fails with Linux and ext4 too.

jlokier··on Microsoft's latest Windows 11 24H2 update breaks SSDs/HDDs, may corrupt data
That's up to you. But if you have one of the SSD models the article is about, Linux probably won't help. It might make it worse.

Linux is beautifully optimised for performance. Linux is more likely to write the same data more quickly than Windows, when an application has a large amount of data to write. So if the problem is the SSD fails when a large amount of data is written quickly but within specs, then it's likely to fail on Linux too.

Unless it's a bug in the Windows driver. But it sounds from descriptions that it isn't a bug in Windows, it's a bug in the SSD that went unnoticed because not many people wrote large amounts of data quickly on systems with those SSDs.

So it sounds like there may be a model-specific blacklist required in the driver, to detect particular SSDs and reduce the speed they are written to, because they fail when run at the speed they advertise to the OS.

Or, alternatively, it sounds like those models may require a firmware upgrade from the SSD vendor.

If either of those are required, a similar workaround will be required in the Linux driver too, to avoid the same problem as soon as someone runs a similar application on Linux.

Unfortunately, even with a speed-limiting blacklist in the driver, whether in Window or Linux, those SSD models probably still corrupt data from time to time, because speed alone is unlikely to be the underlying cause of corruption. A vendor firmware update, or vendor confirmation that a specific change in the driver avoids the SSD bug, are what's required.

jlokier··on Open Banking and Payments Competition
> Banks are pretty good at not losing data

Except for that day I logged into Barclays Bank (in the UK) and half the transactions were missing from the last several months of statements.

We're talking maybe 50 transactions just gone from the bank account ledger, which had long since been settled and previously downloaded (that's how I noticed).

To be fair to them, the transactions reappeared a few days later. But it took days, and had me quite worried.

jlokier··on Perplexity Makes Longshot $34.5B Offer for Chrome
> If Google loses Chrome though, it will no longer be pre-installed on Chromebooks and Android

That would depend on the contract.

For $34.5B, I would expect the contract to say Google agrees to continue pre-installing Chrome on Chromebooks and Android for many years, with financial penalties if they don't.

jlokier··on AOL to discontinue dial-up internet
It's the Three network in the UK. I've been using it every day for work for at least 10 years, and it served me very well, including all my remote work through the pandemic, gaming and Netflix, sometimes downloading terabytes per month without issues.

But they've managed capacity disastrously in my area recently. For the last three months. Where I live, and other parts of the centre of town, every day for about 4 hours from 11am to 3pm, it goes offline most of the time, so the network is unusable. It's impossible to work - can't even do chat or an audio meeting.

When I ran ping, I found it wasn't really offline sometimes. Sometimes it was just such high latency and/or packet loss that it may as well be. Signal strength was good, and voice calls worked fine.

jlokier··on AOL to discontinue dial-up internet
It's the Three network in the UK, not an MVNO, and I'm paying for the "unlimited data" plan. They don't offer a higher tier as far as I know.

I've been using it every day for work for at least 10 years, and it served me very well, including all my remote work through the pandemic, gaming and Netflix, sometimes downloading terabytes per month without issues.

But they've managed capacity disastrously in my area recently. For the last three months. Where I live, and other parts of the centre of town, every day for about 4 hours from 11am to 3pm, it goes offline most of the time, so the network is unusable. It's impossible to work - can't even do chat or an audio meeting.

When I ran ping, I found it wasn't really offline sometimes. Sometimes it was just such high latency and/or packet loss that it may as well be. Signal strength was good, and voice calls worked fine.

I tried three different 4G/5G routers, four different accounts, and two phones. All showed the same behaviours at the same times of day. At first folks in the Three store said I need newer 5G capable equipment, then it was a new SIM, but I tried all their options. In the end I returned everything to them, cancelled contracts, and they said it was most likely congestion, which fits the observations.

I'm amazed they haven't fixed it, as it must have been affecting thousands of customers for months, in a way that's surely obvious to any monitoring equipment.

With regard to the earlier poster's point about latency, when it worked perfectly my latency (both at home and in the office) was always at least 35ms or so, spiking randomly on a timescale of seconds up to about 400ms. Good for many things, but not the kinds of low-latency gaming, interactive streaming or other services some people take for granted. SSH felt annoyingly slow, but usable.

jlokier··on AOL to discontinue dial-up internet
You're reading it correctly. I was astonished too.
jlokier··on Perplexity Makes Longshot $34.5B Offer for Chrome
For the users, via the Chrome brand, and via being pre-installed on Chromebooks and Android. By far most users run Chrome, not Chromium forks, and this would continue after a competent acquisition.

Whoever owns Chrome decides exactly what software most users run for web browsing, decides future web standards in practice, decides which kinds of extensions most users can use, decides the limits and carve-outs of adblockers, codecs and web features, has all the telemetry, and in future decides what AI-driven "presentational" modifications to web pages will be done, and what semantic scraping and uploading will happen automatically in the browser.

jlokier··on UK government advises deleting emails to save water
Often, in a system with a large number of drives where actively-used data and cold data are automatically migrated to active and mostly-idle drives respectively.
jlokier··on AOL to discontinue dial-up internet
Here is "ping 8.8.8.8" showing latency over cellular internet some of the time, and I live in the centre of a city:

  64 bytes from 8.8.8.8: icmp_seq=6145 ttl=114 time=363613.635 ms
  64 bytes from 8.8.8.8: icmp_seq=6175 ttl=114 time=334289.726 ms
  64 bytes from 8.8.8.8: icmp_seq=6176 ttl=114 time=333689.274 ms
  64 bytes from 8.8.8.8: icmp_seq=6177 ttl=114 time=332851.621 ms
  64 bytes from 8.8.8.8: icmp_seq=6178 ttl=114 time=332673.845 ms
  64 bytes from 8.8.8.8: icmp_seq=6179 ttl=114 time=332618.215 ms
  64 bytes from 8.8.8.8: icmp_seq=6180 ttl=114 time=331634.496 ms
  64 bytes from 8.8.8.8: icmp_seq=6181 ttl=114 time=330736.758 ms
  64 bytes from 8.8.8.8: icmp_seq=6182 ttl=114 time=331050.087 ms
  64 bytes from 8.8.8.8: icmp_seq=6183 ttl=114 time=330813.820 ms
jlokier··on Open models by OpenAI
At the company where I currently work, for IP reasons (and with the advice of a patent lawyer), nobody is allowed to use any online AIs to talk about or help with work, unless it's very generic research that doesn't give away what we're working on.

That rules out coding assistants like Claude, chat, tools to generate presentations and copy-edit documents, and so forth.

But local AI are fine, as long as we're sure nothing is uploaded.

jlokier··on Open models by OpenAI
"Compiled binaries" are just meant to be an example. For the purpose of whether something is open source, it doesn't matter whether something is a "binary" or something completely different.

What matters (for all common definitions of open source): Are the files in "source form" (which has a definition), or are they "derived works" of the source form?

Going back to Apache 2.0. Although that doesn't define "open source", it provides legal definitions of source and non-source, which are similar to the definitions used in other open source licenses.

As you can see below, for Apache 2.0 it doesn't matter whether something is a "binary", "weights" or something else. What matters is whether it's the "preferred form for making modifications" or a "form resulting from mechanical transformation or translation". My highlights are capitalized:

- Apache License Version 2.0, January 2004

- 1. Definitions:

- "Source" form shall mean the PREFERRED FORM FOR MAKING MODIFICATIONS, including BUT NOT LIMITED TO software source code, documentation source, and configuration files.

- "Object" form shall mean any form resulting from MECHANICAL TRANSFORMATION OR TRANSLATION of a Source form, including BUT NOT LIMITED TO compiled object code, generated documentation, and conversions to other media types.

jlokier··on Open models by OpenAI
> It's apache2.0, so by definition it's open source.

That's not true by any of the open source definitions in common use.

Source code (and, optionally, derived binaries) under the Apache 2.0 license are open source.

But compiled binaries (without access to source) under the Apache 2.0 license are not open source, even though the license does give you some rights over what you can do with the binaries.

Normally the question doesn't come up, because it's so unusual, strange and contradictory to ship closed-source binaries with an open source license. Descriptions of which licenses qualify as open source licenses assume the context that of course you have the source or could get it, and it's a question of what you're allowed to do with it.

The distinction is more obvious if you ask the same question about other open source licenses such as GPL or MPL. A compiled binary (without access to source) shipped with a GPL license is not by any stretch open source. Not only is it not in the "preferred form for editing" as the license requires, it's not even permitted for someone who receives the file to give it to someone else and comply with the license. If someone who receives the file can't give it to anyone else (legally), then it's obvioiusly not open source.

jlokier··on New quantum state of matter found at interface of exotic materials
> One of the simplest quasiparticle is the "electron hole". Take a lattice of some electrically neutral substance. Remove one electron from it. There is now an "electron hole" in it. You can treat that hole like a particle now. It can "move" to another location by having the real electrons change places. It can "flow" through a series of such events. You can model a lot of things with "electron holes" that act in very particle-like ways. But they don't exist on their own. This one is simple because you don't even need quantum mechanics to get a hold of it in your head.

An electron hole seems like a simple, almost silly idea at first. Isn't it just like the hole in a sliding puzzle game. You move a neighbouring electron into the hole, so the hole disappears and a new hole appears at the neighbouring position. It seems to "move". Does this deserve a special name like "quasi-particle"?

But it's not like the hole in a sliding puzzle!

An electron hole moves with inertia, like a real particle. It behaves as if it has mass: You can push it and it starts moving. If you push it more, it accelerates more. But unlike a sliding puzzle, when you stop pushing, the electron hole carries on moving at the same speed.

It keeps going by itself in whatever direction it was going, until it's pushed in a different direction, or bounces off something.

You can't push a sliding puzzle hole at a diagonal angle, let alone push it that way and then watch the puzzle hole keep on moving that way by itself like an independently moving object, as far as it can go until it hits something.

If you had a large sliding puzzle with two holes, you wouldn't expect to be able to send them towards each other, bounce off each other and continue.

And you certainly can't perform double slit interference with sliding puzzle holes. You can, in principle (hard in practice), make electron hole beams and interfere them.

Things like holes and other patterns in matter behave remarkably like real, coherent particles, even though they are just patterns.

jlokier··on OpenAI Leaks 120B Open Model on Hugging Face
You can run models the size of this one locally, even on a laptop, it's just not a great experience compared with an optimised cloud service. But it is local.

The size in bytes of this 120B model is about 65 GB according to the screenshot, and elsewhere it's said to be trained in FP4, which matches.

That makes this model small enough to run locally on some laptops without reading from SSD.

The Apple M2 Max 96GB from January 2023, which is two generations old now, has enough GPU-capable RAM to handle it, albeit slowly. Any PC with 96 GB of RAM can run it on the CPU, probably more slowly. Even a PC with less than 64 GB of RAM can run it but it will be much slower due to having to read from the SSD constantly.

If it's a 20B MoE, it will read about one fifth of the data per token, making it about 5x faster than a 120B FP4 non-MoE would be, but it still needs all the data readily available for multiple tokens.

Alternatively, someone can distill and/or quantize the model themselves to make a smaller model. These things can be done locally, even on a CPU if necessary if you don't mind how long it takes to produce the smaller model. Or on a cloud machine rented long enough to make the smaller model, which you can then run locally.

jlokier··on iPhone 16 cameras vs. traditional digital cameras
> is it possible that at some point the computational photography makes a mistake and changes text?

Yes it is. I've seen that happen in real-time with the built-in camera viewfinder (not even taking a photo) on my mid-range Samsung phone, when I zoomed in on a sign.

It only changed one letter, and it was more like a strange optical warping from one letter to a different one when I pointed the camera at a particular sign in a shop, but it was very surprising to see.

jlokier··on VPN use surges in UK as new online safety rules kick in
A personal cloud VM is very bad VPN for some purposes.

The static IP address, recorded by every site you visit, is directly linked back to you personally, and only you.

jlokier··on The Linux Kernel Seeing Rare Code Activity Around SPARC64
Here's one company that makes both.

Their LEON processors are SPARC, and their NOEL processors are RISC-V.

https://www.gaisler.com/#reliable_computing_systems

jlokier··on Font Comparison: Atkinson Hyperlegible Mono vs. JetBrains Mono and Fira Code
Which fonts do you think are helpful during those blurry-eyed early hours?
jlokier··on Man wearing metallic necklace dies after being sucked into MRI machine
I tried to look. "Access Denied - Sucuri Website Firewall"
jlokier··on Async I/O on Linux in databases
> Byte range is support is interesting but also present in the Linux sync API: https://man7.org/linux/man-pages/man2/sync_file_range.2.html

Unfortunately, I think sync_file_range() provides much weaker guarantees than byte-range fsync() and even byte-range fdatasync().

As I understand it from historical behaviour and documentation, sync_file_range() doesn't push durability barriers down the underlying storage devices, nor does it ensure that all metadata needed to access the written pages is itself written and made durable, for example when writing to a hole in a sparse file, to the end-hole created by enlarging a file with ftruncate(), or to fallocate'd pages.

As a result, that means sync_file_range() can only be used as a performance tweak, and not for any durability guarantees that fdatasync() / fsync() are used for.

I'd be delighted to find this has improved since I last looked, but that's what I recall about sync_file_range().

jlokier··on lsr: ls with io_uring
That CLA is a curious take, as the old, avowedly non-commercial, GNU foundational tools such as the ones we're talking about like "ls" in coreutils, have always required a kind of strong CLA to be signed from the very beginning, even when they wee new, nimble and fun to contribute to.

Their kind of CLA was designed to uphold community and openness values more strongly than GPL alone, by helping GNU to pursue GPL violators through the law, to fource vendors to release source code when GPL code was shipped in products..

So I've never understood the blanket "don't like regardless of what it says" attitude to CLAs and such.

Surely it should depend on what the CLA says?

Some people object to CLAs that grant upstream less rights than BSD/MIT/Apache licenses grant upstream by defaut. ("No way, the CLA lets them make. a private, commercial fork of my code!"). Yet the same people contribute enthusiastically to BSD/MIT/Apache projects with exactly the same upstream property ("I don't mind that the license let's them make a private, commercial fork of my code!").

jlokier··on I was wrong about robots.txt
With 1000s of bots per month and 10,000 hits on an ecommerce site, with product images, that's a lot of data transfer, and a lot of compute if your site has badly designed or no caching, rendering all the same page components millions of times over. But...

Part of the problem is all those companies who use AWS "standard practice" services, who assume the cost of bandwidth is just what AWS charges, and compute-per-page is just what it is, and don't even optimise those (e.g. S3/EC2/Lambda instead of CloudFront).

I've just compared AWS egress charge against the best I can trivially get at Hetzner (small cloud VMs for bulk serving https cache).

You get an astonishing 392x(!) more HTTPS egress from Hetzner for the same price, or equivalently 392x cheaper for the same amount.

You can comfortably serve 100+ TB/month that way. With 10,000 pages times 1000 bots per month, that gives you 10MB per page, which is more than almost any eCommerce site uses, when you factor that bots (other than very badly coded bots) won't fetch the common resources (JS etc.) repeatedly for each page, only the unique elements (e.g. HTML and per-product images).

jlokier··on My bank keeps on undermining anti-phishing education
I've had the version of that where I called my bank's listed number to confirm the incoming "call us on this number" voicemail was legit, and they said NO, the call is not a legit number of theirs, the account looks fine, I was right to check, and they agreed it seemed like a scam call.

A few days later I found out the call really was from the bank, and the bank had blocked my account, in a way that took a long time to unblock (don't get me started...). As ever, I found out the hard way, when I needed to use the account for something in real-time and it wasn't available.

But the call was from a different department than general customer support, the department's number wasn't known to customer service, and the account status change wasn't visible to customer service either.

So the bank's own customer service thought it was a scam call!

jlokier··on I want an iPhone Mini-sized Android phone (2022)
I don't think so. Yesterday I was browsing phones and there was a Google Pixel 9 Fold on dislpay, closed and showing something. That has a display on the outside and a foldable display on the inside.

I opened it, and most of the screen looked like a big, roundish black blob of ink, centred on the fold, on top of the Android animations working perfectly underneath, but only visible at the edges. I was impressed that the rest of the screen around worked perfectly, but it was unusuable due to the size of the black blob.

Something had broken at or near the fold while it was on display.

All other devices were in great condition; it was a well-maintained store.

jlokier··on A Rust shaped hole
In current machines, that's way off depending on how you choose to count "1 CPU instruction" for the metaphor.

Take Apple's latest laptops. They have 16 CPU cores, 12 of those clocking at 4.5 GHz and able to decode/dispath up to 10 instructions per cycle. 4 of those clocking at 2.6 GHz, I'm not sure about their decode/dispatch width but let's assume 10. Those decoder widths don't translate to that many instructions-per-cycle in practice, but let's roll with it because the order of magnitude is close enough.

If the instructions are just right, that's 824 instructions per nanosecond. Or, roughly a million times faster than the 6502 in the Apple-II! Computers really have got faster, and we haven't even counted all the cores yet.

Scaling those to one per second, a RAM fetch taking 100ns would scale to 82400 seconds, which 22.8 hours, just short of a day.

Fine, but we forgot about the 40 GPU cores and the 16 ANE cores! More instructions per ns!

Now we're definitely into "days".

For the purpose of the metaphor, perhaps we should also count the multiple lanes of each vector instruction on the CPU, and lanes on the GPU cores, as if thery were separate processing instructions.

One way to measure that, which seems fair and useful to me, is to look at TOPS instead - tera operations per second. How many floating-point calculations can the processor complex do per second? I wasn't able to find good figures for the Apple M4 Max as a whole, only the ANE component, for which 38 TOPS is claimed. For various reasons tt's reasonable to estimate the GPU is the same order of magnitude in TOPS on those chips.

If you count 38 TOPS as equivalent to "CPU instructions" in the metaphor, then scale those to 1 per second, a RAM fetch taking 100ns scales to a whopping 43.9 days on a current laptop!

jlokier··on Where's Firefox going next?
Oh... I'd completely forgotten that I picked a theme when those were offered.

So it hadn't occurred to me since then that I could change it.

I guess I count among the users who are still using a colorways theme. But after getting used to it, I ended up thinking of it as being what current Firefox looks like by default.

jlokier··on Cloudflare starts blocking pirate sites for UK users
To the surprise of many, Google recently announced it is already integrating ZK-proof-of-age into Google Wallet with those kinds of properties, open sourcing the underlying libraries, and working with governments to encourage their ZKP system's adoption for exactly this sort of problem.

- [2025-04-29] https://blog.google/products/google-pay/google-wallet-age-id...

- [2025-07-03] https://blog.google/technology/safety-security/opening-up-ze...

- [2025-06-11] https://zeroknowledge.fm/podcast/363/

jlokier··on Transition to using 16 KB page sizes for Android apps and games
> I don't know what "targetting Android 15+" means specifically. Does that include anything with a lower API level?

- On Android, apps are built with targetSdkVersion set to the API version you're app is compiled for and tested against, but you cam set a lower minSdkVersion to the lowest device API version your app will run on.

- On devices with API level newer than targetSdkVersion, the OS looks at your app's targetSdkVersion and disables newer behaviours than your app is targetting. So the app should run well on newer devices.

- On devices with API level older than targetSdkVersion, but newer than (or same as) minSdkVersion, your own app is responsible for detecting missing APIs before trying to use them, and adapting itself to the older environment.

- On devices with API level older than minSdkVersion, your app will not be run. This ensures the user gets a clear failure, rather than unpredictable crashes or unexpected behaviour due to missing APIs the app tries to call.

So, in principle, it's possible to build an app which targets the most recent Android 15, while being capable of running on all versions of Android back to version 1. Apps linked for 16 kiB page-alignment should run on older devices that use 4 kiB pages too.

The Google Play Store enforces that targetSdkVersion is fairly close to the latest Android version. But it doesn't place requirements on minSdkVersion.

jlokier··on Apple's Browser Engine Ban Persists, Even Under the DMA
Several comments point out this doesn't happen on Android.

I'm using Android, with my default browser set to Firefox Focus, and I found:

- Every few months, the default browser gets reset to Chrome. I don't know this has happened until I realise I'm looking at something in Chrome. Then I look at the default browser setting, see it changed to Chrome (without my consent, and as far as I know, no notification), and I change it back to Firefox Focus. This has happened at least twice in the last year.

- For a while, when opening things from Google Search it opened them in Chrome. However I'm unable to replicate that now.

← PreviousPage 6 of 34Next →