AboutI'm 37. My dad taught me BASIC when I was 8 and I've been coding ever since. My current project is developing an interpreted declarative language in C++.
LocationKingston, ON, Canada
Joined devRant on 6/14/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
Me: *asks boss for the id of his test store so I can apply experimental schema changes to test out a new dashboard app*
Boss: *gives me production store id and doesn't say anything*
Fate: … "You got lucky this time."
This is the CEO of the company btw. Startups. *sigh*1
I found university very worthwhile, mainly for what it exposed me to that I wouldn’t have necessarily learned otherwise. University exposed me to a lot of knowledge which allowed me to discover the fields and concepts that really interested me. It also forced me to learn math, and I’ve come to really love mathematics, even though my knowledge is still not that deep. I really respect and appreciate math now that I have more than a superficial understanding of it.
CS-wise, the things that have been most useful in practice have been complexity, data structures, concurrency, and others, but complexity is probably the absolute most important thing to at least learn the basics of.
I would not say that university is a necessity though. You can absolutely get by teaching yourself, especially if you are disciplined/interested enough to keep doing it. The important thing is to learn *what* to learn.2
My boss just designed this and asked me to implement it, without asking for any input.
I was a UX designer at my previous job. This makes me want to cry.20
I just got a necromancer badge for an answer to my own question on SO.
Still trying to figure out how I should take this.
Sometime in the near future…
"Hey Joe, how's the new robot working out?"
"Oh it's great, except that we have no more shampoo in the house."
"Yeah, apparently it got its hands on a bottle and infinite-looped on Lather, Rinse, Repeat."
Just got my Christmas present from Shopify:
You have 45 days to integrate with our new Billing API or lose your app on our app store.
Because I just LOVE dropping everything to deal with yet another mandatory Shopify change. Have you guys not heard of backwards compatibility?
My coworker just spent *weeks* getting our app approved, including submitting an obscene amount of information and multiple live reviews and now they're threatening to remove our listing from their app store if we don't adopt their new API by the end of January, requiring a complete re-submission and review to get it back on.
This is apparently a completely normal way to do business to Shopify.4
Bank forces me to change my password. Figured I'd use Safari's strong password generation. Submit. Password changed.
Go to log in with new password. Password not saved because I had previously told Safari not to save this site's password.
Okay… so the strong password you JUST generated and submitted without showing me is now my banking password but neither of us knows what it is?
Fucking brilliant. I mean at least let me fucking copy it so I can store it in my password manager. The most hilarious thing is the message that appeared on the generated password saying my password would be available from Safari preferences. Yup, nope. Nothing there except a note saying no passwords will be stored for this site.
This is the state of Apple in 2018, folks. Fucking sad.20
This is the last straw. I am so done with Chrome.
I woke up AGAIN this morning to my MacBook shining away brightly, having not gone to sleep the ENTIRE night. I did some better research this time and discovered it's actually Chrome that is causing this.
Yes Chrome is deciding whether my MacBook goes to sleep or not.
I am not ok with this. Worse, it doesn't even have any ability to change this behavior. It's basically a hidden "feature" of Chrome: it wastes your hydro too!
This is not the first time this has happened either. Last time my MacBook wasn't properly plugged in and it completely drained the battery, shutting it right off. I ranted about that already.
But I am just SO fucking livid about this right now. What on EARTH is going through google's mind that they think this is in any way even REMOTELY acceptable?
I've already filed a bug report but I think this is the last straw. I am just sick to death of Chrome. This bug is literally costing me money and damaging my property.
Shove it right up your fucking ass, Google. Right up there and twist it around.
I'm switching back to a real browser.32
Woke up this morning to my Macbook completely drained.
Turns out my USB-C cable had dislodged itself.
But what *really* pisses me off is why the fuck is my computer completely drained overnight? Did it have the screen on the whole time? I swear I've come down in the morning and the screen on my Macbook is still on. I wouldn't be surprised.
Apple is really losing their touch.2
My coworker just replied to a customer’s out of office email. 😂
“Thank you for letting us know that you will be out of the office” 🤣
The subject of the email is “Re: Automatic reply: Data Export - Items Sold” 🤣🤣🤣
Me trying to take a screenshot with iOS 12:
*holds home and presses lock* (the only way I had found to reliably take a screenshot in previous versions): Siri
Fuck off Siri I want a screenshot!
*tries again same way*: Siri
Fuck OFF Siri!
*holds lock + home*: phone locks
*unlocks phone, presses home and lock at the exact same time*
*continues holding* I just want my fucking screenshot.
Phone powers off. Hard reset.
Fuck this shit.
How hard is it to monitor two buttons being pressed at the same time? And if it is so damn hard why make it the ONLY WAY TO TAKE A SCREENSHOT??!
Now whenever I want a screenshot it’s basically a crapshoot whether I will get a screenshot, Siri barging in, or my phone locking on me.
Couldn’t they have just used the volume buttons instead? 😡12
I move that the term snake case be renamed sausage case because it makes way more sense.
Help. I work with a guy who really wants to learn programming (he’s sales/support rn) and is even taking some courses on it. He seems eager enough to learn, the problem is he is just so fucking stupid I don’t know whether to encourage him or level with him.
He somehow managed to pass a course on Java (which I still don’t believe since I had to help him put his lines of code in the right order ffs), but now he’s signed up for C++ and data structures and I honestly don’t know how he’s going to do it.
This is the type of guy who loves “coding” but thinks debugging is a waste of time.
Normally I encourage anyone who wants to learn programming do so, but let’s be honest it does take a modicum of intelligence and this guy has zero common sense at all. We’re talking about a guy who sent me a *screenshot* of an Excel file that I needed to copy some activation codes from. And then had absolutely no idea what was wrong when I replied “are you fucking with me right now?”
And that’s not even scratching the surface. I sent him a zip file containing some updated code and walked him through how to update them on Slack (really basic, copy/replace files stuff). Then the VERY next day when I sent him a second update he asks “is there something you want me to do with this?”
The instructions were literally the last thing we talked about in the chat log.
I actually fear the stuff this guy would unleash upon the world if someone were actually able to teach him how to write a whole program.
What should I do? Right now my plan is to be vaguely supportive but secretly hope he will realize he’s in over his head and drop out before any damage is done. But my worry is he may just be SO dumb that he actually thinks he can do it. At that point I guess I just have to put my faith in his school and pray that they aren’t just giving degrees away to whoever can afford them. Because fear the day this guy ever gets a degree in programming.9
Dear Chrome, how about when I paste something starting with https%3A%2F%2F into the address bar you get up off your lazy ass and url-decode that shit for me? Ain't nobody got time for this.1
Did a bunch more cowboy coding today as I call it (coding in vi on production). Gather 'round kiddies, uncle Logan's got a story fer ya…
First things first, disclaimer: I'm no sysadmin. I respect sysadmins and the work they do, but I'm the first to admit my strengths definitely lie more in writing programs rather than running servers.
I could rant for days about the various problems this codebase has, but today I have a very specific story to tell. A story about errors and logs.
And it all started when I noticed the disk space on our server was gradually decreasing.
So today I logged onto our API server (Ubuntu running Apache/PHP) and did a df -h to check the disk space, and was surprised to see that it had noticeably decreased since the last time I'd checked when everything was running smoothly. But seeing as this server does not store any persistent customer data (we have a separate db server) and purely hosts the stateless API, it should NOT be consuming disk space over time at all.
The only thing I could think of was the logs, but the logs were very quiet, just the odd benign message that was fully expected. Just to be sure I did an ls -Sh to check the size of the logs, and while some of them were a little big, nothing over a few megs. Nothing to account for gigabytes of disk space gradually disappearing.
What could it be? I wondered.
du . | sort --sort=numeric
What's this? 2671132 K in some log folder buried in the api source code? I cd into it and it turns out there are separate PHP log files in there, split up by customer, so that each customer of ours (we have 120) has their own respective error log! (Why??)
Armed with this newfound piece of (still rather unbelievable) evidence I perform a mad scramble to search the codebase for where this extra logging is happening and sure enough I find a custom PHP error handler that is capturing (most) errors and redirecting them to these individualized log files.
Conveniently enough, not ALL errors were being absorbed though, so I still knew the main error_log was working (and any time I explicitly error_logged it would go there, so I was none the wiser that this other error-catching was even happening).
Needless to say I removed the code as quickly as I found it, tail -f'd the error_log and to my dismay it was being absolutely flooded with syntax errors, runtime PHP exceptions, warnings galore, and all sorts of other things.
My jaw almost hit the floor. I've been with this company for 6 months and had no idea these errors were even happening!
The sad thing was how easy to fix all the errors ended up being. Most of them were "undefined index" errors that could have been completely avoided with a simple isset() check, but instead ended up throwing an exception, nullifying any code that came after it.
Anyway kids, the moral of the story is don't split up your log files. It makes absolutely no sense and can end up obscuring easily fixable bugs for half a year or more!
Dear Swift, we have to break up. I’ve found a new language to love. Oh don’t act so surprised, you know our relationship was on shaky ground. You never let me have any fun. You’re always telling me what to do and how to do it and I’ve had enough. You treat me like a child, and I’m moving on.
Things were good in the beginning, and you may have impressed me with your automatic reference counting, but my new language can do that too, and so much more, and does it faster than you could ever imagine. You see unlike you, my new language doesn’t boss me around. It *trusts* me, Swift. That’s the one thing you never could understand. I need to be trusted; and know that I can trust in you.
Well I can’t. Not anymore, Swift. It’s over. My new language just treats me better than you ever could. I’m sorry it came to this but I deserve better than you Swift. We’ve both known this for a long time.
I wish you the best, but you probably shouldn’t call.
I’m with Rust now.1
Holy shit. I just watched a video on Rust and I think I am in love.
Tracked mutability, reference counting, guaranteed thread safety, all in a compiled type-safe language with the performance of C++? 😍
Why did I not check this out sooner??11
Ever notice the similarity between Flat Earthers and people who believe HTML is a programming language?
You can present them with all the reason and logic in the world and they won’t change their minds.13
The most helpful error message of all time:
Unhandled exception in line 0: Script error.
Literally translates to: “Something went wrong but I’m not gonna tell you what.”
Believe it or not, I actually had a great day of development today and don't feel the need to rant about anything!
It was one of those rare days when everything went well, and instead of running into road blocks, you actually learn about things that open new doorways, and the one thing I did struggle with received an answer on Stack Overflow within minutes that was both exactly what I was hoping for and as a bonus, not even condescending.
Dang, dev doesn't get much better than this! ☺️
Just got asked to fix a friend of my mom’s (whom I have met all of once) brother’s computer. 😒
It’s a stereotype and it’s so frigging true.
I can't stand Swift's initializers. No other languages have the problem with constructors/initializers that Swift does. It's a complete failure of a feature and to hell with safety if it comes with this cost.
Just to illustrate how ridiculous it gets, I want to have a class where my initialization logic can be split among reusable parts. That is, the logic that initializes the class with no parameters has logic that I want to reuse in my other initializers. Simple DRY stuff. Well, the only way I can do that in Swift is if I use a convenience initializer that calls another one. But convenience initializers have completely different rules from designated initializers (again, something only Swift does).
For example, you can't access "self" until you call a designated initializer. You can't chain designated initializers, and if you want to chain anything in the same class you have to handcuff yourself by using a "convenience" initializer (there's nothing convenient about them, I might add).
So now I want to subclass my class and initialize myself using one of my superclass initializers. Oh but the one I want to call is a *convenience* initializer so I can't, unless I turn my new initializer into a convenience initializer. Except wait, a convenience initializer must delegate with self.init(), so it can't even call a superclass initializer!
And it just goes round and round and round. I don't know if I should try to convert all of my initializers to convenience initializers or the other way around.
Why all this nonsensical madness? Get rid of the distinction and go back to nice clean powerful initializers like Objective-C. I mean what does it have to take? This is a complete nightmare.13
My biggest regret was leaving school for the workforce. I had aspirations of climbing the corporate ladder and maybe even being a leader or CEO someday myself.
It unfortunately took me too many years to realize it’s all a complete scam. You end up wasting away working on the most soul crushing of stuff, all to support someone else’s dream, and the people on top are not those who deserve to be there, but those who schemed and manipulated their way to the top. They often have zero idea what they’re doing and you end up having to do their job for them, while they take the credit and the big bonuses.
I had (and still have) many brilliant ideas for creations, but not one of my employers has cared about anything other than their bottom line. You are nothing but livestock to them, and they will treat you as such.
I wish now I’d just stayed in school and worked on my ideas and theories in an academic environment. If you think for a second companies will give a shit about you, think again.1