its-kostya
I don't necessarily disagree with your advice, but goodness, I don't look forward to using any of the low quality software in the next decade. I hope the shareholders remain happy.
1. Correct, maintainable changes 2. Correct, not maintable changes 3. Correct diff, maintains expected system interaction 4. Correct diff, breaks system interaction.
In no way are they consistent or deterministic but _always_ convincing they are correct.
Sincere question, how do beginners to the field (interns, juniors) do this when they don't have any best practices yet?
I am biased to think more features negatively impact how humans can reason about code, leading to more business logic errors. I want to understand, can we make the compiler understand our code differently without additional features, by weidling mastery of the existing primatives? I very well may be wrong in my bias. But human enginuity and creativity is not to be understated. But neither should lazyness. Users will default to "out of box" solutions over building with language primatives. Adding more and more features will dilute our mastery of the fundamentals.
I do wonder if it is possible to bin certain features to certain, uh, distributions(?), of rust? I'm having trouble articulating what I mean but in essence so users do not get tempted to use all these bells and whistles when they are aimed at a certain domain or application? Or are such language features beneficial for all applications?
For example, sim cards are mini computers that actually implement the JVM and you can write java and run it on sim cards (!). But there is a subset of java that is allowed and not all features are available. In this case it is due to compute/resource restrictions, but something to a similar tune for rust, is that possible?
Could you share a situation where the behavior is necessary? I am curious if I could work around it with the current feature set.
Perhaps I take issue with peers that throw bleeding edge features in situations that don't warrant them. Last old-man anecdote: as a hobbyist woodworker it pains me to see people buying expensive tools to accomplish something. They almost lack creativity to use their current tools they have. "If I had xyz tool I would build something so magnificent" they say. This amounts to having many, low-quality single-purpose built tools where a single high-quality table saw could fit the need. FYI, a table-saw could suit 90% of your cutting/shaping needs with a right jig. I don't want this to happen in rust.
I admit the skill issue on my part, but I genuinely struggled to follow the concepts in this article. Working alongside peers who push Rust's bleeding edge, I dread reviewing their code and especially inheriting "legacy" implementations. It's like having a conversation with someone who expresses simple thoughts with ornate vocabulary. Reasoning about code written this way makes me experience profound fatigue and possess an overwhelming desire to return to my domicile; Or simply put, I get tired and want to go home.
Rust's safety guardrails are valuable until the language becomes so complex that reading and reasoning about _business_ logic gets harder, not easier. It reminds me of the kid in "A Christmas Story" bundled so heavily in winter gear he cant put his arms down[0]. At some point, over-engineered safety becomes its own kind of risk even though it is technically safer in some regards. Sometimes you need to just implement a dang state machine and stop throwing complexity at poorly thought-through solutions. End old-man rant.
This doesn't justify them double dipping. Raising prices on consumers to cover tarrif costs and then getting refunded for tarrif costs isn't ethical no matter who caused the tariffs.
Consumers didn't ask for this either, so are we going to see year-long sales from companies?
But if you have the receipt, email the company and ask for help obtaining an old version. They are very willing to help customers, both current and previous.
If I stop paying, I have the perpetual licence for the version at which I last paid so the "I WaNt tO owN mY SoFTWArE" crowd (which I am a part of) can choose to only pay when their current version starts lacking modern features. That's the reality of anything that you buy.
My experience is the software development landscape evolves so frequently that a yearly refresh of modern convenience features makes it a no brainer for a professional. I love to tinker, but between family and career, if I do happen to have a few hours to code I don't want to spend any of that time debugging my custom IDE. I used to, I respect those that do, but that's just not how I want to spend my time.
Plus, I am very happy to support developers and I encourage others to as well. Esp when the company isn't "branching out to sell user data, advertising."
Thought I'd share the data point to support jetbrains
If the thought of privacy doesn't turn you off, you must love the thought of unsolicited marketing emails getting amplified through ads that Google serves you.
What does this program accomplish? How does it accomplish it? Walk me through the boot sequence. Where does it do ABC?
I work in a company where I frequently interact with adjacent teams' code bases. When working on a ticket that touches another system, I'll typically tell it what I'm working on and ask it to point me to areas in the code that are responsible for that capability and which tests exercise that code. This is a great head start for me. I then start "in the ball park".
I would not recommend to have it make diagrams for you. I don't know what it is but they LLMs just aren't great at coveting information into diagram form. I've had it explain, quite impressively, parts of code and when I ask it to turn that into a diagram it comes up short. Must be low on training data expressing itself in that medium. It's an okay way to get the syntax for a diagram started, however.
I wish you an auspicious time in your new role!
Sure you might argue "well if they can do more with less they won't need as many data centers." But who is going to believe that a company that can squeeze more money from their investment won't grow?
Tangentially, I am looking forward to learn the new innovations that come from this problem space. [Self-rightous] BG certainly is exceptional at presenting hard topics in an approachable and digestible manner. And now it seems he has an unlimited fund to get creative.
You're right on the money there, the thing is _nobody_ can beat the market, you can only get lucky or have insider knowledge. A strategy that always works is "Buy and hold" and especially diversify when things are volatile. Instead we see volumnes of cash moving in waves at any news or rumor.
Most comments in the thread are missing that critical point. Yes you are achieving the end goal, perhaps faster. And yes, built projects (perhaps worse quality) are still better than not built projects.
But take the home cooking vs ordering at restaurant example:
At a restaurant you can prompt for exactly what you want to eat and it will be made for you without you actually having to do it. When the food comes out you can taste it and notice it is missing some flavor. Problem is, you don't know what is missing. If you are knowledgeable about the dish, you can prompt for additional spices or flavours.
When I cook, I try all the ingredients before I add them and then taste the result so I know how an addition changes the final result.
I am now a much better cook because of this because I can make substitutions on the fly. Dish missing sweetness? Carrots, baby red peppers, beets etc can all substitute - never even reach for sugar. Already added a lot of salt but still feels like more needed? Add sour flavours like lemon juice.
Sure, reliance on AI will end up with more things built but you'll have a generation of "cooks" that don't know why you add a bay leaf or two to soup, except that it's always in recipes.
Debugging becomes, hit the debug endpoint, get a list of all goroutines and their call stack. A leaked goroutine shows up a lot with the same call stack and that's it. There is also a fancy graph you can make the visualizes allocated objects if you have a mem leak and aren't sure if it is me or goroutine.
* Anti-pattern because it is so easy to forgo good program design (like a solid state machine) and reach for a goroutine and communicate back with channels. Do that a few times and your code becomes spaghetti.