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
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
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.5
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
Most of the Top "Rants" are jokes.
Many of them even just lame, ancient jokes.
Seems to becoming PoorDevJokes8
Today I replaced my Logitech G610 that had a twitchy enter key by a Corsair K70 with MX Silent switches.
It's a whole lot of money, but man that thing is really beautiful. I'm in love with the aluminium top plate and the entire design with raised switches/keycaps.
The G610 is a good keyboard (only missing a palm rest), but the K70 is much more comfortable, and the silent switches are really a lot less clicky, nearly as quiet as a rubber dome keyboard. Really nice for office environment.
The only sad thing is, I would prefer brown switches for regular typing, because of the feedback. But MX Silents are only available as red and black.
So now I have red switches, but that's something I can live with.
I hope the K70 is made to last, I'm not planning to have another keyboard for the rest of my life.2
Stop crying like a baby about Github and Microsoft.
If you don't want that, then be a true developer, stand up and build your own Github.12
My son came from kindergarten with a picture he painted. And that's what I found on the backside of the paper.30
Biggest scaling challenge?
The imaginary scaling issues from clients.
Client : How do you cope with data that's a billion times bigger than our current data set? Can you handle that? How much longer will it take to access some data then?
I could then give a speech about optimizing internal data structures and access algorithms that work with O(log n) complexity, but that wouldn't help, non-tech people will not understand that.
And telling someone, the system will be outdated and hopefully been replaced when that amount of data is reached, would be misinterpreted as "Our system can not handle it".
So the usual answer is: "No problem, our algorithms are optimized so they can handle any amount of data"6
System design meeting with the client.
Client: We need feature X in the design document
Me: But feature X was not a requirement, so it's not in the document and we will not add it.
Client: But feature X should be a common feature today.
Me: That doesn't matter, it wasn't a requirement. And besides that you don't even need it today, the planned system doesn't even support feature X, so we couldn't implement it, even if it was mentioned in the design document.
Client: But we may need it some day, and what do you do, when we decide to enhance the system in a few years and we need that feature then?
Me: Then we make you an offer for feature X.
Inner me: You ordered a bicyle and now you want it converted into a delivery truck next year without charge. That's not how things work.3
Bloody ISO7816/EMVco contact is a huge pile of exceptions to the rules.
I'm still not sure if there are any rules at all. Maybe it's just exceptions.
I will become the famous violent psychopath if I get to know where those guys live that invented such crap.