Threads for ahobson

    1. 1

      I had used OpenWrt on some old APs and it had so much better WiFi coverage. I bought a new WiFi 6 capable AP and was planning on use OpenWrt, but held off to see. I was pretty happy with it until I started getting drops when streaming music to my wireless speaker. I switched to OpenWrt and all the problems went away.

      It’s great software

      1. 2

        It’s been a long time since I used OpenWrt directly, but yeah, can confirm. It’s amazing how bad the default firmware for consumer-level routers/AP is. It’s like they don’t even test it. You’d think router manufacturers would just take OpenWrt and build on top of that but there don’t seem to be many (if any) that do.

        1. 2

          GLINet does this and it’s great

          1. 2

            Interesting, thanks for sharing. I will have to keep that brand in mind. I might be buying another AP+router soon.

          2. 1

            I’ve come across a couple of factory firmware that were (and admitted to being) re-skinned OpenWrt. They’re not going to advertise it, but I suspect it’s very common.

        2. 3

          I’ve been using lima for docker, it runs all the time and barely uses any battery. This is on an intel Mac though, I believe a coworker used to run it on an ARM Mac and that ran fine as well.

          1. 4

            You might be interested in finch which uses lima under the hood. It’s worked well for my basic needs on my ARM Mac

          2. 2

            devbox gives me everything I want out of a package manager on my Mac. That combined with direnv gives me per project repeatable dependency installation and I don’t have to use homebrew.

            1. 10

              For me, the lesson is not wrapping dependencies, but understanding the abstractions you wish to expose inside your application. If you have a need to sanitize HTML in many places in your application, are you sure they all need the same kind of sanitation? Or would you be better off with an abstraction for the business function you are providing e.g. sanitizeBlogPostComment? For me, once you have the right abstractions, replacing the dependency is not so onerous. It also allows for different business functions to use different libraries if they need to which I have certainly seen use for.

              1. 1

                Yes, that’s the right way of thinking.

              2. 12

                I’ve used ADRs at my two most recent jobs and they have been mostly great. The danger I have seen is that if the document has to be approved, then people quietly make decisions without recording it anywhere. I think it’s better to encourage documenting decisions after the fact. I see others here have had the same experience.

                1. 1

                  Yeah, in my mind, the “decision record” part implies that it doesn’t happen before a decision but afterwards.

                2. 2

                  Some further ideas that I didn’t explore in this post:

                  • You can abuse the Issue system to have a comment system, automatically creating a new issue for each blog post and linking it to the post later
                    • This will probably need API access to do automatically, but you can hack this quickly with requests library and some API keys
                  • Multiple authors using Pull Requests?
                    • Why though? If you need this kind of power, please use a proper blog platform
                  1. 5

                    Utterances, an open source embeddable comments widget, stores each page’s comments on an automatically-created GitHub issue in the repo of your choice. Reader comments are posted under that reader’s own GitHub account, thus outsourcing spam prevention to GitHub.

                    1. 2

                      GH issues as comment sections are already a thing. Forgive me for not having links at have but I’ve seen some blog posts on here and Hacker News implement it.

                      1. 1

                        I’ve wondered about using gists, since they have a body and allow comments.

                        1. 4

                          Someone who used gists complained about not being able to remove abusive comments and/or ban commenters.

                          Personally I believe having comments on blogs is more trouble than its worth. If someone wants to get in contact with me they can hit me up on fedi.

                          1. 3

                            I add “comments welcome” links at the bottom of my blog posts to the various social media discussion places.

                      2. 36

                        The answer is given by Mark Adler (of the Adler-32 checksum function).

                        1. 31

                          “I am the reference” made me laugh out loud.

                          1. 3

                            The real question is, what was his problem that was so bad he made an account to ask about it?

                            1. 5

                              Not all users of SO create accounts because they have problems. I made mine to help others and answer questions, it helps my individual growth to think about questions others have.

                              1. 5

                                I suppose tons of people just created an account at some point in the “oh web 2.0 site, better reserve my username” hype, or just because it sounded useful ;)

                                wink - Member for 11 years, 11 months - 2 answers - 1 question

                                1. 1

                                  oh web 2.0 site, better reserve my username

                                  I did that for a while. I’ve stopped caring now that IDPs are used everywhere and the Internet in general is just too big. I sometimes worry someone is impersonating me unbeknownst to me.

                          2. 4

                            I really only have experience with AWS and I go back and forth about how much of IAM is necessary complexity. I absolutely agree it can be maddening to figure out the appropriate permissions. It doesn’t help that sometimes AWS docs don’t even mention permissions that are required and you can only find them out via the error messages.

                            P.S. The iamlive tool is pretty great for helping to figure things out in certain scenarios

                            https://github.com/iann0036/iamlive

                            1. 3

                              The question is, for whom is the complexity necessary? The problem with AWS is that it is highly opinionated, but pretends otherwise, and the majority of use cases are unnecessarily complex. Amazon is entirely comfortable shipping this as their platform and letting other firms charge on top of it, but that doesn’t help if all you want is something straightforward.

                            2. 3

                              I am extremely happy with deadgrep, mainly because it’s so easy to iterate on improving the search results as needed, and despite the name, it uses ripgrep under the hood

                              1. 1

                                Thanks, I’m using this now and it’s great

                              2. 3

                                What are build times like for go compared to rust? Is it faster for comparably sized large projects?

                                1. 15

                                  based on my own personal (anecdotal) experience, small to medium sized projects take N minutes to compile via rust, and N seconds to compile via go.

                                  after initial compilation, subsequent compilations will still take longer in rust, but it’s much more comparable (both languages do some caching to make things faster here).

                                    1. 3

                                      If the article authors would provide the source code repositories we could easily measure the how long it would, but based on my personal experience the difference in compile times is huge. Go compile times are usually in the single digit seconds range, except for projects using a lot of Cgo or if they’re very large, like Kubernetes.

                                      1. 4

                                        Could I politely yes, and … ? Yes, the go compiler is faster, but in my experience, any large go project will use linters, many of them. Linting is slow. The linters catch many errors, like not checking a returned error which the rust compiler requires you to check. I suppose that means you can get an executable quickly, but I feel comparing Go’s compilation speed vs rust without linting doesn’t capture real world usage.

                                        1. 4

                                          In my experience, the speed of the Go compiler allows you to move quickly during development. And yes, you do spend a few extra seconds linting before committing your code or cutting a release. I don’t typically run the compiler and linter in lock step.

                                          During development, we tend to compile frequently but lint less often. This is especially true if you’re already using VSCode or Goland for incremental linting.

                                          1. 4

                                            Linting and compiling are completely decoupled. You can do them in parallel if you’d like.

                                            1. 4

                                              Linters are usually just as fast as the compiler, O(seconds).

                                        2. 6

                                          Resubmitting as Source code is available as of September 3, 2023

                                          1. 2

                                            This reminds me of a talk by Stuart Halloway (transcript) that greatly influenced me. I don’t think you need to know much about clojure to get a lot out of it

                                            1. 36

                                              Codecov:

                                              Codecov is now open source

                                              Also Codecov:

                                              These repositories are available under the same BSL license

                                              The BSL license:

                                              The Business Source License (this document, or the “License”) is not an Open Source license. However, the Licensed Work will eventually be made available under an Open Source License, as stated in this License.

                                              Did anyone proofread this?

                                              1. 12

                                                My position on the BSL has changed over time. It feels icky to me still, but I don’t really object to it anymore because it feels like a pragmatic compromise to get as close to the ideal as possible while still remaining viable as a business in today’s world. If the alternative to BSL software is the company possibly not existing or being proprietary, then I will hold my nose and pick the BSL any day of the week. This mirrors my feelings on the FSF’s insistence on ideological purity (see the second to last paragraph).

                                                I’m less sure about how I feel about companies calling BSL software “open source”, though I’m not sure I actually object to it. I feel pretty solidly mixed.

                                                1. 19

                                                  I’m less sure about how I feel about companies calling BSL software “open source”, though I’m not sure I actually object to it. I feel pretty solidly mixed.

                                                  There’s “Source Available” or “Shared Source” for licenses that aren’t open source (according to the Open Source Definition). There’s no harm in saying that BSL is “Source Available, with code eventually turning Open Source automatically”.

                                                  Trying to dilute what Open Source means (which is what happens when everything that hands out some snippets of code under whatever terms is called Open Source) only serves those who want the concept of Open Source gone.

                                                  The BSL is clear about its intent, Codecov is not.

                                                2. 12

                                                  Looks like they’ve updated their post to address this:

                                                  Authors Note: We are using the term “open source” because we feel it best reflects our intent — current and future — with this product. Specifically, you can: view the source code, contribute to the source code, and download and run the code for yourself. We are using the BUSL because we feel it currently best aligns with our goals while supporting our ability to function as a business. While we acknowledge that the BUSL is currently not an approved OSI Open Source license, it still aligns strongly with our own open source goals and intent for Codecov at this time.

                                                  they seem to be pretending that open source and source available are the same thing. The non-open source license “aligns strongly with our own open source goals” sounds like their open source goals don’t involve open source.

                                                  1. 15

                                                    “Author’s Note: We are intentionally lying.” would’ve sufficed. How scummy of them.

                                                  2. 5

                                                    They now have a new post that seems to acknowledge the reality

                                                    https://blog.sentry.io/lets-talk-about-open-source/

                                                    Yesterday we announced that Codecov is now “Open Source”, and we messed up in two ways:

                                                    We wrongly used the term Open Source; while unintentional, we should have known better

                                                    We let our emotions get the best of trying to explain our position, rather than stepping back and addressing the problem

                                                    1. 2

                                                      They just can’t stop messing up, I wonder why.

                                                      • The new post is on a different blog, so that you don’t see it on the Codecov blog page.
                                                      • codecov.io still has a banner at the top that says “Come on in. Codecov is now open (source).”
                                                      • If you click that link it takes you to the original blog post, where the first things you see are the headline “Codecov is now open source” and the graphic that says “Yes, we’re open source.” You have to scroll down to see the note that says the post is inaccurate.
                                                      • The overall effect is that people casually browsing the site and not scrolling down to read the blog post are still given the strong impression that Codecov is open source.
                                                      • Their justification for “leaving the post [and the headline] as-is” is “to keep the record clear,” but they also removed the previous author’s note wherein they doubled down on their misuse of the term “open source,” so the record is not at all clear. Here is that author’s note, which you can only see via the Wayback Machine:

                                                      Authors Note: We are using the term “open source” because we feel it best reflects our intent — current and future — with this product. Specifically, you can: view the source code, contribute to the source code, and download and run the code for yourself. We are using the BUSL because we feel it currently best aligns with our goals while supporting our ability to function as a business. While we acknowledge that the BUSL is currently not an approved OSI Open Source license, it still aligns strongly with our own open source goals and intent for Codecov at this time.

                                                      • The current version of the post also changes BSL to BUSL, again not leaving the post as-is and not keeping the record clear.
                                                  3. 11
                                                    1. 1

                                                      It’s a silly name for a simple concept, but it’s a great concept and very easy to use in practice.

                                                    2. 11

                                                      I much prefer Nix package versions - it gives detailed instructions on how to use old versions, shows much older versions, and doesn’t put a vendor front and center.

                                                      1. 5

                                                        May I boost my own Nix Package Search? I needed something with a bit more resolution and that allowed searching by package prefix.

                                                        1. 2

                                                          hmmm, I agree. these are both new to me but I think you’re right.

                                                          1. 1

                                                            Why is yours the only one that lists e.g. tcc and servant?

                                                            1. 1

                                                              I’m not involved with it in any way, just a user, so I have no idea.

                                                          2. 4

                                                            When using JavaScript to do client side routing, the server isn’t the only entity that knows if a URL is valid. And so, for URLs that aren’t known to the server, it has to serve the index page that loads the JavaScript so that the client can then decide how to do the routing. I doubt that is what Prometheus is doing, but to me it’s a valid use case.

                                                            1. 1

                                                              Usually in client-side routing, you have your app server redirect to your index so the frontend can take over.

                                                            2. 4

                                                              The visualizations in Railway oriented programming have really stuck with me as one of the best ways to explain the power of Result and Option types.

                                                                1. 1

                                                                  Company: Truss

                                                                  Company site: https://truss.works/

                                                                  Position(s): Software Engineer (all levels), Senior Infrastructure Engineer

                                                                  Location: Fully Remote

                                                                  Description: Truss is a software consultancy that helps both private customers and government agencies

                                                                  Tech stack: Depends on the client. We have used Go, Python, TypeScript, JavaScript, etc. We use Terraform pretty extensively on the infrastructure side.

                                                                  Compensation: Depends on the position. Truss has open salaries so each position on our jobs page has the salary range. As part of the offer process you can see the salaries of all the folks currently at Truss. Truss offers 4 weeks of vacation, unlimited sick time, matching 401(k), excellent medical coverage at very little or no cost.

                                                                  Contact: To apply, please use our jobs page

                                                                  1. 3

                                                                    I don’t understand this “pin the channel git SHA” part of the process. Say I have some software environment in production that runs with fixed versions of nodejs, pan doc, and postgres. How do I find the right Nix SHA that contains the desired versions of all of those packages? If such a SHA doesn’t exist, what do I do? Find the best SHA for the majority of the packages then go back to installing the rest manually with a shell script? Sounds like a Dockerfile with a much more difficult specification language.

                                                                    1. 8

                                                                      The idea of pinning a sha is that all packages in the nixpkgs repo are guaranteed to work together for any given sha. For the most common programs, nix ships multiple versions by default to make it easy to switch between versions (nodejs has 10/12/14/16, postgres has 9.6/10/11/12/13). If you need exact dependencies you can create an overlay to specify the exact version of the dependency that you need.

                                                                      The advantage over a Dockerfile is that in Nix each program can depend on their own versioned set of dependencies: so you can have program hello depending on libyaml-0.12 and program goodbye depending on libyaml-0.13. In Nix they can co-exist peacefully without interfering with each other.

                                                                      1. 3

                                                                        Technically you don’t even need niv to do that either. You can encode the sha you wish to pin right in the default.nix.

                                                                        In fact both niv and direnv in the examples are unnecessary technically although they may make some things a little easier.

                                                                        1. 1

                                                                          How do I find the right SHA?

                                                                            1. 1

                                                                              Usually you pick a released nixpkg version. This page gives a pretty decent overview of the various methods to pin stuff. https://nixos.wiki/wiki/FAQ/Pinning_Nixpkgs

                                                                            2. 1

                                                                              OP here: completely agree that niv and direnv are technically unnecessary :) I wrote the post with in mind a complete Nix beginner that doesn’t really want to run nix-shell or pin nixpkgs manually, or learn how to use Nix flakes. I’ll use it as a resource to point people that are curious about Nix and want to try it without having to understand too much in depth how it works.