There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

programmer_humor

This magazine is from a federated server and may be incomplete. Browse more on the original instance.

fibojoly , in Thought I would share my success

The sad part is feeling so happy yet having no one to really share it with, because most likely you were working alone to solve the issue and when you explain the whole thing it sounds so silly… like trying to explain how funny a joke you made was. “I guess you had to be there”.

lechatron ,
@lechatron@lemmy.today avatar

And the opposite where it was something so stupid you’re embarrassed to tell anyone it took so long to solve. The 30hr ticket with a 1 line change.

fkn OP ,

😅 Mine ended up being only like 50 lines or so total. Complex, pervasive, data coupling with security concerns and my own ignorance were the primary drivers for the time taken on this one.

fkn OP ,

We have been doing some new pair work processes to expand group capabilities (and to train up some juniors) so I am happy to report that I got to share this with two whole people.

SGG , in Thought I would share my success

Next day: Find out the fix causes a new edge-case error, start all over again.

lechatron ,
@lechatron@lemmy.today avatar

Oh yeah, I love edging.

magic_lobster_party ,

I’m feeling edgy

fkn OP ,

That’s part of why it took so long. Every day I thought I was done a new person would be added to the review and they would identify a security and/or use case edge case.

DanielCF , in The birth of JS

You just have to look at the problem from a different angle.

EyalL , in Planning is for the weak

Weeks of coding can save you from hours of planning

OsrsNeedsF2P , in Wow, what a comp for doing free consulting work ¯\_(ツ)_/¯

With the way SO treats their mods, I’m very much looking forwards to an alternative pick up

douglasg14b , in Hours of work
@douglasg14b@programming.dev avatar

If you do this enough you know how to design your solutions to be relatively flexible. At least for your backends.

Your frontend will always churn, that’s the nature of the job.

vivadanang ,

Your frontend will always churn, that’s the nature of the job.

Yep. The trick is to be gone before anyone finds the gross stuff needed to make it all work.

OsrsNeedsF2P ,

cries in open source frontend development

fiveoar , in Planning is for the weak

Deployments and deployment frequency pretty squarely a developer’s responsibility…

Anticorp ,

Starting a project early enough to deploy on time is a management responsibility.

OsrsNeedsF2P ,

Best I can do is add 3 tickets during Monday’s scrum

