Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "lodash"
- Sure! What do you need?
Oh, it’s very simple, I just want to make a static webpage that shows a clock with the real time.
- Wait, why static? Why not dynamic?
I don’t know, I guess it’ll be easier.
- Well, maybe, but that’s boring, and if that’s boring you are not going to put in time, and if you’re not going to put in time, it’s going to be harder; so it’s better to start with something harder in order to make it easier.
You know that doesn’t make sense right?
Okay, so I want to parse this date first to make the clock be universal for all the regions.
- You’re not going to do that by yourself right? You know what they say, don’t repeat yourself!
But it’s just two lines.
- Don’t reinvent the wheel!
- One component per file!
- It happens, and you’ll get lost managing your files as well. You should use Webpack or Browserify for managing your modules.
- Yes, but some people still have previous versions of ECMAScript, so it wouldn’t be compatible.
Why is it called ECMAScript then?
- It’s called both ways. Anyways, after you install Webpack to manage your modules, you still need a module and dependency manager, such as bower, or node package manager or yarn.
What does that have to do with my page?
- So you can install AngularJS.
Oh, that’s great, so if I modify one sentence on a part of the page, it will automatically refresh the other part of the page which is related to the first one and viceversa?
- Exactly! Except two way data binding is not recommended, since you don’t want child components to edit the parent components of your app.
Then why make two way data binding in the first place?
- It’s backed up by Google. You just don’t get it do you?
I have installed AngularJS now, but it seems I have to redefine something called a... directive?
- AngularJS is old now, you should start using Angular, aka Angular 2.
But it’s the same name... wtf! Only 3 minutes have passed since we started talking, how are they in Angular 2 already?
- You mean 3.
Okay, I now know Angular 6.0, and use a component based architecture using only a one way data binding, I have read and started using the Design Patterns already described to solve my problem without reinventing the wheel using libraries such as lodash and D3 for a world map visualization of my clock as well as moment to parse the dates correctly. I also used ECMAScript 6 with Babel to secure backwards compatibility.
- That’s good.
- But did you use TypeScript?37
Lodash is the new JQuery.
"How do I sum two numbers?"
"Uhm... dude, I think you are gonna need Lodash"4
Why don't devs read the fucking docs?
Time and time again I find my coworkers inventing new ways of doing stuff that could easily be done with existing features.
Today I saw this on a code review (functions are from lodash):
That's what fucking `find` does, you dense motherfucker!
This is just a tiny example. I've seen so much of this shit. Sometimes it's almost art how they find ways to solve problems without actually reading the docs.7
When defining a range, let's say from 1 to 3, I expect:
[1, 2, 3]
Yet most range functions I come across, e.g. lodash, will do:
=> [1, 2]
And their definition will say: "Creates an array of numbers ... progressing from start up to, but not including, end."
Yet why the fuck not including end? What don't I understand about the concept of a frigging range that you won't include the end?
The only thing I can come up with that's this is related to the array's-indexes-start with-0-thing and someone did not want to substract `-1` when preparing a for loop over an 10 items array with range(0,10), even though they do not want a range of 0 to 10, they want a range from 0 to 9. (And they should not use a for loop here to begin with but a foreach construct anyway.)
So the length of your array does not match the final index of your array.
Yet now we can have ranges with very weird steps, and now you always have to consider your proper maximum, leading to code like:
var start = 10;
var max = 50;
var step = 10;
_.range(start, max + step, step)
=> [10, 20, 30, 40, 50]
and during code review this would scream "bug!" in my face.
And it's not only lodash doing that, but also python and dart.
Except php. Php's range is inclusive. Good job php.4
I wasn't sure what to say at the moment, but then I thought of something.
Lodash is the most depended upon package in npm. 90k packages depend on it, more than double than the second most depended upon package (request with 40k).
Lodash was also created 6 years ago.
This means lodash has been heavily tested, and is production ready.
This means that reading and understanding its code will be very educational.
Also, every lodash function lives in its own file, and are usually very short.
This means it's also easy to understand the code.
You could start with one of the "is..." (eg isArray, isFunction).
The reason for such choice is that it's very easy to understand what these functions do from their name alone.
And you also get to see how a good coder deals with js types (which can be very impredictible sometines).
And to learn even more, read the test file for that function (located in tests/<original file name>.js. For the most part they are very readable and examples of very good testing code.
Here's the isFunction code
Here's the test for isFunction
The one thing you won't learn here is about es5, 6, or whatever.3
I've been working with js for like 5 years now, and I figured I could help some people out, if needed.
I wouldn't consider myself a js lord, but I have some decent experience, and even if I don't know something I'll be honest about it and at the very least I'm pretty sure I'll point you in the right direction.
I'm fond of vue, lodash, es6, node, eslint bla bla. I also know rails.
In any case, my objective with this is to learn myself.
So feel free to tag me if you have any type of question about anything js.
Here's to actually being done with changes in the morning, a colleague requesting a lodash function call replaced by vanilla js, and my unit tests exploding as a result of the changes. Apparently lodash is far more forgiving than vanilla js about what you throw at it. That's my day gone. I need a drink. cheers!5
Hi, this is my first rant!
Today our Product Owner reported that he couldn't continue with his conformity tests because there were some blocking errors. Looking at the controller's code of the page he reported with errors I found this debugging nightmare5
That feeling of utter uselessness when you read "Really? That took you all day?" in your gf's eyes when (proudly) showing that you finally got the map markers working reactively on map drag.
Today there was a question on the react native forum asking how to map an array..... (.map(mapFunction))
1) it's the wrong place for the question
2) like 80% mentioned ramda, lodash, underscore :(7
Lodash, Rimraf, Grunt, Gulp... I'm still not convinced that our frontend guy isn't just playing Pokémon Go all day3
What the actual fuck, I installed lodash using "npm install --save lodash" and npm just decided to delete webpack and fuck up the webpack.dev.config.js and actually my whole project... I want to cry
Why the fuck is this fucking thing called npm falling apart at every opportunity it gets 😠1
Or visit https://sidekik.js.org
I am looking for people looking for open source contribution. For the project.
I am making an Typescript based open source library for Basic Data Structures like Trees, Lists etc. Lodash for Data structures. So that I can be used in projects. I am making it in Typescript. If you are interested in learning and coding data structures, Typescript. Then hop on. Send a PR or Add Issues.3
Asking for a friend....
New job, fairly new to web development, very new to JS. I am failing miserable at my job can’t complete tickets which are mostly bug fixers created by testers. So I am debugging code that I didn’t write on a tech stack I do not know (ampersand, q, radio, lodash, react, etc)
Do I try to learn the language better?
Focus on learning debugging with dev tools and getting better at using the webstorm IDE.9