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 - "consistency"
-
This code review gave me eye cancer.
So, first of all, let me apologize to anyone impacted by eye cancer, if that really is a thing... because that sounds absolutely horrible. But, believe me, this code was absolutely horrible, too.
I was asked to code review another team's script. I don't like reviewing code from other teams, as I'm pretty "intense" and a nit-picker -- my own team knows and expects this, but I tend to really piss off other people who don't expect my level of input on "what I really think" about their code...
So, I get this script to review. It's over 200 lines of bash (so right away, it's fair game for a boilerplate "this should be re-written in python" or similar reply)... but I dive in to see what they sent.
My eyes.
My eyes.
MY EYES.
So, I certainly cannot violate IP rules and post any of the actual code here (be thankful - be very thankful), but let me just say, I think it may be the worst code I've ever seen. And I've been coding and code-reviewing for upwards of 30 years now. And I've seen a LOT of bad code...
I imagine the author of this script was a rebellious teenager who found the google shell scripting style guide and screamed "YOU'RE NOT MY REAL DAD!" at it and then set out to flagrantly violate every single rule and suggestion in the most dramatic ways possible.
Then they found every other style guide they could, and violated all THOSE rules, too. Just because they were there.
Within the same script... within the SAME CODE BLOCK... 2-space indentation... 4-space indentation... 8-space indentation... TAB indentation... and (just to be complete) NO indentation (entire blocks of code within another function of conditional block, all left-justified, no indentation at all).
lowercase variable/function names, UPPERCASE names, underscore_separated_names, CamelCase names, and every permutation of those as well.
Comments? Not a single one to be found, aside from a 4-line stanza at the top, containing a brief description of that the script did and (to their shame), the name of the author. There were, however, ENTIRE BLOCKS of code commented out.
[ In the examples below, I've replaced indentation spacing with '-', as I couldn't get devrant to format the indentation in a way to suitably share my pain otherwise... ]
Within just a few lines of one another, functions defined as...
function somefunction {
----stuff
}
Another_Function() {
------------stuff
}
There were conditionals blocks in various forms, indentation be damned...
if [ ... ]; then
--stuff
fi
if [ ... ]
--then
----some_stuff
fi
if [ ... ]
then
----something
something_else
--another_thing
fi
And brilliantly un-reachable code blocks, like:
if [ -z "$SOME_VAR" ]; then
--SOME_VAR="blah"
fi
if [ -z "$SOME_VAR" ]
----then
----SOME_VAR="foo"
fi
if [ -z "$SOME_VAR" ]
--then
--echo "SOME_VAR must be set"
fi
Do you remember the classic "demo" programs people used to distribute (like back in the 90s) -- where the program had no real purpose other than to demonstrate various graphics, just for the sake of demonstrating graphics techniques? Or some of those really bad photo slideshows, were the person making the slideshow used EVERY transition possible (slide, wipe, cross-fade, shapes, spins, on and on)? All just for the sake of "showing off" what they could do with the software? I honestly felt like I was looking at some kind of perverse shell-script demo, where the author was trying to use every possible style or obscure syntax possible, just to do it.
But this was PRODUCTION CODE.
There was absolutely no consistency, even within 1-2 adjacent lines. There is no way to maintain this. It's nearly impossible even understand what it's trying to do. It was just pure insanity. Lines and lines of insanity.
I picture the author of this code as some sort of hybrid hipster-artist-goth-mental-patient, chain-smoking clove cigarettes in their office, flinging their own poo at their monitor, frothing at the mouth and screaming "I CODE MY TRUTH! THIS CODE IS MY ART! IT WILL NOT CONFORM TO YOUR WORLDLY STANDARDS!"
I gave up after the first 100 lines.
Gave up.
I washed my eyes out with bleach.
Then I contacted my HR hotline to see if our medical insurance covers eye cancer.32 -
If Doctors Were Like Coders
(cross-posted from https://medium.com/@c09b6133a238/...)
Problem: The patient has a broken leg.
Solution:
1. Ask the patient to reproduce the exact scenario that resulted in the broken leg. Watch closely to see if the leg breaks again. Check for consistency by repeating the scenario a few more times.
2. Explain that this isn’t an intended use case for the leg, and besides, it only affects one person. Ask the patient if, all things considered, he really wants to prioritize his broken leg over your other work.
3. Point out that the patient’s other leg performs just fine under the same circumstances. Ask if he can use his other leg instead, at least as a workaround.
4. Attach several accelerometers to the broken leg and break it again. Stare at the data received from the accelerometers, then shrug and declare it useless.
5. Decide that the patient’s problem must be in his spleen. After all, that’s the only part of his body you don’t really understand.
6. Track down the people who created the patient. Ask them if he’s ever had spleen problems before. When they seem confused, explain that he has a broken leg. Ignore them when they tell you that the spleen they created could not possibly cause a broken leg.
7. Ask Google where a person’s spleen is. Spend half an hour reading the Wikipedia article on Splenomegaly.
8. Open the patient and grumble about how tightly-coupled his spleen and circulatory system are. Examine the spleen’s outer surface to see if there are any obvious problems. Inform him that several of his organs are very old and he should consider replacing them with something more modern.
9. Compare the spleen to some pictures of spleens online. If anything looks different, try to make it look the same.
10. Remove the spleen completely. See if the patient’s leg is still broken. If so, put the spleen back in.
11. Tell the patient that you’ve noticed his body is made almost entirely out of cellular tissue, whereas most bodies these days are made out of cardboard. Explain that cardboard is a lot easier for beginners to understand, it’s more forgiving of newbie mistakes, and it’s the tissue franca of the Internet. Ask if he’d like you to rebuild his body with cardboard. It will take you longer, but then his body would be future-proof and dead simple. He could probably even fix it himself the next time it breaks.
12. Spend some time exploring the lymph nodes in the patient’s abdominal cavity. Accidentally discover that if the patient’s leg is held immobile for six weeks, it gets better.
13. Charge the patient for six weeks of work.14 -
So, you start with a PHP website.
Nah, no hating on PHP here, this is not about language design or performance or strict type systems...
This is about architecture.
No backend web framework, just "plain PHP".
Well, I can deal with that. As long as there is some consistency, I wouldn't even mind maintaining a PHP4 site with Y2K-era HTML4 and zero Javascript.
That sounds like fucking paradise to me right now. 😍
But no, of course it was updated to PHP7, using Laravel, and a main.js file was created. GREAT.... right? Yes. Sure. Totally cool. Gotta stay with the times. But there's still remnants of that ancient framework-less website underneath. So we enter an era of Laravel + Blade templates, with a little sprinkle of raw imported PHP files here and there.
Fine. Ancient PHP + Laravel + Blade + main.js + bootstrap.css. Whatever. I can still handle this. 🤨
But then the Frontend hipsters swoosh back their shawls, sip from their caramel lattes, and start whining: "We want React! We want SPA! No more BootstrapCSS, we're going to launch our own suite of SASS styles! IT'S BETTER".
OK, so we create REST endpoints, and the little monkeys who spend their time animating spinners to cover up all the XHR fuckups are satisfied. But they only care about the top most visited pages, so we ALSO need to keep our Blade templated HTML. We now have about 200 SPA/REST routes, and about 350 classic PHP/Blade pages.
So we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA 😑
Now the Backend grizzlies wake from their hibernation, growling: We have nearly 25 million lines of PHP! Monoliths are evil! Did you know Netflix uses microservices? If we break everything into tiny chunks of code, all our problems will be solved! Let's use DDD! Let's use messaging pipelines! Let's use caching! Let's use big data! Let's use search indexes!... Good right? Sure. Whatever.
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA + Redis + RabbitMQ + Cassandra + Elastic 😫
Our monolith starts pooping out little microservices. Some polished pieces turn into pretty little gems... but the obese monolith keeps swelling as well, while simultaneously pooping out more and more little ugly turds at an ever faster rate.
Management rushes in: "Forget about frontend and microservices! We need a desktop app! We need mobile apps! I read in a magazine that the era of the web is over!"
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + GraphQL + React + SPA + Redis + RabbitMQ + Google pub/sub + Neo4J + Cassandra + Elastic + UWP + Android + iOS 😠
"Do you have a monolith or microservices" -- "Yes"
"Which database do you use" -- "Yes"
"Which API standard do you follow" -- "Yes"
"Do you use a CI/building service?" -- "Yes, 3"
"Which Laravel version do you use?" -- "Nine" -- "What, Laravel 9, that isn't even out yet?" -- "No, nine different versions, depends on the services"
"Besides PHP, do you use any Python, Ruby, NodeJS, C#, Golang, or Java?" -- "Not OR, AND. So that's a yes. And bash. Oh and Perl. Oh... and a bit of LUA I think?"
2% of pages are still served by raw, framework-less PHP.32 -
Simple 1 day task. This idiot takes two weeks and after 7 days of hounding finally opens a pull request.
I go in to review the code. Should be a simple 10-15 line patch.
13,000 lines of code changed.
THIRTEEN THOUSAND!
"I fixed a bunch of formatting mistakes and replaced all instances of single quotes to double. Consistency is important you know."20 -
It's not that I hate PHP, I just hate the lack of consistency in standard function naming and parameter order, nonsensical attribute access, nearly-meaningless comparison operators, reference handling, case (in)sensitivities, and more!
I mean, look at these functions:
strtoupper(...)
bin2hex(...)
strtolower(...)
And look at THESE FUNCTIONS:
array_search($needle, $haystack)
strpos($haystack, $needle)
array_filter($array, $callable)
array_map($callback, $array)
array_walk($array, $callable)
And let me jUST USE SOME ATTRIBUTES:
$object->attr = "No dollar sign...";
Class::$attr = "GOD WHY";
HOW ABOUT SOME COMPARISONS:
(NULL == 0) // true
(NULL < -1) // ALSO true
Functions AREN'T CASE SENSITIVE (at least variables are).
Wanna dereference? TOO BAD, YOU'LL HAVE TO GET OUT THE TNT.
Alright, yeah, I hate PHP.19 -
1. No more coding on paper! Why can some already write essays on laptops but programmers are stuck with "analog"?
2. No vendor lock-ins! Teach free, cross-platform development, not VB.NET.
3. No more professors stuck in the eighties! If all you know is 6800 assembly, GTFO. I heard NASA was hiring...
4. Enforce code style consistency, proper documentation and even VCS for larger projects
5. Algorithms -> scripting -> programming. Don't quickly explain the basics, then throw students straight into Java.10 -
Still trying to get good.
The requirements are forever shifting, and so do the applied paradigms.
I think the first layer is learning about each paradigm.
You learn 5-10 languages/technologies, get a feeling for procedural/functional/OOP programming. You mess around with some electronics engineering, write a bit of assembly. You write an ugly GTK program, an Android todo app, check how OpenGL works. You learn about relational models, about graph databases, time series storage and key value caches. You learn about networking and protocols. You void the warranty of all the devices in your house at some point. You develop preferences for languages and systems. For certain periods of time, you even become an insufferable fanboy who claims that all databases should be replaced by MongoDB, or all applications should be written in C# -- no exceptions in your mind are possible, because you found the Perfect Thing. Temporarily.
Eventually, you get to the second layer: Instead of being a champion for a single cause, you start to see patterns of applicability.
You might have grown to prefer serverless microservice architectures driven by pub/sub event busses, but realize that some MVC framework is probably more suitable for a 5-employee company. You realize that development is not just about picking the best language and best architecture -- It's about pros and cons for every situation. You start to value consistency over hard rules. You realize that even respected books about computer science can sometimes contain lies -- or represent solutions which are only applicable to "spherical cows in a vacuum".
Then you get to the third layer: Which is about orchestrating migrations between paradigms without creating a bigger mess.
Your company started with a tiny MVC webshop written in PHP. There are now 300 employees and a few million lines of code, the framework more often gets in the way than it helps, the database is terribly strained. Big rewrite? Gradual refactor? Introduce new languages within the company or stick with what people know? Educate people about paradigms which might be more suitable, but which will feel unfamiliar? What leads to a better product, someone who is experienced with PHP, or someone just learning to use Typescript?
All that theoretical knowledge about superior paradigms won't help you now -- No clean slates! You have to build a skyscraper city to replace a swamp village while keeping the economy running, together with builders who have no clue what concrete even looks like. You might think "I'll throw my superior engineering against this, no harm done if it doesn't stick", but 9 out of 10 times that will just end in a mix of concrete rubble, corpses and mud.
I think I'm somewhere between 2 and 3.
I think I have most of the important knowledge about a wide array of languages, technologies and architectures.
I think I know how to come to a conclusion about what to use in which scenario -- most of the time.
But dealing with a giant legacy mess, transforming things into something better, without creating an ugly amalgamation of old and new systems blended together into an even bigger abomination? Nah, I don't think I'm fully there yet.8 -
As a German developer living in Germany, I am used to write my code completely in English. In all of my former companies that was also the norm. In one company, we even talked completely in English with each other to a point where even if only German people where in a room, they would default to English at one point in a conversation because it became second nature to us.
(That company was very international and we had a lot of people from all over the world working there.)
Now, I work at a new German company that focuses on the German market. And for some reason I failed to ask them:
Do you write your code in English?
Because that's the norm, isn't it!? I just assumed it to be the case.
Nope! This time it is a mess of German and English term intermixing in glorious abysmal ways I never thought possible.
Sometimes we translate terms, sometimes we don't. So you have to wrap your mind around collections of words that COULD mean the same thing unless they don't. Best case, you have two words for the same thing, but I've seen up to five words (or abbreviations) to describe one business entity. Madness.
And don't get me started on the plurals. In English, it's almost exclusively: add an `s`.
In German, the singular and plural can be the same (e.g. all nouns ending with `-er`) so tough luck determining if you are on an object or an array of objects. (Weak typing language in use does not help either but that's an entirely different rant.)25 -
Ticket: Add <feature> to <thing>. It works in <other things> so just copy it over. Easy.
Thing: tangled, over-complicated mess.
Feature: tangled and broken, and winds much too deep to refactor. Gets an almost-right answer by doing lots of things that shouldn't work but somehow manage to.
I write a quick patch that avoids the decent into madness and duplicates the broken behavior in a simple way for consistency and ease of fixing later. I inform my boss of my findings and push the code.
He gets angry and mildly chews me out for it. During the code review, he calls my patch naive, and says the original feature is obviously not broken or convoluted. During the course of proving me wrong, he has trouble following it, and eventually finds out that it really is broken -- and refuses to admit i was right about any of it. I'm still in trouble for taking too long, doing it naively, and not doing it correctly.
He schedules a meeting with product to see if we should do it correctly. He tells product to say no. Product says no. He then tells me to duplicate the broken behavior. ... which I already did.
At this point I'm in trouble for:
1) Taking too long copying a simple feature over.
2) Showing said feature is not simple, but convoluted and broken.
3) Reimplementing the broken feature in a simpler way.
4) Not making my new implementation correct despite it not working anywhere else, and despite how that would be inconsistent.
Did everything right, still in the wrong.
Also, they decided I'm not allowed to fix the original, that it should stay broken, and that I should make sure it's broken here, too.
You just have to admire the sound reasoning and mutual respect on display. Best in class.19 -
Rant++
Just want to mention this mother fucker named Allen. Allen is a fuckin' badass. This guy fucks.
This bad mother fucker like single handedly wrote one of the best fuckin libraries for displaying tabular data, and threw in a shit ton of JSON capabilities just to make it that much fuckin' cooler.
And why? Because he fuckin fucks thats fucking why. I already told you.
And does this son of a fuck support his fucking product? You bet your sweet basement dwelling programming fucking ass that he does.
Dude works that support forum like he no doubt works that pussy. With full and complete knowledge and control, but with a gentle mature touch. Fuckin right.
Do you hate PHP? Well this fuck made a Node version? Do you hate Node? Use that shit with pure JS client side. This dude doesn't give a fuck. Don't have a table? Pass that shit JSON and GET A FUCKIN TABLE!!!
Some dipshit in your company needs to edit a database table but there's no way on sweet baby jesus's green earth you're giving that dumb fuck DB creds? Run that dumb fuck up a fully editable admin portal in like 5 fucking minutes because fuck him.
There are few things in my life I love. My corgi and my kids, and most days my wife.
But always fucking DATATABLES.
So, Allen Jardine... just wanted to give you and your product DataTables and Editor a fucking devRant shout out. It continues to be the one ray of light that works as expected and is extremely well supported when it doesn't and some days I just need that fucking consistency in my life man. So thanks.7 -
Team quarterly capacity planning:
- Confluence document created with a big table (+100 rows) by product / business. Each row is something that needs to be worked on for the coming quarter.
- Row 1 could be an Epic with 15 tickets attached. Row 2 could be adding a single log to our analytics. No consistency.
- For each row, we create a separate confluence document with the "technical details". 75% of the time these remain blank. 1% of the time there is something useful, the rest its a slightly longer version of the description from the bigger document.
- Each row gets a high level estimate by the leads. 50% of the time without sufficient background info to actually do get it accurate.
- These are then copied into the teams excel spreadsheet, where it will calculate if we are over/under capacity.
- We will go backwards and forwards between confluence and excel until we are "close enough" to under capacity without being too much.
- Once done, we then need to copy them into the org/division's excel spreadsheet. This document is huge, has every team on it and massive 50pt text saying "Do not put a filter on this document".
- Jira tickets + Epics will now be created for each one, with all the data be copied over by hand, bit by bit, by product. Often missing something.
- Last week, at the end of this process for Q2 (2 weeks late), 6 of the leads were asked to attend a 30 minute meeting to discuss how to group the line items together because we had too many for the bigger excel spreadsheet.
- This morning I was told business weren't happy with one of our decisions to delay one line item. Although they were all top priority (P0), one of them was actually higher than that again (P-1?) and we need to work it back in.
... so back to step 1
- Mid way through Q2, a new document will be created for Q3. Work items that didn't make the cut will be manually copied from one to the other. 50/50 whether anything that didn't get done on time in Q2 will make its way to the Q3 doc.
- "Tech excellence" / "Tech debt" items (unit/UI tests, documentation, logging, performance, stability etc) will never be copied over. Because product doesn't understand them and assumes therefore that they are unimportant.
==================
PS: I'd like to say this was a rare event for Q2, but no. Q4 and Q1 were so bad, we were made assurances from the director of engineering that he would fix this process for Q2. This is the new and improved process (I shit you not) that has resulted in nothing tangible.7 -
Working on a project where the coordinator is insisting on using OneDrive. Lost the link he sent out in an email so decided to:
- Google "OneDrive": Eventually brought me to "office.live.com/...." with a view of my settings and apps ... no OneDrive.
- Spent a while using a bit of logic to click around and find it, forgot logic doesn't work well with MS products and ended up on Outlook instead.
- Spent a while searching for the original email with the link, found it, brings me to "...sharepoint.com/....".
- Inside sharepoint (OneDrive?) the banner says "Office 365".
- But the browser tab says OneDrive.
Are Microsoft just afraid of consistency at this point? I mean seriously, pick a name and use it everywhere. Why is that so hard? why is that so complicated?6 -
I hate React.js with a fucking passion. It sounds great on paper, but once your project gets any size. The mental recursive loops of passing data around is insane. Not to mention keeping consistency a cross metric shit ton of components. How do you manage it?26
-
My first actual rant on devRant:
Fuck corporate companies. Fuck agile development.
In the last 8 months I’ve been with this company, I’ve 1) made the app layout (which was super fucked) compatible with iPad. 2) reduced the apps size by 1/3 of the original size. 3) improved memory usage by double the efficiency, nearly eliminated all memory leaks. 4) gotten employee of the quarter for some of the above mentioned.
After all of this I got a talking to from product manager that “he knows I am a good developer but needs more consistency” after I spent a sprint on one story trying to consolidate front end validation logic and make a “validatableTextField” actually do some validation. So much for the MVVM you promised me.
Also, was promised I’d get some experience with Android, and with a team of 8 devs 6 of which have droid backgrounds and other two are juniors, guess whose only even built the droid project once in 8 months? You guessed it. This company has drained me of all of my knowledge, went against most of its promises to me, and values pushing features to the point of adding tech debt faster than I can solve it.
Unfortunately my personal life relies on this job or I’d quit right away. But you bet your ass I’m passively looking for something and I can’t wait till I get a job offer and quit on these ungrateful hypocrites.5 -
The code is a freaking mess. Shared behavior, terrible variable/method naming, misleading module naming, dynamic polymorphic spaghetti, whitespace errors, no consistency, confusing even if you understand what the code is doing, ... . It should never have passed code review. It probably wasn't code reviewed.
The comments are sparse and useless. Quality level: // This is bridge.
The documentation does not exist.
Testing steps for QA are missing several steps, including setup, so actually using the feature is bloody challenging. If one thing is wrong, the feature just doesn't show up (and ofc won't tell you why).
The specs for the feature are outdated and cover only 4 of 19+ cases. And are neigh useless for those 4.
The specs for the report I'm fixing don't even check the data on the report; it just checks for one bit of data on each row it creates -- a name -- which is also the same on each row. gg.
The object factories (for specs) are a mess, and often create objects indirectly, or in backwards order with odd post-create overwriting to make things work. Following the factories is a major chore, let alone fixing or extending them.
The new type has practically zero test coverage.
The factory for the new type also only creates one variant -- and does so incorrectly.
And to top it all off: the guy who wrote the feature barely ever responds. If he does, he uses fewer words than my bird knows, then stops responding. I've yet to get a useful answer out of him. (and he apparently communicates just fine, according to my micromanager.)
But "it's just fixing a report; it'll be easy!"
Oh, fuck off.8 -
Cringed when I saw camelCase, snake_case, PascalCase and CONSTS (for non consts) in 10 consecutive lines of code! 😖😖😖
I suppose if you don't know which coding style to pick... Just try them all!!!!! 😱7 -
Spend 14 hours a week studying more with my free time.
Things to be studied:
-discrete math
-data structures
-algorithms
-coding challenges
-problem defining
-abstraction
-other relevant maths
Other things I want to improve:
-confidence at work
-reaching out to teams with questions
-social skills
-time management
-enjoying the little things
-patience
-consistency (with everything above)
Last big thing would be being more conscious with what type of data/platforms I am digesting everyday. Just like a good diet I want to get in the habit of consuming “good” useful content that’s thought provoking or knowable rather than fast food social media carbs
Wish everyone a productive New Year!6 -
Can someone just please come over and safe me? I am soooooo done with all this bullshit code. I understand why people loathe PHP, it enables totally worthless people to carry the title 'programmer' because hurrrdurrr look at my website, I made this. Fuck yes, you made that and you should SHAME yourself! What the actual flying fuck I can't begin to explain the monstrosities that I find checking out this worthless pile of fucking garbage.
User passwords saved as plaintext in database? Check!
Using hungarian notation, camecase and snakecase inconsistently? Check!
Typejuggling like you're the mainman of the Insane Clown Posse? Check!
Everything is a mess, there is no documenation, no consistency no nothing, this is straight from the 9th circle of programmers hell.
Aaaaaaarghhhhh I AM SO FUCKING DONE WITH THIS WORTHLESS PILE OF GARBAGE!!!!
The original dev prefixed every spagetthifile with his copyright shite so im gonna look him up and highfive him in the face with my laptop and after that printing out my resignation letter in comic sans fontsize 78 because FUCK YOU
So done.7 -
Taking care of your skin once a week, won't give you better skin.
Just like eating a healthy meal once a week, won't make you skinny.
Changes and improvements take time, effort, but most of all consistency.3 -
Alright, biiiiig rant time.
Shitty webdevs who randomly use an entire framework for some tiny feature in the middle of their codebase because they couldn't figure out how to do it with native and completely fucking up their syntax, consistency and standards set beforehand (not that there were any to begin with, this dude program's like 3-4 people just jumbled all their crap into one massive pile).
Not only that but throughout the entire backend this guy flip-flops on passing an the error value before results in his callbacks, so now i have to check his functions everytime I use them after spending 2-3 sessions debugging to figure out wtf was going wrong.
Please for the love of god, if you wanna dance to your own beat, LEAVE COMMENTS4 -
When it comes to the indentation or look I am fully consistent.
But when it comes to naming I am inconsistent like a crack whore telling she's clean.
Camelcase, underscores inconsistent variable and function names. I use all of them within a single file. On some days I even switch languages.
I truly am miserable in code consistency. Is there any good advice to keep the code consistent?10 -
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).19 -
Could do with some dev input here.
Going to rename most of my projects before I start them up again just for some consistency amongst everything so...
Because I name my projects internally as a different tree for each milestone (1.0 is maple, 2.,0 is pine etc) I'm going to have my other stuff follow a tree related naming scheme, first up is my game engine/framework...
It's currently called the 'Mod Engine' but I have 3 idea's and want to know people opinions
- Woodsman Engine
- Lumberjack Engine
- Lumber Engine
Which is best do you think or can anyone think of any better ideas? :-320 -
PIM systems https://dinarys.com/blog/... provide a centralized location for businesses to store and manage their product data, including descriptions, specifications, images, and other important information. PIM systems are designed to improve the accuracy and consistency of product data across multiple channels, including e-commerce websites, marketplaces, print catalogs, and other marketing materials.
They help businesses ensure that their product information is up-to-date, complete, and relevant to their target audience. Here are some of the key benefits of using a PIM system: Centralized data management: PIM systems provide a single location for businesses to store and manage their product data. This makes it easier to ensure that the data is accurate, consistent, and up-to-date across multiple channels.
Improved data quality: PIM systems help businesses ensure that their product data is accurate, complete, and relevant to their target audience. This can lead to improved customer experiences and higher conversion rates. Increased efficiency: PIM systems automate many of the processes involved in managing product data, such as data entry, formatting, and translation. This can save businesses time and reduce the risk of errors. Greater scalability: PIM systems are designed to handle large amounts of product data and can scale as businesses grow and add new products. PIM systems are particularly useful for businesses that sell products across multiple channels and need to ensure that their product data is accurate and consistent across all channels. They can help businesses improve their operational efficiency, reduce costs, and improve the customer experience.6 -
Can companies please check their address policy for consistency before implementing some bullshit constraints? Literally happened minutes ago:
Me: __enters address "city"__
Website: Hey, I auto-correct your city to "City (Region)"
Me: __submits form__
Website: Whoa there, you can't enter braces in your city name!2 -
Is it too much to ask for companies in the current world to be.. oh I don't know.. honest and consistent?
If you advertise on your Job section: "We always give our candidates feedback, whether they got the job or not". Then, *****, give them feedback! I applied and they never got back to me. And no, that's not feedback.6 -
I think that two criterias are important:
- don't block my productivity
- author should have his userbase in mind
1) Some simple anti examples:
- Windows popping up a big fat blue screen screaming for updates. Like... Go suck some donkey balls you stupid shit that's totally irritating you arsehole.
- Graphical tools having no UI concept. E.g. Adobes PDF reader - which was minimalized in it's UI and it became just unbearable pain. When the concept is to castrate the user in it's abilities and call the concept intuitive, it's not a concept it's shit. Other examples are e.g. GEdit - which was severely massacred in Gnome 3 if I remember correctly (never touched Gnome ever again. I was really put off because their concept just alienated me)
- Having an UI concept but no consistency. Eg. looking at a lot of large web apps, especially Atlassian software.
Too many times I had e.g. a simple HTML form. In menu 1 you could use enter. In menu 2 Enter does not work. in another menu Enter works, but it doesn't submit the form it instead submits the whole page... Which can end in clusterfuck.
Yaaayyyy.
- Keyboard usage not possible at all.
It becomes a sad majority.... Pressing tab, not switching between form fields. Looking for keyboard shortcuts, not finding any. Yes, it's a graphical interface. But the charm of 16 bit interfaces (YES. I'm praising DOS interfaces) was that once you memorized the necessary keyboard strokes... You were faster than lightning. Ever seen e.g. a good pharmacist, receptionist or warehouse clerk... most of the software is completely based on short keyboard strokes, eg. for a receptionist at a doctor for the ICD code / pharmaceutical search et cetera.
- don't poop rainbows. I mean it.
I love colors. When they make sense. but when I use some software, e.g. netdata, I think an epilepsy warning would be fair. Too. Many. Neon. Colors. -.-
2) It should be obvious... But it's become a burden.
E.g. when asked for a release as there were some fixes... Don't point to the install from master script. Maybe you like it rolling release style - but don't enforce it please. It's hard to use SHA256 hash as a version number and shortening the hash might be a bad idea.
Don't start experiments. If it works - don't throw everything over board without good reasons. E.g. my previous example of GEdit: Turning a valuable text editor into a minimalistic unusable piece of crap and calling it a genius idea for the sake of simplicity... Nope. You murdered a successful product.
Gnome 3 felt like a complete experiment and judging from the last years of changes in the news it was an rather unsuccessful one... As they gave up quite a few of their ideas.
When doing design stuff or other big changes make it a community event or at least put a poll up on the github page. Even If it's an small user base, listen to them instead of just randomly fucking them over.
--
One of my favorite projects is a texteditor called Kate from KDE.
It has a ton of features, could even be seen as a small IDE. The reason I love it because one of the original authors still cares for his creation and ... It never failed me. I use Kate since over 20 years now I think... Oo
Another example is the git cli. It's simple and yet powerful. git add -i is e.g. a thing I really really really love. (memorize the keyboard shortcuts and you'll chunk up large commits faster than flash.
Curl. Yes. The (http) download tool. It's author still cares. It's another tool I use since 20 years. And it has given me a deep insight of how HTTP worked, new protocols and again. It never failed me. It is such a fucking versatile thing. TLS debugging / performance measurements / what the frigging fuck is going on here. Take curl. Find it out.
My worst enemies....
Git based clients. I just hate them. Mostly because they fill the niche of explaining things (good) but completely nuke the learning of git (very bad). You can do any git action without understanding what you do and even worse... They encourage bad workflows.
I've seen great devs completely fucking up git and crying because they had really no fucking clue what git actually does. The UI lead them on the worst and darkest path imaginable. :(
Atlassian products. On the one hand... They're not total shit. But the mass of bugs and the complete lack of interest of Atlassian towards their customers and the cloud movement.... Ouch. Just ouch.
I had to deal with a lot of completely borked up instances and could trace it back to a bug tracking entry / atlassian, 2 - 3 years old with the comment: vote for this, we'll work on a Bugfix. Go fuck yourself you pisswads.
Microsoft Office / Windows. Oh boy.
I could fill entire days of monologues.
It's bad, hmkay?
XEN.
This is not bad.
This is more like kill it before it lays eggs.
The deeper I got into XEN, the more I wanted to lay in a bathtub full of acid to scrub of the feelings of shame... How could anyone call this good?!?????4 -
As I was browsing pornhub, I started reading articles about AI, dick still in hand, and went down the rabbit-hole (no pun intended) of self referential systems and proofs. This is something I do frequently (getting off track, not beating off, though I have been slacking recently).
Now I'm no expert but my neurotic DID personality which prompted this small reading binge DOES think it is an expert. And it got me thinking.
Godel’s second incompleteness theorem says that "no sufficiently strong proof system can prove its own consistency."
Then utilizing proof by contradiction, systems that are "sufficiently strong" should produce truth outputs that are monotonic. E.g. statements such as "this sentence is a lie."
Wouldn't monotonicity then be proof (soft or otherwise) that a proof system is 'sufficiently strong' in the sense that Godel's second theorem meant?
Edit: I WELCOME input, even if this post is utterly ignorant and vapid. I really don't know shit about formal systems or logic. Welcome any insight or feedback that could enlighten me.1 -
Fucken Designers - Have you ever heard of fucken consistency?
Different looks and feels for the same thing in every single page? Wat the fuck man - I am trying to write clean and modular code for components and you guys are making hard -
Bomb Alert:
Fuck Designers *middle finger*6 -
IMHO technical dept is kind of like smoking cigarettes for some decades.
You were told that shit will hit the fan but you do not take proper action. And one day you'll realize that you fucked up (or not, also seen that).
Worked for a company in IT, where we maintained an ERP which was "in progress" for over a decade. The basic implementation was done by people with zero technical understanding. To clarify: not self coded. Software was bought. We are talking about integrating the system.
Therefore, the foundation was like a wet noodle. When I joined that company, I told them that they need to address that. I told them that things will get slower and slower and that shit will hit the fan if no proper actions taken.
Even made a list with flaws I found. With potential risk and actions to take, that could then be measured.
At that time, five people worked in said department (including me).
People did not want to listen. "Would be too expensive to rewrite stuff".
Nothing has changed about the wet noodle, but I tried to fix as many things in a working system as I could. Felt like heart surgery, because changes got implemented and "tested" in prod. No version control, no documentation, everyone implemented things like they felt (no guidelines for consistency).
A lot of small fuckups that summed up over the years.
I left the company after two years because I had the chance to land a job as a dev.
Been around two years now since I left. Now 9 people work in that department with around the same efficiency as us 5 people back then.
The new employees struggle to be productive, because things are just implemented poorly and not maintainable anymore.
Had some dialogs with them some time ago. Everything I told them would happen, actually happened. What a suprise :-|
I will not go into too much detail about all the shit that's going on there, as it would be just too much (and my morning coffe is almost finished).
I think that we all know the difference between "not beautiful, but does the job" and "oh, that will backfire - badly". And I wish that my communication skills increase so that people start listening in future.8 -
As I was refactoring a class in a TypeScript project, I changed calls from `this.config` to `this.getConfig()`.
Suddenly, the tests were failing as somehow the live credentials were used from within the test.
Digging deeper I discovered this.
interface Base {
public config;
public getConfig();
}
So far so good. Wondering why config needs to be public, though nothing too shabby, let's look further:
class MyImpl implements Base {
constructor() {
this.config = this.getConfig()
}
getConfig = () => someGlobalVar;
}
┻━┻︵ \(°□°)/ ︵ ┻━┻
Why would you do this? This breaks dependency injection completely.
In the tests, we were of course doing:
testMe = new MyImpl();
testMe.config = testConfig;
So even though you have a getter, you cannot call it safely as the global var would take precedence. It's rather used as a setter within the constructor. WTF.
Sad part is that this pattern is kept throughout the entire codebase. So yeah for consistency!?
(And yes, I found a quick workaround by doing
getConfig = () => this.config || someGlobalVar;
though still, who in their right mind would do something like this?)1 -
Hey everybody been a while but I have a rant. Swift fucking swift and IOS dev. Okay so been learning swift for some frontend casual work, no worries they are lending me a mac to work in.
Now comes the rant part IOS is fine to work in I dont have any qualms about platform but.. FOR THE LOVE OF COMMON FUCKING SENSE GET SOME FUCKING CONSISTENCY.
You have made swift statically typed language to supposedly make developing more consistant and better fine no worries i dont like static typed languages cause they are unnecessary but fine. then you go NAH FUCK IT EVERYTHING IN A MODULE IS IN GLOBAL SCOPE, FUCK IMPORT STATEMENTS, FUCK MAINTAINABILITY AND FUCK YOU FOR ASKING.6 -
For all the hate against windows I built over the now 8 years using linux as my main os. Now I feel windows 10 is quite good.
I got a little beefier desktop lately, been using just laptops from the last 8 years(8D) so I got this urge to get a desktop for gaming, I bought an entry level machine. ryzen 5 2400g, put my lovely linux mint and... the fucking machine was hanging up when the load was too high, and the load was too high too often because react/node etc.
I gave up in less than a day, I just did a quick search and some people said about secure boot or whatnot, some other claimed that ryzen cpus had no problem with mint, I got fed up quickly and did not try any solution with linux. Then I installed windows 10, installed the godamned drivers from the provided dvd ... since then it was a breeze.
The dark mode is gorgeous and no hanging up at all... I'm just sad that mint did not worked soo well. I wanted to have consistency between my laptop/desktop and I loved mint above everything. But well, some things improve while you're not looking at them, win 10 is quite good, I'll keep my desktop as gaming/programming pc with win 10, and well, the laptop will be auxiliar programming machine.
¯\_(ツ)_/¯4 -
!Rant But this is hilarious 😂
Appraisal interview of Gayle:
Gayle:- Sir, I scored 211 Runs in 118 Balls. I made the team win the crucial match. I should get “A” rating.
Management:- You hit 17 Sixes and 23 Fours. Though, that is good but that is not something new you have done. That is why we hired you. As this is not something new, I will mark it as “Innovation Lacking”.
Gayle:- But sir, I played according to the situation. I took 21 singles as well.
Management:- Exactly, your performance is not consistent. You played 15 Dot Balls as well. This means, you failed to optimize the resources.
Gayle:- But…
Management:- Also, I would like to mention that you are not a team player. The whole team scored 112 and you all alone made 211.
Gayle:- What??
Management:- Yes. So, overall, you are getting a “C” rating for the year. Improve Consistency, Innovation, Utilization and Team Work...1 -
Me: Oh, man, there are hooks for react-redux now? I don’t have to wrap components in a higher order component to get information from the redux store and dispatch actions? Could this solve the problem I’m having with data fetching and consistency in the app I’m working on?!
Spends entire Saturday writing a basic server, connecting to an mLab instance, filling said instance with dummy data, starting a create-react-app, writing a reducer, action creators, components, etc. just to test how useSelector(), useEffect(), and useDispatch() would work in an application that isn’t just a simple counter (why is it that like every example is always the counter example?!). Bonus, react-router now ALSO has hooks, so got to play with useHistory() and useParams()
Conclusion: Maybe. It does appeal to me to not have the cascade of virtual DOM that you always get nesting HOCs, but I’m also wary of appearing too willing to jump on it just because it’s the new thing.
Has anybody else played around with react-redux hooks? Your thoughts?
Also, yes, I know, not every app needs redux. It had it when I was brought on and I don’t really have the ability to change that implementation detail now.3 -
1. Nothing lasts forever and you always need to be prepared for change.
That might be technology acquired by other company and dropped completely by all of people or new technology take over the market for a year and is gone after that and no one remember about it.
2. If you go opposite way then all of people around you that might be actually the best way.
That learned me to always look around for new stuff cause this small stuff that people make today can be big company next day just cause they got annoyed by things and start something new.
3. Trust nothing that you see.
Bugs are everywhere
4. Quality and speed doesn’t matter when you start doing something but consistency matters a lot.
When you start doing something you suck and you need to be ok with fact that you’re going to make lots of stupid mistakes and learn from them.
When you start new prototype you don’t need dozen tools to finish it, you don’t need performance or perfection, you need consistency to finish it.
Good luck -
You say UI (yoo I) but you say GUI (goo ey)
You say Char ( ch-r) but you say character (keh-recter)
You say gif but you say jif12 -
story - u get a new job, u really like the boss and work env, have been assigned a v ambitious project.. which involves v critical deploy control, data backfills and multiple level of integrations, takes 2 quarters to complete, in the mean time ur fav boss left for a better job and new boss doesn’t seems to understand the gravity of the project and thinks u r just sitting there twinkling fingers...anyways fast forward to d-day : deploys go fine everything working great... time to run some post deploy scripts for some data consistency, a single change to another piece of code done by some one else 2 days back triggers an additional logic and damn suddenly the app users loose ownership to part of the data they owned... u run history reports, do data loads to assign them back, some data errors out, u r about to manually set that up - u drop ur laptop from ur table and it refuses to restart - and all the Prep data is gone and all the scripts are gone and it’s a weekend so no IT Sypport... u r without a laptop for next 24 hours... the struggle continues... next update on Monday1
-
The state of digital comic book metadata is a mess. There is not really a standard format if the metadata even exists at all. All digital comic books consist of is a zip or rar with ordered images and potentially some type of file to store metadata. The closest thing to a standard is the Comic Rack format of metadata and even that is not very widespread. There exists a project called comictagger(on github) that attempts to assign metadata in Comic Rack format but it is somewhat unpolished yet provides a solid feature set.
I am planning on making a program to organize comics based on metadata attributes and am frustrated with the lack of consistency in this department. This isn't really a problem because of any developers but I would argue more so due to the organization of comic books themselves. For example, the term volume can have a different meaning based on who is asked or what context is used. The redundancy between issues and trade paperbacks can also lead to confusion and logistical problems. I just wish we already had a widespread schema in place for comic books metadata already.9 -
A toss up between Apple and Microsoft...
Apple I use to love because I used an iPhone exclusively and loved iOS but the more and more I moved into the cloud. The more and more I started hating the lack of online tools like word processing and the like so eventually led me to disliking them but now I hate them exclusively because of there hardware fragmentation, the lack of consistency between there hardware really irritates me...
And Microsoft came from in an instant, I use to love windows and use it exclusively but as soon as I discovered Linux and got my first taste of it through Ubuntu I started hating windows compared to Linux but now I hate the company because of their two faced ways, will state they support the open source community yet only throw actual support when they clearly can't be beaten and give in...
(Can feel the hate coming my way so all good!)3 -
Write an app or design a toilet that checks consistency of my poop and tells me what to eat
Suggestions are welcome on what to call it11 -
It's not the "age of AI" you dissecated nutsack munching buffoon, you could lick and suckle my delicious tits with that grandiose old tongue you have, if only it wasn't so profoundly infected with feces of every consistency and color.
Your word, for the two shits it's worth, is still better spent elsewhere than promoting falsehood, giving importance to that which has none, or spreading the belief that a demonstrably unscalable approach still has, somehow, room to grow. It's no fucking s*ndrome but full on imp*sterhood, truly a grand fellowship of pauseless jackoffs.
This is it -- a glorified, disobedient, largely unpredictable autocomplete. A probabilistic bullshit machine. It wouldn't be able to replace you, if only you weren't so fucking stupid.
And yes, I *am* contradicting myself by addressing the incredibly cost inefficient overclocked melting minerstack in the room, but I can hardly make the point without doing it, so shush.
Back to the stone age with this shit. Now pass the fucking joint.1 -
Can we all start using error codes for apis? I'm so sick of doing a reg exp check to see if the word "failed" is in your return message and having to change it every time you feel like updating the language.2
-
Numbers implementation in so many freaking languages!!!
Lack of naming consistency, and meaning.
And yes, setImmediate and setTimeout 0...
But the biggest feature issue is that people can code without thinking!!! There should be some hardware security to impede stupid fucks from committing code...1 -
For God's sake why can't you just keep consistency across your fucking files? I have to parse 3 different XML files from the same source where I have "ZipCode", "zipCode" and "Code" for the same thing.
Not to mention that the file that contains all the streets in the country have literally one street node for every motherfucking street. Not one city parent and multiple street children that would make sense and would be faster to parse, but clearly that wasn't your intention you retarded cunt.2 -
I'd like to use snake case like everywhere. Got that from rust.
Now in typescript, but seeing libraries and baseline core libraries in camel case, I end up going back to camel case.
I guess consistency is more important to me4 -
God damnit!!
Just got a team assigned for the course I follow and the codebase they work looks like someone shit on the floor and dragged it all over place. No consistency, no clear structure.
The project has to be built in PHP (which is fine by the way) following the principles of MVC. Did I say the codebase looks like shit all over the place? Well that's exactly what it is!!
They use $_SERVER['DOCUMENT_ROOT'] everywhere!! In every fucking file!! Why the FUCK would someone possibly want to do that??
I know I'm not perfect, but what the fuck!!
Now comes the most weird thing. They have to work on a remote server without SSH access, so working with FTP is mandatory. This is because the school won't setup ssh. That's fine by me, but because of that they don't use git!! They upload files directly to the production server. They merge everything manually. I asked why they didn't use git and the answer was so fucking SHIT!! "Because the teacher wants to see who uploaded to the server.."
First off all: what happened to git blame? Second: Later I heard that there is only one FTP account, so all the things they said where just bullshit!!
The fuck.
Tomorrow I'm going to try and convince them to use git..1 -
So, if you were supposed to work on a website that is already pretty shitty coded, shitty styled and outdated... Would you go on coding like shit for the sake of consistency or would you embed a new mini-system in it trying to pay some fucking respect to everything you have learned?
Edit: in this scenario, you can actually make a choice haha7 -
Got another one of my boring questions for us all to hopefully discuss a little.
With all the talk about the Librem 5 starting to ramp up more and with my little delve into UBports, was curious as to what other devs would be interested in/want/need from a mobile Linux operating system.
For me it's simple but mostly creature comforts.
1. Consistency and convergence, give me the ability to run a full desktop environment along side the mobile DE but make it consistent between the two (Looking at you Microsoft with your continuum)
2. Doesn't loose the customisability of Linux, let me install any Linux application I want and customise the theme and icons (Something I have a gripe with UBports)
3. Have accompanying operating system with an echo system, so have a wearable OS, a desktop OS and mobile OS, having that tie between the 3 is amazing as a heavy android and chromeOS user.
Would love to bring some of these things to reality but don't have any knowledge of how to do it, personally would love to see elementary OS have a crack at this (Wont happen but got to deam!)2 -
Ok, so I need some clarity from you good folk, please.
My lead developer is also my main mentor, as I am still very much a junior. He carved out most of his career in PHP, but due to his curious/hands-on personality, he has become proficient with Golang, Docker, Javascript, HTML/CSS.
We have had a number of chats about what I am best focusing on, both personally and related to work, and he makes quite a compelling case for the "learn as many things as possible; this is what makes you truly valuable" school of thought. Trouble is, this is in direct contrast to what I was taught by my previously esteemed mentor, Gordon Zhu from watchandcode.com. "Watch and Code is about the core skills that all great developers possess. These skills are incredibly important but sound boring and forgettable. They’re things like reading code, consistency and style, debugging, refactoring, and test-driven development. If I could distill Watch and Code to one skill, it would be the ability to take any codebase and rip it apart. And the most important component of that ability is being able to read code."
As you can see, Gordon always emphasised language neutrality, mastering the fundamentals, and going deep rather than wide. He has a ruthlessly high barrier of entry for learning new skills, which is basically "learn something when you have no other option but to learn it".
His approach served me well for my deep dive into Javascript, my first language. It is still the one I know the best and enjoy using the most, despite having written programs in PHP, Ruby, Golang and C# since then. I have picked up quite a lot about different build pipelines, development environments and general web development as a result of exposure to these other things, so it isn't a waste of time.
But I am starting to go a bit mad. I focus almost exclusively on quite data intensive UI development with Vue.js in my day job, although there is an expectation I will help with porting an app to .NET Core 3 in a few months. .NET is rather huge from what I have seen so far, and I am seriously craving a sense of focus. My intuition says I am happiest on the front end, and that focusing on becoming a skilled Javascript engineer is where I will get the biggest returns in mastery, pay and also LIFE BALANCE/WELLBEING...
Any thoughts, people? I would be interested to hear peoples experiences regarding depth vs breadth when it comes to the real world.8 -
When the CTO/CEO of your "startup" is always AFK and it takes weeks to get anything approved by them (or even secure a meeting with them) and they have almost-exclusive access to production and the admin account for all third party services.
Want to create a new messaging channel? Too bad! What about a new repository for that cool idea you had, or that new microservice you're expected to build. Expect to be blocked for at least a week.
When they also hold themselves solely responsible for security and operations, they've built their own proprietary framework that handles all the authentication, database models and microservice communications.
Speaking of which, there's more than six microservices per developer!
Oh there's a bug or limitation in the framework? Too bad. It's a black box that nobody else in the company can touch. Good luck with the two week lead time on getting anything changed there. Oh and there's no dedicated issue tracker. Have you heard of email?
When the systems and processes in place were designed for "consistency" and "scalability" in mind you can be certain that everything is consistently broken at scale. Each microservice offers:
1. Anemic & non-idempotent CRUD APIs (Can't believe it's not a Database Table™) because the consumer should do all the work.
2. Race Conditions, because transactions are "not portable" (but not to worry, all the code is written as if it were running single threaded on a single machine).
3. Fault Intolerance, just a single failure in a chain of layered microservice calls will leave the requested operation in a partially applied and corrupted state. Ger ready for manual intervention.
4. Completely Redundant Documentation, our web documentation is automatically generated and is always of the form //[FieldName] of the [ObjectName].
5. Happy Path Support, only the intended use cases and fields work, we added a bunch of others because YouAreGoingToNeedIt™ but it won't work when you do need it. The only record of this happy path is the code itself.
Consider this, you're been building a new microservice, you've carefully followed all the unwritten highly specific technical implementation standards enforced by the CTO/CEO (that your aware of). You've decided to write some unit tests, well um.. didn't you know? There's nothing scalable and consistent about running the system locally! That's not built-in to the framework. So just use curl to test your service whilst it is deployed or connected to the development environment. Then you can open a PR and once it has been approved it will be included in the next full deployment (at least a week later).
Most new 'services' feel like the are about one to five days of writing straightforward code followed by weeks to months of integration hell, testing and blocked dependencies.
When confronted/advised about these issues the response from the CTO/CEO
varies:
(A) "yes but it's an edge case, the cloud is highly available and reliable, our software doesn't crash frequently".
(B) "yes, that's why I'm thinking about adding [idempotency] to the framework to address that when I'm not so busy" two weeks go by...
(C) "yes, but we are still doing better than all of our competitors".
(D) "oh, but you can just [highly specific sequence of undocumented steps, that probably won't work when you try it].
(E) "yes, let's setup a meeting to go through this in more detail" *doesn't show up to the meeting*.
(F) "oh, but our customers are really happy with our level of [Documentation]".
Sometimes it can feel like a bit of a cult, as all of the project managers (and some of the developers) see the CTO/CEO as a sort of 'programming god' because they are never blocked on anything they work on, they're able to bypass all the limitations and obstacles they've placed in front of the 'ordinary' developers.
There's been several instances where the CTO/CEO will suddenly make widespread changes to the codebase (to enforce some 'standard') without having to go through the same review process as everybody else, these changes will usually break something like the automatic build process or something in the dev environment and its up to the developers to pick up the pieces. I think developers find it intimidating to identify issues in the CTO/CEO's code because it's implicitly defined due to their status as the "gold standard".
It's certainly frustrating but I hope this story serves as a bit of a foil to those who wish they had a more technical CTO/CEO in their organisation. Does anybody else have a similar experience or is this situation an absolute one of a kind?2 -
Lately programs have been crashing a lot on my pc, I've tried different things like disabling SWAP for a sec, BIOS changes, remove firefox and use Google Chrome, try different commands, it kept happening.
Obviously along the way I started investigating what was causing these crashes, looking through bug reports and my syslog. There was no consistency, except for 1 thing: SIGENV. Everything that crashed had a segmentation fault, now I'm not an expect and I don't know what this means or how to fix it, so I went to Google to ask for answers.
Then I downloaded memtest and ran a memory test, error palooza. Then I went to Windows and ran memory check, error palooza.
This is week 3 of this high-end gaming pc which was a huge investment AND IT HAS BEEN FUCKING WITH ME BECAUSE OF BAD MEMORY HOW THE FUCK DOES THIS HAPPEN I ALMOST STARTED TO DOUBT UBUNTU BUT IT WAS A FUCKING FAULT IN BRAND NEW MEMORY MODULES WHAT THE FUCK.
Obviously I'm pissed off. Today I'm gonna call the store that assembled it to voice my complaints.
Thank you for listening to my TedTalk.13 -
Web developers, how long does it take for you to make a responsive web page?
Let's say the page is a fancy one with lots of images and gradients and buttons and wavy section dividers with little to no consistency.
It's been 2 days and I'm still far from completing one.15 -
Yesterday I wanted to make a small infographic. I started with photoshop, switched to illustrator, then indesign, then back to illustrator. All of them have super shitty quirks when it comes to work like that.
Next time I will just build it as a website and screenshot it. Elegance of code-based design is just unmatched. It brings reusability, consistency and precision to another level.4 -
My job is decent, but now I've got one developer who's been there a few months longer than me who pushes back on stuff that's considered standard, good practice.
We have a domain with lots of business rules. He's opposed to any sort of domain-centric architecture that puts business logic in one place. He doesn't give any coherent reasons. He can't describe his alternative clearly. He just wants to put stuff all over the place.
If I don't cite any references he says it's just my opinion. If I do, I'm talking down to him.
Then he decided that the database shouldn't have concurrency checks. His reasoning is that as the application grows we'll have more and more concurrent updates, and they all have to succeed.
What if that corrupts our data? He mentions "eventual consistency." which has nothing to do with what we're talking about.
The idea that our code should carefully ensure that our data is correct is "extreme." What are we going to tell people when bugs happen? That expecting the application to work correctly is extreme?
He's not a terrible developer. He's an advanced Expert Beginner. He's convinced himself that whatever he doesn't already know isn't worth knowing. That's fine if he wants to stop learning, but this affects the whole team. He makes such a fuss that it everyone gets stressed out and eventually I have to back off.
The problem is that someone with a reasonable degree of competence can pass off his experience as superior to all knowledge from outside sources.
I've been doing this as long as him. I don't claim to be a rock star genius, but I do keep learning. I don't tell myself that I've reached the pinnacle. But all of that learning goes to waste if I can't use it.3 -
Welcome to post 2 of WHY WOULD I WANT TO WORK WITH YOU?, a saga of competence, empathy and me being dick, even tho I didn't want to be one.
This is a follow-up to: https://devrant.com/rants/2363374 It's title is: "Oh, you can post only every 2h. Didn't know that". I also didn't know that the rest of my rant would be put into a comment. For consistency tho, this time I am still splitting the story.
A wise person once wrote in their book: "People judge other people by two things: Empathy and competence." This may not be an accurate quote, but it carries the same message. Also, I don't really remember who was the author. I only know they were probably quite wise. Anyway, I just wanted to share that sentence. Have a moment and think about it. Or don't. Here's my story:
A was a software house that looked pretty promising. They were elegant, their page and offer looked nice. Well, unless you consider the fact that they offered me internship. Unpaid. But I decided to meet with them anyway, since I had hope that I could negotiate some sort of paid internship or a job contract even. I did my homework after all, and I was confident I am able to keep up with their requirements. I arrived a little bit... no, way to early. One damn hour. Whatever, I waited. I was greeted by a woman. We had a cultural conversation, she had a list of 12 questions I needed to answer, as a form of a test. We begun. First question: How do you change a value in Oracle Database? "Wait a minute", I thought, "What kind of question is that?". Why in seven hells would you want your frontend developer to know how to handle oracle db? Well, I gave my answer, I did lick some of that SQL in my life. Next question: Java stuff. The bloody gal didn't even care to check what position I am applying to before the interview! At this point I didn't really have very high hopes. A shame on them forever.
The story of B and C is connected and a little bit more complicated. More on that in part 2. B stands for Bank. A big corporation then, by definition. A person I know decided called me that day and told me they're hiring, that he referred me and that they would like to arrange a meeting. And so we did. It was couple of days before Christmas. C was a software house again. Or a startup. Idk really. Their website wasn't finished so I couldn't read anything useful up on them. They didn't tell me much about themselves either. They also started with "unpaid internship".
In C, they would greet me and instantly sit me down next to a mac laptop and told me, "hey, do this stuff in python". What the fuck, not again... I told them that I am frontend dev, they guy said "it's no problem, you said you know python, it's a simple task". And yeah, I did host some apps in Flask and I did use psycopg2. It was in my CV. But never, ever, have I mentioned knowing heuristics nor statistics. I'm no data scientist, monsieur. Whatever, I tried, I failed a little bit, I told them that maybe if I did want to spend half of my day there I would finish this task, but back then I was way too nervous to focus and code. I told them what should be done in code and that I just was unable to code this at the very moment. They nodded, we said goodbye and I was sure not to hear from them ever again.
In B, I was greeted by a senior frontend dev. He told me the recruiter is sick and he couldn't come, so we're talking alone. I can buy it. We sat down in said meeting room, and he asked me if I wanted a drink. No thx, I had digested so much caffeine during last 24h, next dose could be an overdose. And then, he took out my resume printed in paper. With notes on it. With some stuff encircled. That bloody bastard did his homework. We spent over an hour, just talking in friendly atmosphere. It was an interview, but it was a conversation also. We shared our experiences, opinions and it went just perfect.
On December 20, I was heading home for Christmas. My situation looked like this: A called me they could offer me only unpaid internship. I was getting kinda bored of rice and debts, tbh. I gracefully rejected their generous offer. B didn't give me feedback yet(it was a most recent interview, so I didn't expect any message until after Christmas anyway). C told me that they could give me internship, but I managed to convince them to make it paid internship. After three months of very bad times, things were starting to get better.
On part III we will explore further events of my very recent past. That post will be same amount of storytelling and possibly a lesson for those who seek an employer and for those who seek an employee.6 -
Me vs Myself
I lack of consistency in my life.
Except job, I work on single project for more then four years now.
Besides that I struggle so much to finish things I started or do one thing everyday or even every week for more then one month.
Trying to improve myself but it’s so hard and I don’t know when and how I lost this whole consistency I had that made me good self thought developer. Some people said best they’ve seen but I think I have a lot to learn.
It’s not that I don’t want to continue doing things I started previous day but my narrative self is harassing me so much that I don’t have vital power left.
Whenever I try to fight back it makes me weak and I can’t get up from bed so I lay and wait.
Sometimes I lay whole day and just wait.
When I do nothing my narrative inner voice find me instantly 100 other interesting things to do that make me excited, like:
- let’s check mail - oh new <picks technology> framework let’s try it,
- let’s check news
- let’s see how much <picks something> cost because you want it, buy this thing or you’re gonna die
- go out with this <picks a girl> or you’re gonna die alone
- hey <picks something> is cool let’s see how it works
- hey this <picks some problem> is cooler then the one you’re working on,
- how about to call <picks someone>
- how about go out it’s nice outside
- let’s cook this thing today you need to go to grocery
I don’t know how I figured out I need do nothing and wait to fight myself and do what I started not what my narrative voice want me but I see whole slightly improving now and doing nothing helps a lot.
It makes me focus on things I really want to do not things that are just waste of time.
Anyway thanks if anyone got to the end of this stupid story.
Have a nice day. Keep dreaming.
Peace ✌🏽1 -
If i was to start coding today with all the things that are available right now i would be super humbled and would have learnt very quickly .
If you are a beginner and want to get started in coding the first thing you should do is just start.
Coding is all about practice and consistency.
Dont give up
Make google your best friend .
Try to google like crazy and you will be able to get answers to almost any damn question. -
Just had a so called "cyber security" seminar in college today.
The guy who claimed to be a trainer or somewhat network security guy or something behaved enigmatically with utter consistency. He obviously claimed to know facebook hax0ring though.
They were basically there to advertise their complete crap: csksrc.org
(Ethical Hax0ring Course) (also claimed their site to be 99.9% secured - GREAT!)
After obtaining a ISO*** standard cert or after taking multiple sessions on "advanced ethical hacking" if you go about telling peeps in colleges that: "The single way to hax0r a facebook account is CSRF!" "Will hack your facebook account by MITM through malicious WiFi Ap." Then, NO neither I want your shitty cert nor do I want to be in your team and create the next level of "advanced ethical hax0ring - CEH course". Reason why I get cringed when peeps start about their certs and the ISO*** value it contains. What ISO value does your brain cells contain though? -
There have been a few :)
If say it's a videos utter project I initially though was good. Apart from loading a view the controllers didn't do anything - my initial thought was some magic was happening behind the scenes.
However, when I opened up the view things changed.
ALL the business logic happened in the view. Everything. Form processing, consuming an app, file uploads, validation, crud ... You name it, it happened in view. The developer created a raw MySQL connection and build his queries by concatenation g strings, the whole system was wide open to sql injection.
Even more annoying was the "source control" he invented. Every file had several copies. I.e. "User(working).php", "user_v3.php" and even "user(working_no_profile_fields_1.php". It wasn't even like there was any consistency in what file was actually used either. A complete mess. The system had around 69 screens too. No idea how the developer got that gig.2 -
What I hate most about OpenSource is consistency; command on Win10 New-AzureRmVm on Linux New-AzVm. Stop, that's microsoft, I hate that about Microsoft.
-
C# Collection class had me pulling my hair out for hours the past two days.
With a list, you can do new List<T>(IEnumerable<T>) and it creates a new list with the contents of the parameter in it.
With new Collection<T>(ICollection<T>), however, the new object is a reference to the parameter passed in.
Is it just me, or does that seem fucking bonkers?2 -
Context:
I recently joined a team and we are working on a fairly large mobile app using RN, they started a month ago. And I noticed, they don't have any fucking tests and static typings like Typescript.
I have this pretentious team leader that acts like he's the BeSt dEveLopEr in ThE woRld, and act like he always know what he's doing. But in reality, he code like crap, the formatting is shit because the ESLint config is not working, he's not even aware of it until I've fixed it. He's using every BAD Practice available, unused variables and imports are scattered everywhere, etc. And the directory structure is crap and no consistency.
How can I convince this ignorant mofo to use tests and typescript? He believes that adding those will take us longer and cost more money to the client, based on my experience, this is not the case, it's only slow on the first 2 weeks and it is worth it in the long run.13 -
Email list on phone this morning from our new Synology Rackstation.
Main Synology1 Consistency check of storage.....
Dear User, The Consistency check of storage p.....
Me freaking out opens email while holding breath.
Dear User,
The Consistency check of storage pool 1 on <name> has ended. No abnormality has been found .
WTF by default they could lead with, "No abnormalities were found while doing the consistency check on pool1."
sacred the crap outta me, now gotta go in and change that NOW. -
In the same test file, 3 different tests, same field…
assert thing.is_blue
self.assertTrue(thing.is_blue)
assert thing.is_blue == True
…and of course other tests…
assert not thing.is_blue
self.assertFalse(thing.is_blue)
assert thing.is_blue == False -
So my team started creating an in-house wiki for all information about our products, methods, scrum, documentation etc. From the beginning we had settled on doing everything in English instead of native language just in case we get a foreign student intern or simply a foreign employee... And now it looks to me that nobody but my team leader and I care about it: half of the documents are either fully native (especially from other part of the team who work on a different project, they have probably never gotten the memo of language choice to start with) or the documents are in some weird-ass combination of English-native which is even worse imo.
I really don't understand why my own team doesn't adhere to the decision though: we're all at least reasonably educated and our country focuses heavily on using English as second language so that should be no big barrier. And why would you want inconsistent documents/code?!
And this is not the first time people don't stick to what is decided for things like formats and language... Getting a bit tired of it tbh...5 -
Had written a robust code. Project manager asked me to make some changes which will alter the code consistency (which he doesn't understand).
I suggested an alternative..
Project manager warned me not to go according to my convenience...
Fuck them.. now i am writing code as per their needs... #Lifeofprogrammers3 -
It really grinds my gears when new hires just start adding themselves to every fucking slack channel and then start crapping up the channel history with irrelevant chatter.
Business Analysts and Project Managers do not need to be in #developers sending mock-ups to a UI/UX designer for one team, or posting an xkcd strip you found on the internet because you "got it" and you think you are proving that you are one of us by posting it there. This channel isn't a fucking club, its where ALL developers at this company across all teams share tools and practices for us to maintain consistency and best practices and to improve our craft, or to give a heads-up about vulnerabilities.
There is a specific channel for your role, and your project. You don't need to be everywhere and in every conversation. And for fuck's sake, PLEASE stop @someone adding people to these channels just because you think you saw something in there posted by someone else that they should see. You can just fucking share that message directly with that person, or in another channel.8 -
Note to AltRant testers:
1. Tomorrow, I am going to force-expire build 1583 (the big update with the weekly group rant support) in favor of the build with the bugfix (mentioned here: https://devrant.com/rants/5888282) for consistency and for more up-to-date crash reports/feedback.
2. Limited macOS support is coming extremely soon, I will post a comment here in order to notify you about the added support. I believe the same TestFlight link is going to work for both macOS and iOS. NOTE: I haven't invested too much time with polishing the experience for macOS, so there will be bugs, there will be layout glitches and there will be compromises. I am well aware of all macOS issues but I just want to release something and then fix it along the way.1 -
MongoDB database with really relational data. One main collection that had refs to four other collections, all of those references necessary to populate data for a page view. Complicated aggregate to populate all the necessary data and then filter based on criteria selected by the user. And then the client decides that he wants the information to be sortable by column. Some of those columns are fields on the main model, no problem. Others are fields on the refs, which is more of a problem. Especially given that these refs aren’t one single object. They’re arrays of objects.
The revelation was that I could just write an aggregate function to flat map the main collection, returning only the fields necessary for the search, and output it to a new collection and instead use that new collection for displaying and filtering/sorting search results.
But you can’t run the aggregate all the time, you surely say. If anything changes in the main collection, it won’t be reflected in the search results!
Mongoose post(‘findOneAndUpdate’) hooks, my friends. Mongoose post(‘findOneAndUpdate’) hooks.
Never been so happy to have a thing working properly in my life.2 -
So I love my pixel 2 xl, best phone I've had (not saying that just because it's the newest btw)
But fuck me do I hate how it dictates what wallpaper needs a light and dark theme, plus when you have a dark theme on, why does the navbar stay white in applications but the notification pane change... I love google but come on -,-
And yes it's a minor thing but it's the small things that are the worst imo7 -
I would love to know how does people keep using GNOME 40+ when every single theme is unusable if it's not adwaita.
Fuckers couldn't even backport the new style to GTK-3. That “UI consistency” they brag about goes down the drain when you try to open any application that doesn't use GTK-4 yet.
An absolute circus that other desktops don't have to tolerate.2 -
*looking over an Excel sheet*
Me: now there are 2 rows that represent the same data, with the same description
Them: I'll just 0 out the one, and we'll ignore it.
Me: I'm never letting you near any of my databases. -
tried to stress-test an authenticated websocket endpoint (that makes 2-3 DB calls) by opening closing randomly and it crashed after 20-30 times within a few seconds
I was focused on the middleware glitching out, but error was in the DB-Postgres coz of multiple-connections
Even if I increase the upper limit of simultaneous open connections, the problem at-scale will still exist
If I tried to use a static forever-open connection, it errors out coz 1-command-at-a-time per connection
so im constrained on both sides -.-
Either I rate-limit the endpoint in general and force-close open connections or I cache Organisation-level info that rarely changes
this is one of the few times I miss MS-SQL, it can take a beating but still serve without much complains or losing data consistency -_-2 -
The debate between using tabs or spaces for indentation in code is a long-standing argument among software developers. Those who prefer using tabs argue that it takes up less space and is more efficient, while those who prefer spaces argue that it allows for more consistency and easier readability.
Many developers have strong opinions on this issue and believe that their preferred method is the only correct one. Some even go as far as to say that using the wrong method can negatively impact their ability to work with the code.
Regardless of which side of the debate someone falls on, it's a common source of frustration and humor among developers. The argument often devolves into jokes and sarcastic comments, with both sides poking fun at the other's preferred method.
Despite the often lighthearted nature of the debate, it highlights the importance of code readability and maintainability, as well as the differences in personal preferences and workflows that can arise within the tech community.19 -
Best documentation have probably been most language docs and references I've worked with, official or otherwise, especially C++. Completeness, consistency, tidiness and examples really help a lot, since I know I can rely on the docs for basically any problem and makes work so much easier since I'll be guaranteed to leave understanding what's up.
Worst documentation has got to be the internal docs we had to create for a seven-man uni project, you couldn't find shit in the sea of docs that were out of date or just plain wrong. It was so much easier to ask whoever was working on that part about the intricacies of the cobbled-together mess than to either read the code or the docs. One absolute mouthbreather was working on the database docs and put in that it stored ArrayLists. Fucking Java ArrayLists in a motherfucking database. One day I am going to rant so hard about this dumbass and it's gonna be a spectacle.
Bonus points goes to the company's public documentation at my internship. It was good and pretty complete, but sometimes there was a document from 2 years ago that had been written by a non-english speaker that was absolutely awful. Some of them were so bad that as soon as I'd finished learning what I needed to, my mentor told me to go and fix the docs, I don't blame him. -
Just moved my project for the first time from a windows server to Linux. Learned the importance of case-consistency the hard way...
-
Even though I was offered a future position (from intern part time to junior full time) I still worry that I'm not doing enough. Some days I just don't have work to do and all the higher ups are in meetings. Mix that with the bit of social anxiety and having trouble approaching people and I feel like I look like a slacker, even though I really do want to work on stuff and improve.
What can I do to wow the higher ups with some consistency?4 -
In a normal application with front and back separated, how do you guarantee consistency between models? Do people normally do PRs to change them on both sides and hope none screws up or is there a better way?
Some time ago I was looking into generating stuff from the OpenAPI spec. Is this a good idea? Also, can graphql help with this? I'm soooo confused by this, it's like a problem I never managed to solve in my head...5 -
"I love making the stuff, that’s sort of the core of it. I love creating the stuff. It’s so satisfying to get from the beginning to the end, from a shaky nothing idea to something that’s well formed and the audience really likes. It’s like a drug: You keep trying to do it again and again and again. I’ve learned from experience that if you work harder at it, and apply more energy and time to it, and more consistency, you get a better result. It comes from the work." - Louis C.K.2
-
Watch an "Introduction" video about it, or read the docs/blogs on why and where to use this particular tech. If you find it useful, then get your head down and work. Watch every YouTube video, read company docs, read random blogs, read FAQs. Honestly, any source you can get your hands on.
And never forget to write more code than you read.
Consistency and hard work is the only key.
I still remember when I was first getting introduced to front end, I didn't sleep for 3 straight days and was studying all that I could. -
Since when did Entry Level turn into 3 years experience? WTF! To get an entry level job, I need experience, but to get experience, I need to get a job first... WTF...
A couple days back, I saw a junior position ask for 10 years experience in Javascript and HTML/CSS. Um. I'm sorry, WHAT?! Experience is so relative.. I could've learned HTML/CSS/JS 10 years ago and barely use it every year and still say I have 10 years of experience as opposed to somebody that learned it consistently in around a year. That person with 1 year experience would have more experience than me from the consistency with using these technologies. I just hate how employers will filter out resumes based on years of experience but it's getting better now, since you still have a chance if you don't have the "required" or "preferred" experience. -
Ah, Visual Studio Code—our trusty sidekick in the coding trenches. But wait, what's this? A delightful new feature designed to keep us on our toes: the 'Disable All Extensions for This Workspace' command. Because who doesn't love a good surprise, especially when it involves disabling all the tools we painstakingly set up?
Picture this: you're in the zone, about to format your document as usual. You hit Ctrl + Shift + P, type 'for', and expect the familiar 'Format Document' to greet you. But no! Instead, 'Disable All Extensions for This Workspace' has decided to make a guest appearance at the top of the list. How thoughtful! It's as if VS Code is saying, "Hey, let's make things interesting by turning off all your extensions without warning."
And the fun doesn't stop there. Once you've accidentally disabled all your extensions, there's no magical 'undo' button to save the day. Nope, you get the joy of manually sifting through your extensions list, re-enabling each one like it's 1999. And let's not forget the mandatory restarts—one to unload the extensions and another to load them back up. Because who doesn't love losing their undo history and breaking their workflow?
So, dear VS Code developers, thank you for adding a dash of unpredictability to our coding sessions. After all, who needs stability and consistency when we can have random command roulette?19 -
I am the only front end developer in my team, used to be 2, and there is 4 java backend dev. We are all Seniors, so you'd expect to be experienced. I like my code to be "nice" and I am using linting tools, rules, formatting etc... (I do JS mainly).
During a scrum review some of the java guys showed some code on the screen and that thing was a monstrosity for me! I could not look at some code like that, if I had to work with that I'd probably hang myself. Nothing was aligned, no consistency. So my question: you guys aren't using any guidelines to have cleaner code ? How do you make sure you all code the same ?
...
What are you taking about ? We use Eclipse, with default options, no tools no guidelines...1 -
Is passion overrated?
I've met devs who started out passionately but after a long while they say that they couldn't even stand the sight of their IDEs but then they had gotten into a consistency or a routine which is what drives them and that the passion that they started off with burned off along the way.5 -
I'm new to Python and have been using PyCharm. I like it. I've tried just about every IDE on the market now excluding maybe a couple of the ones who don't have free versions and I always end up back to Pycharm.
I like how it's strict about formatting. My opinion it builds good habits. I watch a lot of tutorials on youtube among other things and I'm learning slowly but still I getting there.
My conclusion is that their seems to be a complete lack of consistency in the Python community regarding PEP and formatting standards. One person does it this way. Another does it that way. Makes it extremely frustrating when trying to learn because you have all these people doing things slightly different.
One guy says dont use camelCase another says yes. Granted some of these tutorial are a couple of years old and I know things change but I can't imagine it changes that much from 2 to 3 yeah but when you can't even be consistent with your spacing of your print functions or comments it's like nails on a chalkboard.
And thats just the beginning. I'm a tabs guy some are spaces. That's a whole other rant or whatever. Hardly the point really. Lots of different inconsistencies but I'm running out of characters.
Maybe im just not finding good videos. They all act like they know what they are doing and to an extent I suppose they do.
It takes a lot of guts to put yourself out their like they do ready to be scrutinized so you have to at least have a clue of what your doing. Some of these people have 10s of thousands of subs and I find myself picking apart every little thing they are doing and find many times they are teaching wrong standards. At least that's how I see it from the little experience I have now.
I'm just beyond frustrated and would appreciate any advice that a person wants to give. Keep in my I'm new and may just be misguided so try not to be to harsh if I've drawn an incorrect conclusion.13 -
!rant One of the better refactoring insights I've heard today: "With great power comes great responsibility".
Just because a language may not care about certain constructs, doesn't mean you should be relaxed about them (e.g. weak/dynamic typing/not caring about (variable name) consistency).3 -
The consistency of php standard lib function is astonishing. array_map, array_reduce ...
Why do I have to use php7 😢😢😭😭😭1 -
when you get a set of metrics from another dev, on a database you don't know, to add to a BI dash and the next week their manager changes the metrics (for consistency) and the other dev is unavailable.
-
The feeling when eventual consistency is unacceptable for your use case and you suggest making a call synchronous only to be told it can't be synchronous and the clients need to introduce an arbitrary wait time.
Apparently our latency metrics are more important than being correct.2 -
package main
// go is very frustrating. in their efforts to keep the language simple, they've broken its consistency :(
// A A is just some arbitrary interface
type A interface {
Foo()
}
// B is an interface requiring a function that returns an A
type B interface {
Bar() A
}
// Aimpl implements A
type Aimpl struct{}
// Foo is Aimpl's implementation of A
func (a Aimpl) Foo() {}
// Bimpl attempts to implement B
type Bimpl struct{}
// Bar is Bimpl's attempt at implementing B.
// problem is, if Bar returns an Aimpl instead of A, the interface is not satisfied
// this is because Go doesn't support implicit upcasting on returns from interfaced objects.
// if we were to simply change the declared return type of Bar() to 'A', without changing
// the returned value, Bimpl will satisfy B.
func (b Bimpl) Bar() Aimpl {
return Aimpl{}
}
var _ B = Bimpl{}
func main() {
}2 -
One of my side projects was on hold for 8 months because I ran into a minor technical issue maintaining consistency between snippet generation in a few places.4
-
"No, the Client doesn't like stored procedures so we have done all our TL parts of the ETL using a bunch of views on top of views on top of views."
Wish I could have been here at the start so I could have pushed back, sigh.
Siiiggghhhh, yet the client is anal about performance and even consistency in SSIS packages.....siiiggghhhhhh but we dont have SHOWPLAN permissions or even sp_who2 access...siiiigggghhhhhh.
If i expanded one of the final views, would be like 1k lines. For the amount of data, we move, there shouldn't be any noticeable processing time but it can take anywhere from 10mins to an hour.2 -
Hi! It's my first time working as a professional developer and I am the team lead. Where can I find a a set of programming guidelines which we can edit a bit according to our needs and follow so there is consistency?
We are using python.2 -
When I browsed for a Food Recipes (Especially Indian Food) Dataset, I could not find one (that I could use) online. So, I decided to create one.
The dataset can be found here: https://lnkd.in/djdh9nX
It contains following fields (self-explanatory) - ['RecipeName', 'TranslatedRecipeName', 'Ingredients', 'TranslatedIngredients', 'Prep', 'Cook', 'Total', 'Servings', 'Cuisine', 'Course', 'Diet', 'Instructions', 'TranslatedInstructions']. The datset contains a csv and a xls file. Sometimes, the content in Hindi is not visible in the csv format.
You might be wondering what the columns with the prefix 'Translated' are. So, a lot of entries in the dataset were in Hindi language. To take care of such entries and translating them to English for consistency, I went ahead and used 'googletrans'. It is a python library that implements Google Translate API underneath.
The code for the crawler, cleaning and transformation is on Github (Repo:https://lnkd.in/dYp3sBc) (@kanishk307).
The dataset has been created using Archana's Kitchen Website (https://lnkd.in/d_bCPWV). It is a great website and hosts a ton of useful content. You should definitely consider viewing it if you are interested.
#python #dataAnalytics #Crawler #Scraper #dataCleaning #dataTransformation -
Everything from https://devrant.com/rants/4289918 but on the side of projects I happen to work with and dependencies. Applying this scope of change on one human is a bit cheap, don't you think? 🤷♂️
-
I DESPISE languages that enforce a style on you because "muh community code consistency". Like ok, I understand it, but if it gets to a point where I cannot configure *MY* IDE to format *MY* code the way I want I'm gonna get pissed at you. Why does it matter to you if my project uses 2 or 4 spaces? At least give me the option to disable your fucking formatter and use my IDE's default one.
Fuck you Dart.10 -
Looking at Rust's preliminary fn trait model (basically the function call operator) and I don't get one thing:
Why is the argument tuple a generic type parameter and not an associated type? It would've been so easy to ensure consistency in the position that Rust doesn't have overloads. A trait can be implemented for any number of generic type parameter values, but an implementation may only have a single type for each association.3 -
Started adding image urls to my database fixture.json for my django project... 57 done... 352 to go.... for the first of 3 different models
why isn't there any consistency in their urls? thank god, there are substances to suffer these parts of development...
so fine, I do what I have to do, for a hopfully thankful community -
Exercise feels like a must do, given that my job is sitting for hours on end, slamming my face on the keyboard.
Been working out 5 days a week, just a bit. Consistency is good and it feels nice seeing results even if they take a while. Definitely recommended!
Then I remembered that I can't "work out" my ugly mug. No matter the effort, you can't tone a fucked up face, chin, nose, whatever, like you can tone your arms or ass. Feels like a case of hard work vs talent, but worse.10 -
Absolutely frustrated with some people's inability to make the information in their databases consistent. Had a request to make a report based on some criteria, and couldn't find the information from tables that seemed to have most of the information. Some information was correct based on what was on the website, some was not. What the fuck.1
-
identify foo/*/img/header-logo-1.png
foo/de-de/img/header-logo-1.png PNG 75x150 75x150+0+0 8-bit sRGB 11.4KB 0.000u 0:00.000
foo/en-au/img/header-logo-1.png[1] PNG 69x69 69x69+0+0 8-bit sRGB 5.7KB 0.000u 0:00.009
foo/fr-fr/img/header-logo-1.png[2] PNG 69x69 69x69+0+0 8-bit sRGB 3.37KB 0.000u 0:00.000
foo/it-it/img/header-logo-1.png[3] PNG 69x69 69x69+0+0 8-bit sRGB 6.38KB 0.000u 0:00.000
foo/nl-nl/img/header-logo-1.png[4] PNG 69x69 69x69+0+0 8-bit sRGB 10.2KB 0.000u 0:00.000
foo/pt-br/img/header-logo-1.png[5] PNG 69x72 69x72+0+0 8-bit sRGB 10.8KB 0.000u 0:00.000
foo/ru-ru/img/header-logo-1.png[6] PNG 71x72 71x72+0+0 8-bit sRGB 10.1KB 0.000u 0:00.000
Because fuck consistency. -
Hire Shopify Developer
Keeping the equipment static and expanding or diminishing the amount of clients to learn if the presentation is affected relatively to comprehend the consistency of the framework is named unsurprising adaptability.
At the point when a worker isn't skilled handle the current responsibility, the strategy for acquiring new worker to share the responsibility close by the current worker is named scaling out or even scaling. -
<!-- start of xyzAwesome widget-->
<DIV class = outerWRAPPER >
<DIV id=specialContainer class="small">
<DIV CLASS= "extra-large">
<DIV class="inner_wrapper blue">
What do you mean my code sucks?
</span>
</span>
</div></span>
<!-- end of sub container -->1 -
Monolith oriented micro service.
All the coupling and evolving resistance without the simplicity or consistency... -
Writting some documentation and asked for feedback, soon I felt cheated since "suggestions" were:
1 - Hey, this isn't implemented yet! I'm cutting it out...
2 - Hey! You shouldn't say this is how it works, we were in meeting and discussed that this is how it's gonna be, you need to change it...
Single reviewers, please consider consistency, thank you very much, bye -
Persisterising derived values. Often a necessary evil for optimisation or privacy while conflicting with concerns such as auditing.
Password hashing is the common example of a case considered necessary to cover security concerns.
Also often a mistake to store derived values. Some times it can be annoying. Sometimes it can be data loss. Derived values often require careful maintenance otherwise the actual comments in your database for a page is 10 but the stored value for the page record is 9. This becomes very important when dealing with money where eventual consistency might not be enough.
Annoying is when given a and b then c = a + b only b and c are stored so you often have to run things backwards.
Given any processing pipeline such as A -> B -> C with A being original and C final then you technically only need C. This applies to anything.
However, not all steps stay or deflate. Sum of values is an example of deflate. Mapping values is an example of stay. Combining all possible value pairs is inflate, IE, N * N and tends to represent the true termination point for a pipeline as to what can be persisted.
I've quite often seen people exclude original. Some amount of lossy can be alright if it's genuine noise and one way if serving some purpose.
If A is O(N) and C reduces to O(1) then it can seem to make sense to store only C until someone also wants B -> D as well. Technically speaking A is all you ever need to persist to cater to all dependencies.
I've seen every kind of mess with processing chains. People persisting the inflations while still being lossy. Giant chains linear chains where instead items should rely on a common ancestor. Things being applied to only be unapplied. Yes ABCBDBEBCF etc then truncating A happens.
Extreme care needs to be taken with data and future proofing. Excess data you can remove. Missing code can be added. Data however once its gone its gone and your bug is forever.
This doesn't seem to enter the minds of many developers who don't reconcile their execution or processing graphs with entry points, exist points, edge direction, size, persistence, etc.2 -
Its one thing to store all text data of an address into a single database field. Its another where data is so hard to capture with regex because fuck patterns and consistency.
-
Recently started a new role as a junior dev(second role). Three weeks in and I'm already starting to loathe the work setup & process.
Last week I was asked to fix a bug due to them not having anything in the pipeline for me(I had finished my allocated tasks for the sprint). There was no spec to this, no visible steps to replicate the error & no tests in place to validate it was working... I thought I had fixed it, even had one of the seniors reviewed it on my PR but also I walked him through my possible solution resulting in us moving forward with the "improved" solution.
After a bank holiday, I've come back to find that the "fix" I had deployed doesn't solve the problem at all. So here I am after 3.5hours of flying blind with a bug that I'm still not able to reproduce, bored and frustrated asf. Not to mention, that the codebase has little to no consistency, a lot of legacy and almost no form of tests.
Am I overreacting to this as junior?1 -
I love to work in projects with great consistency. Starting with the tables id names id_payment, country_id or just id. This guessing development.
-
to method java doc or not to method java doc
i'll do whatever we're supposed to , but i dont see consistency in industry or my slave drivers
i remember when i first did i was told not to, but then a new senior hire comes in does it and nobody bats an eye1