209 karma · joined January 1, 2022
My favourite technique for solving the Rubiks Cube involved orienting the edges in the first step (resp. with a lot experience possibly on-the-fly). I believe it was called the ZZ method or something like that. It reduced the number possible 3rd layer combinations to a few hundred. On his blog, Friedrich mentions an upper limit of roughly 1200 combinations. Back then ZZ was not invented, yet. It's been a long time, I don't remember well, but I believe a naive upper limit is higher. Nevertheless, in contrast to Friedrich's method (today refered to as CFOP, as a sibling commenter points out) solving the third layer was possible in a single step instead of two. There was situations were the two-step algorithm is far more ergonomic than the single step one, so one wouldn't reasonably choose the latter. This further reduced the number of combinations. Ultimately, ZZ was a manageble amount of algorithms to memorize. Also, the solving process felt much more natural than the Friedrich Method. More like, how it is supposed to be.
For experienced cubers this method lead to a low average solving time. On the other hand, due to the complexity of the edge-orientation step, instinctively exploiting advantageous situations was much harder than with Friedrich. Friedrich often allows you to skip steps or merge steps together, i.e. looking ahead in the solving process and reacting to what you see. While that is possible with ZZ, too, the simplicity of Friedrich's method allows for a much more freestyle solving process if you master it. Hence, for masters of the Friedrich Method the solving process becomes more similiar to the Heise method (Edit: Previously, I mistakenly wrote Roux), which not really is a method at all, but rather a way of understanding the cube. In principle, that's equally possible with ZZ, too, but in reality it is likely too complex for humans to master it as well as Friedrich's method.
In effect, the ZZ method while arguably superior to the Friedrich method did not allow for state-the-art speed. The best cubers not only achieved lower records with Friedrich, but lower average times, too (we're talking here about a difference of a one digit number of seconds). The ZZ method nevertheless lead to more reliable worst case times. If looking ahead in Friedrich fails, the ZZ method shines due to its overall smaller average number of turns necessary to solve the cube.
(However, all this information is 10 years old memories, so please check for yourself, if at the top level that's still true today or true at all.)
Also, it was a lot of fun to learn the ZZ method. I can highly recommend doing so. Learning several hundred algorithms is less than it seams. It likely takes at least a year, though, and that is if you learn several new algorithms per day. One does not need to learn them all at once. One can always resort to a two-step 3rd layer approach if necessary. But, getting the 3rd layer in a single step felt so awsome! (I was not even halve way through all algorithms, when life dragged me to focus on other things.)
I should definitely give cubing another try someday. Last time I took a cube, I couldn't even remember the two-step algorithm necessary to solve the particular 3rd layer situation that came up. However, this time I would rather focus on mastering ZZ's first step, i.e. orienting all the edges, instead of focussing on memorizing all 3rd layer combinations.
On a side note, there is now a - to my best knowledge - completely unrelated product "ExpertGPT" from some totally different company. I am not talking about that one.
Of course, this already implies problems with people with non-traditional orientations and identities. But I wouldn't regard those as the main problems. They even seem somewhat easy to overcome when compared to the usual sexism in Poland.
I find sexism in Poland to be a very different thing than sexism in Germany for example. With regards to both genders. It is more reciprocal, with more obvious sexism against man than in germany. It would be a too big subject, to even outline it here.
Maybe that student was doing the same. Simply asking a lot of people. And other studends usually do not. I find it really hard to overcome my own shyness in this regard. And I wouldn't consider myself particularly shy. I assume a lot of people simply do not try asking enough people in order to get a decent amount of them to join.
Of course that guy might be simply cheating, but I just wanted to share the story.
But to be fair, my employer wouldn't mind to let the project fail (It may very well fail anyway, btw). I am doing it voluntarily. He's not at fault at all, except for maybe allowing me to do it. I just love working on the project and try to get it done somehow, against all odds. Nevertheless, German laws now make something shady out of it.
On the other hand, this is not the first time I am doing so utterly stupid and partly self-distructive shit at work. But for sure it is the last time. I am never ever doing this amount of overtime again in my life. Don't get me wrong, I don't mind occasional overtime. But that's simply to much for too long now. I will barely go to work for several months in a row just to get rid of all that overtime, to give you an impression. (I know there is professions where people literally die, if people stop working similar hours. I am not really forced to do that so I am not complaining.)
I am glad my significant other is fine with it, since I barely caried any other responsibilities I should have... for a long time now.
Edit: I am not sure if there is actually special laws in Germany to avoid mutually agreed overtime. But there is for sure some rules where I work. Our company has a kind of special situation and strange laws surprisingly apply to us. Also it important to mention that if low performance and mistakes because of overworked employees happen nothing terrible will happen. You wouldn't want to have your medical devise be programmed by some sleep deprived idiot, but that is not the situation our company is in. If projects fail, nothing of importance is at risk. Many projects are of high risk and failing simply belongs to the business.
Someone else made this remark once, when the indroduction of type annotations was discussed as the python community discovering the benefits of static typing.
The reason is mainly the many language construct of C++ cover most traditional use cases of macros when programming C while at the same time being much less error prone than macros.
A sibling show how one easily can achieve the very same thing using short lambdas instead. That variant is also bound to the scope one is currently in, and in order to have that safety with a macro one would need to undefine the macros afterwards. One would also need to check that they are not yet defined beforehand, and if so restore the previous macro afterwards in order to not break completely unrelated code in case of macro name clashes.
1) Is "deprecated" and literally the first sentence states its use is discouraged because often such suggestions are misleading and bad advise.
2) From the readme it appears it just suggest to changes of parameter types in functions to existing interfaces. I was hoping to see something that suggests interface definitions from existing types based on whether share methods with same names.
About 2) I guess it is indeed kind of unnecessary as such suggestions are kind of trivial. On the ither hand I recently started to learn how to use interfaces and I have kind of a difficult time to wrap my head around how to make idiomatic use of that concept. So even such trivial help would actually be of some use to me, simply because it removes some cognitive load and I be able to see many examples (even potentially bad, but compiling ones) in front of my eyes.
In the process my coworker and found something we believed to be a bug with complex nans in some recent GCC versions, but where not smart enough to understand whether it is actually a bug or undefined behaviour in the standart.
Anyway, we where so exhausted from the refactor, we didn't follow it up again.
Based on my expirience I must completely disagree. The language go itself together with its tooling, i.e. compiler , debugger and module system makes it very appealing to write well-written and well-maintaned programs of large size in go. It is the combination of the simplicity of go together with gos property of being a "batteries included" language.
In particular, I have noticed it is much easier for inexpirienced programmers to write high-qhality Code in go than in C.
The negativity of the other comments to your post is simple astonishing. I can understand that you are sick of that.