AboutFather, husband, computer engineer, former chef, and also a political scientist!
SkillsAssembly programming, C/C++, Java, app development, HW/SW interfacing, IoT
LocationWestern New York, USA
Joined devRant on 9/24/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Identifying when to start a project over because it has gotten out of hand with workarounds and memory management issues.
It's just after midnight.
I have a heavy workload starting tomorrow.
Going to require lots of time away frm my wife and son.
They're all in bed, but I am awake.
My only dilemma at this point:
Work on my side project?
Or play Command And Conquer?2
Finally D-Booted Ubuntu on my home computer.
Now I'm just waiting for the frantic texts from my wife during the work week telling me "I hate this new system, get it off our computer."
You must learn CLI. It is the only way to inner peace.8
Is it just me? Or was Chrome acting really weird these past couple days? (I mean weird for Chrome, obviously)1
When older family members have entire notebooks dedicated to logging obscure, easily-hackable passwords, but then download any app in the world that promises to "make your phone run like new!" (by using 30MB more RAM on God-knows how much malware)
We aren't doing a good job of educating people if anyone we know can fall victim to those kinds of hackneyed procedures and snake-oil apps. It's almost painful to watch, and have to be the bad guy by telling someone dear to me they've been making things worse for themselves because of a seemingly harmless app that they were almost proud of.4
Well I WAS going to develop a side project on my day off today (a network of Arduinos and a Raspberry Pi) but the woman my wife hired to clean our house flaked-out, so now I get roped in to fucking housecleaning.
This was going to be an awesome day. Was gonna work on my project, chew some tobacco, and then go shooting, and out for wings for dinner. (where I live, chicken wings can be an entire meal)
Now I'm cleaning the shitter and scrubbing countertops because the little precious snowflake of a cleaning lady is in the middle of a (so-far) 3-day emotional breakdown.
Dear snowflake cleaning lady: Fucking learn IPv4 socket programming on the fly, when you've got an imminent deadline, and a crying, teething baby in the next room, at 3am, and don't fucking lose your cool at any point during all of this, then tell me about your fucking "emotional breakdown."3
Just another day, building some hearty data structures in C.
I need to make a program that can multiplex user IO to different child processes from the command line.5
Don't feed the pigeons.
A cautionary tale.
When you feed the pigeons they keep coming back. They don't stop pestering you for help, and they don't ever listen to you.
I gave my father-in-law my old laptop, and installed the latest version of Office 2016 because I'm a nice guy.
Now, every week at family dinner there's something he needs me to help him with.
Mind you, his previous computer had Windows XP and the one I gave him had Windows 7. So it was quite the texh upgrade for him.
Except one of his octagenarian siblings wrote a family recipe book, and wrote it in Word Processor. (because Old People!) Well fuck of course it has pictures, clip art, special formatting, vertical and horizontal lines. It worked fine on XP because Word Processor was supported by XP.
The following is me explaining to him over the phone why his recipe book wouldn't load into Word. I was in his house picking up 2000 rounds of ammo for my and my wife's pistols (target practice) while he was out and about.
FIL: "It's the link on the desktop. It comes up in Word on the old computer but when I tried to put it on the new computer it wouldn't work. I used a thumb drive."
Me: "Okay well I tried to..."
FIL: "I don't know why it would work in Word on one computer and not the next."
Me: "Okay, well I clicked on the link to the file on your old desktop and it opened in Word Processor, not Word."
FIL: "No it opens in Word on the old computer, but it won't open on the new one."
Me: "It opens in Word Processor on the old computer, it won't open in Word on..."
FIL: "Which computer are you sitting at? The old one is on the left." (as if I wouldn't recognize the computer I had for three years and just gave him a month ago!)
Me: "The old one."
FIL: "Okay so it should open in Word on the old computer."
Me: "It won't. It will open in..."
FIL: "I was thinking maybe it had something to do with a screen that popped up when I logged in to the new computer. Something about antivirus software?"
Me: "It will open in Word Processor on your old computer, but it isn't formatted..."
FIL: "Yeah, it's a '.-w-p-s' file so it should work in Word."
Me: "Word Processor is a different program from Word. This opens in Word Processor."
FIL: "So which one do I have?"
Me: "You have Word Processor on the old computer."
FIL: "So how do I get Word Processor on the new computer?"
Me: "You don't. It is defunct software, it was discontinued ten years ago. You can try to get a converter online, but there's no guarantee it'll work."
FIL: "Alright, I'll be home in a few minutes. I'll take a look then."
This was at 10pm last night, and I'd been out all day since 7:30am. He still didn't believe me that the book was written in Word Processor until I showed him the different startup screen for Word Processor, where it says "Word Processor" plain as day.
I fed the pigeon. And it looks like there's more of this to come.3
That moment when you think to use fopen instead of open, and everything comes together magically. Only lost half a day debugging this too!1
In-laws don't drink coffee, they just pour it and let the mug warm their hands, thus hogging the coffee I could have drank.
What kind of monster family did I marry into?4
Wish me luck. Starting today on building a modular CCTV camera and alarm system for my home.
Gonna try to integrate accelerometers on the windows to detect when the glass vibrates too much or for too long, as opposed to sonic glassbreak sensors, which also trigger upon my son crying.
Goddamned Firestick keeps rebooting. I think my wife accidentally bricked it somehow. It's a very delicate little snowflake of an operating system.
On the plus side, it forces us to find a more productive hobby than watching endless TV.
On the downside, now we have no Thomas and Friends for our son.1
Before I became a Computer Engineer, (actually, this job is where I learned I loved programming) our manager would pull us into a team motivational meeting.
Except she was a bit of an airhead, so her idea of motivation was having a sing-song and listing our favorite movie quotes.
It was even funnier because there was lots of drama surrounding "how she became our manager," and one of our teammates felt as though she should have gotten the job.
Anyway, none of those were the most ridiculous meeting.
The most ridiculous meeting was when the VP of marketing came to town from Florida to address the brewing drama.
In this meeting, all of my teammates suddenly had the delusion that we were in a union and thought they were protected from getting fired. They threw our manager under the bus. I was the only one who could see that he was there to see if our department was worth saving. They thought they were going to get rid of our manager by shitting on her, but they were just confirming his suspicion that there was a bunch of bullshit going on all around.
So I approached the VP after the meeting, and long story short, I was the only one who got through layoffs with a job offer in Florida a couple weeks later.
I didn't take it, because by that time I decided I wanted to go to school for Computer Engineering.2
Github cares about spellchecking.
Even the swear words.
(Although "fuckin" shouldn't be considered a misspelled word)5
As a gun owner and an avid FPS player, and one day (when I get the time) a builder of such games, please may I set something straight?6
Assembly Programming is a misunderstood and tragically underutilized form of self-abuse.
While the ladies were off reading "50 Shades of Grey," I was reading the ARM ISA documentation.4
Stayed up extra late fixing a bug. Fucking bug is buried in a thousand lines of MOTHERFUCKING SML.
FUCKING ASSHOLE SHIT-WAGGLING COCKSMEAR AND THAT SHITTY, GODDAMNED BACKWARDS FUCKING LANGUAGE!
Fucking wasted an entire night chasing down a fucking bug in SML with no positive effect.
I wound up commenting out 7/8 of the entire fucking codebase to try to find the fucking bug. No positive effect.
Finally had to go to sleep because my son was about two hours from waking up.
Getting back to work, and within twenty minutes I found the fucking bug and fixed it.
Fucking wasted nearly an entire night's sleep, and I ended up fixing the fucking bug before finishing my morning coffee.
I seriously fucking hate motherfucking SML.3
Feeling very optimistic today.
Set up in a quiet library with no other humans around. This is going to be a productive damn day!
Gonna learn to do some cool stuff I've never done before, and make some headway on some things I've been neglecting for a while.
Got a big thing of coffee, lunch squared away.
Feels like the world is at my fingertips.
(this has been a positive rant)
Started learning SML
I don't know why.
So far it's like only being able to use macro-defined functions in C, except it's really anal about type use.
What twisted, saddistic SOB invented this?!
I miss C1
My dev superpower would be the power to magically refill anything.
Out of hot coffee? Refill your thermos!
Bank account running low? Refill with money!
Battery empty? Refill with charge!
Going bald like me? Refill your head with hair!
Bed empty? Refill with beautiful women!
Clients / managers annoying you? Refill their bladders!
The possibilites are limitless!7
I have recently come into some spare time and I decided to build a game.
This is my first time building a game, mostly just worked on IoT and data processing, and I need tips on how to avoid becoming addicted to working on this hobby.6
Biggest distraction is a cool idea popping in my head, or someone telling me they have a problem that would be easy for me to solve.
I have to resist the urge to jump right in and build a solution.
In that sense, I am my own biggest programming distraction.1
When I see a coworker do this:
if( recValues == '0' )
recValues = '1';
else if( recValues == '1' )
recValues = '0';
I replace it with this:
recValues ^= 0x1;
Note: The recValues is guaranteed to contain only '0' or '1'21
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