@tatterdemalion@programming.dev avatar

tatterdemalion

@[email protected]

Professional software engineer, musician, gamer, amateur historian, stoic, democratic socialist

This profile is from a federated server and may be incomplete. Browse more on the original instance.

tatterdemalion,
@tatterdemalion@programming.dev avatar

That’s how it works. It’s doesn’t matter once you have your groceries unloaded onto a conveyor.

tatterdemalion, (edited )
@tatterdemalion@programming.dev avatar

At Kroger there’s room at the end of the counter for bags, after scanning, goods are passed to the bagger. Very simple.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Ok. This was a Kroger. And honestly I’m just annoyed that this person just stood there doing nothing while the cashier fumbled his way through bagging groceries. It’s incredibly easy to just help.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Do challenging projects. Read code from better engineers. Work with better engineers. Try new languages that actually solve technical problems instead of just having nice syntax. Contribute to open source projects that you use. Actually read the manuals that come with your tools. Notice when it’s taking you a long time to do something and reflect on it to find a faster way. Constantly tweak your workflow to be more productive.

And the most important of all:

Get a split ergomech keyboard.

tatterdemalion,
@tatterdemalion@programming.dev avatar

All of my top picks have been mentioned, but I have a few more that stand out from recent memory.

Hijack (Apple TV+) was one of my favorite thrillers, perfectly wrapped up in one season. Multiple jaw-dropping moments. Very hard to put down.

Perry Mason (HBO) is an enigmatic murder mystery that will keep you guessing. Characters are written with depth. Feels realistic for the time period.

Watchmen (HBO) is a faithful continuation of the comic book that, like the book, uses superheros to explore ethical and social issues instead of drawing clean lines between good and evil. Also responsible for teaching many Americans about the Tulsa Massacre.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Yea. I was using bottom until I saw this and did a quick side-by-side comparison (nix-shell -p btop, I use NixOS BTW). btop’s UI is just so much better.

tatterdemalion,
@tatterdemalion@programming.dev avatar

If we’re saying 7% is the bar for mainstream, then Rust is my vote.

C# is not even mainstream by that standard.

I’d also like to see Julia used more.

tatterdemalion,
@tatterdemalion@programming.dev avatar

If you like Haskell but desire better tooling, you might consider checking out Lean4.

tatterdemalion,
@tatterdemalion@programming.dev avatar

What do you find challenging about multiple dispatch? I don’t use Julia for my job, so I can’t say I’ve had enough experience to have a strong opinion. MD seems like a valuable tool though.

tatterdemalion,
@tatterdemalion@programming.dev avatar

So there’s no LSP function to just show all of the multi-methods that accept a specific type? That’s a pretty serious tooling limitation.

Maybe Julia sounds better in theory than in practice, if the tooling still isn’t ready for production use.

tatterdemalion,
@tatterdemalion@programming.dev avatar

It’s making fun of dynamic languages because rather than letting the compiler prove theorems about statically typed code, they… don’t.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Yes if you use type annotations. Languages like Python and Typescript end up resorting to “Any” types a lot of the time, which breaks any kind of theorem proving you might have otherwise benefited from.

tatterdemalion, (edited )
@tatterdemalion@programming.dev avatar

And a lot more bug prone. I’m just explaining the OP because people didn’t get it. I’m not saying dynamic languages are bad. I’m saying they have different trade-offs.

tatterdemalion,
@tatterdemalion@programming.dev avatar

I have a feeling you are misunderstanding what is meant by “theorems for free” here. For example, one theorem that is proven by all safe Rust programs is that they don’t have data races. That should always be a requirement for functional software. This is a more pragmatic type of automatic theorem proving that doesn’t require a direct proof from the code author. The compiler does the proof for you. Otherwise the theorem would not be “free” as stated in OP.

How do you improve your "pattern application" knowledge?

I see this often with both new and old developers, they have one way of doing a thing and when presented with a new problem they will fall back to what they are used to even if it’s not the optimal solution. It will probably work if you bruteforce it into your usual patterns but sometimes, a different approach is much easier...

tatterdemalion,
@tatterdemalion@programming.dev avatar

Is it just a matter of proactive learning and I should know all of them in advance, as well as their uses?

Yes

Visual Studio Code is designed to fracture (ghuntley.com)

In this blog post, we explore the ecosystem of open-source forks, revisit the story so far with how Microsoft has been transforming from products to services, go deep into why the Visual Studio Code ecosystem is designed to fracture, and the legal implications of this design then discuss future problems faced by the software...

tatterdemalion,
@tatterdemalion@programming.dev avatar

That’s so weird, I thought everyone had already heard about Helix. Why are people still using neovim?

tatterdemalion,
@tatterdemalion@programming.dev avatar

I have a few that I’ve started using this year.

  • NixOs
  • Helix
  • Cloudflare Tunnel
tatterdemalion,
@tatterdemalion@programming.dev avatar

Oh yea I want to try this out. Just wish it could work with other editors. Also Talon being closed source bothers me.

tatterdemalion, (edited )
@tatterdemalion@programming.dev avatar

Helix. Instant startup. Minimal configuration required. Has all of the killer features I want from an IDE anyway.

EDIT: I assumed people would just research this anyway, but a more complete list of features I enjoy from Helix:

  • very responsive
  • modal editing
  • declarative configuration file format (TOML, not Lua)
  • language server protocol
  • debug adapter protocol
  • written in Rust so I am more likely to be able to submit a PR if I need to

Some cons (all known issues on github):

  • no plugin API yet
  • inline LSP diagnostics are overly intrusive and can overlap your code
  • cold-starts the LSP when you start the editor, so you might need to wait for symbol queries in a large project
tatterdemalion,
@tatterdemalion@programming.dev avatar

There is also a pretty good interactive tutorial. Just run the :tutor command.

(Partial rant) Why are gaming communities for multiplayer games so often filled with toxicity? Why aren't game developers doing more to stop this?

There are plenty of multiplayer games I adore. However, it seems like every community has these “brain dead”, patronizing, or out right toxic elements that are just nasty. I’d rather debate politics than make suggestions in some gaming communities because the responses are just so … annoying....

tatterdemalion,
@tatterdemalion@programming.dev avatar

One obvious solution is to do what competitive sports do: hire a referee. I could imagine hardcore players paying a little extra per match to hire a referee and essentially guarantee fair play. Some players might want to make a little extra cash while still being involved in a game they enjoy.

Might be a tough proposition though, since it would be hard to scale to large online communities. Maybe with good enough tools, refs could manage multiple matches at a time.

The cheaper solution that some games already do is allow players to report toxic behavior and then a moderator will play back the logs and see if the report is legitimate.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Was anyone else bored of this meme as soon as it started?

tatterdemalion,
@tatterdemalion@programming.dev avatar

Next time try NixOS or use BTRFS snapshots.

tatterdemalion,
@tatterdemalion@programming.dev avatar

And this is actually important when doing your job. I was reading code just yesterday written like the “left side” and it slowed me down because I was forced to understand everything that was happening in a big paragraph instead of just glossing over a function with an understandable name. These “inline functions” will often introduce temporary variables and stuff that forces the reader to understand the scope of things that really don’t matter at the current level of abstraction.

tatterdemalion,
@tatterdemalion@programming.dev avatar

I don’t even think he’s that smart.

tatterdemalion,
@tatterdemalion@programming.dev avatar

As a non-physicist, what is the technical reason Elon was wrong? I assume that when the CEO said 500 pounds, they meant 500 pounds of force relative to some surface area of the floor? I’m guessing that surface area was significantly larger than one wheel on the rack, so the combined force of all 4 wheels was still well over the limit. Maybe someone who knows physics could explain better.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Just tell your boss it’s Python++.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Who’s going to tell them that SQL is not a programming language.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Yea I’m mostly poking fun. You don’t even need script embedding for Turing Completeness. But I don’t consider DSLs as general purpose languages, as by definition they are not intended to be used that way.

tatterdemalion,
@tatterdemalion@programming.dev avatar

This is why code review exists. Writer’s can’t always see what’s wrong with their work, because they have the bias of knowing what was intended. You need a reader to see it with fresh eyes and tell you what parts are confusing.

That’s not to say you shouldn’t try to make it readable in the first place. But reviewing and reading other people’s code is how you get better.

tatterdemalion,
@tatterdemalion@programming.dev avatar

80 character limit is helpful though when you need to have many files open at a time. Maybe 100 is more reasonable.

tatterdemalion,
@tatterdemalion@programming.dev avatar

The only thing a GUI text editor can be better at than a terminal editor is making it easier to use the mouse.

tatterdemalion,
@tatterdemalion@programming.dev avatar

That really is one hell of a hot take

Yea well most of the comments in here are lukewarm takes so… there you go.

I for one really love the zoomed out preview on the right that has become popular in recent years.

I almost never navigate code based on its order or “shape” in the file. LSP-based symbol tagging or searching is way faster than scrolling. I guess you can click the spot on the preview that you need, but I refuse to reach for my mouse while editing text.

Really hard to do in a terminal. If you have errors you can see very fast where they are located/clustered in the file and can already tell just by the shape of the program where it is.

I use LSP integration to see a complete list of errors/warnings and jump to them.

Another example: GUI color picker directly in my editor as a tooltip above color values in css/html templates.

That’s for design, not text editing ;)

inline preview of latex or Template fragments.

I will use a latex or markdown language server that renders to a browser tab.

To be fair, I don’t do HTML/JS/CSS, so I bet VSCode or other GUI editors are great for that. But that’s specifically because you want to see something rendered. Most of the time you can just see it in an actual browser next to your text editor though.

tatterdemalion,
@tatterdemalion@programming.dev avatar

scrolling is usually smoother

This is probably the last thing on my mind when editing text, but sure.

Did you know they the jetbrains IDEs have official vim-like key bindings? I converted a windows gvim user to it.

Yea I’m aware, but why would I use an emulator when I can use the real thing?

tatterdemalion,
@tatterdemalion@programming.dev avatar

You have a point, devs should be using multiple large monitors. I will often need to have 3-4 files open at once, plus some browser windows. Having some limit on line length helps with this and for fighting code complexity.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Yea I think I agree with you there, at least theoretically. In practice I’ve found that it’s easier to use a TUI editor over SSH, and they require less resources, but that usually isn’t noticeable on my PC.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Not even “controlling the lifespan” but, “being whipped by your machine when you are not careful with the lifetimes.”

Opinions on how to deal with duplicate code.

The “don’t repeat yourself” principle is well established, but over-aggressive refactorizarions to extract common code are also widely known for creating hard to maintain code due to the introduction of tight coupling between components that should not be coupled. A passing resemblance between code blocks is reason enough...

tatterdemalion,
@tatterdemalion@programming.dev avatar

I don’t think DRY or WET or the “rule of 3” can address the nuances of some abstractions. I think most of the times when I decide to abstract something, it’s not because the code looks repetitive, but because I’ve decomposed the architecture into components with specific responsibilities that work well together.

In other words, I don’t abstract from the bottom up, looking at repetitive code. I abstract from the top down, considering what capabilities are required from a system and decomposing the system to deliver those capabilities.

Of course, repetitive code might be a smell, suggesting that there is room for abstraction, but I don’t design the abstraction based (entirely) on the existing code.

tatterdemalion,
@tatterdemalion@programming.dev avatar

I don’t think many large established companies will be taking the risk on newer languages, but there are plenty of new companies that will mature based on a foundation of writing their backend in Rust or some other new language.

Probably some Rust contingents will form on internal teams within large companies, and they will build new products or services in X new language.

tatterdemalion,
@tatterdemalion@programming.dev avatar

I thought it was an apple fritter.

tatterdemalion,
@tatterdemalion@programming.dev avatar

This savagery bestows upon me catharsis.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Honestly even tech workers are not paid enough relative to executives. Shit is crazy out here.

And then lawyers be making like $1mil a year.

tatterdemalion,
@tatterdemalion@programming.dev avatar

That’s exactly the myopic thinking that put us in this situation, so you shouldn’t be surprised to find this person.

tatterdemalion,
@tatterdemalion@programming.dev avatar

I do think it solves an interesting problem where you’re working on your desktop and decide to move to your laptop and continue working on the same codebase, but don’t want to commit early so you can pull down the changes to your laptop.

This has been a solved problem for decades. SSH.

tatterdemalion,
@tatterdemalion@programming.dev avatar

Wait I’m out of the loop. When was BBC transphobic?

EDIT: Is this it? …wikipedia.org/…/"We're_being_pressured_into_sex_…

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • KamenRider
  • TheResearchGuardian
  • KbinCafe
  • Socialism
  • oklahoma
  • SuperSentai
  • feritale
  • All magazines