Threads for foxyjackfox

  1. 5

    I’m in the process of abandoning NixOS. It is just not suitable for Unix novices like myself. My most recent build is Linux Mint, which offers a more friendly app install and update experience for the uninitiated. I’m going to rebuild my NixOS machine on that distro soon too.

    Knock on wood I’ve never had to “roll back”, which was the feature of NixOS which at the time was most appealing to me.

    1. 14

      NixOS is a piece of software, so it has no feelings. Welcome back whenever you feel like it.

      1. 8

        NixOS is still hard to get started with even with lots of *nix experience. Any Ubuntu or derivation like Mint is probably a good bet for “normal” users. They provide the vast majority of the value, at a fraction of the startup complexity. My own adventure was a little similar:

        1. Tried installing Debian back in the early 2000s, and couldn’t even get Ethernet to work (in those days it was very much not plug-and-play).
        2. Installed a bunch of distros, and was never too happy with any of them.
        3. Ubuntu was the first point of no return. The usability was just next level, and it set a new bar for every Linux distro since then.
        4. Arch Linux was the second point of no return. A rolling distro strangely turned out to be more stable than Ubuntu’s big releases, at the cost of a really complex setup process and clunky package management.
        5. NixOS is the latest point of no return. Being able to configure all of my systems with a few hundred lines of extremely easy to read configuration.nix is vastly preferable to Puppet, never mind manually setting everything up.
        1. 6

          I’m an experienced Linux system administrator and I make heavy use of NixOS for managing my homelab and cloud-hosted VMs, but I stil use Arch Linux on my desktop and laptop PCs. NixOS is great for servers but less good at being a desktop OS, and in any case for the computers I use daily I care more about being able to make quick and arbitrary config changes than I do about codifying their state with a configuration language.

          1. 3

            I care more about being able to make quick and arbitrary config changes than I do about codifying their state with a configuration language.

            So I think that’s more of a home manager thing than a NixOS thing. HM does seem to be the dominant way people use NixOS but I really hated not being able to hot reload my RC files (eg when configuring i3) and decided I wasn’t going to do it. And it works great. I just drop stuff in systemPackages and use the traditional configuration mechanisms and life is good.

            I really think home manager is kinda misguided. Dropping RC files into place was never the painful thing about setting up a new machine, that’s the easy part. The sucky bits were remembering what constellation of packages you had installed (solved by NixOS already) and secrets management (eg creating and installing ssh keys, which HM doesn’t really do anything to help you with)

            1. 3

              With my config in HM, I can do things like change a single variable and have my font or primary/secondary colors across all apps/environments change instantly. I can switch between wezterm/alacritty for my main term and things like running prs (pass in Rust) with a single variable change. I have all of my dotfiles version controlled alongside the package versions, meaning that when I rollback to before zellij changed their config format, everything “just works”.

              I used stow for a very long time. HM is to stow, what NixOS is to Puppet. Though I do lament the eval/build times making trivial changes a bit annoying. But I find that’s easy to resolve too - when I’m iterating rapidly, I just do it in-place and then hoist that config into Nix/HM whenever it’s done and ready to be a part of my permanent config.

              1. 2

                So I think that’s more of a home manager thing than a NixOS thing. HM does seem to be the dominant way people use NixOS but I really hated not being able to hot reload my RC files (eg when configuring i3) and decided I wasn’t going to do it. And it works great. I just drop stuff in systemPackages and use the traditional configuration mechanisms and life is good.

                I’ve only very recently started using Home Manager, mostly as a replacement for several previous methods of managing dotfiles, but I’m finding that being able to codify a selection of packages I have installed is pretty useful. On the other hand, I’ve already run into some bugs with Home Manager; more importantly, I don’t trust the Nix ecosystem as it stands today to completely reliably manage every system configuration file I have on my system, or build every single package I care about (it seems like NodeJS packages are particularly vulnerable to having them break during a NixOS deploy, I think because a lot of the derivations for them were autogenerated from the Node metadata with some tool?).

                1. 1

                  Same here. I don’t know why, but I like to get to know the inner working of things and the whole “Just use home manager” way didn’t appeal to me.

                  Now after working out my own configuration setup I don’t see the appeal of it at all.
                  And I still have a lot of things I’d like to know about the nix language, but I’m getting there step by step.

                2. 1

                  Hell, I use Manjaro for my several home servers even. The Arch distros are very usable and lightweight, and AUR is a godsend.

                3. 2

                  It is just not suitable for Unix novices like myself.

                  IMO that’s reasonable. When you have more experience, though, it’s definitely worth it to re-evaluate Nix and NixOS for your use cases.

                1. 1

                  I always thought Gary Kasparov deserved a rematch with Deep Blue. IIRC he claimed he could have won a rematch. It is possible he learned enough about this opponent in his first encounter to defeat it.

                  1. 6

                    The Art of Computer Programming, Knuth

                    The Third Manifesto, Date and Darwen

                    Specifying Systems, Lamport

                    Types and Programming Languages, Pierce

                    Homotopy Type Theory, The Univalent Foundations Program

                    The Calculi of Lambda-Conversion, Church

                    1. 2

                      Out of all these, Specifying Systems really hit me in a way that’s stuck with me deeply. After the first chapter, I felt like I understood software on a whole new level.

                    1. 1

                      As it is break week 2/3 of the way through Hoon School Live I am studying Gall Guide and Full-Stack Walkthrough

                      1. 4

                        Can someone explain the joke here?

                        1. 41

                          I’ll explain it to you once I finish this mad CrossFit workout. You should totally do CrossFit, by the way. Check out my InstaTok for some sick ideas on how ripped CrossFit can make you. CrossFit.

                          1. 4

                            Almost flagged the damn post as spam. Good one there, you definitely got me. 😂😂

                            1. 4

                              That’s pretty much the best explanation of the joke there is.

                          2. 4

                            Certain communities are known for being very vocal about their favorite things. In this case, Linux distro choice. IMO this is a few years late and for maximum currency it should’ve been “Local man installs Nix.”

                            1. 2

                              Arch is a Linux distro with a (arguably silly) mindset of installing things manually. When installing and using arch, one is required to fiddle with intricated parts of the system, often lower level than what most people need to handle. The installation also includes steps in which you do not have access to a graphical ui and are forced to do things on a terminal.

                              There is the quite well deserved stereotype of arch users bragging about using as implying they are more l33t h4x0r than other people.

                              The joke is spot on.

                            1. 6

                              Here we are 17 years later. As Joel wrote, it would take decades for Microsoft to go down, and they could always reinvent themselves.

                              • Dotnet instead of .NET Framework, this reinvention has passed the early stages and seems to be doing OK, not taking over the world, but seems to be healthy enough. Runs on Linux and there are advantages to such a large collection of free open source libraries having a major corporate sponsor

                              • and speaking of Open Source, the reinvention of supporting open source

                              • Windows10, kinda sorta a reinvention of Windows..but it is still Windows. I personally don’t know any developers who care about the Windows API, but MS has positioned it to be just one of several platforms compatible with dotnet 6 (coming in November)

                              • Azure, MS was late to the cloud party, but they proved they can at least be one of the surviving major cloud platforms

                              • Office, reinvented as Office365…MS continues to milk this cow.

                              • Quantum computing, MS is determined to be in the running for this prize.

                              And above all Microsoft continues to be profitable quarter in and quarter out. No sign of reinvention as a consulting company.

                              1. 13

                                If I’m awaken at 2am from being on-call for more than once per quarter, then something is seriously wrong and I will either fix it or quit.

                                I quit my last job partially over this, at about the same paging rate :)

                                1. 2

                                  Quit my first job after I was called every night around 1AM during my one week on-call rotation.

                                1. 2

                                  It would have to be the old FSharpx F# OSS project on Github.

                                  Since then the project has been broken up into smaller pieces. Nuget.org lists 16 different packages, although the project itself was broken into 3 -4 (depending on how you count them) Github repos.

                                  At the time I was one of the top contributors, and I would still today be one of the top 3 for FSharpx.Collections, except the way the repos were split up all my history ended up in FSharpx.Extras, which I don’t even think I contributed to.

                                  In fairness to the individual who undertook splitting the repo, at the time I wouldn’t have preserved the Git history correctly either given my state of Git competence then. This was the project that took me from zero Git skills to some competence.

                                  1. 0

                                    PostgreSQL is free “as in libertarian”, not free “as in beer”.

                                    1. 17

                                      It all started over 11 years ago.

                                      1. I pulled a hobby C# project off the shelf and realized what I really wanted to do internally was pass functions around, which is a PITA in C#. I heard of this new language, F#, which is supposed to be a functional language. Maybe I should learn that.
                                      2. Puzzled over the source code of FParsec…which is not the best way to learn F#.
                                      3. Wrote a crappy program that solved an immediate research problem at work searching through logs of an IMAP server.
                                      4. Wrote a demonstration of parallel SQL DB reading which would solve a slowness issue with the company’s software.
                                      5. No hope of introducing F# at this company. Quit my job and went on sabbatical for almost a year learning by writing blog posts and speaking whenever possible.
                                      6. Met a young entrepreneur at the S.F. F# meetup who just got funding for a start-up and wanted to use F#.
                                      7. I’ve been working almost exclusively with F# and SQL now for over 7 years.
                                      1. 4

                                        Are there any well-known open source .NET apps (CLI or GUI) that run on Linux?

                                        1. 7

                                          KeePass.

                                          Back when Gnome + Mono was a thing lots of interesting stuff was born, eg. Beagle.

                                          Suse was actively developing nice user facing tools in mono at astonishing pace, then C# fell from favour because of politocs, most stuff was half rewritten in C++/Python/JavaScript, usually in lower quality/featureset.

                                          Since then I find Gnome worse with every release, but that has not so much to do with .NET support.

                                          1. 1

                                            I was using keepass on my windows desktop. When my machine started to die I was pleasantly surprised to find my keepass database worked on debian.

                                          2. 4

                                            There are a few Mono apps from back when the Gnome project was kind of adopting Mono as their standard runtime for apps. Two that come to mind are Tomboy (notes app) and Banshee (music player).

                                            1. 4

                                              Jellyfin media server (FOSS fork of Emby and alternative to Plex) runs on dotnet.

                                              1. 4

                                                If anything should work on Linux, it should be F#, but here’s a tweet from yesterday from the author of an F# course bemoaning the difficulty he is having getting his course to seamlessly work.

                                                https://twitter.com/kitlovesfsharp/status/1362125496683819012

                                                1. 3

                                                  It works fine for me on Fedora. As the comments suggest, it may be related to snap.

                                                  Ionode is buggy sometimes, but so is Visual Studiofor F#.Both are steadily getting better.

                                                2. 3

                                                  PowerShell for one, but it’s fairly recent that .NET Core got Linux support, so I doubt there are many large projects around yet. Most likely any really large open source projects in the coming years will come from Microsoft open sourcing their own products.

                                                  1. 2

                                                    There may be some, but I have been waiting for a bit more maturity in the .Net Core, .Net 5 (and now .Net 6) ecosystems before diving in. A year ago, I was reading a lot of stories about cross platform issues in core and I had my own painful experience setting up .Net Core with Asp.net.

                                                    I’m actually quite surprised how quickly there is now a .Net 6 version coming out.

                                                  1. 1

                                                    The improvements I would like to see over and above what SQL offers just are not compelling enough for anyone except hackers to attempt or even care about. Unless it was delivered to me on a silver platter, I wouldn’t even care.

                                                    1. Full support of the relational algebra. I think some implementations (PostgreSQL?) do implement relational division. MS SQL does not…you have to write some hacky SQL.
                                                    2. A native query language that is ordered like the order of operations the server actually implements. I believe LINQ is closest to this, but I would never default to using LINQ because of the overhead.
                                                    3. A more granular approach to nulls. I haven’t wrapped my head around this in a while, but I believe one can make the case for 2 logical nulls. Better yet would be eliminating nulls for option type.
                                                    4. Improved type support…better support of user defined types, for instance.
                                                    1. 1

                                                      I really miss a good cheap Windows tablet. I used to have one of the very early low-end Surface tablets. It was great for plopping on the couch and surfing the internet, and still let me access the other file systems on my home network and run some applications. But the battery eventually gave out and the damn case was entirely glued. I tried heating the glue, but it wasn’t something I was experienced at and I cracked the screen.

                                                      1. 4

                                                        Having seen both the SV and traditional sides of the software engineering experience, an SV company can hire great SEs and still self-sabotage by egotistical young founders who think they know better than the experienced SEs they hired because famous-VC gave them an A round, validating their genius.

                                                        1. 1

                                                          I’ve decided the reason I’ve never mastered rebase is because working with small reams on production and OSS projects there is little value in tidy history. For projects involving really large teams this is completely different.

                                                          1. 2

                                                            I disagree.

                                                            Even if there are only 2-3 developers, being able to see the flow of changes going into mainline as discrete feature oriented chunks is immensely helpful when you’re going back through history trying to figure out exactly where something went wrong.

                                                            1. 2

                                                              Honestly, I find a lot of use in a tidy history in all projects. Any time that I need to use git log -S, git bisect, git revert, it makes it way easier if the history is tidier. I do use these tools in my personal projects, because they’re v powerful for finding bugs.

                                                            1. 2

                                                              Unix ignoramus here, but functional programming enthusiast. I was made aware of NixOS a few months ago and really liked the idea of it. If I ever get around to firing up a *nix computer, I think I would like to try this. Has anyone ever installed on a Raspberry Pi 4?

                                                              1. 4

                                                                I seem to have something about NixOS on RPi4 in my bookmarks: https://lobste.rs/s/pdkwcq/nixos_on_raspberry_pi_creating_custom_sd - though I haven’t tried that myself.

                                                                Personally, I only installed Nix on my RPi4 with Raspbian. One thing I had to do to make it work was to switch Raspbian to a 64-bit kernel image. There’s some (theoretically experimental, yet it worked flawlessly for me) flag for this; if I found the right one, I believe you need to put arm_64bit=1 in the RPi4’s /boot/config.txt, then reboot.

                                                                Please note, that if you’ve never used Unix/Linux at all before, starting from NixOS might be a rather deep dive. Say, akin to learning car driving by buying a battered used 4x4 and having it delivered into your backyard. It’s definitely doable, and if you like experimenting you’ll definitely have tons of fun and learn a lot, though don’t be surprised if many people might say it’s not the easiest nor most typical way to do that. Depending on what is your vision of fun, you might want to consider going with Ubuntu/Raspbian first, if you prefer smaller and safer steps (i.e. learning in a Chevvy at a driving school) - or, it might be exactly the path to pick if you do like crazy hacker adventure :D (Personally, somewhat recently I did a for-fun project of assembling Android .apk files by hand from scratch, byte by byte, so I can totally relate if you’d like to choose the crazy way ;P)

                                                                1. 2

                                                                  I build SSH-enabled SD images for screen/keyboard-less installation via: https://github.com/Robertof/nixos-docker-sd-image-builder

                                                                  Someone helpfully provided step-by-step instructions for the builder here: https://gist.github.com/chrisanthropic/2e6d3645f20da8fd4c1f122113f89c06

                                                                  Things I tripped over initially:

                                                                  • Increase sdImage.firmwareSize from 128 to something like 1024 if your SD card has the space. If you don’t know what you’re doing you’ll probably want to nixos-rebuild switch a few times which can consume more than the default.
                                                                  • Prefer to use the AWS ARM instance support via packer if possible - it’s a lot faster than using QEMU. My (very rough) cost estimate is somewhere between 20-40 cents (Euro).
                                                                  • if you’re using a Pi 4 then make sure you read the instructions thoroughly for Pi 4 specifics. Mainly setting DISABLE_ZFS_IN_INSTALLER=y for build speed and NIXPKGS_BRANCH=master so it works and you don’t just get a very smol Christmas tree with blinking lights.
                                                                  • If you’re using packer you can directly add access_key and secret_key to the amazon-ebs source, like so:
                                                                  source "amazon-ebs" "nixos_sd_image_builder" {
                                                                    access_key = "<...>"
                                                                    secret_key = "<...>"
                                                                    ..
                                                                  }
                                                                  
                                                                  1. 2

                                                                    A word of warning on the new 4b with https://github.com/Robertof/nixos-docker-sd-image-builder

                                                                    I bought the 8gig model in september, it wouldn’t boot at all. Bought a 4gig model, booted same sd card I created and it worked fine, popped carg back in the 8 and then that booted. You should be ok now as the firmware is more up to date and you can always install a newer firmware but the 8g pi 4 is a bit weird. And not just with nixos i’ve seen lots of reports of similar from other people on the pi forums.

                                                                    Other than that caveat it works fine, one thing i have to try out is the usb boot from the latest firmware and ditch sd cards entirely for these little pi’s.

                                                                    1. 1

                                                                      I’ve used it for two different 8GB Pi 4s in the past month - apart from forgetting to set NIXPKGS_BRANCH=master I’ve had no other problems.

                                                                  1. 3

                                                                    I stuck with Amiga from 1986/7 until Windows 95, and the 2 skills I should have picked up I did not. Instead of paying $500 at the time for a proper C compiler I spent it on an Epson 8-pin dot matrix printer. The ARexx language fulfilled all my hobby programming needs. For an editor I latched on early to UEdit, which was ahead of it’s time as a programmable editor. Unfortunately the author passed away too soon, before anyone really caught on to OSS (and before HTTP and the internet revolution), so when VIM was released on a Fred Fish disk it was just more noise to me.

                                                                    1. 3

                                                                      proper C compiler

                                                                      Meant DiceC, back then. The author is Matthew Dillon, which later became Freebsd project lead, then forked it into Dragonfly as random committers insisted in moving forward the wrong way (copying Linux) regarding SMP, and he was ousted from the project for trying to hold that back and design SMP approach properly instead.

                                                                      1. 1

                                                                        Was Dice $500 at the time?

                                                                        1. 2

                                                                          IIRC, something like that

                                                                          1. 1

                                                                            I don’t know, but it was supposedly a cheap (relatively) C compiler. Matt was apparently in high school at the time. Quite enterprising.

                                                                        2. 2

                                                                          I’m already forgetting more than just the details from those days, but have a notion that I shared my happiness, anger and hearthache on BBSes using CygnusEd with Thor. Don’t know exactly when I met CygnusEd, nor Arexx or Thor for that matter, but they were all love at first sight. It lasted until summer ’98, when I my studies finished, and my free time vanished almost over night. Powered it on now and again after that, but in 2006 my 1084S monitor finally died, and that was it.

                                                                          1. 4

                                                                            ARexx was just the cat’s meow for me at the time. I think in some ways it was a proto-functional language. My Amiga bbs hangout was FAUG, first amiga user’s group I think very early on (like 1987) Donald Knuth popped in on occasion, but I could be wrong. I didn’t know who he was at the time.

                                                                            1. 2

                                                                              Modern screens work well with the Amiga, with an OSSC in-between.

                                                                              1. 2

                                                                                Thanks, I suspected as much, but never really checked. Haven’t had time, money or room to do anything with my old A500 or A4000, only cleaned the motherboard of the latter after the battery had leaked out, have to check for damages.

                                                                          1. 5

                                                                            Mostly agree, but not assertive enough.

                                                                            I recommend writing out the full agenda

                                                                            Published agenda before the meeting (preferably attached to the invites) is a requirement,.

                                                                            I like the shared notes document. Nice touch for remote meetings, and even in person meetings.

                                                                            Every meeting should must result in published action item, with assignments.

                                                                            1. 1

                                                                              Features that may still make it to F# 5, but the team has not committed to shipping https://github.com/dotnet/fsharp/pulls?q=is%3Aopen+is%3Apr+label%3A%22Candidate+for+F%23+vNext%22

                                                                              1. 1

                                                                                I’m especially looking forward to the Applicative computation expressions. I never caught on to defining operator symbols and coding applicatives that way. I do use a custom computation expression when I need it. A standard computation expression in the language will be nicer to have.

                                                                                I know the Microsoft F# team is working hard to get this Extension members visible to trait constraints fix into the release as well. It apparently is not easy. https://github.com/dotnet/fsharp/pull/6805