Details
-
AboutI'm an autodidactic programmer, never afraid of a deep dive. I work in infosec.
-
SkillsC#, Java, C, Python
-
Github
Joined devRant on 8/30/2017
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
-
The amount of willful ignorance about how “master/slave” might be offensive to some people is disheartening. Not surprising, but disheartening.
I thought it was suspect back in the 90s when I was configuring IDE hard drives.
There are loads of terms that express the exact same relational concept, that don’t have their roots in exploitative human relationships.
If you disagree, kindly fuck off. Your shitty attitude is why tech is predominantly white and male.29 -
I just love going through the code review gauntlet doing maintenance work, don’t you?
(“boyscout rule” = “leave it better than you found it”)7 -
Don’t drink and code. Definitely don’t drink and commit. Absolutely don’t drink and push to master at 4:55 on a Friday.3
-
Normal people spend their holiday weekend with friends and family. I spent it bisecting RetroArch to figure out exactly when a Wii U crash bug started happening.
(I exaggerate. There was plenty of friends and family time)2 -
This is what happens when you make style more important than function.
Pop quiz: when you lift the handle, what temperature water do you expect to come out? (This isn’t a trick question; assume you have an awesome water heater with instant warm-up time)
“Hot,” you might say, because the “H” is pointed towards you and aligned with the faucet.
“Cold,” you might say, because the handle is turned in the direction of the “C”.
There wouldn’t be any ambiguity if the H/C markings were on an immobile part of the fixture so that the relative position of the handle made the answer obvious.
(If you instinctively answered “cold” then congrats this is the perfect faucet for you.)14 -
April fools day prank idea:
1. Replace all semicolons with Greek question marks
2. Add a Gradle task that automatically fixes the semicolons, but only when run on the build servers
3. Watch as people get confused because the code builds in the server but not locally3 -
Google has a really strange idea of what a rate limit is.
I’m trying to feed a few hundred URLs into the link shortener service. Docs say “1m a day, 1 req per second per user.”
No problem. Put a 1.2s sleep between hits.
Almost to the end... 403 rate limit exceeded.
(╯°□°)╯︵ ┻━┻4 -
This story is really quite amazing.
I got into my current company thanks to keeping a friendship from a quasi-ex-girlfriend. She got me in contact with her husband, who besides being a fellow nerd was also a highly-respected guy inside the company. Which is to say his name carried quite a bit of weight, and got me an interview and ultimately a job.
I got in via Support, but finally got promoted to developer last year, and have been enjoying it quite a bit. -
Run ./configure and gmake directly, it works.
Run a gradle script with exec tasks that runs the same commands, and the binary doesn’t run complaining about a library.
Fuck you AIX.
I haven’t fully root-caused it yet. I’m assuming something is fucking up during configure. -
Fuck AIX, fuck you in your stupid face. I hope you choke on a mouse and die in computer hell.
Bonus points if you get the movie reference without google.1 -
Spending hours troubleshooting with a customer, nothing works, until eventually it comes out that the customer lied in response to one of my first questions.
Congratulations, asshat, you played yourself.
This happened across multiple companies, multiple classes of products, multiple classes of customers. It is how my “rule 1” came to be (see previous rant). -
Today's project was answering the question: "Can I update tables in a Microsoft Word document programmatically?"
(spoiler: YES)
My coworker got the ball rolling by showing that the docx file is just a zip archive with a bunch of XML in it.
The thing I needed to update were a pair of tables. Not knowing anything about Word's XML schema, I investigated things like:
- what tag is the table declared with?
- is the table paginated within the table?
- where is the cell background color specified?
Fortunately this wasn't too cumbersome.
For the data, CSV was the obvious choice. And I quickly confirmed that I could use OpenCSV easily within gradle.
The Word XML segments were far too verbose to put into constants, so I made a series of templates with tokens to use for replacement.
In creating the templates, I had to analyze the word xml to see what changed between cells (thankfully, very little). This then informed the design of the CSV parsing loops to make sure the dynamic stuff got injected properly.
I got my proof of concept working in less than a day. Have some more polishing to do, but I'm pretty happy with the initial results!6 -
I'm not sure which is worse: games that display the "unsaved changes will be lost" warning immediately after you saved, or games that display the warning and there's no obvious way to actually save your game.
Bonus points when there really is a manual save process and you lose all your progress because you thought it auto saved.1 -
I am become gradle
destroyer of builds
look upon my works, ye mighty, and despair
Why can't zip/tar tasks work like copy tasks? Whyyyyyyy?
I got it working--abusing tasks.create--but hot damn this should be easier. -
PROTIP: If you go outdoors for recreation and you happen to be hiking in dry country where there is obviously a lot of potential tinder around you, don't be a dumbass and light off fireworks.
The lingering smell of burning is not conducive to creating software.
With the AQI north of 170, the building's HVAC can't keep up.1 -
Definitely landing the first real gig.
I've been writing software since I was 12 (full disclosure: early code consisted of C=64 BASIC). I learned C in high school. Contributed to a MUD in my 20's. But I never got a CS degree and didn't really understand how hiring works, so I limped along doing technical support for years. Years turned into decades.
About 2 years ago, I became an embedded support person inside a development team. I got to show off my skills, and the year effectively became a live interview. Last October I finally got the title.
On the positive side, by taking the long way around I missed out on some of the insanity of the software world in the 90s/00s.2 -
THE RULES OF TECHNICAL SUPPORT
Rule #1: The Customer Lies
Rule #2: Rule #1 still applies when the customer is your coworker
Rule #3: Customers following instructions is like characters dying in a movie: if it didn't happen on-screen, it didn't happen.1