AboutEmbedded SW dev, from bare metal up to PC based systems
SkillsC, C++, Java, Python, Perl, Lua, Subjective-C And whatever is needed or comes in handy. Doin' what I can with what I git
Joined devRant on 4/26/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
You know what's rocket science? Serial ports.
Every freakin' datasheet states RX/TX but not from which side of the connector. Some look at it from the inside (RX for own receive), some from the outside (RX for receive of the counterpart). But never ever try to explain what is what, that would be too easy.
On literally any first attempt of connecting devices in my life it was wrong. And then you switch 'em and it's still wrong. Then you switch again, and it may work. Or you have to switch a few times more, you never know.
Those freaking bastard interfaces from hell.6
Sitting in a meeting. PM asks if we can go with the schedule management has agreed with the customer.
So, now what do you expect us to say? We can say no, but if it's already settled up the hierarchy levels, it will not have any effect.5
I somehow like it when some of our sales or project guys have to ask the customer what we sold 'em.
I will never understand why they humiliate themselves that much instead of getting their shit straight at least for the next proposal.
Thanks Adobe for the such clear icons, I really appreciate your use of descriptive symbols (one is for "view full page", the other is for "activate single page view").9
We are all working our asses off, but the backlog grows and grows.
Now management came up with a really creative, groundbreaking and clever idea: We should work more, so we can get shit done.
I think there may be some jobs vacant in the near future.2
Experience, intuition and 50-200% risk premium.
For me it is important to not put too much effort in it, as the developer estimation is usually mangled through sales and management anyway and doesn't have much to do with the final price.
And as nobody really bases internal budget and schedule on it as well, it's kind of pointless in most cases.
Today I decided that from now on for all strings that need to be initialized and don't need a special value, I will assign a TIE-fighter "|-o-|".
That will be my legacy.5
Two weeks sick and several meetings where canceled, bugs haven't been touched the slightest bit and requests from customers have been deferred until I'm back.
That's what I call a low bus factor.
2nd part to https://devrant.com/rants/1986137/...
The story goes on...
After I found more bugs that seem to be related to the communication break, and took a closer look, I sent detailed logs of my research and today we had a conference call.
"We have 2,5 million user, our system is widely-used and there is no plan to change it" they said.
And "We cannot reproduce the issue, but even if there is one, you will have to work around the problem, because we cannot make changes on our side" was one answer
As well as "If we would make changes, we will have to re-certify everything"
So I said we told 'em about the issue to let them improve their system. And I can work around it, I already figured out a solution for my side, but if there is a bug, they'd better fix it for future releases.
And with my additional research I have a bad vibe of some kind of memory leak involved on their "certified" implementation, and that could trigger various other problems.
But it is as always, if I try to be nice, I just get kicked in the ass. I should really be more of an asshole.
"Our side is certified, yours is not" ... they yelled from their ivory tower.
Then why does your side send unreasonable responses after a few dozen identical requests and doesn't respond at all shortly after?
Maybe because the certification tests only cover 10-15 requests consecutively?
Certify my ass...
You cannot completely delete a windows service, as long as the services panel is open. The service stays undead and prevents any reinstallation until the services panel is closed.
Separation of GUI and business logic does not apply here, because it's kernel logic, right?
But at least you're consistents, there is a similar issue with not installing USB drivers if the new hardware dialog is open.4
Project management 101:
1) For a new project, pretend it is similar to a project in currently in development
2) Proudly state that everything can be copied from the older project, so the schedule of the new can be tightened
3) Calculate the new schedule based on the "just copy and paste" effort.
4) Now the new project will be finished before the older project
5) Enjoy the applause from upper management for the successful project that hasn't even begun yet.
No, this does not belong in the joke category.
That's gonna be fun...2
Customer complains about an issue after a software update. The head of department himself tested the update and got an error message.
Me looking at the logs. Ok, that's an issue, but based on hardware failure, customer should fix his hardware, no relation to the new software.
But surprisingly close to the software update, which piques my curiosity.
Me looking at older logs ... same issue. EVERY FUCKING DAY. For months. The corresponding error message only appears if a user is logged on, so quite a few people have seen it. Obviously nobody cared. Maybe we just ditch error messages, it'll save lots of work.
Fuck you NXP and your market-penetrating proprietary bullshit solutions where there's plenty of standards around.
That's all. Have a nice weekend.
Just wasted nearly a day because I got work assigned that has alreay been done half a year ago and nobody knew it.
It's really hard to find a feature to remove, that's already been removed and the truth is only to be found deep within the version control.
Come on, how hard can it be?
On every fucking TLV data structure I get to handle, the hobo who defined the structure obviously stopped reading the TLV specification after the second sentence.
Fucked up tags, misuse of length encoding, and as a result no real TLV parser can handle that crap. Workarounds and manual parsing all over the place for *every* *single* interface.
Get your shit together, and if you don't want to handle the complex parts, then at least make the simple types right.
I love emacs dired mode.
Nothing better than the full power of a decent text editor to edit directory content.
I know quite some multi-file-naming tools, but they are all crap compared to dired.
That's all. Have a nice weekend, everyone!1
I don't get it.
I tried Kotlin on Android just for fun, and it doesn't support binary data handling, not even unsigned types until the newest version. Java suffers from the same disease.
How does one parse and process binary data streams on such a high end system? Not everything is highlevel XML or JSON today.
And it's not only an Android issue.
Python has some support for binary data, and it's powerful, but not comfortable.
I tried Ruby, Groovy, TCL, Perl and Lua, and only Lua let's you access data directly without unnecessary overhead.
C# is also akward when it comes to data types less than the processer register width.
How hard can it be to access and manipulate data in its natural and purest form?
Why do the so called modern programming language ignore this simple aspect that is needed on an everyday basis?11
Tomorrow is friday and I have to deliver five big releases for two projects, because they were scheduled this week. And afterwards I'm gone for vacation.
And I don't care the slightest little bit.2
Real story, I'm not kidding you.
But I wouldn't believe it, if it hadn't happened right now.
Customer calls, one device gets no mobile data connection.
I checked everything ... no errors to be found. Just no connection.
After half an hour we found the reason: Someone inserted the SIM the wrong way.
How the hell can someone put in a SIM the wrong way? There is only one way it'll fit in.
I don't get it.7
USB3.x is such a bitch.
My mouse laggs like hell when I put a USB3-thumbdrive on the same root hub, even if I don't read or write on the drive.
Morons, morons everywhere5
I had to implement an internal tool in C++ which parses a file and converts the content into another format.
It did take hundreds of lines of code to get it working, file handling and parsing data in C/C++ is terrible.
I'd rather done it with some scripting language, and additionally implemented it in python as a side-project (in less than an hour and < 20 lines of code, BTW) but it should be C++ "Because that is how we do it here".
At the end the tool was only used for a few weeks, because someone had an idea how to completely avoid the need for that converted data.3
Any development on a complex software is like playing Jenga. You make your changes and hope it won't break down the whole structure.1
Putty, you son of a bitch. Why do you call the logging option "All session output" if you don't include binary zeros in the output? Zeros don't count as "all" or what?
Then call the option "All session output without zeros", that would have saved me some time and prevented handing out false data.6
PM emailed me a document from a customer to distribute it to the right people.
Me (in my head): WTF? You are the PM, that's your fucking job.
But I opened the document and read it. Some blah about requirements we discussed with the customer earlier. And the request to sign it as agreement on the requirements. The customer even put the names of the people at the end, he suspected to be the right ones.
So I send an email back to PM that this is project stuff, not my business. Case closed for me.
Half an our later PM enters my office, telling me he thought I was the right guy for this topic and he didn't know who else could be interested in it.
So I told him that this document is about defining project requirements and that he could have sent it to the people that are mentioned at the end of the document.
Turned out he didn't even opened the document. F...A... Wasted my time instead of doing his job.
Guess next time I'll be reading his documents at as good as he does.
One thing my dev years have showed me through various systems:
The world is held together by masses of scripts. And most of them are horribly bad, unmaintainable, extremely complex and usually not replaced on requirement changes, but extended by other terrible scripts to get the desired behaviour.
Windows is based on tons of shitty batch scripts, powershell madness, WSH bullshit and VBS absurdity.
GNU/Linux is build upon trillions of incomprehensible shell scripts, heaps of python gizmo and perl mysteries.
Every complex system I've seen uses batch or shell scripts to fire up its runtime.
And it doesn't seem to get any better, so let's face it, we're doomed.4
Today it took me *five* commits and nearly 2 hours to tidy up a module before doing a tiny 5-minute change.
I could have just done my change but that thing was so messy, I first had to straighten things up.
It's not that I didn't expect that, the module was mainly done by my dearest co-worker who's code usually causes me anaphylactic shocks.
But I'm always amazed how hard it can be to follow a style guide, and ours is really small anyway.2