Details
Joined devRant on 11/4/2016
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
-
Our coffee machine at work is broken. We're a fucking high tech company delivering unique solutions with millions of requests every second of the day to over 60 countries, how can we not have a working fucking COFFEE MACHINE in the kitchen? How are we suppose to keep the lights on if we can't get our daily coffee god damnit?! It's been broken for over a week.
Sure, I'll just walk to the floor upstairs to get coffee LIKE THEY DID IN THE EIGHTEEN HUNDREDS. Maybe I should just come in to work on a horse with armor stabbing some funny looking fucker because it seems like we're living in the GOD DAMN EIGHTEEN HUNDREDS and that was a totally legit action back then. Get your shit together, call the company providing the coffee machine service and just have them fix it. How hard can it be??12 -
It finally hit me the other day.
I'm working on an IoT project for a late-stage ALS patient. The setup is that he has a tablet he controls with his eye movements, and he wants to be able to control furnishings in his room without relying on anyone else.
I set up a socket connection between his tablet and the Raspberry Pi. From there it was a simple matter of using GPIO to turn a lamp or fan on or off. I did the whole thing in C, even the socket programming on the Pi.
As I was finishing up the main control of the program on the Pi I realized that I need to be more certain of this than anything I've ever done before.
If something breaks, the client may be forced to go days without being able to turn his room light on, or his fan off.
Understand he is totally trapped in his own body so it's not like he can simply turn the fan off. The nursing staff are not particularly helpful and his wife is tied up a lot with work and their two small children so she can't spend all day every day doting on him.
Think of how annoying it is when you're trying to sleep and someone turns the light on in your room; now imagine you can't turn it off yourself, and it would take you about twenty minutes to tell someone to turn it off -- that is once you get their attention, again without being able to move any part of your body except your eyes.
As programmers and devs, it's a skill to do thorough testing and iron-out all the bugs. It is an entirely different experience when your client will be depending on what you're doing to drastically improve his quality of life, by being able to control his comfort level directly without relying on others -- that is, to do the simplest of tasks that we all take for granted.
Giving this man some independence back to his life is a huge honor; however, it carries the burden of knowing that I need to be damned confident in what I am doing, and that I have designed the system to recover from any catastrophe as quickly as possible.
In case you were wondering how I did it all: The Pi launches a wrapper for the socket connection on boot.
The wrapper launches the actual socket connection in a child process, then waits for it to exit. When the socket connection exits, the wrapper analyzes the cause for the exit.
If the socket connection exited safely -- by passing a special command from the tablet to the Pi -- then the wrapper exits the main function, which allows updating the Pi. If the socket connection exited unexpectedly, then the Pi reboots automatically -- which is the fastest way to return functionality and to safeguard against any resource leaks.
The socket program itself launches its own child process, which is an executable on the Pi. The data sent by the tablet is the name of the executable on the Pi. This allows a dynamic number of programs that can be controlled from the tablet, without having to reprogram the Pi, except for loding the executable onto it. If this child of the socket program fails, it will not disrupt its parent process, which is the socket program itself.13 -
A physicist, an engineer and a programmer were in a car driving over a steep alpine pass when the brakes failed. The car was getting faster and faster, they were struggling to get round the corners and once or twice only the feeble crash barrier saved them from crashing down the side of the mountain. They were sure they were all going to die, when suddenly they spotted an escape lane. They pulled into the escape lane, and came safely to a halt.
The physicist said "We need to model the friction in the brake pads and the resultant temperature rise, see if we can work out why they failed".
The engineer said "I think I've got a few spanners in the back. I'll take a look and see if I can work out what's wrong".
The programmer said "Why don't we get going again and see if it's reproducible?"1 -
"You gave us bad code! We ran it and now production is DOWN! Join this bridgeline now and help us fix this!"
So, as the author of the code in question, I join the bridge... And what happens next, I will simply never forget.
First, a little backstory... Another team within our company needed some vendor client software installed and maintained across the enterprise. Multiple OSes (Linux, AIX, Solaris, HPUX, etc.), so packaging and consistent update methods were a a challenge. I wrote an entire set of utilities to install, update and generally maintain the software; intending all the time that this other team would eventually own the process and code. With this in mind, I wrote extensive documentation, and conducted a formal turnover / training season with the other team.
So, fast forward to when the other team now owns my code, has been trained on how to use it, including (perhaps most importantly) how to send out updates when the vendor released upgrades to the agent software.
Now, this other team had the responsibility of releasing their first update since I gave them the process. Very simple upgrade process, already fully automated. What could have gone so horribly wrong? Did something the vendor supplied break their client?
I asked for the log files from the upgrade process. They sent them, and they looked... wrong. Very, very wrong.
Did you run the code I gave you to do this update?
"Yes, your code is broken - fix it! Production is down! Rabble, rabble, rabble!"
So, I go into our code management tool and review the _actual_ script they ran. Sure enough, it is my code... But something is very wrong.
More than 2/3rds of my code... has been commented out. The code is "there"... but has been commented out so it is not being executed. WT-actual-F?!
I question this on the bridge line. Silence. I insist someone explain what is going on. Is this a joke? Is this some kind of work version of candid camera?
Finally someone breaks the silence and explains.
And this, my friends, is the part I will never forget.
"We wanted to look through your code before we ran the update. When we looked at it, there was some stuff we didn't understand, so we commented that stuff out."
You... you didn't... understand... my some of the code... so you... you didn't ask me about it... you didn't try to actually figure out what it did... you... commented it OUT?!
"Right, we figured it was better to only run the parts we understood... But now we ran it and everything is broken and you need to fix your code."
I cannot repeat the things I said next, even here on devRant. Let's just say that call did not go well.
So, lesson learned? If you don't know what some code does? Just comment that shit out. Then blame the original author when it doesn't work.
You just cannot make this kind of stuff up.105 -
!rant
Hey guys! We have started working on the cross platform desktop app for devRant for a while.
Here's the Collab link: https://devrant.io/collabs/420025/
Here's the GitHub link: https://github.com/tahnik/devRantFX
Here's more information about what we are using for developing the project:
1. Java 8
2. JavaFX
3. IntelliJ IDEA
4. Gradle
5. JUnit
6. Travis CI
7. JavaRant API (created by LucaScorpion)
8. Slack
Right now we have 4 collaborators: allanx2000, sirwindfield, LucaScorpion and me.
If you are interested in the project, you can always let me know and I will do something about it.5 -
People: “I love it when my girlfriend tells me how much he loves me.”
Me: “I love it when my microwave tells me my food is ready.”2 -
Working from home. That time you spend commuting is spent on working. That random guy showing up at your desk breaking your concentration doesn't exist. If there's a bullshit meeting you have to go to, you can dial in, put yourself on mute and continue to work while listening and just unmute as needed.
Seriously so much more productive.11 -
Any suggestions on a laptop for a dev? I hope to dual boot Windows and Linux. Any suggestions are appreciated! 😃20
-
Girl: we need to talk
Me: OK
Girl: you seem to have more time for your computer than me. I want to know how important I am to you.
Me: You are the number 1 in my life.
Girl: *smiles and hugs me*
Me: (thinking)...Just that I start counting from 029 -
I've always been tempted to move at least in some part over to a version of Linux but don't know how to go about it safely because I still love my win10 for casual use, so advise for moving to Linux??10
-
How do people justify writing GUIs only for Mac and Windows? They could make just a single QT program which would work on Linux too.11
-
Android app update available! I wonder what they've changed? 🤔
Changelog: "We improved the app and made it better."
Well thanks. 🖕20