They're turing-complete and modular so it's not really about what they can or cannot do.
Testability, tooling and the open-source ecosystem and either bad or non-existent. Writing PL/SQL is the worst environment I've worked in. That database sent emails, processed CSVs scheduled jobs, etc. yet there was still a web app to maintain next to it.
They're OK for certain things like essential triggers or performance-sensitive functions, but I would never deliberately put app logic in there. Major red flag.
Yep. Releasing, testing, debugging, etc are all more difficult in stored procs than in a “regular” language. Stored procs have other down sides:
- often unique to that DB, so locks you in
- Scaling that code is now tied to scaling your DB tier
- Tooling is often very inadequate
- Versioning and backwards compatibility of code can be a challenge
Some of those concerns apply to any database. Your query could slowdown if the database picks a bad plan, so you could say you will never trust the db to scale. That's separate from scaling the stored proc - just using the db can run into a scaling issue.
No, what I mean is your code scaling is now directly tied to how your DB scales. Your SP code can be impacting the rest of your DB, and vice-versa. I have seen large SP based systems to require Oracle boxes to be scaled up at enormous cost (hundreds of thousands or even millions of lines of SP).
Not because of slow queries, but just the cost of executing the stored procs themselves.
> Testability, tooling and the open-source ecosystem and either bad or non-existent
If you're properly testing the code in your application that exercises persistence, that means your test harness runs a real database like the one you're running in production and thus you can also write the database logic tests using your own application's testing facilities.
Of the things you listed, "the database sends e-mail" is the only one where I'd think you'd have to change the code at all, and have the database go through a mockable middle-man so that it becomes testable; but everything else can be comfortably tested from a test suite that is able to talk to a real database.
Just upgraded to Windows 11 (for its HDR features) and weather is now part of the "Widgets" bombarding me with ads and poor news sources. I genuinely tried to customize my "feed" but it's all junk -no reputable sources whatsoever- and I didn't find a way to remove them.
So the only sane course of action was to disable widgets altogether while I still can. And now I don't have the weather anymore.
In a monorepo with project references where each symlinked (not paths) package has a src/ and output lib/, I've always had issues with VsCode incorrectly proposing to import from src/ over lib/ from other packages. Never got it to work just right.
Does anyone know if the new package.json resolution settings can help resolve these issues?
In our embedded/plugin component scenario where we are given a <div> to load in, it appears we should replace our current pattern ReactDOM.render(React.createElement(... with createRoot(_jsx(....
ReactDOM.render has been deprecated since React 18. If you're running React 18 with ReactDOM.render, you should already see an error urging you to switch because essentially ReactDOM.render works in React 17 mode.
> it has by far the best vertical tab implementation of all browsers (someone please copy this)
TIL. I think it's still far behind TreeStyleTabs (TST) on Firefox. Missing for me:
- No nested groups. I know it's called vertical and not tree, but branches offer more context when navigating deep.
- Groups are standalone containers, while in TST the group is the root tab. This saves space but also allows to close/CTRL-F4 a tab to close the group/branch.
- Open in a new tab adds the tab at the end of the group, loosing context. There might be an extension for that.
- Closing a group and all its tabs requires to open a context menu.
- No automatic collapse behavior when selecting other groups and there are lots of tabs open.
- Open in a new tab doesn't create a group automatically, they must be manually initiated. Killer feature for me: by the time I realize I should have created a group it would be too late to bother assembling one.
- You can hide the titlebar/tab-bar at the top therefore maximizing vertical space
- It can be set to either be sticky (always open) or auto-collapse into a thin icons-only vertical toolbar.
The grouping functionality in Edge is inherited form Chrome without improvements.
The grouping functionality in Firefox with TreeStyleTabs or Sidebery is unmatched but this is all implemented by extensions and Firefox abandoned a lot of interface customizability when it abandoned XUL extensions. (you can theoretically do it by hacking userchrome, but it's buggy)
With old XUL extensions, TreeStyleTabs actually had the option to hide the tab-bar. And you also had the option to move the window controls to one of the toolbars.
Vivaldi does have the option to use vertical tabs but you are left with a titlebar you can't hide.
When I check my recommended feed it's all stuff very closely related stuff to my subscriptions and recent views, and some useless shorts. It's just an echo chamber at this point.
If I'm looking for potentially interesting content outside my core subscription views, I'm better served by turning on FM radio.
I actually want it to stop “recommending” and be a year 200x youtube when you could randomly stumble upon something interesting and follow it. Today’s youtube really feels like a chamber, a very secure one.
it's not an echo chamber unless you tell it to be.
all those videos in your watch history? others have watched those videos, too. youtube will recommend videos that those others have watched and that you have not.
the narrower the focus of your viewed videos, the narrower the focus of the recommendations will be.
I think github could do a lot better job in cases like this of highlighting active forks, to make it possible for communities to coalesce around OSS forks of projects that have switched to commercial licenses or have gone maintainer-less.
For an example, jq has gone without maintenance for a long time now, but it's very challenging to gain critical mass around a maintained fork, so the un-maintained fork remains state of the art.
Testability, tooling and the open-source ecosystem and either bad or non-existent. Writing PL/SQL is the worst environment I've worked in. That database sent emails, processed CSVs scheduled jobs, etc. yet there was still a web app to maintain next to it.
They're OK for certain things like essential triggers or performance-sensitive functions, but I would never deliberately put app logic in there. Major red flag.