Don’t get “rest of world” mixed in there; I mean sure, all governments suck in one way or another, but most of them at least aren’t imperialist.
Don’t get “rest of world” mixed in there; I mean sure, all governments suck in one way or another, but most of them at least aren’t imperialist.
An @lemmygrad user not knowing what USSR/СССР stands for is so funny to me for some reason (it’s the Union of Soviet Socialist Republics/Союз Советских Социалистических Республик). The difference between a united republic and a union of republics is kind of the reason it was so easy to tear apart in the end, any constituent republic could quit the union at any time.
Nah, the language itself should be as simple as possible. Bloating it with endless extensibility and features is exactly what makes Perl a write-only language in many cases and why it is becoming less and less relevant with time.
I agree, but then there’s also some other niceties that come from expression parsers in the language itself (as noted in the article): syntax highlighting, LSP, a more complete AST for editors like helix.
I honestly think it can be a lot more readable, especially when the regex would have been in the thousands of characters.
TBH I think it goes back way further than that: US expansion started of as part of the British expansion, who were probably inspired by Romans. I’m sure there are examples further back in history as well. It’s a pretty easy general idea to come up with if you are unburdened by ethics, empathy or humanity and your only motivation is greed and/or religious zealotry. But yes, parallels with Lebensraum specifically are especially potent.
Looks like their long-term strategy for peace is to deport, imprison or exterminate the (uncivilized, jihadist, subhuman) locals and re-settle with (civilized, devoted, master-race) Israelis. Now, where have I heard this idea before…
This is why I’m kinda excited about WASM. With a WASM backend for GHC, you can now write almost the entire frontend logic in Haskell, with only some minor bindings on the JS side. I really wish that this happens at some point to eliminate the need for JS almost entirely, but I’m not that hopeful anymore.
It’s quite useful to parse comments and generate documentation from them, either as plain old hypertext or in your editor with LSP.
Typically this is true, but it’s certainly possible to get comparable performance with functional style
It’s possible, but you have to specifically write code that’s fast, rather than idiomatic or ergonomic, and you have to know what you’re doing. At that point, you may have been better off writing it in something else. I feel like OCaml is good at this because it allows you to write abstractions and main control flow in a functional way and hot paths in an imperative way without switching language, but so is Rust.
Carp, which I linked above, basically uses the same approach to memory management as Rust. It doesn’t rely on GC.
I’ll take a look, thanks!
I also find that for most cases it really doesn’t matter all that much unless you’re in a specific domain like writing drivers, making a game engine, etc. Computers are plenty fast nowadays, and ergonomics tend to be more important than raw performance.
I mostly agree with you, e.g. Haskell and Clojure, despite being “slow”, are plenty fast for what they’re used for. On the other hand, I’m very much annoyed when “user-facing” software takes way too long to load or do simple tasks. Java in particular is pretty bad at this: JOSM (Java OpenStreetMap editor) takes longer to load than my entire desktop startup, including a window manager and browser. Unfortunately it’s also the best editor around, so I pretty much have to use it to edit OSM, but it still annoys me to no end. Unnecessary computations, IO inefficiencies and layers of wrapping also affect the power consumption quite noticeably.
Modern C compilers are a fascinating blend of functional and imperative, that’s true; and I didn’t say that C is “close to how the modern architectures work”. However, mainstream modern architectures are almost always engineered with C in mind primarily, and this is also acknowledged in the article you’ve linked. Rust, having a lot of similarities to C in terms of its underlying memory model, calling conventions, and control flow primitives, can often benefit from those hardware patterns and optimizations in a way that’s more difficult to replicate with a functional language (especially so given most of them are GC-d due to their memory model). The closest I’ve seen in terms of easy-to-write-quick-code is OCaml, but even there the fast paths are often written in a very much imperative style. Idris2 also seems promising if they manage to get a GC-less mode working. Maybe also Roc, but I’ve not taken a look at it yet.
Note that I write all of this as someone spending a lot of their work time programming in a functional language (Haskell), with Rust being mostly for hobby stuff. It just always surprises me how much easier it is to write fast code in Rust, and yet also how much of my Haskell intuition was applicable when I was learning it.
I agree that they fit different niches! My point was that with modern CPU architectures, imperative languages make it much easier to write fast&efficient code just because the hardware was pretty much engineered with C in mind. IMHO Rust offers the best of both worlds when it comes to systems/low-level dev.
TBH Rust is pretty nice, it borrows (pun intended) a lot of ideas from the functional world (algebraic data types, traits, closures, affine types to an extent, composition over inheritance, and the general vibe of type-driven development), but it’s much easier to write fast, efficient code, integrate with decades of libraries in imperative languages, and the ecosystem somehow feels mature already.
So, here’s my attempt
The first portion (^.?$
) matches all lines of 0 or 1 characters.
The second portion (^(..+?)\1+$
) is more complicated:
(..+?)
is a capture group that matches the first character in any line, followed by a smallest possible non-zero number of characters such that (2) still matches (note that the minimum length of this match is 2)\1+
matches as many as possible (and more than 0) repeats of the (1) groupI think what this does is match any line consisting of a single character with the length
1
(due to the note in (1), so that the repeating portion has to be at least 2 characters long), orTherefore, combined with the first portion, it matches all lines of the same character whose lengths are composite (non-prime) numbers? (it will also match any line of length 1, and all lines consisting of the same string repeated more than one time)
My understanding is that the Congress of Soviets was replaced with the Supreme Soviet, the democratic structure was changed but the Soviets remained, just shifted in form, and could still be used democratically, just not in all cases.
I believe this is true, but I would argue that the fundamental change was that non-Party candidates were almost never allowed to run. As I noted, this is not due to a constitutional change but rather a change in electoral tradition. Anecdotally, as a result of this, all three my grandparents didn’t feel represented by their deputies/delegates, and welcomed that part of the Perestroyka changes, when the rules were relaxed and more alternative candidates appeared.
A good analogy is that most local governments in the US run uncontested.
I believe this to also be a non-ideal situation (especially given the two-party system where neither represents the working class). However, aren’t there at least party primaries, so that one can choose which candidate from the dominant party “runs” for the uncontested election? Whereas in USSR the candidates were chosen by the Party and not the electorate directly. (my understanding of the US electoral system is lacking, so I may be wrong here).
That’s why I stressed reading Blackshirts and Reds, which dispels the mythology and takes a critical, nuances look at the USSR.
Thanks for the recommendation! I’ve started to read it a while ago, and mostly agreed with the contents. I’ll have to pick it up again.
Soviets were de-facto abolished after 1936 (not due to the constitution itself, rather “by tradition”). While there technically were elections, in almost all cases there was only one candidate. The three of my grandparents that I grew up with (all proudly working-class - teacher, engineer and doctor, born in 1930s), never participated in elections with more than one candidate until Perestroyka (at which point the communist project was on its deathbed).
Note that I’m not even anti-USSR, it’s still markedly better than the bullshit capitalist systems. There actually was plenty of workspace democracy, and some local democracy, but I don’t think we should glorify it as some bastion of democracy. There still unfortunately was a kind of ruling class - the Party and MGB/KGB (but I should note that it was much easier for a working-class person to join their ranks than it is in capitalist “democracies”). Rather, learn from what it got right, and fix what it got wrong.
Problem is not how weak or strong the encryption is
Here it’s definitely part of discussion. The context was
It’s encrypted anonymous communication capabilities.
It’s barely anonymous, and poorly encrypted. The latter is the reason Durov is in custody while Signal devs are scott free. He could easily turn illegal stuff over to French authorities, but doesn’t.
The bigger problem is that people somehow assume this a huge threat, while all previous cases didn’t involve anything like that.
There have absolutely been cases where a backdoor/weakness/lack of encryption used to catch criminals before: https://en.wikipedia.org/wiki/Operation_Trojan_Shield https://en.wikipedia.org/wiki/Ennetcom https://en.wikipedia.org/wiki/EncroChat . I distinctly remember that there were also arrests of opposition activists in Russia based on personal messages in VKontakte, but can’t find the news right now.
real criminals do their stuff everywhere (especially on telegram) for years, staying safe.
Some are staying safe, others are being caught precisely because of this.
Problem is not how weak or strong the encryption is, but that once you are under oppression and do opposition activities, you’re going to learn by yourself how to deal with it.
Using better encryption schemes is definitely part of that.
Toy may call it TLS but it’s a custom protocol.
Sure, it’s mtproto. The security it provides for non-encrypted chats (which are the absolute majority of chats) is not any different from just having TLS for transport. It’s potentially even worse as it’s not as well-audited.
Data is not kept unencrypted on their servers, according to their docs.
That just means that they store both your data in some encrypted way and the key. They can still read it trivially. You don’t even have to know the protocol to understand why: you can add new devices without having any other device online, and read all non-secret chats. It might also just mean disk encryption, in which case it’s plain-text in RAM while the server is running.
There’s user to server encryption, just not e2e.
That’s exactly what the comment said: The only encryption that applies to most chats on that platform should be transport encryption via TLS
. It’s about the same level of encryption as Lemmy PMs.
The fact that Telegram doesn’t cooperate with French authorities doesn’t mean that it doesn’t cooperate with other authorities or sell your data to the highest bidder. They have all the technical means for it.
Don’t use a regular Telegram chat if your life depends on the messages being private. Use XMPP, Matrix with E2EE, or at the very least Signal. Heck, even WhatsApp is (reportedly) better, as it claims to provide E2EE and that’s been checked by some security professionals who have been given access to the source code. If you absolutely must use Telegram for something like that, only use secret chats.
Thinking that the current Russian government is communist/socialist is peak brain rot. It is a nepotist police state with conservative/neoconservative social policy (religion, nationalism, anti-LGBT) and a neoliberal economic policy (capitalism). It’s almost an exact opposite of the ideas behind the hammer and sickle.