• 0 Posts
  • 94 Comments
Joined 3 years ago
cake
Cake day: June 20th, 2023

help-circle

  • Ideally you’d use the docker executor with a dind service instead of docker commands in the shell. You’ll have better isolation (e.g. no conflicts from open port forwards) and better forward-compatibility (the pipeline won’t break every time a major upgrade is applied to the runner because the docker - especially compose - CLI is unstable).


  • For gitlab this is only correct with a shell executor which is to be avoided in the general case in favor of a docker or k8s executor for isolation&repeatability.

    Those you can actually run locally with gitlab-runner, but then you won’t have all your gitlab instance’s CI variables so it’s a PITA if you need a CI token which you probably do if you actually make decent use of gitlab’s features.

    In most cases I just end up committing my changes to avoid the headache. :!git commit --amend --no-edit && git push -f goes pretty dang fast and 60 % of the time third time’s the charm.



  • I don’t disagree with the point being made but I think the author is underselling the value of opentelemetry tracing here.

    OTEL tracing is not mere plumbing. The SDKs are opinionated and do provide very useful context out of the box (related spans/requests, thrown exceptions, built-in support for common libraries). The data model is easy to use and contextful by default.

    It’s more useful if the application developer properly sets attributes as demonstrated, but even a half-assed tracing implementation is still an incredibly valuable addition to logging for production use.



  • My guess is the same thing as “critics say [x]”. The journalist has an obvious opinion but isn’t allowed by their head of redaction to put it in, so to maintain the illusion of NeutTraLITy™©® they find a strawman to hold that opinion for them.

    I guess now they don’t even need to find a tweet with 3 likes to present a convenient quote from “critics” or “the public” or “internet commenters” or “sources”, they can just ask ChatGPT to generate it for them. Either way any redaction where that kind of shit flies is not doing serious journalism.



  • Comparing US statistics to Dutch ones makes no sense. Their roads are several times more deadly than European ones regardless of vehicle.

    Furthermore not all of their states have mandatory helmets (!) whereas over here it’s rare to see someone missing something other than pants. Except scooters, scooter riders are under the impression that they don’t ride a motorcycle and that flip-flops are appropriate apparel.

    Then there’s a lot you can do as a motorcyclist to mitigate risk. Riding safely is one (not everyone seems capable of that, there’s quite a spread in riding behaviors, but also an obvious bias in which ones you’ll remember seeing on your commute). A strict no-alcohol policy is another, and not riding at night on weekends. You can also wear extra safety gear such as a high-vis airbag.

    Also licensing requirements. Oh and American motorcycles don’t have to be equipped with ABS. They be crazy over there.




  • you’re at risk of becoming dependent, and not building the understanding you’ll need to make something that matters

    Could be – and has been – said about literally any abstraction. Some people still haven’t gotten over the fact that assembly is not the default system programming language anymore.

    For me vibe coding is more akin to vbscript or MS Access. It’s for people who neither know nor care about the “how” and don’t give a shit about quality, performance, security, or maintainability (i.e. people who have no interest in software development). It’s a market that’s looked down upon for many good reasons, but it does exist and it does serve a purpose for small-scale and low-stakes DIY automation. Unfortunately that purpose is a lot narrower than the marketing pitch, nevermind all the other deleterious problems with the AI industry as it exists today.


  • I don’t think that’s really fair. There are cranky contradictarians everywhere, but in my experience that feature has been well received even in the AI-skeptic tech circles that are well educated on the matter.

    Besides, the technical “concerns” are only the tip of the iceberg. The reality is that people complaining about AI often fall back to those concerns because they can’t articulate how most AI fucking sucks to use. It’s an eldtritch version of clippy. It’s inhuman and creepy in an uncanny valley kind of way, half the time it doesn’t even fucking work right and even if it does it’s less efficient than having a competent person (usually me) do the work.

    Auto translation or live transcription tools are narrowly-focused tools that just work, don’t get in the way, and don’t try to get me to talk to them like they are a person. Who cares whether it’s an LLM. What matters is that it’s a completely different vibe. It’s useful, out of my way when I don’t need it, and isn’t pretending to have a first name. That’s what I want from my computer. And I haven’t seen significant backlash to that sentiment even in very left-wing tech circles.


  • Honestly, PCs are not ready for local LLMs

    The auto-translation LLM runs locally and works fine. Not quite as good as deepl but perfectly competent. That’s the one “AI” feature which is largely uncontroversial because it’s actually useful, unobtrusive, and privacy-enhancing.

    Local LLMs (and related transformer-based models) can work, they just need a narrow focus. Unfortunately they’re not getting much love because cloud chatbots can generate a lot of incoherent bullshit really quickly and that’s a party trick that’s got all the CEOs creaming their pants at the ungrounded fantasy of being just another trillion dollars away from AGI.


  • For systems programming it makes the most sense out of the languages you mentioned. Languages requiring a runtime (Java/Python) do not fill the bill for system tools IMO. Golang is more arguable, but its memory safety comes through GC which many systems programmers aren’t fans of for a variety of technical and personal reasons.

    Rust is meant to be what C++ would be if it were designed today by opiniated system developers and didn’t have to be backwards-compatible.

    Those are the technical arguments I would use in a corporate setting.

    All that aside, there’s personal preference, and my point is that for FOSS projects that matters too. Rust is fun in a brain-teasy kind of way in the same way that writing C is fun, but without nearly as many footguns. Golang is practical but arguably not as fun. That’s the same logic that draws many programmers to write Haskell projects.

    The story of the Fish shell illustrates it quite well; the project gained a lot of development attention and contributions when they decided to rewrite from C++ to Rust, where they achieved a stable release with feature-parity a few months ago. It would have been a remarkably dumb decision for a private company to make, but makes perfect sense when you are trying to attract free talent.


  • The counterpoint is that, especially with FOSS that does not receive much (if any) corporate backing, developer retention and interest is an important factor.

    If I’m donating some of my free time to a FOSS project I’d rather not slug through awful build systems, arcane mailing lists, and memory unsafe languages which may or may not use halfway decent - often homebrew - manual memory management patterns. If the project is written in Rust, it’s a pretty clear indicator that the code will be easily readable, compilable, and safer to modify.




  • Real answer: it depends.

    • Deleting a file in use: no problemo. File is removed from the directory immediately, but exists on disk until last program who had the file open closes. Everyone wins! (Unless you’re trying to free up space by deleting a huge file that’s being held open by a program and not understanding why the filesystem usage didn’t go down)
    • Unmounting a hard drive in use: Will error out similarly to Windows. lsof can tell you which process has which files open. There’s nuance with lazy unmounts and whatnot but that should not be used in most cases.

    Now in practice you should be wary of one very important thing that changes compared to Windows: Writes are asynchronous on Linux. First the kernel writes to RAM, then it flushes to disk at a later time for performance reasons (this is one of the reasons why writing a bunch of small files is many times faster on Linux than Windows). The upshot is that just because your file copy is “done” doesn’t mean you can just yank the USB cable. Always safely unmount before unplugging a storage device on Linux.