("What do you mean your tickets slipped again?)

GarytheSnail ,
@GarytheSnail@programming.dev avatar

Yall aren’t being told to write your own tickets?

OsrsNeedsF2P ,

Nah we get given tickets.

The tickets only have an ambiguous title, then it’s our responsibility to figure out what it’s about and come up with the estimates.

After our weekly planning meeting

SpaceNoodle ,

Our mind reading powers can only go so far.

OsrsNeedsF2P ,

Give me a perfect spec and I’ll give a perfect timeline

DreadPotato ,
@DreadPotato@sopuli.xyz avatar

No you won’t, because even if everything is perfectly specced you’ll encounter unforeseen issues during implementation. So you’ll either overestimate or underestimate the time required.

nxfsi , in The birth of JS

The tech equivalent of inventing leaded gasoline.

Cocoa6790 , in The birth of JS
@Cocoa6790@kbin.social avatar

Not enough alcohol involved.

MentalEdge , in The birth of JS
@MentalEdge@sopuli.xyz avatar

Ah. The shork did the math. This explains a lot.

Rozauhtuno , in I'll just sort it myself
@Rozauhtuno@lemmy.blahaj.zone avatar

JavaScript was made in 2 days through a drunken stupor, and it shows.

csolisr ,

It’s sad to have the rushed ramblings of a bigot become the fundamental block of the modern world wide web. Why couldn’t it be at least made by a more competent bigot like Carmack?

nao , in I'll just sort it myself

sort -n

pamymaf , in The lengths we have to go to
@pamymaf@kbin.run avatar

@alphacyberranger
This is why I have my VSCodium set to highlight all indentation levels in my settings.json

To see the editor indent guides, set "editor.guides.indentation": true and "editor.guides.highlightActiveIndentation": true.

editorIndentGuide.background: Color of the editor indentation guides.
editorIndentGuide.activeBackground: Color of the active editor indentation guide.

https://code.visualstudio.com/api/references/theme-color

Toldry ,
@Toldry@lemmy.world avatar

Can you please share a screenshot of how this looks like?

pamymaf ,
@pamymaf@kbin.run avatar

@Toldry

Here's the relevant section of my settings.json

json { "workbench.tree.renderIndentGuides": "always", "workbench.tree.indent": 15, "editor.guides.indentation": true, "workbench.colorCustomizations": { "editorIndentGuide.background": "#fd6bff", "tree.indentGuidesStroke": "#fd6bff" } }

@alphacyberranger

LanternEverywhere , in I'll just sort it myself

As a non-programmer, why does it do this? Sorting by leftmost digit seems super dumb.

jormaig ,

Because when it’s sorting some of them as ints and some of them as strings. JavaScript has implicit conversion to string.

kevincox ,
@kevincox@lemmy.ml avatar

Wrong. JavaScript sort’s default comparison function always converts to strings.

jormaig ,

Only if one of them is a string right? If you have only numbers then it works fine right? Right? (Please say that I’m right 😭)

kevincox ,
@kevincox@lemmy.ml avatar

No. It always compares by converting to string. I actually think this is more consistent then having different behaviour if you have a string somewhere in your list.

Basically the default comparator is a.sort((a, b) => ${a}<${b} ? -1 : 1).

nero ,
@nero@lemmy.world avatar

It sorts them based on their unicode character, not the actual numbers. 1 is U+0031, 2 is U+0032, etc.

KiofKi ,
@KiofKi@feddit.de avatar

“By default, the sort() function sorts values as strings.

This works well for strings (“Apple” comes before “Banana”).

However, if numbers are sorted as strings, “25” is bigger than “100”, because “2” is bigger than “1”.

Because of this, the sort() method will produce incorrect result when sorting numbers.”

www.w3schools.com/js/js_array_sort.asp

floofloof ,

It also produces incorrect results in many languages other than English. You can pass it a compare function that uses localeCompare or Intl.Collator to get a correct alphabetical sort.

ImpossibleRubiksCube ,

JavaScript is what’s called an “untyped” language, so here, it assumes that the numbers are words, and tries to sort them alphabetically. Specifically, it tries to sort them alphabetically as a dictionary would in a left-to-right language like English. In this case, just as “apple” would come before “asterisk”, 100000 would come before 21.

(Some would argue that it’s more of a “weakly typed” language, I know, but I’m trying not to be pedantic here.)

Sorting them as actual numbers would require some extra explicit instructions and guides. Most typed languages, like C, aren’t like this.

affiliate ,

is there a good reason for javascript to work like that? python also isn’t typed like C and it sorts integer lists in the “normal” way, so it seems avoidable. (i don’t really know what im talking about here. i’ve never used javascript and i’m not familiar with how typing works under the hood.)

Quasari ,

Mainly because JavaScript was designed to work along side HTTP in a browser. Most of its input will be text, so defaulting common behavior to strings makes some sense.

affiliate ,

thank you for the explanation, that does clarify things

severien , (edited )

That’s misleading at best and most likely just false, and it’s worrying it’s so upvoted.

There’s no historical record explaining why this was designed this way, but we can infer some things. HTTP is very unlikely a factor, XHR / AJAX has been added years after the .sort() function. Additionally, it doesn’t make sense in the context that other comparisons are not string-wise (sort()/quicksort is basically a series of comparisons).

The trouble with JS arrays is that they can contain any values - e.g. [false, undefined, 1567, 10, “Hello world”, { x: 1 }]. How do you sort those? There must be one function to compare every combination of value, but how do you compare booleans and objects?

There’s no such function which would provide reasonable results. In that context, doing .toString() and then string-wise comparison/sorting doesn’t seem that crazy - every object has .toString(), it will compute something, and often it will work well enough.

There could be some additional smartness - if the array contains numbers only, it could choose to use a number-wise comparison function. But that would require a) extra implementation complexity (JS was famously designed in short time) and b) reduced performance - since JS runtime doesn’t know what type of values are present in the array, it would have to scan the whole array before starting the sort. But I guess the a) was the decisive factor in the beginning and backwards compatibility prevented improving the function later.

Quasari , (edited )

You are probably correct. I don’t know if it’s true, it’s probably more likely it was a way for it not to fail.

I said HTTP mainly because HTML is plaintext because of it. 1.0s main purpose was to manipulate the page. Of course Array objects weren’t added til 1.1, when netscape navigator 3.0 released, but it was still mostly 1.0 code. I felt like having everything be coercable to string made it easy for you to just assign it to the document. If you assigned the wrong thing it wouldn’t crash.

I originally thought there was a precursor to microsofts XMLHTTP in an earlier version due to the 1997 ECMAScript documentation specifically talking about using it both client and serverside to distribute computations, but it was far more static. So, I’m probably just wrong.

kevincox ,
@kevincox@lemmy.ml avatar

The hard part is sorting values of different types.

Python 2 had a order of built it types. Something like None < bool < numbers < strings. This means that you could sort anything like JavaScript and behaves fairly reasonably.

Python 3 takes the “safer” approach and comparisons of different types throw an exception. (You can override the comparison behavior for your own types and do something different).

JavaScript has conventionally been a very loosely typed language. So it almost certainly wouldn’t have chosen the exception throwing option. It does something similar to Python 2. But instead of just directly comparing the values of different types it converts them to strings first, then compares everything as a string. This is probably the most reasonable option. Otherwise you would have problems because 10 &lt; “2” and “2” &lt; 3 but 3 &lt; 10. How can that work? You have no total ordering! So basically because the comparison operators convert to strings if either argument is a string the default sort comparator really doesn’t have a choice but to do convert to string. The other option would be to define a total order just for the sort function but that seems more confusing.

floofloof , (edited )

It’s also an incorrect alphabetical sort in many languages that use accented characters. For a correct sort you need to pass it something like the localeCompare function or Intl.Collator.

fidodo ,

