• 0 Posts
  • 8 Comments
Joined 1 year ago
cake
Cake day: July 10th, 2023

help-circle

  • The real example of a health check trait really brings this issue to life, it’s linked within op’s article as well

    Is this a reasonable summary?

    Say you want a trait where a method returns a task that you would like to sometimes run within your own thread and sometimes move it to a separate thread to be executed, that means the Send constraint isn’t necessary to add to your trait but it would be nice to add that constraint within another method’s parameter definition so that it can accept structs that implement the trait and further constrain that implementation to be Send’able. That’s now possible with this new rust language feature, though it was previously possible through a crate, now it’s no longer needed.


  • I explained a little about buffer overflows, but in essence programming is the act of making a fancy list of commands for your computer to run one after the other.

    One concept in programming is an “array” or list of things, sometimes in languages like C the developer is responsible for keeping track of how many items are in a list. When that program accepts info from other programs (like a chat message, video call, website to render, etx) in the form of an array sometimes the sender can send more info than the developer expected to receive.

    When that extra info is received it can actually modify the fancy list of commands in such a way that the data itself is run directly on the computer instead of what the developer originally intended.

    Bad guy sends too much data, at the end of the data are secret instructions to install a new program that watches every key you type on your keyboard and send that info to the bad guy.


  • There is a ton of literature out there, but in a few words:

    Rust is built from the ground up with the intention of being safe, and fast. There are a bunch of things you can do when programming that are technically fine but often cause errors. Rust builds on decades of understanding of best practices and forces the developer to follow them. It can be frustrating at first but being forced to use best practices is actually a huge boon to the whole community.

    C is a language that lets the developer do whatever the heck they want as long as it’s technically possible. “Dereferencing pointer 0?” No problem boss. C is fast but there are many many pitfalls and mildly incorrect code can cause significant problems, buffer overflows for example can open your system to bad actors sending information packets to the program and cause your computer to do whatever the bad actor wants. You can technically write code with that problem in both c and rust, but rust has guardrails that keep you out of trouble.


  • I’m a 10 year pro, and I’ve changed my workflows completely to include both chatgpt and copilot. I have found that for the mundane, simple, common patterns copilot’s accuracy is close to 9/10 correct, especially in my well maintained repos.

    It seems like the accuracy of simple answers is directly proportional to the precision of my function and variable names.

    I haven’t typed a full for loop in a year thanks to copilot, I treat it like an intent autocomplete.

    Chatgpt on the other hand is remarkably useful for super well laid out questions, again with extreme precision in the terms you lay out. It has helped me in greenfield development with unique and insightful methodologies to accomplish tasks that would normally require extensive documentation searching.

    Anyone who claims llms are a nothingburger is frankly wrong, with the right guidance my output has increased dramatically and my error rate has dropped slightly. I used to be able to put out about 1000 quality lines of change in a day (a poor metric, but a useful one) and my output has expanded to at least double that using the tools we have today.

    Are LLMs miraculous? No, but they are incredibly powerful tools in the right hands.

    Don’t throw out the baby with the bathwater.