bme's recent activity

  1. Comment on Distrohoppers, what's your flavor this week? in ~comp

    bme
    Link Parent
    The best way to get to the inner workings of nixos I think depends on what type of person you are. If you are a programmer type, I really recommend doing something like installing nix on whatever...

    NixOS

    The best way to get to the inner workings of nixos I think depends on what type of person you are. If you are a programmer type, I really recommend doing something like installing nix on whatever distro you currently have and messing about with the repl. Before going any further, I want to say that I deliberately ran all of these examples on a box running arch linux + nix. You can just dip your toes in! Let me show off something dumb: I want to package a shell script, but not only that, I want a function that given someone's name produces a package that installs a shell script that greets them, and I want to figure this out on the fly

    ~ ben@lamorna
    ❯ nix repl
    Welcome to Nix 2.15.0. Type :? for help.
    
    nix-repl> :l <nixpkgs> # load up nixpkg repository (bringing `pkgs` into scope)                           
    Added 17839 variables.
    
    nix-repl> hai = name: pkgs.writeShellScript "hello tildes" ''
              echo Hai ${name}
              ''
    
    nix-repl> haipkg = hai "geniusraunchyassman" # apply function to yield a package
    
    nix-repl> :b haipkg # build my package
    
    This derivation produced the following outputs:
      out -> /nix/store/9r73ihnlybzxbnyaiy6ij4sxxnk352xz-hello-tildes
    
    nix-repl> 
    
    ~ ben@lamorna
    ❯ /nix/store/9r73ihnlybzxbnyaiy6ij4sxxnk352xz-hello-tildes
    Hai geniusraunchyassman
    

    Maybe that isn't compelling. Maybe you like experimenting with different versions of a package that doesn't match what is on the system, but you'd like the install to be native and not conflict with what the system is providing. Ok, here is me wanting to get a version of fish that doesn't match the version in nixpkgs:

    ~ ben@lamorna
    ❯ nix-prefetch-url --type sha256 https://github.com/fish-shell/fish-shell/releases/download/3.5.1/fish-3.5
    .1.tar.xz
    path is '/nix/store/6zisgncm6j3m4cnjnjck4i84mcc57qpy-fish-3.5.1.tar.xz'
    0a39vf0wqq6asw5xcrwgdsc67h5bxkgxzy77f8bx6pd4qlympm56
    
    ~ ben@lamorna
    ❯ nix repl
    Welcome to Nix 2.15.0. Type :? for help.
    
    nix-repl> :l <nixpkgs>
    Added 17839 variables.
    
    nix-repl> fishy = pkgs.fish.overrideAttrs (old: rec {                                                     
                version = "3.5.1";                                                                            
                src = pkgs.fetchurl {                                                                         
                  url = "https://github.com/fish-shell/fish-shell/releases/download/${version}/${old.pname}-${version}.tar.xz";
                  sha256 = "0a39vf0wqq6asw5xcrwgdsc67h5bxkgxzy77f8bx6pd4qlympm56";                            
                };    
              })
    
    nix-repl> :b fishy
    
    This derivation produced the following outputs:
      doc -> /nix/store/3skdvch8sk970d0l6lr9dn9gjpfnafmy-fish-3.5.1-doc
      out -> /nix/store/qnn7gp4q6la4ikgi3bw9g59ix10va7xp-fish-3.5.1
    
    nix-repl> 
    
    ~ ben@lamorna
    ❯ ls /nix/store/qnn7gp4q6la4ikgi3bw9g59ix10va7xp-fish-3.5.1
    bin/  etc/  nix-support/  share/
    

    Now in both of the above cases, I'm just building stuff in the store, which to be usable just gets symlinked to discoverable places by slightly higher level tools. There are many linux distributions, there are even multiple distributions that give you atomic roll forwards and backwards package sets, but nixos and guix stand alone as being supremely hackable by dint of creating a composable package abstraction which

    1. Makes it nearly impossible to miss a dependency (complete)
    2. Makes it nearly impossible for packages to clash (isolation)
    3. Exposes existing packages in a way that makes them open to extension either by composing them or by overriding parts of them in a principled way

    Nix / NixOS is not without its downsides, but everything else seems basically crippled in comparison once you climb up the cliff into productivity.

    2 votes
  2. Comment on How IoT betrays us: Today, Sonos speakers. Tomorrow, Alexa and electric cars? in ~tech

    bme
    Link Parent
    I think something that has ruined a lot of things that used to "last" is the insertion of software everywhere. Remember when cars mostly had compatible slots for aftermarket radios? Then we had...

    I think something that has ruined a lot of things that used to "last" is the insertion of software everywhere. Remember when cars mostly had compatible slots for aftermarket radios? Then we had external GPS navigation, then it started to be integrated. No more swapping out the tech in the centre console. Now you need a new car if you want an upgrade, and now many fancy new things have arrived which were never available externally (adaptive cruise control etc). Driving a car even a few years old now means substantial features are missing and can't be acquired after the fact.

    8 votes
  3. Comment on How IoT betrays us: Today, Sonos speakers. Tomorrow, Alexa and electric cars? in ~tech

    bme
    Link
    Specifically on the Sonos front I am never buying another product of theirs again, and in general I have stopped buying anything that needs an internet connection to a component that I can't host....

    Specifically on the Sonos front I am never buying another product of theirs again, and in general I have stopped buying anything that needs an internet connection to a component that I can't host. I haven't got an answer for everything yet, and on the multiroom audio front it's disappointing to see traditional speaker companies follow Sonos' lead with closed ecosystems. There is no multiroom equivalent of line-in or toslink. There is playfi but it's basically dead as far as I can see.

    My next startup after current obligations expire is going to be pluggable multiroom sound and video on published standards. It's not a hard problem. There are multiple DIY solutions already, i.e. SnapCast, it just needs someone to invest in a business around it with some pucks a la chromecast audio (discontinued). Shift the brains onto a server which you could sell too and the pucks at least would be good for the life of the silicon (presumably a DAC + microcontroller + wifi reciever). Publish the protocols and hopefully grow a decently compatible ecosystem.

    7 votes
  4. Comment on <deleted topic> in ~tech

    bme
    Link
    I think this is probably a metaphor for how almost all software is trending: towards a lowest common denominator, most useful for most people. For those hold-outs that that can do more with tools...

    I think this is probably a metaphor for how almost all software is trending: towards a lowest common denominator, most useful for most people. For those hold-outs that that can do more with tools that require investment there will always be options and alternatives. I run plex and keep all my media locally and with an offsite backup. Do I think this is best for most people? Nope. I do it because I like dicking around with computers. For people that want files, there will always be NAS systems and that jazz.

    This isn't even unique to software, I bet every activity under the sun has a control / convenience trade-off.

    17 votes
  5. Comment on Please tell me what you think about this idea for a text editor/Linux Distribution combo in ~comp

    bme
    Link Parent
    Completely agree with void / alpine recommendations. I haven't run alpine but void basically leaves you with nothing, it's trivial to manage the ttys.

    Completely agree with void / alpine recommendations. I haven't run alpine but void basically leaves you with nothing, it's trivial to manage the ttys.

    2 votes
  6. Comment on Please tell me what you think about this idea for a text editor/Linux Distribution combo in ~comp

    bme
    (edited )
    Link Parent
    Eh, I dig what this guy is trying to do. Often a barrier is enough. Do you still lock your door? You can make it pretty annoying to escape the jail if you fancy it: Install the stuff, get the...

    Eh, I dig what this guy is trying to do. Often a barrier is enough. Do you still lock your door? You can make it pretty annoying to escape the jail if you fancy it: Install the stuff, get the chain all working for some locked down user then run a shell that changes the root password to some unknown random 20 char string and reboots the computer. Congrats, you've made it reasonably challenging for yourself, which is often enough to get yourself into the flow of things.

    @mrbig: If I were you i'd look at customizing something like bspwm to basically launch the editor of your choice and simply don't launch anything else, have root own the config and make it read only. change the login shell to something suitable neutered. I guess you'd also need to kill all the ttys. Change root password to something else and that's a low-effort lock down that should be good enough for what you are trying to do. For extra fun: consider pairing a rock64 or pi with waveshare epaper display or something like that.

    5 votes
  7. Comment on What are some startup scripts you have on your daily driver? in ~comp

    bme
    (edited )
    Link
    I don't think most peoples innovations are driven by imagination, they are driven problems that they look to solve. What currently bugs you about your workflow? Is there a collection of windowing...

    I don't think most peoples innovations are driven by imagination, they are driven problems that they look to solve. What currently bugs you about your workflow? Is there a collection of windowing tasks that you regularly perform? Would it make sense to automate them? Do you manually place your applications into windows / workspaces on startup?

    I'll give you one example of a typical problem:
    You have some environment variables relevant to a given project, which only need to exist within the project folder. This is easily solved with direnv. Ok fine. What if you want those values to encrypted because they are secrets and only decrypted on demand? I use pass so naturally I came up with the following: I will encode collections of env vars into yaml files that I will keep in my pass directory. I'll write a script to decode them and stick it in my ~/.direnvrc. So in my ~/.direnvrc I have the following function:

    pass-export() {
    
      [[ -n "$1" ]] || { >&2 echo "Must pass pass arg"; return 63; }
      
      while read -r key; do
        key=${key#'"'}
        key=${key%'"'}
    
        read -r value
        value=${value#'"'}
        value=${value%'"'}
    
        export $key="$value"
      done < <(pass "$1" | yq 'to_entries | .[] | .key, .value')
    
    }
    

    and in a .envrc file I might have

    #!/bin/bash
    
    export AWS_DEFAULT_REGION=eu-west-1
    pass-export work/outw/web/aws-keys
    

    which exports my secret keys for a given aws project so they can be used with terraform or aws cli or whatever. This is typical of my collection of random bits and bobs. Search is another regular problem. Learn how to wield things like fzf well and you'll get around your computer with ease, but it can be inserted in all kinds of places. For instance if I have more than one git remote I want to be prompted to pick where to push an upstream branch for the first time otherwise just send it! For this I use a little git alias:

    [alias]
    	p  = !just-push-it
    

    and a dumb script:

    #!/bin/bash
    
    if [[ -n "$(git for-each-ref --format '%(upstream:short)' $(git symbolic-ref -q HEAD))" ]]; then
       exec git push 
    else
       exec git push -u "$(git remote | fzf -1)" HEAD 
    fi
    

    The script basically does the right thing if there is just one option and if there are multiple it gives me the choices piped into a fuzzy finder and then does the right thing once the choice is made. This pattern can be repeated all over the place. The fzf wiki is full of them.

    The point of all this is that efficiency doesn't require imagination, it only requires the will to be lazy enough to learn how to not do things. I don't have time to not be intentionally improving my workflow. I doubt many people do, and yet somehow they make time for it by refusing to learn the skills they need to stop wasting time.

    4 votes
  8. Comment on Plain Text Accounting | Double-Entry Accounting with Plain Text Files in the Command Line in ~comp

    bme
    Link Parent
    I used to use it a bunch, but while I didn't mind much of the classification work, the thing that I really needed to do any couldn't find the time for was automating the feed from my bank and...

    I used to use it a bunch, but while I didn't mind much of the classification work, the thing that I really needed to do any couldn't find the time for was automating the feed from my bank and implementing some simple statistical learning for matching up recurring payments.

  9. Comment on <deleted topic> in ~comp

    bme
    Link
    I think this is an interesting one. I think one of the most obvious self serving shifts on the web came from Google. When it lacked the ability to meaningfully parse out natural language to feed...

    I think this is an interesting one. I think one of the most obvious self serving shifts on the web came from Google. When it lacked the ability to meaningfully parse out natural language to feed it's knowledge graph there was a big push to get everyone onto microformats. Now that it has the tech to skip that the push is gone, leaving anyone else without that muscle out in the cold. Just one more aspect of the web being weaponized for material gain I guess, and a relatively small transgression in the larger scheme of things.

    5 votes
  10. Comment on Reinventing Home Directories in ~tech

    bme
    (edited )
    Link Parent
    That's super cool of you, but I'll pass. I intend to "retire" early by paying off my house in the next couple of years through a mix of contracting gigs and investments, and then go full time OSS....

    If you're serious about this, I'm happy to try to help guide you through finding a job in the linux desktop space. Red Hat is the obvious one but working at KDE is also a very good bet if you want to work to improve these things. Canonical often has open jobs as well and they do some good work. There's many ways to be paid to contribute.

    That's super cool of you, but I'll pass. I intend to "retire" early by paying off my house in the next couple of years through a mix of contracting gigs and investments, and then go full time OSS. I don't yet know which projects I'd like to contribute to.

    I can't help with your systemd issues…

    That's the thing, I'm not asking for help. I solve my own problems. Eventually I solved them completely by ditching systemd entirely where possible, and limiting usage of it's features where I can't (I run a lot of rhel / centos boxes).

    The feature would work as intended, what you put into it doesn't.

    This is I guess where I completely disagree with the kinds of UX choices systemd makes. Lets be concrete: this particular issue was a fun confluence of things: I had a working socket activated user service of gnupg. Arch at some point decided they would also provide that service. Conflict! Fine. Whatever. What I take issue with is how this manifested: I'd login, then 30 seconds later I'd get logged out. What. The. Fuck. After scrabbling around for 10 minutes I put on my thinking cap, logged in via a tty, worked my way through journalctl and figured it out. What would have been much easier is if systemd had just let the service fail and left me to notice my gnupg setup was broken when I went to use it, and I'd have had the luxury of my whole DE to investigate it. This and other papercuts too mundane to remember eventually got me off arch on my personal boxes.

    I know you can't randomly know the skills and abilities of random people on the internet but I've written hundreds of systemd unit files and know many of the man pages off heart. Systemd has weird failure modes and fails in more cryptic ways than just about any other supervision suite. I will freely admit I push more edges many people would (I am a distributed systems engineer with a strong SRE / ops bent). I'd take runit or s6 any day of the week.

    3 votes
  11. Comment on Reinventing Home Directories in ~tech

    bme
    (edited )
    Link Parent
    The big problem that I have with many of Poettering's projects is that he is able to do what he does because the people that came before him made simple text / file based tooling. Some of it not...

    I wish the Linux community would shut the fuck up about this guy because this approach is the only one that has even a hope of continuing to compete with modern operating systems.

    The big problem that I have with many of Poettering's projects is that he is able to do what he does because the people that came before him made simple text / file based tooling. Some of it not great, but in any case, it is easy to extend most of linux because it's often just a few files and maybe some shell scripts or whatever. His projects on the other hand basically pull up the ladder behind them by creating sprawling interfaces that stick their fingers in everywhere. I have a problem with this because it will make it very hard for us to ever escape this local minima if something better rolls along. His works complete disdain for modularity is maddening.

    One of the things I find massively frustrating is that my time and talents are wrapped up solving other problems. I'm super jealous of his 40 hours a week that he gets to spend creating software that I often have to actively avoid. I shit you not, I am actively trying to achieve financial independence s.t. I throw my hat in the ring on this stuff because I have completely lost faith in the Poettering-led vision for the end state of linux userspace.

    I guess I should also add that I don't care much for

    compet[ing] with modern operating systems

    whatever that is supposed to mean. I want to be able to enjoy my computer without it puking all over me. I lost many hours to systemd (oh your user service failed to start in 30 seconds, I guess I'll log you out of your session, and other such nonsense). And it's not the man, it's the code. PulseAudio has definitively made things better. Systemd is a mess. If he can find someway to design something s.t. that any other project has a cat in hells chance of using it without dragging in the entire jungle I'll be pleased to see it, but I won't hold my breath.

    Lastly:

    Or join one of the couple that are led by similarly-cranky people.

    It's a real dick move to suggest that everyone that is dissatisfied with systemd is a crank. There are plenty of reasons to not want to use it, and you undermine everything else you say by mixing in such commentary.

    14 votes
  12. Comment on <deleted topic> in ~games

    bme
    Link Parent
    I'm pretty annoyed. I'm not installing EGS though.

    I'm pretty annoyed. I'm not installing EGS though.

  13. Comment on How reliable is IP ownership information? in ~comp

    bme
    Link Parent
    An invitation to consider what threat one is hoping to mitigate with a given action is almost never wasted. If the firewall is already nice enough to be flagging which processes are using the...

    An invitation to consider what threat one is hoping to mitigate with a given action is almost never wasted. If the firewall is already nice enough to be flagging which processes are using the network then you have no more work to do other than investigate either the traffic or the software, but networks these days are far to dynamic to be whitelisting addresses by hand.

  14. Comment on Advice for first home server? in ~tech

    bme
    Link Parent
    It forwards mail destined for the internet via a VPS. It's convenient to have an smtp relay server on the home network to buffer messages and manage cron mail for local domains (I deliver mail...

    It forwards mail destined for the internet via a VPS. It's convenient to have an smtp relay server on the home network to buffer messages and manage cron mail for local domains (I deliver mail direct to my workstation for anything that goes wrong in the house).

    2 votes
  15. Comment on Advice for first home server? in ~tech

    bme
    Link Parent
    I'd say for many things this makes sense, but media services, you can't beat the experience of running stuff at home. ISP outage? who cares. Stream 4k all day long, who cares. Disk problems are...

    I'd say for many things this makes sense, but media services, you can't beat the experience of running stuff at home. ISP outage? who cares. Stream 4k all day long, who cares. Disk problems are basically solved. Compute redundancy is kind of pointless but I can next day a board in whenever one fails and they tend to run for 4-5 years so meh.

    It's obvious that the economies of scale make cloud providers better for most stuff. I have a local mail relay in my house, I rent a £3 per month vm from ovh for the web presence. For everything else I run it locally. ipv6 makes addressing a snap.

    2 votes
  16. Comment on Advice for first home server? in ~tech

    bme
    Link Parent
    if it's local it isn't a backup. I guess it depends on how much you care about the data, but unless you are putting that stuff somehow in a separate failure domain (fire / flood / lightning...

    if it's local it isn't a backup. I guess it depends on how much you care about the data, but unless you are putting that stuff somehow in a separate failure domain (fire / flood / lightning strike) then you aren't doing much more than protecting against hardware failure which you can cover off with zfs + snapshots. I mean it's better, but it's not that much better. If you really care about it it needs to be at least one other site.

    2 votes
  17. Comment on What is your least favourite window manager or desktop environment and why? in ~comp

    bme
    Link Parent
    I've followed most of this comment chain, and I can't believe you are seriously pushing the idea that a turing complete, badly designed scripting language is easier to manage that i3wms config...

    I've followed most of this comment chain, and I can't believe you are seriously pushing the idea that a turing complete, badly designed scripting language is easier to manage that i3wms config syntax. You've clearly forgotten what it was to sit on the outside. CSS is not simple. I say this as someone whose favourite programming languages are rust / haskell and who currently works as distributed systems engineer. I'm not a stranger to any of this. CSS is only easy if you already know it and is significantly more complicated than many other layout and styling languages and has simply won by being on the web and having the largest audience willing to put up with it. It isn't good tech, it isn't beginner friendly and it's really only in the past few years with flexbox and grid that it's even become remotely palatable for people used to working with better toolkits.

    3 votes
  18. Comment on We fired our top talent. Best decision we ever made. in ~comp

    bme
    (edited )
    Link Parent
    By the time we get to the meeting with the outburst, this guy had apparently had the weight of the whole project pulled onto him years. Of course he pulled it onto himself, but no functioning...

    By the time we get to the meeting with the outburst, this guy had apparently had the weight of the whole project pulled onto him years. Of course he pulled it onto himself, but no functioning company should ever allow that to happen. At the end of it having let the guy work himself into extreme burnout (people not crushed by pressure rarely have outbursts like that, even if their inner monologue might go that way) they toss him aside. Granted he obviously had his problems, but as the article mentions, all the management directly responsible also got fired, whose failures should have been 90% of the article, instead of some weird piece about firing "top talent".

    4 votes
  19. Comment on We fired our top talent. Best decision we ever made. in ~comp

    bme
    (edited )
    Link
    Just in case this hasn't been read, I think this is a nice perspective on what might have been going on. I was never a "Rick" (maybe other people would disagree?), but I was once tasked with...
    • Exemplary

    Just in case this hasn't been read, I think this is a nice perspective on what might have been going on. I was never a "Rick" (maybe other people would disagree?), but I was once tasked with saving a thing, that unfortunately was a genuinely hard task (soft real time summaries of trillions of data points for making fraud decisions for a large payments provider). I ended up having to take it away from the team (I was the lead) because they couldn't get it right even with supervision, locking myself away for three months, rewriting most of it and emerging with a working product, which had been worked on for a year with zero success (I was a relatively new hire). My reward: essentially the same thing. They said I was responsible for the delays, I had the cost the company so much money, and they were outsourcing the future maintenance and development of the product. They didn't fire me, because I quit the next week and rolled onto other work. Best decision I ever made. I bet the "Rick" of this story was done a huge favour as well.

    TL;DR:

    Instead of the article being a story about how they stopped this man’s descent into burnout via intervention, outstanding teamwork, and competent management, something that IT, Infosec, and Developers REALLY need to hear, they decided to focus on the toxic environment and problems in which seemed to stem from Rick. Instead of tackling the root cause of the issue (hey man, whats eating you?), they opted for the quick and easy fix (Hey Rick, GTFO!). Par for the course, as far as I can tell.

    7 votes
  20. Comment on Raspberry Pi 4 on sale now from $35 | USB3, Gigabit Ethernet, 1.5GHz Quad Core, Upto 4GB RAM in ~tech

    bme
    Link Parent
    Now that the 4 exists I fully intend to do what I have always wanted to do with the Pi and use it to build out a proper affordable redundant storage array with ceph with each pi running an OSD and...

    Now that the 4 exists I fully intend to do what I have always wanted to do with the Pi and use it to build out a proper affordable redundant storage array with ceph with each pi running an OSD and a disk. Now instead of needing to replace some server board I'll just grab a spare pi / disk depending and just slot it in. Bewm.

    1 vote