Details
-
AboutBeginner Programmer
-
SkillsPython
Joined devRant on 8/24/2017
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
-
Writing automation tools using SSH feels so backwards... Thank God for paramiko and click!
Also GPT4 is a better documentation than Paramiko's. Especially for edge cases!1 -
is it necessary to have cherry picking a part of git branching/release process?
we have 3 branches : develop, release and master.
currently every dev works on feature as follows : they make a branch out of develop, write code, raise pr against develop, get it reviewed and merge back to develop. later the release feature list is generated, and we cherry pick all the release related commits to release branch, and make a prod build out of release branch. finally, the code is moved to master and rags are generated accordingly.
so the major issue with this process is feature blocking. as of now, i have identified 4 scenarios where a feature should not be released :
1. parallel team blocker : say i created a feature x for android that is supposed to go in release 1.2.1 . i got it merged to develop and it will be cherry picked to release on relase day. but on release day it is observed that feature x was not completed by the ios dev and therefore we cannot ship it for android alone.
2. backend blocker : same as above scenario, but instead of ios, this time its the backend which hasn't beem created for the feature x
3. qa blocker : when we create a feature and merge it to develop, we keep on giving builds from develop branch adter every few days. however it could be possible that qa are not able to test it all and on release day, will declare thaf these features cannot be tested and should not be moved to release
4. pm blocker: basically a pm will add all the tickets for sprint in the jira board. but which tickets should be released are decided at the very late days of sprint. so a lot of tasks get merged to develop which are not supposed to go.
so there's the problem. cherry picking is being a major part of release process and i am not liking it. we do squash and merges, so cherry picking is relatively easy, but it still feels a lot riskier.
for 1 and 2 , we sometimes do mute releases : put code in release but comment out all the activation code blocks . but if something is not qa tested or rejected by pm, we can't do a mute release.
what do you folks suggest?9 -
i am having a feeling that getting into software branch of it industry might be a wrong decision. in my college years, i got to explore different domains in tech :
1. software development : frontend tech , backed tech, mobile tech : somethings i and a million other people know
2. os and internal softwares : os, compilers, processor coding , chip manufacturing etc : don't know what this industry is known but we devs rarely go that deep in the hole
3. the network industry : computer networks , topologies, packets, data transfers etc. again not sure what this industry is but 4g/5g brands/ cisco seems to making a lot of money with this
4. cloud computing, devops, data etc : i guess some backend devs explore this domain too.
5. ai/ml data sciences/web3 : the new fad
6. biotech :?? don't know anything about this at all
7. graphics/management/qa : the other associated sisters of software dev. they are seeing a similar recession
8... ans so on.
i chose the 1st one in my undergrad as my career and now regretting this i am thinking of doing masters to fix my mistake and take a job in some other industry that is still blooming and has a future for sustaining a recession for atleast 30 years.
so any suggestions/experiences?8 -
I'm notoriously bad at Git. By that I mean I REALLY REALLY SUCK AT IT. And I have the curse of short memory and an even shorter ability to retain the how-to, muscle memory knowledge of things if too much time passes.
So, I was staring down the gullet of merging two separate repositories onto my local machine and then pushing the result to a remote server. Not having the benefit of someone else to bounce this off of, and always finding the usual Git docs too dense and obtuse, I turned to ChatGPT to help me sort it out.
Guys, where has this been all of my life? I know it's not perfect and it can make mistakes. I knew that going into it, so I made preparations in case this failed. BUT. IT. WORKED! I feel like it has put me into the Star Trek:TNG universe where I can say "Computer, do the thing." and it does that thing. Here's the prompt I used and which it answered perfectly.
"Play the role of a git coach. I have two git repositories. One is on Bitbucket. The other is on GitHub. The branch named "master" on Bitbucket has the latest code. The branch named "master" on GitHub needs to be updated to what's on the Bitbucket "master" branch. Please write the series of git commands that I will need to accomplish this."9 -
Do some cool shit that I’ve always wanted to do.
- learn more about machine learning and computer vision
- learn C / C++ / rust
- learn embedded systems / programming
- learn more EE centered stuff3 -
!dev
did you ever have a few days of total emotional turmoil and chaos when you were doing weird things, unsure why, and then it resolved in a way which made you feel as if your mind and soul were just reset and pointed in the right direction, and you suddenly felt at peace, knowing what to do, focused, calm and unafraid?8 -
That would probably be implementing multithreading in shell scripts.
https://gitlab.com/netikras/bthread
The idea (though not the project itself) was born back when I still was a sysadmin. Maintaining 30k servers 24/7 was quite something for a team of merely ~14 people. That includes 1st line support as well.
So I built a script to automate most of my BAU chores. You could feed a list of servers - tens or hundreds or more - and execute the same action on each of them (actions could be custom or predefined in the list of templates). Neither Puppet nor Chef or Ansible or anything of sorts was consistently deployed in that zoo, not to mention the corp processes made use of those tools even a slower approach than the manual one, so I needed my own solution.
The problem was the timing. I needed all those commands to execute on all the servers. However, as you might expect, some servers could be frozen, others could be in DMZ, some could be long decommed (and not removed from the listings), etc. And these buggars would cause my solution to freeze for longer than I'd like. Not to mention that running something like `sar -q 1 10` on 200 servers is quite time-consuming itself :)
And how do I get that output neatly and consistently (not something you'd easily get with moving the task to a background with '&'. And even with that you would not know when are all the iterations complete!)?
So many challenges...
I started building the threading solution that would
- execute all the tasks in parallel
- do not write anything to disks
- assign a title to each of the tasks
- wait for all the tasks to complete in either
> the same sequence as started
> as soon as the task finishes
- keep track of each task's
> return code
> output
> command
> sequence ID
> title
- execute post-finish actions (e.g. print to the console) for each of the tasks -- all the tracked properties are to be accessible by the post-finish actions.
The biggest challenges were:
a) how do I collect all that output without trashing my filesystems?
b) how do I synchronize all those tasks
c) how do I make the inception possible (threads creating threads that create their own threads and so on).
Took me some time, but I finally got there and created the libbthread library. It utilizes file descriptors, subshells and some piping magic to concentrate the output while keeping track of all the tasks' properties. I now use it extensively in my new tools - the ones where I can't use already existing tools and can't use higher-level languages.4 -
Here, you are able to see a Windows installation in its natural habitat. This particular specimen is confused whether an internet connection exists or not.
(The internet was working fine on that machine btw)5 -
Has anyone else actually *used* mutation testing at all?
Heard a lot about it recently - it seems all the rage amongst the bloggers, but I'm generally always very sceptical of things touted as the "latest hotness" (my thoughts on blockchain for instance are well known.)
So I went ahead and whacked http://pitest.org/ into one of my more recent pet projects to see if it offered anything decent. Surprisingly, it did - in particular it caught a number of places where switching "<" for "<=" and similar had no affect on the pass / fail rate (indicating the tests should be better.) There were a *few* false positives, and some which were borderline useful, but as a whole I'd say it was a worthwhile addition.
Curious as to if anyone else has had the same experience?1 -
I literally spent 3h looking at all the freaking formulas in my pathtracer which was producing the wierdest psychedelic images for no reasons... And then I finally found this... And I want to kill myself...18
-
I hate it when marketing people decide they're technical - quote from a conference talk I regrettably sat through:
"The fourth industrial revolution is here, and you need to make sure you invest in every aspect of it - otherwise you'll be left in the dust by companies that are adopting big data, blockchain, quantum computing, nanotech, 3D printing and the internet of things."
Dahhhhhhhhhh6 -
The Linux Kernel, not just because of the end product. I find it's organizational structure and size (both in code and contributors) inspirational.
Firefox. Even if you don't use it as your main browser, the sheer amount of work Mozilla has contributed to the world is amazing.
OpenTTD. I liked the original game, and 25 years after release some devs are still actively maintaining an open source clone with support for mods.
Git. Without it, it would not just be harder working on your own source code, it would also be harder to try out other people's projects.
FZF is possibly my favorite command line tool.
Kitty has recently become my favorite terminal.
My favorite thing open source has brought forth though is a certain mindset, which in the last decade can be felt most heavily in the fact that:
1. Scientific papers with accompanying GitHub urls, especially when it comes to AI. Cutting edge research is one git clone away.
2. There are so many open hardware projects. From raspberry pi to 3d printers to laser cutters, being a "maker" suddenly became a mainstream hobby.12 -
I smoke a lot of weed, then code for half an hour in my petproject and then I can do whatever the fuck im suposed to do6
-
Last night I realized I may be spending too much time programming. Got together with some non-programmer friends, and once I got drunk, all my conversations were formatted in my head as api requests in Json 😅😅2
-
"… try to absorb what is useful, discard what is useless, and add what is essentially your own." - Bruce Lee
-
Meeting up with @CoffeeNCode was awesome! We actually have a lot in common :D
Asked her for a selfie together so here we go:56 -
I like a Product Manager/Owner/CTO who invites coffee when a dev burnout. This is not a story, a hope seems to be.2
-
Don't be stressed about day-to-day challenges/problems. They'll mean nothing in one year or even one month. But the health damage caused by stress will stay with you.2