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
Search - "dirty mind"
-
I've been fortunate enough to work with a lot of awesome people early into my career.
At the company I worked where I met @trogus, I became friends with a few people, including Tim, that I think were my favorites. It was a really fun bunch and though it may sound immature, but a lot of the times it felt like we were kids so for me coming out of college it was awesome.
There's so many stories from working with that bunch that come to mind for me. One of my best friends there was this guy "Dirty Devin." He started around the same time I did. When I first met him he seemed really boring and professional. After getting to know him, and after he'd been at the company for a few weeks, his actual personality started to show and he was like a child (in the best way possible) and was absolutely hilarious/made the work place a blast.
Our office had a ping pong table and neither Dirty Devin or I had ever really played. We started playing against each other and we both very quickly got really good.
I also met a guy named Botond (he's the one in the photo). He was very similar to Dirty Devin. Lots of crazy stories but the photo is actually a really funny one - we both got to work a few minutes early one day. And we couldn't get into the office. We kept trying to enter the door code and it wouldn't work. We kept joking that we must both be fired. Turned out that they had fired someone the night before and didn't bother to send out the new door code :/
And of course, Tim. I think we clicked pretty early on and had the same friend group at the company.2 -
So I had my exams recently and I thought I'd post some of the most hacky shit I've done there over here. One thing to keep in mind, I'm a backender so I always have to hack my way around frontend!
- Had a user level authentication library which fucked up for some reason so I literally made an array with all pages and user levels allowed so I pretty much had a hardcoded user level authentication feature/function. Hey, it worked!
- CSS. Gave every page a hight of 110 percent because that made sure that you couldn't see part of the white background under the 'background' picture. Used !important about everywhere but it worked :P.
- Completey forgot (stress, time pressure etc) to make the user ID's auto incremented. 'Fixed' that by randomly generating a user id and really hoping during every registration that that user ID did not exist in the database already. Was dirty as fuck but hey it worked!
- My 'client' insisted on using Windows server.Although I wouldn't even mind using it for once, I'd never worked with it before so that would have been fucked for me. Next to that fact, you could hear swearing from about everyone who had to use Windows server in that room, even the die hard windows users rather had linux servers. So, I just told a lot of stuff about security, stability etc and actually making half of all that shit up and my client was like 'good idea, let's go for linux server then!'. Saved myself there big time.
- CHMOD'd everything 777. It just worked that way and I was in too much time pressure to spend time on that!
- Had to use VMWare instead of VirtulBox which always fucks up for me and this time it did again. Windows 10 enjoyed corrupting the virtual network adapters after every reboot of my host so I had to re-create the whole adapter about 20 times again (and removing it again) in order to get it to work. Even the administrator had no fucking clue why that was happening.
- Used project_1.0.zip etc for version control :P.
Yup, fun times!6 -
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 -
I think I just blew my own mind here.
Look at this:
Class SomeClass
{
_call($functionName, $arguments)
{
return call_user_func(array('SomeClass','uselessMethod'), 'method');
}
method($foo)
{
return new Adapter($foo)->execute($this);
}
uselessMethod()
{
return $this->method(__FUNCTION__);
}
}
so __FUNCTION__ resolves to
Caller:
You can run that code, whether you comment out uselessMethod, or not.
Adapter is a function that looks for what class to call depending on a database value
and execute the call.
So api basically uses a chain call to do stuff like this in controllers, here's how
I call the above:
$someObject = (new Class($object))->uselessMethod()->doSomething()->doSomethingElse();
But like, eventually my code matured to where all those methods in the chain call have the same one line return that calls my adapter to find the logic to run.
So, basically, I can now have a class with headless function calls that calls a directory of other classes, that are all defined in a contract somewhere. So as long as those classes
all adhere to the contract, it will never return an error.
I can't think of any reason to do this, other than my setup, and I have a sneaky feeling,
as dirty as this trick is, that there's a bad reason my code has come to being able to do this.
Maybe wrong strategy pattern from the beginning?
I'm sure it'll come to me like 3 days from now..3 -
I’m a long time Objective-C and Swift developer...I’ve been asked to “research” a project using React Native.
It felt dirty to be writing an iOS app using JavaScript.
I’m still not sure why and how React Native is better/faster than native Swift.
Someone change my mind...11 -
To whoever builds electron boilerplates.
STOP ADDING FUCKING JQUERRY AND WEBPACK TO THIS SHIT, I DONT EVEN USE YOUR BULLSHIT BUT OTHERS DO AND THATS WHY SO MANY ELECTRON APPS SUCK. WHO IN THEIR RIGHT MIND THINKS THAT THIS MADE SENSE PUT YOUR CSS LOADER ANAL PLUG IN TO YOUR ANUS AND BUNDLE THEM TO YOUR SINGLUAR BDSM.JS WITH BROWSER BACKFALLS AND BETTER MAKE SURE TO WHIPE YOUR DIRTY SHITFACE WITH A FULL BLOW CSS RESET BETTER MAKE SURE THERE IS NO ACCIDENTAL MOZILLA STYLE IN YOUR CHROME.3 -
Me: Who wrote this fu$$in mess of code? Never mind, we will get the dirty hacker.
*Runs git blame*
*Silence*
Me: What a innovative way to solve the problem! I'm a genius! -
¡rant|rant
Nice to do some refactoring of the whole data access layer of our core logistics software, let me tell an story.
The project is around 80k lines of code, with a lot of integrations with an ERP system and an sql database.
The ERP system is old, shitty api for it also, only static methods through an wrapper to an c++ library
imagine an order table.
To access an order, you would first need to open the database by calling Api.Open(...file paths) (yes, it's an fucking flat file type database)
Now the database is open, now you would open the orders table with method Api.Table(int tableId) and in return you would get an integer value, the pointer.
Now for the actual order. first you need to search for it by setting the search parameter to the column ID of the order number while checking all calls for some BS error code
Api.SetInt(int pointer, int column, int query Value)
Then call the find method.
Api.Find(int pointer)
Then to top this shitcake of an api of: if it doesn't find your shit it will use the "close enough" method of search.
And now to read a singe string 😑
First you will look in the outdated and incorrect documentation given to you from the devil himself and look for the column ID to find the length of the column.
Then you create a string variable with ALL FUCKING SPACES.
Now you call the Api.GetStr(int pointer, int column, ref string emptyString, int length)
Now you have passed your poor string to the api's demon orgy by reference.
Then some more BS error code checking.
Now you have read an string value 😀
Now keep in mind to repeat these steps for all 300+ columns in the order table.
News from the creators: SQL server? yes, sql is good so everything will be better?
Now imagine the poor developers that got tasked to convert this shitcake to use a MS SQL server, that they did.
Now I can honestly say that I found the best SQL server benchmark tool. This sucker creams out just above ~105K sql statements per second on peak and ~15K per second for 1.5 second to read an order. 1.5 second to read less than 4 fucking kilobytes!
Right at that moment I released that our software would grind to an fucking halt before even thinking about starting it. And that me & myself and I would be tasked to fix it.
4 months later and two weeks until functional beta, here I am. We created our own api with the SQL server 😀
And the outcome of all this...
Fixes bugs older than a year, Forces rewriting part of code base. Forces removal of dirty fixes. allows proper unit and integration testing and even database testing with snapshot feature.
The whole ERP system could be replaced with ~10 lines of code (provided same relational structure) on the application while adding it to our own API library.
Best part is probably the performance improvements 😀. Up to 4500 times faster and 60 times less memory usage also with only managed memory.3 -
So I work at a startup working on “cutting edge” technology with two other devs. Our lead engineer is an interesting fellow. The guy never ever writes a single line of code, just looks for similar projects online and receives a lot of credit for it, I have to hand it to him though, he has an ability to scheme through information and pick the gist of what’s going on but when it comes to detail, he’s seriously lacking. We recently started a projects a couple of weeks back and it was supposed to be an easy two days of hacking and we would be done but instead the guy looks for code online copies it I change the necessary variables to match the use case then it doesn’t work. So we’ve spent weeks debugging this code because someone is afraid to get their hands dirty. I can’t complain to the bosses because they’re not techies and the trust him more since I’m still new to the company.
I love their attitude though, they honestly believe they have a chance against some giants in tech and from the actual talent I’ve witnessed they’ll only get there through sheer luck.
I have to sit there and listen to them shit on more successful tech companies and that they have better ideas.
Maybe someone can change my mind on this issue as I’m still young and new to this industry.8 -
So what if my screen is dirty? I'm not asking you a question, not to look at it, mind your own business!
-
The chief came with a new idea.. something that runs ‘a side’ of our main project as some sort of manager. The database wasn’t designed with that in mind..
Now I’m wondering if I’m having issues because I could’ve designed the database better so that this wouldn’t be an issue or if I shouldn’t “blame” myself, because that wasn’t the initial idea. 🤷🏻♂️
We had to do a lot of migrations to keep adding and changing for the “new ideas” and now the database is a mess.. but it’s like.. too “big” to just start a new clean database structure, but it could optimize everything and make the backend easier/cleaner instead of dirty hacks/queries to combine all the different features.
As a ‘bad’ example, but the idea started as a todo list, migrated to a social network and is now migrating to something like smartschool to be able to manage users and groups, but with different features than the ‘social network’ had... I’m wondering what’s next..2 -
Every time I'm working on a task as soon as I need to write some hack, dirty code, that does work, but creates overhead in the run time performance or makes the project a mess. I stop and can't continue with this task...
it locks my mind and progress where after a while. I simply give up and do it anyway or give someone else the task.
How to deal with task that have no clean solution?1 -
God this job is slowly sucking my soul out of my body.
My mind feels as if it is bleeding all it's vitality out of my fucking ear.
Now having said that which of you bastards just got horny ?
Don't be shy dirty trash.22