Some modern headset designs don't use the top cap to do that. There's a bunch of products that exploit that to put toolkits, spare CO2 canisters or whathave you in that spot.
Sure, threaded headsets (hardly modern, but they do still make bikes with those) don't use top cap, but they also don't have a hole at the top, which products you are talking about?
PS. I searched and found some in-steerer storage. It's not a headset but essentially a hollow compression plug replacement with a top cap moved to the bottom. I have never seen a road fork with a hole at the bottom so it is likely limited to MTB forks and, since there is no compression in that thing, it might be not very safe with a carbon steerer.
I ride several bikes so I would not know what to use the in-frame storage for. I want the things like repair kit (with batteries) and lights (also with batteries) to be movable between bikes so the batteries are charged in time. Even if all my bikes had in-frame storage it would be a chore to move its contents.
Meanwhile in another city not far away, the cards are instant but the gate has to think for a while. It's inconsistent too, so you inevitably run into it.
I feel either the gate is making international round trip calls through the internet to some SaaS service. Our it's actually doing a face scan and lookup.
Both Imgur and Reddit have put a lot of roadblocks up lately as well. I think some of it is driven by trying to reduce bot traffic.
It's quite inconsistent though which is really frustrating. I can look at the imgur homepage feed, but if I go into a specific post and accidentally click anywhere it throws a modal up that can't be dismissed.
If I go on a specific subreddit or post I can freely look, but reddit homepage now pops a modal you can't dismiss.
This is on mobile browsers, of course both sites are pushing their apps.
I am sure it doesn't align with their incentives so they don't care, I will never have an account and never install the app, but why block me from viewing the site if I am still seeing the ads? Does the free ad model just not pay anymore, or is the selling user data model just that much more lucrative that they would rather no user at all if they aren't logged in?
> It's quite inconsistent though which is really frustrating. I can look at the imgur homepage feed, but if I go into a specific post and accidentally click anywhere it throws a modal up that can't be dismissed.
That's not inconsistent, that's a deliberate dark pattern that every social media site uses. Let them see the first page, then when they want to engage: force creating an account.
When you just put a "log in to see this page" up front, people will bounce. When you have them engaged a little bit, chances are they are already invested enough to create an account.
It's not only social media anymore, many mainstream websites have started doing it.
For example on IMDB, you used to be able to read the comments, now they locked them behind a signup box.. it's only a matter of time until they lock the whole site down.
I wish we had the old internet, with simple html forms, texts and pictures.
The peek was really Web 2.0 design, it introduced just enough styles and interactivity to get rid of TABLES but no more than that.
The imdb move was truly stupid of Amazon, imo. I use to go there all the time for movie info but now its wikipedia and other alternatives and don't even bother with imdb.
That's not quite what I meant sorry, I meant Reddit handles it differently to Imgur (one blocks the homepage and one blocks deeper links but not thr homepage. I agree with what you're saying though
I remember using old.reddit to bypass login requirements and quite often it would let me read with VPN on (otherwise it kicks you out if you are not logged in with VPN on). Only recently did they introduce the same authentication blocks to the old.reddit, so I am assuming everyone was taking advantage of it
You have to log in to use old and new reddit now. The only way I can view reddit is through the mobile app without logging in.
They already AI shadowbanned me and nuke all of my accounts for participating in historical discussions that mentioned violent upheaval of power, thats why I can't login. I appreciate them helping me ween off using the site completely.
Thank you reddit, never thought I'd quit you. And I'm missing nothing but the exact same conversations over and over again.
This exactly, reddit and X can be good places to stay informed about what is going on in the world, but the constant negativity, astro-turfing and misinformation is quite unhealthy. I'm a fair bit more relaxed since 'reading reddit' isn't my morning ritual anymore.
I dropped Reddit after the Apollo/API fiasco and came here, and it's been a good change. I still skim Facebook occasionally for niche group stuff, by and large I just don't consider Reddit save for searches that take me there but the constant flood of interstitials has me avoiding it more and more even then
FYI web extension "Old Reddit Redirect" was just updated. Restores anonymous access and old reddit. I looked under the hood and it's just setting a "redesign_optout" cookie, so I'd say our days are numbered regardless.
> Does the free ad model just not pay anymore, or is the selling user data model just that much more lucrative that they would rather no user at all if they aren't logged in?
Traffic from google is probably in the process of collapsing, so these sites are trying to capture all the users they can as registered users before it's gone completely.
And yes, the free ad model is probably in the process of dying, the information that was once given away for free in return for looking at ads is now more valuable sold to llm's who will have the eyeballs going forward.
This will presumably make many on this site happy, since for many years an ad supported open web was consistently railed against.
> these sites are trying to capture all the users they can as registered users before it's gone completely
With the shuttering of nitter if this is what twitter wants then the least they could do is let you create an account. You need apple or google for that. It seems like they shut the front door some time ago and now drew the curtains so people couldn't peer in.
They managed to make it enticing enough for me just to see one person's posts to enter my email but said "fuck off and get the app". I'll have to make do with the 5 posts they show without login
> the information that was once given away for free in return for looking at ads is now more valuable sold to llm's who will have the eyeballs going forward.
Imgur is 80% posts of text for people trying to post political messages vs what it used to be, interesting or funny pictures
I guess that's their traffic so that's their market but ugh. Imagine if flickr or some other photo site was run over by people posting photos of text messags.
I discovered recently that a big part of this is that sites weight photos of text higher than text.
I learned that the LinkedIn meta of photos of posts is because their algorithm de-ranks anything with a link, so for farming you should post a picture of text then follow up with a link to a blog post a day later as a comment reply to the post to double-dip the activity.
And, eurgh, so many bad incentives to just make everything worse.
If you earnestly just post a link to a blog, it weights you don't because they don't want people leaving their feed.
And actual text people spend less time hovering than photos of text, so again, down the ranking your post goes.
I don't spend much time on other social media but if Imgur is all just photos of text that won't be an accident, but it'll be what sites optimise for.
What imgur used to be was just an image host for reddit. Then they tried to make it into a separate community thing and reddit added their own image/video hosting.
I remember when Imgur tried to become a self-contained community.
Reddit users would post an image in Imgur and the "community" would reply complaining about the lack of context, judging appearances or just being mean in general. The nicest ones would ask users (that would never read anything) to make the images private.
Bots are the noisy excuse they can scream and point to. You look at the mobile reddit app or the new reddit interface and you think these javascript “devs” are capable of forming any valid opinion on these things?
This is the company that refers to its users as “daily active shitheads.” That’s a real quote.
They’re just screaming and pointing to anything they can so they can lock it down and gain more favorable data to sell and more legitimate accounts to show advertisers. That’s what it always is.
I’m never wrong and I’m tired of fake imposters devs telling me I am wrong at every corner of every single topic when I turn out to be right 100% of the time.
> I’m never wrong and I’m tired of fake imposters devs telling me I am wrong at every corner of every single topic when I turn out to be right 100% of the time.
If you truly believe this, then you should probably seek therapy.
Actually you can discard those annoying popups on reddit using some HTML element blocker (e.g. “hide distracting element” on safari or the picker tool from uBlock origin)
I had some success with these for logged-out browsing ever since old.reddit was locked down completely
Imgur has been totally unusable in the UK for a couple of years - it's an irritant, because it's used for so many image embeds and I'm reluctant to fire up the VPN just so I can see someone's meme that they posted on a forum thread. Nobody has ever used Imgur as a destination site, it's a utility, and any attempts to make it a destination or an app you'd deliberately open are futile.
Reddit isn't so badly impacted, but there are still age-walls around some of the content where it's been deemed "adult" (which encompasses more than just graphic adult imagery).
There's a chrome plugin called 'MirrorImage'[1] that basically rewrites all imgur links/embeds to use a proxy service, it seems to work pretty well to get around it.
I dare say something similar also exists for Firefox
I recently deleted all of my Reddit accounts. The website had been unusable on mobile for a good while, with the constant and ever-more-aggressive nagging about switching to the app. Old Reddit was the one thing that made the site still usable. And now that requires a login.
So fuck that. Bye Reddit. I'll miss some of the communities.
Same, the few communities that are worthwhile I still lurk through photon-reddit. It's a pity how the site went down, I only hope their stock value goes down in the same way.
It's been real annoying to no longer be able to visit reddit posts for search results as it has been the de-facto public forum where recommendations and solutions to issues get posted for a while now. Never going to login there again though and I think I will follow your example and have them delete my account.
Which in turn reminds me of Soundblaster audio cards! I suspect inference chips are closer to the GPU story than the Soundblaster story though.
I remember one soundblaster card I bought came with a Lara Croft demo, that exploited the incredible immersion of real time dynamic reverb.
Genuinely I think game audio took a few steps back from that heady era, the innovation in audio likely didn't sell as many cards as graphics innovations did.
EAX was very powerful in its heyday, but it has died because of a thousand cuts.
First we had to have the audio processor. Good EAX was available on top of the line cards, and they were not always cheap. Lower end chips got less features.
Then we had to have the speaker setup to have the greatest sound, or needed to get a real 5.1 headphones, which were bulky and never provided the same fidelity.
Then Microsoft changed the Windows driver model, cutting the driver's direct access to the card. All of the timing sensitive effects were gone in an instant. I remember installing the new drivers and getting literally nothing. Sound Blaster was the only card with an hardware mixer, and Microsoft didn't feel like enabling them. Mixing at the DirectX layer killed the cards.
Soundblaster's very closed stance didn't help them either. None of the cards after Audigy2 worked with Linux when I had my desktop system.
After my Audigy2ZS, I moved to Asus Xonar D2X. Its positional audio capabilities were nice, but I mostly bought it for its Linux support and sound quality, and that was top notch in that regards.
Then sound cards became commodity. Everybody stopped making good cards. Musicians moved to audio interfaces, audiophiles moved to DACs.
Just looked to the SoundBlaster website. Internal cards are very limited. One DAC, one DTS enabled 7.1 sound card for PC cinema systems, three game oriented lower end cards, nothing else.
Creative Labs also turned itself into a brand I actively avoid for various reasons.
In early 2000s for example, friend with something like a Sound Blaster Live, but couldn't use it anymore as they lost the drivers, their website only had downloads for driver updates, requiring you to still have a driver CD, so no more CD meant no way to get the drivers.
They had not done very much meaningful stuff since the release of EAX and used patents to prevent anyone else from competing with them. Onboard sound cards were by and large indistinguishable from a quality perspective as Creative Labs ones, but cheaper which Creative Labs combated mostly with lawyers as opposed to upping their game.
Some guy after being frustrated with a long-standing bug in drivers for their Creative Labs sound card, dug into the binaries and made a fix for it. During which they also discovered that you could simply flip a switch in the driver to unlock features only meant to be available on more expensive hardware. Creative Labs of course went straight to lawyers to shut them down.
My brother bought the Creative Labs WoW headset which would have its mic get progressively softer until he would leave and re-join the call/voice chat room. They never released a driver update to fix this.
By the time that Microsoft announced no more "hardware acceleration" for sound cards, I had zero sympathy for Creative Labs, I was already convinced that they made pretty shoddy hardware/software and were mostly riding on their reputation from the 90s and some patents they managed to get.
As you mention the 90's you're probably referring to their embrace, extend, extinguish strategy. This situation with the sound card hardware mixing was quite different and a lot later.
Windows Vista moved away from kernel mode drivers where possible to help address the issue of BSODs which were not uncommon on Windows XP. It turns out that Microsoft was incorrectly getting the blame for BSODs when it was actually the fault of buggy video and sound card drivers.
While Vista was regarded as a "bad" Windows, it laid most of the foundations which allowed Windows 7 to be regarded as "really good" (by Windows standards).
From a hardware perspective, by the time Windows 7 arrived pretty much all drivers had been updated for Vista and had their kinks worked out (mostly, I would still have my NVidia drivers crash on occasion, but because they were user mode now, instead of a BSOD the screen would go black for a few seconds after which my desktop would come back with a Windows pop-up saying something to the effect of "the video drivers crashed and had to be restarted", the real perpetrator now being blamed!). Windows 7 also did optimizations to make things less resource intensive and it also helped that PCs had more RAM compared to when Vista came out.
On the UAC front Windows 7 was also much better, they calibrated the UAC prompts to come up less often, but what also happened is a lot of the 3rd party software which was needlessly requiring admin rights for no good reason (except that it was badly written), had finally been fixed by the time Windows 7 was released.
Eeeeeh idk about the Sound Blaster comparison. Creative earned their place in the early-mid 90s solely because they were the one company making a sound card with drivers that actually worked properly.
It wasn't really the cool reverb effects or wave tables, though those were a nice bonus. It was just "I can tell my computer to make sound and it actually makes sound without days of troubleshooting."
Granted, similar things could be said about 3dfx. It's was a 3D card with drivers that actually worked.
And then there's the obvious "sound blasters and voodoos go in my computer, jalapeno goes in someone else's computer" thing.
I recently heard, for the first time, what Space Quest sounded like with a Roland board attached. It was mindblowingly amazing. And all most anyone ever experienced was bleep, bloop.
Fair warning, I have found local models and frontier models to be very bad at the specifics when it comes to cars.
Small differences like month and year model can impact oil capacity, oil weight and things like that, the details that matter quite a bit.
I found frontier models couldn't get things like what engine was in a 1994 Nissan Skyline, one of the more infamous and talked about cars on internet forums for decades, with dedicated fan databases that would have been scraped.
Questions like "what air filter do I need for my 1994 Suzuki Swift?" are hit and miss.
Yeah referencing is the way to go, as even finetuning probably captures style more than concrete facts. I know with large context windows we don't really RAG anymore, but for owner's manual lookup with a smaller model it seems ideal.
Something every LLM user ends up learning is that they're far better used as search and summarization tools than as knowledge databases in themselves.
Just a few hours ago I gave ChatGPT my window sticker and the installation manual for a new suspension setup. I asked for new hardware that would typically be replaced during this install, like torque-to-yield bolts and fasteners. I also asked for new oil filters. I got a comprehensive grid of the exact part numbers needed in a nice dense table. sol 5.6 high is my daily driver.
So far so good, hasn’t failed me yet. It’s done a stellar job chasing down parts for my cub cadet lawn mower too. Sorted out mid year model revisions and everything. I just gave it the sticker under the seat.
For prompts that needs fact-checking, I like these days to use Perplexity directly instead these days. It's way faster than the default websearch tool + give a link to the reference directly.
The setup here would be that your Sol would talk with CarWatch asking about the state of different car parts, service indicators and CarWatch would give a prioritized replacement list, and Sol could explore the detailed setup of your current car so the new suspension would be configured best. They could both ask you for more info on what type of driving you're planning.
So local and cloud agents figuring out the best solution together with none of your time needed.
Even so, in this case, author is using UD-Q3_K_S dynamic weights for Qwen3.6-35B-A3B, it will be dumb. Even the BF16 weights do stupid stuff like missing to confirm all parameters are defined when doing "rm -rf directory/$id", so it ends up deleting more than expected, I can't imagine the Q3 are actually useful for anything serious, even with tool calling or what not.
I've been very impressed by it's intelligence and lack of hallucinations. The dynamic Q3 is a good balance between accuracy and size keeping the 35B just below 16 GB. It is not supposed to know everything, it is your car. It actively disengages from off topic chatter (too slow for that anyway), better spend that time feeling the car.
It keeps itself grounded on sensor input. One principle per wheel. assert only what you can sense, claim only what is verified, label anything interim loudly, and report failure plainly with no silver lining. Everything above those four patches is just suspension.
> . The dynamic Q3 is a good balance between accuracy and size keeping
I'm having a hard time understanding how you find any sort of accuracy in Q3, when I use it with BF16 and it's hardly usable due to drastic hallucinations and inability for system prompt following. But, if it works for you, that's pretty good! Guess I'm jealous :)
One of the biggest causes of slowness is just waiting for web requests. The fact that so much software is either online or built using the same stack even if it isn't, puts all that software in this blocked/waiting state constantly while using it.
Anyone not in the US feels this even more since so much online is US hosted, 300ms for every little interaction adds up quick.
If your software has the affordance of a waiting dialogue or loading wheel for many of its UI controls, you are building with this default blocked assumption. Even if you are building something web based, ask yourself if that's actually necessary for your software or if you could build it differently to avoid constant UI blocking.
This is an incomplete and quite superficial view of what is going on out there, in my opinion. I've worked on plenty of projects where the assumption was that since the round-trip to the server is going to take almost 100ms that'll dwarf anything that's going to happen on the server itself, justifying poor choices that lead to potentially adding a whopping 100ms onto that number. These numbers only get larger with a larger perceived "Nothing we can do about it" budget as well, programmers often feel justified in doing just about anything once round-trip time grows, not understanding that they're just adding to an already existing problem.
On top of that: Creating software that isn't outright wasteful in terms of performance isn't even hard, it's just a matter of not doing ridiculously dumb things. The problem I've observed in teams I've worked with is that the majority of programmers don't even know what the dumb things are, and wouldn't know how to even approach making something that's halfway fast.
Edit:
Unfortunately I think posts like these are only going to make the problem worse, because now people are going to ask for voodoo solutions to performance issues, when the answer to their problems was usually just "Maybe stop creating wasteful intermediate structures and just walk an array like a sane person" in 99% of cases. The first leg of any optimization journey in the average programmer's code will likely net tens or hundreds of times faster code, and that's actually all people were asking for.
The knowledge required to make those changes and understand them is fairly minimal, but the kinds of people who have to create spinners for webmail interfaces, have their application add 150ms on top of whatever round-trip you have for processing things counted in 5 digits, etc., have never bothered to even learn those things.
I don't think it's superficial, but two problems adding up. Previous poster is talking about general latency issues because everything is networked and potentially quite far away.
What you point out is slowness once you hit the entry point. Go, or similar languages, as a server language platform could have solved that problem from a computational perspective. But it did not for the most part. In my opinion people choose the faster stuff because it's cool and they have more wiggle room to cram in to get back to the slow status quo.
Everything is overengineered, software or distributed architectures, sound to naive human logic but alien to computers. It's an cultural problem, development is so deeply entrenched into "business logic" that the minimal viable and computational economic solution isn't even on the table. I don't even think it has to do with cost or feasibility, it's just that your random e-com manager wouldn't know what to do with you, if a programmer really starts talking about hardcode tech stuff.
A friend of mine was once tasked with writing a kind of simulation that simulates millions of scenarios per session/run, and searches for a best-so-far solution while doing so. He proposed writing it in Rust (justifying it as: fast, low level, fewer memory bugs, fewer parallelism bugs (so potentially faster than "fast")), and management over-ruled them, and insisted on using raw/plain Python (without even an underlying C library), "because that is the industry standard", and "premature optimization is the root of all evil", and "nobody else knows Rust"[0].
Another friend, worked at a company, that got a new manager (I think as a result of a merger), and that manager halted all work on "yak shaving" projects. These "yak shaving" projects were things like logging, and debugging, and some kind of integrity-verification. When asked why they were being halted, the new manager said: "none of our customers asked for any of these things". When told that these things enable the team to produce a better product for the customers, the manager (I am told) looked at them with confusion and suspicion. Those projects were never improved since, and the product stopped improving as well. I am not sure if it affected their business (the pandemic was much more distortive).
What you call "business logic", is not even logic, and it has little to do with business. It is what Feynman called a "cargo cult". The obvious name for it is "cargo cult business management/logic".
It truly is embarrassing and shameful that after decades of idiotic decisions, it took a _trillion_[1] dollars of investment into a chat-bot technology, to finally crack open _one_[2] door to slightly less idiotic decisions, while opening dozens of new doors to decisions of an unknowable character.
Most companies (and, consequently, their engineering organizations) are simply _cosplaying_ as the things they are supposed to be.
I do not see how an AI assistant (or any kind of assistant or consultant) can save these fools from themselves. The only logical explanation is that most software companies are cursed -- you would have much better luck engaging a witch-doctor.
[0]: Nobody else knew C or C++ either. The fact is, that nobody cared. In fact, even Go would have been a better choice than raw Python, but nobody cared. Even Common Lisp (which is at least as abstract as Python, and has native execution speeds (GC and runtime type-checking can be turned off for compute-heavy workloads that mutate data in-place)), is a better choice, and yet, an _abundance_ of obviously superior options (all implemented and maintained by obviously superior engineers) was not enough to prevent the organization from choosing an inferior one, and using it stupidly (without a fast native-code component).
[1]: I see estimates from hundreds of billions to a trillion, depending on how you count it.
I have a new laptop with a rtx 5090. Opening any GL context takes more than half a second. There's tons of things that can be optimized and are pretty far from web.
I assume you're running proprietary drivers? Because I've never experienced anything like that on mesa. Launching an app that opens a window with a gl or vk context is so fast on my almost 10 year old hardware that it's nearly imperceptible.
There must be some quirk of whatever combination of software packages are installed there, but the proprietary drivers are not the culprit, at least not alone (i.e. there could be some interaction with other software packages with which I have little experience, like Gnome).
I have been using the proprietary NVIDIA drivers for more than 2 decades on various hardware, both desktops and laptops, mostly with Gentoo Linux.
Opening an OpenGL context or any other OpenGL operations have always been instant.
So the usual self inflicted misconfiguration then.
In similar style I recently wiped a device that I thought had firmware that was slow to boot but it turns out that a hang and subsequent timeout due to something I had long ago misconfigured had been obscured by the previous setup that defaulted to hiding all details during boot.
No idea about your setup but that's probably a fixable driver issue. My desktop with an RTX 40-series GPU takes _maybe_ 4 frames to create an OpenGL context.
linux without the proprietary nvidia drivers is slower than the proprietary ones. try switching to them if you can. either way nvidia is worse on linux than amd.
Yes. Apple Music is the most egregious example of this. It could be ridiculously fast on your pocket supercomputer but the moment a web request gets fired off from stumbling blindly across the field-of-dung user interface, bam, you’re done. Especially if your network connection isn’t great at that time.
Things like this really pushed me to everything local systems. I’ll move actual files around if I want to do anything on the network. Or sometimes even use cables! Shock, horror!
Sonos’ app is another example of this. As a very brief tl;dr if anyone isn’t aware of it, Sonos is a wireless speaker company that can group speakers in different rooms into zones, so you can have different music playing in different rooms, or all the same, or at different volumes, etc. The quality isn’t going to blow away audiophiles, but IMO they’re legitimately great.
The original design had the speakers setting up a private mesh network, and the app would send commands directly to the speakers via your LAN. Then, they got the brilliant idea to route commands via their cloud service. The app would send commands to an endpoint, which would send them back to your speakers. Imagine trying to smoothly fade volume with a WAN hop. This went over as well as you’d expect, and they’ve since promised to work on performance. Thus far they seem to have been doing so; it isn’t as snappy as the original, but it’s quite a bit better.
So many developers do this, and it's infuriating. I have a device sitting there on my perfectly good LAN, yet if I want to remote control it, the brilliant software decides to send the commands to the Internet, then back to my device, then the response gets routed to the Internet, and back to my phone.
Device developers, stop doing this! You people realize that LANs exist, don't you?
I was doing firmware + mobile a at large-ish startup a decade ago. Same story as Sonos; there was a push to go all cloud instead of our local network implementation that worked great.
I argued breathlessly against it for days. I’ll never forget the sales chad raising his voice to shut me down with a cop-out:“This is the way the industry is going!”.
And look what happened to Sonos soon after that! I’m sorry, but I’ve gotten to the point where I would’ve just yelled back at the guy “Prove it, chudmuffin! You’re advocating for something you know nothing about and sending the company in a disastrous direction which will lead to its demise. If your idea is so great, then you prove it’s better than decades of established precedent at the largest companies in the world.” Then watch their head asplode and challenge me to a fistfight in the parking lot. Yes, I’ve had that happen with a sales “guy.”
Not saying that’s what you could or would have done, I’ve just gotten to the point in life where I’m alreaover it, ready to throw it back at them. Maybe it’s from living in this part of the world, but our plumber said “always be ready for people to be mean to you“ and while it doesn’t make for a very peaceful life, it certainly makes for fun ripping heads off.
Developers know better, but they are overridden by management and suits. Which pays their salary, showing that doing better usually gets sidelined by doing what’s good for you.
I have a large and varied experience of “developers”. The majority aren’t any more morally virtuous than a brick. They wake up, get down to the sausage factory and make sausages.
Again this is mostly our biases playing us. Within HN and similar communities there are a lot of above average and caring developers. Those who don’t care aren’t going to be here to look like they do.
I'm not letting the developers entirely off the hook. At many companies, they are decision makers too, and partially share the blame with their product leadership and other decision makers.
Unpopular Opinion, but if you have absolutely zero say in the content of what you're developing, and just take orders from JIRA, you shouldn't call yourself an engineer. You should also keep your eyes open for a better job.
Agreed. Plus, if you can get an entire team to tell the PM “this is fucking stupid, we aren’t doing it,” what are they gonna do - axe an entire team? I doubt it. Maybe at big companies, but small ones? Nah.
I agree and see this as a side effect of a subtler thing. As people shall be replacable, software is designed and subtly mimics the organization's communication patterns. Features are cut up into the tiniest pieces with clear separation from the start (at least its claimed), and over time whatever change or feature seems overly complicated, won't be done or won't be done in a sane manner because its uneconomical.
You are starting to get software with ticket driven development layered around glue code for existing libraries. I see no problem with libraries, it is just the architecture and vertical understanding that leaves a lot of performance on the table, because refactoring insanity takes resources and a lot of talking, understanding and convincing to be done.
Doing this across big teams starts to have downsides. So one team doesn't have a particular use case implemented or understood it and does not want to support it and you run code to compensate for this.
"Do not fall into the trap of anthropomorphizing Larry Ellison. You need to think of Larry Ellison the way you think of a lawnmower. You don’t anthropomorphize your lawnmower, the lawnmower just mows the lawn - you stick your hand in there and it’ll chop it off, the end. You don’t think "oh, the lawnmower hates me" – lawnmower doesn’t give a shit about you, lawnmower can’t hate you. Don’t anthropomorphize the lawnmower. Don’t fall into that trap about Oracle."
I feel this is so much real. Like if there were two kinds of companies: the ones who deliver, they care about their product but most of all they care about their customers, the managers get their hands dirty and everyone pushes towards the same direction; then there are companies in which you open a ticket and wait for two weeks for something that should take 5 minutes, customers and product don’t matter because you’re focused in cost attribution and no body does anything if it doesn’t come in your JIRA board, the managers are all coming from consultancy companies and all they do is finding someone to blame.
I could go on about this all day. Best meme is when you estimate stories for storypoints and then they haggle with you without changing the content of the story. Meanwhile points mean actual time. Then on another side if you haggled down points, you then have more slots for more points. So you end up getting assigned 3x work for the same time. The blame game starts when the sprints elapse lmao
Storypoints do not mean "time". Time would be too concrete and measurable and would be bad for selling more agile coachings.
Instead storypoints represent "effort". What does it mean and how can it be used to estimate a shipping date? I was told that I just don't understand.
The only ways out of these situations are: a manager that understands what you’re doing; knowing that these “story points” are just indicative and there’s no broken incentive towards gaming them.
This is kind of a shallow assessment of "slowness". Slowness is a feeling, not a fact. Network is slow as a rule relative to other parts of the stack, but it is not usually what contributes to the feeling that your software is slow. It takes a good amount of incompetence and arrogance to cultivate that particular experience.
Fair, it's shallow because I was succinct however, I do understand the problem space more in depth than this.
But if I were to pick one single thing that would speed up the most UIs across the board, it would be poor handling of the UI in networked systems. As you noted, that doesn't mean eliminating them, it means handling the inevitable in a way that doesn't tank the UI feel.
True, dev environments are fast. One dev implements a wrapper with roundtrips, another integrates it into a UI and no-one stops to think if it'll have terrible lag in practise. They don't notice so even if there's a ticket it'll starve and end up WONTFIX.
Somehow I don't think I'm the only one who presses a button and when nothing happens presses it repeatedly until something happens, or I kill the app, or even power off whatever piece of shit computer I'm using.
The UI threading model is usually not the problem.
The problem usually comes from inappropriately arranging the systems of record such that information needs to be communicated beyond the scope of one computer in order to satisfy a single logical request.
Moving information between physical processors tends to be significantly more expensive than local computation over that same information. JSON serialization is a really good example of this. You need a network with bandwidth in excess of 10 GbE to begin overtaking simdjson.
SSR or SPA doesn't really matter if the server still takes a minimum of 300ms to compose any kind of response due to how its database or other infrastructure is set up. Information theory doesn't care how clever your loading indicator is. If the information isn't available, we can't do anything meaningful. Stringing the user along with psychological tricks is a lot cheaper than hiring a skilled developer to do it the right way.
Networks are much faster than you think, it's networked software that tends to be slow. 10 GbE is now table stakes, you should fire any vendor who can't offer it. I certainly don't require your internet connection to be 10Gbps, or all your desktop machines, but your internal server network should be if you're building a new one in 2026, because there's no excuse not to any more.
> Information theory doesn't care how clever your loading indicator is. If the information isn't available, we can't do anything meaningful.
Yes we can - we can fix why the information isn't available. If someone said to you "sorry, we don't have the info because the other thread is doing Sleep(5000);" you'd call them an idiot right? You'd go and delete the sleep call to make it faster. Most real problems are harder than that, but there's no fundamental rule saying your database has to be slow. Ping time across your LAN is probably under a millisecond, so where are the other 299 milliseconds going? Is your database doing a full table scan? Is it using spinning rust for frequently accessed data?
The majority of companies are building their stuff entirely in the cloud, where network speed scales with the instance size. I have had to explain this to multiple engineers at multiple companies, who are surprised to learn that network bandwidth isn’t unlimited.
As to your database comment, IME most of the time the bottleneck is the ORM and/or language. The amount of work an ORM does to generate a representation of a row is frankly shocking. Not understanding the cost of context-switching is the language half of it: Python, of course, is single-threaded, but you can use greenlets to cheat, because they’re I/O bound — except for all of them serializing behind a single process handling serdes for the queries.
It isn’t, but at the same time, smart hackers were working with highly constrained PC hardware in the 1980s and early 1990s and were cranking surprisingly good performance out of it. Folklore.org has plenty of stories about it, and John Carmack’s early career history is very impressive. We mustn’t forget the demo scene hackers either.
Recently I tried an approach of "just write the f*** code" instead of using infinite abstractions on a new UI side project. So for instance when you scroll, it shifts the pixels and just redraws the new exposed area. This is how stuff worked in the 90s. And it's blazing fast and uses very little memory. It's easy to mess up redraw code like that - in my case, when the window goes past the screen border and the pixels to copy aren't there. That's a bug we also had a lot of in the 90s.
That's why phones and windows use animations. You can also use intersitials related to the product you sell. Users are usually fine seeing many changes on the screen quickly because it gives the impression that stuff is happening on the background. For example in the interstitial, use an animation that takes up a small portion of the screen and not just a simple spinner or loading icon. Something more complicated with 2 or more things moving or changing at once.
If your app absolutely must rely on the cloud for every one of its interactions, then fine. If not, you're just applying band-aids to a problem of your own making. Many apps could easily be local only, or local first. If you're not constantly accessing the network for information which could be stored locally, then you don't need to hide your app's slowness behind animations.
Canva replaced PowerPoint. Canva is cloud based and PowerPoint is not. There's so many apps that are cloud only so that corporate it no longer has to manage installations and users don't need to ask IT for permission anymore. I think SaaS doesn't really work without the cloud, you could technically do what adobe does but why bother with app distribution and windows' quirks. Cloud based web apps are write once, run anywhere come true with no installation required. Cloud based is more convenient for the user and the developer, at the cost of app runtime speed
I like this example. A lot of people would prefer to use PowerPoint because they can still use their files and templates they made last year even if Microsoft doubles the price of Powerpoint, removes features, discontinues the product, or goes bankrupt.
They literally unlicense the product out from under you as part of windows update. You’re the one having to sue, unless you never connect your machine to the internet anyway.
I have seen many companies migrate to gsuite away from Microsoft. It's perfectly compatible with excel, word and PowerPoint files unless you use macros
Just nerds I think. I'm not seeing any evidence that people who want freedom from the cloud make up any sizeable market segment. Most corporations actually prefer the opposite - they prefer a monthly fee and continuous silent updates.
I'm not familiar with Canva but I don't see any technical reason why every interaction would need to rely on the server. Since Canva uses client-side JavaScript, it could be designed so that the local version of a document updates immediately and the cloud version syncs with the local version as soon as possible.
I would guess Canva already does something like this.
My bad, I mean the interstitial. Like it should stay for at least a second to not make it jarring. People believe computers need to think so you can't make things too fast either. Not the interstitial and not the app either, to the point you sometimes have to deliberately slow down the app, add latency to make people trust it because it "gives the computer time to think"
Power users absolutely hate this mindset. It’s resulted in Apple animations taking seconds for something that was done before the animation even started.
The delay in filing email in iOS is incredible. Selecting and moving a single message can take over a second, even with animations disabled. Maddening for what should be an instantaneous action.
I don't doubt that was an original justification, but most of what I see are not for this purpose. Most of the time they're just adding unnecessary delay and CPU cycles.
This is why my most recent website does its server-side rendering on the client. I'm not even being that sarcastic. We stream a subset of the user's data (1 mb at most) in the background and have a WASM client that has the exact same server views. On SPA events, the WASM blob intercepts a lot of requests and can instantly render. Makes a laggy connection feel pretty quick.
Are you counting mainframes with dumb terminals then smart terminals then PCs, early SSR websites then web 2.0, the multiseat/thinclient craze of the 2000s then computers becoming cheap enough to stick them to the back of monitors?
I think a lot of the time when people say the network is slow. They really mean their backend is slow.
With a fast backend ~1-5ms response times (not even that fast). Streaming compression over something like SSE to keep your response sub 1kb packet (roughly an ethernet MTU).
With a push based model, pushing data to a user is half their RTT latency. They will only experience their full RTT on actions they trigger.
Now the network to you is distance to the server (not your rail/nextjs backend taking 400ms). Things like 4G and 3G are fine. The real problem is when you have such bad signal you effectively have no down or up.
I don't know how hard it is. But I can certainly say there is no business inscentive for it.
When it comes to improving performance by a few ms, or implementing a new feature, business people will always choose a new feature, unless the current performance is unbearably slow (we're talking regular 1.5s+ wait times for BE response).
And it's not even a modern problem, legacy software written 20 years ago has the same latency than most modern backends from my experience.
> With a fast backend ~1-5ms response times (not even that fast).
Even though benchmarks suggest this sort of performance should be trivial, most real-world servers I have interacted with do not reliably managed to process a request, make a roundtrip to the DB, and return a response in <5ms
Project into sqlite on your app server is the main trick I use. Denormalize if you have to.
Hell, for a lot of projects you don't even need to get that fancy. Run a single server with an embedde database, running Go or Java and you're good to go.
More to the point it's that the server has to retrieve and massage data from several docker services to retrieve the full context needed to process the request
Yes, but my point is that it's an awfully shitty fallback if you need to wait 30 seconds for something to time out first.
It's one thing not to e.g. spend the extra time to ensure everything is cached and mutations are queued up. It's another thing not to do the bare minimum to ensure what is already available and working locally is gated on the network being up.
Case in point: The other day I was checking our train tickets in an app, and the network was awful, and the train tickets which the app has local copies of took 30+ seconds to appear when the network went down. Everything I needed worked once the timeouts had been hit, it was just ridiculously slow waiting for timeouts for functionality I wasn't trying to use to be hit first.
Yeah, those apps were all coded in perfect network conditions and the designers refuse to change the UX to inform user about origin of data (offline, last cached X mins ago etc.)
> If your software has the affordance of a waiting dialogue or loading wheel for many of its UI controls, you are building with this default blocked assumption. Even if you are building something web based, ask yourself if that's actually necessary for your software or if you could build it differently to avoid constant UI blocking.
UI blocking can make sense in some situations; otherwise things "happen" suddenly that are unexpected.
I'm making a simple plugin for Gimp that sends the active layer to a model with a prompt; on Macs by default the UI waits for the request to come back or timeout; on PCs it doesn't, so the modified layer appears unexpectedly. The Mac experience is better IMHO and I will replicate it in the PC version rather than the other way around.
Can't they use ML to predict where I'm going to click, and pre-cache the predicted page whenever the predicted button doesn't mutate important state? Or skip the difficult ML and have some basic rule of thumb that pre-caches frequent button clicks, using a markov chain, and conditioned on those pages being low bandwidth to pre-load.
So Next.JS actually pre-fetches links when they move into the viewport or you hover over it. It's interesting, but then you get wasted battery on mobile while on bad networks. The world is full of tradeoffs. Tech workers tend to want to consume more battery and data to be faster. Other people want to do less work.
segor.de goes one better and just downloads the entire catalogue when you first open it. About 2MB decompressed. Clicking and even searching is instant because it's all fully client side until you place an order.
Funny thing is it apparently predates JSON. It's a bunch of data[foo][bar] = baz; - go look.
(Website's in German obviously, and a surprising number of German electronic terms are very different from English. They use two different words for stranded and non-stranded wire.)
> pre-caches frequent button clicks, using a markov chain
I don't think the current crop of fullstack engineers would be hard pressed to know what a "markov chain" is, but in theory yes, you could emit a bunch of speculation rules[1] based on your predictions.
I should also say that markov chain based approaches have been used for fraud detection, e.g. identifying checkout anomalies by detecting the sequence of web pages that they clicked on, amongst other factors.
If we stored the edges (links) and nodes (pages) separately, rather than requiring you to blindly run a node's code just to discover what its edges might be, then you could skip the prediction and instead pre-cache the next hop for all edges just in case you follow one. You could even do this to two or three hops.
This might seem wasteful, but if the web were content addressed instead of server addressed you could then be serving that cache to your municipality even after it became disconnected from the rest of the internet. Which sort of recasts it not like wastefulness but instead like fault tolerance and preparedness.
We could maybe even dispense with the servers entirely.
There are so many different ways to build a web. Why does it feel like we've landed on the worst possible one?
>but if the web were content addressed instead of server addressed you could then be serving that cache to your municipality even after it became disconnected from the rest of the internet.
This is already possible without content addressing with CDNs. They can serve content from a local cache even when the host is disconnected from the internet.
And the first thing webdevs did once this became widely available, is change their apps to cache-bust their code; between that, and the short release periods in webshit ecosystem in general, and security and privacy considerations messing up things as usual, the promise of users mostly hitting just local cache with any marginal request, never materialized.
Interesting. Is this common? Like, is there some way to enable it on my LAN so that when I become disconnected from the internet I can still browse pages which were cached by other devices on that LAN?
> If we stored the edges (links) and nodes (pages) separately, rather than requiring you to blindly run a node's code just to discover what its edges might be, then you could skip the prediction and instead pre-cache the next hop for all edges just in case you follow one. You could even do this to two or three hops.
Right, but my browser doesn't interpret that. The site tells me to run some code which interprets it.
I should be able to get the lay of the land without trusting the site enough to blindly execute whatever code it points me at. It's needless attack surface.
Also it's not really pointing me at data, its pointing me a certain kinds of requests which I have to trust will be responded to consistently. I'd much rather have a hash so if I have that data lying around I can just forgo the request entirely and use what's present locally.
1. You need write access to the server if you want to add one
2. The server could change its behavior at any time and there's no way to know that caches now need to be invalidated
3. If something goes wrong with connectivity or name resolution, there's no fallback since the authoritative thing was not something durable like a trusted human via a public key but rather an ephemeral thing: a named server which has pinkey promised to stay online.
It asks the user to treat a server like a trustworthy source of perisisant data.
But there's no reason to couple these kinds of trust. The skills necessary to persist and traffick data are orthogonal to being trustworthy about content. Coupling them creates needless load on single sources of failure which are simultaneously single points for corruption to target.
Trust people, not servers. Use digital signatures to validate that what you're seeing came from those people.
<a> tags are the opposite of this. They encourage us to trust servers by name, which isn't really working out.
The problem isn't in preloading, it's in how much data needs to be sent while quite probably most of the data could be either fetched on startup in an efficient format and rendered natively, or is completely unnecessary in the first place (telemetry, ads).
This exist but the downside is that it uses much more of your bandwidth and client resources (probably not matter in many cases but it does if on a phone in a country with bad connection) and your server resources (if not mostly static content)
Oh god, don't give them ideas. All ML is in-cloud AI now. I dread the day everything around my mouse movements needs to get tokenized and vibed into the ClosedAI cloud before my buttons start working again.
There are CDNs everywhere, true. It is not true that everyone deploys to them all, though. Also it dodges that the networks available to everyone are still not equal.
That only helps the assets, does nothing when they run their actual backend servers in one of the US aws regions and your traffic has to traverse the planet anyway.
I think that "almost everyone" has a multi region cdn, but fewer have multi region application deployment, or cdn workers handling a significant portion of the application logic. My experience here may be incorrect or not generalizable, but I've rarely seen web apps that are slow due to latency loading static resources, but I've often seen slowness from high latency of the API calls and due to large static payloads.
This has been my bugbear for years. Even in places with good cell service on average there's a hundred individual places that have terrible service. Also a good signal to the handset doesn't necessarily mean good actual service. It doesn't even require traveling, just normal daily movements to get wildly variable network performance.
It's infuriating when it's obvious that the developer of an app only ever tested it in a simulator on their dev machine on their super fast WiFi. It never seems to connect with those people developing a mobile app (or web app) that the "mobile" part has a meaning more than just on a handheld device.
Surely the biggest cause of slowness is doing more stuff.
We don't turn faster hardware into faster programs, we turn it into more program. AI isn't going to change that. We'll just get even more program because the optimisation has freed up space for that.
Unfortunately most of the time, the more program isn't for our benefit. I note that by far the heaviest program I use is my web browser. The one thing I don't get to choose what code gets thrust upon me.
A browser isn't really a program any more but a platform for running other programs. Like how javaw.exe is really Minecraft, firefox.exe is really YouTube. Go to about:processes to find more detail.
The point is, if I want to edit a text file, I don't need to use eclipse. I can use something that hasn't added loads of features. I don't need to use whatever Adobe product, I can use some paint app.
If I want to watch streaming videos, I don't have a choice about how I do that.
Fine Firefox is basically a bloated YouTube app. That doesn't change the fact that it is inefficient (from the pov of my CPU) for doing that.
I’ve been playing with this with software that needs to work with agents and also without internet at all (we’re serving construction projects that have limited access)
Obviously agent access goes away with internet failure but the state doesn’t need to… we use CRDTs and a virtual FS. There’s a toy-ish version of the harness at https://ourhearth.ai … if local first is interesting to you I’d love your feedback
This is true, but it is an entirely different problem in a different place to what the article is talking about.
The optimisations the article is talking about would help even with this problem if backends responded faster - although not as much as actually avoiding unnecessary network requests in the first place, of course.
Unfortunately, you either put all the commercially interesting bits on your own server and let your customers eat the latency, or you ship it to the edge and let piracy decimate your profits. I don't think there is any technical way out of this, and probably not any reasonable legal ways.
I feel like you're hitting at the real reason why so much of this happens. Not necessarily the piracy, but centralized control of the data and data flow. Even if it's slow as hell to send off that data to proprietary company servers (or rented cloud servers) to verify it, you're still verifying it. You, as in you the company, can't do that if it's local compute only. You can't control whether the user installed your paid plugin or some free alternative. You can't control someone stripping out libraries or code to remove intentional friction points designed to annoy them into a higher tier of the software. You can't control whether or not they update, or whether or not you can force the software into end-of-life with an update despite it still functioning.
If there's a connection to your services outside of the user's machine you can control all of that.
there is different scales at which software is slow. this os one and definitely a pain in the ass. everything being online for no good reason other than to harvest user data. which it really turns out to be every time. (for good or bad purpose).
second is on a smaller timescale. so many features and crap that is never asked for and never used is crammed into software so the systems that execute it are just juggling pretty much dead code in and stale data in their caches all days long.
"In the Hypertext Transfer Protocol (HTTP) for the World Wide Web, servers insert a MIME header field at the beginning of any Web transmission. Clients use the content type header to select an appropriate viewer application for the type of data indicated."
A fan of "let's enable the program to do everything" philosophy I am not. This idea is embodied in the so-called "modern" web browser and a countless number of other "apps". Alas, this design, perhaps justified on "convenience" grounds (or so-called "user experience"), has been abused, e.g., for commercial purposes. One casualty of the abuse might be speed. Other sacrifices might be reliability, resource usage, "privacy", "security", etc. The most important sacrifice for me in using "do everything" software is _control_
Instead I use a number of small command line clients for making HTTP requests ("web requests").^1 I can edit the source code and compile these applications quickly with low resources
The clients are request makers, not response viewers. The historical "select an appropriate viewer application" step remains, as I prefer it
This software is not slow. I seem to avoid the dissatisfaction that I see from commenters who use software that can "do everything"
1. Generally this is one application that accepts URLs on stdin and generates HTTP on stdout and another that accepts HTTP on stdin, makes connections and sends it, typically a TCP client. But since I use a local forward proxy that has a built-in httpclient I don't necessarily need those programs to make requests, e.g.,
x=https://danluu.com/perf-opt/
echo "@1;expert-mode on;httpclient GET $x"|socat stdio unix:/path/socket
The proxy lets me control all the possible details of the requests (not through the built-in httpclient of course), including some details that can't be controlled using a gigantic, complicated, so-called "modern" browser
Shotout to PowerSync for enabling companies to go in the opposite direction and build offline-first apps. My company is a (production) customer, and we recommend it.
Such as? There are alternatives to almost anything you can think of already. All popular sites and services have clones. What more do you want?
The issue I think you’ll run into is that they’re lacking users and kind of just worse versions. Usually because people who say things like this, don’t actually want to be personally inconvenienced to switch.
To dogfood this, rent a VPS in Australia and put a test environment there. Should be about 200ms ping or a bit higher. How it runs for you is how Australian users are seeing your site, even if their last mile connection is fiber.
When we were young in a small rural town outside the US, we would borrow copies of Windows 95 or 98 from the school. In order to get them activated, rather than a keygen or other kind of crack we figured out that we could call the Microsoft help hotline from a payphone and tell them our key simply wasn't working.
We would give them a plausible sounding fake key then they would give us a new real key. Nothing seemed to get verified or cross checked but it worked at least 4 or 5 times for our little gang of proto-nerds.
I have always thought this about western media. For all of us in non-us countries, the locations, roads and objects are all slightly foreign to us, giving it that other-world feel movies have.
But for those in the US, wouldn't it all be a bit familiar? Whenever I watch a movie set in my home country with home accents and locations, it always feels a bit too familiar and it can cheapen the feel a bit.
Well, I'm an American, but US media is disproportionately set in Los Angeles or NYC, and I haven't been to either of those places.
I was watching Monk recently, and it feels kinda neat seeing a show shot in San Francisco because I used to live there. I wouldn't say it feels "cheap" though.
That is an insane statement, LLMs generate swaths of text from almost nothing.
If they are adding so little value as to be as transparent as a pen and paper then why use one at all? Transcription doesn't need an LLM so that's not what you're taking about I assume.
reply