About10+ years of mobile and dev in general. 4 years as team lead. 3 as architect.
Joined devRant on 4/5/2017
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
On A privacy research focused Hackaton, my team lead got up, and said:
Our group is going to look at porn sites privacy issues! and @magicMirror is going to lead that effort!
And went on to say Porn+@magicMirror in every sentence. Very loudly.
long time ago....
Feature request: We want an android backup solution in Our app!
UI guy has already developed it, you just need to see if his solution is solid!
Ok then - lets look at the UI: Nice progress bars, that turn into green checkmarks. Looks good.
Now lets look at the code: ... Ok. loading some files into memory.... and... dafuq? does not write to a file?
Backup to RAM. With no restore. 🤦♂️.3
Trying to get my 'patience for Idiots' threshold back up to 15 minures. Not easy.
The problem is - you need to listen to them talking for 20 minutes before 30 seconds of relevant and actual info comes up.4
Sales: "There is a problem in complicated feature A, in a client system!
Dev: "What is the problem"
Sales: "I don't know exactly"
Dev: "which client system? What version is installed?"
Dev: "Do you a Jira ticket, or an email with more details?"
Sales: "It is urgent that we fix the problem ASAP!"
Dev: "what problem"
Sales: "The problem! I talked to the VP RnD, So he can make sure you are on it!"
Dev: "What exactly do you me to fix"
Sales: "The Problem!"8
Idiots. Just... Fucking Idiots.
Junior Frontend dev got a feature to implement. Decided to add a field to a set of mongo collections. I'm the responsible adult for those collections. Talked to the junior - told it, "don't do that, you will lose the data you are adding later". Junior says "will not happen", and goes on to try and prove It is "Right". Problem? Junior is an Idiot. did not trigger the data loss scenario. So... Junior got his TL to talk to the RND manager. And those Idiots Decided that the implementation will go forward as is.
Data loss will happen. QA will not find it. Only the client will experience the data loss, and complain....4
worst: codeSourcery cross compile tool chain. The stuff of nightmares.
Best: textmate or notepad++. Never code in them, but really usefull for a quick edit, or log analysis.1
cables. lots of cables. also, an ethernet switch.
But the toys I have (and other ppl keep burrowing) is a dalek, tardis minuatures - about 6cm Height (2.1"), and lvl 5/6 hanayama metal puzzles.4
Most memorable co-worker was a daft idiot.
this was 10 years ago - I was working as a junior in my very first job, fresh out of uni, for a very small startup. It was me, and the 3 founders, for a very long time. Then this old (45, from my perspective then..) dev was hired.
This guy had no idea how to do the job. no common sense. the code confused him. the founders confused him. I was focusing on my work - and was unable to help him much with his. His only saving grace? He was a nice guy. Really nice.
But why was he so memorable, out of all the people I ever worked with? simple. He had a short term memory problem. Could not, even if he really tried, remember what he did yesterday.... when I asked him what his issue was, he decribed his life is like a car going in reverse in a heavy fog. "I can only see a short distance backwards, with no idea where I'm going".
Startup was sold to a big company. I became a teamlead/architect. He? someone decided he should be a PM.
Wrote a perl script to spam group sms to my friends, in perl. Also - web scrapers.
Ugly AF stuff. never heard of strict, or warn when I did it.....
really fun times!
Worst recruiter experience:
Recruiter sets up interview with a company. I get to their office - the most packed place I have ever seen - devs practically sitting on each other, and the QA guys are being used as chairs....
So I wait for 15 minutes near the doot till the interviewer gets to me through the incredibley noisy openspace, and shakes hands. We go into a mess of a meeting room - and he explains that they will be moving to a bigger office soon. I say - looks like you should have moved by now....
Anyways - he askes me to tell him about myself - and I explain my background, Focusing on Android dev experience - The recruiter told me this was a senior Android dev position. The interviewer has a huge question mark above his head, but waits for me to finish. Then he tells me: so... no backend experience? so Now I have a huge question mark above my head...
turns out he is looking for BackEnd devs - Not android devs.1
during code review...
peer: "you should pass this variable, and extract the logger from it"
me: "why? it is a 3 line logging function. why not pass the logger instance?"
peer: "because that is our best practice. It is the way we do things"
me: "why is it a best practice?"
peer: "because it is. We use it everywhere!"
me: "No we don't. And I still don't understand why is this a best practice. can you explain?"
peer: gives ups, did not look at the mr, and was not going to.
mr stays open. probably forever.11
Who made that shit? and whhhyyyyy?
I spent 20 minutes trying to figure out why the code file, a mac using co-worker sent me, does not compile.
Intlij did not help, np++ did not help, textmate did not help!
Only hex editing the file worked!
kill it with fire!7
Had to interview an iOS dev.
When I asked what was better - xib/nib or storyboard? He told me He prefers to write custom c++....
DevOps is like working in sanitation. If everything works as it should, no one cares about you. But if there is a problem, everyone is up to their eyeballs in shit, and it is your fault.
Same as IT btw.3
merged a complicated pipeline script based on 3 other scripts, and it worked the first time I run it.
Pretty sure There was a Disturbance in Force...
This was a long time ago, when I was working part time in my uni helpdesk. as part of the uni IT service, they offered ISP services at the dorms. It was cheap, and fast. This essentially allowed students living in the dorms to connect thier personal computers to the uni LAN. Then one day...
An ARP poison malware infected some of those computers. An arp poison attack is simple (look at ettercap) - it redirects network traffic via the affected computer, and adds malware to webtraffic to infect more computers. One of these on a network is bad enough, but when there more then one... traffic was redirected a lot. this caused the Dorm switches to collapse under the load. Fun times to work at the helpdesk...
The IT guys came up with a solution for this: they blocked the arp poision attacks at the firewall, and then disabled the switch port for the infected computer for 24 hours. so, when someone called with 'I have no internet!', we told them to bring us the computer, and installed an AV on it.
3-4 month the problem was cleared.1
teach meta language concepts: what is an operator, literal, constant, statment, control flow. the recursive nature of staments. then go into objects/methods vs structs/procedures. then teach some java. then go into reflection concepts. then use reflection for something simple. then teach a bit of perl. then let them build something in python. Anyone who can pass through that will know how to Program in whatever you give him/her.
I wish my teachers talked about the meta programing, instead on focusing on the minutia.
The interview goes both ways. Ask the interviewer how he likes to solve problems, and how he works with ppl. This will give you the information to decide if you want to work with him or the company.
This is especially effective on HR: ask about thier corporate culture and how they deal with promotions/good people and how they deal with bad people.
And make sure you visit glassdoor.com before the interviews begin.
there is always somone smarter then you doing this shit.
Also, wait a week after you hear bright ideas from manament, and don't start work untill then.1
Got to the office in the morning. Boss says, ok we want to do a toast for one thing or the other. Got a nice glass of red wine. drank it. Nice wine. got back to my computer, and started to work. the boss man calls me back. I say whats up? he says, bottle of whiskey....
drunk coding is fun!6
I used to work with another dev who had memory problems. This guy *literaly* could not remeber what he did yesterday...
So, he was trying to change one of the password screens we had in the app. This was a really simple screen. Logo, password prompt, and two buttons. He worked on this small change for two days, but everything he did did not affect the screen at run time.
So finally, he gave up and called me to help him... I come over, and look at his code. It looks ok. I make a small change, and see what happens. Nothing. I think for a moment, and delete the entire screen UI elements. Run the app. Nothing happens - screen still the same.
Then I got it - he kept changing the wrong screen... for two days....
took me a whole 5 minutes to figure out.2
!rant & story_time
This happend to the startup I was working for at ~2011. I was a junior Android dev, working on a very popular app.
During experiments for a new feature, I discovered that the system AlarmManager has a serious bug - you can set a repeating alarm with interval=0ms. If your app takes more then 1 ms to handle the Intent, then the AlarmManager will start to fill up the intent Queue, with unexpected results to the OS. causing it to slow down, and reboot when it ran out of Ram. Why? my guess was that because the AlarmManager was part of the OS, then any issues caused by it caused the system process to ran out of ram, crashing it, and the whole system with it. the real kicker was that even after a reboot, the AlarmManager still had Intents queued, causing the device to bootloop for a while, untill the queue was cleared. My boss decided to report the problem to google, as this was an issue in the OS. I built an example app, that caused the crash 10-30 seconds after starting, and submitted to Google. Google responded later that day with "not an issue, no one will ever do this".
Well... At this point I decided to review the autoupdate feature in our app, to make sure this will not happen to us. We just released a new feature where a user can set an update schedule option in the app settings - where you could setup a daily, weekly, or hourly update for the app. after reviewing it, It looked good, and the issue was not triggered in the manual QA I did. So, it was all good. And we released an updated version to the store.
After we did an update-install, we discoverd that, there was a provlem reading the previous version SharedPrefs value for the update schdule settings, and the value defaulted to 0...
the result was, our app caused all our users to go into a bootloop, and because the alarm was reset when the devices booted up, the bootloop could only be solved in a factory reset, or removing our app, before the device rebooted, and then waiting a few reboot cycles.
We lost 50 places in the market, and it took us 6 months to get back to where we were.
It was not my fault, but it sucked big time!5
bug comment in the tracker, from the new junior dev, during her first week:
"probably fixed by [other dev]".
Among the unhelpful comments, this was a special gem. really special. a What the Fuck did you mean by that special. Was it fixed or not? who fixed it? [other dev]? someone else?
it was better not to have any comment at all.
later that junior became a really good dev...
"If builders built houses the way programmers built programs, the first woodpecker to come along would destroy civilization." Gerald weinberg.
started by writing a perl script to crawl a website. The problem with that, is the fact ot affected the way I program. And not in a g/ood/i way.