• 0 Posts
  • 17 Comments
Joined 3 years ago
cake
Cake day: June 15th, 2023

help-circle

  • Oh, one other thing I wished I knew earlier: There’s all these drawing tools in the sketcher like line and multi line and arc and whatever. And coming from something like Inkscape I thought there was a similar sort of “path” concept, but there really isn’t. Every line is just a line on its own, just with constraints from its endpoint to the end of the next line. But you get those automatically when clicking with the line tool too! So early on, if I messed something up, I’d feel the need to delete the whole “path” and draw it right. Dumb. Just delete whatever line you need to delete, draw any other lines with any tool makes sense, and it’ll be equivalent. Just do whatever, the system doesn’t care and can’t tell them apart anyway.

    Obviously if something downstream is depending on the position of that line that might mess up those constraints, but that was more likely to happen when deleting all the lines rather than just the one problematic one I forgot to make as a curve or whatever.


  • I watched a few of the digikey tutorials in YouTube for the basics, and that was good enough for me to get started. But also I think like a computer after years of software dev, and I’ve done constraint-based UIs before, so I think it was pretty native for me.

    Here are some “once you know what the buttons do” tricks that I’ve learned:

    Early on I tried to put all of the details into one sketch, because it looked like “what I was trying to make”, and then it was a pain to pad this and then pocket that, etc. Now I think of it as an interative process, more like sculpting, I guess. But also you don’t have to do things in manufacturing order either!

    Maybe I want the outline of the case to be dependent on the screw holes, so it feels like I have to do them together. Wrong. In the Part Design workbench, in a single body, one sketch can just be the circles for the screw holes, because those have a fixed size and location. Done. Next sketch can be the the internal outline of where your board fits in, referencing the circles of the screw hole sketch using the “external geometry” button. Okay, now I have a sketch for the screws and a sketch for the internal bits, but I haven’t actually “made” anything yet. That’s fine! Now we can do another sketch for the outside perimeter that again uses the external geometry feature to be constrained based on the screw holes from one sketch and the internal space from the other, while maintaining a 4mn wall thickness around those features, or whatever. Great! Now we’re in a place where we can pad down the outline, pocket out the internal gap to one thickness, pocket down the screw holes to a different depth. The way we “built” the 3D features didn’t have to match the order we designed the sketches.

    Now that we have that, it’s still mutable. We can at this point add another sketch for some risers you want, and pad those up. Great, what else? Maybe this edge is a bit sharp. Click it and apply a chamfer. Okay what’s next? You know? Just step through it getting closer every time. You don’t necessarily have to get all features defined up-front.

    If things start at different heights, you can use datum planes! From your body, click the datum plane button, then it will be asking what you want to reference it off. From here you can expand your Origin in the tree view and click the XY Plane to have another one like that. Then you can set the offset in the task panel on your right to be basically 7mm above the XY plane or whatever. Great! Probably name it, and then hide it because it’s just visual clutter. But now when you’re making your next sketch you can attach it to this “screw height” plane, and be exactly where you need to be to either pad up from here or pocket down or whatever. And when padding or pocketing you can also use the “to face” mode instead of “dimension” mode, and pick the datum plane as your face, to have an easy “it’s as thick as it needs to be to get here” thing that will ensure your pockets down always line up with your pads up, for example.

    You want a lid? Great! New body in the Part Design Workbench. But you want it to be based on your other bottom part so you don’t have to redo everything? You want a Shape Binder, which looks like a green blob for some reason. And if you have your lid as the active part (its name is bold in the tree), then you can select any sub-element of your main body before clicking the binder button and only grab that element. Like, for the lid you probably want the sketch of the screw holes rather than the whole thing. And maybe another of the sketch of the outside perimeter. And now you can use that as external reference geometry in your lid sketch and have the whole thing done in 10 minutes! And there’s even a chance that if you adjust a constrain on those screw holes later, the whole body and perimeter and lid will all adjust together because they’re all referencing each other. Of course, the downside is if you delete a line and redraw it in the screw hole sketch, everything downstream might break because all of their references are now missing. But having several simple sketches makes this better than one mega-sketch with all the detail.

    The number one number one number one thing to not get tripped up on early is that an individual body, the 3D part, must always be connected at all times! Which kinda makes sense as a finished product, it has to be one thing, but it can be confusing when you’re in the middle of working on it. Your sketches can have shapes wherever, but the 3D part must stay contiguous. So let’s say you wanted some posts around each screw hole to act as stand-offs. Makes sense. So you make a sketch for the screw holes, which is just some circles in space and nothing else, and you make a sketch based on that for the posts and it’s also just some circles in space. And you think “I’ll just pad these down to give me the posts, then I’ll pocket the holes into them, and then I’ll get to work attaching them with a base”. Wrong. Sensible but wrong. When you do that you’ll only get one post, because the others aren’t connected to it! You can build up the sketches in any order, but when it comes time to realize it, it needs to stay contiguous. So sketch the holes, then the posts, then the outline for the base, but then pad the base up, then pad the posts down from the screw layer to the base layer. Or up from the base layer to the screw later. Whatever. Now that they’re connected to the base, you’ll get all the posts, because they’re one thing. Now you can pocket the screw holes from each post. Etc.

    If at some point you’re missing something, or your whole body disappears, make sure you haven’t cut something off from the main body. Everything must be attached! If not, it’s a separate body and should use the shape binder, as mentioned, to reference cross-body external geometry.

    Have fun, and don’t expect to be amazing right away! Oh and also, remember your goal is the print. Any amount of ugly in the CAD is something you have to contend with, but won’t affect the print. It’ll still be a case if you had to copy the constraints 5 times. It’ll still be a case if you used a circle instead of a bezier curve. You can’t see those sins in the print. And likely you won’t be starting a business of custom prints, so even you may never have to look at this CAD file again. So do whatever you need to to get the print. Make a new sketch that references the other sketch as external geometry and then traces all the relevant details in a particular order just to get the loft right. Ask me how I know. It’s stupid, but it works, and it gets the print.

    You got this!


  • I can least kinda appreciate this guy’s approach. If we assume that AI is a magic bullet, then it’s not crazy to assume we, the existing programmers, would resist it just to save our own jobs. Or we’d complain because it doesn’t do things our way, but we’re the old way and this is the new way. So maybe we’re just being whiny and can be ignored.

    So he tested it to see for himself, and what he found was that he agreed with us, that it’s not worth it.

    Ignoring experts is annoying, but doing some of your own science and getting first-hand experience isn’t always a bad idea.


  • "Imagine appearing for a job interview and, without saying a single word, being told that you are not getting the role because your face didn’t fit. You would assume discrimination, and might even contemplate litigation. But what if bias was not the reason?

    Uh… guys…

    Discrimination: the act, practice, or an instance of unfairly treating a person or group differently from other people or groups on a class or categorical basis

    Prejudice: an adverse opinion or leaning formed without just grounds or before sufficient knowledge

    Bias: to give a settled and often prejudiced outlook to

    Judging someone’s ability without knowing them, based solely on their appearance, is, like, kinda the definition of bias, discrimination, and prejudice. I think their stupid angle is “it’s not unfair because what if this time it really worked though!” 😅

    I know this is the point, but there’s no way this could possibly end up with anything other than a lazily written, comically clichéd, Sci Fi future where there’s an underclass of like “class gammas” who have gamma face, and then the betas that blah blah. Whereas the alphas are the most perfect ughhhhh. It’s not even a huge leap; it’s fucking inevitable. That’s the outcome of this.

    I should watch Gattaca again…


  • psycotica0@lemmy.catoTechnology@lemmy.worldPasskeys Explained: The End of Passwords
    link
    fedilink
    English
    arrow-up
    18
    arrow-down
    1
    ·
    edit-2
    5 months ago

    Technically they are the 2fa. The second factor is something you have. I store all my passkeys in my password manager too, so I’m not faulting you, but technically that’s just undoing the second factor, because now my two factors are “two things that are both unlocked by the same one thing I know”. Which is one complicated factor spread across two form fields.



  • I think the slightly more charitable division is “nerds who want to work on the tool” vs “nerds who want to use the tool to work on something else”

    Some people want their discord chat to work with little effort or errors because what they’re actually interested in is some video editor, or something. And if the chat is broken, it prevents then from getting to what they really want.

    I personally use XMPP, so this isn’t just to clear my own name, or anything.






  • Welllllllll, Taler is actually exactly the wrong suggestion for this usecase, because Taler requires all spends to be redeemed from Vendor to Issuer non-anonymously, which gives the Issuer 100% control and say which vendors are allowed, which is exactly the thing Visa and Mastercard are using to exert control.

    If there were competing Taler networks and Steam supported all of them, that might be okay because one of them might happen to not be dicks, but if there’s just one or two then Taler is designed from the ground-up specifically to enable this bad outcome. It’s actually one of their features!

    Sorry.


  • Honestly, I struggle with this myself. On the one hand I like the diversity of clients; it feels like a sign of strength of the community and protocol that there are many options that have different values. But the cost of this diversity is that it makes things more complicated to coordinate, and different people with different values have different opinions on what a chat client should even want for features.

    Something like Slack or Discord can roll out a server feature and client feature to all their clients all at the same time and have a unified experience. But the whole benefit of FLOSS is that anyone can fork the client to make changes, and the whole point of an open protocol is that multiple independent clients can interoperate, and so there’s a kind of irony in me wanting those things, but those things producing a fractured output.

    So I think XMPP, as a protocol, does the best compromise. These differences between clients and servers aren’t just random changes in behaviour or undocumented features, they’re named, numbered, alterations that live somewhere and are advertised in the built-in “discovery” protocols. The protocol format itself is extensible, so unexpected content can be passed alongside known content in a message or a server response and the clients all know to ignore anything they don’t understand, and virtually all of the XEPs are designed with some kind of backwards compatibility in mind for how this feature might degrade when sent to a non-supported client.

    It isn’t perfect, but I think perfection is impossible here. A single server and client that everyone uses and keeps up to date religiously with forced upgrades is best for cohesiveness, but worst for “freedom”, and a free-for-all where people just make random individual changes and everything is always broken isn’t really a community, and XMPP sits in the middle and has a menu of documented deviations for clients to advertise and choose.

    As for security, that can be mostly solved with libraries, independent of the rest of the client or server implementation. Like, most clients used libsignal for their crypto, so that could in theory be audited and bug-fixed and all clients would benefit. Again, not perfect, there’s always room at the interface between the client code and the library code that’s unique, but it’s not as bad as rolling your own crypto.


  • XMPP doesn’t change very very often, but there’s actually tons of XEPs that are in common use and are considered functionally essential for a modern client, and with much higher numbers than XEP-0004

    The good news, though, is that mostly you as the user don’t need to care about those! Most of the modern clients agree on the core set and thus interoperate fine for most normal things. And most XEPs have a fallback in case the receiver doesn’t support the same XEPs.

    I’m general XMPP as a protocol is a lightweight core that supports an interesting soup of modules (in the form of XEPs) to make it a real messenger in the modern sense. And I think that’s neat! But you can’t really judge the core to say how often things change.