Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb

  • 7 Posts
  • 1.09K Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle

  • dan@upvote.autoSelfhosted@lemmy.worldSoftware for manga/book reader
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    12 hours ago

    Which OS?

    On Android, Moon+ Reader is pretty good.

    My wife uses the Amazon Kindle app on her Android tablet. You can use it for non-Kindle books by sending an email to a special email address for your Kindle account: https://www.amazon.com/sendtokindle/email.

    Calibre is useful for this. It shows an easy to use “send to Kindle” button, and can convert books in ePub, mobi, etc formats to the format that works best in the Kindle app (AZW3).

    If you want a web interface for Calibre (eg to run on a home server and download books when you’re away from your computer), Calibre-web works well.



  • dan@upvote.autoSelfhosted@lemmy.worldDNS?
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    2
    ·
    edit-2
    1 day ago

    A recursive DNS server and a local DNS cache/forwarder/are two different things with two different purposes. You will always need both.

    Why do you need two separate ones though? Recursive DNS servers also cache responses. Usually the only reason you’d run a local forwarder/cache is if you’re not running a local recursive server.



  • dan@upvote.autoSelfhosted@lemmy.worldDNS?
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    2 days ago

    Throw Unbound on there too as your upstream recursive resolver

    If you want to run your own recursive DNS server, why would you run two separate DNS servers?

    You don’t even need to worry about an encrypted session to your upstream anymore because your upstream is now your loopback.

    Your outbound queries will still be unencrypted, so your ISP can still log them and create an advertising profile based on them. One of the main points of DoH and DoT is to avoid that, so you’ll want them to be encrypted at least until they leave your ISP’s network.


  • dan@upvote.autoSelfhosted@lemmy.worldDNS?
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    2 days ago

    AdGuard Home is a better choice than PiHole since it uses DNS-over-HTTPS by default. There’s also an app called AdGuardHome-Sync to sync settings between multiple instances.

    I’d recommend running two DNS servers, and at least one of those separately from the rest of your infrastructure like on a Pi. That way, if you need to pull one of them offline, the internet still works.






  • Your data really isn’t worth that much.

    Also, it’s a common misconception that large tech companies like Google and Meta sell your data. They don’t. The data is what makes the company valuable - they’re not going to give away their competitive advantage. Instead, advertisers can target people based on the data. The advertisers never actually see the data nor exactly who their ads are reaching (it’s just aggregate anonymized data).

    On Google and Facebook, even individuals can use the same tools that large advertisers use to list their ads, and see exactly what they see.






  • I took down the home page of one of the top 5 websites for around 5 minutes.

    There were two existing functions that were written by a different team: An encode method that took a name of something (only used internally, never shown to the user) and returned a numeric identifier for it, and a decode method that did the opposite.

    Some existing code already used encode, but I had to use decode in my new code. Added the code, rolled it out to 80% of employees, and it seemed to work fine. Next day, I rolled it out to 5% public and it still seemed okay.

    Once I rolled it out to everyone, it all broke.

    Turns out that while the encode function used a static map built at build-time (and was thus just an O(1) lookup at runtime), decode connected to a database that was only ever designed for internal use. The DB only had ten replicas, which was nowhere near enough to handle hundreds of thousands of concurrent users.

    Luckily, it’s commonplace to use feature flags changes, which is how I could roll it out just to employees initially. The devops team were able to find stack traces of the error from the prod logs, find my code, find the commit that added it, find the name of the killswitch, and disable my code, before I even noticed that there was a problem. No code rollback needed.

    That was probably 7 years ago now. Thankfully I haven’t made any mistakes as large as that one again!

    Always use feature flags for major changes, especially if they’re risky!