Just a geek, finding my way in the fediverse.

  • 99 Posts
  • 620 Comments
Joined 3 years ago
cake
Cake day: June 11th, 2023

help-circle
  • Like other posts - brother, laser.

    My ancient HP laserjet died a few months back so I picked up a brother. It amazed me that I just plugged it in (Linux) and it worked. No hplip, no cups config, just worked.

    Even more impressive, I tried the network/wifi print out of curiosity and it also just worked… Nothing special, Debian 13 auto discovered it on the network and added it to my printer list.

    I had the HP for over 15 years and it was always a bitch to get working with Linux. Hoping this brother lasts at least as long.





  • My company is pushing LLM code assistants REALLY hard (like, you WILL use it but we’re supposedly not flagging you for termination if you don’t… yet). My experience is the same as yours - unit tests are one of the places where it actually seems to do pretty good. It’s definitely not 100%, but in general it’s not bad and does seem to save some time in this particular area.

    That said, I did just remove a test that it created that verified that IMPORTED_CONSTANT is equal to localUnitTestConstantWithSameHardcodedValueAsImportedConstant. It passed ; )


  • Excellent write up!

    For reference, that’s the little green jobbie immediately to the left

    I also have that little Hazard Fraught belt sander. I picked it up when I was doing a lot (for a hobbyist) of blade grinding. I paid the extra $10 for the extended warranty and they replaced it twice … I think this is the only time I’ve ever bought the warranty on something but I knew what I was buying and I knew what hell I was going to put it through so, money well spent ; )



  • Funnily enough, I’m currently reading “Butcher’s Masquerade” on a Kobo Libra Colour.

    Only extra thing I’d mention is that its integration with your public library (at least in my location in the US) via Overdrive is… usually functional, but not great. I’m sure some of this is due to Overdrive being deprecated for Libby but that’s just a guess.

    One should note that if a person was to use Overdrive to checkout books from their library, and if said person is very polite and doesn’t want others to wait for them to finish the book, said person could hypothetically borrow via Overdrive, export+strip DRM with Calibre+Obok, “return” the ebook, then sideload the non-DRM version back to the device.

    I wouldn’t do that because I don’t know how that works legally but I read about it on the internet ¯\(ツ)








  • Out of curiosity, how do you have that setup (at a high level)?

    I’ve got a bluetti system for emergency power (12kWh, 6kW AC output) but I need to plug things directly into it. It’d be nice to feed it directly to my house wiring but … selectively. That is, I wouldn’t want to power the HVAC but it would be nice to not have to shuffle the fridge/freezer plugs from the wall to the inverter.

    Dedicated circuit(s) with a manual switch from mains to inverter, I’m guessing? But then we get into all the extras required to do that safely and avoid back feeding the grid.

    Granted, they have systems/setups specifically for whole house power but I don’t want to feed the whole house, just the important circuits/appliances.








  • I got the gl-mt6000/flint2 about 6 months ago. I’m definitely not a network expert but I unboxed it, powered it up, and immediately flashed OpenWRT. No problems.

    The only slightly technical things I’ve done with it are to install a router level ad/tracking blocker when my RPi2 pihole stopped being reliable and install the tailscale client on it with exit node enabled. Everything works fine.

    I use tailscale to get to my LAN (even though the desktop is also running tailscale) for many reasons (self hosting) but the main reason is my home server is disk level LUKS encrypted. The router restarts autonomously after a power outage so I use it to get to the server via tailscale+Dropbear to remote unlock the server disk after a power outage.

    I’ve had zero complaints and would recommend.


  • The two biggest things I use it for are programmatically generating “lists of lists” (lists of pages, more accurately) and as a semi-hacky way to get text colors. Semi-related, the “Treeview” plugin gives you a folder hierarchy panel off to the left (by default) which is really, really nice.

    I should probably clarify that I didn’t write these, I stole them from the Silverbullet community forums… also I should reiterate that I suck at Lua so take my explanations with a grain of “this person may not know what they’re talking about” ; )

    Lists of Lists : I have a bad memory so I create a LOT of lists. I even have a base page named “Lists” that I then nest different types of lists under (TODOs for home, for work, for school, for projects, for selfhosting, etc). Since the table is programmatically generated, it’s always up to date on each load. This first snippet relies on using frontmatter on the respective pages along with the tags property.

    ${query[[
    from index.tag "todolist"
    order by lastModified desc
    select {
      List="[[" .. _.name .. "]]",
      Modified=_.lastModified
      }
    ]]}
    

    This retrieves all pages from the space index with a tag of todolist (from the frontmatter), orders them by lastModified, descending, and renders a table that contains the name and lastModified date. This is excellent for providing a list of pages (based on tag, todolist in this case) related to a topic and ordering them by the last time they were changed. I use this in the base page for pretty much all of my “folders”. Screenshot :

    Text Color Hack : Since the Silverbullet markdown interpreter doesn’t (currently) support plain HTML, and the way we usually color specific areas of text within Markdown is <span style="color: #fff">white text</span>, they had to get inventive. Somebody came up with a way to provide Lua functions that will accept text as a parameter and then render it with the specified HTML color/style.

    In my CONFIG page (that is applied to the entire space) I included a space-lua code block like :

    function Red(text)
      return widget.html(dom.span {
        style="color:#e60000; font-weight: bold;",
        text
      })
    end
    // Also about 5 more for different colors I use, snipped for simplicity.
    

    Then, anywhere in my Silverbullet space I can use a Lua code snippet like The following word is ${Red("red")} and it will invoke the space-lua function named Red() on the text red, apply the styling, and render it with CSS color #e60000. Hacky? Yeah… but it works for now. Screenshot :

    … I’ve been meaning to build a generic Colorize(text, hexColor) function (which would likely take all of 30 seconds : ) but haven’t yet. Maybe tonight.

    EDIT: That did, in fact, take 30 seconds. Function :

    // This assumes "color" parameter is a valid/properly formatted CSS color, meaning a known word ("red"), hex ("#ff0000"), or presumably RGB/etc but so far I've only tested color names and hex (I typically use hex)
    function Colorize(text, color)
    return widget.html(dom.span {
        style=string.format("color:%s; font-weight: bold;", color),
        text
      })
    end
    

    Usage : ${Colorize("any text", "#00ff00")}