1. 1

    My classes started last week, so I’m getting back into an academic mindset. I’m mainly reading this weekend! More notable readings include:

    • Usable Security: History, Themes, and Challenges, a brief introduction to the field of usable privacy+security research.
    • First few chapters of the Red Book.
    • Browsing through Coq’s documentation to see if there’s anything valuable to a learner. In class, we are currently working through Logical Foundations, but the first few chapters feel very “monkey see monkey do.” I can complete the exercises, but I still lack a deep understanding of what’s going on. Has anyone been through this before?
    1. 2

      If you want a good understanding of what happens under the hood in a dependently typed language, I highly recommend “The Little Typer” by Friedman and whats-his-name.

      1. 2

        currently working through Logical Foundations, but the first few chapters feel very “monkey see monkey do.” I can complete the exercises, but I still lack a deep understanding of what’s going on. Has anyone been through this before?

        I’ve found out that interactive proving made me try to apply tactics almost in a brute force manner, then you get stuck on non trivial exercises obviously. The solution I’ve found is to think of the problem in an informal way first (something which books advices to do as well) and only then do a mechanisation part.

      1. 15

        I’ve had a great experience with Nix

        1. 6

          I have also had good experiences with Nix, but I share the same sentiment as the OP. When Nix works out of the box it’s amazing, but I end up investing a non-trivial amount of time making the edge cases work as well.

          I have also not been able to resolve a few problems in a short amount of time and instead reverted to the system package manager for those packages.

          For me it’s still a strong step towards declarative management, but I am not willing to invest the time required to learn Nix thoroughly, so the edge cases are rough.

          (Using Home Manager on Debian)

          1. 4

            Out of curiosity, what sort of edge cases have you ran into?

            1. 4

              I don’t remember all of them, but I kept a list of things I’ve “escaped” Nix for here: https://github.com/azuline/dotfiles#broken.

              (nixpkgs doesn’t actually suck)

              1. 2

                ah yeah I wouldn’t even wanna attempt to package calibre lol

          2. 2

            100% agreed. Highly recommend Nix.

          1. 2

            Working on a self-hosted music server since I’m unhappy with the discoverability and organizational capabilities of the existing offerings.

            I’m not in a rush to get a stable release (read: when i stop editing the migration files) out, so the project turned into a sandbox for tooling and practices experimentation. This is my first $modern_frontend_js_framework project as well, so I fiddled around a lot there.

            I’ve enjoyed having a project with no need to execute and deploy. Work is a constant balance between delivery and QC/tooling/practices/whatnot, with a priority on the former, but I can mess around as much as I want here!

            https://github.com/azuline/repertoire

            1. 6

              Excited about starting an internship this week.

              I am trying to do less computer-related things in the names of moderation and diversity. I hope to read through the Powder Mage trilogy.

              But if I relapse, I’ll probably read Java Concurrency in Practice. I had a lot of trouble reasoning about the correctness of some multithreaded objects last week!

              1. 4

                Powder Mage is awesome, fast paced and action filled. Enjoy and good luck for the internship.

                1. 2

                  I have enjoyed The Kingkiller Chronicle a lot. The Powder Mage trilogy sounds interesting. Thanks!

                1. 6

                  Reading The Go Programming Language and selecting a few exercises, since I start working with Go next week. This is a pleasant distraction from writing C++ (eugh)!

                  1. 2

                    It’s a great book. I love the introduction that demonstrates everything from basic syntax to building a webserver that renders formulas.

                  1. 4

                    I wonder what the correlation between rankings and quality of undergraduate programs is (quality of individual courses and of overall curriculum).

                    My personal experience is at a university listed in the Top 15 on this site, yet the first two year sequence of (arguably important) fundamental courses is carried out almost entirely by lecturers with no relation to a publication-based ranking.

                    1. 4

                      My experience in compsci programs at two top-ten universities on this list (undergrad + grad) is that courses were mostly taught by research faculty who had no interest or particular aptitude for teaching. Full-time lecturers were consistently better educators than research faculty, with a few notable exceptions.

                      1. 3

                        Strangely, it’s the exact opposite for me.

                        The full-time lecturers were rather mediocre: their courses were essentially “let’s read a slide deck together.” The concepts taught lacked motivation and context.

                        Whereas the professors I took (senior-level/grad) classes with had far more engaging courses. But all of the ones I sat classes with had a visible interest in teaching.

                      2. 2

                        I agree, the rankings are definitely skewed towards graduate program factors like publications and reputation. I think part of it is that it’s difficult to measure teaching. Maybe the factor that’s slightly relevant to that is the placement rank where the undergraduate degree institution of faculty is accounted for.

                      1. 3

                        I’lll be continuing to race Advent of Code at midnight!

                        I’m also working on pushing my music server to a stable release. This weekend, I’m planning on:

                        • Switching the React frontend styles to twin.macro over raw TailwindCSS.
                        • (Attempting to) migrate the database to an immutable event log-like design. The database is SQLite, which doesn’t support materialized views, so I’m wondering how to best go about this. I’m thinking of using triggers to manually emulate materialized views, but this feels rather error-prone.
                        1. 7

                          As of Python 3.8, f-strings support = for self-documenting expressions and debugging [1]. Although it doesn’t include the line number, it’s pretty nice for quickly debugging.

                          >>> print(f"{1+2+3=}")
                          1+2+3=6
                          

                          [1] https://docs.python.org/3/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging

                          1. 1

                            Ahh…. I knew that something was out there! I had tried f"{1+2:=}" to no avail at one point and it didn’t work, and I hadn’t found anything in the documentation, but I must have seen those release notes at one point