Irssi's UX is better than that of any other chat software, though. Why it hasn't been replicated for things like XMPP and Matrix is probably due to the more difficult and featureful state transitions of those protocols.
I switched over from irssi to poezio a few years ago (with a self-hosted biboumi as XMPP<->IRC gateway) and I don't miss irssi (anymore).
Of course, the transition was a bit bumpy, but I think that'd go both ways. As someone else said, it's not a direct replica. Yet, it feels close enough and not too close for the uncanny valley.
There are several XMPP clients trying to replicate -more or less freely- the same experiences, such as poezio [1] or profanity [2]. YMMV of course, and nothing will be a carbon copy of irssi, except if you use a plugin (but in my experience bolting another protocol on top of a client for another will result in a poor UX).
I do believe there are TUI clients for Matrix, but I am unsure of their maturity and state, or how they compare to Irssi.
I hope they use Mastodon. Because then it'll be trivial for authorities to find out and seize the offending server and probably most of the users if it's part of the global federation.
> If you had that reaction, you might want to take some time to explicitly free your thought process from OOP-isms.
If you have this reaction, perhaps you should take a humility lesson before claiming that a few syntax tricks is all it takes to outsmart people who spent their entire university careers thinking about these problems.
> before claiming that a few syntax tricks is all it takes to outsmart people who spent their entire university careers thinking about these problems
I don't think I have written anything of that sort. Thinking in OOP terms in, say, Java is great. Zig is not an OOP language though, and it cares about mapping nicely to CPU instructions more than it cares about mapping nicely to UML diagrams, so thinking in OOP terms in Zig is not that great, more often than not.
I've seen plenty of people coming into Zig expecting it to conform to their expectations towards object orientation or functional purity. Neither will be able to have a good time if they can't let go of their preconceptions.
Well, you've met one now, so you can update that assumption. And also if you look higher up this thread, the author of this article takes it seriously as well. So that's two already in a pretty short time!
Any recent innovations? Because even traditional object-oriented languages like Java and C# seem to be getting more functional over time, and the endless attempts to add classes to Javascript only make it worse.
A lot of people have spent their entire industry careers dealing with these problems, and the result seems to be the sentiment you've encountered in this comment section.
That's a bit silly. I was a Linux user from 1996 to 2015ish, then went to use macbooks almost exclusively. Apple's UI immediately made sense, even if it was remains tad unoptimal for serious use, when comparing to UX masterpieces like i3 and sway.
KDE has always been bit of an awkward horror, and I've given it a shot now and then for their whole existence. The latest incarnation, Plasma, is quite a lot better than it used to be, granted.
The reason KDE looks horrible to you is probably due to the history you use computer. KDE is just 90% similar to the logic you use windows. The system tray area, task bar, start button works just like the way you expect in windows.
It probably has the least resistance to use if you are a windows user that try the linux desktop the first time.
People fixate on what looks like a simple frontend and don't see all the tech behind it, plus the even larger support structure behind it: sales, analytics, moderation, etc etc.
Give me 10 motivated, aligned high-quality people, 5 years, and all of us room to focus, and I'll build you a better Google, almost guaranteed. Including Arabic, a11y, spam filtering, and all the other messy stuff.
You know the problem with that statement? No one will give me 10 motivated people, 5 years, and room to focus.
First, any ten people you find will care about having fun, making money, preparing for their next career step. Beyond a pizza box team, finding people motivated by a common good is impossible.
Second, if you give me room to focus, you won't know that I'm not playing video games all day. You don't want that. You'll want to monitor what I'm doing. My ability to keep collecting my paycheck will be based on keeping you happy (perhaps with false reports of progress, if you don't set things up right).
And so on.
Once you factor in the human constraints, I have no idea how to beat Google. If I did, I'd have a second unicorn on my belt.
I'll mention: I've had that magical scenario -- money and room to focus -- exactly once in my career. I did built a unicorn in a few months. Once those dynamics kicked in, there was near-zero further progress, but the organization eventually sold for around $1B (and that was after losing a lot of further value). That was based on me having a few months with a 100% carve-out to focus completely, as well as to spend money as I saw fit.
As organizations get bigger, these problems get harder. Right now, in a typical day, in my current job, I can code for at most 3 hours. Just as often, this is zero hours. I couldn't build the same unicorn with that level of split focus in any amount of time. I'm amazed at the difference in how much I get done.
The technical problems to beating Google aren't impossible to solve, but the hard problems aren't technical.
Been there, done that. It turns out throwing money at problems doesn't generally solve them. People will be motivated to keep getting paid obscene salaries. Keep their boss happy isn't the same as being aligned and focused on a common vision.
Indeed, in most cases, when people are aligned around a common vision, you don't need to pay them very much. People seem to do best when they're paid enough in order to not have financial stress so they can focus on work (with the caveat that the pay ought to be stable), but where the financial motivation doesn't replace intrinsic motivation. That's a rare scenario you only see in a few settings (e.g. sixties-era academia).
If throwing money at people worked to keep them aligned, FAANG would have hyper-aligned work forces. You can look at any of them.
Saying that Google has "thrown the best talent money can buy at the problem for 2 decades" visualizes this very nicely. Throwing people at problems and having people solve problems working together productively are two very different things. If I (or anyone else) could solve the latter problem -- making large numbers of people work together, aligned, and productively, I'd be richer than any tech mogul.
Throwing people at problems results in a lot of very fun play, though!
> Give me 10 motivated, aligned high-quality people, 5 years, and all of us room to focus, and I'll build you a better Google, almost guaranteed. Including Arabic, a11y, spam filtering, and all the other messy stuff.
This is 60 million USD paying those 10 handsomely to keep them happy.
Having built your unicorn that sold for a billion+ you’d think funding would be straight forward for you. You don’t know a single VC? Self-funding isn’t an option?
2) Self-funding is hard for me, because I didn't take into account human, political, and organizational issues. I proposed and built an awesome technology, but that doesn't mean I was compensated for it.
A few fallacies:
- Keeping people happy isn't the same as keeping people aligned and productive.
- Keeping funders happy means I can't give technical work 100% focus.
- Keeping funders happy also constrains technical work; for example, showing progress is often in friction with not taking on technical debt.
If only you could be left alone to unleash your brilliance with your friends, you could make a trillion dollar company. Unfortunately it looks like no one believes you / believes in you enough to help you with this.
While your comment is sarcastic, it is correct. It's also not specific to me -- there are trainloads of people who could build trillion-dollar companies if magically freed from human issues, such as trust.
When I was young, I thought technical problems were hard, and made comments just like yours when more experienced people told me technical problems were easy and human problems were hard. I ignored them too.
Unfortunately, there isn't any magic. We all compete on equal ground, having to solve both technical and human issues.
I think you're misunderstanding my point here so I'll be clear:
I think you and those truckloads of people you're referencing may be overestimating your technical prowess. If you were truly capable of the feats you claimed, someone would find an operator and CEO to handle all the messy parts for you and wait for their 10000x returns in 5 years.
> It's also not specific to me -- there are trainloads of people who could build trillion-dollar companies if magically freed from human issues, such as trust.
... ah yes, if only they trust everyone who claimed this and gave them the money. Truckloads of trillion dollar companies.
Edit:
> When I was young, I thought technical problems were hard, and made comments just like yours when more experienced people told me technical problems were easy and human problems were hard. I ignored them too.
There are hard technical problems. Autonomous self-driving cars, for example. Waymo would love to hire you to deliver this in 5 years with a handful of friends.
VR headsets that are lightweight, wireless, and can drive high fidelity experiences is another example. Meta would love to get in touch.
Drones that can safely deliver packages at scale while following US regulations is interesting. Amazon would love to hire you or buy your startup.
I don't discount how hard operating is. I know though the long leash you have if you're truly exceptional.
I understand your point. As I said, I would have made the same point when I was half my age. I understand it all too well. Younger me would not have believed older me either.
I'm not overestimating my own prowess. I've done it before, moved into management, executive, and now back into primarily technical / tech leadership. I've had multiple perspectives on this. I've also had plenty of technically exceptional employees who could, in abstract, do the technical part of this as well.
What you're clear underestimating is the organizational and human part of this. You can't just hire a CEO, and hope they'll magically solve it for you, anymore than you can't just hire a random engineering grad and hope they'll build you a self-driving car. And as I said, simply handing someone money, no matter how good they are and how much money you hand them will rarely result in any important technical problems solved without the right organizational structures.
And while there are some technically hard problems, like self-driving cars, that's not the majority of unicorns. I've also worked at a company that solved a problem of similar complexity as several of the ones you listed (with about 20 employees, and about a decade of funding). That one had *both* hard technical and human problems. Without solving the human problems, it wouldn't have had the right 20 employees, nor the decade of sustained funding. And those employees would not have solved the right set of hard problems to make an economically-viable entity.
You're completely missing where the hard parts of making a successful organization lie, or why they're hard.
I think you're saying "if somebody gives me <something that is essentially non-existent>, I can do something really cool."
There's a lot of wriggle room with the goalposts here, as they say it's basically impossible to falsify your statement, since you can shift the burden on the proclaimed "hard" bits (i.e. "human problems"). I'll just re-iterate the point made by others that what people normally mean by "10 motivated, aligned high-quality people" is probably not what you purported to mean. Normally "10 motivated, aligned high-quality people" exists. You claim it doesn't even exist in practice.
The rest of the discussion is just people talking past each other.
Yep seen the same thing. In terms of 10 people I'd go further give me 1-2 fantastic "unicorn" devs and enough time, I could build you just about anything.
It just so happens no one in any org gets that time and keeping those unicorn devs focused is very hard. Very small annoyances can cause them to leave and that's what they do.
I have seen people single handily build amazing stuff but it never lasts. Eventually someone gets left with the half built system and then a team needs to take over and bloat and ...
>Give me 10 motivated, aligned high-quality people, 5 years, and all of us room to focus, and I'll build you a better Google, almost guaranteed.
Is this unique to you, or can others do the same with the same 10 people?
If not unique to you, how come 7 billion people on the planet have not been able to do this over the past 25 years? Certainly this many people of that caliber get together often enough to do this, right?
If unique to you, then you really need to just find one person in that 7 billion to fund you so we can see another trillion dollar company get built in 5 years by 10 people.
Or, third option, this isn't reality, and you're missing some understanding of the issues involved.
No, that's the point. The people do exist, and aren't even uncommon. What doesn't exist -- at least replicably -- are the organizational structures around those people.
It's confusing if someone posts a Mastodon handle on eg Twitter. If it's a link to their profile, you can't follow them on that page. You have to go to your own instance and paste their handle into the search box and follow them that way.
Oh, and I should add, it doesn't work if you ended up on an instance that doesn't federate with the one that your followee is on. And the UI for that is "it just doesn't show up in search."
Much of the feedback around blocking (instances and profiles) is less than transparent, some of which is by design.
Fully-transparent blocking tends to play to the interests of griefers, abusers, and trolls.
For many instances, blocks are listed on the /about/more page of the instance. Mind that you'd also have to check to see if the remote instance is blocking your own.
Ideally the society where the companies operate in should provide the safety rails, thus allowing the company to do whatever it legally can to maximize profits.
But that wouldn't be the crony capitalism that we're stuck with now. Also, things have been moving too fast for a long time, making it nearly impossible for governments to keep up.
You underestimate the cognitive burden of resolving syntactic ambiguity with non-lisp languages. So many problems disappear with s-expressions that when I return to a language with a "human" syntax I feel bad that I have to work harder.
Possibly, but I would argue we're not doing a very good job at that. Things like precedent rules plug into what we're used to for mathematical expressions, but that's only a small part of actual programming. Teaching novices without prior PL experience, you notice how much language syntax can get in the way, I get to the core concepts faster with scheme-driven classes than python-driven ones.
Question to HN: have there been recent interesting empirical studies into the impact of PL syntax? I tend to always cite https://dl.acm.org/doi/10.1145/2534973 but newer ones might have superseded it.
> Because it's possible to have a lot better representations of computer code for humans than AST.
Which are those? I assure you I am a human and I find s-expressions to be clean, elegant, easy to read and easy to understand. I have learnt C, Java, C#, PHP, Perl, Ruby, Python, Go, Javascript, C++, Rust over the years and I have not found a syntax that feels better to me, the human.
When I am writing tools for myself I reach out for Lisp because it is the most convenient one to write code in. I don't have to worry about all the syntactic ambiguities and complexities of these other languages. With Lisp, I can focus on solving my problem without being weighed down by complex syntaxes of other languages.
You are saying there are better syntaxes out there? Where can I find this elusive language which has better representations of computer code for humans?
A lot of this is pure preference, and if we try to debate the merits of prefix vs infix operators we're just going to yell MY PREFERENCES ARE RIGHT AND YOURS AREN'T at each other until we get bored.
But there are some places where I think Lisp syntax is objectively worse than the alternatives. Parsing Lisp is easy because it shifts all the hard parts to the semantic layer. Everything looks so similar that you have to do a lot more reading, and memorization, to know what's going on at all.
----
To take a supposedly good example from elsewhere in this thread[0]:
> (do-a-thing b (+ a 5))
Is this a function call, or a thing that expands into something totally different? It matters, because (+ a 5) may not be something so trivial - it may have side effects, or be evalulated multiple times. (If it was a lazily evaluated pure function, there would arguably be no point to having macros at all.)
This one is trivially solvable by making macros visually distinct in some way, e.g. Rust's ! suffix, or C's convention of MACROS_YELLING_AT_YOU. It doesn't matter what the syntax is, as long as it exists.
----
Is (progn a b c) a function call or a special form? What about (proxy a b c) or (pregen a b c), both totally plausible names for functions? It's totally possible, even easy, to tell those things apart if you're paying attention, but you have to actually read the word at the start and comprehend it. In languages with dedicated syntax for this, you can just recognize { and } and instantly know what's going on, no need to involve the word-recognition parts of your brain at all. This sounds trivial - nearly all syntax decisions are - but it adds up when everything in the language is like this.
----
[0] https://news.ycombinator.com/item?id=33469932; I've renamed the macro here to make my point clearer, because the obvious response would be "well obviously someMacro is a macro", but in the real world people do not name their macros that.
lets me look up standard language things by pressing L while the cursor is on a symbol like progn; it launches a browser window on the doc, and jumps to the section. For stuff that is in the code tree being worked on, there is jump to definition via tags.
> In languages with dedicated syntax for this, you can just recognize { and } and instantly know what's going on, ...
If you don't already know the construct, it may be hard to search for it, especially online.
Recently I wanted to see some examples of C++ lambdas in code bases. I tried searching for things like "[](" and "[]{" and whatnot on github; no luck.
> C's convention of MACROS_YELLING_AT_YOU.
Plenty of C macros (that do non-obvious evaluation) get written in lower case.
Even if you think you're sure something is a function call, that tells you little. You might know that it won't clobber the argument expression, but what you often need to know is what the construct does; and in the course of finding that out, you will find out whether it happens to be a macro.
I wrote a response saying what I do to counter these problems.. but actually, I think introducing some form of syntax to differentiate macros would be amazing. I wonder if macro symbols could be pulled automatically from packages and suffixed with ! if they are not so already. A new symbol could be added to the package so as not to internally affect the code. Thanks for the idea.
I've had to laugh hard when a friend of mine wanted to use a Firestone to light up his cigarette... First light up some wool, then light up the cig haha