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 - "why did this compile"
-
Linux sucks.
Now now, chill. I'm using it as my main OS for a few years now. I know what I'm talking and this title is a bit click-baity, but this just has to go out there:
1. It's usable as a Windows replacement just fine - FALSE. XFCE4 is years old and buggy as hell especially on multi-monitor set-up, Gnome3 gets stuck more often than my Windows 98 machine used to, KDE is like a rich kid on meth. Plug in Bluetooth headphones? Well no, sorry, you have to research that online, since you'll probably need to install some packages for it to work. Did I say "work"? Well no, because after more research you realize that Debian on Gnome3 on gdm3 launches pulseaudio on its own, so you have 2 instances of pulseaudio, and one of them is stealing your headphones sometimes and you either have no sound or shitty sound. How do I know that you ask? The same way I know everything else - every time you try to do something new on any Linux, it involves a ton of research. Exciting research, don't get me wrong, but at this point it looks more like a toy than a reliable desktop computer operating system.
2. And why am I using pulseaudio? Why not alsa? years ago people were discussing on forums that pulseaudio is old and dead, yet here we are with new LTS release of Ubuntu still shining with Pulseaudio. How about several different service management systems being deprecated by new ones, each having different configurations and calling methods? Apparently systemd is old and lame now. It's a mix of 10 year old software that works badly, with a 5 year old replacement that works worse, somehow trying to live under the same roof. Does it work? Ask my headphones who sound like a fucking dial-up modem.
3. Let's talk about displays, shall we? xorg is old and deprecated, right? We got Wayland that's mostly stable. Don't know what that is? That's just basic knowledge for Linux. And when you try to install network-manager, it also tries to install Mir toolkits. Because why the fuck not install 3 display managers when you want a network manager, of which one is old and dying, one is young and stupid, and another is an infant that died of cancer?
4. Want to integrate with Google Drive? Yeah, there's a tool that mounts the drive as a local directory. Yeah only for Ubuntu. Want it on Debian? You need to compile it. Oh wait, it's on Ocaml, because fuck mainstream languages, we're hipsters. How do you compile Ocaml? Well you need to have Ocaml on your system, dummy. How do you do that? Well you need to compile Ocaml. Ok, how do I do that? Well, git clone, download and install some dependencies, configure, make... oh sorry, you're using libssl1.0.2g when you need libssl1.0.1f, nope, sorry, won't work. Want to install libssl1.0.1f? Why? You already have the "g", stupid! Want to remove libssl1.0.2g? Bye-bye literally everything that you have on your PC. But at least you got the "f". Does it work now? Well no, because you need libssl1.0.2g for another dependency to work.
And all I ever wanted was to get a fucking document from google drive (not nudes, I promise).
5. Want to watch a movie? Let me tear that screen in half and make the bottom half late by a couple of frames, because who needs vertical sync, right? Oh you do? Well install the native drivers maybe. Oh you have? Welcome to eternal Boot to Recovery mode, motherfucka!
---------------------------------
Yeah, most of the times things work just fine. But the reason I know what those things are and how they work is not curiosity. The reason that I know the inner workings of Linux much better than the inner workings of Windows, is because in those few years that I've been using it full time, it has caused me 10 times more headache than I have ever experienced with other systems. And it's not the usual annoyances like "OMG it rebooted when I didn't ask it to", but more like "Oh, it won't work and I need 2 days to find out why" kind of stuff, because even if you experience the same thing again, it's always caused by some new shit and the old solution won't work any more.
I still love it, and will continue to use it. I don't know why really. Maybe because I'm not afraid of fucking it up any more? Maybe because I can do what I want in it and recovering will be easier than on Windows?
It's a toy for me, after all these years. And I also use it for professional reasons.
But whenever someone presents it as a better alternative to Windows, I just want to puke.51 -
Step 1: Run to the store to buy a USB card reader because all of a sudden you have a need to use a 16Mb CF card that was tossed in a junk drawer for 20 years (hoping it still works, of course), but that was the easy part...
Step 2: Realize that the apps - your own - you want to run on your new (old) Casio E-125 PocketPC (to re-live "glory" days) are compiled in ARM format, not MIPS, which is the CPU this device uses, and the installer packages you have FOR YOUR OWN APPS don't include MIPS, only ARM (WHY DID I DO THAT?!), so, the saga REALLY begins...
Step 3: Get a 20-year old OS to install in a Hyper-V VM... find out that basic things like networking don't work by default because the OS is so damn old, so spend hours solving that and other issues to get it to basically run well enough to...
Step 4: Get that OS updated so that it's at least kind/sorta/maybe (but between you and me, not really!) safe online, all without a browser that will work on ANY modern site (oh, and good luck finding a version of Firefox that runs on it - that all took a few hours)...
Step 5: Okay, OS is ready to go, now get 20-year old dev tools that you haven't even seen in that many years working. Oh, do this with a missing CD key and ISO's that weren't archived in a format that's usable today, plus a bunch of missing dependencies because the OS is, again, SO old (a few MORE hours)...
Step 6: Get 20-year old code written in a language you haven't used in probably almost that long to compile, dealing with pathing issues, missing libs, and several other issues, all the while trying to dust off long-dormant knowledge somewhere in the deep, dark recesses of your brain... surprisingly, it all came back to me, more or less, in under an hour, which lead to...
Step 7: FINALLY get it all to work, FINALLY get the code to compile, FINALLY get it transferred to the device (which has no network capabilities, by the way, which is where the card reader and CF card came into play) and re-live the glory of your old, crappy PocketPC apps and games running on the real thing! WOO-HOO!
Step 8: Realize it's 3:30am by the time that's all done and be VERY thankful that you're on vacation this week or work tomorrow would SSUUCCKK!!!!
Step 9. Get called into work the next day for a production issue despite being tired from the night before and an afternoon of errands, lose basically a whole day of vacation (7 hours spent on it) and not actually resolve it by after midnight when you finally say that's enough :(
Talk about your highs and your lows.6 -
"four million dollars"
TL;DR. Seriously, It's way too long.
That's all the management really cares about, apparently.
It all started when there were heated, war faced discussions with a major client this weekend (coonts, I tell ye) and it was decided that a stupid, out of context customisation POC had that was hacked together by the "customisation and delivery " (they know to do neither) team needed to be merged with the product (a hot, lumpy cluster fuck, made in a technology so old that even the great creators (namely Goo-fucking-gle) decided that it was their worst mistake ever and stopped supporting it (or even considering its existence at this point)).
Today morning, I my manager calls me and announces that I'm the lucky fuck who gets to do this shit.
Now being the defacto got admin to our team (after the last lead left, I was the only one with adequate experience), I suggested to my manager "boss, here's a light bulb. Why don't we just create a new branch for the fuckers and ask them to merge their shite with our shite and then all we'll have to do it build the mixed up shite to create an even smellier pile of shite and feed it to the customer".
"I agree with you mahaDev (when haven't you said that, coont), but the thing is <insert random manger talk here> so we're the ones who'll have to do it (again, when haven't you said that, coont)"
I said fine. Send me the details. He forwarded me a mail, which contained context not amounting to half a syllable of the word "context". I pinged the guy who developed the hack. He gave me nothing but a link to his code repo. I said give me details. He simply said "I've sent the repo details, what else do you require?"
1st motherfucker.
Dafuq? Dude, gimme some spice. Dafuq you done? Dafuq libraries you used? Dafuq APIs you used? Where Dafuq did you get this old ass checkout on which you've made these changes? AND DAFUQ IS THIS TOOL SUPPOSED TO DO AND HOW DOES IT AFFECT MY PRODUCT?
Anyway, since I didn't get a lot of info, I set about trying to just merge the code blindly and fix all conflicts, assuming that no new libraries/APIs have been used and the code is compatible with our master code base.
Enter delivery head. 2nd motherfucker.
This coont neither has technical knowledge nor the common sense to ask someone who knows his shit to help out with the technical stuff.
I find out that this was the half assed moron who agreed to a 3 day timeline (and our build takes around 13 hours to complete, end to end). Because fuck testing. They validated the their tool, we've tested our product. There's no way it can fail when we make a hybrid cocktail that will make the elephants foot look like a frikkin mojito!
Anywho, he comes by every half-mother fucking-hour and asks whether the build has been triggered.
Bitch. I have no clue what is going on and your people apparently don't have the time to give a fuck. How in the world do you expect me to finish this in 5 minutes?
Anyway, after I compile for the first time after merging, I see enough compilations to last a frikkin life time. I kid you not, I scrolled for a complete minute before reaching the last one.
Again, my assumption was that there are no library or dependency changes, neither did I know the fact that the dude implemented using completely different libraries altogether in some places.
Now I know it's my fault for not checking myself, but I was already having a bad day.
I then proceeded to have a little tantrum. In the middle of the floor, because I DIDN'T HAVE A CLUE WHAT CHANGES WERE MADE AND NOBODY CARED ENOUGH TO GIVE A FUCKING FUCK ABOUT THE DAMN FUCK.
Lo and behold, everyone's at my service now. I get all things clarified, takes around an hour and a half of my time (could have been done in 20 minutes had someone given me the complete info) to find out all I need to know and proceed to remove all compilation problems.
Hurrah. In my frustration, I forgot to push some changes, and because of some weird shit in our build framework, the build failed in Jenkins. Multiple times. Even though the exact same code was working on my local setup (cliche, I know).
In any case, it was sometime during sorting out this mess did I come to know that the reason why the 2nd motherfucker accepted the 3 day deadline was because the total bill being slapped to the customer is four fucking million USD.
Greed. Wow. The fucker just sacrificed everyone's day and night (his team and the next) for 4mil. And my manager and director agreed. Four fucking million dollars. I don't get to see a penny of it, I work for peanut shells, for 15 hours, you'll get bonuses and commissions, the fucking junior Dev earns more than me, but my manager says I'm the MVP of the team, all I get is a thanks and a bad rating for this hike cycle.
4mil usd, I learnt today, is enough to make you lick the smelly, hairy balls of a Neanderthal even though the money isn't truly yours.4 -
So recently I did a lot of research into the internals of Computers and CPUs.
And i'd like to share a result of mine.
First of all, take some time to look at the code down below. You see two assembler codes and two command lines.
The Assembler code is designed to test how the instructions "enter" and "leave" compare to manually doing what they are shortened to.
Enter and leave create a new Stackframe: this means, that they create a new temporary stack. The stack is where local variables are put to by the compiler. On the right side, you can see how I create my own stack by using
push rbp
mov rbp, rsp
sub rsp, 0
(I won't get into details behind why that works).
Okay. Why is this even relevant?
Well: there is the assumption that enter and leave are very slow. This is due to raw numbers:
In some paper I saw ( I couldn't find the link, i'm sorry), enter was said to use up 12 CPU cycles, while the manual stacking would require 3 (push + mov + sub => 1 + 1 + 1).
When I compile an empty function, I get pretty much what you'd expect just from the raw numbers of CPU cycles.
HOWEVER, then I add the dummy code in the middle:
mov eax, 123
add eax, 123543
mov ebx, 234
div ebx
and magically - both sides have the same result.
Why????
For one thing, there is CPU prefetching. This is the CPU loading in ram before its done executing the current instruction (this is how anti-debugger code works, btw. Might make another rant on that). Then there is the fact that the CPU usually starts work on the next instruction while the current instruction is processing IFF the register currently involved isnt involved in the next instruction (that would cause a lot of synchronisation problems). Now notice, that the CPU can't do any of that when manually entering and leaving. It can only start doing the mov eax, 1234 while performing the sub rsp, 0.
----------------
NOW: notice that the code on the right didn't take any precautions like making sure that the stack is big enough. If you sub too much stack at once, the stack will be exhausted, thats what we call a stack overflow. enter implements checks for that, and emits an interrupt if there is a SO (take this with a grain of salt, I couldn't find a resource backing this up). There are another type of checks I don't fully get (stack level checks) so I'd rather not make a fool of myself by writing about them.
Because of all those reasons I think that compilers should start using enter and leave again.
========
This post showed very well that bare numbers can often mislead.21 -
So I found this consulting job a while ago thinking that some extra cash while studying would be nice to have.
I meet with the guy, a researcher trying to start a business up, good for him I think, maybe we'll hit it off, continue working, why not? Except he has no clue how to write working code, all he ever did was writing matlab scripts he says, thats why he hired me he says.
Okay, fine, you do your job I do mine.
He hands me the contract, its about comparing two libraries, finding out which one is better suited for his job, cool, plots and graphs everywhere.
Except this is an unpaid job. YOU WHAT?! It's a test job. FINE. At least it'll look good on my resume.
We talk about the paid part where I'm supposed to scale the two libraries, looks good, as expected from an ML engineering perspective. It comes to payment. The dude has no idea how taxes work, says he has a set amount to pay and not a penny more. I explain with examples how taxes are paid, how you get reimbursed for them and so on. Won't budge. Screws me over.
Opens the door for other jobs I think, he'll learn next time I think and take the job.
Fast forward a month, 90% of the job done, he adds a third thing to compare. Gives a github link to a repo with 2 authors, last commit a year ago. There are links to a 404, claiming compiled jars. Fuck.
Not my first rodeo, git clone that shit, make compile, the works. The thing uses libs that ain't in no repo, that would be too easy. Run, error, find lib, remake all the things, rinse repeat.
The scripts they got have hardcoded paths and filenames for 2 year old binaries, remake that shit.
It works, at least I get a prompt now. Try the example files they got, no luck, some missing unlinked binary somewhere, but not a name mentioned. Cross reference the shit outta the libs mentioned on readme, find the missing shit, down it.
Available versions are too new, THE MOLDING NUTCRACKER uses some bug in an old version of the lib.
I give up. Fuck this. This ain't worth the money OR time. Wanker... -
TL;DR Pluralsight should be ashamed for taking 299 USD a year and writing some very low-quality quizzes.
I've always heard that Pluralsight is a great platform having some high quality courses, so I chose it as a benefit, as our company was giving us some budget for learning purposes. I've paid (or rather the company did it in the end) 299 USD for this year, which, I guess is not much for US standards, but it is a lot for Eastern European standards.
I didn't actually get to the point of watching any of the courses, but I started to use a feature called "Stack up", which is a long series of questions in a specific theme, like Java, Kotlin, C++, etc., accessible once a day. I must say, I'm amazed by the fact, that people pay quite a great amount of money and they get something so poorly made with a lot of errors and stupid questions.
Take the question from the included image for example. Not only that the 2 possible answers are repeated (and thus I failed to select the correct one from 2 equal answers), but the supposedly correct answer is also missing some type specifications. No Java compiler will compile it this way as far as I know. There would be at least 3 ways to fix it.
Then there is today's gem (should be included as first comment) as well, where the answer is wrong in both Chrome 96, Firefox 95 and Node v10. Heck, THIS IS one of the reasons why you should never use `var` in your JavaScript code, but always `let` and `const`!
So the courses on Pluralsight might be good, but I would be ashamed, if I were to release something like this. People might actually try to solidify their knowledge by solving these quizzes but instead of learning something useful, they will be left with some bullshit. I just don't get how could they release a feature with so much incorrect information and I am kind of disappointed, even if I didn't try the courses yet.9 -
Inspired by @NoMad. My philosophy is that technology is a means to and ends. We’re a tool oriented species. As it relates to software and hardware, they should be your means to achieve your ends without you needing to think. Think of riding a bicycle or driving a car. You aren’t particularly conscious of them - you just adjust input based on heuristics and reflex - while your doing the activity.
For a long time Software has been horrendously bad at this. There is almost always some setup involved; you need to front-load a plan to get to your ends. Funny enough we’re in the good days now. In the early days of GUI you did have to switch modes to achieve different things until input peripherals got better.
I’ve been using windows from 95 and to this day, though it’s gotten better it’s not trivial to setup an all in one printer and scan a document - just yesterday I had to walk my mother through it and she’s somewhat proficient. Also when things break it’s usually nightmare to fix, which is why fresh installing it periodically is s meme to this day. MS still goes to great lengths with their UI so that most people can still get most of their daily stuff done without a manual.
I started Linux in University when I was offered an intro course on the shell. I’ve been using it professionally ever since. While it’s good at making you feel powerful, it requires intricate knowledge to achieve most things. Things almost never go smoothly no matter how much practice you have, especially if you need to compile tools from source. It also has very little in the ways of safe guards to prevent you from hurting yourself. Sure you might be able to fix it if you press harder but it’s less stress to just fresh install. There is also nothing, NOTHING more frustrating than following documentation to the T and it just doesn’t work! It is my day job to help companies with exactly this. Can’t really give an honest impression of the GUI ux as the distros have varying schools of thoughts with their desktop environments. Even The popular one Ubuntu did weird things for a while. In my humble opinion, *nix is better at powering the internet than being a home computer your grandma can use.
Now after being in the thick of things, priorities change and you really just want to get things done. In 2015 I made the choice to go Mac. It has been one of my more interesting experiences. Honestly, I wish more distros would adopt its philosophy. Elementary only adopted the dock. It’s just so intuitive. How do you install an application? You tap the installer, a box will pop up then you drag the icon to the application folder (in the same box) boom you are done. No setup wizards. How to uninstall? Drag icon from app folder to trash can. Boom done. How to open your app? Tap launch pad and you see all your apps alphabetically just click the one you want. You can keep your frequent ones on the dock. Settings is just another app in launchpad and everything is well labeled. You can even use your printers scanner without digging through menus. You might have issues with finder if your used to windows though and the approach to maximizing and minimizing windows will also get you for a while.
When my Galaxy 4 died I gave iPhone a chance with the SE. I can tell you that for most use cases, there is no discernible difference between iOS and modern android outside of a few fringe features. What struck me though was the power of an ecosystem. My Mac and iPhone just work well together. If they are on the same network they just sync in the background - you need to opt in. My internet went down, my iMac saw that my iPhone had 4g and gave me the option to connect. One click your up. Similar process with s droid would be multi step. You have airdrop which just allows you to send files to another Apple device near you with a tap without you even caring what mechanism it’s using. After google bricked my onHub router I opted to get Apples airport series. They are mostly interchangeable and your Mac and iOS device have a native way to configure it without you needing to mess with connecting to it yourself and blah. Setup WiFi on one device, all your other Apple devices have it. Lots of other cool stuff happen as you add more Apple devices. My wife now as a MacBook, an IPad s d the IPhone 8. She’s been windows android her life but the transition has been sublime. With family sharing any software purchase works for all of us, and not just apples stuff like iCloud and music, everything.
Hate Apple all you want but they get the core tenet that technology should just work without you thinking. That’s why they are the most valued company in the world14 -
In today's episode of kidding on SystemD, we have a surprise guest star appearance - Apache Foundation HTTPD server, or as we in the Debian ecosystem call it, the Apache webserver!
So, imagine a situation like this - Its friday afternoon, you have just migrated a bunch of web domains under a new, up to date, system. Everything works just fine, until... You try to generate SSL certificates from Lets Encrypt.
Such a mundane task, done more than a thousand times already... Yet... No matter what you do, nothing works. Apache just returns a HTTP status code 403 - Forbidden.
Of course, what many folk would think of first when it came to a 403 error is - Ooooh, a permission issue somewhere in the directory structure!
So you check it... And re-check it to make sure... And even switch over to the user the webserver runs under, yet... You can access the challenge just fine, what the hell!
So you go deeper... And enable the most verbose level of logging apache is capable of - Trace8. That tells you... Not a whole lot more... Apparently, the webserver was unable to find file specified? But... Its right there, you can see it!
So you go another step deeper and start tracing the process' system calls to see exactly where it calls stat/lstat on the file, and you see that it... Calls lstat and... It... Returns -1? What the hell#2!
So, you compile a custom binary that calls lstat on the first argument given and prints out everything it returns... And... It works fine!
Until now, I chose to omit one important detail that might have given away the issue to the more knowledgeable right away. Our webservers have the URL /.well-known/acme-challenge/, used for ACME challenges, aliased somewhere else on the filesystem - To /tmp/challenges.
See the issue already?
Some *bleep* over at the Debian Package Maintainer group decided that Apache could save very sensitive data into /tmp, so, it would be for the best if they changed something that worked for decades, and enabled a SystemD service unit option "PrivateTmp" for the webserver, by default.
What it does is that, anytime a process started with this option enabled writes to /tmp/*, the call gets hijacked or something, and actually makes the write to a private /tmp/something/tmp/ directory, where something... Appeared as a completely random name, with the "apache2.service" glued at the end.
That was also the only reason why I managed fix this issue - On the umpteenth time of checking the directory structure, I noticed a "systemd-private-foobarbas-apache2.service-cookie42" directory there... That contained nothing but a "tmp" directory with 777 as its permission, owned by the process' user and group.
Overriding that unit file option finally fixed the issue completely.
I have just one question - Why? Why change something that worked for decades? I understand that, in case you save something into /tmp, it may be read by 3rd parties or programs, but I am of the opinion that, if you did that, its only and only your fault if you wrote sensitive data into the temporary directory.
And as far as I am aware, by default, Apache does not actually write anything even remotely sensitive into /tmp, so...
Why. WHY!
I wasted 4 hours of my life debugging this! Only to find out its just another SystemD-enabled "feature" now!
And as much as I love kidding on SystemD, this time, I see it more as a fault of the package maintainers, because... I found no default apache2/httpd service file in the apache repo mirror... So...8 -
Translating win32 calls to whatever the hell there is in Unix and Unix-like OSes (well, most of them) in order to port a certain game net code library and dear god why did I volunteer myself for this task
At least pevents is there to help, but too bad cmake doesn’t want to compile it with the flag I need (“-DWFMO”) in order to make the “WaitForMultipleEvents” method to work at all. Instead no matter what options I give it on the command line or how I tell VS Code to do it, it seems to give me the finger to my fucking face.
Doing it for games on the cooler OSes... doing it for the community... come on...2 -
probably every time I see my tests failing.
Each time I am writing tests I'm convincing myself "it's an investment", "spend 2 hours now to save 2 days later", "unit-tests are good".
And each time I'm chasing away ideas like "perhaps they are right, perhaps writing unit tests is a waste of time..", "this code is simple, it should ever break - why test it??", "In the 2 hours I'll spend writing those UT I could build another feature"
Yes, it is terribly annoying to write tests, especially after writing the production code (code-first approach). Why test code that you know works, right?
But after a few weeks, months or years, when the time comes to change your feature: enhance it, refactor it, build an integration with/from it, etc, I feel like a child who found a forgotten favourite candy in his pocket when I see my tests failing.
It means I did a very good job writing them
It means it was not a waste of time
it means these tests will now save me hours or days of trial-and-error change→compile→deploy→test cycles.
So yeah, whenever I see my tests fail, I feel warm and fussy inside :)2 -
Fucking experimental technologies. I feel like doing webassembly stuff is like buying a smart device, it's not worth any of the trouble for now.
I wanted to do some webassembly-stuff with rust and yew (basically react for rust). I was really hyped because it all looked promising and i found this cool band "heilung" whose music made me my coding feel like black magic with complex incantations and shit.
A basic webassembly setup did work, but everything afterwards was pure shit. Crate installation didn't go as expected, i get weird errors even though i simply copied the example (and checked the versions). The best i got was when i tried to compile and rust told me to go fuck myself because i cant use feature XY in a package in the stable environment. Why the hell would someone even publish said package then? After losing half a day because of this i give up for now. I don't feel like a badass magician anymore anyways, more like the guy that puts mentos into coke and gets hit by the foam. -
This shit is long story of my computer experience over my lifetime.
When I was young I got my first PC with windows it was not so bad. It required safe shut down of it’s fat32 partition. From time to time I needed to reinstall it cause of slow down but I got used to it I was only a gamer.
Time passes and I got more curious about computers and about this linux. Everything worked there but installation of anything was complete madness and none of windows programs worked well, and I wanted to play games and be productive so I sticked with windows.
I bought hp laptop once with nvidia card, it was overheating and got broken. So I bought toshiba and all I told to the seller was I want ATI card. Took me 5 minutes to do it and I was faster then my friend buying pack of cigarettes because I was earning money using computer.
Then I grown up running my small one person programming businesses and I wanted to run and compile every fucking program on this world. I wanted linux shell commands. I wanted package manager, and I wanted my os to be simple because I wasn’t earning money by using my os but by programming. So after getting my paycheck I bought mac. I can run windows and linux on vm if I need it. I try not to steal someones work so I didn’t want to run hackintosh. I am using this mac for some time.
Also I use playstation for gaming. Because I only want to run and play game I am not excited about graphics but gameplay. I think I am pragmatic person.
I can tell you something about my mac.
When I close lid it go sleep when I open it wakes up instantly. I never need to wonder if I want to hibernate or shut down or sleep and drain battery. It is fucking simple.
When I want to run or open something it doesn’t want me to wait but it gives me my intellij or terminal or another browser or whatever I search for. Yeah search is something that works.
Despite it got 8 gigs of ram I can run whatever number of programs I want at the same speed. The speed is not very fast sometimes but it’s constant fast.
I have a keychain so my passwords are in one place I can slow down shared internet speed, I can put my wifi in monitor mode and I don’t need to install some 3rd party software.
And now I updated my mac to high sierra, cause it’s free and I want to play with ios compilation. Before I did it I didn’t even backup whole work. I just used time machine and regular backups. And guess what, it still works at the same speed and all I did was click to run update and cook something to eat.
When I got bored I close the lid, when got idea open lid and code shit, not waiting for fucking wakeup or fucking updates.
I wanted to rant apple products I use but they work, they got fucking updates all along at the same time. And all of updates are optional.
I cannot tell that about all apple products but about products I use.
I think I just got old and started to praise my limited time on this world. Not being excited about new crap. When I buy something I choose wisely. I bought iPhone. I can buy latest iPhone x but I bought iPhone 7 cause it’s from fucking metal. And I know that metal is harder then glass, why the fucking apple forgot about it? I don’t know.
I know that I am clumsy and drop stuff. Dropped my phone at least 100 times and nothing.
I am not a apple fan boy I won’t buy mac with this glowing shit above keyboard that would got me blind at night.
I buy something when I know that it can save my time on this world. I try to buy things that make me productive and don’t break after a year.
So now piece of advise, stop wasting your time, buy and update wisely, wait a week or a month or a year when more people buy shit and buy what’s not broken. And if something’s broken rant this shit so next customer can be smarter.
Cheers1 -
Today is thursday. Oh no.
At thursdays I have a 8h30-19 schedule (I have 1h30' of free time to go home and cry after I finish a class at 15h30 though) and there's this one class I DREAD. It's a 2h class at 17h and it's an exercise class. This wouldn't be so bad it I actually understood the code behind the exercises, because they don't teach us code in the theory classes (btw it's C. I hate that language because of all this). The teacher pretty much tells us "do this exercise", waits like 10' and then starts to (try to) explain what we're supposed to do. Oh my god.
The other day he was like "write "exec ( ... "text" ... )", compile and execute". It didn't work. Of course it didn't why would it? I was switching around between terminal, manual and text editor, to no avail. In the end he explained but I don't think I got it.
Every time I think about this class I die a little inside and start to become somewhat anxious to be honest. The theory is not that that hard, the practice part is what is killing me (I have test in 2w but I'm just gonna start studying earlier so I can go watch this match LoL).
Does someone know a good book (preferably online, if possible) or a good website on C? I really need to read that, that language is killing me.
Bonus: the other day I had to do a homework that was to be delivered. We had to write a program that read the program and its arguments like this:
./program_name
numArgs
arg1
arg2
etc
I wrote the code, had some bumps in the way, asked a colleague for help because we needed to have a custom function made that was to be done in the class but that I couldn't make because of the reasons above. Then it came the time to test. My VM broke (I think I'm gonna format my PC to try to fix that. Have installed some other versions of the VM but the installations fails or the machine doesn't start) so I sent it to said colleague to test. She said it did OK and so I sent the work to this website we have to send our works to.
"2 errors".
What? What happened? She said it worked just fine.
Looked at my code, couldn't see anything wrong.
Asked the same colleague for help.
Turns out I missed a space. A SPACE. I don't think I've ever felt so frustrated in my life. A presentation error in Java is a good thing, at least we know the program works fine, it's just the output that's wrongly formatted. But C? Nope, errors all around, oh my god. I'm still mad about it.
And I owe her a chocolate.1 -
been exploring the options for cross platform desktop app, and i found :
java : both awt and swing look ugly, i really like OOP of java, and the way projects are organized is easy to scale, but i need to deploy the jdk, and the speed on gui apps isn't that great
C# : (.net/ mono, i can't grasp F# and vb is stupid) looks native on windows, not so much alien on both linux/mac, and being a java cousin is a pro, i found the Eto library for mono even looks more native on *ix than winforms
wxwidgets: for C/C++ so far this looks like the best option for total native feel and performance, but man i fucking hate C code, and this looks a lot like C code, even with proper native Cpp support, maybe i should dive deeper in it
GTK+ : did any one mention C code ? because this mother fucker is plain C with macros all over the place, it made me realize why wx is promoted as Cpp friendly, i doubt I'll use this
tcl/tk : even tho ive never wrote a single line of tcl in my life, the tk lib is the default ui for both python and ruby on all supported platforms,
and i really love ruby, and Python is Usually a joy to work with
Qt : this by far looks like the best option, proper OOP in C++, bindings for python (ruby binds are outdated), almost native look and feel on supported platforms, and even has a gui builder in xml or json/js (qml) however i bet I'll use such a thing, the building tho depends on an external preprocessor "moc" and some wicked macros, also makes working with templates a fucking mess, and the heavy dependence on QObject inheritance makes integrating external libraries a bit more tiring, the signal slot system makes more sense in python than in C++, since it makes me confused about the flow of the code
lazarus: is a freepascal implementation that looks and feels like delphi, not so much for native look and feel, but good performance and easy language to handle
electron : this fat mofo is fat, it's the slowest of all options, if i want an html app, I'll just compile a stripped down webkit and deploy that
what do you think ? and did i miss something ?17 -
Just coded a simple SDL program after a two weeks break without a compiler error(more than 100 lines) from memory . Something must be missing . I don't trust this program 🤔1
-
https://appleinsider.com/articles/...
Tl;Dr This guy thinks apple is poised to switch the Macs to a custom arm based chip over x86! He's now on my idiot list.
I paraphrase:
"They've made a custom GPU", great! That's as helpful as "The iPad is a computer now", and guess what Arm Mali GPUs exist! Just because they made their own GPU doesn't make it suitable for desktop graphics (or ML)!
"They released compilation tools right when they released their new platform, so developers could compile for it right away", who would be an idiot not too...
"Because Android apps run in so many platforms, it's not optimized for any. But apple can optimize their apps for a sepesific users device", what!? What did I miss? What do you optimize? Sure, you can optimize this, you can optimize that... But the reason why IOS software is "optimized", and runs better/smoother (only on the newest devices of course) is because it's a closed loop, proprietary system (quality control), and because they happen to have done a better job writing some of their code (yes Android desperately needs optimization in numerous places...).
I could go on... "WinTel's market share has lowly plataued", "tHeY iNtRoDuCeD a FiElD pRoGrAmMaBlE aRrAy"
For apple to switch Macs to arm would be a horrible idea, face it: arm is slower than x86, and was never meant to be faster, it was meant to be for mobile usage, a good power to Wh ratio favoring the Wh side.
Stupid idiot.19 -
Has anyone tried to export a jar in a simple Java project that has JavaFX (and uses WebView) from VSCode?
When I test the program it works fine but when I export it and execute it I get JavaFX errors.
I met those errors early in development, the fix was adding some parameters to the run command (--add-modules and such), maybe I need to add them to the compile process but I can't find how...
I've been searching all across the web and the rant part of this question is why isn't there an answer anywhere? Has NO ONE tried this before? Really? And if someone did, how did they find the solution!?
My only hope is compiling by hand by now... But there must be a way... I could also use Eclipse but I'd like to know how to do it from VSCode, it would be a shame having to take everything to Eclipse just to compile.3 -
Looking at @striker28 's rant made me think of my time I did my MSc and I think it needs it's own separate rant so here it goes:
So I did an MSc at one of the big league unis in London. First clue was during week 1 where in one of the class a mature student asked whether there would be actual coding during the course. There was an audible gasp from everyone else! Once the lecturer said the unfortunatly they wouldn't be you could hear the sigh of relief from the students...
Next up was all the lectures being placed in the freakin' basement of the university in crap, smelly rooms with annoying ticking A/Cs whereas all the social siences, business and other subjects had lecture halls and classrooms above ground. The contempt for CS from the university's direction was palpable.
Then there was the relegation to the theory-only (i.e. abstract with pen/paper) "tutorial" to the hand of T/As with bugger-all teaching experience. In short most were terrible and should've found a way to abscond themselved from this obligation which was part of the terms of their phd grants unfortunatly.
Further into the course there was the "group project". Oh boy! Out of the 5 in the group my now mature student friend and I were the only one commiting to the repo. There was either no code and a lot of bullshit from the others or crap code that didn't even compile despite their assurances it was all good.. Someone clearly never actually coded and pressed "run" in their lives which is fucking surprising since they've managed to graduate with a BSc and get into a MSc somehow. None of the code "made" by the other 3 persons made it into the master branch for release.
The attitude was that of "We (hahahah) wrote loads of code. We'll get a great mark!". At that stage the core wasn't even complete and the software didn't work yet.
Some of the courses where teaching things already 10 years out of date and when lecturer where pressed on that the few mature students that happen to be there the answer was always "yes, we are planning to update it for next year". Complete bullshit. Didn't help that some of the code on the lecture slides was not even correct! I mean these guy are touted as "experts" in their field...
None of the teory during the entire year was linked to any coding. Everything was abstract with no ties to applied software engineering. I.e. nothing like the real world.
The worst is that none of the youger students realised they were being screwed over and getting very little value for their money. Perhaps one reason why these evaluation forms have such high scores given on them. If you haven't had a job and haven't lived outside academia yet there is nothing to compare it to. It tends to also fall into confirmation bias (hey it's a top UK university, it must be worth it afterall! Look how much they ask for).
By the end of the year I couldn't wait to get the hell out. One of the other mature student sumed it quite well: "I will never send my children here."
Keep in mind that the guy had just over a decade of software engineering experience in the industry and was doing this for fun.
In the end universities are not teaching institutions. The lecturers's primary job is research and their priorities match that. Lectures tend to be the most time efficient teaching format for the ones giving them but, on their own, are not for the consumer.
To those contemplating university for CS: Do the BSc. Get your algo/datastructure chops and learn the basic theory. It is interesting. Don't get discouraged by the subject just because it is taught badly.
Avoid the MSc unless you want to do a phd and go for an academic carrer. You are better off using that year and the money to learn more on your own and get into colaborative projects (open source) on top of some personal ones. Build up your portfolio. It will be cheaper and more interesting!2 -
Is developing on Windows equivalent to squaring the circle? Yeah, obligatory windows bad circlejerk I know.
I’ve been developing a QT5 application for 2 weeks now on my main Linux system. Now, I wanted to make a Windows port for my friends to try.
I install QtCreator on Windows since it’s what I used on Linux. First time setup, I was forced to create an account; I was kind of pissed off but no biggie, I just put “Fuck you” on every credential possible. That’ll teach em.
Now, I needed a decent compiler. Visual Studio is a no go because why the fuck is it so big; also last I checked this thing barely supports C99. So I went with MinGW64 and MSYS2 and made a kit of it. I also went with that because it was the easiest way to get the latest version of GSL and MathGL without having to compile it. Also, the fact that MSYS2 had pacman was pretty nice.
I couldn’t get the thing to work for the whole day until I realized that my kit was pointing to the wrong compiler, turns out msys64/mingw64/bin/g++ and msys64/usr/bin/g++ are two different things. Ok whatever
Now, I just need to hunt down all the .a files and throw it in the LIBS option to get the libraries to work.
I finally made a successful build. Only to find that the application did absolutely nothing. I went with copy pasting the dlls into where the exe was located and launching it manually only to find the error “Application could not start correctly”
Yeah, I might be a retard but fuck you Windows. All I had to do on linux was just install qtcreator on my package manager and let the library dependencies be handled automatically and I could start doing my work right away.6