

Nothing much has changed. During the gold rush people who actually made money sold shovels and pickaxes, only very few got rich by actually digging dirt.


Nothing much has changed. During the gold rush people who actually made money sold shovels and pickaxes, only very few got rich by actually digging dirt.


In a sensible world landlord would purchase the unit in the first place for tenant. It’s somewhat common in here that if you want to use your own time and effort to make your (rental) home nicer the landlord pays for the materials. It’s commonly used for things like paint or wallpaper, but replacing kitchen kabinets or other bigger renovations are not unheard of either.
But yeah, that’s obvious issue which should be resolved before installing anything. I wouldn’t buy 1000+€ unit as a gift for the landlord. And you’ll likely need a permit or two before drilling trough apartment walls anyways.


That particular quote is from D. Elton Trueblood. Mark Twain said “The best time to plant a tree was 25 years ago. The second best time is now.”. A bit different twist, but the same idea.
There’s also (alledeg) Indian proverb: “Blessed is he who plants trees under whose shade he will never sit.”. And many other variations of the same over the last 300 years or so.


whack a sodding great hole
Ours have a hole about 50mm in diameter. It’s not going to bring your wall down and if you decide that you don’t need the efficient heating/cooling with minisplit-unit it’s easy enough to patch. I own the house, so I didn’t need to think nothing else than the location of the hole, but any sensible landlord would see a minisplit-unit as an increase of property value.


A man has made at least a start on discovering the meaning of human life when he plants shade trees under which he knows full well he will never sit.
There’s a ton of variants of this, and saying (in a form or another) apparently goes back to 1700s.


It’s not just the price. If you get excavators to your new chip factory plot today to start building foundations it’ll take several years until you get first chips out of the line after everything is calibrated and ready to go. By then you’ve thrown few hundred millions on the building, machines and all the physical stuff. Hired and trained workers, managed supply chains and built a system which is pretty expensive to keep running.
So, you’re betting quite a lot of money and time against that the market stays like it is for the next 10 years (give or take) to just break even. If the bubble bursts in 5 years you have incomplete factory without potential market and a metric shitload of debt on your company. And that’s the same odd you’re betting against when trying to raise funding. Venture capital understands this risk too pretty well and that’s why everyone and their dogs aren’t building chip factories right now.


You’re correct, current is RFC2822 (I think). The point, besides being a smartass, was that checking email address validity with just regexp is not a very good approach anyways. What you described makes much more sense, specially by verifying that the address is not just technically correct but that it actually belongs to the person filling the form.


they discover RegEx and try to use it for email input validation
It actually can be done: Mail::RFC822::Address: regexp-based address validation
It’s really simple:
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)


Would spamming low effort comments to fill a quota then fall under the spam bit, not necessarily self promotion bit?
Possibly, but there’s equally gray area that what counts as low effort spamming and what actually contributes to the conversation. For example I’ve replied to comments “I’m using X to do Y” with “I’m using X too and I’m happy with it” to give an opinion to possible solutions. That kind of comments are easy enough to throw out and, if the “10% rule” is interpreted strictly, it isn’t really obvious if they should be considered as “improving your ratio” or as a part of actual conversation.


I disagree that it would be the same than no rule at all, in my opinion that gives a pretty clear position on what’s allowed and what’s not without setting any strict limits so there’s some room for interpretation for community/mods to act.
Maybe rephrasing a bit helps: “This community is not an advertising platform. Self promotion is allowed only from active members of this community. Excessive promotion will result on post removals and/or ban from the community.”
What I’m afraid is that if there’s a strict rule then someone will argue that “only 9,87% of my posts are promotion, I don’t deserve a ban” even the rest of their content has little to no value for the conversation. And, since it’ll be a rule for the community, I personally think it should apply as it’s written, so it should have some kind of option to weed out smartasses trying to game the system in place.
But I’m not likely to promote anything around here, so for me it doesn’t really matter, just trowing out my thoughts about the matter.


I worry a bit that its getting unwieldy, so feel free to suggest options to clean up the language a bit.
I would just keep it simple: “Self promotion for your product is allowed, but this is not an advertising platform. Be sensible and participate to community. Abuse will result in post removal.”
I don’t think it really helps to place any arbitary limit as it might just result on spamming low-effort comments so that your “quota” stays under the 10% rule and also posting about your fantastic FOSS project daily could be equally annoying. That 10% rule could be useful when deciding if something should be removed and obviously free projects should have more relaxed “limits”, but in general what counts as abuse can be decided by community feedback.


I just checked this today too. A year ago in June I bought two WD Blue 2,5" SSDs for ~165€, shipping included. Today the very same drive is 213€/each at the same store, before shipping.


Move existing messages from gmail account to new one, set up a forwarding rule from gmail to your new address for everything, change accounts as they show up. Maybe a bit longer route, but far easier to swallow since you don’t need to go trough all the things in one go nor worry if you’ve missed something.


Funnily enough, there’s pretty much the same mindset in our team, but towards USA models (and tech in general). There’s a non-zero risk that either EU decides that USA products aren’t trustworthy or that the orange man decides to cut off European companies from the services (which kinda already happened with Anthropic). And, as we’re in Europe, there’s very similar threat models for Chinese services.


Many also do not care, unfortunately.
Meh. It’s a work thing and corporate bobbleheads say I need to use it. Then they’ll pay for me to wait for their mandated things to start/connect/work/do whatever. It’s mostly usable enough to get my shit done, it randomly shows whatever status on my account which I couldn’t care less. And the moment I log off I don’t care if the place is literally on fire.
It’s after all just work and nothing more. There are way more important things in life.


Find two more selfhosters and they will criticize both of us!
Absolutely. However I’d argue that some BSD variant is at the other end, not Gentoo, so there’s at least some critics to you ;).
I’m running proxmox and (mostly) Debian on top of that, and I’m sure that there’s someone thinking I’m doing things the wrong way.
With Windows Servers I think the bigger problem is that there’s way less people running things on top of it, so there’s less knowledge about problems and solving them. However, many of us are on corporate IT jobs too and thus have to work with Windows, so that might somewhat cancel out the difference in popularity.


Nintendo has been doing this for the last 30 years (at least, likely way longer), I doubt they’re stopping now.


You need a suitable welder for that with pulse feed so that it kinda-sorta acts like square wave AC. With your average hobbyist garage welder it’s going to be a real pain in the ass.


welding aluminum requires TIG. It’s harder and more specialized.
You can weld aluminium with MIG just fine. It is indeed way more difficult than normal steel and not every car shop has skills nor equipment for it.
I’ve been working on IT for quite a while now and the only certain thing on this business is that hardware breaks down. All of it. Only questions are ‘when’ and ‘how’. I’m pretty sure you can’t get NBD support to the orbit. And I’d guess that shaking the shit out of the hardware during launch won’t really help.
And that’s of course just a minor detail, the whole idea is so stupid on a very fundamental level that I don’t know why it’s even a news worthy.