• 2 Posts
  • 137 Comments
Joined 3 years ago
cake
Cake day: August 4th, 2023

help-circle



  • Ok, hold on. How to “back up an organization’s source control?” Are you saying the organization in question has a source control hosting solution of some sort and needs to implement a backup strategy for the contents of said source control solution?

    Or are you saying the organization doesn’t have a source control solution and they need a source control solution.

    The former question is an entirely reasonable sort of question to ask. (Not one I have much expertise on, but still a legitimate question.) If your question is the latter, let me say: source control is not a backup solution and conflating the two is a mistake.

    I once talked to the guy in charge of another team at a company where I was working. We’ll call him Nick (because that was his name). I found out that Nick had instituted a policy wherein each developer on the team under him had their own dedicated branch in Git to which they were required to commit/push at the end of every day no matter what state their code was in. main was to be merged into these developer branches regularly (the only sane part of the whole scheme) and the developer branches would be merged into main with PRs which had to be reviewed personally by him. Then, if something went wrong and they lost work, they couldn’t lose more than a day’s worth of work (because at the end of the day yesterday, they’d pushed their code) – or so the “logic” went. Nick was a terrible person. Don’t be like Nick. (His whole mindset was “we have to protect the codebase from these ‘junior devs’ so they don’t ruin it! And we have to protect them from their own incompetence as well!” Weird guy. Definitely had a power-trip sort of complex.)

    Commits are not a box you unceremoniously dump your code in so you can ship it off to put it in cold storage on the central Git repo backup server. They’re something to be curated. Push only atomic commits. (That is, don’t put multiple unrelated changes in a single commit. Also make sure that your commit covers the whole of a single, deliverable change.) Never knowingly push commits which put the code in a broken state or commits with half-completed changes. Strive for an ideal world in which any single commit in the central repo can be safely reverted without breaking other commits. When something is broken, your organization will thank you for not leaving a mess of interrelated and interdependent commits. And when one thing needs undone, they’ll thank you for making sure that reverting a single commit will accomplish it. The structure and content of your Git history is an important part of the product just like comments and documentation. (And that segues nicely in to another point: Write good commit messages while you’re at it.) There’s nothing more satisfying than a clean commit graph with good commit messages.

    (One qualifier here. What you do on your own dev machine is your own business. Make sure that what you push is well formed. How you get there, who cares. If your coding style involves “oh, while I’m here, I’ll fix this unrelated thing”, that’s perfectly fine so long as when you push the unrelated things are in separate commit. Get familiar with git add -i and/or git add -p. And of course your team likely has requirements about things being committed under the correct topic branch and stuff. Those are good rules to follow as well.)

    Hopefully you’re getting what I mean by “source control is not a backup solution” at this point. Source control is for collaboration.

    Personally, if I’m working on code that nobody but me is expected to touch anytime soon, I don’t put it in Git. The source control I use is called “a directory”. If I need to keep previous versions of the codebase, I copy the whole codebase into another directory. To protect against hard drive failure, I back it up to off-site storage.

    I put it in Git when I publish it. Whether that be publishing to the world under a FOSS license or publishing it to my dev team at work in the central Git hosting solution we have where I work.



  • The Java logging library “SLF4J” works basically this way. It’s a “broker” sort of library. You use the SLF4J API to log and there are different backend implementations that can tie your logging statements to an actual logging backend. So you can do things like switching backends without changing code or using one backend (say, to STDOUT) in local and a different one (Syslog, maybe) in prod.





  • Yeah, I’m also planning to switch to PostmarketOS. I was running Ubuntu Touch when my carrier changed things to where my phone didn’t work as a phone without VoLTE. Ubuntu Touch doesn’t support VoLTE on my Pixel 3a so I reluctantly switched to stock.

    It wasn’t until after I switched to stock firmware that I found out that PostmarketOS has experimental support for VoLTE on my device. I’m hoping “experimental” is good enough for my purposes, but we’ll see when I get around to doing it.


  • Took me a while to even figure out vaguely what you were talking about here. I use DuckDuckGo exclusively for search. (And I use DuckDuckGo for search mostly because they let me turn off LLM BS.) I wasn’t aware they offered a browser. (I assume what you’re talking about is the DuckDuckGo browser/app, right? Not, say, search or LLM services or whatever.)

    When you say “browsing and tracking through my apps”, what do you mean exactly? Did you have the impression that having the DuckDuckGo browser installed on your phone will prevent other apps from tracking you somehow? Or are you saying that by using the webapp of whatever particular service through the DuckDuckGo browser rather than an official app, you avoid tracking built into the app? (If that’s what you’re saying it at least sounds plausible. But if you’re thinking having DuckDuckGo on your phone will prevent, say, Google Play from tracking you (assuming Google Play is installed on your phone), I can’t see how that could be the case. But I also wouldn’t think DuckDuckGo would make the claim that it would. Unless you and DuckDuckGo know something I don’t.) Or when you say “browsing and tracking through my apps” do you really mean web trackers? (Or maybe apps can interact with web stuff through the browser in ways that I’m not thinking of.)

    I guess what I’m asking is what specifically is the privacy claim related to DuckDuckGo that you’re asking the veracity of?

    Whatever the case, it’s entirely possible that the particular claim you’re asking about isn’t true, but that it’s also not a claim that DuckDuckGo makes nor that they’d expect people to think about their products and so isn’t any particular reason for your coworker to dunk on DuckDuckGo.



  • My experience is that the performance of videos depends a lot on how much of the screen the video takes up. More so than on the quality setting (480p, 720p, 1080p). Usually when I want to watch a video, I limit it to about 1/4 of the area of my 1920x1080 screen. But YouTube is pretty watchable. I don’t think even when you select something like 720p@60fps or whatever that it ever actually gets up to 60fps, and sometimes the parts that don’t compress as well drop a few frames (strobing in particular does that), but it’s really not bad if you’re ok with not doing full-screen.

    Also, it depends where the video is hosted. If the JS is really light on the page, it’s way more performant. If the JS is really heavy, I sometimes have to wait tens of seconds for it to render the first frame.

    But also, this Raspberry Pi is mostly my Lemmy box. Not my main box.






  • It’s like a koan. I keep expecting “and then he was enlightened” at the end.

    You’ve figured it out. Take as much advantage of your employer as you can. Try not to make life harder on your coworkers. People matter. Heartless corporations don’t. Eek out as much fulfillment as you can within that context. There’s nothing better. At least not within capitalism.



  • So, I’m not a manager, but I am in a leadership position. (I’m a “tech lead” on my team of developers, and I hold more “leadership”-ness than tech leads do on some teams.) And my experience comes more from software engineering than anywhere else.

    The first rule is that to be a good leader, you have to be a good person. Don’t “switch teams” if/when you become a manager. Your job is to advocate for your team. To cover and take blame for your team. To give them space to work. To give them the autonomy they need to improve their processes. To make sure they know they have the autonomy they need to improve their processes. To be vocal to your team in calling bullshit on upper management and agree with your team when your higher-ups do bullshit. To absorb bullshit from above as best you to prevent it from impacting the team any more than absolutely necessary. To talk your team up. To make sure their work is as “meaningful” as possible. To bolster their egos by trying to get them a bigger slice of the “jurisdictional pie”. To ease up when they’re struggling. To learn from them and along with them. To ensure to the extent you can that they get insight into what’s going on at higher levels of management (the high-level company goals and how what your team does fits into that as well as how decisions that might affect your team are made high up). To support your team’s basic needs (sleep can be a big one when overnight on-call is involved, do everything in your power and everything not in your power make damned sure your team never has to do overtime, and of course money is tied to basic needs). To make sure the biggest personalities on your team don’t silence or drown out others. To eschew needless busywork and take care of the necessary tedious bookwork behind the scenes so your team doesn’t have to. To make time for your team, both on an individual basis and on a whole-team basis. To be a source of comfort. To foster relationships between your team and those outside their team that they need to work closely with to succeed as a team. To let them self organize. And to be honest, humble, and apologetic when you have made mistakes, and also open about the fact that you’re learning how to be the best you you can be.

    DO NOT UNDER ANY CIRCUMSTANCES fall into the trap of thinking you’re “in charge”. There are very few circumstances in which you should tell people what to do or assign things to people. (Help them to learn how to pull assignments rather than pushing assignments onto team members.) Also, don’t try to “leave your mark” or push your agenda on the team. (No “I’m going to improve things”. More “I’m going to help my team improve their own processes.”) Push the team’s agenda to those above you.

    A few resources you need to read/watch/consume/whatever, whether you’re in IT or not: