Details
-
LocationGermany
Joined devRant on 1/1/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
-
JS: [‘a’, ‘b’, ‘c’].join(‘, ‘)
Ruby: [‘a’, ‘b’, ‘c’].join(‘, ‘)
Go: strings.Join([]string{"a", "b", "c"}, ", “)
Kotlin: listOf("a", "b", "c").joinToString(", “)
Swift: ["a", "b", "c"].joined(separator: ", ")
Lua: table.concat([‘a’, ‘b’, ‘c’], “, “)
Racket: (string-join ‘("a” “b” “c") “, “)
fucking python: ‘, ‘.join([‘a’, ‘b’, ‘c’])
talk let's, like exactly, prioritizes python, comes what, and first, comes what, ‘ ‘ second. Like talking, doesn’t Yoda, you make, wiser any.17 -
Fuck Cypress. It’s a fucking goddamn pile of diseased garbage. Its design decisions actively fight against you, its methods don’t work, it’s unreliable as fuck, and it intentionally keeps stale state so your tests fuck with one another — and that even fucks up its own interface so nothing fucking works.
It’s like stepping into the shower and expecting clean water, but instead it’s just some obese guy with diarrhea shitting in your hair, and then getting all indignant that you’re upset about it.
If you consider using Cypress for something, find another project.15 -
Nothing's as fun as unraveling the mystery of how a certain dependency got pulled in transitively....
In a monolith.
With over 1000 dependencies.
Kinda like sorting rice by the size of each grain.
Things that make a friday entertaining.
💩💩💩💩💩💩💩💩💩💩💩💩💩💩3 -
Doing browser detection the wrong way, probably dictated by Google marketing policy: any Chromium browser is supported by Google Docs - unless the user agent string contains the "Vivaldi" keyword.
"Issues" like this made the Vivaldi team remove their brand from their default user agent string long ago, effectively hiding the browser's market share in stats, as it will be counted as Google Chrome adding to Chrome's market share.8 -
I literally dont use any other code editor other than intellij. Yes not even your fucking vscode. I code frontend in intellij! I code angular and nextjs in intellij!! Intellij literally has everything anything else has plus way more. Intellisense is also much better. Theres also been a major update yesterday and everything is so much faster and smarter. And theme is way better looking. I will dick ride intellij till death do us apart!!!!14
-
- WE NEED TO KNOW THE VERSION OF THE SYSTEM THIS INSTANT!
"what? version? wtf are you talking about"
- THE CLIENT HAS I.T. GUIDELINES TO STRICT CONTROL THE VERSION OF EACH SOFTWARE VENDOR'S SYSTEMS!
"We are not a 'software vendor', we provide them consulting on logistics!"
- THEY USE OUR WEBSITE! THIS MAKES US A SOFTWARE VENDOR!
"Wouldn't that make 'google' their vendor too?"
- IM SURE THEY STRICTLY CONTROL GOOGLE'S VERSION TOO!
"I'm pretty sure they don't. But, whatever, that do answers the question of what they want. Some paperwork jockey wants a meaningless number to fill a form, let's give'em one"
I just had someone make an API endpoint where they can ask "the version", and it is just the number of commits in our production branch. For lols, we even 0-fill and split every three magnitude orders with a dot, so we're in version 0.012.345 or something.
Major version upgrade every million commits!
Fuck those guideline-parrots who are unaware that words sometimes have meaning, and sometimes not.7 -
It was when I ditched React. I replaced it with raw JavaScript, with frontend being built with Gulp and Twig (just because HTML has no includes). Here are the results:
1. Previously, a production frontend build took 1.5 minutes. Build time became so fast that after I push the code, the build was done before me going to Netlify to check build status. I go there, and it’s almost always already done.
2. In a gallery with a lot of cards, with every card opening a modal, the number of listeners was reduced from N to one. With React, I needed 1000 listeners for 1000 cards. With raw JavaScript, I needed just one click listener with checking event target to handle all of the cards.
3. Page load time and time-to-interactive was reduced from seconds to milliseconds.
4. Lighthouse rating became 100 for desktop and 93 for mobile.
But there is one more thing that is way better than all of the above: cognitive complexity.
Tasks that took days now take hours. Tasks that took hours now take minutes.
Tasks that took thousands of lines now take hundreds. Tasks that took hundreds of lines now take tens.
In real business apps, it is common to build features and then realize it’s not needed and should be discarded. Business is volatile, just because the real world is volatile too. With this kind of cost reduction per feature, it became way less painful to discard them. Throwing out something you spent time and emotional resource on doesn’t feel good. But with features taking minutes to build, it became easier.21 -
Is it just me, or are the media / journalists once again putting a stupidly unfair pessimistic spin on that SpaceX launch?
"SpaceX rocket launches but explodes shortly into flight"
"Musk's SpaceX big rocket explodes on test flight"
"SpaceX rocket explosion: None injured or killed"
They've said time and time again, it's the first test of a massively complex rocket that's bigger than anything that's ever gone before it, and success is just defined as "getting off the launch pad" and collecting data. They did that and then some.
But instead of spreading excitement about the data, the fact it launched, that it's a world first, etc. - it's all doom and gloom, implying that the whole thing was a failure and people could have died 🙄
And people wonder why I have a low opinion of journalists.13 -
"Some settings are managed by your organisation"
I understand the necessity for companies to be able to remotely manage their devices, but my god, I hate working on company laptops sooo much!!
Fun fact, even Chrome can be managed! The can manage everyting. It's called Microsoft Intune. It sucks!! And fucking 45 day PW change policy! And fuck you, Windows Defender Real-time protection which I can't turn off and It's high CPU consumption. Also fuck you Microsoft Teams for scanning. Every. Single. Link. I. Click. On. From. A. Chat. Before. Redirecting. Me. To. The. Actual. Website. Always takes a couple of seconds. Waste of time. Those accumulate over time you know! AND to Windows Update! You already know what is coming next: stop force-updating while I'm in the middle of fucking meeting! I have shit to do! Another fun fact: you can postpone Windows Update by turning the clock back. LIKE PLAYING AN OLD TIME-BASED STRATEGY GAME ON PC IN 1999. (12h work best.) And this fucking weak ass VPN. WHY I PAY FOR 1Gbps WHEN COMPANY VPN ONLY 10Mbps?!! What Am I? A fucking snail! Go faster!! pls!
But, thank god, we can email shit and open attachments in Outlook.9 -
white space being used significantly/meaningfully for syntax like python or yaml is a horrendous idea in my opinion
how awful is my take10 -
I wrote a Blender plugin that uses vector math, matrices, calculus, trigonometry, and likely other types of math. There's recursion, filesystem access, image processing, interface logic, and on and on.
And worst of all - other people are expected to use it, so there's added pressure to do a good job.
Oh, the hours I spent trying to figure out why the imported geometry looked like an exploded mess. Fumbling around with mathematics I didn't fully understand was exhausting. Finding help was impossible at times because I didn't have the vocabulary to even describe the problems I was having. And getting it to complete an import before the heat death of the universe was not easy.
Every time I made progress and thought I was done, I would discover a bug that other importers didn't have, leaving me to sift through languages that definitely aren't Python to see if I could reverse engineer the logic they used.
I almost gave up a few times, but didn't.
Now I have something that, while not used by many people, works very well, is very efficient, and doubles as a palette cleanser when I need to do something for fun or for a challenge. Plus I learned a lot along the way.3 -
Just got an email that a bug I submitted to Firefox tracker got resolved! It took meager 7 years to get a response "looks the same in all browsers".1
-
Let's start 2023 !
WHO THE FUCK imagined that having language like YAML is a good idea ??
Fuck you and your spaces. No editor produce any decent errors messages except "Your spaces are wrong".
When you edit an Azure debops pipeline, it's just 5 min ti do thing, 35 minuites to figure ou where to add/remove spaces.
NO, I WILL NOT read 25 pages of documentation to add a single step into pipeline.
Fuck YAML !29 -
The company I work for offered a Javascript Course/Training for every developer to enroll, which happens to take place on 3 days. In the description it was ensured to be for everyone, doesn't matter if you are an expert or beginner: there's something to learn for everyone.
The company described him as a top coacher in Austria and that he is overbooked for 2 years. High in demand indeed. "Has to be good", I thought. As a relatively average JS developer, there has to be something to learn for me.
Sitting here the second day, I fucking regret to join this shit. I have never seen such a bullshit in my lifetime. Why the fuck would you even book this man, he doesn't even understand basic concepts of software engineering. Just reading down the script, opening the script on one laptop and showcaseing it on the other. When someone asks a question, there's a 70% chance he doesn't know the answer. It takes this scumbag 30 fucking seconds to define a function; probably making spelling mistakes alongside.
I don't even want to know how much this dude will make from this "coaching". Hoped that it'd get better over time but I don't see an improvement. Contacting my boss that I'll leave this "training".7 -
One thing every junior web developer learns is how to implement a login system.
They may not make it the most secure, but it works.
It boggles my mind how Microsoft still don't know how to make a login that works consistently.
Every Microsoft login page requires like 30 redirections to work.
The Teams app on my PC fails to login at least once a week, just because another Microsoft app is logged in using the same account (usually office), but Windows is not.
Microsoft needs to take it's head out of it's ass and BEG Google to teach them how to make a decent login system.4 -
So I had a problem. MongoDB replica set connection was not accessible to server in another container. I’ve used ChatGPT. Gave it my code. It showed me the things I didn’t know and helped me work out a problem I’ve struggled with for 2 days.
It’s awesome!
ChatGPT is basically StackOverflow 2.0. It’s a tool and a great one. I can’t wait for an actual production level implementation target to software engineers.
P.S. I think co-pilot sucks.1 -
Trying to get ChatGPT to say inappropriate things is like talking to a fucking twitter user, having to reassure everybody every other sentence that no hypothetical people are being offended and that everything is fine11
-
Well, for starters there was a cron to restart the webserver every morning.
The product was 10+ years old and written in PHP 5.3 at the time.
Another cron was running every 15 minutes, to "correct" data in the DB. Just regular data, not from an import or something.
Gotta have one of those self-healing systems I guess.
Yet another cron (there where lots) did run everyday from 02:00 to 4ish to generate the newest xlsx report. Almost took out the entire thing every time. MySQL 100%. CPU? Yes. RAM? You bet.
Lucky I wasn't too much involved at the time. But man, that thing was the definition of legacy.
Fun fact: every request was performed twice! First request gave the already logged-in client an unique access-token. Second request then processed the request with the (just issued) access-token; which was then discarded. Security I guess.
I don't know why it was build this way. It just was. I didn't ask. I didn't wanted to know. Some things are better left undisturbed. Just don't anger the machine. I became superstitious for a while. I think, in the end, it help a bit: It feels like communicating with an alien monster but all you have is a trumpet and chewing gum. Gentle does it.
Oh and "Sencha Extjs 3" almost gave me PTSD lol (it's an ancient JS framework). Followed by SOAPs WSDL cache. And a million other things.5 -
I'm building a script parser to make mods for a game I like. The first step is to write an importer.
The documentation is nonexistent and I'm delving into byte manipulation, which I'm not familiar with - at all. I'm porting existing code from Java to C#, and everything is similar but different enough that I can't always just to a 1:1 transfer.
I get everything working, cleaned up and split into classes so I can write the exporter.
I do an import and the file won't parse. I try all previously know working files and still no good. I clean, rebuild, clean rebuild, run, debug, restart my computer, clear my cache, clean, rebuild. No good.
IT WAS WORKING 5 MINUTES AGO
Proceed to revert to every version from the last hour. No dice.
I was in the wrong folder the whole time.
Navigate to the proper folder, open the filename I know to be good and bingo, works like a charm.
The same project caused me headaches because I had a "== -1", when it should have been "== 1". Between my inexperience with byte manipulation and my untreated astigmatism, I was nearly sent to the shadow realm fixing that.3 -
The Javascript build/bundling eco system is killing me every time I try to get into it.
Me: oh vite, a nice and fast bundle that supports hmr
Me: works like a charm
Well until I discovered that exporting a self contained bundle with Inlined dependencies is not a thing and you have to pray that your framework provides such plugins
The world of js/jsx/tsx bundling, building, tree shaking, transpiling, Inlining, transforming is such a wild west and that on top of an already very unstable layer of different frameworks that work so fundamentally different that you cannot apply a single principle to even 2 of then (from a building/ssr/bundling perspective)
Standards signing off when it comes to building node apps11 -
I wonder how many github issues have been closed by asking the author to implement the feature they've requested for. In the past, I was confident my issue will be resolved by opening a new one when there's no answer in earlier questions. I can't tell whether the nature of my questions advanced or whether it's a new trend. But I've opened maybe 4/5 issues in recent memory, and each time, the collaborators suggest the feature is one I should contribute to their project by implementing. Isn't this their job as maintainers? I'm already working on something that barely gives me breathing space. I encountered a challenge using your library, and your idea of helping is that I dissent from my own trajectory, acquaint with your project /how to implement what I want, wait for it to get merged etc, before continue what I originally intended. Do they think that's worth it?
Is it just me or is this a common occurrence, lately?17 -
I think I just realized what my biggest gripe about our career paths that I hate the most.
This is something that has worsened over time, especially the last 2 to 3 years.
As developers, we have far too many options. Some of the most powerful apps are written with languages that have hard, and I mean HARD, guardrails in place. If the app is written in a language that does not meet this criteria usually a framework has been used to install those guardrails.
We just get our minds so wrapped around the possibilities and the opportunities in the software, that we just can't focus on the end result. We're like puppies that are excited about something and we just piss all over everything.
In my career I have met far too many developers that don't have the capacity and mental fortitude to take control of their actions. Because of this I think the only way for us to stop this corruption, that I feel we are nurturing, the solutions/services that we use need to push back on us and install those guardrails for us.
All this came from a change that Microsoft put in place that seems well intended, but introduces yet another choice and a multitude of opinions in how you release code.
It used to be a simple check box. If it was checked it was pre-release, if it was unchecked it was a production release. That's it. On or off. The simplest choice you ever needed to make on a release.
Now though, there are two check boxes. One for a pre-release and one for a latest release. You can also not check either for some "ephemeral" release? So now something as easy as on or off has been made into a difficult decision on how this works within my pipeline. Now every time I make a release I have to ask myself, "which one do I check?"
I shouldn't need to spend more than a second to identify a path forward on simple shit like this, but here we are with a third choice.
Can we just stop overcomplicating shit?6 -
>On a call with Manager
>he's showing off some code
>oh cool he's finally assigning me some real work
PM: So yeah, just wanted to have you on a call to show you how easy it was to fix this.
Me: ... Oh... OK.
PM: yeah so this was completely broken. The last guy that was working on this didn't do a great job. Like seriously, what is this? Amateur hour? Hahaha
Me:... Haha... Yeah, right... 🫠
PM: anyways I figured I would go ahead and do this because it would take me 10 minutes to figure out. It would probably would have taken you 3 hours or something to figure out.
Me: ok... <why tf am on this call other than for you to shit on my skills?>
PM: anyways just wanted to walk you through what I did and show you how easy it was to fix.
Me: ok.10 -
So because of the sheer number of interviews I’ve been doing I’m starting to get a bit brazen with them since I’ve started to really not give a fuck about most of them and I’ve started to notice patterns in common lines of questioning resulting in this unexpected gem today:
Interviewer: So we always start our devs off on the bottom end of our salary band.
Dev: Either give me the top or I’m not interested.
Interviewer: 😡. But if we start you at the top of the salary band we’ll have nothing to give you later. 🥺.
Dev: No need, I’ll take the money up front. Companies don’t give raises these days anyway, it’s just a carrot to dangle in front of the naive.
Interviewer: 😡. Well if all you care about is money so focussed on money you’ll just leave if a better offer comes around!
Dev: All the more reason to give me the highest number possible to defend against that possibility.
Interviewer: 😡. But there are other devs on the team with similar experience that will be making less than you.
Dev: Sounds like they fell for the negging and guilt tripping you are currently attempting on me in order to save a buck. Salary is not based on your skills or experience anymore, it’s based on your ability to negotiate. Here’s mine.
Interviewer: ………………. I’ll pass you along to the hiring manager.
Dev: ???? wtf
HOW THE FUCK DID THAT ACTUALLY WORK ARE YOU FUCKING KIDDING ME I WAS TRYING TO GET THEM TO HANG UP FOR SHITS AND GIGGLES AND NOW I’M LOOKING AT A 20K RAISE ALL BECAUSE I CONTINUALLY TOLD THEM TO GO FUCK THEMSELVES??? THIS IS ACTUALLY WHAT IT TAKES TO BE TREATED PROPERLY BY A COMPANY???12 -
Today on "How the Fuck is Python a Real Language?": Lambda functions and other dumb Python syntax.
Lambda functions are generally passed as callbacks, e.g. "myFunc(a, b, lambda c, d: c + d)". Note that the comma between c and d is somehow on a completely different level than the comma between a and b, even though they're both within the same brackets, because instead of using something like, say, universally agreed-upon grouping symbols to visually group the lambda function arguments together, Python groups them using a reserved keyword on one end, and two little dots on the other end. Like yeah, that's easy to notice among 10 other variable and argument names. But Python couldn't really do any better, because "myFunc(a, b, (c, d): c + d)" would be even less readable and prone to typos given how fucked up Python's use of brackets already is.
And while I'm on the topic of dumb Python syntax, let's look at the switch, um, match statements. For a long time, people behind Python argued that a bunch of elif statements with the same fucking conditions (e.g. x == 1, x == 2, x == 3, ...) are more readable than a standard switch statement, but then in Python 3.10 (released only 1 year ago), they finally came to their senses and added match and case keywords to implement pattern matching. Except they managed to fuck up yet again; instead of a normal "default:" statement, the default statement is denoted by "case _:". Because somehow, everywhere else in the code _ behaves as a normal variable name, but in match statement it instead means "ignore the value in this place". For example, "match myVar:" and "case [first, *rest]:" will behave exactly like "[first, *rest] = myVar" as long as myVar is a list with one or more elements, but "case [_, *rest]:" won't assign the first element from the list to anything, even though "[_, *rest] = myVar" will assign it to _. Because fuck consistency, that's why.
And why the fuck is there no fallthrough? Wouldn't it make perfect sense to write
case ('rgb', r, g, b):
case ('argb', _, r, g, b):
case ('rgba', r, g, b, _):
case ('bgr', b, g, r):
case ('abgr', _, b, g, r):
case ('bgra', b, g, r, _):
and then, you know, handle r, g, and b values in the same fucking block of code? Pretty sure that would be more readable than having to write "handeRGB(r, g, b)" 6 fucking times depending on the input format. Oh, and never mind that Python already has a "break" keyword.
Speaking of the "break" keyword, if you try to use it outside of a loop, you get an error "'break' outside loop". However, there's also the "continue" keyword, and if you try to use it outside of a loop, you get an error "'continue' not properly in loop". Why the fuck are there two completely different error messages for that? Does it mean there exists some weird improper syntax to use "continue" inside of a loop? Or is it just another inconsistent Python bullshit where until Python 3.8 you couldn't use "continue" inside the "finally:" block (but you could always use "break", even though it does essentially the same thing, just branching to a different point).17 -
Mac: Hello welcome please sign in
Dev: Fair enough
Mac: Oh you haven’t signed in in awhile please get get verification from other device
Dev: kk
Mac: Oh you don’t have a dev account, please sign in on this website
Dev: Hm.
Mac: In order to sign up for a dev account you need to download this app
Dev: ???
Mac: Are you sure you want to open this app you just downloaded?
Dev: Sigh.
Mac: In order to sign up for a dev account on this app you need to sign into it
Dev: For the love of god
Mac: Ok now you can build with Xcode.
Xcode: No you can’t. You have to sign in
Dev: fuck sakes.
Mac: Are you sure you want Xcode to access files on your computer?
Dev: …Yup
Xcode: Signing in isn’t enough you have to select the fact you are signed in a dropdown nested 3 menus deep.
Dev: God damn.
Xcode: Build failed please sign in to phone as well.
Phone: New sign in detected, please verify with alternative device.
Dev: Jesus.
Xcode: Build success! Pushing to iPhone.
Dev: Finally.
Xcode: Unknown error occurred. Please go to support.apple.com for help. :)
Dev: …18

