Details
-
AboutI'm a code submarine - I work to low level for the user to see me.
-
SkillsC, C++, Ada, SPARK, Microkernel based systems, Linux, drivers, Python
Joined devRant on 8/29/2017
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
-
Many people here rant about the dependency hell (rightly so). I'm doing systems programming for quite some time now and it changed my view on what I consider a dependency.
When you build an application you usually have a system you target and some libraries you use that you consider dependencies.
So the system is basically also a dependency (which is abstracted away in the best case by a framework).
What many people forget are standard libraries and runtimes. Things like strlen, memcpy and so on are not available on many smaller systems but you can provide implementations of them easily. Things like malloc are much harder to provide. On some system there is no heap where you could dynamically allocate from so you have to add some static memory to your application and mimic malloc allocating chunks from this static memory. Sometimes you have a heap but you need to acquire the rights to use it first. malloc doesn't provide an interface for this. It just takes it. So you have to acquire the rights and bring them magically to malloc without the actual application code noticing. So even using only the C standard library or the POSIX API can be a hard to satisfy dependency on some systems. Things like the C++ standard library or the Go runtime are often completely unavailable or only rudimentary.
For those of you aiming to write highly portable embedded applications please keep in mind:
- anything except the bare language features is a dependency
- require small and highly abstracted interfaces, e.g. instead of malloc require a pointer and a size to be given to you application instead of your application taking it
- document your ABI well because that's what many people are porting against (and it makes it easier to interface with other languages)2 -
What bothers me most with the Matrix hack is that so many people say oh look the secure messenger got hacked. From what I can tell it had nothing to do with their software nor their protocol. If you're running your own Homeserver you're totally unaffected.1
-
Had to do an assignment in Haskell and had some bugs all over the way. After some Wodka I did a one liner that worked but I never found out why. 10/10 would do again3
-
Best: getting a job in systems programming which was my dream since I wrote my first hello world about ten years ago.
Worst: recognizing that time isn't the restricting factor but energy, I'm often just too tired to work on side projects -
Sports. Without sports I would never get my head free from my dev thinking. But getting my head free is necessary to get new ideas and solve old problems.1
-
That I did not have the rant idea earlier when I see a rant that could have come out of my dev life.
-
I wanted to automate the install of a toolchain which had just a manual install script. Piped `yes` into the installer and it worked just fine. Only downside, it always installs to 'y' 😅
-
You know that you like a language when you start missing its features in other languages while learning it.7
-
Thanks to @nik123 I know have a new side project: creating an fs (or fuse) driver that hides bad blocks on block devices and makes them usable again.2
-
We often rant about people who think that because we can program we can do everything with computers.
But I have to admit that when I get asked what I do I often only say that I program or do something with computers. I usually don't get more specific because it's so hard to explain to someone who doesn't know anything about the subject that I would have to explain the basics each time. And I'm just to lazy for that.
It's nice when people ask me how it is going at work but I probably won't say anything more than ok or fine because my day was fucked up by a memory alignment bug in the chainloader and I now don't have the patience to explain what these both things are and why they fuck up my day. -
I failed to recognize that svn import does not download the repo to my laptop but "imports" the directory I'm currently in into the repo. That was my /home...2
-
Am I the only one who hates it that everything needs to be done in JavaScript nowadays?
Why can't you just start writing native software again? Why does every program need its own fucking browser engine and at least 200MB of RAM to do nothing but show and edit text?
I want to have fast and streamlined software again and use my resources for important things. So much software that is called fast or lightweight isn't either. It's just a little less heavy and slow than the software it tries to replace.
I don't use C all the time, but maybe looking into Qt instead of electron might be a start.
I had a project where I could convince my tutors to let me use C++ instead of JS and they were surprised how fast my application started even though it only consisted only of a empty window with a status bar. How far have we come that we even need to think about performance when opening an empty window on modern hardware?20