Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "kernel development"
I'm a self-taught 19-year-old programmer. Coding since 10, dropped out of high-school and got fist job at 15.
In the the early days I was extremely passionate, learning SICP, Algorithms, doing Haskell, C/C++, Rust, Assembly, writing toy compilers/interpreters, tweaking Gentoo/Arch. Even got a lambda tattoo on my arm after learning lambda-calculus and church numerals.
My first job - a company which raised $100,000 on kickstarter. The CEO was a dumb millionaire hippie, who was bored with his money, so he wanted to run a company even though he had no idea what he was doing. He used to talk about how he build our product, even tho he had 0 technical knowledge whatsoever. He was on news a few times which was pretty cringeworthy. The company had only 1 programmer (other than me) who was pretty decent.
We shipped the project, but soon we burned through kickstart money and the sales dried off. Instead of trying to aquire customers (or abandoning the project), boss kept looking for investors, which kept us afloat for an extra year.
Eventually the money dried up, and instead of closing gates, boss decreased our paychecks without our knowledge. He also converted us from full-time employees to "contractors" (also without our knowledge) so he wouldn't have to pay taxes for us. My paycheck decreased by 40% by I still stayed.
One day, I was trying to burn a USB drive, and I did "dd of=/dev/sda" instead of sdb, therefore wiping out our development server. They asked me to stay at company, but I turned in my resignation letter the next day (my highest ever post on reddit was in /r/TIFU).
Next, I found a job at a "finance" company. $50k/year as a 18-year-old. CEO was a good-looking smooth-talker who made few million bucks talking old people into giving him their retirement money.
He claimed he changed his ways, and was now trying to help average folks save money. So far I've been here 8 month and I do not see that happening. He forces me to do sketchy shit, that clearly doesn't have clients best interests in mind.
I am the only developer, and I quickly became a back-end and front-end ninja.
I switched the company infrastructure from shitty drag+drop website builder, WordPress and shitty Excel macros into a beautiful custom-written python back-end.
Little did I know, this company doesn't need a real programmer. I don't have clear requirements, I get unrealistic deadlines, and boss is too busy to even communicate what he wants from me.
Eventually I sold my soul. I switched parts of it to WordPress, because I was not given enough time to write custom code properly.
For latest project, I switched from using custom React/Material/Sass to using drag+drop TypeForms for surveys.
I used to be an extremist FLOSS Richard Stallman fanboy, but eventually I traded my morals, dreams and ideals for a paycheck. Hey, $50k is not bad, so maybe I shouldn't be complaining? :(
I got addicted to pot for 2 years. Recently I've gotten arrested, and it is honestly one of the best things that ever happened to me. Before I got arrested, I did some freelancing for a mugshot website. In un-related news, my mugshot dissapeared.
I have been sober for 2 month now, and my brain is finally coming back.
I know average developer hits a wall at around $80k, and then you have to either move into management or have your own business.
After getting sober, I realized that money isn't going to make me happy, and I don't want to manage people. I'm an old-school neck-beard hacker. My true passion is mathematics and physics. I don't want to glue bullshit libraries together.
I want to write real code, trace kernel bugs, optimize compilers. Albeit, I was boring in the wrong generation.
I've started studying real analysis, brushing up differential equations, and now trying to tackle machine learning and Neural Networks, and understanding the juicy math behind gradient descent.
I don't know what my plan is for the future, but I'll figure it out as long as I have my brain. Maybe I will continue making shitty forms and collect paycheck, while studying mathematics. Maybe I will figure out something else.
But I can't just let my brain rot while chasing money and impressing dumb bosses. If I wait until I get rich to do things I love, my brain will be too far gone at that point. I can't just sell myself out. I'm coming back to my roots.
I still feel like after experiencing industry and pot, I'm a shittier developer than I was at age 15. But my passion is slowly coming back.
Any suggestions from wise ol' neckbeards on how to proceed?32
Whoever designed UEFI, FUCK YOU!! Giving the OS control over every fucking thing in the hardware instead of letting the BIOS do that separately, WHO IN THEIR RIGHT FUCKING MIND THOUGHT THAT THAT WAS A GOOD IDEA?!!
And same goes to fucking you Microsoft! How difficult is it to do a fucking ACPI shutdown and do it properly?! How fucking difficult is it to not make the fans spin like jet engines because why the fuck not?! And yes the fucking PC is dust-free and bloat-free so I don't want to see any fucking Wintard comment that.
You know where else I saw the inability to power down? In Linux 4.20-rc2. A kernel that is within active development, and rc2 at that!! A kernel branch that's designed to be unstable, for testing purposes. Meanwhile the stable branch of MS Windows does the same. Also designed to be unstable because fuck QA?! Filthy fucking motherfuckers!!32
Me a while ago talking to a recruiter over the phone. This was for a C++ dev position.
(R)ecruiter : So except for the development things, we are looking for someone who has experience configuration linux. Do you have any experience with that?
(M)e : Sure, I use Linux all the time. What do you mean.
R : Well, Just using Linux isn't enough for this position, you need to have experience in configuration Linux.
M : Well. I can't answer your question if you don't specify what you mean. Do you mean that I need to be able to install my own packages? Set up my dev environment? Bash scripting? Being able to configure my bash profile to have good aliases? Use Linux to develop software? Because I can do all of these.
M : Or do you need someone who can write Kernel modules for the OS, because I don't have any experience in that but would like to learn.
R : Oh, I don't really know what it means. But the paper says that you need to have experience configuration Linux. So what would you say your experience with that is?
Me internally : JESUS CHRIST I JUST TOLD YOU WHAT I KNOW AND WHAT I DON'T KNOW HOW ARE YOU GOING TO ASSESS ME CORRECTLY.
Me 😎 : I use Arch and you have to set it up completely from the ground by your self so I know everything there is to know.
Basically every question was like this with the recruiter. I got further in the process but quit because the workplace looked like it would drain my soul when I got interviewed by the employees of the company.
Jesus Christ though, some recruiters could be replaced by an automated phone system.17
Yesterday (or the day before that depending on your timezone and day-night schedule - this Friday) my OnePlus 6T arrived. After only 2 days of time between placing the order and actually getting the phone, quite impressive!
The DHL guy asked me upon receipt - is it the OnePlus 6T? - Yes it is!! - "An amazing device it is!", he said. And honestly.. he couldn't be more right.
I might be a bit biased on this because after all I did just spend €630 on this phone. But it feels so snappy, high quality, the 8GB of RAM is just.. it blows my mind. But I'm sure that the other reviews did this sort of jazz already.
The things that set this phone apart for me though were the following.
When I get a new phone or tablet, usually the first thing I do is rooting it. This one was no different, about an hour after receipt it was successfully rooted and loaded with Magisk. Currently I'm still in the phase of "getting to know the phone", wherein fuckups are usual. This time again being no different - I removed some apps and apparently did something to it that the search engines - both Google and DuckDuckGo - didn't quite like, as both of them would crash upon application launch. Me in full panic mode of course, desperately trying to find the stock ROM (which doesn't seem to be present in its usual form) or a new set of GApps (which didn't resolve the issue). OnePlus does seem to offer its OTA updates in zip archives though. So I downloaded its latest update (same as what was on the device) and applied it.
That's when the nerdgasm happened.
The "update" was simply a matter of going into the settings, tapping this and that and applying the update. No recovery, no unrooting, no nothing. The update just went like that despite the phone being rooted and just having had TWRP flashed to it. I always wanted this sort of thing, which even the Nexus couldn't offer - having the cake and eating it too. Being able to root the device and muck around with it while still being able to update the device timely without too many hurdles. This fucking thing does it!!!
That is to say, after my initial nerdgasm I did find that it bulldozed over my su binary (effectively unrooting the thing), custom emoji I've set (iOS 12 because fuck Google's most recent emoji set) and some other things. But those are easy to install back, much more so than it would've been to download a whole Android release and dirty flash it, as it was on the Nexus.
Other than that, battery life, dash charging (edit: on that topic, it does remain cool like a cucumber despite getting 15-20W of power jammed into it, quite impressive!), snappiness, the usual jazz.. eh, as I said earlier that's the usual reviewer stuff. But this feature of being able to upgrade the phone while it's modified, that's something which seems to be severely underrated by those.
Oh and during kernel builds, I couldn't quite get the source to work - probably due to my lack of experience with builds of Android kernels - but I did find that this phone actually exposes its kernel config through /proc/config.gz as it should. None of my MediaTek devices do this, so that's something that I found really appealing. Always nice to see when a manufacturer exposes this information to give you a stock sort of config that you can be rest assured will work configuration-wise. And it allows you to see what the stock kernel is actually built with, which again is really nice. I quite like this! It really encourages further development.11
Last night I compiled my first kernel module!
I'm not talking about a ./configure; make; sudo make install kind of thing...
I wrote, compiled, loaded the module and saw my silly "Hello World!" message on dmesg!
Using some previous experience on embedded I fired up qemu with a fresh buildroot image and the kernel image I just made, thus I can now test and debug without doing kernel changes to my workstation!
So yeah, I'm a little excited :-D5
"Linux kernel development happens on mailing lists, rather than on GitHub ..."
WHY LINUS, WHY?!?7
What kind of developer are you and what is your opinion on other development areas?
Me: Junior dev, oriented towards full stack and Android(with a sysadmin background):
-Low-level(kernel development, embedded, drivers, operating systems, reverse engineers)- Badass, I wish I could do that.
-Mobile apps- awesome but too high level sometimes.
-Full stack/Backend- awesome.
-Web Frontend- fuck HTML+CSS. JS is cool I guess.
-Enterprise applications(e.g SAP) Pajeet, my son.
-Malware development- Holy shit that is awesome.
-Video Game development- was my dream since childhood.
-Desktop apps- No opinion.5
I think I have multiple but this guy stands out.
He was a fellow student at my software development study. Used primarily FOSS systems/software, not because he cared about ethics as much but because that way he could tinker with the software as much as he wanted.
He was always searching for new things to tweak, write, explore and so on. And he shared as much as he could with fellow students.
A few examples of what he did:
- wanted to change something about how Linux worked at its core (he mainly used debian based systems) so he learned how to write kernel modules and wrote his solution.
- wanted to be able to monitor his gas/power usage so he hacked an arduino thing into the power/gas meter and got it to send updates to a messenger at command.
- setup and automated mini data center because fuck it, fun to do.
His thinking was always very creative and to this day I still appreciate what he taught me on that!4
About a year ago, I started a new position as a Full Stack Java Developer. When I started my employer got me a brand new, shiny, Asus laptop. As I prefer Linux (mint) to perform my magic I had to whipe Windows 10 and reinstall it. It turned out that my new shiny laptop was in fact so shiny that Linux (mint) didn't support/contain all the necessary drivers (yet), especially the network/bluetooth drivers and the gfx's drivers turned out a bit of a pain.. Over the year things slowly got better with every new kernel update that came in. However, due to me trying to fix things before those updates, Linux also had become somewhat unstable.
So ... last week I took some time to re-install that laptop and also take the opportunity to upgrade from Linux mint 18 to Linux mint 19 ... or so I thought ... Linux mint 19 was running (very) hot to the point where the laptop would shutdown due to the MOBO's thermal protection mechanims kicking in. ... Ok ...maybe Linux mint 19 was not such a good choice .... let's see if Ubuntu 18.04 is an option ... Nope ... Linux would lock up within a minute after booting up ... no mouse, no keyboard ... nothing. .... *sigh* ... let's (re)install Linux Mint 18.3 again ... and behold, I can start performing magic again.
Linux, it can be such a pain at times. I still prefer it, but running into all those 'weird' things on my laptop when reinstalling, I have to admit I have seriously considered 'just' installing windows 10 again and be done with it. Luckily I could also remind myself of what a pain Windows is to do serious docker/java development in comparison to Linux which gave me the strength to keep going ... :)7
Two week ago the CEO informs me that the "investor" want to put me in contact urgently with an external software house to help me with my "bottlenecks".
The investor goes immediately on holiday, so it's not available for explanations. The CEO doesn't know much.
Today I meet the software house CTO and CEO.
They tell me that I should do a transfer of knowledge with them. That they will respect my requirements, my schedule and that they want to help me.
During the meeting the business consultant explains "his" vision. Some new development nobody understand. Not even the CEO. The other cofounder is probably in disagreement but stay silent.
I agree to cooperate with them in due time and with due scope and planning.
It appears they already signed a contract with the investor. The investor is offering to us 40 days of a senior developer, for "free".
The CEO doesn't even know the economical details of the contract and he is surprised that has been signed.He also didn't know that a person will come over for 40 (?) days and that we will have to pay the transfer expenses.
I try to be friendly. I explain to them the issues I need to solve. I say specifically that I need help on certain tasks and that my wish is that nothing "new" will start until we fix some obvious problems.
After leaving, in the evening I receive an email from the software house guy, telling me that next week I MUST allocate a slot for technical transfer and the 2 weeks after for on site training. Like that. He also mention we "agreed" on that which is false. We agreed on me deciding the timing.
We are only 2 developers, at the moment and the other one will be on holiday next week, so I'm trying to get from him a lot of things I don't know because I don't know everything.
I'm not even sure I'll be able to explain how to prepare all the environment.
Worst thing is that I don't know what will be the scope of the project.
I really don't know how to behave.
I wrote back setting my conditions. I have holiday too. I have to prepare "documentation", explanation, etc.
I don't want the "senior dev" coming when I'm not present.
Maybe I was too weak answering and I should have started a fight immediately. Because he actually AGREED to let me decide and after that he set conditions on me immediately.
I don't know.
My stomach is burning, I had a very bad digestion with fever and headache, feel like puking, plus I spent several evening hours fixing the fucking Linux kernel bug.
I want to survive. I don't want to let them oust me in this stupid way. I want to fight.
I know that if I will explode, scream or whatever I will be at fault and I'll accelerate my demise.
When I try to be "diplomatic" actually I end up being weak.
When I try to be assertive I'm in fact rude and hysterical.
I can't think anything else.
This is what burnout looks like.20
Compiling software on Linux:
Python interpreter? Easy peasy, just some dependencies here and there. Make does a good job.
Linux kernel? Piece of cake, 20 years of development will be freshly served on your machine after one hour compiling (I have a pretty powerful computer).
Tensorflow? Fuck this shit I am outta.
What is your story with self-built software? Which piece of code has the most terrible dependency hell?9
Multiple all-nighters (all day every day):
1) Working, studying and developing an Android game as pet project. Last few weeks before release (yup, I've set a deadline for a pet project) my day consisted of uni, work, more work and 4-5h sleep.
2) Having worked on my thesis (Development of a CPU/SoC + Firmware + Linux kernel) and actual paid work. In parallel. Because, you know, I need to eat and pay rent and shit while I'm writing the thesis. And debts at that moment were not an option (still made some). All-day all-night all-week. After submitting the thesis I went to the doc and enjoyed 2 weeks of doing nothing.
3) Sometimes on my main open-source project after regular work hours. If I have the motivation and ideas that I want to check out or prove it gets late/early too fast.
Me and mainling bluetooth on my phone.
*Implement the bluetooth node*
Driver: FUCK YOU
*Replace the regulators names with proper ones according to new driver*
Driver: FUCK YOU
*Find that one regulator is wrong*
Driver: FUCK YOU
*Add max frequency to not go over that limit*
Driver: FUCK YOU
And this my friends is kernel development in short.
Driver cant read the data from the chip because its offline. And i have no clue why.
And it has no way of telling me why.
Cause it doesnt know.7
Follow up to previous rant:
Now after I realised that I'm a stupid motherfucker, today was release day. Or so it was planned.
Because turned out my colleagues/supervisors didn't tell me to test the app on Android 6 devices and I was sure that if it ran on the device they gave me (which I assumed was the only device of our clients) it'd be sufficient.
Now it was tested on an android 6 device and crashed constantly.
Wow... I mean... Just wow... Now because I don't have a working android 6 device (a colleague of mine is on vacation and locked our development devices for a different app into a drawer) I have to get the emulator working which took me about 2 hours because that dumb shit face of a laptop first didn't have the android-sdk-root set (took me a good hour to realise) and then the kernel for the avds was missing.
Also: windows updates.
(PS: yeah I should have tested it on various devices and made sure it worked on at least most of them without being told so. Another example for my stupidity.)
EDIT: Now I don't have enough disc space for the kernel I need to install. Absofuckingfantastic2
As a junior dev from a sysadmin and security background, this is a list of software development concepts I never seemed to truly understand but hope to(rated from most intimidating to least):
2) Machine Learning, Deep Learning and A.I- too much math that fucks with my brain.
3) low-level programming(kernel,drivers) - sounds extremely interesting but the code in assembly/C/C++ looks like Linear A Minoan hieroglyphics.
4) Rx(insert language here) - I never get why it is useful or why someone invented this. Seems interesting though.
5) Code Reflection - sounds like Thelemic magick.
6) Packaging, automation, build tools, devops, CI, Testing -seems too complicated. I just want to run an executable at the client or make a web app that does something. Why all this process?6
New Phrack article. Given they release like one a year, figured it warranted posting a link.
Title : Hypervisor Necromancy; Reanimating Kernel Protectors
Author: Aris Thallas
Date: 2020 Feb 14
"In this (rather long) article we will be investigating methods to emulate proprietary hypervisors under QEMU, which will allow researchers to interact with them in a controlled manner and debug them. Specifically, we will be presenting a minimal framework developed to bootstrap Samsung S8+
proprietary hypervisor as a demonstration, providing details and insights on key concepts on ARM low level development and virtualization extensions for interested readers to create their own frameworks and Actually Compile And Boot them ;). Finally, we will be investigating fuzzing implementations under this setup."
Ugh am so done with linux.
I dualbooted ubuntu 16.4 LTS alongside win10 on my new laptop 3 years ago. Back then , the whole os and kernel stuff were new for me, but once i understood how things work in it, i always found linux to be a superior alternative for doing any development related task than windows.
The way terminal gives us sheer raw power to handle services and applications ourselves makes everything easy in linux.
Wanna run a lamp server? Install all parts by yourselves. Problems with the lamp server? You are just 1 command away to know which service/package is causing issue. Some python module fucked up? You can go on checking every package present anywhere on your disk. No permissions? Sudo.
But recently i got so much fed up of its gui. I have gone from 16.4 to 18.4 to 20.4 , but no version seems to handle multiple gui s/w running parallely .
I usually have the requirement to open 2-3 windows of chrome with 30-40 tabs, 1-2 projects of Android studio and studio emulator. But this shit blows even with just 1 project open on studio and nothing else! The even the keyboard and mouse gets stuck when i studio is making a built.
And don't get me started on how slow my system becomes when switching b/w AS and chrome :''( . Maybe there's issue with the dual boot or because i gave very large swap/root partitions when i first dualbooted or something else , but i am in so much pain :/
Finally i went back to win10 a month ago and was a little surprised to find that it sucks a little less now. Aside from the ugly forceful updates, it has been a breeze for working . The builds take longer time (fuck windows defender), but My Android studio (and everything else) does not lag when switching between multiple processes. I even once ran an emulator instance and it was still working fine . The process management of windows is very good.
I have heard that mac is kind of in middle of the 2 and better than both providing rich process management and powerful terminal commands . Waiting for the day when i have enough money(or no longer require my kidney) to buy and maintain a MacBook :/19
There are too many but let's see.
When I was doing xperia P development I had this issue that it would not install via TWRP cause it would not recognize the phone.
For 2 months I was releasing a manually edited zip file with the hack to fix that bug until I finally fixed it.
Or when I had to hex edit the camera blob cause it was sending a command that new HAL and driver in kernel interpreted as hard reset. I didn't know where the F and why the fuck it's doing it so for like a week I had hacked blob on my phone.
And sadly many many more.
I've been noticing that without any specialization development can become repetitive, as in, a bunch of fancy ways of doing the same CURD operations.
Something that just calls me is low level development, wether it is embedded development (microcontrollers and such) or Linux Kernel and device drivers. I've been polishing my C skills for a while now and started to look into kernel development and uff, is it overwhelming!
I just wanted to see if some of you guys are or had experience in system development and how you got there. Thx!3
If Tetsuya Nomura was directing the development of the linux-kernel, we wouldn't have got Linux 5 but
Linux IV.20.9 and 4.14 LTS would be 4.14.5 Final ReMix with added features that contradict later kernel-development.
I just got a call from Satya. He informed me that Microsoft has successfully acquired the Linux kernel and all future development will be closed sourced.
Here's a sneak peek of the official announcement:
There will be a newer version released tomorrow that will include the Windows desktop environment as well as patch a critical 0-day security flaw that was recently discovered in all versions of Linux.
To prevent exploitation, we will activate a kill switch which will disable all systems running any flavor of Linux next week.
Thus we advise you upgrade ASAP, existing users can get the latest version online for $500.8
The fact that the latest Linux kernel added support for 32 bit systems to function past 2038 is one of the most baffling things I've ever seen in development history... Not saying it's a bad thing... But.... Why3
Joined Eudyptula Challenge yesterday. Who else is trying to be part in the Linux kernel development or already is ?
postmarketOS port day uhmmmmmmmmmmmm 3.
Surprisingly to get a port of it you just need kernel which is hella awesome. What isnt awesome is the boot image of the 2012,2013 sony devices.
This is gonna get technical. If you dont care about it just skip it.
So sony decided that using ELF format for boot image is good idea. And TBH they were kinda right. ARM processor after all can execute ELF natively and work efficiently. Whats the issue then you might ask. Well kinda simple. Normal AOSP boot images are not ELF format. (They kinda are but arent at the same time. Lets just say they contain ELF image at some point). This is of course the google way. Overenginner everything you can.
So why is the ELF image format the issue ? Well to produce this elf image you need special script provided by sony that can make ELF format boot image that you have to compress properly afterwards. OK this sounds OK so whats the issue ? AOSP or well android sources do not support this out of the box. What we need to do is to create a custom way of creating that boot image. Which isnt hard but is just extra unneeded work.
Now when you flash the image it all works as expected.
But what happens if the format isnt right ?
Device will just show blank screen and reboot and so on forever (Or well until battery dies).
Why it cant boot other images is kinda self explanatory. Its different format. OK so it wont boot anything other then custom boot image OK.
Now what does postmarketOS (PMOS from now on) do ?
Well it creates basic AOSP bootimage with custom ramdisk. Which is all fine on most devices. Except here of course.
So that wont boot.
You may just say why dont you just convert it ? Well it isnt that easy. Each elf file has its own header. Which is for that kernel and etc. If it doesnt match eyyyy no boot. So we cant just convert it that easily.
Why not just use the script ? One could do that of course. ( i have not yet done that as its almost midnight and i have test tomorrow). Issue here could be that it still doesnt boot which would mean that something else is wrong. It will most likely work tho. (hopefully)
What i would need now is UART. (Yes phones have UART if you didnt know)
What is that ? Way to communicate and debug the kernel when something is wrong to the point where nothing works. Issue is my UART to USB converter is who knows where and the new one isnt going to be here that soon.
Thats all for now i guess. Long one i know. But well that is the behind the scenes of those kind of things. It isnt as simple as one may think sadly.
It woudlnt be my first and sadly not even last time i would get PM saying to hurry the development or some other shit like that. (Yes people are like that). And when you get issue it isnt as easy as opening duckduckgo and searching it as most likely it will return something which is far from what you are doing.
So if you are that kind of person that sends PMs to devs on XDA to hurry the development or asking when its gonna be done. STOP. Please just stop. We have real life too (I know its hard to believe but well its there) and doing this isnt the only thing we do. Its gonna be done when its gonna be done. And i hope this is gonna at least put some perspective for those people to not send those kinds of messages to us. (We read them. We just dont reply to shit)
TL;DR Sony decided to use different format of bootimage on 2012/3 devices which is pain to generate properly.2
I first started off with a pentium 3 machine in 2004, started gaming on warcraft 3 and maplestory and eventually got addicted to it because nothing else was interesting in my life. Okay extending this story, i eventually got banned, dad smashed 1000 bucks of his money by kicking and throwing it. Years later (i think it was 2011), i got hold of my first Android device. This time round, things were different and I spent 6 months with it problem free and then it started lagging. Google search led me to XDA, started modding the device, eventually startedgetting interested about how people do it and voila, C prog, write some management drivers for malloc and etc. Eventually i dropped kernel development 3 years later and now im in .NET Core.5
My mind is not stable.
Office work requires - Linux Internals (knowledge on kernel, Device Drivers, Yocto etc) & Networking ( security ) -> CR on C/C++
Office work also requires - Python for tool development
My personal project requires - NodeJs, React
And I also want to appear for Interviews so also require DS & Algorithm
I hope you don't judge me3