The other thing that design patterns allow, is to learn pitfalls, applications and other attributes about them.
To keep in your analogy, if you have a 3KG naildriver with a 2m handle you'll quickly find out that driving nails into a drywall with that leaves you with no wall. And that it's a bad idea to use a "Naildriver" to drive these "spiralled-slothead-nails" (aka screws) into wood.
But with a common language, such as design patterns, you can easily learn where they are good, what their limits are, in what cases other patterns fit better, and what pitfalls to avoid and so on.
If I search the web for "why is it so hard for my naildriver to drive in spiralled-slothead-nails" I'll get zero results. But when I search for "why is it hard to hammer in a screw" I'll get good results. May sound like a silly example, but for me that sillyness illustrates how obvious designpatters should be.
And it doesn't mean at all that everybody should learn the whole encyclopedia of tools by heart. But having it formalised somewhere is useful: as soon as someone tells me "what you're trying to do sounds like this design pattern", I can start searching and reading about it.
Of course if that someone tells me "you suck, you should know that there is a design pattern for that because you should read about design patterns every night before you go to sleep", it will be different :-).
I think Julian Assange once said he would refer to things in discussion just as "Tomato" (or similar), in discussion to have a shortcut for something unnamed with some meaning. We do this all day in programming, we give a complex component a name and it means a lot more then just the actual word. The problem is that this specific meaning is often not universal, it's contextual.
If you take a hammer, an integer and design patterns, the latter is the least universal thing. They depend on domain, context and conventions, and can change quite a lot depending on the language. Removing hammers and integers from the world would cause collapse, removing design patterns would do almost nothing.
I guess the active celebration of design patterns as a catalogue of general wisdom is my primary issue here. I'd welcome any project/team/company that maintains a catalogue of their individual "patterns". But a universal source of truth has too much bible flavor to me. (Oh it also dictates OOP by default which renders it's inherent "wisdom" completely useless in many languages)
I feel like we're talking past each other. I tend to agree with you, I don't like having a "bible" and "celebration of design patterns as a catalogue of general wisdom".
But formalising concepts with words makes sense. If your company maintains a catalogue of their patterns, and someone happens to know that this specific pattern is usually called a "singleton", I would find it weird to call it a tomato.
Some patterns have different names in different contexts or languages, and that's fine. I don't find it weird to have a discussion around "in this language there is this pattern that they call X, does that ring a bell for you working on that other language? The idea is [...]", and maybe the answer is "yep we have it too" or "oh, we call that Y, but that's pretty similar".
Well I guess I am not clear enough. Naming stuff is a normal human habit, maybe even why we have language? So we can agree on that, it's helpful.
But you say it yourself, a thing is called different in another language, so the thing is bigger then the word. But everyone can handle it better in his own head and in communication with a word for it.
I guess my usual grief is that any kind of excessive celebration and ceremony comes down to some kind of brainwash. Which mostly affects newbies and cultists.
The article for example isn't overtly critical on singletons, while past design pattern writings often heavily disregarded the use of it. So we don't just always reiterate the good, but also the bad.
I don't mind the celebration and ceremony as long as they don't bother me personally. I wouldn't fight against the existance of a PatternConf, I just wouldn't go :-).
I've had some debates with junior devs who really wanted to enforce their newly-learned patterns, and my experience there is that passed a certain point, there is no convincing anymore: if they really insist about overengineering something with their newly-learned concept and the hierarchy doesn't allow me to prevent them from doing it, anyway they will do it. So instead of fighting I just let them, and if it turns out to be a waste of time in the end... well that's not my problem: I was not in a position to prevent it in the first place.
It's not only patterns though: some juniors have a way to try to use every exciting framework or library or tool they just discovered.
The silly thing is that I've been the same when I started. A high energy kid playing around and celebrating everything fresh and new, with a big ego.
Probably a bad habit trying to stop them, they need to learn walking before they can sprint. The question is always how to put limits on them? I say it's overengineered, they say it's modern code and I am old. So what do you do if they send you a PR that is just plain wrong? I mean it seems like you delay the conflict from upfront design/planning to pull requests.
* Functional teams (established companies): enough seniors are here to tell the juniors when they are wrong, and the juniors naturally accept the criticism because it's expected in that environment.
* Dysfunctional teams (startups): most devs are juniors anyway, there is no clear hierarchy, managers are still at their first job so they have never seen a functioning team or had a competent manager themselves.
In the second case, there was absolutely no way I could win an argument: the "high energy kids with big egos" never believed me, I was the "old guy" as you mention. I remember an example where the "kid" failed and gave up with their "right" way after 3 months and I solved it in 3 days, exactly how I had suggested they did it in the first place. Next discussion, nothing had changed, they still knew better.
I can't really blame them, because the whole environment was like this. Everybody was always right, knew better, etc, even though it was their first job.
What I've learned is to protect myself and move away from that. Either by changing job, or by changing project. In startups I have been pretty successful at saying "I can help with this project if we do it this way, but if we do it that way, I can't help and I will work on something else". Of course it meant that I could not work on the most exciting project, but they made a mess out of them, so all in all I feel it was better working on my boring, stable, maintainable components.
But the nature of a CDN and most other products CF offers, is central by nature.
If you switch from CF to the next CF competitor, you've not improved this dependency.
The alternative here, is complex or even non-existing. Complex would be some system that allows you to hotswap a CDN, or to have fallback DDOS protection services, or to build you own in-house. Which, IMO, is the worst to do if your business is elsewhere. If you sell, say, petfood online, the dependency-risk that comes with a vendor like CF, quite certainly is less than the investment needed- and risk associted with- building a DDOS protection or CDN on your own; all investment that's not directed to selling more pet-food or get higher margins at doing so.
yeah there is no incentive to do a CDN in house, esp for businesses that are not tech-oriented. And the costs of the occasional outage has not really been higher than the cost of doing it in-house. And I'm sure other CDNs gets outages as well, just CF is so huge everyone gets to know about it and it makes the news
With what? The only (sensible) way is DNS, but then your DNS provider is your SPOF. Amazon used to run 2 DNS providers (separate NS from 2 vendors for all of AWS), but when one failed, there was still a massive outage.
At least this warrants a good review of anyone's dependency on cloudflare.
If it turns out that this was really just random bad luck, it shouldn't affect their reputation (if humans were rational, that is...)
But if it is what many people seem to imply, that this is the outcome of internal problems/cuttings/restructuring/profit-increase etc, then I truly very much hope it affects their reputation.
But I'm afraid it won't. Just like Microsoft continues to push out software, that, compared to competitors, is unstable, insecure, frustrating to use, lacks features, etc, without it harming their reputation or even bottomlines too much. I'm afraid Cloudflare has a de-facto monopoly (technically: big moat) and can get away with offering poorer quality, for increasing pricing by now.
Microsoft's reputation couldn't be much lower at this point, that's their trick.
The issue is the uninformed masses being led to use Windows when they buy a computer. They don't even know how much better a system could work, and so they accept whatever is shoved down their throats.
> Just like Microsoft continues to push out software, that, compared to competitors, is unstable, insecure, frustrating to use, lacks features, etc, without it harming their reputation or even bottomlines too much.
Eh.... This is _kind_ of a counterfactual, tho. Like, we are not living in the world where MS did not do that. You could argue that MS was in a good place to be the dominant server and mobile OS vendor, and simply screwed both up through poor planning, poor execution, and (particularly in the case of server stuff) a complete disregard for quality as a concept.
I think someone who'd been in a coma since 1999 waking up today would be baffled at how diminished MS is, tbh. In the late 90s, Microsoft practically _was_ computers, with only a bunch of mostly-dying UNIX vendors for competition. And one reasonable lens through which to interpret its current position is that it's basically due to incompetence on Microsoft's part.
well that's the thing, such a huge number of companies route all their traffic through Cloudflare. This is at least partially because for a long time, there was no other company that could really do what Cloudflare does, especially not at the scales they do. As much as I despise Cloudflare as a company, their blog posts about stopping attacks and such are extremely interesting. The amount of bandwidth their network can absorb is jaw-dropping.
I've said to many people/friends that use Cloudflare to look elsewhere. When such a huge percentage of the internet flows through a single provider, and when that provider offers a service that allows them to decrypt all your traffic (if you let them install HTTPS certs for you), not only is that a hugely juicy target for nation-states but the company itself has too much power.
But again, what other companies can offer the insane amount of protection they can?
It teaches people to trust "Currently NonEvil Company™" to do the good thing.
First, and obvious problem is that this "trains" us to rely on brands to protect us. And to keep doing this. Companies may have different interests than their consumers. Ideally and sometimes these interests are aligned. But nothing guarantees this remains so. Companies will "Become evil", if only because they are sometimes legally forced to by governments or shareholders.
Second, is that this teaches people not to be responsible but to leave that to companies or technology. Which works if e.g. Apple and Meta are the only providers. But falls apart the moment Focebook glasses, Apelle Gear or Rang Doorbell is available on temu. And becomes worse when HP, Dell, Samsung, IBM and other legitimate producers start competing in the space. We've now been trained that what the first companies did was "The Good Thing", but lack the social structure, laws, or even common sense to manage a world in which this self-constraint of the companies no longer applies.
Apple is the privacy company already .. that's their brand and a brand that the public trusts.
Overall why are we not up in arms about all the video cameras that record in all cities everyday which companies like Clearview and others have our public images in their databases yet we are up in arms about smart glasses?
THis is a solution to this public debate and Apple hasnt released their glasses yet and they are a privacy company and heavily market themselves as such. As the poster notes smart glasses adoption is rising and will only continue to do so... so this debate in time will continue to fade into the background as there is no same amount of debate about all the cameras in cities that are already recording us. With that in mind the smart glass privacy debate is an odd one to me where corporations are already recording us in these same public places.
lol overall this argument is silly the genie is out the bottle and in five to ten years smart glasses are the norm. All you laggards will be wearing them too and or many close to you will be wearing them. Go ahead and downvote me but in five to ten years you know i am right ;)
Reminds me of my 24 year old niece in which her and her friends hate chatGPT/AI. Hippies fighting technological progress futilely. Like the iPhone haters of 2007 to 2010!
I think a very common misconception makes this a terrible idea.
We, developers, are also "common computer users". Just like a sound engineer, a graphic designer, a movie editor, or any specialist, really, has fancy hard- and software, but remains also a "general user".
I have to do my taxes. Write a CV, or a speech. I have to make a presentation. I want to watch netflix. Listen to spotify. Must use trello, read my email, or use that abysmal internal time tracker. Play a game. Order new sneakers. Find a restaurant. And no, I don't do all that in emacs, terminal, bash scripts and lynx. Like every "general computer user" I use my computer for those things as well.
Despite what Hollywood makes it look like, developers, hackers, sw architects, sw engineers etc do use the stuff that everyone uses as well. Commonly and often.
It's not common amongst any of the developers I see in my bubble.
Could be my bubble. And it doesn't mean this practice of having one machine for all uses, is actually "good".
Though personally, i'd dislike the idea of having to maintain, update, etc multiple machines. And to sync data/logins/documents/tools between the two.
I like grepping through my "Administration/invoices". I prefer putting "Documents/contracts/" under git, eventhough all are pdfs and word. I need my todo-list to be a mix of work related and personal tasks.
Also, I listen spotify when I work. I check or answer work and personal mail when waiting for a meeting to start. I use my notes for work and private. Same for password manager, calendar.
In my case, the line is too blurred to be able to switch between machines. Theyll very much overlap, making having two a burden rather than a benefit.
It might not be a good idea if you have any concern that the company you work for may ever be involved in litigation. This was part of the training when I joined Microsoft, many years ago, as a result of the big antitrust trial: anything at all that you do on your work computer or the company network might someday be subject to discovery. I have since maintained a strict separation between work accounts, data, and activities, which exist only on company-owned hardware, and my own personal data, which only lives on my own personal hardware.
Some companies are strict about firewalling corporate data in, but I think it's also important for us to protect ourselves by keeping our personal data out.
This is extremely good advice. It’s frequently at odds with convenience, since things like iPhone screen mirroring, iPad as a 2nd display, etc. practically beg for you to sign into your work laptop with your personal Apple ID. All I can say is resist the urge to do such things.
I do keep a browser profile on the work machine signed into personal accounts, and do everything personal only in that browser, but even that is probably a mistake. Screen-sharing to home would be a much better compromise, unfortunately my gigabit internet comes with like 50Mbps upload so screen sharing sucks.
While I do applaud the idea of "re-thinking the computer for deverlopers", this looks little more than "thinking", to me.
A back of a beermat business idea, pulled through an expensive marketing machine.
My rule of thumb: if something has a concrete price, but the something itself isn't made yet, it's either way too expensive or a ploy or both.
Maybe its a "find if there's need for it" phase. But if you cannot make that "it" concrete, I -and I suspect many more of the target audience- cannot answer this question.
So yes: kudos for bringing up the "developers need other hard and software than general audience" idea. But I would strongly advice to first make it concrete and deliver pieces and parts. Release the DE and OS so we can experience if this solves "problems" that devs have. Finetune that. Again. And again. Then pair it with hardware. Personally, I'd go for hardware thats already popular with devs.
For me, thatd be: Ship me a high end Lenovo, with Ubuntu¹ pre-installed and loaded with software like neovim, zsh, git, ripgrep, chrome, firefox, zed, slack (we all require it, don't we?) vscode. Maybe some icing like starship, a nice theme. It could be opinionated or extremely configurable (and remain stable at that over years).
Or, on second thought: I have all that. So what problem does this solve?
I think one is the result of the other. It is a nice place because there are few people there.
Or, more cynical, reversed: I am convinced Mastodon will be a horrible platform if it grows to a size of e.g. twitter, reddit, and far, far worse if it grows to sizes of insta, tiktok, facebook etc.
The reason I am convinced the low number of people makes the place overall nice is that its a niche, like HN is a niche. That its not an interesting target for phishers, spammers, scammers or attackers: the ROI is too low. And that the low number of people keeps influencers and other commercial entities, like brands or news-agencies away: not much to make money off.
>Or, more cynical, reversed: I am convinced Mastodon will be a horrible platform if it grows to a size of e.g. twitter, reddit, and far, far worse if it grows to sizes of insta, tiktok, facebook etc.
The thing is Mastodon isn't a platform like twitter, reddit, etc, it's a decentralized network of platforms. A few instances might become popular (like mastodon.social) and become a default for newcomers but there will always be smaller instances doing their own thing.
But these instances are part of the platform. Or, a better term, part of the system.
So "doing their own thing" is very limited. Do "too much of it" and you'll be fediblocked. Too little of your own thing and you're essentially getting what the large instances dictate.
Sure, your instance can e.g. block meta instances because it dislikes Facebook. But that doesn't isolate you from meta content completely - or even at all - it depends. If your instance wants that, it'll have to also block all instances that don't block meta. Basically defederating almost entirely.
And this doesn't even consider the numerous malicious practices that one can do, but aren't interesting currently due to the limited reach of this fediverse. Like scooping up expired domains of previous instances and using that to spam. Or like impersonating famous people and scamming users that way. Or like taking over accounts and spamming or scamming that way. Or even taking over entire instances by hacking the server or social engineering access. Etc. etc.
The fediverse has nothing technical that protects it against the real and expensive threats that "common social media platforms" face on a daily basis. Federation doesn't suddenly make any of these attacks more difficult. If anything, it makes it easier, because the instances themselves are ran by volunteers who in many cases will not have security budgets to protect against such attacks. The only thing that the fediverse has going for it, in this regard, is that the blast radius is smaller. The attack easier, the result contained. But it's not unthinkable that malware, fake news, or other malicious content can easily be spread this way.
You can do your own thing as much as you want, and choose with whom you federate, and others can do the same. That's just freedom of speech and freedom of association. Large instances aren't "dictating" anything to other instances. The point is you can't do that with Twitter or Facebook or even Reddit to the same degree. The fediverse will never have an Elon Musk trying to purge it of the "woke mind virus."
>And this doesn't even consider the numerous malicious practices that one can do (...)
Your argument here seems to be that because most instances are small, that makes them more prone to security issues. And that's true, but nothing you mention here is unique to the fediverse, and all of those risks are still greater with mainstream platforms even with their bigger security budgets and resources. People hack Facebook and Twitter all the time, and millions of people get their data stolen, and misinformation spreads like wildfire. In this regard being decentralized, smaller and able to defederate from malicious instances are features rather than flaws.
It is definitely a flaw in the fediverse that identity is tied to a url and so there's no way to validate an identity across instances, and it is trivial to impersonate someone by simply using their username elsewhere. I think Nostr got it more correct in this regard, and I don't know what could be done to mitigate this at a technical level.
But even then I think that at least the fediverse is a necessary step in the right direction.
Though some downtime is usually handled by servers with "backoff retries" eventually you're server will be marked as offline and servers might never bother contacting it anymore.
Similar to email which - at least technically - has the idea built into its protocol that servers are going to be down.
But mastodon was built with more modern web in mind, so having a server that's offline more than online will be highly impractical.
I guess one could solve this with buffering proxies. Either hosted by others for you (as a service) defeating the entire premise of you being the full owner, or hosted on your nas or cheap hosting. Such a proxy would be far simpler than a full blown server, as all it needs to do is ingest messages and keep them for X time and forward them to your "actual server inside the client" once that connects online.
The server-in-the client can handle outgoing messages and handle downloading linked media and such.
I am not aware of such proxy software. But currently gotosocial is the simplest and lightest server software I am aware of, so maybe stripping that could work.
> I guess one could solve this with buffering proxies
That’s essentially Nostr. There the servers are untrusted relays and cryptography is used to enforce authenticity.
(One of the) issues with Mastodon is that it was initially designed for browser-based use and browsers require an origin (aka a domain or IP) to talk to, because originally there were no clients. Having actual clients would remove the need for this since they can talk any protocol to any host and implement their own logic to authenticate messages. I think Mastodon was just never expected to become this big.
I’ve got plenty more (negative, but IMO constructive) criticism about Mastodon and the broader “fediverse” if you’re curious, just search for my username and those keywords. Maybe one of these days I’ll write a blog post.
> I’ve got plenty more (negative, but IMO constructive) criticism about Mastodon and the broader “fediverse”
Same here. And I too, have planned such a blog post for a while now. Just not sure if it's worth criticizing something that's far from perfect but in many ways still better than many other systems. A bit like the vegan criticizing the vegetarian for not being animal-friendly enough (or worse, the carnivore criticizing my vegetarian diet for not being good enough because I wear a leather belt).
The issue with the current iteration of fedi is that it misses the main problems that average, non-technical people experience with social media, so those people remain unaware of fedi and/or can't get past the friction of using it, as a result they remain on the mainstream services, all while fedi remains a nerd echo-chamber with significant unsolved issues around funding, moderation, spam protection, etc (the only reason it doesn't collapse under spam/unsavory content is that it's mostly just not even worth spamming due to its irrelevance).
I'm not particularly sure the current iteration of fedi being around is better than other systems... it sucks the oxygen out of the room and reduces/fragments demand for an actually good replacement for FB/X/etc...
It saddens me that we're basically abandoning standards and protocols for such tasks.
I think it makes sense to just screenshot an email, or make a photo of it and have AI extract semantics from it.
But a simple ical file could do this far easier. Or an improved ical.
If email clients recognize and handle them better. If calendar apps handle them smoother and cleaner esp on desktop and web. If browsers handle and forward them to calendar webapps. If chat apps like WhatsApp or signal handle them natively. If service providers like a delivery company or a ticketing agency attach them consistently Etcetc
Now we are in a mess that within closed ecosystems, such standards and protocols work seamless. Within outlook, or gsuite it works. But cross their walls, and it falls apart. I'm pretty sure that's intentional by these tech giants to create artificial moats and lock in customers.
But all the pieces are in place. A windows laptop can easily push messages to my phone, technically.
And through that, my mail-client could send a message to my phone "here's an ical, handle it in the appropriate app" if it finds ical info in the email.
Hell, my web-browser could recognize semantic markup like https://schema.org/Event to add a button or context menu "put in my calendar" if it finds an event.
Everything is in place, designed, discussed, finetuned, re-done, redone again.
and now abandoned because non of the big players have incentives to use and push this forward in their browsers (Google), OS (microsoft, Apple, Android), suites and so on, because that would increase interoperability and thus make it easier for users to switch to a competitor.
To keep in your analogy, if you have a 3KG naildriver with a 2m handle you'll quickly find out that driving nails into a drywall with that leaves you with no wall. And that it's a bad idea to use a "Naildriver" to drive these "spiralled-slothead-nails" (aka screws) into wood.
But with a common language, such as design patterns, you can easily learn where they are good, what their limits are, in what cases other patterns fit better, and what pitfalls to avoid and so on.
If I search the web for "why is it so hard for my naildriver to drive in spiralled-slothead-nails" I'll get zero results. But when I search for "why is it hard to hammer in a screw" I'll get good results. May sound like a silly example, but for me that sillyness illustrates how obvious designpatters should be.
reply