Details
-
AboutBad code factory. Doing my best.
-
SkillsExperience with Python, BASIC, a sprinkling of assembly and C, and a mountain of edge cases.
-
LocationYes. No? Maybe.
-
Website
-
Github
Joined devRant on 8/9/2018
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
-
Ghidra won't let you relocate a function or data label and update all pointers to it, so I made a tool where that is its only fucking job. That's all it does. Open a textfile, drop in symbol names, paste in hex strings, change address bytes in the hex strings to other symbol names, hit GO. why is this not a feature built into these goddamn RE tools, when people have been doing this manually since before game piracy was a thing on home computers?2
-
"X is dead! My project has just gone up in smoke, because docs/programs have been permanently lost."
This time, it's Sun. No one's dumped their compiler package CDs for Solaris, and now you can't order them. Whoops! There's like 5 versions of Solaris that have SDKs and docs that are just gone.
Dump your CDs, you stingy motherfuckers. "oh they're stamped, they have my name in them, i paid $600 for the license" do it anyway, because time is unrelenting and the rot claims us all. we must run faster than it does, and you're just standing still.7 -
Another day, another 14 job applications that have been ignored.
Except one. I got an email back from one, but it was some spam filter system notifying me my address is now unable to send them emails.
Why exactly would you send an email to inform the sender they've been blocked???4 -
Oh boy, linux NFS bugs! this was supposed to be fixed in 2.x, but here I am, in kernel 6.1, same issue! `nfsiod` hangs, can't SIGKILL/SIGSEGV/SIGXCPU as root, `/proc/$pid/maps` is empty, strace/gdb are denied while running as root for only this process, `/proc/$pid/stack` only shows a single kthread that's stuck waiting for a fork to return, and... what the hell is `rescuer_thread`? apparently, deprecated in kernel 3.10, whatever the hell it is... wait, how did this even make a call without memory?
it's gonna be one of those days, isn't it?2 -
My dad asked a facebook group for help decoding a calibration script I wrote for the new 3D printer, instead of just asking me, and every single person yelled at him that "oh that's so dangerous if you didn't write it yourself don't run it, if you can't manually write gcode sell your printer" etc.
why are these groups always full of degenerate assholes? (and why do they legitimately think calibrating a printer has to be done by manually writing bits to the EEPROM with a needle, or it's not worth having a printer?)4 -
More linux driver woes:
Driver is passed a file position and byte count when asked to read from a device. Sounds easy, right? FUCK no.
For reads, driver is passed struct `filp` with field `f_pos`, a direct pointer to the same struct field, int `count` as a number of bytes to read, and `buf` to return those bytes with. Problem is, requesting, say, 256 bytes from location 10000000h will give the driver `filp->f_pos = 0`, `f_pos = 256`, and `count = 0`. I don't know how to fix this and there's NO help for this shit. None whatsoever.
This shit, right here, is why Linux drivers suck ass.4 -
I have, once again, figured out why I keep dropping C as a language. The answer is because the errors are incredibly unhelpful and actively want to implode your brain.
Examples currently being spat out by gcc for my driver:
`error: conflicting types for ‘block_read’; have ‘ssize_t(struct file *, char *, size_t, loff_t *)’ {aka ‘int(struct file *, char *, unsigned int, long long int *)’}`
`note: previous declaration of ‘block_read’ with type ‘ssize_t(struct file *, char *, size_t, loff_t *)’ {aka ‘int(struct file *, char *, unsigned int, long long int *)’}`
`error: initialization of ‘ssize_t (*)(struct file *, char *, size_t, loff_t *)’ {aka ‘int (*)(struct file *, char *, unsigned int, long long int *)’} from incompatible pointer type ‘ssize_t (*)(struct file *, char *, size_t, loff_t *)’ {aka ‘int (*)(struct file *, char *, unsigned int, long long int *)’}`
Go character by character for those types as listed, and tell me where they differ, because I can't find it.10 -
Finally doing development things again... but maybe choosing to work on a Linux port for a Nintendo console was a bad idea. I don't think any of this is gonna get merged up any time soon...
why are these things always so ridiculously cursed?3 -
I wrote a file transfer thing to appease the initial idea that keeps coming back into my head every so often, like it's trying to haunt me. Problem: No mobile provider will let me test it, as it's meant to throw disgusting numbers of SMS messages at someone waiting for them. How many, you ask? Well, 1MB of data translates to about 8100 "standard-length" SMS messages. (Standardized length, non-"long" SMS messages are, at best, 70 UCS-2, 140 ASCII, or 160 7-bit characters.) It does work, though, as if I just write out all the SMS messages to files and read those in (in place of actual SMS messages, different delivery of the same data) it works flawlessly.
Why would I ever wanna make this? Well, T-Mobile seems to be more concerned with building new cell towers, rather than fucking fixing the ones currently working. The mobile data component usually dies for 8 or 9 hours a day in this medium-size city, but SMS still works, so... just use that to transfer data!5 -
(Warning: This rant includes nonsense, nightposting, unstructured thoughts, a dissenting opinion, and a purposeless, stupid joke in the beginning. Reader discretion is advised.)
honestly the whole "ARM solves every x86 problem!" thing doesn't seem to work out in my head:
- Not all ARM chips are the same, nor are they perfectly compatible with each other. This could lead to issues for consumers, for developers or both. There are toolchains that work with almost all of them... though endianness is still an issue, and you KNOW there's not gonna be an enforced standard. (These toolchains also don't do the best job on optimization.)
- ARM has a lot of interesting features. Not a lot of them have been rigorously checked for security, as they aren't as common as x86 CPUs. That's a nightmare on its own.
- ARM or Thumb? I can already see some large company is going to INSIST AND ENFORCE everything used internally to 100% be a specific mode for some bullshit reason. That's already not fun on a higher level, i.e. what software can be used for dev work, etc.
- Backwards compatibility. Most companies either over-embrace change and nothing is guaranteed to work at any given time, or become so set in their ways they're still pulling Amigas and 386 machines out of their teeth to this day. The latter seems to be a larger portion of companies from what I see when people have issues working with said company, so x86 carryover is going to be required that is both relatively flawless AND fairly fast, which isn't really doable.
- The awkward adjustment period. Dear fuck, if you thought early UEFI and GPT implementations were rough, how do you think changing the hardware model will go? We don't even have a standard for the new model yet! What will we keep? What will we replace? What ARM version will we use? All the hardware we use is so dependent on knowing exactly what other hardware will do that changing out the processor has a high likelihood of not being enough.
I'm just waiting for another clusterfuck of multiple non-standard branching sets of PCs to happen over this. I know it has a decent chance of happening, we can't follow standards very well even now, and it's been 30+ years since they were widely accepted.5 -
Alright, listen. If you come up with a crackme that requires someone to wait for something to happen for, say, 250 hours in real-time... but runs on a Gameboy or whatever other retro console? You're gonna have a bad time.
I'm on a Ryzen 5 2600, and with the most accurate Gameboy emulators out there barely running in Wine I can hit 1000x normal speed if I unlock the emulator's framerate. That 250 hours just became like 45 minutes without having to actually *do* anything. This even applies to "lol reverse this seeded generation thing" if I can try a few million combinations/sec just by incrementing some var in memory and re-running your code. (Yes, i'm literally doing that now. Yes, i'm blowing through this 28-bit keyspace like it's nothing. YES, THEY GAVE ME THE LAST NYBBLE FOR FREE!)3 -
my brain buzzes more than ever, i can't get my sleep schedule under control, i can't find the motivation to do literally anything unless someone pretty much forces me to do it, i can barely focus on anything, my hands constantly refuse to work properly...
why? why must i be like this? sure, i've gotta do this and that and the other, but none of it ends up getting done because i'm too busy staring at a fucking wall, lost in my own head, and everything gets fucked up.
i can't even be fucked to go for walks or anything because i don't know the neighborhood and there's such a high crime rate here, nothing i'm not used to but still...7 -
How the fuck do you people develop on Windows? 30GB of Visual Studio dependencies to get a compiler going, now this???8
-
Why the fuck is Seagate's official bootable HDD/SSD toolkit 32-bit??? It's bad enough that it's TinyCore, but it's 32-bit, so even while booting it tells you to fuck off if a drive has >2TB worth of LBAs, but it's meant for ALL their drives! Their Twitter support was predictably useless, too, and was just "we don't support running the bootable disc off of anything larger than 32GB" and "we don't officially support Linux formatted disks in our tools" (neither of which were even remotely close. The first one I can understand, it was an untrained knee-jerk reaction to a number they recognize, but the other one...)6
-
Wow, i've been gone a while, huh?
I partly refactored that shitty emulator of mine, and after some tweaking and such, got it using a class and such instead of a bunch of global vars. However, it runs slower and got 1KB larger... how did practicing "better" coding habits make it worse?5 -
my sleep issues are getting out of hand. i have insomnia and sleep apnea, and materials for my APAP are expensive and nothing that won't fuck up my brain over time (i.e. any sleep aid that isn't melatonin, pretty much all of them make you lose brain matter density over time, and melatonin does jack shit) is strong enough to knock me out. at this point i'm getting one 5AM-4PM sleep cycle a week. i can't exactly fix it as i'm expected to be awake and present during the day, so i'm stuck sucking down caffeine all week during the day to try and be awake for 8 hours. i'm not even employed, so it's sitting and doing fuck all during that time.
goddammit why do i have to go through this shit8 -
apparently my bank's password length limit of 10,000 is too much for paypal's app to handle and it fucking imploded. sadly, no screenshots were allowed by the app, but it fucking broke so hard it spat logs and shit at me with no formatting or anything. it was NUTS dude8
-
so I found out that i'm too stupid to understand floats... I look at the structure and my brain immediately smooths over. I just can't understand it for some reason. Even better: this shitbox calculator requires them for LITERALLY EVERYTHING. I can't even have it take a register and turn it into a float or anything, so I can't even operate on anything without massive assembly routines, and I just don't understand what the fuck any of it does or means.
i'm really not cut out for a programming job am i5 -
TI can't be competent enough to use their own fast circle routine that they implemented in their calculator but they have the braincells required to make the "update the screen" routine "rst 28h"?
i thought it was gonna require a flipped I/O bit or a farcall to another Flash bank that takes a few thousand cycles or something, considering how much sense any of this shit makes inside...2 -
i've abandoned an old project i did for a retro computing community (i've posted about it here before) because I can't find any motivation to do literally anything anymore, and people in said community were waiting on it. If you want to check it out, it's too big for GitHub, so I uploaded it to anonfiles. I don't know if I can post a link to that in a rant though, so if anyone's interested i'll post the link in the comments once asked.4
-
I know people are upset over this whole "they're raising the minimum wage to $15/hr" thing but consider the following:
if your employer doesn't raise your wage/salary to higher than that in response, they were only paying you the minimum possible amount to be attractive for your position, and would've only been paying you minimum wage if they could've. They really don't value you as a worker.
note: apparently some businesses have to be approached by you for a "raise" before they can do this in some positions even if they want to raise someone's wage/salary, or so i've heard?9 -
finally got a Powerline set, so I can actually *use* my desktop upstairs.
...wait, my ethernet isn't working.
look for the chipset's proper driver package...?
"oh it installs the wrong driver by default, which doesn't work on kernel 5.x. Use <other driver, DKMS>"
"oh it won't see your device? downgrade to <version>"
DKMS error: "<snip>/linux-headers-5.10<whatever>/Documentation/Makefile" doesn't exist
fuck it, plug laptop into powerline adapter
less useful than current situation
i'm going to fucking cry8 -
An entire platform was removed from Google Play, and may be removed from other markets too, not for something they did, but because of the POLITICAL ALIGNMENT OF A MAJORITY OF ITS USERS.
"the users are evil" you're right, let's ban Tor, Snapchat, Whatsapp, Twitter, Facebook, etc. because they've got a metric fuckton of "evil users" too. Oh. Wait. No, that's not how that works, is it?
https://usatoday.com/story/tech/...57 -
At some point I need to do an older project i've had on hold a while, but it'd require writing my own ROM patch system as a major step in completing it, as i'd need to dynamically patch stuff into older games based on system, which current patch formats don't allow for. (This project will also help me learn a few things I need for yet more projects I've got stashed away, so it needs to happen eventually.)
Now, the interesting part: the patch format. I was debating on whether to use binary data, like IPS/BPS and similar formats do, which would be easier to implement... but if I were to have plaintext patches, you'd be able to not only understand what's happening, but also have things like scripting and conditionals and user-defined options and such. This would be WAY harder to implement, slow as fuck, and require an assembler per-target-system, either external or internal... but it'd be transparent, editable, and hella extendable.
This would all happen after I'm both over my burnout AND done chewing through my current stack of projects and such, of course, but still... which sounds better to you, dear reader?2 -
the usual: suffer in the name of curiosity.
all jokes aside, my goal is to finish several projects and take a long-ass break from it all to fix this burnout, and maybe even find a job somewhere in there too? hopefully? stretch goals? -
"hey the hi-8 camcorder's working again, can you get this PCI tv tuner card working so we can transfer the tapes to a digital format"
here we go again...
no stickers, so throw it in a machine, boot debian's installer, switch TTYs, "lspci": okay, a pair of "Brooktree BT878" devices. Drivers? ..."support built into most kernels since 2.4." Didn't they remove a lot of legacy hardware support from 5.x or 4.2x or so? Debian works with it... oh, "Debian Sarge." Kernel 2.6. FUCK... well, we'll try Debian 10.6 latest and see what happens.
Currently installing Debian 10.6 on a victim machine from a nonfree ISO to test this. (goddamn, how many times have I installed debian onto something?) Hopefully I don't have to go find a Debian oldoldstable ISO or anything...2 -
finally got TI to cough up their SDK and I noticed there's no compiler or linker or anything. Turns out I need to use TASM.
...TASM is for MS-DOS or compatible. I'm on Linux.
Well, it went poorly, as usual, specifically like this:
- tried to automate building with DOSBox config and Python script: output binary always corrupted. Manually repeated, TASM mangles output on DOSBox every time. No PCem or 86box, and i'm on a Ryzen, so no KVM DOS. Out of luck there.
- TASM Linux build or wrapper? No build, but there is a wrapper! ...wait, it needs... 4 things written by random people to be made from source. I mean, that's not actually that bad... oh, after setting all of them up (and struggling through some autoconf/automake bullshit, one of the programs only had source for a 2.x kernel and autoconf/automake were not happy about it) it fails because one project's been worked on a lot more and dropped support for working with the other 3... goddammit.
- Community SDK? Several options for this... but all of them need .NET 2 to run on Win9x, don't work in Wine, or require... hey look, TASM! GODDAMMIT!
- DOS on a real machine? It's a massive bitch to shuttle files to and from a real DOS machine quickly and I can't take 30 minutes between builds that take me 4 minutes to change enough to need tested again.
why must i suffer like this22