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 - "say no to npm"
Init and Hello. My name is git and this is my story.
I just arrived in this system recently by the apt highway. It's not the only way though. Some for example used the npm hype-train, others arrived from the ssh shore. No matter where we came from the next step on our agenda was time to introduce our self at the event destined for all new-comers to the system.
"As many of you I reside in the usr-bin district. I'm really into history and commitment! I like it when people work together, so I'm always eager to bring all branches together."
"But what is it actually good for?", asked Curl, which I already met at the bus station. Many nodded in agreement. It was odd. Somehow I felt not quite at home. All the others seemed so different based on their field of work.
"We have worked here in a really agile environment for ages. There is no need for any kind of strange bureaucracy.", said another voice.
All attempts to convince them from the beauty of history or a little bit of management were unsuccessful. It was just the beginning of a not so interesting stage in my life - to say the least.
Today was another of 'those' days. I live in this community for quiet a while now and unfortunately nothing really changed - at least for the good. I sat on my branch of the tree with all the others around and there was nothing really to do for me. Again. I mean, actually it's true. I have to admit it. There is just no work on this world for someone like me. All the others seem to be so busy, while I just have to sit around and question my own existence. Since I grew tired asking these questions to myself, I stopped it. I can't do a thing actually. That's not how this world works.
"Hey fagit, anything meaningful to add to our delightful conversation?", nginx shouted over to me from another branch of the tree. Before I was able to give an indifferent answer the voice just continued.
"Oh, sorry. I forgot that you have no purpose after all. Well, never mind!"
Everyone started laughing at me. It was not too bad by the way. Actually, this was quite ordinary. These fucktards completely ran out of creativity. If it wasn't for that mere emptiness gaping right above my guts, I'd actually be disappointed. I even got accustomed to the alias 'fagit'. Quiet sad given the fact that i really like my real name. If only someone would mind using it... First too quiet to notice but growing in intensity a rumbling emerged from somewhere deep within the tree. Out of a sudden everyone stopped laughing. The voices slowly faded while the growling from afar grew louder. It had come. Not more than a shadow reached out from the tree and faster than anyone could comprehend nginx was simply gone. Killed in an instance.
Disclaimer: This story is fictional. No systems were harmed in its creation.4
npm: "npm does not support Node.js v10.24.0; You should probably upgrade to a newer version"
Also npm: "Supported releases are the latest release of 4, 6, 7, 8, 9"
Uh...good to know this piece of software is still a dump where rejected code goes to rot.2
My boi states that node's biggest issue has always been npm and the quality of packages. I always contradict those statements by saying that if one uses community standards and the best packages then one does not need to worry about the quality(i.e mongoose over some unmaintained mongo wrapper etc)
I sometimes catch myself finding that my way of thinking adapts better to JS than it even does Python (which is his preference for deep learning) and whilst there are some beastly packages for python in terms of quality and usefulness such as matplotlib etc that one can do great things with the equivalent JS.
I mean, tensorflow.js came from the same wizards that did tensorflow (obviously) and i find the functional approach of JS to be more on par with how we develop solutions.
I am no deep learning expert, and sadly I have no professional experience with machine learning. But I venture to say that we should not cast aside the great strides that the JS community has done to the language in terms of evolution and tooling. Today's Js is not your grandaddy's Js and thinking that the language is crippled because of early iterations of the language would be severely biased.
What do you guys(maybe someone with professional experience) think of Js as a language for machine learning?
Do you think the language poses something worth considering in terms of tooling and power for ml?3
Here comes your millennial diagnosis of a hype word filled architecture and how its affecting me:
I was diagnosed with a mentally and socially crippling degree of OCD at a young age. As I got older and away from areas that contain hundreds of people on daily basis, my tendencies resided but still manifest themselves in lesser ways. Over the last 8 years of development, I've taught myself to steer these compulsive tendencies into the art of software architecture and code quality.
Over the last 3 years Ive become more obsessed with the concept of designing agnostic, pluggable pieces that are weighed down by very few dependencies. I had not read any books on pluggable architecture or dove deep into what SOLID means to me. It just "naturally" felt like an evolutionary step in where my software quality needed to go. I had never approached microservice architecture and at the time knew little of it so instead I went as far as breaking php or node components up into their own packages on npm/packagist. Making packages of them was as far as I could go to assure my components were entirely plug and play. It helped my mind understand them as separate entities and devs after me know that they in no way could depend on my core suite of services.
Then I ran into this "Clean architecture" book and my initial reaction through out it was "hmm, this is a much better way of achieving what I've organically been coming to". Inverted dependency was new to me. I had heard it a thousand times but never put it to practice. I approached agnostic behavior by much harder means of separating binaries into their own address spaces or combining them from different binaries to run in synchrony. The idea of pushing hard decisions off and separating concerns through interfaces was an eye opener but my it still does not solve the issue of monster repos.
I don't understand how teams allow services to grow exponentially with little check and Idk want to know. It doesnt take a principle dev with 20 years experience to say "this shits starting to get out of hand, lets split it". The minute you are forced to use your IDE's global search to work efficiently within the code base, it's too late. As silly as separating a project by npm packages sounds, it still was just a logical means of breaking up something far too complex so that it doesnt get in its own way.
Then came micro-services or my final realization of it. Ive found a perfect placement that satisfies my own compulsion for cleanliness between the principles of clean arch (or onion, or port arch) and service oriented arch. Teams work well within small codebases. They work well with low dependencies. They work well in a suite of services that can be plucked and rewritten without cascading dependencies to consider. Teams work well when given hard http specs to abide by when talking with other services or with a gateway.
Now someone tell me where in the flipping fuck I can work where these architectures are taken advantage of. Ive been through 3 companies in three years and each has been a shit show of monolithic web apps, mono api's. Shit our last suite thats now sunsetted was 600k lines of vanilla php, no framework, no orm, different approaches to architecture that did not unify, high dependencies, one repo.
The biggest thing coming out of that for me was knowing what I despise in architecture. Having these horror stories to pass on forever when discussing our bright futures. Im rambling now but I suppose that becomes the closure needed for this ted talk. Going through hell and coming out with a lesson learned. Feeding my mental disadvantages in life with best practices in my career.1
Background: We switched from just simple old PHP and JS using notepad++ to PHPStorm and its infinite configurables, Symfony 4, Twig, Composer, Doctrine, Yarn, NPM, Bootstrap, ( thank the stars we didn't try to add Docker in with all this ), any other junk I'm missing here? Then upgraded to Symfony 5.
Symfony's autowiring: madness behind the curtains. I get frustrated about when and where I can just magically inject these dependencies or use config variables, you know, like the ones you define in service.yaml. Hmmm, "service".yaml. In a controller you can say getParameter() but in a service you have to inject the parameter, FROM THE "SERVICE".yaml!!! Autowiring drives me nuts. Ok, so we can supply dependencies using the constructor, that's great! Within a controller you never have to instantiate the object you're passing to the constructor (autowiring handles that). That's cool, weird when we you try to trace it for the first few times, but nice I guess. Feels like half-assin' it. What bugs me here is that it only works in controllers... I guess out of the box.. i'm not even sure. To get that feature to work for services you have to make some yaml edits. Right?Maybe? Some of the Symfony tutorials have you code up some junk then trash it. Change config then wipe that out and do X instead... so I have no idea what "out of the box" for Symfony really is.
Found this cool article that describes my frustrations in better terms and seems like a good resource to learn about autowiring. I need to continue my yaml wizardry classes. https://alanstorm.com/symfony-autow...
.....And on to YAMLs, or CSS, or JS or any other friggin' change you make to a file anywhere... Make a change, reload page, nothing... nope you have to do some hidden cheat combo of yarn dostuff -> cache:clear -> cache:warmup -> cache:cache:the:cache ... I really really hate this crap. Maybe I'm too old school for all this junk. It was simple with pure PHP. Edit code, push file, reload page, and oh look it changed! Done. So happy! Ok, Ok. Occasionally the js or css might get cached by the browser and you have to ctrl/f5 or Shift/f5 .. one of those. With this framework there's just so much more that you have to remember to do get some new feature of your site loaded.
Now, I totally get wanting to use some type of entity framework, but I feel like my entire world turned backwards. Designing tables using something like MySQL Workbench made sense. I can see all the columns and datatypes right there as i'm building them. From what I've experienced now with Symfony/Doctrine is you have to make and entity, get a shit-ton of question lobbed at you and if it's a relation field you have to really have a clear idea of the cardinality up front. Then we migrate that to the database. Carefully read through the SQL if you really really just want to use migrations:migrate in Prod. That alter table could cost you some some downtime if your table is large.
Some days man....