You can put any type of value in an array in JavaScript. You can have numbers, strings, booleans, arrays, and objects. So what should the default sort function sort by? Sorting by numbers makes sense, but what if it wanted to sort strings instead?

When you don’t know what value is in an array ahead of time you can’t assume how to sort it. When you’re controlling the program you can provide a sort function for the type of values you know will be in it, but when you’re writing the standard default sort function, there’s only one type that you can convert all the other types to safely and simply in the most predictable way, which is strings.

reverendsteveii ,

Think of digits like you would letters. You’re essentially sorting numbers alphabetically. It’s not the right way to do it, of course, but it’s the natural way to do it using a system like computers use that doesn’t necessarily differentiate between digits and letters unless you tell it to specifically.

CheezyWeezle ,

I think the main shortcoming here is that there isnt a way to specify the type to sort as, instead you have to write the function to compare them as numbers yourself. If it’s such a simple implementation, why isn’t it officially implemented? Why isn’t there a sortAs() that takes two args, the input list, and a Type value? Check every element matches the type and then sort, otherwise return a Type Error.

reverendsteveii , (edited )

I mean, there’s a sort() method that takes a comparator(a,b) such that if a comes first it returns 1, if b comes first it returns -1 and if they’re equivalent wrt sortinf it returns 0. If you absolutely need type safe number sorting you can use that to get it.

CheezyWeezle ,

Right, but you have to make that comparator yourself, it’s not a built-in part of the language. The only built-in comparator converts values to strings and compares them in code units orders.

Also, that technically isnt type-safe, is it? If you threw a string or a NaN at that it would fail. As far as I knew, type safe means that a function can handle type errors itself, rather than throwing an exception. So in this case the function would automatically convert types if it was type-safe to prevent an unhandled exception.

reverendsteveii ,

Not every use case can be the built-in default. I wouldn’t have made JS weakly typed if I were designing it, but once the decision was made to use weak typing it made sense to either have no default sort method or to have a default sort method that assumes a type.

What I’ve outlined for you is the interface for a comparator, not the implementation. You can type check and convert and do anything else you want under the hood of the comparator you write.

CheezyWeezle ,

It doesn’t have to be the default to be built in, tho. It could be an overloaded function, having the “default” be the typical convert-to-string sorting, and an overloaded function that allows to specify a type.

It’s just such a common thing, wanting to sort a list by different types, that I’m surprised there hasn’t been an official implementation added like this. I get that it a simple “fix” to make, but I just think that if it’s that simple yet kind of obscure (enough that people are still constantly asking about it) there should be an official implementation, rather than something you have build yourself.

reverendsteveii ,

Thats just JS for you. If you’re being generous, it’s a “quirky” language. If you’re being ungenerous, it’s a steaming pile of arbitrary decisions, gotchas, unexpected behaviors and problems that no one bothered to solve because there’s a workaround.

CheezyWeezle ,

Yeah, JS always seemed like the red-headed stepchild of modern languages. I’d be curious to know if other ECMAScript languages like JScript are as, eh, “quirky”, suggesting that the ECMA spec is the source of the quirkiness, or if JavaScript itself is the one making silly decisions. Technically, I mostly work with Google’s AppScript when I use ECMAScript stuff, but I’m fairly certain AppsScript is based off of JavaScript instead of directly based on the ECMA spec, so I don’t think it’s separate enough for me to draw a conclusion there.

Blackmist ,

Because it turns everything into text first. Just in case you try to sort [1,“apple”,45.99,false,[true,3]] rather than an array of similar things like a normal person.

jdeath ,

it’s lexicographic order

gerryflap , in The lengths we have to go to
@gerryflap@feddit.nl avatar

People here are taking this way too seriously lol. I love Python, and I never really had any issues with the indentation being used instead of curly braces or something. This is just a silly meme, not a personal attack

alphacyberranger OP ,
@alphacyberranger@sh.itjust.works avatar

Precisely. It’s like programmers lost their humor.

some_guy ,

Had humor? /s

Asymptote ,

Humor is hard for autists.

(Disclaimer: am autist)

DarkenLM ,

I have not known happiness for 12 years now.

Anticorp ,

Right? Especially since there are plugins for VS Code that colorize the indents.

Asymptote ,

VSCode? Is that an Emacs extension? Or is it for vi?

DarkenLM ,

It's a bash script made to be run on MS-DOS on a breadboard computer.

Asymptote ,

bash

MS-DOS

r u a wizard

DarkenLM ,

I shall henceforth take the title of wizard.

MajorHavoc ,

Sadly neither, but it’s Vi plugin is nearly perfect.

Osnapitsjoey ,

Oooh whats a good one called?

Anticorp ,

I’m not at my computer right now, but I think the one I use is called indent-rainbow.

calzone_gigante ,

I really like the identation aproach, or begin/end instead of curly braces or parenthesis. When people start to nest things too deep, it gets painful to look at.

merc , (edited )

Then you never had to share a codebase with someone who had different ideas about how things should be indented.

gerryflap ,
@gerryflap@feddit.nl avatar

Hmmm nope. That sounds like hell indeed

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines