5,695 karma · joined August 31, 2017
Seeing `.where(Foo.id == Bar.foo_id)` was a little jarring coming from a language where `==` cannot be anything but a plain Boolean comparison, but it’s nice to know that if I make a typo or rename a field, it can be picked up statically before runtime.
Something I’ve ran into a lot over the years is people not realising that (at least in MySQL) prepared statement placeholders can only be used for values, not identifiers like column names.
Because many query builders abstract away the creation of a prepared statement, people pass variables directly into column fields and introduce injection vulns.
Number one place I see this is data tables: you have some fancy table component where the user can control which columns to see and which to sort by. If you’re not checking these against a known good allow list, you’re gonna have a bad time.
Ownership issues of streaming or DRM-encumbered digital releases aside, it’s a shame because Blu-rays are typically so much better quality, and as a movie buff there’s no substitute. Triple the bitrate of streaming versions is not uncommon.
Anecdotally, on streaming services I find that original content (e.g. Netflix originals) are good, but licensed content is often complete crap—low bitrate, SDR, often limited to 1080p, horrible block artifacts especially in dark scenes. Given the choice between a 4K stream and a 1080p Blu-Ray, I’ll take the Blu-ray in most cases.
My first time was for a university project that I almost missed the deadline for because my app just refused to build one day, regardless of clearing all the caches etc. I eventually fixed that by starting a new project and copying all the files over.
Various versions would crash with alarming frequency. For years it was missing common text editing features like multiple cursors. Find and replace _still_ sucks, to this day.
Since Swift came along, which I love as a language, type and error checking has become incredibly slow. A type error somewhere in a file often completely breaks the ability to Opt+click any other types to read the very documentation you need to fix the error. Clicking related types often opens a “not found” page in the documentation explorer.
I’m doing Advent of Code in Swift this year and even for that—a couple dozen unconnected source files no more than 200 lines long each—I’ve had it refuse to rename files, breakpoints randomly stop working, Instruments refuse to let me edit configurations.
Surely Apple’s own developers dogfood this all day every day and run into the exact same problems?
Flutter draws its own components that can look superficially like the target platform (or not, it’s up to the developer) in a manner closer to a game engine. HN seems to love Flutter and apparently the developer experience is excellent, but as a user I find Flutter apps to be in general a poor experience. They rarely look or act quite right (assuming the developers even try; I’ve used a number that look like someone has transplanted an Android app onto iOS).
I forget if this is something Lynch ever explicitly talked about, but the way he pulled this off was masterful. We’re in an era of franchises, sequels, and reboots, and all a lot of people wanted from The Return was more Dale Cooper being Dale Cooper. And we get what, maybe 15 minutes of that out of 15 hours? Yet it’s one of the best seasons of television I’ve ever seen.
I finished that show with such mixed emotions. Dismay at the lack of closure. Foolishness for ever thinking that a Lynch production would provide anything approaching closure. But after letting things settle, it was the perfect ending.
Depends what you class as a WTF. The older parts of the standard library are still wildly inconsistent in function naming and argument order, but that’s never going to change because it’s simply not worth the BC break.
But they’ve done a good job cleaning up the actually problematic bits of the language. Previous horribly insecure defaults like register_globals and magic quotes are long gone. And in recent years they’ve worked on tightening things up: many obviously incorrect behaviours have been promoted from notices or warnings to outright errors.
At least on the software side I can focus on the small web and applications from independent folks with no intent to abuse.
Hardware is much harder. I’m glad I can still disconnect my TV from the network and watch everything through an Apple TV, but I don’t expect that to last forever. A TV that refuses to work without an internet connection or Apple slipping further into “services” and crapping ads everywhere like Amazon and Google are both futures that seem perfectly plausible. I hate it so much.
I also tried their “handwriting improvement” feature that claims to clean up lines a bit while still looking like your own writing. All it did was turn legible writing into total gibberish.
I can’t help but wonder if the reason “agentic” systems seem so appealing to people is because as an industry we’ve spent the past fifteen years making software harder to use.
Career goals? Keep things as they are.
Work is only something I have to do to have a decent life the rest of the time.
Unfortunately it feels very difficult to say that in earshot of one’s employer without being branded some sort of burnout slacker, even though I do work hard and to a high standard.
The people in the trial got very little done until it was decided to pause it, and I do not have high hopes for when it’s tried again. It strikes me as basically running malware in the name of security.
I don't know how it compares to the Dreamcast in raw horsepower, but compared to the GameCube and Xbox it was firmly at the bottom of the pack in that regard. It ended up not mattering in light of the games and its ability to play DVDs.
It shouldn't be too surprising that anti-establishment folks are more concerned with trillion-dollar companies subsuming and profiting from the work of independent artists, writers, developers, etc., than with individual people taking IP owned by multimillion/billion-dollar companies. Especially when many of the companies in the latter group are infamous for passing only a tiny portion of the money charged onto the people doing the actual creative work.
The claim that LLMs are great for spitting out boilerplate has always sat wrong with me for this reason. They are, but could we not spend some of that research money on eliminating some of the need for boilerplate, rather than just making it faster to input?
At a previous job I had, a fairly important bit of code made use of a number of class hierarchies each five or six layers deep, including the massive code smell/design failure of certain layers stubbing out methods on a parent class due to irrelevancy.
To make matters worse, at the point of use often only the base/abstract types were referenced, so even working out what code was running basically required stepping through in a debugger if you didn't want to end up like the meme of Charlie from Always Sunny. And of course, testing was a nightmare because everything happened internally to the classes, so you would end up extending them even further in tests just to stub/mock bits you needed to control.
Maybe it was on purpose? Those fancy textures and icons are probably a lot more expensive to produce when they have to look good with 4x the pixels.
iOS 4 on an iPhone 4 and OS X whatever-it-was that was on the initial retina MacBook Pros are still very clear in my memory. Everything looked so good it made you want to use the device just for the hell of it.
I've got a lot of time for Octopus, which is an odd thing to say about a utility company. It's amazing how much of a difference it can make when a company makes it a. pretty easy to speak to someone when you have a problem or question (especially via email) and b. getting that problem sorted or question answered isn't so arduous you want to jump off a bridge. It once took me six months to convince British Gas to actually start charging me for my gas and electric.
Plus every time there's a price cap change or something out of the ordinary going on, they send out emails explaining it in plain English (including, as you say, reiterating the case that our pricing model is utterly daft). They also have an API for customers so you can pull your usage data, which is pretty neat.
And because it’s not compiled, you can just whack a hashbang at the top of the file and chmod it to be executable.
The pro-web-component folks argue that WCs are standardised and will continue to work basically indefinitely regardless of the ebbs and flows of popular libraries, and because it's easier to progressively enhance and therefore more accessible. This is correct, and those points are valuable if what you seek is a way to add resilient islands of interactivity to your document.
The pro-framework folks argue that in their model where the entire UI is a function of state, WCs are incredibly cumbersome, because all you really want from a component is to be a smaller function with which you can compose part of the whole. They are not nearly as concerned with maintaining that component under React vX in five year's time, because the entire system is written in React vX. The components are not maintained or used as individual units unless you are shipping a library. This is also correct, and those points are valuable if what you seek is an effective way to break down complexity in your application UI.
Of course, many (maybe even most?) SPAs should be documents with progressive interactivity—it involves less fighting with the fundamentals of the web (which is, ultimately, still based around documents) and therefore offers better performance and accessibility with less effort. SSR for frameworks is an absurdly complex solution to a problem that doesn't exist if you can just send a complete document right to the browser.
But, likewise, implementing a genuine high-interactivity web application using web components would be far more difficult than using a framework, and I am certain would result in re-implementing some sort of reactive UI/function-of-state paradigm anyway.
Personally I think it's kind of a pointless debate, until and unless we get something that is close enough to <insert popular JS framework here> + SSR built into the browser. I don't know how that would work or whether it's even possible, but at that point the set of standards would actually cover all of the problems everyone is trying to solve and it would be worth arguing whether or not to use them.
I recognise it's a silly, tiny, small-minded thing to get hung up on, but it irritates me to no end that if I stop at McDonalds to grab a milkshake I've gotta drink it through a shitty cardboard straw that disintegrates half way through, while celebrities are flying around in private jets unimpeded.