AboutJoined for the stickers. Stayed for the fun.
Joined devRant on 9/24/2018
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
I've been thinking about how to answer this for a while, but I'll approach it from a different angle. The time I (nearly) lost faith in my dev future wasn't because of a technology, bad programming language or an external influence. It was *me*.
The first job I had after the PhD, I was (in the first couple of weeks) tasked with updating various packages on a live Redhat server. "No problem", I thought, "I've done this before many a time on Debian, easy as pie!"
Long story short, I ended up practically bricking the server because I mistyped and uninstalled something I shouldn't have, didn't understand a piece of configuration, then tried to bodge it back and cocked things up further. Couldn't even log in via SSH, the hosting company had to be called, a serial connection set up, etc.
To say I was mortified, embarrassed and had my pride dented would be a massive understatement. I seriously thought I'd get fired on the spot, and that I should perhaps change careers to something where I couldn't cock things up as much.
...but you can't think like that, otherwise the world leaves you behind. So I picked myself up, apologised profusely, took some relevant training, double checked everything I was doing on that server in future and got back to work. After a few months of "proving myself", it was then seen as nothing more than a rather amusing story, and I became a senior dev there a couple of years later.1
Take this how you will:
"The more experienced a respondent is, the more likely they are to say blockchain technology is an irresponsible use of resources."
Old farts refusing to budge from their ways, or old farts knowing better?
Damn you devpost. That Alexa skill I submitted definitely *does* use APL, and *does* qualify for the participation prize.
(The fact I can now churn out Alexa skills eligible for most of these prizes in a few minutes is besides the point, gimme gimme please.)
I'd never do anything "risky" in a prod environment if I considered it so at the time, but in retrospect there's *lots* of things considered risky now (both from a security and good practice viewpoint) that were standard practice not long ago:
- Not using any form of version control
- No tests (including no unit tests)
- Not considering XSS vulnerabilities
- Completely ignoring CSRF vulnerabilities
- Storing passwords as unsalted MD5 hashes (heck that was considered very *secure* in the days of plaintext password storage.)
...etc. I'm guilty of all of those previously. I daresay in the future there will be yet more things that may be standard practice now, but become taboos we look back on with similar disdain.2
A certain, reasonably sized company had a large in house payment system to handle all their client purchases that was developed many, many years ago. All the devs that developed it had left, and as it "just worked" they hadn't seen fit to get anyone to update or maintain it since.
That was all fine until it suddenly (and completely) stopped working one sunny afternoon.
After paying a small fortune for one of the original devs to come back and look at it, turns out the payment API it was based on had been retired. Warnings of deprecation had been sent out 18 months prior, but they had just been ignored, as the secretary receiving them after the devs left had no idea what it meant.6
It's something that comes with practice, but in general it's much better to overestimate than underestimate.
- Always take your time. Don't be rushed into plucking a number out of thin air.
- Break the task down into really small, atomic chunks.
- Each of those chunks will take at least twice as long as you think it does - nothing goes to plan 100% the first time!
- Make sure you add contingency at the end.
Nested CSS declarations without using SASS or similar.
Spending caps on AWS so I can mess around without worrying about going bankrupt.
Serverless will become increasingly prevalent.
I make no comment on whether I think the above are *good* evolutions, however.
To become reasonably proficient in AWS.
It's the one relevant area I feel like I'm being left behind in at the moment. Every other job listing I've seen has it as a requirement or a nice to have, so it'd be a good box to tick.
Ah, the awkward moment when you're told to join a conference call to "just listen in the background so you know what's going on"
...and then no-one else from your company turns up, so you're stuck trying to appease a client while having absolutely no idea what's going on...6
I inherited some Java code from a guy that thought you could only return strings from a method.
So how did he ever pass anything other than a string, I hear you ask? He had a (hand crafted, using no libraries, and not escaping anything properly) toXml() and fromXml() method on each object.
Dah. Have to integrate with a legacy, crappy, SOAP service with malformed WSDL and bugger all documentation.
SOAP should just be damn well illegal these days.3
Dear web developers: please use the "Accept-Language" header to determine what language to use, not some weird, whacky geolocation script. That header exists for a reason.
Yes Google - that includes you.16
At a networking event. Tired. Not a people person, especially when tired.
Found a secluded empty booth, pretending to do some urgent work. Hoping no-one notices I'm not socialising.
How long can I keep this up is the question! :D7
Damn. Forgot Europe uses different plugs to the UK, and on a work trip in France. 3 days without charging the laptop...25
If it's an open source project and it (shock horror) actually gets a decent userbase, expect it to suck up *way* more time than you originally intended.
What is it with the rising trend of password fields allowing you to see your password, and (worse than that) often having it as unmasked by default?!
Who woke up one day and said "Damn, you know what would be a great idea? Unmasking the password field, so everyone can see it! Why didn't we think of that before?!"
!rant. Just trying to make people feel a bit better.
Ever thought "Ah crap, I have no idea what's going on with this code?" - then immediately second guessed your abilities?
You're not alone.
It's not just tiny projects in there either. Gnome is on the second page :-)1
Call me boring but...
Working in a secure job with a great work/life balance, little or no travel, great people, really interesting challenges, earning a tidy salary, contributing to open source, all the while creating something worthwhile and interesting.
I have a few of those already, so can't complain.10
Java 11 is amazing they said, Jigsaw will make things much easier they said, JavaFX is now just a simple Maven dependency they said...
Previous command to launch app in Java 8:
java -jar T10ReleaseFinal.jar
New command to launch app (not including the custom jlink command to produce the custom bundled JRE) in Java 11:
java --module-path "lib/javafx-fxml-11.0.1-win.jar;lib/javafx-web-11.0.1-win.jar;lib/javafx-controls-11.0.1-win.jar;lib/javafx-controls-11.0.1.jar;lib/javafx-media-11.0.1-win.jar;lib/javafx-media-11.0.1.jar;lib/javafx-swing-11.0.1-win.jar;lib/javafx-graphics-11.0.1-win.jar;lib/javafx-graphics-11.0.1.jar;lib/javafx-base-11.0.1-win.jar;lib/javafx-base-11.0.1.jar" -Dfile.encoding=UTF-8 -Dprism.dirtyopts=false -Dglass.accessible.force=false --add-modules javafx.base --add-modules javafx.controls --add-modules javafx.fxml --add-modules javafx.graphics --add-modules javafx.media --add-modules javafx.swing --add-exports javafx.graphics/com.sun.javafx.sg.prism=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.util=ALL-UNNAMED --add-exports javafx.base/com.sun.javafx.logging=ALL-UNNAMED --add-exports javafx.graphics/com.sun.prism=ALL-UNNAMED --add-exports javafx.graphics/com.sun.glass.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.geom.transform=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED --add-exports javafx.graphics/com.sun.glass.utils=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.font=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED --add-exports javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.scene.input=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED --add-exports javafx.graphics/com.sun.prism.paint=ALL-UNNAMED --add-exports javafx.graphics/com.sun.scenario.effect=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.text=ALL-UNNAMED --add-exports javafx.media/com.sun.media.jfxmedia.events=ALL-UNNAMED -jar T10ReleaseFinal.jar5
Another real-world argument for why I always say git is worth learning properly.
Had to track a really weird bug down today. Had no idea where it came from, how long it'd been in the code and hadn't the foggiest what was causing it. Realistically it could have been introduced any time in the last year or two, and that's tens of thousands of commits in this repo.
Git to the rescue. Knocked up a quick script to test the case in question, fed it into "git bisect run", and 30 seconds later git found the exact (small) commit that caused the issue.
It's a brilliant part of git, yet it seems like almost no-one I know uses it. Some use "git bisect", but using "git bisect run" and passing a script to it seems to be alien to most - yet it's probably my most used tool when it comes to tracking down bugs like these.8
If you're finding your paid work boring & mediocre, then utilise the stability of your current job to be fussy over choosing your next one.
Shoot high, do research, apply only for places you think you'd genuinely enjoy working, and demand a good offer with any reasonable perks you choose.
You might take a few months to find somewhere, but you'll eventually land yourself somewhere where you really want to be.
I think I've learnt something worthwhile from nearly every project I've been involved with. If I had to pick one however:
Started an open source project designed for projecting multimedia content during church services as procrastination from final year undergrad revision.
Fast forward nearly a decade, and I've learnt tremendous amounts as a result of starting it - dealing with everything from GStreamer on a native C layer, right through to WebRTC stuff (STUN, TURN, ICE, etc.) at the other end. What started as some odd attempts to show text and images on a screen in a user friendly fashion has grown tremendously, and is now used all over the world.1
Almond: Look at these stats - our signup process sucks! We really need to make it better.
Boss: Yeah, maybe at some point. It doesn't affect live running though. Leave it for now.
<1 month later...>
Almond: These stats are getting worse. I really think we should redesign this to do x, y and z and avoid a, b and c.
Boss: Yeah, we probably should do at some point, but there's no rush. You can work on it if you really want to, but only if there's nothing else going on.
<2 months later...>
Boss: I'VE JUST SPOKEN TO TWO POTENTIAL CLIENTS, BUT OUR SIGNUP PROCESS SUCKS SO THEY'RE GOING ELSEWHERE! WE NEED THIS FIXED NOW!! WHERE ARE YOU ON THIS? CAN WE GET IT DONE AND DEPLOYED BY FRIDAY?!?!5
When replying to posts, it'd be useful if we could reply in a textbox underneath the rant or comment rather than a modal window (at least on a desktop browser.)
Sometimes I want to refer back or double check something as I'm replying to it, and the current modal dialog makes it a tad annoying to do that at present.2
Perhaps more of a wishlist than what I think will actually happen, but:
- Everyone realises that blockchain is nothing more than a tiny niche, and therefore everyone but a tiny niche shuts up about it.
- Starting a new JS framework every 2 seconds becomes a crime. Existing JS frameworks have a big war, until only one is left standing.
- Developing for "FaaS" (serverless, if I must use that name) type computing becomes a big thing.
- Relational database engines get to the point where special handling of "big data" isn't required anymore. Joins across billions of rows doesn't present an issue.
- Everyone wakes up one day and realises that Wordpress is a steaming pile of insecure cow dung. It's never used again, and burns in a fire.12
Searched for common typos in Github readme.md files to make trivial PR's to get a free t-shirt, just so I could put off going clothes shopping for a bit longer.10
Damn, there's so many different Hacktoberfest t-shirts available this year. Time to sit down and go "clothes shopping" I guess!