Details
-
AboutCoder
-
SkillsLots
-
LocationU.S.A.
-
Website
-
Github
Joined devRant on 1/26/2019
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
-
Let's say you're working on some pretty complex JavaScript code, and it's just not working right, nothing you try seems to fix it and you can't figure out what's going on. So, rather than continuing to bang your head against the desk, you decide to do the smart thing and shut down for the day.
You then come back to it the next day, refreshed and ready to do battle with the code! You start by adding a few simple logging statements to see what the hell is going on.
You then run the code and... IT WORKS PERFECTLY?!
You scratch your head for a while before finally realizing that cache didn't get cleared yesterday, so your changes were never executing.
D'oh!
Do you:
(A) Beat yourself up for missing such a stupid and basic thing despite doing this shit for literally over 25 years now, or:
(B) Do a happy dance because you just got a free day and can effectively start the weekend early knowing you accomplished your goal for the week?
(or, I suppose, both, which is kind of where I land)6 -
Interesting...
On Friday, I was playing with the ChatGPT integration in DBeaver. I was using the DBeaver sample SQLite database. This database has a couple of tables, among them Album and Artist, where Album has a foreign key into Artist.
So, I asked it:
"give me a query that lists all albums from artists who's name starts with s"
The query I got back was:
SELECT * FROM Album
Uhh, okay.
But then, I noticed that I wrote "who's" instead of 'whose', which would be proper grammatically. So, I changed that, and then I got this query:
SELECT * FROM Album WHERE ArtistId IN (SELECT ArtistId FROM Artist WHERE Name LIKE 'S%');
Hooray, that works! I'm not sure it's the best way to write the query... I might have written:
SELECT * FROM album a, artist r WHERE a.artistid=r.artistid AND r.name LIKE 'S%'
...I'd have to check to see if one performs better than the other, and consider which syntax I find clearer, but that's a separate issue, it's just nice to see a working, reasonable query generated because that's the point, after all.
But I found it interesting that such a minor error would cause it to not work, that's my main point.
Interestingly, it seems to have learned: I just tried the same thing, and I got the right query either way. So that's pretty cool.
It's a pretty neat feature and I can see some legitimate value in it. I'm pretty good writing SQL myself... I've managed to write some truly hideously complex queries over the years... but there are definitely instances I can recall where the query didn't seem obvious at the start, and having an AI that can MAYBE produce something that is AT LEAST a starting point is definitely something I can get onboard with.9 -
Craziest bug, not so much in the sense of what it was (although it was itself wacky too), but in what I went through to fix it.
The year was 1986. I was finishing up coding on a C64 demo that I had promised would be out on a specific weekend. I had invented a new demo effect for it, which was pretty much the thing we all tried to do back then because it would guarantee a modicum of "fame", and we were all hyper-ego driven back then :) So, I knew I wanted to have it perfect when people saw it, to maximize impressiveness!
The problem was that I had this ONE little pixel in the corner of the screen that would cycle through colors as the effect proceeded. A pixel totally apart from the effect itself. A pixel that should have been totally inactive the entire time as part of a black background.
A pixel that REALLY pissed me off because it ruined the utter perfection otherwise on display, and I just couldn't have that!
Now, back then, all demos were coded in straight Assembly. If you've ever done anything of even mild complexity in Assembly, then you know how much of a PITA it can be to find bugs sometimes.
This one was no exception.
This happened on a Friday, and like I said, I promised it for the weekend. Thus began my 53 hours of hell, which to this day is still the single longest stretch of time straight that I've stayed awake.
Yes, I spent literally over 2+ days, sitting in front of my computer, really only ever taking bio breaks and getting snacks (pretty sure I didn't even shower)... all to get one damn pixel to obey me. I would conquer that f'ing pixel even if it killed me in the process!
And, eventually, I did fix it. The problem?
An 'i' instead of an 'l'. I shit you not!
After all these years I really don't remember the details, except for the big one that sticks in my mind, that I had an 'i' character in some line of code where an 'l' should have been. I just kept missing it, over and over and over again. I mean, I kinda understand after many hours, your brain turns to mush. and you make more mistakes, so I get missing it after a while... but missing it early on when I was still fresh just blows my mind.
As I recall, I finally uploaded the demo to the distro sight at around 11:30pm, so at least I made my deadline before practically dropping dead in bed (and then having to get up for school the next morning- D'oh!). And it WAS a pretty impressive demo... though I never did get the fame I expected from it (most likely because it didn't get distributed far and wide enough).
And that's the story of what I'd say was my craziest bug ever, the one that probably came closest to killing me :)5 -
I mean, ONE of these days, the Prod pipeline has GOT to work... doesn't it?? Just basic odds say EVENTUALLY it will, doesn't it??
Of course, I'm sure I could have had it working long ago if not for the fact that we have to use common scripts developed by another team that we can't alter, and just guess where the problem is.
You know, standardization and DRY are good principles generally, but if you just apply them without thinking and without at least SOME flexibility, you only make matters worse.2 -
Is JAXB explicitly DESIGNED to be the most brittle and frustrating API in the entire Java ecosystem? Sure fucking seems like it. Feels like every damn JDK upgrade or dependency upgrade requires screwing around with JAXB-related code, and not always in trivial ways, or a trek back into dependency management hell for a while. ARGH!!
-
God save me from bullets, bombs... and motherfucking Maven dependency management hell!!
On second thought, bring on the bullets and bombs, they're less stressful than this Maven bullshit!!3 -
CSP: the thing that finally makes me jump out a window.
It's not that it's bad per se... well, I mean, it is, in several ways... but I can cope with it.
But when you're being pushed to apply a very strict policy to an app that is (a) itself 10 years old (predating CSP and most modern practices entirely you'll note), (b) has code that originally came from a 15-year old app at its core, and most critically (c) uses a third-party library that is at the very heart of it all and that simply can't ever play nice with CSP due to its fundamental nature... well... that's a recipe for an awful lot of head-meet-wall.
And you're not going to do a ground-up rewrite of an app that cost literally millions to develop (and is constantly being grown to this day) and which is now mission-critical and very highly regarded by the most important clients.
FML. -
So, I've had a personal project going for a couple of years now. It's one of those "I think this could be the billion-dollar idea" things. But I suffer from the typical "it's not PERFECT, so let's start again!" mentality, and the "hmm, I'm not sure I like that technology choice, so let's start again!" mentality.
Or, at least, I DID until 3-4 months ago.
I made the decision that I was going to charge ahead with it even if I started having second thoughts along the way. But, at the same time, I made the decision that I was going to rely on as little external technology as possible. Simplicity was going to be the key guiding light and if I couldn't truly justify bringing a given technology into the mix, it'd stay out.
That means that when I built the front end, I would go with plain HTML/CSS/JS... you know, just like I did 20+ years ago... and when I built the back end, I'd minimize the libraries I used as much as possible (though I allowed myself a bit more flexibility on the back end because that seems to be where there's less issues generally). Similarly, any choice I made I wanted to have little to no additional tooling required.
So, given this is a webapp with a Node back-end, I had some decisions to make.
On the back end, I decided to go with Express. Previously, I had written all the server code myself from "first principles", so I effectively built my own version of Express in other words. And you know what? It worked fine! It wasn't particularly hard, the code wasn't especially bad, and it worked. So, I considered re-using that code from the previous iteration, but I ultimately decided that Express brings enough value - more specifically all the middleware available for it - to justify going with it. I also stuck with NeDB for my data storage needs since that was aces all along (though I did switch to nedb-promises instead of writing my own async/await wrapper around it as I had previously done).
What I DIDN'T do though is go with TypeScript. In previous versions, I had. And, hey, it worked fine. TS of course brings some value, but having to have a compile step in it goes against my "as little additional tooling as possible" mantra, and the value it brings I find to be dubious when there's just one developer. As it stands, my "tooling" amounts to a few very simple JS scripts run with NPM. It's very simple, and that was my big goal: simplicity.
On the front end, I of course had to choose a framework first. React is fine, Angular is horrid, Vue, Svelte, others are okay. But I didn't want to bother with any of that because I dislike the level of abstraction they bring. But I also didn't want to be building my own widget library. I've done that before and it takes a lot of time and effort to do it well. So, after looking at many different options, I settled on Webix. I'm a fan of that library because it has a JS-centric approach. There's no JSX-like intermediate format, no build step involved, it's just straight, simple JS, and it's powerful and looks pretty good. Perfect for my needs. For one specific capability I did allow myself to bring in AnimeJS and ThreeJS. That's it though, no other dependencies (well, at first, I was using Axios because it was comfortable, but I've since migrated to plain old fetch). And no Webpack, no bundling at all, in fact. I dynamically load resources, which effectively is code-splitting, and I have some NPM scripts to do minification for a production build, but otherwise the code that runs in the browser is what I actually wrote, unlike using a framework.
So, what's the point of this whole rant?
The point is that I've made more progress in these last few months than I did the previous several years, and the experience has been SO much better!
All the tools and dependencies we tend to use these days, by and large, I think get in the way. Oh, to be sure, they have their own benefits, I'm not denying that... but I'm not at all convinced those benefits outweighs the time lost configuring this tool or that, fixing breakages caused by dependency updates, dealing with obtuse errors spit out by code I didn't write, going from the code in the browser to the actual source code to get anywhere when debugging, parsing crappy documentation, and just generally having the project be so much more complex and difficult to reason about. It's cognitive overload.
I've been doing this professionaly for a LONG time, I've seen so many fads come and go. The one thing I think we've lost along the way is the idea that simplicity leads to the best outcomes, and simplicity doesn't automatically mean you write less code, doesn't mean you cede responsibility for various things to third parties. Those things aren't automatically bad, but they CAN be, and I think more than we realize. We get wrapped up in "what everyone else is doing", we don't stop to question the "best practices", we just blindly follow.
I'm done with that, and my project is better for it! -
You see that, over there?
That massive, 10-ton bag of dicks sitting there in the corner?
Secure Code Warrior can eat that ENTIRE FUCKING THING!
SO many flaws in their tests... SO much HIGHLY questionable content... utterly RIDICULOUS bullshit code with no comments and no context... asking me fucking Angular questions when I'm doing an Express test... two answers that are IDENTICAL... and a busted-ass site on top of it all.
I hate this motherfucking bullshit SO much, and at this moment I hate my employer even more for forcing me to deal with it.
But, hey, I hope you enjoy no work getting done today since you seem to prefer I do this instead, so I guess I'll just scare my dog some more as I yell about this bullshit.
Fuck you Secure Code Warrior, fuck you very, VERY much.7 -
SCW (Secure Code Warrior) IS TOTAL, COMPLETE AND UTTER SHIT!
I keep finding outright and definite mistakes... for example: two solutions that are 100% identical - I copied and diff'd them to be sure I wasn't stoned... the code they show has ZERO comments, so you have ZERO context for anything (and it's written like shit on top of it - I'd fire a motherfucker if they turned in ridiculous crap like this regularly)... I've found answers where one is a subset of another so the "superset" answer should be considered correct as well, so you effectively have two right answers (in other words: this is one of those "you better pick the EXACT answer we WANT you to pick, even if another is TECHNICALLY correct too, doesn't matter, you gotta divine which WE say is right" situations)... there's not enough information given in some cases to even realistically attack the problem... and so on.
It's just fucking garbage, but now I HAVE to get a passing score on the fucking thing to meet a work requirement and you think anyone is going to give two shits if I point out the problems? Of COURSE not! Just need to check the box, so now I have to waste hours of my day fighting through this horseshit just to say I did it.
Is there any value in it? FUCK NO! It's actually NEGATIVE value since now I'm not doing what I'm actually paid to do.
And the worst part is I absolutely, 100% know all this shit! It's not like it's a problem because I fundamentally don't know the concepts. But because your platform is a joke it's making it a nightmare for me.
FUCK THIS SHIT! Friday is over early because of this, I'll bash my head against the wall again on Monday.2 -
Just because YOU can't seem to get a grasp on the language doesn't mean the language inherently sucks and that literally the entire rest of the world is crazy for using it. It won because it's Good Enough(tm) and that's all it ever needed to be (and many of the things you see as flaws are actually big parts of what makes it exactly that).
Like, I'm not gonna go out of my way to defend a damn programming language 'cause that just feels stupid... but your constant bitching about it is tiring as hell, ESPECIALLY when the complaints you constantly state clearly indicate that you just don't have a solid grasp of it.
So, the answer isn't for everyone else to "wake up to how shitty it is", it's for YOU to either expend the calories to understand it, or simply shut the fuck up with your constant whining about it. I'm good either way, but pick one already!10 -
Central team: No, your team must be doing something wrong. Our pipeline is super-configurable and works for any situation! You just have to read the docs!
Me: Where are the docs?
Central team: Uhh, well, umm... we'll hook you up with a CI/CD coach!
Me: Okay, cool. In the mean time, can you point me at the repo where all the base scripts are?
Central team: Sure, it's here.
Me, some weeks later: Yeah, uhh, the coach can't seem to figure out how to make our Prod deployment work either.
Central team: That's impossible! It's so easy and completely configurable!
Me: Well, okay... but, here's the thing: your pipeline IS pretty "configurable", in the sense that you look for A LOT of variables...
Central team: See! We told you!
Me: ...none of which are actually documented, so they're just about useless to me...
Central team: But, but the coach...
Me: ...couldn't make heads or taisl of it either despite him literally being ON YOUR TEAM...
Central team: Then your project must just be architected wrong!
Me: Well, we're not perfect, so could be...
Central team: Right!
Me: ...but I think it's far more likely that the scripts... you know, the ACTUAL Python scripts the pipeline executes... while it took me DAYS to get through all your levels of abstraction and indirection and, well, BULLSHIT... it turns out they are incredibly NOT flexible. They do one thing, all the time, basically disregarding any flexibility in the pipeline. So, yeah, I'm thinking this is probably one of this "it's you, not me" deals.
Central team: Waaaaahhhhhhhh!!!!!!2 -
!dev
During these past few COVID year, I've (so far) managed to not actually get the 'rona (not as far as I know anyway).
You know what this whole mess HAS gotten me though?
Just over 200 movies in a queue to watch.
I'm gonna need another pandemic and lockdown just to get through all that shit! Which of course won't work because it just keeps growing now, never shrinks.
...which makes me think I've discovered a new virus: streaming movies... they sure as hell seem to replicate like a virus, don't they?3 -
Ask me about that one time a motherfucking LOG STATEMENT caused the code to not work properly, breaking both the Test and QA environments, but failed in a way that made it maddening to figure out (in conjunction with the cloud-based hosting environment and the abomination that is centralized logging, which just makes EVERYTHING more difficult).
Actually, DON'T ask me about it, because it was today, it wasted most of my day, and I'm still salty as fuck about it.6 -
Any night, 1:30am, bedtime: "Yes! I can't WAIT for tomorrow to begin! I'm gonna make SO much progress on that personal project that I just KNOW is gonna change the world and make me a billionaire! My time is now!"
Next day, 9am, first call of the day: "Ugh, waking up SUUUUUCKS! But, fine, just gotta get through the workday, then it's beast mode time!"
5pm: "Ugh, that day SUCKED... meeting after meeting, constant interruptions for the few minutes I got to hack code, SO many emails, and hey, good day, only five new things pushed down from corporate to bang my head against! Feelings pretty mentally exhausted, but it's all good, I fortunately love this programming stuff, so first dinner, then a little exercise, spend some time with the family, and then it's time to COOOODE!"
10pm: "Ok, house is FINALLY quiet (fucking dog), just a little noise from my daughter staying up way too late again... kinda spent, but this project still excites me, and I may not get as much done as I was hoping, but fine, I can still make some tangible progress and that's what matters. Maybe just one last quick check of email, Reddit, make sure there's no new Hot Ones or Honest Trailers I gotta watch, update IDEA plugins and see what's new, then it's work time! Nothing can stop me now!"
Any night, 1:30am, bedtime: "SHIT! I GOT FUCK ALL DONE AGAIN! GO DAAAAAAAMN IIIIIT!!!!"3 -
Maybe I'm just being (overly) stupid with my vacation-brain in full effect, but when I console.log() an object in Edge, most of the properties are showing up as (...), which I then have to click to reveal the actual value. I don't recall this being the case before (I'm like 99.999999% sure it never was like this before)... is anyone aware of a recent change that causes this and maybe a setting or something that makes it show the value automatically? Thanks!4
-
Best:
Seeing ALL the members of my team finally coming into their own. One person tackled our entire not-at-all-simple CI/CD setup from scratch knowing nothing about any of it and, while not without bumps in the road, did an excellent job overall (and then did the same for some other projects since he found himself being the SME). Two of my more junior people took on some difficult tasks that required them to design and build some tricky features from the ground-up, rather than me giving them a ton of guidance, design and even a start on the basic code early on (I just gave them some general descriptions of what I was looking for and then let them run with it). Again, not without some hiccups, but they ultimately delivered and learned a lot in the process and, I think, gained a new sense of self-confidence, which to me is the real win. And my other person handled some tricky high-level stuff that got him deep in the weeds of all the corporate procedures I'd normally shield them all from and did very well with it (and like the other person, wound up being an SME and doing it for some other projects after that). It took a while to get here, but I finally feel like I don't need to do all the really difficult stuff myself, I can count on them now, and they, I think, no longer feel like they're in over their heads if I throw something difficult at them.
Worst:
A few critical bugs slipped into production this year, with a few requiring some after-hours heroics to deal with (and, unfortunately, due to the timing, it all fell on me). Of course, that just tells us that next year we really need to focus on more robust automated testing (though, in reality, at least one of the issues almost certainly would not - COULD NOT - have been caught before-hand anyway, and that's probably true for more than just one of them). We had avoided major issues the previous three years we've been live, so this was unusual. Then again, it's in a way a symptom of success because with more users and more usage, both of which exploded this year, typically does come more issues discovered, so I guess it tempers the bad just a little bit.2 -
Aaahhh, it's the little things: actually getting to spend ~90% of my time for 3-4 days straight writing code for a change! #LeadLife
-
You guys! You guys! You'll never believe what happened today!
I used out CI pipeline half a dozen times today and it worked every time!
Seems impossible, I know, but it's true!1 -
It's interesting to me... a lot of the rants I see here are all like "just started this new job and this place is SO fucked". Talking about how there's no process, no source control, terrible code, etc.
I say it's interesting because most of the time the thought that goes through my head is "that sounds fun as hell!"
Like, spend as many years at a place as I have, a place where there's SO much process and SO many controls and all of that... you know, the whole "big enterprise" mindset... and the idea of being able to come in to a place that's kind of wild west and actually work to FIX the place, to have freedom to change direction and innovate and not be locked in to all sorts of rules, is kind of exciting.
(you know, assuming it's a place and a position where that's possible at all... but at this point in my career, I'd only take a position where I had that kind of authority from the start, and as long as I have the authority then I'm happy to take on the responsibility and I'm up for the challenge)8 -
Any JavaScript developers out there willing to help me out with something?
I have an interview question that I like to ask candidates that no one ever seems to get right. But, to me, it seems pretty basic, so I expect MOST JavaScript developers at almost any level of expertise to get it, and I like it generally because it demonstrates some core knowledge of JavaScript concepts and syntax.
But I want to verify that my feelings about it are reasonable, because give how few ever seem to get it right (and I'm talking across literally hundreds of interviews, MAYBE 2 people have ever gotten it right), I'm starting to wonder if I'm right or not.
Look at this code, and then answer the question after. Please do so off the top of your head and without testing anything since that's normally the experience a candidate would have. I'll give the answer after some time for anyone who gets it wrong but is curious.
But this isn't about YOU getting it right or not, and it's not about whether it's the best way to do something in JavaScript or anything like that, it's just about whether it's a reasonable question and whether my expectation that MOST JavaScript developers should get it right is fair.
const O = {
sayHello : function() { alert("Hello"); }
};
const S = "sayHello";
Question: using ONLY the variables O and S (and you MUST use both), write code that executes the sayHello function.
Thanks!34 -
Not actually dev-related, but the news of Mira Furlan's passing hit me like a ton of bricks. Two tons even. Babylon 5 is to this day my favorite creative anything. It's just perfect to me, and a huge part of why is her work as Delenn. Everything I've ever heard about her indicates she was as awesome in real life as she was on B5 and 65 is way too young for anyone to die, period. There is, of course, sadly a lot of death around us these days, and all of it stings, but some of them sting a bit more. But, I think it's a testament to her work how devastated I feel about losing someone I never actually knew. R.I.P. Mira Furlan... to absent friends, in memory still bright :(2
-
Watch, as I deftly make something not really related to coding BE related to coding...
I finally found something more frustrating to get working properly than WebSphere:
A 3D printer.
I'm probabaly 50/50 at this point with succesful prints, and the successes are just okay quality.
It's my first 3D printer so I'm learning a lot, which is the up-side. But damn, very frustrating at the same time.
Oh yeah, and of course: fuck WebSphere. SSSOOO glad I don't have to deal with that anymore! -
Step 1: Run to the store to buy a USB card reader because all of a sudden you have a need to use a 16Mb CF card that was tossed in a junk drawer for 20 years (hoping it still works, of course), but that was the easy part...
Step 2: Realize that the apps - your own - you want to run on your new (old) Casio E-125 PocketPC (to re-live "glory" days) are compiled in ARM format, not MIPS, which is the CPU this device uses, and the installer packages you have FOR YOUR OWN APPS don't include MIPS, only ARM (WHY DID I DO THAT?!), so, the saga REALLY begins...
Step 3: Get a 20-year old OS to install in a Hyper-V VM... find out that basic things like networking don't work by default because the OS is so damn old, so spend hours solving that and other issues to get it to basically run well enough to...
Step 4: Get that OS updated so that it's at least kind/sorta/maybe (but between you and me, not really!) safe online, all without a browser that will work on ANY modern site (oh, and good luck finding a version of Firefox that runs on it - that all took a few hours)...
Step 5: Okay, OS is ready to go, now get 20-year old dev tools that you haven't even seen in that many years working. Oh, do this with a missing CD key and ISO's that weren't archived in a format that's usable today, plus a bunch of missing dependencies because the OS is, again, SO old (a few MORE hours)...
Step 6: Get 20-year old code written in a language you haven't used in probably almost that long to compile, dealing with pathing issues, missing libs, and several other issues, all the while trying to dust off long-dormant knowledge somewhere in the deep, dark recesses of your brain... surprisingly, it all came back to me, more or less, in under an hour, which lead to...
Step 7: FINALLY get it all to work, FINALLY get the code to compile, FINALLY get it transferred to the device (which has no network capabilities, by the way, which is where the card reader and CF card came into play) and re-live the glory of your old, crappy PocketPC apps and games running on the real thing! WOO-HOO!
Step 8: Realize it's 3:30am by the time that's all done and be VERY thankful that you're on vacation this week or work tomorrow would SSUUCCKK!!!!
Step 9. Get called into work the next day for a production issue despite being tired from the night before and an afternoon of errands, lose basically a whole day of vacation (7 hours spent on it) and not actually resolve it by after midnight when you finally say that's enough :(
Talk about your highs and your lows.6 -
I got a REALLY nice compliment from my dev team today. But first, the setup...
Tuesday night, I pushed some changes before I left that totally borked the build today when my team pulled changes (this is an off-shore team, so we more or less work opposite hours). Fortunately, my team dealt with it easy enough since (a) it was pretty obvious what happened, and (b) my commit message had enough information to help them know for sure, and they just reverted one file and were good to go for the day (they didn't fix the problem, left that for me to do, which is proper).
It was an absolutely stupid, careless mistake: I somehow copied the contents of a JS file into a JSP and pushed it. Just a simple case of too many tabs open at once and too many interruptions while I'm trying to code (which is typical most days, unfortunately, but this day it had an impact other than just slowing me down).
But, those are the reasons it happened, they aren't excuses. It was carelessness, plain and simple.
So, once I fixed it, I sent a note to the team explaining it. It basically said "Look, that was a dumb, careless mistake on my part, my bad, sorry for the inconvenience, it's fixed now."
I had a message waiting for me in my inbox this morning that said how I'm an inspiration because despite all my knowledge and experience, despite being a long-time lead, they (a) appreciate the fact that I'm human and still make mistakes, and (b) I stand up and take responsibility when it happens and then do what's necessary to reverse the mistake.
That made my day :)
To me, it's just the right way to be (I credit my parents 100%), never occurs to me to do otherwise, but the truth is not everyone can say the same. Some people are insecure and play the CYA game right away, every time. Some people act like they never make mistakes in the first place.
I don't care if you're an experienced dev or a junior, always take responsibility for your actions, especially your mistakes. Don't try and bullshit your way out of them. Sure, it's fine to explain why it happened if there were factors beyond your control, but at the end of the day, own up to them, apologize where necessary, and then put in the effort to make it right. Most people have no problem with people who make mistakes every so often - everyone does, whether everyone admits to it or not - but those who try and shirk responsibility don't last long in this or any endeavor (you know, putting aside the professional bullshitters who build their careers around it... that's not most people, thankfully).10 -
A week of vacation has begun, and every time it feels like I'm joining the Nights' Watch:
"Night gathers, and now my watch begins.... the watch to see how long it is before I actually WANT to go back to work. Tuesday? Wednesday? How long IS my Netflix queue anyway? Ugh, can't go anywhere, COVID done fucked that all up, so me and the couch are on a first-name basis again. Shit, should I check email, like, just quick, so I don't have thousands to go through next Monday? Oh, maybe I should spend some time prototyping that new screen... no, gotta keep from thinking about work! Oh, there's a big list of home repairs I need to do, now I have time... no, fuck that, that shit sucks. Hmm, maybe I should start that game project I was excited about a week ago? Nah, I'm not really excited by it now, never mind. I guess I could play some Halo again... no, that's boring. I wonder if my team managed to do the deployment today, and how those tickets I Ieft them are coming... ah shit, I want to go back to work ALREADY!"
That's how George R.R. Martin wrote it, right?? -
Look, if I send you an email, don't just immediately ping me via IM to answer. I sent you an email because (a) I was too busy to chat in the first place, and (b) it wasn't a super-critical question requiring an immediate interaction. I was, in fact, trying to do YOU a favor by using a medium that almost by design doesn't dictate an instant reply. You basically defeated the entire purpose of me CHOOSING to send an email in the first place.
Yeah, I know, I should just be happy that you are a helpful person who respects me and so wanted to get to me ASAP rather than one of the dinguses that never answer anything... but I'm a dick too, so I'm not.
Honor the "Importance Code of the Communication Mechanisms", damn it!7 -
Medieval torture devices got nothin' on Angular.
The Rack? Ha, good times!
Brazen Bull? Happily!
Iron Maiden? Yes, please!
Pear of Anguish? Funny name, I'll take it!
But Angular?!
PLEASE GOD, NO! HAVE MERCY ON MY SOUL!4 -
Talking to my son today about one of his CS classes, not sure which.
He says: "I missed the lecture yesterday, but I'm not going to bother re-watching it."
Me: "Why? You really should. You're paying for these classes AND you really need to actually learn this stuff."
Son: "Well, because I got 100% on my last assignment without going to class. I just Google'd everything and figured it out on my own from what I found."
My wife out of the blue: "DAMN IT, BUT THAT'S NOT HOW IT WORKS IN THE REAL WORK WORLD!"
Oh, you poor, uninformed summer child. I love her, but she just doesn't know that my son has already learned the key lesson he needed to learn from his schooling in order to get a job and make good money in this field! #ProudTechieDadMoments12