AboutAnalytical Chemist, Backend dev, DBA, QA/tester.
SkillsHaskell, Python, PHP, Go, Rust, JS
Joined devRant on 4/13/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
The GitHub graphql API is pretty neat, mostly because it's a great example of a product where graphql has advantages over REST. As a code reviewer for repos with hundreds of simultaneous PRs, I use it to filter through branches for stuff that needs my attention the most.
NewRelic's NRQL API is also quite nice, as it provides an unusual but very direct interface into the underlying application metrics.
I'm also a big fan of launchlibrary, purely because I love spaceflight, and their API is an extremely rich and actively maintained resource. This makes it a great data source for playing around with plotting & statistics libraries — when I'm learning new languages or tools, I prefer to make something "real" rather than following a tutorial, and I often use launchlibrary as a fun and useful data backend.
Me: "We should remove that popup"
Marketer: "But our A/B testing statistics show a 14% increase in signups to our newsletter, and people who get our newsletter are 4% more likely to buy something"
Me: "0.14x0.04... so slightly more than half a percent improvement. And you also qualitatively measured how many people decide to never visit the page again, just because of that popup? Did you measure the how many internet users with adblockers run into a broken webpage? Did you measure the amount of emails to support from users who can't unsubscribe from the newsletter because there is no unsubscribe link?"
Marketer: "Why would they want to unsubscribe? The newsletter adds value to our users!"
When I'm watching a news story about the tech industry or software development, I always wonder if people in other professions also scream at their TV when their field of expertise is butchered with bad analogies and half-truths by reporters and anchors.12
SLACK HAS A DARK THEME! ALL GLORY TO THE AMAZING SLACK TEAM! SLACK FOR PRESIDENT!
OH GOD THIS THEME MAKES ME WANT TO SCOOP THE EYES OUT OF MY SOCKETS THE FONT LOOKS UGLIER THAN THE PILE OF SKINFAT I SCRAPED OFF MY MOUSE ITS AWFUL I NEED HUGS SEND HELP
Thanks, companies, for trying, I guess.
I love dark themes, but the ones provided are often even worse than the light themes.
They go overboard with extreme black/white contrasts, pick a super weird hue of puke-gray, or certain elements are unreadable.
So, please, instead of wasting the time of your designers on something that's clearly too difficult for them.... how about just making it easy to create community themes for your app?
Especially if it's an electron app, how hard is it to add a config option to import a CSS file, and provide one template as an example?8
Why is the contributing manual of your open source project more thoughtfully cultivated than your code style guide and testing procedure?
Why the fuck do you care about the message in my PR, or even merge vs rebase of commits, when your spaghetti-tomatosource is so richly saturated with critically minced bugmeat?
Why are you standing there, shouting at me about your convoluted rules, in your little brown uniform? Why do I feel like the enemy when I contribute a useful fix, something which makes the code work better?
You know what, fuck all of you, you jilted acetous neckbeards, I will deploy my secret weapon, I will bypass the power you hold over your tiny fascist digital dominions.
If you play it like this, I will summon the nefarious vile side of Open Source. I will usurp your throne. I will stab out your crying eyes, rip out your conceited tongue, impale your lonely heart.
Tremble before me! I wield the almighty, legendary Fork!
The king is dead, long live the king!5
Coworker wrote a nice package and put it on Github, to share with other departments.
I link his package on our company Slack, mentioning a team, with text "What do you think of this one? Is it usable for you guys?"
Next thing I know I have to explain to an executive why I'm "posting pictures of seductive cartoon girls in company chat with disrespectful commentary"
It linked the Github profile picture of the developer in Slack. A fully clothed anime girl, nothing particularly lewd about it.
But I like stabbing back a bit, and confusing the fuck out of people in suits:
"But what about our female devs? What about Joanna, she's in your team? We have to think of diversity! Our investors are really in to diversity, we can't have a bro culture!"
"Sir, with all due respect, we have super diverse teams without even trying. The problem is... they're all millennials. They grew up on weird memes... and are probably ten steps further in embracing diversity compared to the rest of the company."
"Also, Joanna is the one who drew this particular picture. She's charging a €15 commission for profile pictures... Do you want one of your fursona, sir?"
"What is that?"
"Uh... nevermind. Let's... let's not go there"48
I think I'm going to delete my account.
I browsed through my personal feed, and even though I've spend some time curating, only about 1 in a 100 is a real rant. The rest are memes, mildly funny observations, the kind of programmer humor which is only funny to non-programmers, and bland anekdotes.
And when I post something IN ALL CAPS WITH SOME FUCKING CURSEWORDS AND RAGE IN THERE YOU CUNTS ALL TELL ME TO CALM DOWN AND BE MORE POSITIVE?
What kind of a weak, smoothieslurping mindfulness convention has this community become? Do you guys just want to be a mildly funny reddit clone for easily offended hipsters?
This place was my outlet, my venting space, the spot where I didn't feel alone in frustrations.
I find this new content fucking sickening.70
If you ever cooperate on a feature like this as a developer, I will find out where you live, drug you just enough to make your body limp, and mutilate your genitals with my keyboard.
Fucking sexist pricks, assuming I want to play with the blue robots and not the pink dolls. Fuck all of them.
Actually, fuck all your retarded cablecutting VOD services with your awful recommendation engines. Fuck your lack of proper playback features, fuck your bloated mobile apps, fuck your vendor lockins, fuck your region locks.
I'm back to pirating, and I'll just buy a pile of merch, trot proudly through the office with an Adventure Time backpack and a laptop full of Steven Universe stickers.36
My mom never touched a PC or smartphone. Well, most people didn't back then, because it was the early 90s.
But I brought a borrowed SNES to the hospital and taught her to blow on the Zelda cartridge if it didn't work. She died after we finished the game.
After that my dad bought me a commodore 64, the machine that taught me about electronics and programming, and molded me into who I am today.
On the first date with my girlfriend (now 12y together) we just sat talking for hours in her room, playing Zelda on her SNES taking turns, and I told her my mom would have liked her.16
Best day of my life ❤️.
Arrow functions will be added to PHP 7.4:
Arguing over PRs with juniors who try to push unnecessary badly maintained dependencies, which are in fact just turds wrapped in startup hypespeak, because they're too lazy to actually invent some non-square wheels.
Only one sticker.
I go door-to-door every Sunday, "Excuse me dear sir/madam, do you have a moment to talk about our lord and savior Haskell?".
Most people slam the door shut in my face, but every lost family I convert to the way of the monad is worth it.
Even if they don't believe in the same deity, even if they express their love for the divine through something as misguided as Typescript or Swift or whatever, as long as they embrace the truth of strong types and composable code, as long as they at least read the gospel of the functional style once in their lives, have one enlightened moment where they see the glory of morphisms, it's all good.41
Considerations when looking for a tech video course:
5%: Does it have good ratings
5%: Is it priced reasonably
90%: Does the narrator have a smooth soothing voice with an intonation which keeps me dreamy & enchanted, yet with an energized articulation, like a cup of Jasmin tea with clover honey on a dreary Sunday afternoon.
The content may be very good, but if I have to sit through 30 hours of material, you better tickle my ears the right way.11
Pro tip: If you are a junior, or senior but new at the company, don't start your conversations with:
"We're doing X wrong. At my previous company we did / at school I learned /in this book I read / according to this talk I watched, the right way to do X is ..."
"I'm curious why were doing X this way. I'm used to doing it differently."
I love flat-hierarchy teams, and people who think about flaws in procedures and proactively try to improve the tools we use are awesome, but the next kid walking up to me yelling we use git flow "wrong" will be smacked in the face with a keyboard.
If you come to me with curiosity and an open mind, I'll explain, and even return the favor by behaving the same way when I'm baffled by your seemingly retarded implementations.
Maybe we can learn from each other, maybe discover that "how I learned it" is sometimes good, sometimes bad.
But let's start with some social skills, not kicking off into every debate with a stretched leg and a red face.27
"We should use ambiguity-driven development using co-domain model sockets, anfractuous horizontal scaling, and recursive async testing"
"What even is that"
"I found some words I like in the dictionary, and used it as the title for a medium article. I thought that's how we play the game as devs these days"7
Sales employee Bob wants a clickable blue button.
Bob tells product owner Karen about his unstoppable desire for clickable blue buttons.
Karen assigns points for potential and impact (how much does a blue button improve Bob's life, how many people like Bob desire blue buttons)
Karen asks the button team how hard it is to build a button. The button team compares the request to a reference button they've built before, and gives an ease score, with higher score being easier (inverse of scrum points).
These three scores are combined to give a priority score. The global buttonbacklog is sorted by priority.
Once every two weeks (a "sprint") the button team convenes, uses the ease scores to assign scrum points. Difficult tasks are broken up into smaller tasks, because there is a scrum point upper limit. They use the average of the last 5 sprints to calculate each developer's "velocity".
The sprint is filled with tasks, from the top of the global button backlog, up to the team's capacity as determined by velocity. Approximate due dates are assigned, Bob is a happy Bob.
What if boss Peter runs into the office screaming "OUR IMPORTANT CLIENT WANTS A FUCKING PINK BUTTON WHICH MAKES HEARTS APPEAR"?
Devs tell boss to shut the fuck up and talk to Karen. Karen has a carefully curated list of button building tasks sorted by priority, can sedate boss with valium so he calms the fuck down until he can make a case for the impact and potential of his pink button.
Karen might agree that Peter's pink button gets a higher priority than Bob's blue button.
But devs are nocturnal creatures, easily disturbed when approached by humans, their natural rhythms thrown out of balance.
So the sprint is "locked", and Peter's pink button appears at the top of the global backlog, from where it flows into the next sprint.
On rare occasions a sprint is broken open, for example when Karen realizes that all of the end users will commit suicide if they don't have a pink heart-spawning button.
In such an event, Peter must make Bob happy (because Bob is crying that his blue button is delayed). And Peter must make the button team of devs happy.
This usually leads to a ritual involving chocolate or even hardware gift certificates to restore balance to the dev ecosystem.23
Staring at cursed blinking cursors.
Repairing work of worst thinking workers
Reverse merges or it'll murder the servers, it nurtures despair
Amateur managers, dimwitted savages interrupt all of us janitors
Cleaning up damages, spills and experiments using skills in embarrassment
Explicit foulness, in a minute it's straight to the bowels with weapons of limitless vowels
A bittersweet hateful machete, eviscerates stateful spaghetti
The slow disease flowing from keys knowing it's going to please
The growing unease, no one agrees, there's no guarantees with your useless degrees
Need more drugs, keyboard's crawling with bugs, falling as I chug
A bottle of cognac gotta love all the hacks, no poise for code that lacks
All the noise, gotta relax, before I destroy the syntax.
Excuse me for not making sense.
Too gloomy, aching and tense.10
1. The quality of the coffee and toilet paper you encounter during an interview tells you more than promises about table tennis or fruit baskets.
2. Try to determine who their primary client is: subscribers, app buyers, advertisers, etc. It's a major influence on the company dynamic.
3. Before an interview, you can just say: "I would like to sit down with a PO and run through one backlog feature and one bug, to get a feel for the type of tasks at the company". Such an activity immediately reveals team structure, whether they have product owners & scrum masters, what a sprint looks like, how they prioritize tasks, and how organized/chaotic your work experience will be.19
Boss: "Could you join the new DevOps team for a week or two, for some coaching?"
Me: "I'd rather watch you masturbate furiously in a corner of the office while you cry over your ex boyfriend"
Boss: "Yeah... that's why I ask you. You are the only one brave enough to watch"
Me: *Sigh* "But I don't know shit about what DevOps does, I'm a DBA. I've told you the difference a million times. Can't we just douse it in gasoline and set it on fire?"
Me: "Not the team, the servers..."
Boss, imitating Gimli: "And my ex!"
Me: "I get why he left you"
Boss: "It's funny, he was actually better with computers than me, maybe even better than you. He hated me for starting this company, told me I was just chasing money instead of ideals. He just isn't grown up enough to see that there is more to the world than computer games, brewing beer, maker festivals and gay bars, that you need to take responsibility... Maybe it just never works out between managers and geeks..."
Me: "Indeed. The difference in competence is too large"
Boss: "Ugh. You are like straight version of him... but will you at least take a look?"
Me: "Fine, unzip your pants..."
Boss: "No, not that... you need to teach DevOps this docking thing, with the parallel stuff, and the horizontal growth"
Me: "Damn I really hope we're talking about servers now... Do you mean Docker?"
Boss: "That's it. They want to learn how to dock on the Windows servers. They reserved two 4xlarge on AWS. Is that enough for docking?"
Me: "You know what. I'm going back to hug my DB designs, and wash my brain with some queries. Then I'll return here to burn everything to the ground. There is no hope for you left"
Boss: "That's what he said"
Me: "You're using that meme wrong"
Boss: "OK. So what if you just stay on DB management, and I'll just give you the budget to recruit a new DevOps lead and pay for training?"
Me: "That would work"
Boss: "Why are you grinning?"
Me: "Because I have your ex's phone number"20
My wife is a (semi-)pro gamer, so the only way it affects our dating is that I have to help her write LUA addons, performance analytics and Twitch bots.18
1. Ability to freeze time... (except for internet & computer speed). Too many ideas, not enough hours in a day. Sleep should be declared optional as well.
2. Ability to not eat/drink at all, or eat/drink in copious quantities without negative effects. I enjoy a cognac, pizza & chocolate binge more than nausea, upwards BMI creep and hangovers.
3. True Virtual Reality. None of this headset crap, but immersiveness rivaling reality itself, with voice-controlled AI-assisted interfaces to "program" anything by simply describing it, iterating over details to add increasing complexities. Not even for porn reasons... my head just overflows with creative ideas for "holonovels" and interactive worldbuilding, but I don't have the patience nor artistic skills for game development.4
"Arch Linux is actually not that difficult".
I ssh'ed into my home server yesterday.
I was greeted by a message from an ext3 disk about needing fsck. Fine, "I haven't been in here for a while, might as well do some maintenance". fsck /dev/sda6, let's go!
This nicely "repaired" the sshd service (i.e. cleared the sectors), I cursed at myself for pressing enter at "repair (y)" right before the connection broke.
So I connected a display and keyboard... ok so let's just pacman -Sy sshd or whatever. We can do this! Just check the wiki, shouldn't be that hard!
Wait... pacman has not run since 2010? WAIT IT'S ACTUAL UPTIME IS 9 YEARS??? I guess we know why I'm a DB admin and not devops...
Hmm all the mirrors give timeouts? Oh. The i686 processor architecture isn't even supported anymore...?
4 hours, 11 glasses of cognac, 73 Arch32 wiki/forum pages, 2 attempts at compiling glibc, and 4 kernel panics later: "I think I'll buy a new server".22
Oldschool CSS was not much fun, but I never understood how this made it any better:
I always forgot a row, had cols inside of cols, forgot how form-groups worked, or found other ways of messing up the whole layout.
Instead of complex CSS, there was now this new complex language entirely expressed through the nesting of layers upon layers of divs. It was like LISP's brackets, but more verbose.
That was the moment I realized that fullstack is bullshit, that there are intrinsic talent differences between frontend and backend devs, and that it's OK to focus on a narrower but deeper field.9
So devRant shows me a frontpage feed based on my ++/--/follows/etc.
Does this mean there is a niche bubbled hidden corner, some place where some dev is currently looking at his feed thinking: "Wow everyone agrees with me, Windows is much better than Linux, VBscript is amazing, and Git is for tryhards who hate on dropbox for no good reason"
By now, that bubble and mine have drifted so far apart that they will never meet again, and if you see this specific rant, you will not ever see that content again either.
For all you know, the majority of devs love changing requirements and clients who call them in the middle of the night, the consensus is that testing is for noobs, and everyone loves jquery.
You will never know, because you clicked ++ on the wrong rant, right when you signed up, and forever sealed your fate.17
1. Try to stay sane in startup chaos
2. Use more vacation days
3. Separate work and free time a bit more
4. Get out into nature more
5. Hire 50+ good developers & get company to 15M active end users while doing all of the above7
I've been working for years on a game that would be a mix between Dwarf Fortress, Factorio and SpaceChem.
Problem is, I keep switching between engines and languages, never making too much progress. I've written several isometric rendering libraries, tried out going fully 2D ASCII or fully 3D in unity... And then something else eats up my time for a while again.15
The list would be quite long.
I think Google is still making good tools, but just like Apple the integrations get all so tight and constricting... And with their data, if it goes wrong, it will go wrong hard.
I feel like YouTube is gliding into a state where cheap clickbait floats to the top and finding quality gets more difficult as well, their algorithm is more and more tuned to choose recent popular stuff over good older gems.
Microsoft is all pretend lovey dovey cuddling open source, but I'm still suspicious it's all a hug of death. I was never a big fan, but they're seriously dropping balls when it comes to windows-as-a-service, taking away so much personal control from end users even though they can't be trusted to babysit either.
Amazon is creeping it's way through the internet, charging $10/m to join the vip club infesting houses with spytubes to sell more plastic crap. Bezos' only right to keep wasting oxygen is BlueOrigin, but he'll probably fuck that up as well turning spaceflight into a decadent prime consumer orgy instead of something inspiring.
Facebook... Well, that's self explanatory. Fuck it, everything it pretends to be, and everyone who still has an account with a rusty spike.
Uber and AirBnB, with their fake ass mission of a green shared economy, but they trample over employees, customers and neighbors to build their ivory towers of progressive illusions.
Then there's a million declining brands.
I liked Skype for example when it was first released, Just like how I started out liking (and then hating) Discord, Slack, etc... They're all tools which seem fast and easy, but then they get us further away from solid protocols, get us entrenched into limiting, bloated and sometimes even dangerous tools. As my dad used to say: "Companies are like women, if you go for cheap, fast and easy you'll end up with a burning dick and half your savings gone"
You know what, fuck all tech companies.
OK, devrant is still pretty nice... For now.9
1. If your contract allows it (and it should), get more involved in public dev community. Your employer benefits greatly from making a small closed source core product, with a giant open source ecosystem around it. Write public articles. Working in a community larger than one single business is fun.
2. Start a company coding club, a "labs" division, work in a slightly more exotic language. Great if your employer gives you time, but using some of your own is worth it too. Work on non critical tools, creative experiments. Sometimes you stumble onto incredibly valuable ideas which would never have popped up if you had strictly followed stakeholder requirements.
3. Listen to your body. If you feel restless, go for a run. If you feel tired, take a nap. If you're stuck, wander around the company. If you feel down, go find a place with more than a dozen trees. And always have a notepad nearby for doodling!3
The project where I realized I wanted to go from chemist to pro dev.
I built a flow-chemistry spectrometer with monitoring backend in Haskell.
Spectroscopy is where you add a reagent to a glass tube, it changes color, and by measuring the exact color it tells you how much of something (for example, a toxin) is present in the sample.
I had to do that a lot on factory samples, writing down measurements using pen & paper.
I'm lazy so I decided to do the logical thing: Automate it. I bought a second hand spectrometer, stripped the casing, did a shitload of glassblowing and hooked up tubes to the production pipelines, so I could get samples, mixing them in the correct ratio with reagents in continuous flows using valves.
I ended up using 2 home-crafted arduino-like boards (etching PCBs is fun!).
One to calibrate the mixture against known samples and control solenoid valves to continuously cycle through various reagents and deionized flushing water, the other to record the measurements and send them to a server running a Haskell/Yesod API.
The server collected the information into InfluxDB (A time series database), displaying all data on a graphite dashboard.
Eventually I wrote Haskell plugins for most of the chemistry processes, from pH & temperature measurements to polymer property and pigment tests (they made a lot of printer ink).
Then I was fired because they didn't need chemists anymore, and the code "could be maintained by the intern" (poor guy)...
But I did find out that I loved functional programming, chemistry automation projects, and crafting my own electronics during that time.18
I hate it when I can't install & update a package through apt, instead it keeps bugging me to manually download the latest deb file every time it boots.3