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 - "big-o"
Interviewer: Welcome, Mr X. Thanks for dropping by. We like to keep our interviews informal. And even though I have all the power here, and you are nothing but a cretin, let’s pretend we are going to have fun here.
Mr X: Sure, man, whatever.
I: Let’s start with the technical stuff, shall we? Do you know what a linked list is?
X: (Tells what it is).
I: Great. Can you tell me where linked lists are used?
X:: Sure. In interview questions.
X: The only time linked lists come up is in interview questions.
I:: That’s not true. They have lots of real world applications. Like, like…. (fumbles)
X:: Like to implement memory allocation in operating systems. But you don’t sell operating systems, do you?
I:: Well… moving on. Do you know what the Big O notation is?
X: Sure. It’s another thing used only in interviews.
I: What?! Not true at all. What if you want to sort a billion records a minute, like Google has to?
X: But you are not Google, are you? You are hiring me to work with 5 year old PHP code, and most of the tasks will be hacking HTML/CSS. Why don’t you ask me something I will actually be doing?
I: (Getting a bit frustrated) Fine. How would you do FooBar in version X of PHP?
X: I would, er, Google that.
I: And how do you call library ABC in PHP?
I: (shocked) OMG. You mean you don’t remember all the 97 million PHP functions, and have to actually Google stuff? What if the Internet goes down?
X: Does it? We’re in the 1st world, aren’t we?
I: Tut, tut. Kids these days. Anyway,looking at your resume, we need at least 7 years of ReactJS. You don’t have that.
X: That’s great, because React came out last year.
I: Excuses, excuses. Let’s ask some lateral thinking questions. How would you go about finding how many piano tuners there are in San Francisco?
X: 37. I googled before coming here. Also Googled other puzzle questions. You can fit 7,895,345 balls in a Boeing 747. Manholes covers are round because that is the shape that won’t fall in. You ask the guard what the other guard would say. You then take the fox across the bridge first, and eat the chicken. As for how to move Mount Fuji, you tell it a sad story.
I: Ooooooooookkkkkaaaayyyyyyy. Right, tell me a bit about yourself.
X: Everything is there in the resume.
I: I mean other than that. What sort of a person are you? What are your hobbies?
X: Japanese culture.
I: Interesting. What specifically?
I: What’s hentai?
X: It’s an televised art form.
I: Ok. Now, can you give me an example of a time when you were really challenged?
X: Well, just the other day, a few pennies from my pocket fell behind the sofa. Took me an hour to take them out. Boy was it challenging.
I: I meant technical challenge.
X: I once spent 10 hours installing Windows 10 on a Mac.
I: Why did you do that?
X: I had nothing better to do.
I: Why did you decide to apply to us?
X: The voices in my head told me.
X: You advertised a job, so I applied.
I: And why do you want to change your job?
X: Money, baby!
X: I mean, I am looking for more lateral changes in a fast moving cloud connected social media agile web 2.0 company.
I: Great. That’s the answer we were looking for. What do you feel about constant overtime?
X: I don’t know. What do you feel about overtime pay?
I: What is your biggest weakness?
X: Kryptonite. Also, ice cream.
I: What are your salary expectations?
X: A million dollars a year, three months paid vacation on the beach, stock options, the lot. Failing that, whatever you have.
I: Great. Any questions for me?
I: No? You are supposed to ask me a question, to impress me with your knowledge. I’ll ask you one. Where do you see yourself in 5 years?
X: Doing your job, minus the stupid questions.
I: Get out. Don’t call us, we’ll call you.
All Credit to:
Me: Optimize a sort & match method in backend because users complain it's a bit slow.
Coworker: These algorithms are both O(n), so they're identical *closes PR*
Me: *start zoom call* "Heeeeeeeeeey Iiiiiiiiiii wouuuuuuuld liiiiiiiiike toooooo diiiiiisscuuuuus thaaaaaaaat puuuuuuulllll reeeeeequuuueeest yooooouuuuu cloooooossseeeed"
Coworker: "wtf are you doing, why are you talking so slow"
Me: "No matter whether I talk fast or slow, the information still reaches you in O(n) time, so why are you complaining"
I fucking hate it when people misunderstand the purpose of (or abuse) big O notation. It's an estimate of how an algorithm SCALES once the set increases in size, in which case you leave out both less significant terms and constant factors.
But those terms and factors are important when you're talking about the DIRECT PERFORMANCE of the algorithm on fixed-size sets, instead of SCALING to larger sets.
1n and 10n are both O(n), but 10x performance on a job that used to take 10 minutes is still significant.22
We're using a ticket system at work that a local company wrote specifically for IT-support companies. It's missing so many (to us) essential features that they flat out ignored the feature requests for. I started dissecting their front-end code to find ways to get the site to do what we want and find a lot of ugly code.
So i dig farther and farthee adding all the features we want into a userscript with a beat little 'custom namespace' i make pretty good progress until i find a site that does asynchronous loading of its subpages all of a sudden. They never do that anywhere else. Injecting code into the overcomolicated jQuery mess that they call code is impossible to me, so i track changes via a mutationObserver (awesome stuff for userscripts, never heard of it before) and get that running too.
The userscript got such a volume of functions in such a short time that my boss even used it to demonstrate to them what we want and asked them why they couldn't do it in a reasonable timeframe.
All in all I'm pretty proud if the script, but i hate that software companies that write such a mess of code in different coding styles all over the place even get a foot into the door.
And that's just the code part: They very veeeery often just break stuff in updates that then require multiple hotfixes throughout the day after we complain about it. These errors even go so far to break functionality completely or just throw 500s in our face. It really gives you the impression that they are not testing that thing at all.
And the worst: They actively encourage their trainees to write as much code as possible to get paid more than their contract says, so of course they just break stuff all the time to write as much as possible.
Where did i get that information you ask? They state it on ther fucking career page!
We also have reverse proxy in front of that page that manages the HTTPS encryption and Let's Encrypt renewal. Guess what: They internally check if the certificate on the machine is valid and the system refuses to work if it isn't. How do you upload a certificate to the system you asked? You don't! You have to mail it to them for them to SSH into the system and install it manually. When will that be possible you ask? SOON™.
At least after a while i got them to just disable the 'feature'.
While we are at 'features' (sorry for the bad structure): They have this genius 'smart redirect' feature that is supposed to throw you right back where you were once you're done editing something. Brilliant idea, how do they do it? Using a callback libk like everyone else? Noooo. A serverside database entry that only gets correctly updated half of the time. So while multitasking in multiple tabs because the performance of that thing almost forces you to makes it a whole lot worse you are not protected from it if you don't. Example: you did work on ticket A and save that. You get redirected to ticket B you worked on this morning even though its fucking 5 o' clock in the evening. So of course you get confused over wherever you selected the right ticket to begin with. So you have to check that almost everytime.
Alright, rant over.
Let's see if i beed to make another one after their big 'all feature requests on hold, UI redesign, everything will be fixed and much better'-update.5
If Big O notations where emojis. This chart shows you common big-Os with emoji showing how they'll make you feel as your data scales. Source blog.honeybadger.io7
Now I get it, I did before, but this helps.
I still don’t know how to go from my function to O however.4
Okay, story time.
This rant is about the many mistakes I made at the time, specifically the biggest – but not the first – of which: publishing some preliminary results very early on.
So I posted a sarcastic question to the Software Engineering Stack Exchange, which was originally worded differently to reflect my frustration, but was later edited by mods to be more serious.
You can see the responses for yourself here: https://goo.gl/poHKpK
Most of the serious answers were along the lines of "multithreading is hard". The top voted response started with this statement: "1) Multithreading is extremely hard, and unfortunately the way you've presented this idea so far implies you're severely underestimating how hard it is."
While I'll admit that my presentation was initially lacking, I later made an entire page to explain the synchronisation mechanism in place, and you can read more about it here, if you're interested:
But what really shocked me was that I had never understood the mindset that all the naysayers adopted until I read that response.
Because the bottom-line of that entire response is an argument: an argument against change.
Nexus does not and will not hold your hand. It will not repeat Node's mistakes and give you nice ways to shoot yourself in the foot later, like `process.on('uncaughtException', ...)` for a catch-all global error handling solution.
No, an uncaught exception will be dealt with like any other self-respecting language: by not ignoring the problem and pretending it doesn't exist. If you write bad code, your program will crash, and you can't rectify a bug in your code by ignoring its presence entirely and using duct tape to scrape something together.
Back on the topic of multithreading, though. Multithreading is known to be hard, that's true. But how do you deal with a difficult solution? You simplify it and break it down, not just disregard it completely; because multithreading has its great advantages, too.
Like, how about we talk performance?
How about distributed algorithms that don't waste 40% of their computing power on agent communication and pointless overhead (like the serialisation/deserialisation of messages across the execution boundary for every single call)?
How about vertical scaling without forking the entire address space (and thus multiplying your application's memory consumption by the number of cores you wish to use)?
Some will say that the performance gains aren't worth the risk. That the possibility of race conditions and deadlocks aren't worth it.
That's the point of cooperative multithreading. It is a way to smartly work around these issues.
If you use promises, they will execute in parallel, to the best of the scheduler's abilities, and if you chain them then they will run consecutively as planned according to their dependency graph.
If your code doesn't access global variables or shared closure variables, or your promises only deal with their provided inputs without side-effects, then no contention will *ever* occur.
If you only read and never modify globals, no contention will ever occur.
Are you seeing the same trend I'm seeing?
When someone says we shouldn't use multithreading because it's hard, do you know what I like to say to that?
"To multithread, you need a pair."18
Hey Guys :)
I'm new to devRant and I already read a lot of interesting stories and jokes and now I would like to post the first thing myself. :D
I would like to present you my new Android app "WhatsBirthday", which I made in order to solve a big problem of mine, friends (and probably the whole world xD). I have (as a Google User) all my contacts (with their birthdays) in the cloud and from there on my calendar. Sadly the Google calendar doesn't allow notifications for the contacts birthdays (I mean whyyy?!). And even if I take a look at my calendar, I always have to write these annoying birthday WhatsApp message to the people ... and these both were the problems I wanted to solve with my app.
So if you join the app, it will start a service (an Alarm / Alarmmanager for the professionals) which will take a look at the contacts every day at 6 am (can be set in the app). For each contact whose birthday is today, the application will send a push notification which if clicked will directly open the contacts WhatsApp chat and prepare a standard message with the name filled in, which could (in theory) directly send. For sure the app won't sends any messages by itself, but it gives you a template you can start working with.
And for sure, you can edit the template in the app & specify the messages for family and friends, which you can choose to use with the notification buttons.
So yeah, that's is and I hope I've aroused your interest ;) if you would like to download it: https://play.google.com/store/apps/...
I would be super happy if you could give me some feedback, it's one of my first apps and I would definitely like to improve it! Tanks in previous! :D
And I would like to say sorry for my bad English skills, I'm a German student :O if the translations in the app are not good, please tell me! ;)28
What does sorting and sex have in common? In both cases we hope for a great Big O.
I'll see myself out 😅2
Food and computers.
Sorry for the fat people as well but i think those is legit.
I am sitting next to this friend of mine in class. She is a bit big. Anyhow.
She opens her laptop and i see her screen. Its dirty. But by dirty i mean fucking dirty. Like brow transparent circle like things all over.
I`m like: “shiiiet， whats that on your screen”.
She: “i am not really sure”.
2 days layer in another class we sit together again and she looks at me with a smile.
She: “look my screen is clean. It was dirty because sometimes o sit in bed and eat chicken then type on my keyboard，so when i close my computer the keys touch the screen and voiiiila!”
Me: “..... Wow”
She was quite proud she had elucidated the problem and did not really understand the meaning of my wow.4
Everything about devRant and its community is just amazing. Big S/O to @dfox and @trogus for keeping up this level of interaction! ❤️❤️1
Dad: why are you doing IT after I put you through business school
Me: because you're the one that nagged me not to do it instead CS.... So now I'm stuck in IT... Because I can't seem to understand Big O and algorithms needed to pass a technical interview...6
Hardest part of bring a newbie programmer? Figuring out which keywords to use when you search Google, to get the right answer2
Time for a soap box rant.
I just found this in one of our projects. I've simplified the example to make it more anonymous.
When I see code like this it automatically means there is a lack of attention to enumerations and/or understanding of what they are.
One may argue that in a certain execution of code it's a minor performance hit and therefore insignificant. It's still a performance hit. Furthermore, it takes even less time to do it the right way than it does to do it the wrong way.
Every one of these lines will enumerate the list from the beginning to try and find that one element you're interested in. Big O notation, people.
Throw that crap into a dictionary or hashset or similarly applicable data structure with direct reads at the beginning of your logic so that it only gets enumerated ONCE when the data structure instance is created. Then access it however many times you want.
Soap box rant over.15
As a pretty solid Angular dev getting thrown a react project over the fence by his PM I can say:
It is nigh impossible to write well structured, readable, well modularized code with it and not twist your mind in recursion from "lift state up" and "rendercycle downwards only"
Try writing a modular modal as a modern function component with interchangeable children (passeable to the component as it should be) that uses portals and returns the result of the passed children components.
Closest I found to it is:
c o d e s a n d b o x.io/s/7w6mq72l2q
(and its a fucking nightmare logic wise and readability wise)
And also I still wouldn't know right of the bat how to get the result from the passed child components with all the oneway binding CLUSTERFUCK.
And even if you manage to there is no chance to do it async as it should be.
You HAVE to write a lot of "HTML" tags in the DOM that practically should not be anywhere but in async functions.
In Angular this is a breeze and works like a charm.
Its not even much gray matter to it...
I can´t comprehend how companies decide to write real big web apps with it.
They must be a MESS to maintain.
For a small "four components that show a counter and fetch user images" - OK.
But fo a big webapp with a big team etc. etc.?
Asking stuff about it on Stackoverflow I got edited unsolicited as fuck and downvoted as fuck in an instant.
Nobody explained anything or even cared to look at my Stackblitz.
Unsolicited edit, downvote, closevote and of they go - no help provided whatsoever.
Its completely fine if you don't have time to help strangers - but then at least do not stomp on beginners like that.
I immediately regretted asking a toxic community like this something that I genuinely seem to not understand. Wasn't SO about helping people?
I deleted my post there and won't be coming back and doing something productive there anytime soon.
Out of respect for my clients budget I'm now doing it the ugly react way and forget about my software architecture standards but as soon as I can I will advise switching to Angular.
If you made it here: WOW
Thank you for giving me a vent to let off some steam :)13
Here is another rather big example of how C++ is WAY slower than assembler (picture)
Sure - std::copy is convenient
but asm is just way faster.
This code should be compatible with EVERY x86_64 CPU.
I even do duffs device without having the loop:
the loop happens in the rep opcode which allows for prefetching (meaning that it doesnt destroy the prefetch queue and can even allow for preprocessing).
BTW: for those who commented on my comment porn last time: I made sure to satisfy your cravings ;-)
To those who can't make sense of my command line:
To those who tell me to call clang with -o<something>:
1) clang removes the call to copy on o3 or o2
2) the result isnt better in o1 (well... one second but that might be due to so many other things, and even if... one second isn't that much)25
Tittle: About Larry.
Fun Game: Tell me if / when in this story you know the plot twist.
Setting: Years ago, non coding job.
I work with Larry a lot, Larry works remote. In technical terms Larry is senior to me and I escalate some technical issues that get assigned to Larry. I've never met Larry in person.
Larry can be hard to work with, but he's plenty good at his job and I don't mind his prickly side. Sometimes it takes telling Larry something a few times before it sinks it, but that's not a big deal. Sometimes it seems like Larry doesn't remember his cases entirely, but he has a lot of cases. Also Larry has good reason for how he works considering the land of scubs who usually escalate to him without any thought / effort.
Larry's escalation team is short staffed and they're trying to hire folks, but that's been like that forever.
So one day I get an email that Larry is going to be out of the office for a few weeks. Nothing unusual there.
My current case that I share with Larry sort of floats in limbo for a while. The customer is kinda slow to respond anyhow and there's nothing that I need Larry for.
Finally I get automated notice that my case has had a new escalation engineer. Laura. Laura is much more positive and happy compared to Larry. Understandably Laura isn't up to date on the case so we go back and forth with some emails and notes in the case.
The case is moving along just fine, we're making progress, but it's slow because of the customer's testing procedures. Then we hit a point where this customer's management pushes on sales for a solution (this customer's management is known for doing this rando like for no reason).
Down the management chain it goes and everyone wants a big conference call to get everyone up to date / discuss next steps (no big deal).
Now I really don't want to do this with Laura and throw her into the deep end with this customer, she doesn't have the background and I'd rather do this call with Larry & Me & Laura. Also according to the original email Larry is due back soon.
I start writing an email to Laura about "Let's try to schedule this for when Larry gets back."
Then I stop ... I don't really know why I stop but when it is a "political case" I want some buy in on next steps from management so I go talk to my manager.
-Plot Twist Incoming-
Long story short, my manager says:
"Laura IS Larry..."
I had no idea. Nobody told me, nobody told ANYBODY, (except a couple managers).
Back up a few months Larry apparently went to his managers and told them he was going to transition, surgery and all, in a few months.
Managers wondering how to address this went to HR and some new hire very young to be a manager HR manager drone logiced out in her bonkers head that "Well it shouldn't matter so don't tell anyone."
ARE YOU FUCKING KIDDING ME!!??
Thank god I didn't send that email...
I did send an email to Laura explaining that I had no idea and hoped I didn't say anything stupid. She was very nice about it and said it was all good.
After that incident made the management rounds (management was already fuming about being told not to tell anyone) things came to another critical point.
Laura was going to visit the company HQ. Laura had been there before, as Larry, everyone knew her as Larry... nobody (outside some managers) knew Laura was Larry either. With nobody knowing shit Laura was going to walk in and meet everyone ...
One manager at HQ finally rebelled and held a meeting to tell his people. He didn't want Laura walking in and someone confused, thinking it was a joke or something horrible happening.
HR found out and went ballistic. They were on a rampage about this other manager, they wanted to interview me about how I found out. I told HR to schedule their meeting through my manager (I knew they didn't want my manager to know they were sniffing around).
Finally the VP in our department called up the HR head and asked WTF was going on / kind of idiots they had over there (word has it legal and the CEO were on the call too).
HR had a change in leadership and then a couple weeks later there were department wide meetings on how to handle such situations and etc.32
I have an Android phone. Pixel 2 to be exact, and I love it. Many family members and friends of mine have iPhones. To each their own.
Having said that, I absolutely HAAAATE the stupid iPhone feature that lets users react to text messages. Today all those iPhone users added me to literally 5 different SMS groups (which by themselves are their own sin), chatting up a storm all evening. I already hate group texts, please, leave me alone. But it gets so much worse when my phone blows up with twice as many messages because so-and-so "liked" this message, and so-and-so "laughed" at that message. It sends you their chosen verb alongside the ENTIRE original text AGAIN.
Such a stupid feature, leave Facebook on Facebook, why the hell do text messages need reactions? I don't give a shit that you liked or laughed or loved that so and so said they will be there at 9 o clock.
At least i have the ability to mute notifications for each group otherwise I'd be replying to every group text I get with a trolling big trigger item or something super inappropriate until they stop. Don't want this to continue? Stop group texting me, stop reacting to texts, and don't do it again.12
While talking to hostile managers, don’t say “doesn’t work in chrome” and “works in Firefox”. Say “doesn’t work in blink” and “works in gecko”. Don’t say “we need sync”, say “we’re currently choosing between a CmRDT and a CvRDT”. Don’t say “code was slow”, say “oof, an unacceptable big-o and a huge runtime penalty”.
Their ego is too much to ask what this means. And you’re still sound perfectly understandable by your fellow tech guys.
Don’t lie. There is no need. Just present your ideas in a professional way.
Also if a hostile manager is willing to break their ego and ask and finally educate, you can make a good colleague who understands. And the knowledge and the willingness to understand the problems of “tech guys” would spread much quicker from your fellow educated manager to other managers than from you to them.
– we expect you to know the concepts of immutability, persistence, software architecture and systems theory, methods of analyzing complexity beyond the big-O notation, safe parallel code execution with web workers, WASM, modern web standards including working drafts, progressive enhancement and graceful degradation, WCAG recommendations and web accessibility in general, UX strategies and modern graphic design trends. Nice 20k github stars you got there. By the way, what's your opinion on modern optimistic UX?
– I know this all but I somewhat disagree with some status-quo UX strategies
– unfortunately it's a no
– Do you know how to wipe your ass?
– *excited hysterical jumping with head nodding*
– You're hired26
Today at work, I finally had to use and implemented an algorithm they teach in textbooks... And also thought about Big O. I feel so happy as this is a first... All those hours of reading about algos has finally had some use!1
So technical interview today but woke up (6am) and started thinking about it and it led to this rant about algorithms. This is probably going into a Medium post if I ever get around to finishing it but sort of just wanted to share the rant that literally just went off in my mind.
*The problem with Algorithms Technical Interviews Is They don't test Real skills*
Real world problems are complex and often cross domain combining experience in multiple areas. Often the best way is not obvious unless you're a polymath and familiar with different areas, paradigms, designs. And intuitively can understand, reason, and combine them.
I don't think this is something a specific algorithm problem is designed to show. And the problem is the optimal solution to some of these and to algorithm design itself is that unless you train for it or are an algorithm designer (practice and experience), you can only brute force it in the amount of time given.
And quite frankly the algorithms I think we rely on daily weren't thought of in 30 minutes. The designers did this stuff for a living, thought about these problems for days and several iterations… at least. A lot were mathematicians. The matrix algorithm that had a Big O of 7N required a flash of insight that only someone constantly looking and thinking about the equations could see.
-clean readable coding practices
TLDR: I could probably go on and on about this stuff for hours jumping from item/example/area to the next and back again... But I don't think you can test these (~20) years of experience in a 1 hr technical interview focused on algorithms...8
Most QAs are dumb beasts, unable to think clearly or rationally, lazy parasites that suck the lifeblood out of a project.
Except this one guy I work with. He blackmailed the CTO to move, and landed himself a junior dev job.
He joined my team a few months ago.
"Right" says I "forget the crap you've learned so far. Here's a list of algorithm books from Amazon. Order them and read them. There'll be a test at the end."
He did. He is now reviewing lead dev work and merrily trolling their poorly performing work. Speaking to them in Big O (and so confusing the crap out of them) and earning stars at every turn.
I'd like to think I had a hand but all the effort was his.8
The more I work with performance, the less I like generated queries (incl. ORM-driven generators).
Like this other team came to me complaining that some query takes >3minutes to execute (an OLTP qry) and the HTTP timeout is 60 seconds, so.... there's a problem.
Sure, a simple explain analyze suggests that some UIDPK index is queried repeatedly for ~1M times (the qry plan was generated for 300k expected invocations), each Index Scan lasts for 0.15ms. So there you go.. Ofc I'd really like to see more decimal zeroes, rather than just 0.15, but still..
Rewriting the query with a CTE cut down the execution time to pathetic 0.04sec (40ms) w/o any loops in the plan.
I suggest that change to the team and I am responded a big fat NO - they cannot make any query changes since they don't have any control on their queries
but down to 0.04sec from 3+ minutes....
alright, let's try to VACUUM ANALYZE, although I doubt this will be of any help. IDK what I'll do if that doesn't change the execution plan :/ Prolly suggest finding a DBA (which they won't, as the client has no € for a DBA).
All this because developers, the very people sho should have COMPLETE control over the product's code, have no control over the SQLs.
For skilled mid-career engineers, dynamic programming problems, np-complete bar raisers.
For new engineers, simple questions that can't be taught in school (questions that require business prioritization)
For older engineers, questions they haven't done since college (big-O, writing algorithms from memory)12
It's been a while DevRant!
Straight back into it with a rant that no doubt many of us have experienced.
I've been in my current job for a year and a half & accepted the role on lower pay than I normally would as it's in my home town, and jobs in development are scarce.
My background is in Full Stack Development & have a wealth of AWS experience, secure SaaS stacks etc.
My current role is a PHP Systems Developer, a step down from a senior role I was in, but a much bigger company, closer to home, with seemingly a lot more career progression.
My job role/descriptions states the following as desired:
I am also well versed in various JS frameworks, PHP Frameworks, JAVA, C# as well as other things such as:
Xamarin, Unity3D, Vue, React, Ionic, S3, Cognito, ECS, EBS, EC2, RDS, DynamoDB etc etc.
A couple of months in, I took on all of the external web sites/apps, which historically sit with our Marketing department.
This was all over the place, and I brought it into some sort of control. The previous marketing developer hadn't left and AWS access key, so our GitLabs instance was buggered... that's one example of many many many that I had to work out and piece together, above and beyond my job role.
Done with a smile.
Did a handover to the new Marketing Dev, who still avoid certain work, meaning it gets put onto me. I have had a many a conversation with my line manager about how this is above and beyond what I was hired for and he agrees.
For the last 9 months, I have been working on a JAVA application with ML on the back end, completely separate from what the colleagues in my team do daily (tickets, reports, BI, MI etc.) and in a multi-threaded languages doing much more complicated work.
This is a prototype, been in development for 2 years before I go my hands on it. I needed to redo the entire UI, as well as add in soo many new features it was untrue (in 2 years there was no proper requirements gathering).
I was tasked initially with optimising the original code which utilised a single model & controller :o then after the first discussion with the product owner, it was clear they wanted a lot more features adding in, and that no requirement gathering had every been done effectively.
Throughout the last 9 month, arbitrary deadlines have been set, and I have pulled out all the stops, often doing work in my own time without compensation to meet deadlines set by our director (who is under the C-Suite, CEO, CTO etc.)
During this time, it became apparent that they want to take this product to market, and make it as a SaaS solution, so, given my experience, I was excited for this, and have developed quite a robust but high level view of the infrastructure we need, the Lambda / serverless functions/services we would want to set up, how we would use an API gateway and Cognito with custom claims etc etc etc.
Tomorrow, I go to London to speak with a major cloud company (one of the big ones) to discuss potential approaches & ways to stream the data we require etc.
I love this type of work, however, it is 100% so far above my current job role, and the current level (junior/mid level PHP dev at best) of pay we are given is no where near suitable for what I am doing, and have been doing for all this time, proven, consistent work.
Every conversation I have had with my line manager he tells me how I'm his best employee and how he doesn't want to lose me, and how I am worth the pay rise, (carrot dangling maybe?).
Generally I do believe him, as I too have lived in the culture of this company and there is ALOT of technical debt. Especially so with our Director who has no technical background at all.
Appraisal/review time comes around, I put in a request for a pay rise, along with market rates, lots of details, rates sources from multiple places.
As well that, I also had a job offer, and I rejected it despite it being on a lot more money for the same role as my job description (I rejected due to certain things that didn't sit well with me during the interview).
I used this in my review, and stated I had already rejected it as this is where I want to be, but wanted to use this offer as part of my research for market rates for the role I am employed to do, not the one I am doing.
My pay rise, which was only a small one really (5k, we bring in millions) to bring me in line with what is more suitable for my skills in the job I was employed to do alone.
This was rejected due to a period of sickness, despite, having made up ALL that time without compensation as mentioned.
I'm now unsure what to do, as this was rejected by my director, after my line manager agreed it, before it got to the COO etc.
Even though he sits behind me, sees all the work I put in, creates the arbitrary deadlines that I do work without compensation for, because I was sick, I'm not allowed a pay rise (doctors notes etc supplied).
What would you do in this situation?4
Tech interview prep on leetCode... I solved this but wanted to read the optimal solution. I check the Solution page..... 😟 🙁 ☹️ 😣 😖 😖 😫 😩 😩 😦 😧 😮 😬 😬 😵
The way I solved it, basically just did a merge of the 2 lists as is iterates thru them...
Ialright i need a break after i try to understand this...
btw, tech/CS workers, when you approach a real problem do you think like this? Solve the problems in Big O and math symbols?7
I don't know why they made so many algorithms, data structures and big O questions during interview, when all they wanted me to do was to maintain some legacy, tight coupled, spaghetti code with no architecture, documentation, tests nor any kind of engineering behind :/1
Over the summer I was recruited to be a supplement instructor for a data structures course. As a result of that I was asked (separately by the professor) to be a grader for the course. Because of pay limitations I've mostly been grading homework project assignments. In any case, it's a great job to get my foot into the department and get recognized.
Over the course of the semester I've had this one person, OSX, named after their operating system of choice, who has been giving me awkward submissions. On the first assignment they asked the professor for extra time for some reason or the other, and that's perfectly fine.
So I finally receive OSX's submission, and it's a .py file as per course of the course. So I pop up a terminal in the working directory and type "python OSX_hw1.py". Get some error spit out about the file not being the right encoding. I know that I can tell python to read it in a different encoding, so I open it up in a text editor. To my surprise it's totally not a text file, but rather a .zip file!
I've seen weirder things done before, so no big deal. I rename the file extension, and open it up to extract the files when I see that there's no python files. "Okay, what's goin on here OSX..." I think to myself.
Poking around in the files it appears to be some sort of meta-data. To what, I had no clue, but what I did find was picture files containing what appeared to be some auto-generated screenshots of incomplete code. Since I'm one to give people the benefit of doubt even when they've long exhausted other peoples', I thought that it must be some fluke, and emailed OSX along with the professor detailing my issue.
I got back a rather standard reply, one of which was so un-notable I could not remember it if my life depended on it. However, that also meant I didn't have to worry about that anymore. Which when you're juggling 50 bazillion things is quite a relief. Tragically, this relief was short lived with the introduction of assignment 2.
Assignment 2 comes around, and I get the same type of submission from OSX. At this time I also notice that all their submissions are *very* close to the due time of 11:59pm (which I don't care about as long as it's in before people start waking up the next morning). I email OSX and the professor again, and receive a similar response. I also get an email from OSX worried about points being deducted. I reply, "No issue. You know what's wrong. Go and submit the right file on $CentralGradingCenter. Just submit over your old assignment".
To my frustration OSX claimed to not know how to do this. I write up a quick response explaining the process, and email it. In response OSX then asks if I can show them if they comes to my supplemental lesson. I tell OSX that if they are the only person, sure, otherwise no because it would not be a fair use of time to the other students.
OSX ends up showing up before anyone else, so I guide them through the process. It's pretty easy, so I'm surprised that they were having issues. Another person then shows up, so I go through relevant material and ask them if they have any questions about recent material in class. That said, afterwards OSX was being somewhat awkward and pushy trying to shake my hand a lot to the point of making me uncomfortable and telling them that there's no reason to be so formal.
Despite that chat, I still did not see a resubmission of either of those two assignments, and assignment 3 began to show it's head. Obviously, this time, as one might expect after all those conversations, I get another broken submission in the same format. Finally pissed off, I document exactly how everything looks on my end, how the file fails to run, how it's actually a zip file, etc, all with screenshots. That then gets emailed to the professor and OSX.
In response, I get an email from OSX panicking asking me how to submit it right, etc, etc. However, they also removed the professor from the CC field. In response I state that I do not know how to use whatever editor they are using, and that they should refer to the documentation in order to get a proper runnable file. I also re-CC the professor, making sure OSX's email to me is included in my reply.
OSX then shows up for one of my lessons, and since no one had shown up yet, I reiterate through what I had sent in the email. OSX's response was astonished that they could ever screw up that bad, but also admits that they had yet to install python(!!!). Obviously, the next thing that comes from my mouth is asking OSX how they write their code. Their response was that they use a website that lets them run python code.
After that I finally get a submission for assignment 1!
My first software.. Okay. So first time I ever attempted was with my father, i was around 8 or so, i remember very little from it, but in nutshell, i somehow ended up at his job having day off school or something, no idea.
Apparently he was bored, so he decided yo show me... Basic. Yep, thats right. Frking basic. Anyway, he shown me some really basic stuff in basic, and pushed the envelope really hard, just trying to force into me more and more in these 8hrs. I started with filling screen with "o" characters. Most of times he was telling me what to write with elaborate explanation why. At the end of the day, we finished with simple maze game where player was "o" and maze walls was #. Without any goal, or anything.
Next day i was at point 0, understood nothing from it except how to handle keystrokes (and belive me, that for me was huge mindblow, and even bigger mindblow that it actually made prefect sense).
I dont remember much, but later i started with father-assisted c++ and some pascal. I immidietly loved c++ but dropped learning it for (NullPointer) reason.
Thats not really project imho, so now time for my actual first project.
It was about time when ARK survival evolved was a fresh thing, i was playing it a lot. Server admin became buddy. We all complained about max level cap, but to change it in config you needed to input whole new xp curve.
At that time i had great familiarity with google and computers, some thought i was some kind of PC god (seriously I heard someone saying so about me lol) just becouse I could ressurect most cases of broken windows. And I had next to zero programming expirience. It was about to change. I made first c++ actual program, that was making xp curve for you. It took me just bearly 2 days and was series of cin, cout, one file open, some maths in loop, and done. Maths was very bad. But i pushed it into steam forums, and one guy responded how.bad my math was, so we colabed on making 2 iteration. Took around week. Than half a year passed and we wanted go big. Go gui. I had no freaking idea how making gui looks like. Community liked my cli tool, we had quite a lot of downloads, why not go GUI. And thats when I discovered QT framework. And we had few features in mind... It took us half a year to make it. From 60 lines of code i jumped into 1k lines of code. We pushed it and immidietly started working on 4th version with much greater customizability etc.
Than i finished 18 and found a job. Job in php. I got it becouse I made this project.
Now project is abandon. This project also gave me a lesson that donations will not feed you.
Edit: and before you think about my father that he was nice person to show me code, trust me, i dont know bigger dick than him.
So we’ve taken over from a project team that disbanded... read: “cut their contracts because fuck this, I can earn more working for better people”.
Me and one other guy have been tasked with saving this heap of shit.
Obviously the project guys left saying “it’s nearly done, just this one feature”. Because cut contracts are easier to deal with if “everything is almost done”.
We jump on and find that’s not the case at all... this thing, is a beast, a big old stats analysis program... so we’re like “cool, let’s see what’s going o...OH MY GOD”.
The “recalculation” function was core to this POS. The contractors had done it in C# through entity framework... it took 24 hours to run, over a reasonably small data set that was due to double every 2-5 years.
So... here’s the deal, it ran over night.... then failed. And no cunt had noticed. Entity framework “can’t commit because I’m muddled up as fuck, did you really just put the whole db in EF in memory to work with it?” Exception.
Que 6 months of me and my lead doing the job properly.
Anyway, the failure: I ended up in Hospital again with a Crohn’s flare up... about 5 months in.
Fuckall to do with all this nonsense I just wanted to tell a story. it was an interesting/fun project to fix and my lead was a legend... so happy days.
Similar story, different set of contracted devs... they’d been defining requirements with the business users using the term “Risk” which the business users knew as a group of risks.
The domain model had been written RiskGroup<>—
Rant...ish? It's more mixed feelings...
Had my first day yesterday at a new job in a big company. I came dressed really nicely in a suit and tie. Went to orientation with everyone new coming in.
Felt like I made the right choice to up my effort in dress code.
Met with my manager, was led to my team. Everyone is dressed casually. Unshaved. Giving me hate stares.
Felt out of place. But kind of happy that I can try less.
Still. What's up with programmers and being toxic to people dressed nicely o.0 I don't need to look like I came out of crunch time every single day to prove my worth...
It's really weird getting these looks. It's almost like highschool all over again. When I let my mother dress me and looked like the nerdiest kid on the block...
Then again, today I'm wearing sneakers and causal clothes. I either feel like I cave in to peer pressure... But at the same time I don't mind it. Erghhh... Still hate this...
Mixed feelings... I donno.5
Where is the best place to pick up freelance work that actually pays a realistic amount?
I’ve been on sites like o-desk where there are folks looking for pretty big jobs and they have a budget of $100.4
In an algorithm class, professor introduced us to some simple search algorithms (bubble sort, selection sort, insertion sort, shell sort). He did a quite decent job and most of the students were able to grasp the code and understand the differences in those algorithms. But then he spoiled his whole lecture with one additional slide. There he proposed an optimization: Instead of using a temporary swap variable, we just could use the first array element (or the zeroth element, respectively: the one ad index 0) for doing all the swapping. We just had to document that, so that the caller would "leave the first position of the array empty", resulting in "cleaner code". And he did that in the same class where he used Big-O notation to argue about runtime complexity. But having the caller to resize the array and to shift all the elements by one position did not matter to him at all, because it was "not part of the actual algorithm".2
Dude GoogleAuth is pure nonsense magic. On one line you get your auth-instance from gapi.auth2.init..
But then you render the auth-button with a static method aka gapi.signin2.render (which has some kind of success and error handlers, but don't worry, they fire randomly, they won't help you debug this api mess)
SOME-FUCKING-HOW this static signin2.rendershit knows of your auth2 instance and it works. But actually it makes no sense and is just a big mess of api-calls. Google, get your shit together, this ain't pretty.
Oh and forget your informative console.log.. this shit will get erased everytime you try something because of "Navigated to https://accounts.google.com/o/...". why ever the fuck this clears the console even tho it doesn't affect the top window. So preserve that fucking log and drown in a mass of bullshit.
In the end, as it is with everything, it somehow works. But FFS that's some weird api design Google has going on..4
So next week I have a technical interview with TripleByte and I'm supposed to spent the next 2 days sorta preparing. Just woke up and had this thought tho:
What's the point? Yes I think I could try to get a better job but been trying for years (banking tech area) but now it feels like I'm at a "local optimum" sort of a sweet spot. Team/company could be smarter/more efficient but...
I've got my own place in a city that's also near NYC. It takes me 20 minutes to get to my current office, fairly flexible with the 9-5 work day, I can work remotely. I get enough money.
And then finding a new job === technical interviews about stuff you will rarely use and usually with no feedback like a pass-fail test where they only tell you if you pass or fail (and for me it always feels skewed towards fail the moment i walk since I'm deaf).
But at this point, I feel more like "you need to convince me to work for you". In my head, the plan is mostly to just have a nice chat and wing the technical questions just to see how good i am without any prep (i.e. poring thru Cracking the Coding Interview or Big O concepts, sorting...).2
Sometimes Im pretty impressed and envious by the skills of my fellow students.
Usually it looks like this:
me: So Uhm what u got for the <insert class here>?
him/her: Well its pretty simple algorithm which has big O of (Log(n)/1000000) which also mines bitcoin in the meanwhile and yeah, last night I figured out that it now generates electricity...
me: Uhm... My program prints Hello world... But backwards...
Like for real, sometimes I wish I find the motivation, to be awake 2 days straight just bursting with ideas of some crazy shit. Right now Im like 'You see that star behind that cloud? Jup it shines too bright, gotta get some sleep' -> Browsing devrant...2
Did I get old or did I just finish plucking all the low hanging fruit?
When I started on a programming journey about a decade ago everything feel exciting and I learn a lot of things per day (variable,loop,method,class,---etc)
Now a decade later I am more concern with the overall system design,algorithms usage (Big O Notation),how reliable the system it,and how the configurations are set up and how easy is it to change them.
I now notice that I don't really learn anything learn new.Everything feel the same.
Want redundancy? Use more server
Want faster performance? Make a parallel system.
Want program to run on low end device? Think about how memory and storage will be used in system.
Is this a stage everyone went through like puberty? or I am just having a mid life crisis?
PS : I haven't even reach 30 yet but I feel too old.4
since everybody seems to hate gradle i would like to say how much i like gradle for its possibility to build even big java projects from the commandline without the need of a a lot o scripts and especially the possibility to create a wrapper in order to use it even when its not installed on said machine.
it is the only reason why i am learning java now (i fucking loathe eclipse at the moment).
and regarding its speed. i had both. windows and linux. and for some reason i could only verify its slowliness on windows.1
Me: Interview is in 3 hours, I'm prepared, it's non technical anyway, just be yourself.
Brain to me: What the fuck is big 'O' notation? Objects you mean chairs? Turing? That's some kind of robot right?
Also me: fuck....1
I guess I should relate what work experience I have: my internship.
A little backstory I suppose. It's required at my school to do an internship to graduate except under certain circumstances. They encourage work experience a lot where I study. It was around time for me to apply for internships. However, the closest I got was a phone call with Amazon that I biffed when they started asking about stuff like sorting algorithms and other Big O notation stuff. So I was pretty desperate. I found a small company that were looking for internships and got an interview with them. The pay was dirt (I made more as a crew trainer at McDonalds) but I needed that internship and they were only 10 minutes away.
Immediate red flags when I showed up to the address. At first I thought I was wrong, But I noticed the sign of the company pointing up some stairs that were installed on the side of the house I was in front of.
Interview was a bit weird. It was with the CEO and the marketing manager. Again red flags. I show up for work a week later.
Turns out, they have no full time developers. 1st day was getting my workstation ready and 2nd day I was running Ethernet cables to the basement where the phones were connected. Spent around a week doing that.
This was supposed to be a Software Engineering internship?? Excuse me?? I came here to learn how working on Software is supposed to be like! I was also their "tech support" both for their computers and their crappy software that was built 16 years ago that people still pay for that I had NO idea how it worked because I just started and NOBODY taught me anything! To make matters worse, even if I wanted to delve into the code to see how it works it was all made in ancient Perl which didn't make things any easier.
But I needed that internship to graduate. And thus begun my 9 months with them and boy howdy I have stories to tell. Stay tuned in the future.3
For those of you that had to answer a lot of "whats the Big O of ..." questions to get a job, how often did you need to use Big O analysis to actually do the work?3
How do you guys learn? As we all know, we have a lot of stuff to learn in our field and it's growing and growing and growing. Other than the programming itself, we also have to learn the other stuff like algorithm designs, programming paradigms, big o notations, git, etc. And if you are working, you also need to learn the business rules your clients might have. And if you're unlucky with your job, your boss might even assign you to tasks with a programming language you have zero knowledge about.
So I was wondering, how do you guys balance your life, your family, your studying and your job? And how do you keep your head from exploding with information?6
So today at work, a dev proposed some solution to a performance problem by using divide and conquer. But the way he said it was came across like "this is a brilliant, algorithmic solution, I bet you'd never think of this because no one else knows algos".
So then I just reply to him mentioning Big O and how it seems the performance is N^3, exponential. In which case the optimal size is like 1. But basically like starting an algo discussion to see if he can keep up... Or if he's just dropping some algo slang to look good.9
I found out the importance of time complexity. It might not seem like a big difference between O(1) and O(2). But there's a big difference hardcoding 500 lines and 1000 lines of data.
I made a navigation app for school using dijkstra's algo. However it had no data available so I had to hardcode it. Long story short, there was a ton of hardcoding. Always try to improve the time complexity of the code you write.2
First time linux user feedback
Linux lovers are probably gonna eat me alive but I don't give a flying fuck
Maybe its a little lenghty or boring, tell me what you think
I work for game extension company. We work with WinAPI and such. I've been using Windows since forever and I'm happy with it. But I thought to myself "hey, if I wanna be a good dev, I should give Linux and OS X a try, too"
I downloaded Linux Mint couple of months ago to start with. I was unable to boot it from live CD no matter what I tried, even in recovery mode. Apparently, Mint 18.3 was based on Ubuntu 16.04 which doesnt support UEFI
Wait, what the fuck, all modern PCs have UEFI so what, do all Mint users have 10 y/o laptops and PCs???
Anyway, when I heard about Mint 19 being released I thought to give it another try and I did. What a surprise, it booted successfully from Live CD. I saw the Linux desktop for the first time in my life, yay! I then installed it, GRUB appeared, my Windows was still there and wasn't broken so I was happy SOMETHING was working. I configured timeshift and applied dvorak layout system-wide. Realised dvorak layout is fucked up big time and applied normal layout for just desktop environment. Everything was really nice until couple reboots later Cinnamon stopped launching (kept returning to login screen). Okay, lets use timeshift
First big what-the-fuck was when I found out system restore can only be done using GUI??? This is absolutely retarded and I couldn't believe it is true. Login screen has a reachable console but I can't login there since I can't type the password. Fuck, fuck, fucking drovak layout was there.
Recovery mode - I've spent 20 minutes trying to type "timeshift --restore" having to press all keyboard buttons just to progress with one button. I've had another what-the-fuck when I saw "error: can't restore timeshift - partition already mounted"
Okay, this is too much. Why the fuck would you bundle a recovery mode if you can't restore a snapshot from there.
I have spent 3 hours now googling and trying to remove this fucking keyboard layout. No dice. I am making another copy of the live CD now. I'm gonna reinstall the whole shit now. I have the desire to create a custom Mint version without this abomination of a keyboard layout.
It's okay. Windows has taught me to be patient.
Fuck Dvorak, I dont know who the guy is but his keyboard layout can eat my dick12
Advice for software developers -
(Mention something according to your view in comment box :))
Solve a problem. A business one - that created the need for the software you are developing.
Software is such a complex product (like cars and houses), it requires a team of engineers. Employers pigeonhole developers into little specializations. You can happily stay a sniper, machine gunner, or radio operator in your squad arrangement. You can even go to the officer’s academy (business school) to be promoted through official channels. But you need to try it first: comprehending the whole battle and rising above the specialist rank. At least in your mind.
You don’t have to write the entire system’s code to do that. Just look at the big picture, identify problems not directly related to you, raise them, and help your teammates to solve them. Solve some yourself - something outside your specialty. Become a generalist.
Will your bosses reward you for that? Not a chance. You are not doing it to earn official brownie points or even get noticed. In fact you won’t be noticed in a good way. Your boss would think you are undermining him/her and aiming for his seat. You don’t. That’s a dead end too.
Even if they reward you, don’t get comfortable. Well, that depends on your ambitions. How much “higher” “salary” you want? The most important skill you just learned is solving a problem. You are a project starter now. Or project savior. You can do anything: research, analyze, design, and implement. If you need help with coding, you can split that work with others, while coordinating the development. Yes, your boss needs to be afraid. Who cares? Let him/her sit in meetings and write useless documentation. You can produce the same system w/o your company’s bureaucratic overhead.
So now you have two paths. If you know a valid niche: a consumer or business problem to be solved, you can start your own company. Hire capable friends, find like-minded people. Don’t quit your day job. You can manage “dual-tasking”. Today’s dysfunctional IT workload is not that high. And the abundance of open-source technology makes everything virtually free. Except for the developer’s time. You can pay others in equity - if you need them.
If you want the security of an established company, apply there. It doesn’t need to be your current employer’s competitor. You can go anywhere - after researching the company business, ideally their pain points, and bringing the solution plan. Or even a prototype.
They’ll look at you differently, even if you are completely off base about their pressing problems. Just the effort alone shows who you are - a high-level problem solver. I hope you understand the difference between a problem solver - who makes things work and the pain disappear; And a formal “Solutions Architect” selling something on behalf of his/her consulting company - or purchasing if he/she works in the IT department.
Beats coding exercises, doesn’t it? I know it’s not up to you at the interview. What’s up to you is finding a company to apply at the higher, problem-solver level. It won’t be easy. The current hiring system is focused on acronym resume filtering. Companies hire either scientists or acronym specialists. Not problem solvers. As much, as I hate this generic advice, w/o a an independent unbiased recruiting system, aimed to find problem-solvers, you’ll need to network - easier said, than done.
My point is, however you get to that interview, through recruiters or the best connections, you still need to convince them that you can solve a real multi-million problem to command the higher pay. Otherwise you’ll just be a slightly higher paid pawn, reaching your salary cap in a few years after a few job hops.2
Having to work with my colleagues you doesn't believe on Dino's, satellites and big time believer in the flat earth (even hung up a map of it and stuff..) aaaaand.. him not understand a single proton-sized amount about IT but ignores my advice when he gets issues with his computer...
Ps. And yes, he has smelled alcohol as well, after a talk with the boss nothing has happened..
Pps.. FFS..NO not every thing is fake you stupid excuse of a human being with flattened peanut brain.. this is not the bloody Truman show (although good movie)
Ppps. Forgot the why.. why.. why?! Well.. isn't that the question with this guy.. (╯°□°）╯︵( .o.)
I'm in this company for about 15 months. It's one of the big name company. I'm a senior dev here. In my team we follow agile development. In starting I was just working on my part mostly. Then my manager raised concern to me for not taking ownership and helping others.
I started doing things what I could do. Like code review, API discussion, design discussion etc..
Now, the thing is I usually get upset when people go with 'lazy' solutions because I feel bad design leads to maintenance overhead, and it happened to us in past. We had to spend weekends to make things work. So, I started making code review, design review strict.
Some people didn't like it. But my manager was supportive, or at least I think so.
Some days back manager took me in a one-o-one discussion and told me one of the colleague kinda complained against me.
Now, my manager is not involving me into design discussions and API discussions. There are some new features are coming and I am not informed. I get to know things only in scrum-updates.
Am I about to get fired? I'm not gonna lie, I'm so scared. I can't put down papers as I'm already into 4th company in 7 years.
This thought is just killing me. What should I do? I'm so alone.7
I hate how the Java File I/O api works.....
I was developing a little noSQL database in java, just for fun.
The basic was: every entry was a json object, separated by \n.
Every entry started with the length in bytes, so i could perform a easy read of the entry with a inputstream, followed by the entry its self..
If i had a big file with more than like 50000 entries, to alter a entry with acceptable perfomance, i had to read every entry for matching with search, than using RandomAccessFile to mark the old entry as deleted and adding the modified one at the end.
The same for delete, it was only possible to mark the entry as deleted, so the read/alter would just not read it by reading the length(which i wrote earlier) and than use inputstream.skip with the length.
To actually delete not needed entries, i created a new file and than reading the old one and writing at the same time to the new one, with skipping the not needed entries and at the end rename the new file to the old and re creating all the streams.
Why cant i just replace a specific part of the file? WTF JAVA2
A very long rant.. but I'm looking to share some experiences, maybe a different perspective.. huge changes at the company.
So my company is starting our microservices journey (we have a 359 retail websites at this moment)
First question was: What to build first?
The first thing we had to do was to decide what we wanted to build as our first microservice. We went looking for a microservice that can be used read only, consumers could easily implement without overhauling production software and is isolated from other processes.
We’ve ended up with building a catalog service as our first microservice. That catalog service provides consumers of the microservice information of our catalog and its most essential information about items in the catalog.
By starting with building the catalog service the team could focus on building the microservice without any time pressure. The initial functionalities of the catalog service were being created to replace existing functionality which were working fine.
Because we choose such an isolated functionality we were able to introduce the new catalog service into production step by step. Instead of replacing the search functionality of the webshops using a big-bang approach, we choose A/B split testing to measure our changes and gradually increase the load of the microservice.
Next step: Choosing a datastore
The search engine that was in production when we started this project was making user of Solr. Due to the use of Lucene it was performing very well as a search engine, but from engineering perspective it lacked some functionalities. It came short if you wanted to run it in a cluster environment, configuring it was hard and not user friendly and last but not least, development of Solr seemed to be grinded to a halt.
Elasticsearch started entering the scene as a competitor for Solr and brought interesting features. Still using Lucene, which we were happy with, it was build with clustering in mind and being provided out of the box. Managing Elasticsearch was easy since there are REST APIs for configuration and as a fallback there are YAML configurations available.
We decided to use Elasticsearch since it provides us the strengths and capabilities of Lucene with the added joy of easy configuration, clustering and a lively community driving the project.
Even bigger challenge? Which programming language will we use
What we’ve noticed during researching various languages is that almost all actions done by the catalog service will boil down to the following paradigm:
- Execute a HTTP call to fetch some JSON
- Transform JSON to a desired output
- Respond with the transformed JSON
Actions that easily can be done in a parallel and asynchronous manner and mainly consists out of transforming JSON from the source to a desired output. The programming language used for the catalog service should hold strong qualifications for those kind of actions.
Another thing to notice is that some functionalities that will be built using the catalog service will result into a high level of concurrent requests. For example the type-ahead functionality will trigger several requests to the catalog service per usage of a user.
To us, PHP and .NET at that time weren’t sufficient enough to us for building the catalog service based on the requirements we’ve set. Eventually we’ve decided to use Node.js which is better suited for the things we are looking for as described earlier. Node.js provides a non-blocking I/O model and being event driven helps us developing a high performance microservice.
The beauty of microservices and the isolation it provides, is that you can choose the best tool for that particular microservice. Not all microservices will be developed using Node.js and Elasticsearch. All kinds of combinations might arise and this is what makes the microservices architecture so flexible.
Even when Node.js or Elasticsearch turns out to be a bad choice for the catalog service it is relatively easy to switch that choice for magic ‘X’ or component ‘Z’. By focussing on creating a solid API the components that are driving that API don’t matter that much. It should do what you ask of it and when it is lacking you just replace it.
Many more headaches to come later this year ;)3
1) IList doesn't have an AddRange.
2) WPF bindings must be ObservableCollections
3) Comboxes using Event Notification on PropertyChange are originally developed by some dope at Microsoft who still doesn't comprehend Big-O
4) LINQ can only do so much...
It's Christmas. My gift from Santa is trying to get through an end of year crunch on a project that is made entirely out of hot sweaty year old garbage, and the garbage collector is a halfwit who comes seemingly only when they want to, regardless of when I call Dispose().
It's 12:26pm here. That means it's time for bourbon and a good bit of "F*** this, I'm done for the day."7
A: Do you know Big O?
B: Yea I know Big O. Who doesn't know Big O?
A: So what's the Big O of X?
B: It's ....
A: Oh what about Y?
B: Oh that has a bigger Big O.
A: Hm... how about this one?
B: That's a really big Big O. Why not use mine?
A: Ooh that looks impressive, very small. So which Big O should we use?
B: Well there's a constant trade off, even though small is good, in this case I think the bigger one works better.4
My instagram feeds wooww
Big Setup with laptops pc phone etc .. hot guy or glzz.. and a big caption lets learn big O notation .. hehehe2
That feeling when you're applying for your first programming job.
And the knife stabs of nerves in your gut fearfully remind the coiled muscles in your sweaty brow of the singular possibility: what if I bullshit my way by the HR filter into this job and it turns out I was completely wrong, and I encounter a bug that my meager coding abilities really can't fix?
"Writing an interpreter in some community college you dropped out of ten years ago" doesn't mean you're a programmer.
"Figuring out where the bug was in a broken bat file that was pages long, for a language and framework you've never used, for a library nobody uses anymore", doesn't count as debugging.
"Writing a tweening library in an obscure tool" doesn't mean you're an expert. This is childs play.
What if they ask about big O? Do you admit that logarithms confuse the fuck out of you because you dropped out in 8th grade and got your GED later on due to being kicked out by your meth head dad?
What if being able to write a few measly cobbled together half-arsed estimate tools in python doesn't really mean you're qualified to do anything?
What if being able to look at code in languages you've never seen and grok it doesn't mean shit?
What if you've used more languages than you can remember?
What if you once lost a job offer casually given because the guy you built rapport with over months made a joke about browsers, and you joked about using internet explorer?
What if you thought you could, but you'd been raised your entire life to *believe* you couldn't?3
What a great feeling when you push a big bunch of changes and CI makes it over the biggest hurdle (lint and test). Time for a fresh cup o' coffee while the build finishes.
I'm a big fan of indo western fusion music.. This is one track you must hear.. Worth it, I promise
Sweet Child O' Mine - NESCAFÉ Basement, Season II by Viper's Choice #np on #SoundCloud
The User Interface Errors I experience on Debian, are so non senscial sometimes. I used to be a big Open Source guy over Windows, when I first started Linux. But after deep contemplation I think having monetary incentive is the main force for creating new technology in thos decade. As technology has advanced t seems like the open source community experiences 10 new errors for solving a problem. I think in the 90s atleast Linux seemed to make more gains, while this may be due to a smaller community or technology being more limited o dont know. I due think though technology abstractions seem to be more necessary these days, which saddens me.3
So I have recently joined a company that is very different from the usual exploitive "you are hired. make me the next tiktok in 4 hours" culture.
I would often rant about those and like how i am uncomfortable in an environment like that.
But here I am finding a problem of being too free. Like, they hired me to work on their product, have given me ample time to look into the code and get familiar with it, and poof , they are gone. The codebase is huge and I feel like lost in a big library with millions of books(analogy to their modules and inheritance classes) .
They did took a meeting once and cleared a little of my doubts, but after that nothing. I also know that from monday, they are going o give me tasks and i am freaking out about it. In the code, I would read 4 lines and on the 5th line there would be something that i do not understand or have used before. Problems are coming up with respect to my gaps in basics, knowledge of advance libraries and architectural knowledge.
I tried to find some direction, like I tried to follow the code from the start point of the app, but there is so much inheritance that its 2 days and i haven't been able to see the full code behind a very basic , single screen.
Please help, what should I do? I feel like there should be someone to tell me what code is working and how, but I don't even know whom to take this query to , or if they would be willing to do that or just tell me to "shut up, you spoonfed baby" and fire me6
I was hoping it would be possible in a big international company to work (as a software developer) on my own laptop (MacBook Pro) - cause of better parameters = better performance = better efficiency. After I got hired, I was told that it is not possible to bring my own laptop. So I was given an old DELL laptop with Windows + a lot of security stuff in it from the company. The poor DELL is so slow - that even a single commit into the branch takes about 2 minutes because of the security stuff : -O ...I am soooo disappointed... :[ .... On the other hand, by working at home on my MacBook in compare with that DELL I feel about it like I work with some super ultra alien technology from the future :D what a feeling <35
Anyone got some good links to introduce Big-O notation? I’m getting my head around it but still feel I’m missing the basics!4
When you pull down the list in this app to refresh the content the big sad devRant logo appear and it looks like theres problem with connection :o
Today I'm starting interviewcamp.io. I graduated from a 4-year university in California with a degree in computer engineering and have almost 3 years of work experience, but my god I am terrible at algorithms.
Big O (time and space complexity), recursion, Binary Search Trees, reversing a fucking linked list, etc. I need the boost and I hope the $250 a year for the material will help me get at least a $5k increase in salary when jumping to another company after the whole pandemic (or get a raise at my current job).
If anyone has any experience with them let me know. So far I'm 2 hours in and it is nice so far.1