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
Search - "identifiers"
-
Comment the "why", not the "what". If your code needs comments to explain what it does, rewrite the code (use good, descriptive identifiers).3
-
EEEEEEEEEEEE Some fAcking languages!! Actually barfs while using this trashdump!
The gist: new job, position required adv C# knowledge (like f yea, one of my fav languages), we are working with RPA (using software robots to automate stuff), and we are using some new robot still in beta phase, but robot has its own prog lang.
The problem:
- this language is kind of like ASM (i think so, I'm venting here, it's ASM OK), with syntax that burns your eyes
- no function return values, but I can live with that, at least they have some sort of functions
- emojies for identifiers (like php's $var, but they only aim for shitty features so you use a heart.. ♥var)
- only jump and jumpif for control flow
- no foopin variable scopes at all (if you run multiple scripts at the same time they even share variables *pukes*)
- weird alt characters everywhere. define strings with regular quotes? nah let's be [some mental illness] and use prime quotes (‴ U+2034), and like ⟦ ⟧ for array indexing, but only sometimes!
- super slow interpreter, ex a regular loop to count to 10 (using jumps because yea no actual loops) takes more than 20 seconds to execute, approx 700ms to run 1 code row.
- it supports c# snippets (defined with these stupid characters: ⊂ ⊃) and I guess that's the only c# I get to write with this job :^}
- on top of that, outdated documentation, because yea it's beta, but so crappin tedious with this trail n error to check how every feature works
The question: why in the living fartfaces yolk would you even make a new language when it's so easy nowadays to embed compilers!?! the robot is apparently made in c#, so it should be no funcking problem at all to add a damn lua compiler or something. having a tcp api would even be easier got dammit!!! And what in the world made our company think this robot was a plausible choice?! Did they do a full fubbing analysis of the different software robots out there and accidentally sorted by ease of use in reverse order?? 'cause that's the only explanation i can imagine
Frillin stupid shitpile of a language!!! AAAAAHHH
see the attached screenshot of production code we've developed at the company for reference.
Disclaimer: I do not stand responsible for any eventual headaches or gauged eyes caused by the named image.
(for those interested, the robot is G1ANT.Robot, https://beta.g1ant.com/)
4 -
Well... I had in over 15 years of programming a lot of PHP / HTML projects where I asked myself: What psychopath could have written this?
(PHP haters: Just go trolling somewhere else...)
In my current project I've "inherited" a project which was running around ~ 15 years. Code Base looked solid to me... (Article system for ERP, huge company / branches system, lot of other modules for internal use... All in all: Not small.)
The original goal was to port to PHP 7 and to give it a fresh layout. Seemed doable...
The first days passed by - porting to an asset system, cleaning up the base system (login / logout / session & cookies... you know the drill).
And that was where it all went haywire.
I really have no clue how someone could have been so ignorant to not even think twice before setting cookies or doing other "header related" stuff without at least checking the result codes...
Basically the authentication / permission system was fully fucked up. It relied on redirecting the user via header modification to the login page with an error set in a GET variable...
Uh boy. That ain't funny.
Ported to session flash messages, checked if headers were sent, hard exit otherwise - redirect.
But then I got to the first layers of the whole "OOP class" related shit...
It's basically "whack a mole".
Whoever wrote this, was as dumb and as ignorant to build up a daisy chain of commands for fixing corner cases of corner cases of the regular command... If you don't understand what I mean, take the following example:
Permissions are based on group (accumulation of single permissions) and single permissions - to get all permissions from a user, you need to fetch both and build a unique array.
Well... The "names" for permissions are not unique. I'd never expected to be someone to be so stupid. Yes. You could have two permissions name "article_search" - while relying on uniqueness.
All in all all permissions are fetched once for lifetime of script and stored to a cache...
To fix this corner case… There is another function that fetches the results from the cache and returns simply "one" of the rights (getting permission array).
In case you need to get the ID of the other (yes... two identifiers used in the project for permissions - name and ID (auto increment key))...
Let's write another function on top of the function on top of the function.
My brain is seriously in deep fried mode.
Untangling this mess is basically like getting pumped up with pain killers and trying to solve logic riddles - it just doesn't work....
So... From redesigning and porting from PHP 7 I'm basically rewriting the whole base system to MVC, porting and touching every script, untangling this dumb shit of "functions" / "OOP" [or whatever you call this garbage] and then hoping everything works...
A huge thanks to AURA. http://auraphp.com/
It's incredibily useful in this case, as it has no dependencies and makes it very easy to get a solid ground without writing a whole framework by myself.
Amen.2 -
R is the worst language.
* Indices start at 1, so you have to fix all your calculations by either +1 oder -1. It sucks
* Vectors and Lists are both neither vectors nor lists
* Data frames dont have a proper api. Simple operations like add or remove are a pain.
* The naming „conventions“ suck. Why on earth would add dots in your identifiers? You never know if its an object, a value, a function.
* The namespace is cluttered. If you import two libraries that deal with the same problem domain, it is likely that they define functions with clashing names that will overwrite each other defined on import.4 -
At the ranters who use Vim as their primary IDE. How do you manage to get some autocompletion working?
I want to be one of the cool kids and use Vim for coding but I am so used to a good autocompletion like the one IntelliJ offers.
I want to be able to browse through every method of an object or function of a module. But Vims build in engine sucks ass and YouCompleteMe doesnt seem to work that good either (only tested with Javascript, Typescript and Elm). They dont show all the correct identifiers but they do show some other random stuff.
How do you guys manage to be productive? How do you make it show only the usefull stuff?9 -
!rant
Got back into android development recently and while everything was pretty flawless ( I managed to get the basic concepts implemented in a day) something wasn't right.
For some reason I was not happy with the code i wrote, although I took examples from google and tried to adapt their code style. It looked aweful. I hated my code.
But the code itself wasn't the core of the problem. I could easily add new features and replace components with new implementations without breaking the app. All those "good code quality" identifiers were there.
Turn out the problem is Java. Or to be more specific: Java 1.6
Every listener which only calls a single function once a worker has finished needs 6 lines of code. If you implement the inferface in the class it gets messy once there are multiple workers and you have a generic interface. And there are no lambdas!
So I made the switch to Kotlin.
The app was converted to kotlin in 30 Minutes. Android studio can convert the classes automatically and very little manual work is needed afterwards.
After that I spent 2 hours replacing the old java concepts with Kotlin concepts: lamdas, non-nullable types, getters and setters in kotlin style (which in this case is c# style) and some other great thing.
The code is good looking now. I like it. I like kotlin as it has a lot of cool things.
Its super easy to learn. It took me about 2 hours to get into it. It combines concepts from java, javascript, c# and maybe a few other languages to form a modern jvm 1.6 compatible typesafe language.
Android dev is fun again!2 -
When I wrote my first algorithm that learns...
So in order to on board our customers onto our software we have to link the product on their data base to the products on ours. This seems easy enough but when you actually start looking at their data you find it's a fuck up of duplication's, bad naming conventions and only 10% or so have distinct identifiers like a suppler code,model no or barcode. After a week or 2 they find they can't do it and ask for our help and we take over. On average it took 2 of our staff 1-2 weeks to complete the task manually searching one record of theirs against our db at a time. This was a big problem since we only had enough resources to on board 2-4 customers a month meaning slow growth.
I realized when looking at different customers databases that although the data was badly captured - it was consistently badly captured similar to how crap file names will usually contain the letters 'asd' because its typed with the left hand.
I then wrote an algorithm that fuzzy matched against our data and the past matches of other customers data creating a ranking algorithm similar to google page search. After auto matching the majority of results the top 10 ranked search results for each product on their db is shown to a human 1 at a time and they either click the the correct result or select "no match" and repeat until it is done at which point the algo will include the captured data in ranking future results.
It now takes a single staff member 1-2 hours to fully on board a customer with 10-15k products and will continue to get faster and adapt to changes in language and naming conventions. Making it learn wasn't really my intention at the time and more a side effect of what I was trying to achieve. Completely blew my mind. -
Gdpr thing aside...
Does anybody read the new policy...
I just did for 2 apps (intel driver software and 9ga.. You know it)...
On the things that they collected on the side without you knowing include:
9ga:
Device memory, language, battery level, timezone, unique device identifiers, compass, accelorometer and microphone... Even service provider and signal strength
Intel:
Website you visit, how you use your computer(vague too vague) and computing environment.
Did anybody knew for sure before this that their apps are listening to them? That they just made a profile of you with all the data?
With all this they dont even need your ip they already know who you are and what you do on a daily basis...
There are 20 more but it will be waaay too much to write about. These 2 are way worse since 9ga doesnt use microphone for anything... And why a driver reads what websites i am going to?4 -
There is this company that saves your information, before you have even registered.
If you merely fill in a field, they will save it to their database. Not even saving/submitting it, just filling it in.
So when you then visit their store, they already know stuff about you (if you gave enough unique identifiers, like phonenumber or email adress) and recommend stuff based on your browsing of their website5 -
I just don't get people designing database tables using VARCHAR/VARCHAR2 for columns that have numeric values in them, then use them as row identifiers.
I simply don't.
5 -
Apple and its bundle identifiers, APN SSL certificates, provisioning profiles and review process just took a 5 hours of my life.2
-
I wonder if this latest devRant update that includes Rant Types truly is going to be the end of one of our longtime staple identifiers: !rant2
-
> some other team leader reviewing some code I wrote
> "NOOOO NOOOO YOU CAN'T USE ALL UPPERCASE IDENTIFIERS, IT'S BAD PRACTICE, NOBODY DOES THIS"
Today on: people rejecting PRs because they dislike a perfectly valid style for writing enums
8 -
" Under the hood... the program is using a mix of condition-based learning, procedural generation of sentences/questions, and relational queries based on weighted 'topic' identifiers. It can create its own original statements and questions. It is real-time, and it really does 'think' (an internal dialogue feedback loop)." = If Statement
I saw this in the description for an app aclled "Real AI" -
To everyone who writes acronyms in identifiers in all-caps.
Fuck you, you fucking piece of shit.
You're mom's a hoe and so are you.3 -
When I said: "version numbers are cheap", I did not expect you to append new digits and identifiers to the existing versioning scheme.
-
Once usaians stop calling themselves americans they can talk and complain about proper non-misleading identifiers 😘9
-
I know I have a problem with asking for help. I'm aware it's a problem, I want to solve it, and I'm trying, but this is easier said than done.
In my defense however, the issues I'd need to ask for help with are completely absurd. We have a shared Feature environment with a shared database. A push to any feature branch auto-applies migrations to this database, so it's full of broken script output. Tests are supposed to use this database. We do not have full rights to edit this database so we can't try and fix the issues. Instead, the database is reset from production once a week, discarding all changes including anything we deliberately put there for testing. I asked who broke the database and if they could fix it please, somebody responded with freeform text roughly describing the fixes _I should apply to fix HIS TEAM'S mess_, which didn't include any technical identifiers and referred to tables and columns exclusively via vague approximate names.
He then posted a screenshot of an e-mail from about a month ago in which HE complained to MY team lead about how "some people" keep breaking the database, which contained no examples and no suggestions, but was sent immediately after the first time this year that we actually properly broke the shared database. By that point they were past their 10th broken migration that warranted an early restore.7 -
Trying to build a scripting language but realized that it can't even differentiate identifiers and number literals.
-
During my readings of Nim I found a technique known as stropping.
This gives devs the ability to use keywords as identifiers.
Example:
var `var` = "fucking why?"
echo(`var`)
Can anyone tell me WHY would someone subject themselves to such confusion notion? Mind you Nim has large features for macro programming and the creation of dsls, i have not gotten far enough to assess this, but what other use could you highly knowledgeable lads and lasses think of?22 -
An internal application is distributed as "bunch files without extensions". To figure out what types of files they are I need to hexdump each one, look for the identifiers, and then add the extensions…
Who distributes anything without extensions and why? Also how is a non-programmer expected to figure this out? (tool's audience is mainly EPMs)3 -
Level of fuckity fuck mood.
After changing dozens of build plans in Bamboo, the build system of poo...
How to verify that nothing has gone wrong?
Poking the database, you'll be surprised that Bamboo stores the buildplan definition as XML.
Another surprise: Some of the keys / values have typos.
Yeah. You read that right. There are typos inside the XML...
Now together with Postgres, we can use XPATH and have some fun.
UNNEST(COALESCE(XPATH('/configuration/buildTasks/taskDefinition[userDescription[contains(text(),"Bleep")]]', build_definition.xml_definition_data::xml)::varchar[], ARRAY['']))
Lovely wrapping via coalesce for some null safety.
Now we get da task definitions for fields having user description text containing bleep.
Wrapping it in two REGEXP_REPLACE to strip out stupid identifiers....
REGEXP_REPLACE(REGEXP_REPLACE(...., '<id>\d+</id>', ''), '<oid>\d+</oid>', ''))
Then wrap that in MD5.
Boom. Lots of MD5 sums to help you identify if the configs are identical for a task or not.
Now wrapping that in another select to group by the MD5 and filter out the non identical ones.
I hate it how sometimes one has to seemingly do a full 2 hour dance for something as stupid as validation.
I'm pretty glad though for XML and XPATH.
Cause otherwise that would have been a whole can of worms I don't wanna think about....2 -
How do I find all of the AWS resources' arn identifiers? I'm trying write shit in terraform but making granular IAM policies is a nightmare.3
-
Using ReSharper is like becoming enlightened, or de-brainwashing oneself to see true reality. Of my entire dev team, I'm the only one who can see the fnords!
Unused identifiers, badly sorted modifiers, unused property setters, redundant `this`/namespace, redundant casts... Surely if they could see them too, such code would not survive! -
I've been getting a lot of mixed input on this lately and I'm curious to gauge the public opinion on it.
For key identifiers in key/value pairs (eg. days of the week, high/med/low, etc), is it preferable with semantic string naming wherever possible, or are int enums usually preferred for being more clean and robust?
I suppose it's a case of "it depends". I tend to use stringed keys myself since they are more readable but I do think it's a hassle with asserting case insensitivity and how the keys can be accessed as properties - "sometimes, probably".
People often comment on it when they see it, and it turns into this weird mutual "why strings?" vs. "why ints?".2 -
Intelligent Algorithms do not understand role playing, acting or humor.
Combined with permanent unique identifiers issued by social media companies for so-called "security" and moderation reasons, will systematically cause a wide range of serious consequences.
You can not reason with an algorithm.1 -
Chat GPT explains all its versions in a proper way
You said:
Why do suckers that created you made fucking billion inconsistent names? "GPT-3" is ok, "GPT-3.5", "GPT-4" are ok, what about those shit "GPT-o1", "GPT-o3", "GPT-o3mini" and other meaningless shit? Are they stupid or what?
ChatGPT said:
OpenAI's naming is a mess, no argument there. They went from a clear versioning system (GPT-3, 3.5, 4) to random labels like "o1," "o3," and "o3-mini" that mean nothing to normal users. Probably some internal model identifiers they just dumped on the public without thinking. Makes zero sense from a branding perspective.
You said:
Can you sum up all the shit they created in a proper increasing order? "GPT-3" should be "GPT-1" since it was in reality the first GPT that was available to public, "GPT-3.5" should be "GPT-2", etc.
ChatGPT said:
Here's the mess cleaned up logically:
GPT-1 (2018) – Never public
GPT-2 (2019) – First public model, but with limits at launch
GPT-3 (2020) – First real public GPT (should be GPT-1)
GPT-3.5 (2023) – Improved version (should be GPT-2)
GPT-4 (2023) – Major upgrade (should be GPT-3)
GPT-4 Turbo (o1) (Nov 2023) – A cheaper, faster variant (should be GPT-4)
GPT-4 Turbo (o3, o3.5, o3-mini, etc.) (2024) – Different tweaks, no clear meaning (should be GPT-5)
They could’ve just numbered them properly, but instead, they turned it into a cryptic mess.4
