I don’t work in IT at all. My self hosting journey started when I got sick of feeling powerless in the face of big tech companies who are increasingly ripping off customers or violating their right to privacy. There’s also the general mistrust that comes from my data being repeatedly breached or leaked because share holder profits are more important than investing in basic security.
Because I love ruining days, everything starting at “this task will be graded” was written by someone else. It looks official because the person’s handwriting is neat, but if you compare the letters to the ones written giving the assignment they’re different styles
Edit: I am apparently very wrong, but in my defense, I am very dumb.
looks like normal variation in a persons lettering to me. compare the k in textbook with the k in skibidi, almost the same. distances between letters and especially risers as well are similar between the two sections.
The “R” in “Read” and the “R” in “Remember” are identical, for example. The squiggly “d” in “Today’s” and later in “skibidi” and “and” are also exact matches. I hate that you made me do this.
I don’t work in IT/Tech at all, but I’ve been an enthusiast since I was young, at first piggybacking off of my dad, then developing my own interests as I got into high school and college. I started self-hosting because I found it interesting and as time progressed I saw the benefits of operating things locally. I only host things within my own network though, because I’m not yet comfortable with how to safely set up external access.
There’s no way they used Gemini and decided it’s better than GPT.
I asked Gemini: “Why can great apes eat raw meat but it’s not advised for humans?”. It said because they have a “stronger stomach acid”. I then asked “what stomach acid is stronger than HCL and which ones do apes use?”. And was met with the response: “Apes do not produce or utilize acids in the way humans do for chemical processes.”.
So I did some research and apes actually have almost neutral stomach acid and mainly rely on enzymes. Absolutely not trustworthy.
I guess Gemini took the word “use” literally. Maybe if the word “have” would be used, it’d change the output (or, even better, “and which ones do apes’ stomachs have?” as “have” could imply ownership when “apes” are the subject for the verb).
I grew up in a family of medical doctors, it came with its own set of similar challenges. Every problem discussion always revolved exclusively around solutions or practical harm reduction. I suspect God forbade the doctors from talking just for emotional support.
Every problem I ever had (completely normal ones included) was medicalized and pathologized, neatly classified and wrapped in a set of actionable instructions: “this is how you get better, this is how you allow it to get worse”.
I still remember coming home from school and sitting down at the dining table, eating my sausages with buckweed, while my dad, mom and older sister discuss methods and techniques to install a urethral catheter in a person with a broken phallus.
It wasn’t good or bad, it was just weird I guess. Hey, at least I am not scared of blood/trauma/desease, and in a some cases I believe it allowed me to stomach helping people in need, when other people would turn away out of disgust or disturbance.
I’ve done a backup swap with friends a couple times. Security wasn’t much of a worry since we connected to each other’s boxes over ssh or wireguard or similar and used tools that allowed encryption. The biggest challenge for us was that in my selfhosting friend group we all prefer different protocols so we had to figure out what each of us wanted to use to connect and access filesystems and set that up. The second challenge was ensuring uptime and that the remote access we set up for each other stayed up - and that’s what killed the project as we all eventually stopped maintaining the remote access and nobody seemed to care - so if I were to do it again I would make sure all participants have alerts monitoring their shared endpoint.
I loved the 2600 because that was all we could afford when I was a kid. I liked the ColecoVision and Intellivision graphics better though. Luckily, some of my friends had both.
Some classical symphonic music greatest pieces album that’s at least 2 CDs worth, but hopefully more. Being on a desert island, I’m sure I will go through all sorts of moods and emotions, so I’ll need something for everything.
Disclaimer: I actually like C++ the language, I’m reasonably comfortable with it and enjoy it as an upgrade from C. I don’t use much OOP stuff as I’m writing a game using the flecs ECS. So things like abstract classes are mostly absent from my codebase.
What has been driving me up the wall the last month has been build systems and dependencies: don’t get me wrong; meson is great but the problem is not everyone uses meson. All I want to do is add some library built with cmake as a dependency without needing to rewrite the build system or install it on my OS. Apparently that is too much to ask!
I’m seriously considering dropping everything and jumping to Rust because of Cargo. Yes I’ve tried setting up conan but not having much fun since the recipes are all third party and out of date anyways
I have not heard this consensus. Definitely inheritance where the base class holds data or multiple inheritance, but I thought abstract was still ok. Why is it bad?
In 99% of the cases, inheritance can easily be replaced with composition and/or interfaces. Abstract classes tend to cause hard dependencies that are tough to work with.
I’m not sure why you would use abstract classes without data. Just use interfaces.
The way I was taught was that you usually start off with only an interface and then implementing classes, and then once you have multiple similar implementations it could then make sense to move the common logic into an abstract class that doesn’t get exposed outside of the package
I usually break it out using composition if that’s ever needed. Either by wrapping around all the implementations, or as a separate component that is injected into each implementation.
Ask Bjarne to add interfaces enough many times until he gives in.
On a more serious note, I’m not exactly sure what the best C++ practice is. I guess you just have to live with abstract classes if you really want interfaces.
The only problem is to ensure the entire team agrees to only use it like an interface and nothing else. But I guess that’s the only proper way to do it in C++, for now.
That’s not really the job of the language, though. If they can’t read the design docs and source annotations, they don’t really have any business touching anything.
You have implementations like ArrayList and LinkedList.
Many of those method implementations will differ. But some will be identical. The identical ones go in the abstract base class, so you can share method implementation inheritance without duplicating code.
If the lists have shared components then that can be solved with composition. It’s semantically the same as using abstract classes, but with the difference that this code dependency doesn’t need to be exposed to the outside. This makes the dependency more loosely coupled.
In your example, the declaration of ArrayList look like:
public class ArrayList extends AbstractList implements List {
}
The dependence on AbstractList is public. Any public method in AbstractList is also accessible from the outside. It opens up for tricky dependencies that can be difficult to unravel.
Compare it with my solution:
public class ArrayList implements List {
private AbstractList = new AbstractList();
}
Nothing about the internals of ArrayList is exposed. You’re free to change the internals however you want. There’s no chance any outside code will depend on this implementation detail.
Perhaps we have a terminology mismatch, I tend to use abstract class and interface interchangeably. I’m not sure it’s possible to define a class interface in c++ without using inheritance, what kind of interface are you referring to that doesn’t use inheritance?
Rust’s cargo is great, I’d say it would be best to make the switch sooner rather than later once your code base is established. The build system and tooling alone is a great reason to switch
What sucks is I’ve been working on this hobby project for nearly 4 years now. It started in C#, moved to C, now C++. It’s at the stage where a lot of basic functionality has been implemented, with the largest component, the Vulkan based renderer being maybe 1/4 implemented. The core game stuff is ECS based and flecs has a rust binding so migrating that will be easy. Renderer will just become even further from completion. I’m worried that there will be new problems that are maybe more inhibiting, but this is meant to be a fun project and build systems aren’t fun. It’s a difficult balance and I’m not the only person involved, the other person isn’t as convinced by cargo as they haven’t spent days working on the build system
I’m a gameplay programmer who have worked with Unity and Unreal and I’ve experiment with Rust for gamedev(though only for hobby projects) and for regular code. My conclusions so far is that Rust sucks for gameplay code, for most other things it’s kinda nice.
The biggest reason is that it’s much harder to write prototype code to test out an idea to see if it’s feasible and feels/looks good enough. I don’t want to be forced to fully plan out my code and deal with borrowing issues before I even have an idea of if this is a good path or not.
I would say though that because you are using ECS stuff it is at least plausible to do in Rust but at least for my coding/development style it still isn’t a good fit.
I would propose creating a distributed hash table for this. But I would never host someone else’s data like this, because I’m too afraid they will give me encrypted illegal content and then some obscure law will give me the fault for it. This is just me though.
kbin.life
Oldest