Threads for rock

  1. 28

    Go is like the Debian Stable of languages, and I quite enjoy that at this point in my career.

    1. 14

      Whilst I agree that the language has remained super stable over the years, let’s also note that the tooling around the language hasn’t. I personally had to migrate from GOPATH to vendoring dependencies, then to Godeps and now finally to Go modules.

      Two stories about working with Go:

      1. We run Jenkins on AWS and around year 2017 fetching Go dependencies would fail once in a while. It turned out that Google was blocking requests from AWS network. Once we configured a proxy running in GCP problems disappeared. Nowadays, we no longer need that proxy.
      2. I initially created a backend project in Go and then quit the company. I rejoined them 3-4 years after and to my surprise the project hasn’t undergone much work. Once I installed the latest Go version the project would just run so I didn’t need to migrate any of the code nor dependencies. That was such a nice experience especially compared to me migrating from Java 8 to Java 11… But that’s a totally different story and not the pleasant one.
      1. 5

        Yes, once on Reddit someone made a comment about the stability of Go vs Node, so I dug up an archived project from only 2 or so years before (predating Go modules). Getting it to run on the current version of Go with Go modules was trivial. I gave up on getting it to run with the current version of Node because even with a Yarn lock, it just did not want to install. Maybe I could have fixed it within a day, but it was different from “just working” as Go did.

      2. 13

        Working in the Go ecosystem has made aware of how much breakage in other ecosystems is basically needless churn. Go even has a code rewriter as part of the core toolset and they still never break stuff as a matter of principle. Other projects are like “someone could someday make a rewriter therefore let’s break the code now.”

        1. 8

          I am quite excited for generics, since the lack of generics was holding me back from using it much. Now that they have it, I think I will also enjoy the stability of Go.

        1. 13

          This is clever, but I’m a little concerned it’s a step towards the “this is why we can’t have nice things” wrt hosting on github.

          I get it, gh pages is a quick and easy way to publish something publicly without paying for egress, and I’ve totally used it as such before for quick one-off things where it was helpful… but it seems like documenting and spreading the abuse of it for publishing big media files is just likely to lead to gh cracking down and making it difficult or impossible to use when you need it.

          1. 4

            This is a great call. I’m going to update the post tonight and use Archive.org (as suggested in another reply) for the mp3 hosting. I’ll post here again once its updated! Thank you

            1. 4

              Hey, loved the article, and had the same concern. What are the speeds like downloading large audio from Archive.org?

              EDIT: I went and browsed the collection of podcasts on Archive, and the download speeds were avg 90k/s, which to me, given it’s free tier, is not too shabby

            2. 3

              Just updated the post to use archive.org for mp3 hosting as per below. Thanks again for this feedback!

            1. 2

              Using shuffle.dev to build a new marketing site for this SaaS I’ve been working on. Currently stuck on finding/making a good logo.

              1. 11

                sync; sync; sync

                1. 3

                  I use this..

                  alias watchsync='watch -d grep -e Dirty: -e Writeback: /proc/meminfo'

                1. 2

                  The current data points used for generating fingerprints are: user agent, screen print, color depth, current resolution, available resolution, device XDPI, device YDPI, plugin list, font list, local storage, session storage, timezone, language, system language, cookies, canvas print

                  Curious if a browser plugin that randomizes or obfuscates these exists.

                  1. 5

                    The tor browser (which is a set of firefox configurations + extensions) blocked this successfully for me.

                    1. 5

                      The Tor browser does the best possible thing: it gives everyone the same UA, resolution, etc. And more importantly, it picks the most common values that are observed on the web for those. Every Tor browser user looks like the most statistically average web user in the world.

                    2. 5

                      Firefox has privacy.resistFingerprinting, which I’ve used reasonably successfully. Sometimes it breaks sites that display time e.g. Gmail other times it breaks in bigger ways e.g. when writing to a <canvas> element. So it’s not uncommon for me to need to temporarily disable it for a one-off basis.

                      1. 3

                        I’m running Firefox from the Debian repos with essentially all the privacy settings enabled as well as a bunch of extensions for fingerprint blocking, tracker blocking etc and it seems to have stopped this site from doing its tricks :)

                        1. 1

                          Brave has something builtin AFAIK

                          1. 2

                            I temporarily installed brave just to test this, then removed it because I find other things about it worrisome. But it did successfully block this specific site from identifying me. Vanilla firefox did not block it. tor browser successfully blocked it. So did vivaldi.

                            1. 1

                              What were worrisome parts? May be I can evaluate too.

                              1. 5

                                They have, in the past, decided it was OK to inject content into websites for their own financial gain. Here’s an example. This is related. Their administration of the “Brave Rewards” program (stripping ads from sites, showing their own stuff, and holding payments until the sites step up and ask for them) is also a little disturbing if less likely to be privacy-violating.

                                In short, if I want an alternate blink-based thing, I think Vivaldi is less likely to have a profit motive where they benefit from compromising my interests. And If I want something really privacy focused, I don’t think a blink thing is likely the smart play anyway. So there’s no upside to make me want to keep Brave around given what they’ve shown me.

                        1. 3

                          The jank will continue until foresight improves.

                          1. 5

                            Working on my tag-based file manager. Been trying to get a plugin system in place for a while now, once I get that working I think I can do a cleanup, and then open it up on GitHub (if anyone is interesting in something like this, send me a message!)

                            1. 3

                              I thought about a system (web app in my case) where tree hierarchy and filenames don’t exist. But a whole collection of tags. Some of them typed : file format: mp3, Avi, pdf that can be grouped in file kind (audio, video, document, image, etc) Dates : created, uploaded, last viewed, last seen, inside (the pdf document for an invoice three months before the creation, for instance) Users : authors, participants, recipients, brand

                              Others tags can be more subjective: subject, document type (invoice, manual, administrative form, contract), figurant (people in picture), character name (novel), etc

                              Samples of search I dream to be able to type:

                              • all about my last phone (invoice, pictures taken with it, manual, link to the vendor, etc)
                              • documents last year about rent
                              • documents subject:health without:external

                              Etc, etc

                              1. 2

                                A tag based filesystem sounds really cool, I’d love to test that when it’s ready to be run.

                              1. 17

                                Writing my PackagingCon talk about Nix/NixOS and getting mentally ready for my wedding on Tuesday

                                1. 4

                                  Enjoy the wedding! The day goes by so fast.

                                  1. 3

                                    Congratulations on your wedding! (and your talk)

                                  1. 3

                                    This weekend I’m writing api route handlers.

                                    I’ve been working on an app that I plan to soft-launch in Jan 1st. My first iteration was basically the entire kitchen sink. To me it looked great, but feedback was indicating that it needed to be simplified a bit to be more intuitive as far as user experience goes, and the more I encountered that opinion, the more I agreed with it.. So a complete rewrite naturally seemed necessary, as one does.

                                    I’m about 78 days out right now, still doing nights and weekends, and I’ve refactored everything from the DB schema up, and have also integrated a cool tool called SQLC that takes your SQL queries and DB schema then generates your database functions (using the stdlib) that you then integrate into route handlers and views. I think I should be on track to meet the date with some spare weeks for time off if I continue my current momentum and trajectory.

                                    This weekend, the part I’m working on is creating the route handlers for the app, and if I’m lucky I can spend some time thinking about the frontend. The v0 of the app (kitchen sink) was completely vanilla HTML and inlined vanilla CSS, with no JS at all. As time goes on, I see some things that might be actually a lot better with some vanilla JS involved, for example, JS progress bars for uploaded files- currently the tab just spins while the upload happens, and gives no other outward facing feedback that anything is happening. Originally I’d intended to have no JS at all, and to keep things as accessible as possible through standards compliant HTML with all of notation required for screen readers and other accessibility measures.

                                    It has been a very fun challenge. This year I challenged myself to only use the stdlib in everything I write, and it has been a great choice of project to allow me to make good on that commitment.

                                    btw, it’s a podcast host.

                                    It started out with an idea for a new podcast feed protocol to address some usability and discovery concerns I had as a listener, and I figured nobody is going to adopt this new format until there is someone else using it so here I am building a host. I am hoping (and wagering) that a generous free tier will bring enough content to my hosting to be able to get this new feed syndication format out there and hopefully some day other hosts might also use it so that I as a listener can use it. The host generates RSS of each feed, as well as this new format.

                                    If you want to read about the ideas I have with regards to podcast syndication, you can check it out here: https://readme.loud.so/