My current favorite is typed nil values that are not equal to the nil literal. Oh how I wish I had access to the drugs they were using when they designed that feature.
Seriously, static typing without proper parameterized types isn't going anywhere; just do it and get it over with. Watching the Go-community is like a flashback to Steve Jobs arguing for the one-button mouse.
Please, enough with the JavaScript already; there are thousands of saner means of expression already existing or waiting to be discovered. Writing flawless, verifiable contracts is the worst use-case ever for that stinking pile of a language. I wonder how many missing bazillions it's going to take for the world to wake up and move on.
And they were all suppressed, corrupted and/or destroyed by the same powerful propagandists of monetary value, or capitalists. The version of history that you've been fed conveniently decided to forget that part since it ruins the point they're trying to make. But keep doing the drone-dance for all I care; collectively we are slowly becoming aware of the rules of the game, with or without your help.
I did the back-and-forth for several years with Go. What drew me in was promises and wishes, what made me leave every time was realizing I had fallen for the same stupid trick again. It only looks simple because of the features they skipped and the arbitrary limitations they decided on. Once a codebase reaches a certain level of complexity and the need for more powerful abstractions arises, the perceived simplicity is no more.
Agreed, one of the most dogmatic communities I've had the misfortune of stepping into. But then that's pretty much a requirement given the amount of pretending they need to pull off to keep their bubble intact.
You don't mention your level of experience with generic type systems, but I find it's mostly the case that I can't imagine any use for techniques I'm not yet familiar with.
Here is a random example from my recent adventures, a channel implementation in C++ which uses generics to provide value-semantics for user-specified message types:
Doing any of these without generics would mean either erasing types or writing duplicate code. Go provides generic channels, slices and maps; but it doesn't extend that power to user-code since users are supposedly not smart enough to be trusted with power.
It's not about being good, it's about doing your best and improving every day. Sometimes it's about doing what others would consider bad. Pretending to be perfect is the opposite of progress and evolution.
I can't take responsibility for your expectations, differences between languages and their consequences for the code we write is a tricky thing to quantify. I have no proof and I'm not here to argue, only to share my authentic experience in the hope that it helps someone else. Both codebases are clearly linked from the post for comparison. Feel free to ignore my advice if Go is working out for you.
Go contains many good ideas that may be carried over to more pragmatic languages. Using it for anything beyond simple, self-contained command-line tools and network servers never really worked out for me. And that makes sense, since it was explicitly designed to scale over groups of inexperienced developers at any cost; the opposite of my needs. Modern C++ runs circles around Go for more complex software, and it provides the tools to add as much convenience as needed on a case-by-case basis. I recently ported a 7kloc Go codebase to C++ and wrote down some of my impressions here: https://github.com/andreas-gone-wild/blog/blob/master/rewrit...
A classic, the information about Vietnam isn't really relevant but I still find it interesting. Ran into this post back when I was busy implementing ORM's in umpteen different languages myself, and I remember that it motivated me to keep looking for better ways. Lately, I got the chance to sidestep the whole issue and implement my own persistence from the ground up in Snackis (https://github.com/andreas-gone-wild/snackis/tree/master/src...). It is still based on tables and records, but having them available as first class objects helps bridge the gap considerably.
No surprises here, everything about Facebook is inadequate. User security and integrity is so far down their list of priorities that it never sees the light of day. Quit, it's that simple; someone always has to lead the way. There are plenty of alternatives, but this one is mine:
Still too much syntax. I don't mind security, but Rust defeats the purpose by drowning code in an ocean of keywords and punctuation. I'm a firm believer in encouraging rather than enforcing the right thing; languages are tools, not religions.
Writing correct C++ is perfectly possible, especially if you're willing to put in a Rust-level of effort to get there.
That would depend on the level of trust and whatever agreements you made. There are jobs like that, some people aren't into owning slaves but still need outside expertise. Which is nice, since some of us are more into living than being slaves.
Assholes take notice, this wave of transparency and collective action is only going to increase in strength moving forward; either turn on a dime or find another world to live in.
Smalltalk in General and Scratch in particular take several steps in the same direction. There are clear advantages to not having to deal with the impedance mismatch, same as for dropping SQL and using database primitives. Depending on implementation choices (serialization format etc) you're trading more or less interoperability to get there.
He is though, right up in the title. And then he changes the subject to discussing why he prefers hiring inexperienced developers; which is fine, I guess, as long as shitty software is your goal. That being said, the rock-star/code-ninja culture isn't really helping anyone. I once got hired for one of those positions, but failed to realize in time what a shitty pool of wishful thinking I was diving into. From my experience, it's not the magic it's presented as, it's not about solving 10x as many problems in the same time; rather about skipping 10x as many problems and doing exactly what needs to be done, because intuition and pattern matching is much more effective than logic reasoning for heuristics.
I was rather thinking about consuming bullshit lies about other peoples fabulous lives, algorithmically arranged for maximum impact. But yes, bragging about the size of your intellect falls in the same basket. Google it if you desperately need authority to back up common sense. Most of the stuff people post on Facebook just wouldn't be posted in a less twisted medium, and we would all be better off. I know I'm growing tired of watching adults, companies and even authorities do anything for a few like-clicks. It's sick and corrupting, and it needs to stop.
It's simple really, just stop participating in that evil experiment. From the outside, you look like morons; talking to opposite sides of an algorithm while interpreting what comes out as reality. It's been proven over and over again that consuming that crap makes everyone feel bad and hate each other. There are plenty of alternatives, but this one is mine: https://github.com/andreas-gone-wild/snackis
It's different enough to encourage different patterns of behavior; being based on email means that it's not very practical for nonsense chat-traffic. Snackis isn't aiming to rule the world, there are no incentives to fuck users over for profit. It has basic project/tasks built-in, so that separates that information from the feeds. And it can be set up for offline use, where it doesn't touch the network unless you ask for it. And it doesn't eat all your disk and ram space.
How about Google revealing some of their own darkest secrets instead, that would be interesting. There are clear incentives for the ruling powers to make everyone believe we're all as messed up in our heads as they are, makes us more forgiving and accepting of whatever leaks out from their filthy games.
Snackis may be considered more post-modern than modern, I prefer open structs and free functions to classes and methods and simple/custom to over-engineered; but it depends on plenty of new C++-features to do its magic:
https://github.com/andreas-gone-wild/snackis
Agreed, I briefly entertained the idea of adding deadlines to the distributed PM-software (https://github.com/andreas-gone-wild/snackis) I'm writing but decided to nudge evolution in the right direction instead.
I find Beck to be mostly spot on, enjoyed his books on smalltalk and unit testing back in the days. I get the feeling that he couldn't care less who is a master according to what measure, he's just trying to make the best use of his experience by doing and sharing, which is the the only thing that makes sense once you go deep enough down the software rabbit hole.
I spent the last 32 years coming up with interesting problems to solve. Even though most of them never went anywhere, it's obvious to me that there is a bigger perspective where everything I've learned fits in. Ironically; my best advice I can give is to follow your passion; solve the problems you care deeply about, the best way you can think of, and don't bother so much with other peoples opinions. Unless you're in it for awesome profits, in which case I'm probably the worst person to answer.