• 0 Posts
  • 48 Comments
Joined 1 year ago
cake
Cake day: June 17th, 2023

help-circle
  • There’s operations that treat bits like floats and operations that treat them like various kinds of ints, but the meaning of bits is in the eye of the beholder. There’s even good examples of mixing and matching integer and floating point operations to clever effect, like with the infamous fast inverse square root. I feel like people often think mathematical objects mean something beyond what they are, when often math is kind of just math and it is what it is (if that makes sense… it’s kind of like anthropomorphizing mathematical objects and viewing them through a specific lens, as opposed to just seeing them as the set of axioms that they are). That’s kind of how I feel with this stuff. You can treat the bits however you want and it’s not like integer operations and bitwise operations have no meaning on supposedly floating point values, they do something (and mixing these different types of operations can even do useful things!), it just might not be the normal arithmetic operations you expect when you interpret the number as a float (and enjoy your accidental NaNs or whatever :P).

    The difference of static and dynamic typing being when you perform the type checking is partially why I consider it to be a somewhat arbitrary distinction for a language (obviously decidable static type checking is limited, though), and projects like typescript have shown that you can successfully bolt on a static type system onto a dynamic language to provide type checking on specific parts of a program just fine. But obviously this changes what you consider to be a valid program at compile time, though maybe not what you consider to be a valid program overall if you consider programs with dynamic type errors to be invalid too (which there’s certainly precedence for… C programs are arguably only real C programs when they’re well-defined, but detecting UB is undecidable).


  • I kind of feel like “untyped” is a term that doesn’t really have a proper definition right now. As far as I can tell when people say “untyped” they usually mean it as a synonym for whatever they consider “dynamically typed” to mean (which also seems to vary a bit from person to person, haha). Sometimes people say assembly is untyped exactly for this reason, but you could also consider it to have one type “bits” and all of the operations just do things on bits (although, arguably different sized registers have different types). Similarly, people sometimes consider “dynamically typed languages” to just be “unityped” (maybe monotyped is more easily distinguished from untyped, haha) languages at their core, and if you squint you can just think of the dynamic type checks as a kind of pattern matching on a giant sum type.

    In some sense values always have types because you could always classify them into types externally, and you could even consider a value to be a member of multiple types (often programming languages with type systems don’t allow this and force unique types for every value). Because you could always classify values under a type it feels kind of weird to refer to languages as being “untyped”, but it’s also kind of weird to refer to a language as “typed” when there isn’t really any meaningful typing information and there’s no type system checking the “types” of values. Types sort of always exist, but also sort of only exist when you actually make the distinctions and have something that you call a “type system”… In some sense the distinction between static and dynamic typing is sort of an arbitrary implementation detail too (though, of course, it has impacts on the experience of programming, and the language design makes a bit of a difference in terms of what’s decidable :) (and obviously the type system can determine what programs you consider to be “valid”)… But you can absolutely have a mix of static type checking and dynamic typing, for instance… It’s all a little more wishy washy than people tend to think in my opinion).




  • Chobbes@lemmy.worldtoSelfhosted@lemmy.worldGoogle Photos Alternative
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    edit-2
    9 months ago

    I want all data to be encrypted before it even reaches the server. Yes, I don’t want to trust even my own server for my image backups :), particularly since I would want to use something like Immich to provide photo backups for friends and family and I don’t even want to technically have access to their unencrypted photos unless they explicitly share them. I kind of want the attack surface for my photos to be as small as practical too. It’s almost certainly worse to have them available on my device unencrypted than a dedicated server, but it’s worse to have them unencrypted on both (and I want photos available on device so, thems the breaks).

    I get that a lot of people won’t care about this and that they’d rather be able to run the image recognition features of Immich on the server and stuff, but I don’t think it’s entirely unreasonable to want encryption for this. If nothing else I’d love to be able to back up photos for friends and family and legitimately be able to tell them that it’s encrypted and I can’t see any of it. It’d be even sweeter if they could do image recognition on device and sync that metadata (encrypted) to the server as well.





  • For what it’s worth, this has not been my experience after self hosting my email for nearly a decade. It has not been a constant battle at all… it has just worked, and I get responses whenever mailing random people all the time and have not had delivery issues to my knowledge. That said, I have talked to people who have had issues and every time there has been something wrong with their configuration (usually DKIM or rDNS is not set up properly). There’s enough that can go wrong that I wouldn’t recommend people send important emails with it unless they’ve been doing it for a while and they’re sure it’s working, but in my experience this is all fear mongering. Self hosting your email is very doable and is generally not a constant battle against getting put in the spam slammer. There’s a lot of picky little things to set up at first, but once it’s set up it’s usually fine.


  • In my experience the problems with self hosting email mostly occur when something is misconfigured. I think it’s good for people to try to self host it, and if you pull it off it’s great (I love having mine self hosted, and it’s convenient to be able to have as many email addresses, storage, and accounts as I want). It is difficult to get right and debug when something is going wrong, but it’s far from impossible. If you set up SPF, DKIM, and DMARC and have rDNS pointing to your mail server’s domain name you’ll likely find success. It’s possible I’ve just gotten lucky, but I have never had a problem with IP ranges getting banned.




  • In my experience self hosting email it has pretty much been “set it and forget it”. I feel like there’s a lot of fud from people with misconfigured email servers (because there is a lot that can go wrong on setup). In every case I’ve seen where people are complaining about email deliverability I’ve found that they haven’t configured DKIM or rDNS properly. That doesn’t mean there can’t be issues, and I am sure it is technically possible to get sent to oblivion, but I feel like this issue might be somewhat overblown.



  • C++ is technically a completely different programming language to C, but they share a lot of similarities because C++ is sort of derived from C (and now they’ve both evolved somewhat separately). The main addition at the start was OOP being baked in to C++. A typical C program is often a valid C++ program as well, but there are some subtle differences in a few areas that can cause problems. C++ has a lot of features compared to C, a more complex type system, a big templating system for compile-time computation, and focuses a lot on adding low/no cost abstractions to make writing programs easier without incurring a high cost at run-time… That said many people do still prefer C, often for its simplicity in comparison.



  • Hell yeah :). I’ve heard people have had problems with Linode’s IP blocks with MS… I’m glad to hear that Linode was actually able to help you resolve the problem. The biggest problem seems to be that you just might not realize if your e-mails are being dropped. Not sure if MS will notify you via DMARC if your IP block has been blacklisted, from the sounds of things they probably don’t and just silently drop things, so I guess you have to monitor the blacklists yourself?



  • May depend what you want and where (location can matter a little bit for latency critical stuff, but streaming video won’t care), and what operating system you would run on it. The Hetzner ARM servers are pretty cheap for what you get (and it looks like they include 20TB of bandwidth). I’ve been pretty happy with Lunanode. I think people often look here for deals: https://lowendbox.com/ they often recommend Racknerd boxes… I think there’s some affiliation with Racknerd and lowendbox.com, but I threw something on a Racknerd machine recently and have had a good experience so far. You may want to do some research if you want to send mail directly from these machines. Not everybody allows it (sometimes you just have to ask), and I hear tell that sometimes you can end up with an IP somebody spammed with before with a bad reputation.


  • I was considering a VPS! That said, if I’m say, accessing my jellyfin library externally through a VPS, wouldn’t that just end up costing ludicrous amounts of money?

    Depends on your usage, but probably not? If you can transcode on your jellyfin server you’ll be able to serve lower quality versions remotely if you want to save bandwidth… But most VPS’s provide around a terabyte of bandwidth per month by default. If you use more it will cost more. I think it’s usually fairly cheap to get more, but if you’re the only one accessing it you’re probably not going to use that much. Like if you rip a blu-ray you might end up streaming a 50gb or so file for a movie, but that’s only a twentieth of the bandwidth allotted to you (roughly)… Plus if you reencode it to something smaller before putting it on your jellyfin server, or if your jellyfin server can transcode fast enough you can send a smaller video stream to your mobile devices or whatever.

    I don’t use Arch btw ;)

    I don’t either, that article was just what I found that mentioned setting up Tunnelbroker with a dynamic IP.