AboutI became a dev because I'm sick of using buggy, unstable software, and the internet said I could make my own buggy, unstable software if I just tried, so here I am. I also like retro computing.
Joined devRant on 6/27/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Fucking Ubuntu snaps. Devs are hijacking well-known applications and repackaging them as Snaps. They get their own special "snaps" folder which fucks up trying to uninstall them via "apt-get". Fuck me for not knowing the Thunderbird I installed was a snap version.4
If you are currently working for an awesome company, what questions did you ask at interview time to screen them to make sure they'd be a good fit for you?5
If software worked perfectly, never had any bugs, ran fast, and consistently, and was simple to extend, how many of us would still have jobs? 🤔2
Had to break apart some nice streamlined code, that I built a few weeks ago, to support a corner case where an object coming out of the db defies expectations -- you see, all other objects have a name and description field, and all get rendered the same way, thru the same tempates, but some special fucknuggets decided THEIR db objects are going to have the description in the NAME column! and fuck the description column, just leave that shit empty .. tee hee!
and not just that. all these special-case db objects need to be collected together on the side and rendered via templates so they end up in the same target file, not individually like every. other. object. So that automatically fucks with iterating thru things sensibly.
and there's no way to tell the objects are any different from each other without making 2 db lookups just to check properties on related db records.
I guess it's "fuck me" for writing performant, functional code that now looks like a manic Elon Musk went into the codebase at 2am with the keyboard equivalent of a reciprocating saw.
this is what happens when there are no ongoing code review processes and devs have no clue / visibility into what the fuck the other devs are writing until that shit is committed to the repo.2
Sometimes workplace conversations seem more like skillful contests of interrupting / talking over each other, than actual listening and waiting for others to finish talking.
Bonus points for interrupting with "So, ..."2
Alan Kay. Helped develop Smalltalk which was used to program the computer at PARC which inspired Steve Jobs to make a GUI for Apple systems. Also came up with the term OOP.
I admire Kay's thoughts and his idea that "the computer revolution hasnt happened yet." And his ideas about educating kids with computers, and inventing domain specific languages to keep codebases as small as possible.
Smalltalk programs can also be edited while they are running and the dev gets updates in realtime.
Tonight I resorted to using a hack to complete a requirement by a deadline.
How do I purify my soul after this?6
RIP my sanity.
Devs keep adding bugs along with their features.
I go into work each day not knowing what is going to be broken.3
What Linux-compatible GUI applications take advantage of extended file attributes? I'm looking to organize my files using extended attribs but web search is coming up with nada.
There are a few Mac apps that can do this.1
OOP seems in many cases really to be OOOP:
Obscured Object Oriented Programming: or, how to code in such a way as to make things as cryptic as possible for others to decipher. Examples:
- Methods not taking args because the desired arg is actually a property of the class, set with a "setter" by another class
- Protected/private status for vars and methods to block other devs from using the class how they wish, and only the way the creator wants
- Initializing a var as null, conditionally setting to the desired value, then littering the codebase with null checks and "isset" and wondering why there are so many bugs
- Have varying implementations of getters and setters so as to be totally unpredictable, where setters' implementations range from a basic "store x" to 700 lines of logic and db lookups, and the same for getters
- Break general implementations of things by creating references to commonly used objects, then doing operations on those references, making it impossible to text search all implementations of a method/class
If you aren't using at least these 5 antipatterns, you're not doing OOP right.10
Sup with all these people in the office arguing that writing documentation is pointless because it will just become out of date? I even heard one dev say it'd be so problematic that the company would need to hire someone full time.
That sounds like BS to me. Sounds like some people culturally think documentation isn't cool. That maybe they don't know how to do it.
So, I'd like to hear opinions on the topic. Mine is that documentation is useful and even if it gets out of date, it provides some value.
What's better: out of date documentation, or no docs at all?9
Last night I finally dug out the hardware I ordered to replace my iBook g3 clamshell hard disk with a compact flash drive. I got an ATA to CF adapter and an industrial 16GB CF card. The spinning HD of the laptop was insanely loud and I wanted more storage space and hoping to extend the short battery life a bit.
I had a torx kit from when I had swapped out the display for my 2009 imac, and was doubtful I needed them to service this thing from '99. I did quickly run into some torx screws but most were Philips.
Saw that the torx screws in the iBook were better quality case screws than the tiny Philips screws Apple used for my 2008 Macbook.
Most interesting thing about taking apart this laptop from '99 is it had no dust in it.
Boots and runs absolutely silently.
Went online on my other machine and found a huge archive of Mac Classic games.
Spent an hour and a half playing Sim Farm in 256 colors.10
Working on my first feature at work involves adding on to a massive legacy feature. I come from TDD & functional programming. This code is old school OOP where naming is unclear, functions are hundreds of lines long, and even though i have Xdebug to step thru the execution, every day that passes I dread standup because I feel like an incompetent fool more and more.
Asking for help really isnt working because the 1 person who wrote the code X years ago is a senior dev overloaded with his own new features to work on.
Feels like I'm drowning, even though I know that I will get it done, somehow.
~800 LOC all starting the indent from the edge at col 7.. had to select all, switch editor tab size to 1, shift them all over to start at col 6, and pick through the rest to make sure everything is indented evenly.
Looks like someone's IDE started the code indent at the same level as the end of a block comment.1
Joined a fantastic small software company. I love the team. Office is beautiful. Benefits are stellar. Commute is very short.
Codebase is legacy. 15+ years old. No unit tests. Files of 10-15k lines, no comments/useless comments. Inconstistent file locations/structure patterns. unclear/not useful variable names. Not using Git.
I need tools and strategies to thrive and do well. I know Martin Fowler has a book on refactoring legacy code. I'd also appreciate any mindsets you all have for thinking about working with legacy codebases.3
Somebody set up automatic versioning for builds and the builds keep failing because the versions keep getting bumped. and my sanity is gone for the night.
Shit needs to Just Work(tm) and at least give a clue as to how to fix it in the message.
Back to the black hole that is Jenkins documentation.
Need to run my Python app on a server with no internet access. Fine. Windows machine. Fine.
I'm developing in Cygwin in Windows. Damned nearest thing to Linux, development is a lot easier.
Turns out Cygwin is its own build environment. Fine, I switch to Power Shell, install Python, set up virtualenv, pip install everything.
Copy entire repo folder to target system. Copy Python installer. Install 3.6 fine. Create virtualenv in copied folder. Run python, pip modules are all installed. Fine. Test run works.
Run my shit. "No module named...." It wont see my submodule.
I wont even tell you what a fucking pain in the ass it is to try and convert Python scripts to exe files. This shit does not need to be so damn complicated.12
Inbox: 1282 of 3561 are unread
Deleted items: 41335
92% of emails I receive are irrelevant to my work. Most of them are automated system notifications as a result of being a member of six or so groups. I am guessing no one else is reading them either. Too bad about all that cloud storage getting used up with virtual confetti.1
Any one here use Pony? https://www.ponylang.org
It seems to have a lot going for it and is active. I am most interested in the "capabilities" security aspect, I have watched a few talks about it and was looking for languages that employ it.
Thoughts? I mainly code in Python and am looking for another language that will expand my thinking and expose me to new paradigms. (Squeak and Lisp are also in my list of prospects).6
Spent the better part of the last hour banging my head on the wall to get a regex pattern to match scraped content in a batch of files. Turns out my pattern was good all along, the files' structures were inconsistent.
My head has recovered but the wall will never be the same...
Fuck ads, fuck images,
Fuck popups, fuck bloat!
Screw stylesheets, screw webfonts,
Screw modals that float!
The Web's bloated and broken, I regularly thinks,
That's why I started browsing again with Lynx.
Download pages in an instant, without pics,
Browse the full article, no "Read more" JS tricks,
Just blocks of text, direct from the writer,
Text-only browsing is megabytes lighter.4
I never trust any commit in other people's libraries with the message "misc changes" 🧐
But in my own repo .. 🤫1
Found out the enterprise app for which I am writing Python code is interpreting it through asteval. Which means no more classes, no imports, no decorators, limited built-ins, and limited code testing strategies. 😰
Burn my own harvest? Don't mind if I do! Goodbye code which wasn't half bad. The thing which comes to replace you will be written of in horror stories.. 👾
On the flip side, a new software design challenge! 😅
Me, week 2 at new job, meeting with a separate team of fellow Python users: "Hey what software tests do you have for this? I am interested to learn your testing structure."
Dev1: "We don't really have any."
Dev2: "I have a Ruby script that tests this one thing."
Dev3: "why did you do it in Ruby? Why not Python?"
Dev2: "oh well Dev4 started in Ruby."
Me: *this is going to blow up but I am too new to tell them what to do*
Last week, these guys messed up 500 files in production with "undefined" in the filenames. 😣 I think it's time to introduce them to tests...1
The most exciting part of my morning was accidentally discovering how to easily crash Outlook in Win 10:
1) Use nice MS ergonomic keyboard
2) Open Outlook
3) rapidly press the friendly arrow-like buttons below spacebar a couple of times
4) Outlook crashes
5) Giggle sadistically and a bit sadly because this kind of error will never be fixed in this lifetime, and resume working
Bonus step: Resist urge to press these magic buttons in IDEs