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
Search - "hashmap"
-
Me: *uses HashMap* for a problem to count some elements*
Lecturer: why are you using HashMap?
Me: it's the best way of solving the problem
Lecturer: I haven't explicitly taught you what a HashMap is so why are you using it?
Me: Because I learn outside of what university teaches me
Lecturer: there's another way to do this
Me: enlighten me
Lecturer: iterate through the array using a nested for loop and count as you go along
Me: why the hell would I want to do that? That literally decreases the efficiency of my program by alot
GG lecturer telling me it's a better idea of making my O(n) runtime into an O(n^2) instead of complimenting my code.
Seriously what the fuck is up with the fucking education system. Since when was it okay to teach students how to completely fuck your code up and promote ways of making your code so inefficient?33 -
Reviewing coworker's code:
Me: I see you're doing a convoluted sort for every element twice to get your two lists in sync... 😐
CoWorker: Yeah. *straight face, no regrets* That's the only way to do this.
Me:... Uh... No? You can just manage one list with a simple struct and then use the the standard sort.
Coworker: Yeah sure I know. But it'll take time. We don't have time.
Me: *aghast* This is embarrassingly bad code!
Coworker: Don't worry, later on I'll use a hashmap for it. But this needs to be pushed now.
Me: *to myself, no you don't need a hashmap*
Okay, you do you but I can't back you on this. It isn't going to take a lot of time to correct it.
Next day.
Coworker: Hey can you review my code again?
Me: You've made the changes already? *in a bored tone, knowing that they wouldn't have changed shit*
Coworker: No this is a different file. Our manager agrees that we can worry about performance later.
Me: Sure. *😀🔨🔨*
Few weeks pass by:
QA: The operation takes absurdly long time to complete even with the smallest data. Ten minutes for X is unacceptable.
Me: Who would've known? ☺️21 -
I have to rant a bit about the toxic reactions to a constructive Q&A website.
People keep complaining that they get downvotes and corrections, or stuff like that.
Are you fucking kidding me?
So you expect people to spend their own time for absolutely free, to help you, while you don't even want to invest in describing the issue you're having properly? And then complain that people are having issues in understanding your questions?
Let's look at this scientifically. Let's gather up some questions that have been received badly on SO in the last few hours. From the top (simply put https://stackoverflow.com/questions... in front of the id):
47619033 - person wants a discussion about an algorithm while not providing any information about what worked and what failed. "Please write a program for me". Breaking at least 2 rules.
47619027 - "check out my videos" spam
47619030 - "Here's the manual that has my answer but I can't find my answer in it".
47619004 - "how do I keep variables in memory"
47618997 - debug this exception, I'll give you no info on what I tried and failed. Screw this, you guys figure this out, I'm going out for beer.
47618993 - expects everyone to guess what the input is, what the expected output is, and whether he has read what HashMap is in the manual. But sure, this question is so far the best out of all the bad ones.
47618985 - please write code according to my specifications
Should I go on? There wasn't a single clear question about problems in code in this entire small set. Be free to continue searching, let me know if you find something that:
1. You understand what's being asked
2. Answer is clear and non-ambiguous (ex. NOT "which language is the coolest?")
3. Not asking someone to write a program for them.
4. Answer is not found in the most basic form of manuals (ex. php.net)
5. Is about programming.
The point is:
If you get downvoted on Stackoverflow - then you wrote a shitty question. Instead of coming over here and venting uselessly, simply address the concerns and at least TRY to write a clear question if you expect any answers.5 -
Used hashmap instead of arraylist for 13000+ entries and fetched it from hashmap. Earlier used to take 1500ms to execute and now only 500ms.. First time, optimization of code for which i can see the difference in real world.. Its a good feeling.
-
PHP arrays.
The built-in array is also an hashmap. Actually, it's always a hashmap, but you can append to it without specifying indexes and PHP will use consecutive integers. Its performance characteristics? Who knows. Oh, and only strings, ints and null are valid keys.
What's the iteration order for arrays if you use them as hashmaps (string keys)? Well, they have their internal order. So it's actually an ordered hashmap that's being called an array. And you can produce an array which has only integer keys starting with 0, but with non-sequential internal (iteration) order.
This array weirdness has some non-trivial implications. `json_encode` (serializes argument to JSON) assumes an array corresponds to a JSON array if its keys are consecutive integers in increasing order starting with 0, otherwise the array becomes a JSON object. `array_filter` (filters arrays/hashmaps using callback predicate) preserves keys, so it will punch holes in the int key sequence if non-last items are removed, thus turning arrays into hashmaps and changing your JSON structure if you forget to discard keys before serialization.
You may wonder how JSON deserialization works, then? There's a special class for deserialized JSON objects, `stdClass`. It's basically a hashmap too, but it's an object, not an array, and all functions that would normally accept arrays won't work with it. So basically its only use is JSON (de)serialization. You can even cast arrays to objects, producing `stdClass`.
Bonus PHP trivia:
Many functions return nonsensical values. `preg_match`, the regex matching function, returns 1 for success, 0 for no matches and false for malformed regular expression. PHP supports exceptions, so it could just throw one on errors. It would even make more sense to return true, false and null for these three cases. But no, 1, 0 and false. And actual matches are returned by output arg.
`array_walk_recursive`, a function supposed to recursively apply callback to each element of an array. That's what docs say. It actually applies it to leafs only. It will also silently accept object instead of array and "walk" it, but without recursing into deeper objects.
Runtime type enforcing is supported for function arguments and returned values. You can use scalar types, classes, array, null and a few special keywords. There's also a `mixed` keyword, which is used in docs and means "anything". It's syntactically valid, the parser will accept it, but it matches no values in runtime. Calling such function will always cause a runtime error.
Strings can be indexed with negative integers. Arrays can't.
ReflectionClass::newInstanceWithoutConstructor: "Creates a new class instance without invoking the constructor". This one needs no commentary.
`array_map` is pretty self-explanatory if you call it with a callback and an array. Or if you provide more arrays of equal length via varargs, callback will be called with more arguments, one from each array. Makes sense so far. Now, you can also call `array_map` with null instead of callback. In that case it treats provided arrays as rows of a matrix and returns that matrix, transposed.5 -
Me: yo DEV2 parse this string into a hashmap. Use regex, 2 rows of code are enough for the job
DEV2: implemented 40 rows of switch/if cases into nested for loop.
Please kill me 🔫🔫🔫🔫🔫🔫🇮🇹3 -
Yesterday I had a phone screening with a hiring manager and was expected to talk about more of my expertise and just my experience overall. With four years of experience, I thought I could tell her everything she needed to know.
However, this interview was just kind of... weird. Literally every question she asked was defintiions. It was as if I was doing a short answer quiz.
"What is object-oriented programming?"
"What is a hashmap versus a list?"
"What is class inheritance?"
Like... What the fuck. These are questions that give no insight into who I am or how I work. This is shit you see on a second-year midterm exam. What a waste of time.9 -
Just spent 6-8 hours or so trying to get image uploading to work with sending messages with firebase. Finally completed it.
Disclaimer: this might not make the most sense as I am completely drained mentally.
The issue was that I wasn't calling the send message method inside the upload image method. Meaning the images would upload but before I would be able to get the Uri back from firebase to put in the hashmap for the messages, the message hashmap would already be sent.
It was a pain in the ass to do. But 5 windows and 40 tabs later, then some doc reading. Then a quick break to eat. And some more stressing about my code. I finally realized that I should have just called the send message inside the incomplete listener in the image upload.
TLDR;
"uploadImage(), sendMessage()"= no Uri; :(
"UploadImage() { sendMessage() } = Uri" :)
PS: Yes, this is me talking to myself on my other account10 -
After a lot of work I figured out how to build the graph component of my LLM. Figured out the basic architecture, how to connect it in, and how to train it. The design and how-to is 100%.
Ironically generating the embeddings is slower than I expect the training itself to take.
A few extensions of the design will also allow bootstrapped and transfer learning, and as a reach, unsupervised learning but I still need to work out the fine details on that.
Right now because of the design of the embeddings (different from standard transformers in a key aspect), they're slow. Like 10 tokens per minute on an i5 (python, no multithreading, no optimization at all, no training on gpu). I've came up with a modification that takes the token embeddings and turns them into hash keys, which should be significantly faster for a variety of reasons. Essentially I generate a tree of all weights, where the parent nodes are the mean of their immediate child nodes, split the tree on lesser-than-greater-than values, and then convert the node values to keys in a hashmap to make lookup very fast.
Weight comparison can be done either directly through tree traversal, or using normalized hamming distance between parent/child weight keys and the lookup weight.
That last bit is designed already and just needs implemented but it is completely doable.
The design itself is 100% attention free incidentally.
I'm outlining the step by step, only the essentials to train a word boundary detector, noun detector, verb detector, as I already considered prior. But now I'm actually able to implement it.
The hard part was figuring out the *graph* part of the model, not the NN part (if you could even call it an NN, which it doesn't fit the definition of, but I don't know what else to call it). Determining what the design would look like, the necessary graph token types, what function they should have, *how* they use the context, how thats calculated, how loss is to be calculated, and how to train it.
I'm happy to report all that is now settled.
I'm hoping to get more work done on it on my day off, but thats seven days away, 9-10 hour shifts, working fucking BurgerKing and all I want to do is program.
And all because no one takes me seriously due to not having a degree.
Fucking aye. What is life.
If I had a laptop and insurance and taxes weren't a thing, I'd go live in my car and code in a fucking mcdonalds or a park all day and not have to give a shit about any of these other externalities like earning minimum wage to pay 25% of it in rent a month and 20% in taxes and other government bullshit.4 -
Great googly moogly is Kotlin an ugly language.
If you are just starting out with Android or Java development in general, I highly recommend sticking with Java and avoid Kotlin like the plague. It feels like a meme language that was taken a little too seriously.
Full of little flowery nonsense that aims to make the language more human, but only serves to make it look like a child designed it.
I absolutely hate when a language doesn't require type declarations.
The "it" keyword rankles my underwear beyond belief.
Trying to build a dictionary/hashmap/hash felt like I was writing out an essay for school. In other languages it's straightforward and makes sense. Even PHP makes more sense.
I am obviously missing something here, because there is no way something so common and done the same way across different languages has such a wildly different approach in Kotlin.
I have as much experience with Java as I do Kotlin but it immediately makes more sense as a language and doesn't have all this flowery nonsense. It is verbose, which means I don't have to decipher what the code is actually doing when I read it.
I'm familiar with the enterprise Java meme, but I'm not writing enterprise Java, and that's not my style anyway so it doesn't affect me. But even so, that would be a million times easier to handle that Kotlin.14 -
An anti-rant: I just made some code and out of nowhere it suddenly had an awesome feature that I didn't even program. No, not a euphemism for "bug", an actual feature.
Here's the story: A few months ago I made a shortcut for "System.out.println(…)" called "print(…)". Then I developed it further to also print arrays as "[1,2,3]", lists as "{1,2,3}", work with nested arrays and lists and accept multiple arguments.
Today I wanted to expand the list printing feature, which previously only worked for ArrayLists, to all types of List. That caused a few problems, but eventually I got it to work. Then I also wanted to expand it to all instances of Collection. As a first step, I replaced the two references to "List" with "Collection" and magically, no error message. So I tested it with this code:
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "1");
map.put(2, "");
map.put(3, "a");
print(map);
And magic happened! The output was:
{1=1, 2=, 3=a}
That's awesome! I didn't even think yet about how I wanted to display key-value pairs, but Java already gave me the perfect solution. Now the next puzzle is where the space after the comma comes from, because I didn't program that in either.
I feel a bit like a character in "The subtle knife", who writes a barebones program to communicate with sentient elementary particles (believe me, it makes sense in context) and suddenly there's text alignment on the left and right, without that character having programmed any alignment.4 -
do people not understand achievements unless you brag about them =-=
been asking AI on different examples of flexing and all of them sound like vapid LinkedIn posts
"just asked AI a question that's been bugging me for hours! it's such a nothing to have no answers still! 🎉"
one of my favourite examples: "accidentally set my kitchen on fire while trying to impress my friends with my cooking skills. but hey, I now know how to order takeout like a pro. win?"
lol what
I now wonder if I'm depressed cuz graduating school or finishing projects or... uhh ordering food? just sounds stupid to me
rewrote my code from hashset to hashmap. actually kind of re-organized some data types. brain is fog because fuck you. but everything ran so I guess rust thinks it's ok. I'm just annoyed by all that though cuz I just wish I didn't have to do it in the first place
TF is there to brag about
also if you brag about anything good everyone just wants to steal it from you
WHAT IS THE PURPOSE OF BRAGGING16 -
So, I need to search for a new job again. The thing killed my project.
15 years of Java experience in my resume, I look a like a sterotypical 35 years old programmer, I’m applying for expert roles. But every remote technical interview starts with:
- what is the difference between ArrayList and LinkedList?
- what is a hash map?
The hardest part is to keep smiling to the camera, pretending I don’t have the answer memorized by repeating it for the last 15 years of interviewing, and not rolling my eyes.
And before you ask, I do know what garbage collector is.5 -
"What do you mean I can't use a regex object as the key in a hashmap??
...ok, you know, now that I actually said it out loud"3 -
You know how people want to avoid collisions with a hash map?? Well a buddy and I went to a hackathon about 2 years ago, and the idea we had was kinda cool, but to get a prototype working, we decided to defy the logic of a hash table and purposefully cause collisions with a hash map. I took a look at the project and it is soooo poorly implemented.
-
public static Map<Integer, List<Integer>> stuff(arguments) {
HashMap<Integer, List<Integer>> map = new HashMap<>();
method(map, otherVariables);
return map;
}
public static void method(HashMap map, otherVariables) {
map.put(things);
}
So... You know how to return a map from a method. Then why do you create the map outside the method and make it an argument that does not get returned, making it confusing because the map gets created empty, given to a different method, then returned, making it look like you're returning an empty map...
...instead of just creating it inside the called method, returning it and assigning it to a map in the calling method? Even if you think that would create another map (it doesn't), the compiler is intelligent and can optimise that away.9 -
First rant in a while, been up to my eyeballs in uni work; still am.
I have a week to finish my concurrent programming assignment, and I'm stressing a little.
On one hand, I have to figure out a way to make a resizable lock-free hashmap.
On the other, essentially implement snapshot isolation for a sql database.
It's going to take a couple of long nights I suspect.3 -
It reaaaally annoys me when my business logic is sound but the data is corrupted.
For example, find duplicates in a HashMap<String>.. but I didn't take into account the input could contain a space either before or after.. so I end up wondering: if a HashMap only contains unique keys, how come the count of items in the map is the same as the count of the input keys?! Well.. spaces were the culprit.
"12345" != "12345 ".. and therefore the Map sees it as two distinct keys..
What an annoying bug.
Lesson learned: 1) Sanitize input first and never trust it. 2) Never make assumptions15 -
Deserializing a class that implements Serializable which also extends HashMap<Serializable,Serializable> using Jackson its so mind-blowing 🤯🤯🤯2
-
The iteration order of some hashmap or some such keeps changing when I add or remove log lines. For a given source code the order is static, but I can't bisect errors by logging because when I add a probe arbitrary symptoms vanish or previously correct probes start printing bullshit.3
-
The problem with our current project is that we're using Spring MVC but we only use hashmap for binding (is binding is a correct term for this?) of data with our mapper (We use Mybatis, and also when we get this source code they already implements this kind of stuff, mvc with no models hahaha) for the sake the code to be consistent.
Maybe after I read the documentation of Mybatis and learn how to implements joins, I'll ask a permission to change the hashmap with actual models. -
Gson is an excellent library every Java/Android developer should know. You can easily parse a Json or XML network response into a POJO class and get ready to go. But the guys who started the project I currently support found a better, smarter, slicker way to parse network responses into memory:
ArrayList<ArrayList<HashMap<String, String>>>
I would love to meet the genius who came up with this idea. I mean, you can parse absolutely any API response without even having to define stupid Java classes or importing libraries! And also you can reutilize the same scheme for literally all Java projects that handle API responses! Wonderful -
use a mutable obj as hashmap key and the hash code changes when obj got updated. evey text book told u this is a stupid bug and impossible to debug, and I spend a week to prove u can debug it out when in single thread app
-
Is there a debug tool in Visual Studio that acts like a global HashMap<String, object> that you can add random objects to so that you can verify which objects are the same instance between breakpoints and view the state of an object that you had access to but is not in scope at a given breakpoint? I'm debugging a GUI app right now and it's an enormous pain in the ass to track identities, I resorted to adding random properties and statics to classes just so I can express this basic ass persistent debugger state6
-
Having one year of experience in javascript and almost a year of experience in java. I am still not sure which one to use for interviews.
Would I able to handle questions on hashmap and hashset if I chose to work our data structures problem in javascript?.1 -
Trying to make a nodejs backend is pure hell. It doesn't contain much builtin functionality in the first place and so you are forced to get a sea of smaller packages to make something that should be already baked in to happen. Momentjs and dayjs has thought nodejs devs nothing about the fact node runtime must not be as restrained as a browser js runtime. Now we are getting temporal api in browser js runtime and hopefully we can finally handle timezone hell without going insane. But this highlights the issue with node. Why wait for it to be included in js standard to finally be a thing. develop it beforehand. why are you beholden to Ecma standard. They write standards for web browser not node backend for god sake.
Also, authentication shouldn't be that complicated. I shouldn't be forced to create my own auth. In laravel scaffolding is already there and is asking you to get it going. In nodejs you have to get jwt working. I understand that you can get such scaffolding online with git clone but why? why express doesn't provide buildtin functions for authentication? Why for gods sake, you "npm install bcrypt"? I have to hash my own password before hand. I mean, realistically speaking nodejs is builtin with cryptography libraries. Hashmap literally uses hashing. Why can't it be builtin. I supposed any API needed auth. Instead I have to sign and verfiy my token and create middlewares for the job of making sure routes are protected.
I like the concept of bidirectional communication of node and the ugly thing, it's not impressive. any goddamn programming language used for web dev should realistically sustain two-way communication. It just a question of scaling, but if you have a backend that leverages usockets you can never go wrong. Because it's written in c. Just keep server running and sending data packets and responding to them, and don't finalize request and clean up after you serve it just keep waiting for new event.
Anyway, I hope out of this confused mess we call nodejs backend comes clean solutions just like Laravel came to clean the mess that was PHP backend back then.
Express is overrated by the way, and mongodb feels like a really ludicrous idea. we now need graphql in goddamn backend because of mongodb and it's cousins of nosql databases.7 -
Do you know a hash-function (doesn't need to be cryptographic) that I can implement, without fixed size integer-types?
I already searched for a while, but couldn't find an actual fit.
It's for implementing a hasher, used by a hashmap.5 -
hey devos, I got a question to ask ya'll. I have an interview tomorrow with an MNC.
I was hovering through some leetcode problems when I came across a hard question that is forcing me to use a hashmap with the key of the user-defined type. I made up my mind to make use of C++ for the coding interview. Now, the problem is C++ asks me to implement a hash function.
If in case, I'm asked a similar question like this in the interview, which of these two options will you suggest:
a) implement your own hash function
b) use pointers as key2