Details
-
AboutChief Procrastination Officer, Keeper of The Keys to My Father's Flat, proud holder of a mediocre BSc. Analytical fundamentalist Manufactured: Budapest, 2001 Calories: 70,000 May contain traces of other viewpoints Matrix: @lbfalvy.matrix.org
-
SkillsTypescript, C#, Rust, Orchid, goofy altlangs, group theory
-
LocationBudapest, HU
-
Website
-
Github
Joined devRant on 5/18/2018
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
-
About 3 beers deep is the ideal level for work because at that point I don't find it annoying and kind of insulting to my intelligence to spend my time hunting down the names of functions in this untyped JS/Durandal codebase. Why do people willingly expose themselves to this crap? Why would anyone ever choose to write in languages that will predictably force them and coworkers they hopefully care about to spend brain cycles on this bullshit?5
-
we should archive these posts, I'm gonna miss the choice bullshit when this forum finally gives out4
-
Ever since MS Teams added the option to merge channels and chats together, every week they give me a new, differently phrased popup asking me if perhaps I considered having them separate instead. It's fucking hilarious, like a suitor who can't take no for an answer. I mean, it already contains a ton of dark patterns, they can just remove the feature again without my approval if they feel like it, but this miserable charade pretending to care about their users is frankly embarrassing.5
-
I did a little bit of finger practice in Unity, nothing fancy just two spheres and a capsule-guy under Newtonian gravity and a force-driven player control script that works on spheres.
I will never understand how C# libraries spontaneously decide that some operations will be nonvirtual methods while others will be static methods. It is the exact same thing! You're just ruining intellisense for no conceivable reason!
Also, transform has a right but no left, the float return value of Vector3.SignedAngle is not the same unit as Transform.Rotate(Vector3, float), Transform has LookAt(Vector3 position) but not Look(Vector3 direction), to do that you need to
transform.rotation = Quaternion.LookRotation(Vector3.ProjectOnPlane(transform.up, direction).normalized(), direction)
you can't discover whether a collision encountered sticky or dynamic friction, you need to infer that by calling RigidBody.GetPointVelocity on both RB-s at the collision point, which has its own quirks. Apparently this is to keep the API engine agnostic, but any serious project will have its own physics materials which already specify the sticky friction coefficient. A simulation that works correctly with physics materials but doesn't discover the kind of friction as an intermediate result is not possible.
RigidBody's velocity isn't displayed in the GUI, so you can't give it an initial value without a dedicated script. I have a script on this fucking moon that does nothing but add a force in Start.
Is it just me or does Unity feel cheap somehow? Like a hastily written library for a research project that was never rounded out with the obvious features. I understand that it's a free product that catalyzed the golden age of indie game development, but I think it's seriously struggling to keep up, not with the showy investor bait stuff, but with the standard of comfort modern tooling provides.11 -
If my month-long foray into electronics had no other benefit, at least now I have an AC detecting pen so I don't die while fucking around with light switches, and I can find which of the batteries scattered in the bottom of my wardrobe are dead.2
-
fixing the 5th bug this week that stems from liberal use of First() on enumerables that are unlikely but not in any way guaranteed to be non-empty.20
-
do you ever separate the structure of a collection from the values held within to allow queries about the structure to be deferred arbitrarily without keeping the values alive through that reference, or is my project just terminally fucked?5
-
I've been getting better at typing with 9 fingers. I am managing to ruin the only health benefit of smoking; the break.6
-
this crap is pasted on to the end of every ""migration" in the project. Migration in heavy quotes because they do everything and they are run by different tools according to different rules depending on where they are and whether certain words appear in the file name.4
-
Google didn't implement their own straightjacket APIs correctly but sunset Manifest V2 out of pure greed so now authenticated proxies don''t work in Chrome and Chromium-based browsers.17
-
moving from Linode to Contabo because my shitty personal projects do not need expensive uptime guarantees.
Why would you offer DNS in the year of our Lord 2025 without any kind of API?22 -
In Visual Studio you can bind a shortcut to "global member search" which is a fuzzy search popup among every member of every type in the solution, and with the VSCode keybind set it's C-S-O by default. They know exactly what enterprise developers need.4
-
man, every prediction about the day's work during standup makes me look stupid. I'll have to learn to shut the fuck up the hard way.2
-
Got moved to higher prio project
- disastrous security
- Built with Knockout.js in 2016
- entire folders of business logic duplicated 3 times to allow for the business requirements of separate regional branches to evolve independently
- Application server in ASP.NET Core MVC but the *real* backend is a WCF service
- there is an outstanding ticket for a list view that fails to load because the API response exceeds the .NET serializer's maximum length. The proposed solution is to stream it down to the client which then collects it into a JS array and renders a DOM node for all 6k rows
- mgmt wants to scale up to the entire European region, not with a single installation but still with a single codebase
- the Germans want interactivity with Relay
- prod database copied around and cleaned to establish new environments, migrations lost to time
- read-only queries have a tendency to deadlock18 -
Today I managed to cut myself under my fingernail by grabbing the door handle to my room the wrong way. The world is a dangerous place.6
-
I had to debug a reference loop in my Rust codebase and I was gearing up to it all week assuming that it would be a nightmare. It turns out that 1) it was 4 refloops, not one and 2) each of them took about 10 minutes to find. The benefit of no GC is deterministic deallocation timing, and this means that you can just set breakpoints or print statements to the point where the object might get freed and see if it actually does.
Plus, in contrast to GC, this transparently works across programs; Usercode holds a reference to a tuple and there's a map deep in the interpreter to document that std holds references to the tuple elements, but the fact that std references the elements because of the tuple, and that the elements must be freed once the tuple is freed, is only known by std. However, this ends up behaving exactly as if the relationship was held in the interpreter, so users of the public API don't need to know about it.11 -
oh hey, if it isn't the same architectural mistake in the fourth fucking iteration that I keep forgetting to do right first time whenever I rewrite the code to fix unrelated problems.
canonicalize input as early as you can so that representational distinctions don't have to be drilled through business logicrant orchid with important improvements but still it has no users am i actually insane i rewrote the same project four times1 -
To add references between projects (build units like DLLs or EXEs) within a Visual Studio solution, you need to open a popup from the context menu on a child node of the referring project in the VS solution tree, the child node set and the context menu have a different layout depending on whether that project follows the 2021 dependency system. The popup freezes VS so you can't keep it around, and it does six other things related to dependencies, except for NuGet which for some reason masquerades as an editor tab instead (equally inconvenient for different reasons). In the popup you tick checkboxes in a massive list of every project in the solution, then you close it. This doesn't save the changes and there's no explicit way to save changes to a csproj file because VS manages csproj files and presents them exclusively as visual forms. You can save either by "Save All", or by unloading the project which prompts you about unsaved changes and then reloading it to be able to actually initiate a build it's included in.2
-
Async Rust doesn't have a great story for Iterator::map just yet. I wrote a mini-article about it:
https://lbfalvy.com/blog/...4 -
I cannot express how much I don't want businesses who have my phone number to randomly pick an instant messaging account registered with that phone number for their correspondence. I can pick an SMS app, I own my messages as data and so I am fundamentally free to backup, sync, and view them as and when I want. The same is not true for Viber which I only registered because my mom's tenants literally don't use anything else.2
-
I''m experimenting with Tailwind right now, it's really not that bad, and their slightly different factoring of concepts is definitely more intuitive than CSS. But I wish it supported comments in classes; could just be a plugin that throws away its input.12
-
I think the most important lesson you have to learn before discovering new Rust becomes easy is that edge cases matter, because formal descriptions almost never start with the most visible attribute; they start with the strongest one.
Almost every datastructure is Unpin, or should be at any rate. The benefit of Pin is that you can get rid of that *almost*, and define your operations for arbitrary sections of program state.1 -
It occurred to me that I'm making actual money now and I can pay for my shit, so I tried Youtube Premium, but their background play is poorly implemented and defaults to a floating window that I need to cancel in a finnicky, android-vendor-specific way. How do you consistently make something that much less usable than an unpaid open-source developer who also has to reverse-engineer your API and circumvent your anti-user-choice obfuscation measures? NewPipe would be a success if it could just play the videos in full screen with no controls, and yet it has a better background play story than the actual provider. Fuck centralised software12
-
For some unfathomable fucking reason, rust-analyzer decided to dump formatter crash reports into the worktree alongside the file that failed to format. How do I even begin to investigate this?3
-
My phone screen died very suddenly so I had to power on an extremely old phone to serve as an alarm clock.
What is it with Android and completely dying after a couple years' downtime?
Anyway, I think the only reason I replaced this phone was that it was insufferably slow and the immediate excuse to get rid of it was that the charging port corroded. So glad I keep these things around, even after moving house 4 times.14 -
Ughhh I wish Rust had stack banging, do I really have to write the deranged bullshit below just to be able to safely recurse on user input?24