Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "versioning"
Today I learnt from a more experienced Dev that using git as versioning system makes the code open source.19
With all the major library/framework overhauls in the JS community, I feel we may need to start versioning in our resumes:
Just joined a new job. Got into a team of 10+ devs working on one code base. Its spread across many cities and few devs sit together.
They've been versioning their code by mailing each other .zip files of the entire 400MB code base at the end of each day.
Me: Can we have git or svn please?
Manager: SVN? Don't worry about that now, we'll get SVN when the project is finished.
Managed to get an SVN repo running after 2 weeks. FML.17
Holy donkey nuts, I get too scared to leaved unpushed code when I take a coffee break.
FUCK VISUAL STUDIO ANBD EVERYTHING IT FUCKING STANDS FOR. PIECE OF SHIT IDE CANT HANDLE MORE THAN THREE FUCKING WINDOWS AT A FUCKING TIME WHY CANT A BILLION DOLLAR MOTHERFUCKING COMPANY MAKE COMPETENT SOFTWARE FOR ONCE? WHY IS MICROSOFT SO FUCKING AWFUL IN EVERYTHING IT DOES? WHY THE FUCK IS THERE NO AUTOMATIC VERSIONING LIKE EVERY CIVILIZED BASIC FUCKING IDE THAT EVER EXISTS? WHY DO I HAVE TO FUCKING MANUALLY VERSION MY FUCKING FILES? WHY THE FUCKING FUCK IS VISUAL STUDIO FUCKING GOING TO A FILE I USED 300 YEARS AGO WHEN I DEBUG AN APPLICATION? MOST USELESS, UNINTUITIVE PIECE OF SHIT SOFTWARE IVE EVER USED. IF YOU ARENT USING SOME GODDAMN SERVER SOLUTION TO KEEP TRACK WITH YOUR PROJECT VERSIONS, GOOD EVER FUCKING LUCK RECOVERING LOST CODE BECAUSE FUCKING MICROSOFT CANT DO WHAT FUCKING INTELLIJ DID 5 MILLION FUCKING YEARS AGO27
Just started my new position and discovered that company's tasks, bugs & versions are managed in single Google Doc 😐9
Fuck npm and the whole npm community!
Seriously, what a piece of completely uncontrolled cat litter!
First experience was getting malware from an npm package which I ranted about a while ago. That it can even happen is beyond my imagination.
Second experience was today when our app broke because a fucker who wrote a library doesn't understand semantic versioning.
If you're gonna publish an npm library, please do the whole fucking world a favour and learn how to version your shit correctly, so my app doesn't break! If you do BREAKING CHANGES don't change the fucking last version number you filthy piece of garbage!
Phew, that felt good 😧3
Developer came to our area to rant a bit about a problem he was having with Xamarin. A particular android device was receiving a java runtime error trying to de-serialize data from a WCF contract. What he found was not to use WCF and use WebAPI (or a simple REST service that sent back/forth JSON).
When he proposed changing the service (since the data transport didn’t really matter, he could plug the assembly into a WebAPI project in less than an hour), the dev manager shot down the idea pointing him to our service standard that explicitly stated no WebAPI (it’s in bold letters).
I showed him the date on the “standard”, which was 5 years ago. We have versioning on our sharepoint server, so I also him my proposal notes on the change request document (almost two years before that) stating we should stop using WCF in favor of REST based web standards. Dev manager at the time had wrote in his comment “Will never use REST. Enterprise developers prefer RPC.”
He just about fell over laughing when I showed him this gif.2
College can be one of the worst investments for an IT career ever.
I've been in university for the past 3 years and my views on higher education have radically changed from positive to mostly cynical.
This is an extremely polarizing topic, some say "your college is shite", "#notall", "you complain too much", and to all of you I am glad you are happy with your expensive toilet paper and feel like your dick just grew an inch longer, what I'll be talking about is my personal experience and you may make of it what you wish. I'm not addressing the best ivy-league Unis those are a whole other topic, I'll talk about average Unis for average Joes like me.
Higher education has been the golden ticket for countless generations, you know it, your parents believe in it and your grandparents lived it. But things are not like they used to be, higher education is a failing business model that will soon burst, it used to be simple, good grades + good college + nice title = happy life.
Sounds good? Well fuck you because the career paths that still work like that are limited, like less than 4.
The above is specially true in IT where shit moves so fast and furious if you get distracted for just a second you get Paul Walkered out of the Valley; companies don't want you to serve your best anymore, they want grunt work for the most part and grunts with inferiority complex to manage those grunts and ship the rest to India (or Mexico) at best startups hire the best problem solvers they can get because they need quality rather than quantity.
Does Uni prepare you for that? Well...no, the industry changes so much they can't even follow up on what it requires and ends up creating lousy study programs then tells you to invest $200k+ in "your future" for you to sweat your ass off on unproductive tasks to then get out and be struck by jobs that ask for knowledge you hadn't even heard off.
Remember those nights you wasted drawing ER diagrams while that other shmuck followed tutorials on react? Well he's your boss now, but don't worry you will wear your tired eyes, caffeine saturated breath and overweight with pride while holding your empty title, don't get me wrong I've indulged in some rough play too but I have noticed that 3 months giving a project my heart and soul teaches me more than 6 months of painstakingly pleasing professors with big egos.
And the soon to be graduates, my God...you have the ones that are there for the lulz, the nerds that beat their ass off to sustain a scholarship they'll have to pay back with interests and the ones that just hope for the best. The last two of the list are the ones I really feel bad for, the nerds will beat themselves over and over to comply with teacher demands not noticing they are about to graduate still versioning on .zip and drive, the latter feel something's wrong but they have no chances if there isn't a teacher to mentor them.
And what pisses me off even more is the typical answers to these issues "you NEED the title" and "you need to be self taught". First of all bitch how many times have we heard, seen and experienced the rejection for being overqualified? The market is saturated with titles, so much so they have become meaningless, IT companies now hire on an experience, economical and likeability basis. Worse, you tell me I need to be self taught, fucker I've been self taught for years why would I travel 10km a day for you to give me 0 new insights, slacking in my face or do what my dog does when I program (stare at me) and that's just on the days you decide to attend!
But not everything is bad, college does give you three things: networking, some good teachers and expensive dead tree remnants, is it worth the price tag, not really, not if you don't need it.
My broken family is not one of resources and even tho I had an 80% scholarship at the second best uni of my country I decided I didn't need the 10+ year debt for not sleeping 4 years, I decided to go to the 3rd in the list which is state funded; as for that decision it worked out as I'm paying most of everything now and through my BS I've noticed all of the above, I've visited 4 universities in my country and 4 abroad and even tho they have better everything abroad it still doesn't justify some of the prices.
If you don't feel like I do and you are happy, I'm happy for you. My rant is about my personal experience which is kind of in the context of IT higher education in the last ~8 years.
Just letting some steam off and not regretting most of my decisions.15
I've optimised so many things in my time I can't remember most of them.
Most recently, something had to be the equivalent off `"literal" LIKE column` with a million rows to compare. It would take around a second average each literal to lookup for a service that needs to be high load and low latency. This isn't an easy case to optimise, many people would consider it impossible.
It took my a couple of hours to reverse engineer the data and implement a few hundred line implementation that would look it up in 1ms average with the worst possible case being very rare and not too distant from this.
In another case there was a lookup of arbitrary time spans that most people would not bother to cache because the input parameters are too short lived and variable to make a difference. I replaced the 50000+ line application acting as a middle man between the application and database with 500 lines of code that did the look up faster and was able to implement a reasonable caching strategy. This dropped resource consumption by a minimum of factor of ten at least. Misses were cheaper and it was able to cache most cases. It also involved modifying the client library in C to stop it unnecessarily wrapping primitives in objects to the high level language which was causing it to consume excessive amounts of memory when processing huge data streams.
Another system would download a huge data set for every point of sale constantly, then parse and apply it. It had to reflect changes quickly but would download the whole dataset each time containing hundreds of thousands of rows. I whipped up a system so that a single server (barring redundancy) would download it in a loop, parse it using C which was much faster than the traditional interpreted language, then use a custom data differential format, TCP data streaming protocol, binary serialisation and LZMA compression to pipe it down to points of sale. This protocol also used versioning for catchup and differential combination for additional reduction in size. It went from being 30 seconds to a few minutes behind to using able to keep up to with in a second of changes. It was also using so much bandwidth that it would reach the limit on ADSL connections then get throttled. I looked at the traffic stats after and it dropped from dozens of terabytes a month to around a gigabyte or so a month for several hundred machines. The drop in the graphs you'd think all the machines had been turned off as that's what it looked like. It could now happily run over GPRS or 56K.
I was working on a project with a lot of data and noticed these huge tables and horrible queries. The tables were all the results of queries. Someone wrote terrible SQL then to optimise it ran it in the background with all possible variable values then store the results of joins and aggregates into new tables. On top of those tables they wrote more SQL. I wrote some new queries and query generation that wiped out thousands of lines of code immediately and operated on the original tables taking things down from 30GB and rapidly climbing to a couple GB.
Another time a piece of mathematics had to generate all possible permutations and the existing solution was factorial. I worked out how to optimise it to run n*n which believe it or not made the world of difference. Went from hardly handling anything to handling anything thrown at it. It was nice trying to get people to "freeze the system now".
I build my own frontend systems (admittedly rushed) that do what angular/react/vue aim for but with higher (maximum) performance including an in memory data base to back the UI that had layered event driven indexes and could handle referential integrity (overlay on the database only revealing items with valid integrity) or reordering and reposition events very rapidly using a custom AVL tree. You could layer indexes over it (data inheritance) that could be partial and dynamic.
So many times have I optimised things on automatic just cleaning up code normally. Hundreds, thousands of optimisations. It's what makes my clock tick.4
My favourite devTool is VS Code, especially since the last update. But considering that versioning should be more important than a specific IDE, Gitlab is THE tool. I couldn't live without it. <3
Why do people version their code like they're learning to count? 3.0.0, 3.0.1, ..., 3.0.9, 3.1.0, 3.1.1, ...
And then I'm sitting there with 50+ websites, wondering if updating a plugin from 3.6.5 to 3.6.6 will patch my bugs, or completely break everything because of syntax changes11
I don't know why I'm having this conversation so often lately.
Someone: "Hey, did you know that Microsoft said that Windows 10 would be the last version of Windows?"
Someone: "But isn't that ridiculous? It would get old at some point, right?"
Me: "...have you heard of macOS X? It's also »the last version« of macOS. But it has still undergone a lot of changes."
Someone: "Hm... I haven't thought about that."
Seriously, just because a company says something would be the last version of a product, it doesn't mean they don't update it anymore, they just take that version, make it a brand and use a different number for versioning (macOS Mojave 10.14, Windows 10 1809, ...).
Companies really try confusing their users as much as possible, and it seems to work, because the convo mentioned above is just repeating so often at this point that it just has to be intentional confusion.7
One of my project managers wanted a feature where the user can save over files without having to delete all information of the previous file and that they could go through previous versions. So I told him, "Okay, what you want is a versioning system." Then he proceeded to say no and describe the exact same thing as a versioning system. I wanted to yell at him that that's exactly what he wanted but kept my mouth shut because there is no point in continuing the conversation.4
ugh... i lost code of my best project fuckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
And what's even more stupid? it had git versioning. almost around 65 commits. but recent fuckups with laptop crash, offline-online backup confusion led to me loose everything.
I just forgot to do one stupid fuck : git push -u origin master :"""""""""""""""""""""""""(14
Soooo it's Monday........ 🤯
@C0D4 started the day fixing current projects defects (4 tickets smashed before coffee 💪)
Then after coffee, run a test coverage report and see a significant decline over the past few months, so spends a couple hours adding more tests to get some areas filled in - meh, nothing like 50+ lines per test... to test a if() statement but whatever - complex scenarios will be complex to get too, but no my tests break and I'm missing data I didn't know about🤦♂️
So let's comment all that out, and go to lunch ... mmmm lunch.
Get back, start working on those again, and then get handed a new issue, so comment that all back out again, ( ok I know what you're thinking, but I'm working in an environment that does not use git for deployments - don't ask, real pain in the ass I haven't had time to invest into yet - but as code versioning only) anywho, starts to workout this new issue but don't figure it out, enter a 30 minute meeting.................. yea that was 2 hours later but was a very practical whiteboard session only to work out I have something like 16-20 weeks of work over 4-5 projects to get out in like 6 weeks... hahahahahahaha fml..... oh and that's excluding another project which had a 6 weeks of work in the pipeline to get to somehow.... I'm not seeing this one happening, and probably conflicting projects needed on top of that down the track... but we'll leave those out for now!
Whoot is fucking home time!!!
🤷♂️I'm starting to think I'm like a team of 5-10 devs right now, maybe I should start asking for 5-10x more 😏
I like js and node in general.
But there's this thing I hate about NodeJs...
The blogs. The goddamn blogs.
Every goddamn blog post. Is code. Dozens of lines of code.
Oh, so you want X feature? Just copy paste this shit.
I swear to god, blog posts are the source versioning system to these people.
What they should instead is
a) Create a package.
b) Add tests to it.
c) Present the package to the reader with some minimal code.
But I'm a getting a huge impression that node blog writers want you to copy the code in their post, paste it in your project, and be happy with it.
Now, I'm not assuming that every person posting in medium.com is a software engineer (and by engineer I mean an engineer, not some fuckwad who begs for github stars on dev communities).
The problem to me is that they fucking SATURATE the goddamn search results.
The same goes for finding an npm package for your need, because there are so many low quality packages it's saturated too, you have too plow this stinking pile of projects that have very low quality,
and there's not a really good npm finder out there. Half of them are dead, some look and load like shit, and npm search has a low barrier for good code.
Me on rails, OTOH "ok, I need this thing", I google that and I swear to [-∞,+∞] I find GOOD packages, well designed, no cookie cutter bullshit, no obscure marketing shit on the README.md, it is very clear what this shit does, and the api is designed for HUMANS.
and it actually takes very little time to know if there's no such package.
I don't have to read dozens of fucking my-fuck-blog.io (jesus christ, the io domain has become such a fucking joke, it got fucking abused to death, there are some cool sites out there using it, but my god, James H. Marketing likes to just absorb everything he can, and the internet was not going to be a fucking exception)
does all of this make sense?4
This is something I'll never forget.
I'm a senior UI engineer. I was working at a digital agency at the time and got tasked with refactoring and improving an existing interface from a well known delivery company.
I open the code and what do I find? Indentation. But not in the normal sense. The indentation only went forward, randomly returning a bunch of tabs back in the middle of the file a few times, but never returning to its initial level after closing a tag or function, both on HTML and JS.
Let that sink in for a minute and try to imagine what it does to your editor with word wrapping (1 letter columns), and without (absurd horizontal scrolling).
Using Sublime at the time, ctrl+shift+P, reindent. Everything magically falls beautifully into place. Refactor the application, clean up the code, document it, package it and send it back (zip files as they didn't want to provide version control access, yay).
The next day, we get a very angry call from the client saying that their team is completely lost. I prove to the project manager that my code is up to scratch, running fine, no errors, tested, good performance. He returns to the client and proves that it's all correct (good PM with decent tech knowledge).
The client responds with "Yeah, the code is running, but our team uses tabs for version control and now we lost all versioning!".
Bear in mind this was in 2012, git was around for 7 years then, and SVN and Mercury much longer.
I then finally understood the randomness of the tabs. The code would go a bunch of tabs back when it went back to a previous version, everything above were additions or modifications that joined seamlessly with the previous version before, with no way to know when and so on.
I immediately told the PM that was absurd, he agreed, and told the client we wouldn't be reindenting everything back for them according to the original file.
All in all, it wasn't a bad experience due to a competent PM, but it left a bad taste in my mouth to know companies have teams that are that incompetent, and that no one thought to stop and say "hey, this may cause issues down the line".4
Colleague: No the logic is stored in post_2.php but before you edit it make sure you make a post_2.bk.php just in case we need to revert the change.
Ok. FUCK MySQL Workbench.
Most of our products built on MySQL and we just had enough of the tools that we are using for our mysql databases...
We decided to make our own tool :)
If it goes well, we plan to open source it. Would you guys be interested in it?
We planned the following features:
1. Schema editing
2. Schema versioning
3. Update/downgrade script generation to move easily between schema versions
4. Manual/auto sync
5. Might include our own replication solution too...
What do you think?10
Nothing good comes with GUI for version control except for the graphs of branches. And this little tortoise thinks it's the shit.6
I can understand, that you´ve never used a file versioning system.
But why the everloving fuck would you commit EVERYTHING BUT the files you have added or edited???
Don´t you have some common sense?
The hell is wrong with you?
(My thoughts after seeing the last commit of the new intern...)9
Fuck me. I have to update an Android app I have built 2 years ago. So much have changed, I need to update pretty much every dependency I have and no library seems to compile with the latest Android SDK yet.
I feel like Dr. Strange living the 14,000,605 possibilities when trying different library versions.
It's probably easier to rewrite everything. Now in Kotlin.1
Not really a rant and not very random. More like a very short story.
So I didn't write any rant regarding the whole Microsoft GitHub topic. I don't like to judge stuff quickly. I participated in few threads though.
Another thing is I also don't use GitHub very much apart from giving 🌟 to repos as a bookmark. Have one hobby project there. That's all. So I don't worry that much. I'm that selfish and self concerned. :3
I was first introduced to version control system by learning how to use tortoisesvn around 2008. We had a group project and one of the guys was an experienced and amazing programmer unlike the rest of us. He was doing commercial projects while we were at our 1st and 2nd year. Uni had svn repo server. He taught us about tortoisesvn. He also had Basecamp and taught us how to use it as well. So that's how I learned the benefits of using versioning tools and project management tools. On side note, our uni didn't teach any of those in detail :3
After that project, I was hooked to use versioning tools. So until school kicked me out, I was able to use their svn server. When I was on my own, I had to ask Google for help. I found a new world. There are still free svn services that I can use with certain limited functions. That's not the new world; I found people saying how git is better than svn in various ways. It was around 2010,2011.
At first I was a bit reluctant to touch git because of all the commands in terminal approach. But then I found that there is tortoisegit. I still thank tortoisesvn creator for that. I'm a sucker for GUI tools. So then I also have to pick which git servers to use. Hell yeah, self hosted gitlab is the way to go man. Well that's what the internet said. So I listened. I got it up and running after numerous trial and error. I used it briefly. Then I came back to my country on 2012-2013; the land of kilobytes per minute (yes not second, minute).
My country's internet was improved only after 2016. So from 2013 to 2016, I did my best not to rely on internet. I wasn't able to afford a server at my less than 10 people, 12ft*50ft office. So I had to find alternative to gitlab which preferably run on windows. Found bonobo and it was alright. It worked. Well had crazy moments here and there when the PC running Bonobo got virus and stuff. But we managed. We survived. Then finally multi national Telecom corporates came to our country.
We got cheaper and faster mobile data, broadband and fiber plans. Finally I can visit pornhub ... sorry github. Github is good. I like it. But that doesn't mean I should share my ugly mutated projects to the rest of the world. I could keep using Bonobo but it has risks. So I had to think for an alternative. I remembered that gitlab didn't have cloud hosting service when I checked them out in the past. So I just looked into Bitbucket and happy with their free plans of 5 users and unlimited private repos. I am very very cheap and broke.
That's why I said I don't really care that much about the whole M$GitHub topic at the beginning. However due to that topic, I have visited GitLab website again and found out they have cloud hosting now and their free plan is unlimited users and unlimited repos. So hell yeah. Sorry BB. I am gonna move to cheaper and wider land.
TL;DR : I am gonna move to GitLab because of their free plan.4
We are at the end of the school year, at least in France.
This is my recap of this shitty year.
My school try to teach programming, and that’s just a try.
Some of the dudes do not event know what a variable was.
For a second year university diploma, they don’t teach OOP, no Git, no DP, no JS, no clean code or whatever.
So at the end of the year, you’ll be able to code in procedural, no versioning, spaghetti code and a big mess in folder structure, lack of interactivity because of poor JS knowledge.
Well a codebase which makes you crying blood, literally.
And that’s what a second year university diploma ...
Fortunately for the most curious there’s so much to learn out of the school but, damn, why are some schools so retarded ?
For almost 8k€/year you just receive a piece of paper and you’re still a shit in your *suppose to be* job.9
Constructors, generics, collections, package versioning, immutability, syntactic sugar, option types? Meh.
Unused imports? NEVER!
I was working with a stable installation of an elaborated platform. Some plugins were installed. After upgrading the installation by 2 patch level the customer registration was not working anymore.
In these two patch level a method in an interface got an additional optional parameter which had a major impact on the behaviour the implemented method. A plugin decorated the implementation without knowing about the new parameter. Therefore when calling the method the decorating class did not pass the new parameter in to the decorated implementation and the fallback value was given instead.
The caller expected the method to do something and did not branch into an alternative way but the default value disables the expected behaviour. Eventually nothing happened.
Breaking changes in patch levels woop di fucking do.2
So, I spent the last two days hunting down a bug about some of the static assets not getting versioned.
It turned out to be a mistake by some newbie missing a quote in html. The html parser responsible for versioning the assets broke once it ran into that bad html.
Somehow, I don’t feel satisfied. I guess I shouldn’t hope for big reasons for seemingly big problems.
Colleagues of mine, even though they show signs of versioning their api by having "v1" in the URL, keep committing breaking changes to that version. 😂1
Does anyone else find it super-confusing how Microsoft refers to SQL Server versions by both product year and version number?
For instance, we primarily use SQL Server 2012, 2014, and 2017, which are versions 11, 12, and 14 respectively.
The slight mismatch between the product year and the version number creates a lot of ambiguity. If someone refers to SQL Server "14," we always have to double-check: do you mean 14 as in version 14 as in 2017, or 14 as in 2014 as in version 12? Does SQL Server "12" mean 12 as in version 12 as in 2014, or 12 as in 2012 as in version 11? It's ridiculous!3
I wrote a tech book several years ago for O'Reilly, which itself was a dream come true. I'm still amazed I got that deal done, and the fact that my name was on a title with a unique animal on the cover is SUPER cool.
Back then, their publishing system was based on Git with their own markup language, and it was sort of a chore to use. Easy and straightforward, but laborious. I spent 3 entire days just (re)formatting my drafts to their code. They've upgraded it since, I see, based on the same fundamental versioning idea and still using Git. Neat!
I've also done tech writing for .NET Magazine, which used Word's change tracking, and penned articles for other publications using Google Docs, or even drafts in WordPress.
Have all of you run into interesting systems used by publishers to manage content?2
Someone asked for help to solve some errors on an angular app.
Me: sure np, send me the repo link to see what is the issue.
She: *proceeds to send me a 250mb rar*
Me: what is that? I prefer the repo so I can see the history please
She: got me there, haven’t versioned yet
Me: WHAT? You’ve been working for three weeks without versioning anything?
She: yep, because I can’t make it work so, why would I?
I really ask myself sometimes if we are in this world just to suffer.19
Old story, happened some way back. I worked part-time for a small web development company that did between other things something called SharePoint development, basically .net webforms with shit glitter on top of it.
The most weird part of it, was the fact that we were working on vms that hosted the app, it was our dev, test and staging environment, as well as were we showed the client the polished turd.
Did I say that it was on a vm? Well it was on a remote vm, that each of use had access to it, through our domain accounts, and they couldn't configure the windows server to accept more than two or three users at once to be connected.
That was our test enviroment and dev enviroment, sooo showing the app to the client meant for the rest of us to not write any code because it might crash or get stuck.
The app was accessible and discoverable by url and through google search from outside, I dont think that should have been allowed.
The most disastrous part was that we had NO source versioning whatsoever, just plain old copy and paste in different folders.
Deploying to client meant remoting to the clients host or whatever it was, and manually copying the source files
If someone wanted to debug the application you had to shout, and you also could hear it, in the office: "I'm debugging!" or "I'm deploying!". Because we were on the same machine, there was only one process with the server and it meant that if you debug or deployed it would block it for the others.
Should I talk about code quality? Maybe not.1
Longtime reader, first time ranter!
I'm just here to complain about how everyone at my company sets "latest" for every dependency.
This wouldn't be the worst thing in the world, expect that no one fucking manages their version numbers...everything is still 1.0.X where X is the build number. Even if there have been breaking changes. Even if it's been like 5 years since the repo was created...
so when someone in the office finds a funny design or absurd code on our sites we play a game we named roulette: we check the versioning system and find who did it... there is no price in this game, that shame is enough :)3
REST apis. More than you think it is.
Just because you can access a resource by a uri, doesn't mean you have a good api.
Hypermedia that shit and let websites reuse your links from api responses, then we are getting somewhere.
Also, Fucking api versioning.. Learned the hard way that /v1/ doesn't mean Shit in most cases
How would you support multiple versions of an API and why?
- Multiple version instances behind a load balancer.
- Versioned controllers behind a proxy.
Curious to hear yours thoughts and reasoning.2
Long time ago I worked with a few developers on some relatively simple web project. We were using php and smarty and we used svn for versioning. At one point some dude joined the project as a php developer (with a few years of experience).
After a few days without any commits, we found out that he doesn't know what a SVN is or how to use it. After he learned how to use it we found out in our repo bunch of files with a following naming scheme:
I'm crying internally. The project(s) i work on have configuration files with dev and prod-info, the prod is just commented out. But thanks to reasons everyone has a different dev environment so there are many dev-config-blocks. I just use mine and carry on, BUT SOMEONE ALWAYS COMMITS THOSE FILES. I JUST THOUGHT OF IT NOW, BUT I'LL PUT THOSE FILES ON A BLACKLIST. FROM NOW ON YOU CAN ONLY COMMIT THESE FILES DURING A FULL MOON.
There's also this codebase to create licenses for our products. The license data fpr every customer is there, commented out. If you wanted to create another license, comment something and comment out another thing and you're good to go. THAT'S NOT WHAT VERSIONING IS FOR.4
My collegue denies to provide breaking changes in our login API in a separate version to the other teams depending on it.
What is the reason for his stubborn rejection?
It's scrum. We haven't planned the effort for realising a versioning concept for our API.
Let's build it in the next sprint as a part of live deployment strategy.
The point he miss is that the ProductOwner wants his API change deployed during the next sprint.
Additionally, it is best practice, having a compatible, deployable product after each sprint, without any risks.
Furthermore, another best practice to provide your API is one URI without a version part holding the current development of the API. And URIs with a version part in it to keep a specific request/response structure and behavior.
What really grind my gears are sayings like 'if the other teams had well programmed their software, modifying our API won't have any effect on them'
C'mon dude. That's far from reality, as anybody knows.
I can't accept, we provide unprofessional API builds, as he is going to do.
So, i have to spend my time and energy to change his mind, together with other software-architects, planning the big thing API-Gateway *sigh*2
Envy me. The fnew position I am getting spun up on has me assigned to take over the work of a guy who uses no versioning methodology and updates directly to production code. and I have to get it into CM!!!2
I had to build a few packages today from a git source.
Everything just plain text or shell scripts - so no fancy shit, no buildsystem... Nothing.
I was painfully reminded why I had forgotten a lot about dpkg package builds.
- seems like impossibro to define an output directory for debuild (../ from source which must be pwd/cwd)
- i used /opt/<vendor_name>... Purging the deb from system deletes opt too, as it is empty
- reprepro (or whateva it is called) fails with an "uncommon GPG error" instead of saying "I don't know which key to use"
- creating rolling release numbers (as the packages won't have a real versioning system...) is fun - when you remember that date isn't sufficient, as the time part is necessary to build multiple packages (versions) per day
Compared to an Gentoo ebuild, this was really rocket science....
Guess as soon as someone does not follow the debian way, he must be shunned and exiled. At least it felt like this ....
But it works now. Woohoo. *cries internally*
Do you guys version pre-release projects (Beta, Alpha) as for instance “Beta 0.9”, or “Beta 1.9”? I’m asking because I don’t know which one seems more clear5
We are working on an AngularJs 1.x project for a long time now. Maybe we’ll use it forever because we will never be allowed to rewrite the whole app with much timely tools 💆🏻♀️
I really like my position as the head of my department. But I am most definitely hitting walls(and in some way breaking them) concerning the way the CTO(my direct boss) deals with a lot of the things that his management team wants to do.
For example, the previous manager could only do so much in terms of directing a software team since she did not have a formal background in computer science or engineering, thus the developers that she had would tell her the different deals with many things and she would have to take their word for it. Nothing necessarily bad with this, but it just meant that a lot of things could have gone smoother had she the knowledge to fix said items. Whenever she would try to use resources(dev time or such) the CTO will resort to the all powerful manthra of "if it ain't broke don't fix it!".
but it was about more than fixing things that were breaking, our internal services and admin boards were built using all of the WRONG proper development practices, it feels as if they took the book of best practices.....and said fuck it and did whatever the fuck they wanted. It is the worst PHP/Java/JS code I have ever seen in my entire life and the reason why even though I do not concur with it I will always understand the dislike from other developers. Our services look like something that came out from the 90s, no style, no engineering concepts in place, no versioning no testing NADA zip(these are all web based services)
One in particular, it was an admin board used internally to let students evaluate their professors, the entire app is shit, and it was broken, for some UNGODLY reason, the original dev decided to use some weird external libraries he got from some blog somewhere and as such something that would take about 5 or 6 files is now a mess with over 200 php/js files all over the fucking place. The CTO insisted on fixing them, they were all broken, and I continuously told him that redesigning the application would be faster.
Mofo fought me on it, and in the end I did what I wanted and rebuilt the app.
It took me one afternoon. One fucking afternoon, over possibly 2 weeks of fixing it.
See, I am not one to just do whatever he pleases, but I am firm in my belief that if I know a better way I will do it and save precious time. The dude had to agree with me on this and promised to consider this shit on other items that will undoubtedly come up. He was lying out of his ass but oh well..........
Angular 5 was just released! *Yay*
on a completely unrelated note: does anyone get the versioning/naming scheme of angular?8
Here comes my rant about versioning.
Why don't you use semver? Or something that makes fucking sense?
I've been banging my head against this lib that was required, wondering why the thing was crashing everywhere, for hours. Then I had to dig through its code, for a while too.
And then I finally discover that, from 1.3.9 to 1.4.0, half of the API changed and was backwards incompatible. Yay. Also, one would think that's a thing worth of mention in the docs, but why bother right?
Looking to sharpen and pursue a SysAdmin/DevOps career, looking at online job offers to get the big picture of required skills and I say FUCK. It would take me a lifetime.
Azure, AWS, Google cloud platform.
CD tools: Ansible, Chef or Puppet
Scripting ninja with Python/Node and Shell/Power shell.
Linux & Windows administration
Mongo, MySQL and their relatives.
Networking, troubleshooting failure in disturbed systems
Familiarity with different stacks. Fuck. (Apache, nginx, etc..)
Monitoring infrastructure ( nagios, datadog .. )
CI tools: jenkins, maven, etc..
DB versioning: liquibase, flyway etc.
FUCK FUCK FUCK.
Are they looking for Voltron? FUCK YOU FROM THE DEEPEST LEVEL OF MY DEEP FUCK.1
Extremely frustrated with the release process and versioning system at my current company. Don't know if this is same everywhere or the half ass release managers can't think of a better way here.
Basically for any client raised issue that can't wait for next release are built as a hotfix. However hotfixes are never bundled togather or shiped to other clients. This is causing a vicious chain, two clients raise two separate issues on same version. Instead of fixing them as single hotfix (however minor the issues) we create two hotfix versions for each with only their issue. A week later same clients come back with the issue the other raised. Once again instead of bundling what is now effectively same code we build hotfixes on top of the clients respective branches. We now have two branches to maintain with same codebase. No matter how serious issue, the hotfix is never made generally available and always created on client's specific hotfix version.
Now that was an example for only two clients, in reality we have released five patch versions of a product in last 2 years. Each product version contains about a dozen artifacts (webapps, thick clients, etc) with its own version. Each product version being shipped to various clients. Clients being big banks never take a patch of product even if it fixes their issues and continues requesting hotfix. We continue building hotfixes on client branch and creat ever increasing tech debt. There is never a chance to clean up or new development. Just keep doing hotfix after hotfix of same things.
To top if all off, old branches are still in svn while new in git. Old branches still compile with ant new with maven. Old still build with java 5,6,7 while current with 8. Old still build from old jenkins serve pipelines while new has different build server. Old branches had hardcoded integration db details which no longer exists so if tou forget to change before releasing it doesn't work.
Please tell me this is not normal and that there are better ways to do this? Apologies I think I rambled on for too long 😅5
My boss that push the code on production without versioning it.
I deleted all the changes, and the fault was mine, of course.1
My manager asks, in Slack, if we can change the auto-tagger to update the patch instead of the minor version. I respond by saying, "Yes, it's in the Jenkisfile. Really we should switch to just <major.minor> and drop patch."
My manager asks why and I go on to say the last number is useless (unless you ship software externally and need to hotfix or security patch a minor release; internally they serve little purpose).
At my last job we dropped three numbers for two, and most other teams here only use two numbers.
He sends a link to the semantic versioning website.
The next day one of the other developers sends it to me in a private chat as a joke. 😂😅 I'm glad I'm not the only one who thinks our manager shouldn't be a manager.
Dependency hell - when you have a package you want to update and then you find out 3 other things depend on that version of that dependency and then your pretty much screwed so you just leave the original version of the package you were trying to update in place.
Every fucking time I execute a program I’m popped up with yet another motherfucking update available, then after I wait for the fucking download to finish and the install to proceed I have to ‘voluntarily’ restart the system… and guess what? Windows needs to update now!!! AH! Fucking cocksuckers… If that can compare to harassment was Firefox does its plain old gang bang rape as it now forces the fucking updates.
I remember a time not long ago (I’m not that old motherfuckers) when the only update was a fucking major update namely one that allow software to either run on a new OS or work at all. Not a goddamned typo fix on the about page… FUCK OFFFFFFFFFFFFFF!!!!!2
Folks, it's happening!
Look at this shit: they managed to create a web editor / infrastructure technology which enables you to write backends blazingly fast. No deploy time, no git (versioning with feature flags).
Sadly, this comes with the worst vendor lock-in ever. But it is still a great idea to take the approach to drastically remove complexity out of today's software.
I am torn. But I would prefer if it was OSS of course (to be able to self-host it).8
Random thoughts on more out of the box tools/environments.
Some time ago I had shown one of my coworkers about Pharo and he quickly got the main idea behind it but mentioned how he didn't like the idea of leaving behind his text editor to deal with source code.
Some time last week I showed the dude some cool 3d animations you can do with Pharo while simultaneously manipulating the code to change them in real time. Now that caught his attention particularly and he decided he wanted to know more about the language but in particular the benefits of fucking around with an image based environment rather than a file based.
Both of us reached the conclusion that image based makes file based dev enviroments seem quaint in comparison, but estimated that it was nothing more than a sentiment rather than a fact.
We then considered what could be the advantage/disadvantages of such environments but I couldn't come up with anything other than the system not having something like Vim or VS Code or whatever which people love, but that it makes up for it with some of the craziest IDE tools I had ever seen. Plugins in this case act like source code repos that you can download and activate into your workflow in what feels something similar to VS Code being extended via plugins written in JS, and since the GUI is maleable as it is(because everything is basically just subsets of morp h windows) then extending functionality becomes so intuitive that its funny
Whereas with Emacs(for example) you have to really grind your gears with Elisp or Vimscript in Vim etc etc, with Pharo your plugin system is basicall you just adding classes that will convert your OS looking IDE into something else.
Because of how light the vm machine is, portability is a non issue, and passing pharo programs arround is not like installing Java in which you need the JVM.
Source code versioning, very important, already integrated into every live environment and can be extended to do pushes through simple key bindings with no hassle.
I dunno, I just feel that the tool is too good to be true. I keep trying to push limits into it but thus far I have found: data visualization and image modeling to work fine, web development with Teapot to be a cakewalk and work fine, therr are even packages for Arduino development.
I think its biggest con would be the image based system, but would really need to look into how this is bad by any reason other than "aww man I want vim!" since apparently some psychos already made Emacs and VS code packages for interfacing with Pharo source trees.
Embedded is certainly out of the question for any real project since its garbage collected and not the most performant cookie in the jar.
For Data science I can see some future, seems just as intuitive and interesting as a Jupyter Notebook actually, but the process can't and will not be the same since I still don't know of a way to save playground snippets unless you literally create classes for it, in which case every model you build gets saved inside of an object, sounds possible but, strange since it is not a the most common workflow in jupyter.
Some of the environment is sometimes glitchy, but it does have continuos development and have not found many hassles.
There is a biased factor from my side: I seem to be wired to understand the syntax and simple object model better than in other languages. To me this feels natural as if I was just writing ideas rather than code, mostly because I feel that there really ain't much in terms of syntax, the language gets out of my way and the IDE feels like the most intuitive environment in the world to me. I can see why some people would find it REALLY weird of counterintuitive tho.
Guess I really am a simple dude.
Java jdk 10 just came out, but I only just started moving my projects over to build under jdk 9.0.4.
Oh Java 11 is out in beta as well?
Version numbers mean nothing to me anymore.3
When your colleague saves over your stylesheet wiping out hours of work...
Browser cache came to the rescue but still...5
When I said: "version numbers are cheap", I did not expect you to append new digits and identifiers to the existing versioning scheme.
did on my last project:
1 .Using QA env as dev env
2. Deploy in production not completely tested stuff (90% tested)
3. Run with errors in prod
4. Manual fix in prod
5. Git versioning1
One of the truth no one wants to say because what can not be can not be.... but...
Maven is fuck... bullshit... failure by design.
For each project I need an own settings.xml. Always something not working. The same artifactory password 10 times there. Null pointer exceptions all over the place. Basics like versioning not really solved.
In all my years with Ant I never had so much problems than with Maven.
This settings.xml is really a design failure. Crap.1
Next job I find has to be entertaining somewhat. I thought I could deal with boring work but I'm tired of it.I It's just so damn boring. I'm not even writing new code anymore, I'm just updating dependency versioning and restructuring tests. It's bumming me out seriously. The mental fatigue from struggling to keep my eyes open every day leaves me struggling to get out of bed in the morning.6
npm has to be the single worst package manager on the planet... Trusting devs to use semantic versioning properly and forcing devs to trust authors of dependencies to use it properly is nothing short of insane. The package-lock that is "supposed to be version controlled" causes *constant* merge conflicts. Using shrinkwrap in its place is borderline useless because it Doesn't. Lock. High. Level. Dependencies.
I don't know who designed this, but I want to give them a very bad day for every hour I've spent trying to lock versions correctly on a live project.
Not to mention requiring root by default to install things that can just run whatever they want is ludicrous.2
3 release branches for version 3.4. All of which are both behind and ahead of the other. Newest version of app. 2.1.5. Because versioning.
I recently tried to prototype a few pages for a new webapp I'm working on and--because I'm a masochist--decided to try something other than Bootstrap. It seems that no one can support backward compatibility and even Foundation's examples don't work with their current version.
Folks, add new stuff all you want, but don't break what works. If you do, at least update your damn example code!
Hello, I am doing master in Pharmacy, but I like programming and consider to switch or connect somehow industries. I could write simple scripts and small programmes in Python, but I want to write code with good practice from beginning.
So my question what should I know and put in use, maybe some resources if someone has them or just terms for further search. At this moment I use gitlab for VCS (my commits sucks and my whole usage of Git sucks, but at least I use branches), I am trying to separate control from model (MVC but I guess I do it poorly), also I use keepchangelog rules for changeling, and semantic versioning for versions, PEP8 and Pokemon names for my variables and functions as it helps read code later.7
I consider myself very skillfull in versionning tools.
In almoust every project I've had, both in school and work, I' ve dealed with different tools to track file changes.
However, in my personal projects I haven't used any dev oriented versioning tool, except the ones existent in cloud/platform services like google drive, dropbox or others similar.
Looking back.,I wish I would do more github projects instead of random folders shattered in every service I know2
When a vendor asks you to implement their API on a client site and you spend half a day reading documentation they send you to realise the API is nothing like the documentation.
Contact vendor who replies with:
"Oh, did I send you the link to the v2 API docs? We are on v3 now."1
At the company I work today, looking at some repositories from hardware and firmware engineers I found this folder structure.
| - 1.0
| - 1.1
| - 1.2
| - 2.0
... and so on1
Today I have learnt how important versioning is, changing half the program to diagnose an issue only to realise that you were making a typo and changing the wrong control. Time to ctrl+z.1
"We haven't set versioning for yarn and nodejs because we don't want to limit ourselves. Our webapp should work with any recent version. Breaking changes are rare, anyway."
Thanks, douchebag. Very helpful.
I didn't look through their package.json, but hopefully those dependencies are versioned.
Context: I'm an ops and am damn tired.
To the electronic/hardware devs here: do you know a (good - optional) diff tool for schematics/PCBs that is independent of a certain ECAD tool?
So far I know of cadlab.io, but I'd really like to have another possibility than an online service.3
I think we should ask the CDC to start versioning viruses. I mean we started with COVID-19. From what I hear it should be COVID-19.1 or COVID-19.2 by now.2
After being here for some time already, it astounds me how many organizations still don't use git or any form of versioning tool.
Do you think that's a good idea to work with 4 developers on a shared development server without functional or technical specs and versioning software or testing methods/environment?
Just asking for a friend, not for my future employer...2
Good deed done for he day, my friend was versioning his application by using zip folders with the date as the name of the folder. Introduced him to git because the university hasn't thought us how to use it yet and now he is delighted! Note I'm in my final year and college has barely mentioned using version control
Swift versioning is a really shitty bit. But not as bad the unreadable mashed together bastardized horseshit that is objective-c
Me: We're going to use git for its versioning to document the changes to these documents because doing this non-electronically would be resource intensive and use a lot of paper.
(One year later.)
Boss: Can you show me the steps on how to do this?
MFW boss doesn't know how to git: 😧1
i just learnt how much clearcase sucks the hard way. i always used git for personal projects and am used to finding a simple solution to any problem at most one stackoverflow away, i just messed up my local repo, and experienced people could not manage to undo it. i mean come on, this is a f**king versioning software, how hard can it be to delete everything local and re-pull from remote without messing up configuration files? either clearcase has some serious design shortcomings for my understanding of a versioning software, or it is so overly complicated that nobody actually knows how to revert this mistake.2
How do you handle your configurations of your prompt, ide, etc especially when changing or reinstall the pc? Do you use something similar to git repos with dot files or are there other good methods to manage all of this?1
At a team meeting today a fellow coder was presenting a new version of a react wysiwyg editor component that is used in many of our online tools. The new code changed the way data was stored in redux and subsequently what data was saved to the database and sent to other tools that used the wysiwyg. The coder suggested that we release the new component as a patch version of the old so we would not have to update the packages of the other tools that use it. Our boss went along with it! I had to spend time arguing for using proper versioning so we don't break compatibility.
This guy nails it!
A talk about (semantic) versioning and breaking updates which make you spend countless hours to just adapt to a new library upgrade and how we can do it with a bit less PITA.
tl;dw: The answer is codemods.
What's your routine for versioning pre-releases?
While working on a big change, like "milestone 2.0", how do you, while working on it, version it before the main release? To keep it being 2.0.0 on release and not for example 2.130.0 (since it was "2.130.0-pre" just before release)?
Or is it my fantasy that when released to public it "should" always be *.0.0?1
What's it called when you count down to 0 for your versioning instead of up. Once you get to 0 your software updates freezes. I tried searching online but I keep getting counting for "for loops." This is eating at me lol.
so we want to use this software for document mangement (versioning and stuff). i totally understand why the developer used rtf for document templates. but it took me freaking 6 hours to create a simple document header while finding out 500 designs and methods that didn't work due to the rtf format corset that differs more from word formatting abilities that i expected.