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 - "no main idea"
-
A young guy I work with burst into tears today, I had no idea what happened so I tried to comfort him and ask what was up.
It appears his main client had gone nuts with him because they wanted him to make an internet toolbar (think Ask.com) and he politely informed them toolbars doesn't really exist anymore and it wouldn't work on things like modern browsers or mobile devices.
Being given a polite but honest opinion was obviously something the client wasn't used to and knowing the guy was a young and fairly inexperienced, they started throwing very personal insults and asking him exactly what he knows about things (a lot more than them).
So being the big, bold, handsome senior developer I am, I immediately phoned the client back and told them to either come speak to me face-to-face and apologise to him in person or we'd terminate there contract with immediate effect. They're coming down tomorrow...
So part my rant, part a rant on behalf of a young developer who did nothing wrong and was treated like shit, I think we've all been there.
We'll see how this goes! Who the hell wants a toolbar anyway?!401 -
EDIT: since this announcement, collabs have been made free to post for all devRant members!
Introducing two big new devRant features!
First, the one @trogus and I are most excited about - Collabs!
Collabs are an easy way to start projects or work on existing projects with the awesome members of the devRant community. You can post a collab listing for the awesome open source project you started that could use some more contributors, that fun idea you have for a brand new project, or really anything you want to gather some fellow devs for. We think it will be a lot of fun.
Collabs also is a devRant first - it's our first paid feature. For each 2 week collab posting, we're charging $14.99. But we wanted to make sure to thank devRant users who have been with us for a while and anyone who contributes often, so anyone with 2,000 points or higher (now or in the future) gets one free collab listing!
The main reason we see collabs as a great first paid feature is because requiring payment or 2,000 points serves to be a slight barrier in posting a collab. We think for collaborations to be successful it's important to have some way to keep out listings where the poster has no intent of following through and we hope this is a good start to doing that.
NOTE: if the collab you are looking to create is devRant-centric (ex. a devRant Chrome extension), we will give you a free credit especially for that so you don't have to pay or use your earned free one. Just contact us (info@devrant.io) if your project falls into that category.
In addition, after tons of demand from the community, you can now change your username and email address! One important note is that you only get to change your username one time every 6 months, so use it cautiously :) You can access this feature in the "more" tab, then settings, then "Edit username or email."
If you have any questions or feedback about any of this, just let us know! We hope everyone enjoys :)52 -
!rant
This was over a year ago now, but my first PR at my current job was +6,249/-1,545,334 loc. Here is how that happened... When I joined the company and saw the code I was supposed to work on I kind of freaked out. The project was set up in the most ass-backward way with some sort of bootstrap boilerplate sample app thing with its own build process inside a subfolder of the main angular project. The angular app used all the CSS, fonts, icons, etc. from the boilerplate app and referenced the assets directly. If you needed to make changes to the CSS, fonts, icons, etc you would need to cd into the boilerplate app directory, make the changes, run a Gulp build that compiled things there, then cd back to the main directory and run Grunt build (thats right, both grunt and gulp) that then built the angular app and referenced the compiled assets inside the boilerplate directory. One simple CSS change would take 2 minutes to test at minimum.
I told them I needed at least a week to overhaul the app before I felt like I could do any real work. Here were the horrors I found along the way.
- All compiled (unminified) assets (both CSS and JS) were committed to git, including vendor code such as jQuery and Bootstrap.
- All bower components were committed to git (ALL their source code, documentation, etc, not just the one dist/minified JS file we referenced).
- The Grunt build was set up by someone who had no idea what they were doing. Every SINGLE file or dependency that needed to be copied to the build folder was listed one by one in a HUGE config.json file instead of using pattern matching like `assets/images/*`.
- All the example code from the boilerplate and multiple jQuery spaghetti sample apps from the boilerplate were committed to git, as well as ALL the documentation too. There was literally a `git clone` of the boilerplate repo inside a folder in the app.
- There were two separate copies of Bootstrap 3 being compiled from source. One inside the boilerplate folder and one at the angular app level. They were both included on the page, so literally every single CSS rule was overridden by the second copy of bootstrap. Oh, and because bootstrap source was included and commited and built from source, the actual bootstrap source files had been edited by developers to change styles (instead of overriding them) so there was no replacing it with an OOTB minified version.
- It is an angular app but there were multiple jQuery libraries included and relied upon and used for actual in-app functionality behavior. And, beyond that, even though angular includes many native ways to do XHR requests (using $resource or $http), there were numerous places in the app where there were `XMLHttpRequest`s intermixed with angular code.
- There was no live reloading for local development, meaning if I wanted to make one CSS change I had to stop my server, run a build, start again (about 2 minutes total). They seemed to think this was fine.
- All this monstrosity was handled by a single massive Gruntfile that was over 2000loc. When all my hacking and slashing was done, I reduced this to ~140loc.
- There were developer's (I use that term loosely) *PERSONAL AWS ACCESS KEYS* hardcoded into the source code (remember, this is a web end app, so this was in every user's browser) in order to do file uploads. Of course when I checked in AWS, those keys had full admin access to absolutely everything in AWS.
- The entire unminified AWS Javascript SDK was included on the page and not used or referenced (~1.5mb)
- There was no error handling or reporting. An API error would just result in nothing happening on the front end, so the user would usually just click and click again, re-triggering the same error. There was also no error reporting software installed (NewRelic, Rollbar, etc) so we had no idea when our users encountered errors on the front end. The previous developers would literally guide users who were experiencing issues through opening their console in dev tools and have them screenshot the error and send it to them.
- I could go on and on...
This is why you hire a real front-end engineer to build your web app instead of the cheapest contractors you can find from Ukraine.19 -
Weirdest technical interview:
I was applying all over during my last semester in college (before graduating). This place was hiring a PHP developer for their “web store”. My interviewer invited me into her office, pulled out a laptop, and asked if I could walk her through some of the existing code. After I successfully did, she responded with “oh wow, we had no idea it was doing all of that!”.
The main room consisted of 6 folding tables lined with people on desk phones (probably support/sales). When I asked her where I would be working (mostly concerned about not being able to focus over the constant phone calls), she said that I would just share her desk in her office.
Then she asked if I could start the next day, without giving my internship any kind of warning that I’d be quitting so abruptly. She also asked me to start missing class, so I could spend more time at work. Saying things like “if you already have the job, why focus on school?”. When I asked who wrote that code, she told me that it was an out of state contractor that they’re trying to get rid of, because his rates were too high.
I told her that I would need a few days to think about it, which gave me time to call the other places that I had interviewed, but were still waiting to hear back. Luckily, when one of the places heard that I had been offered a job, they decided to rush their hiring process and offered me a job over the phone!
It’s been 6 years, and I am so thankful that I didn’t have to take that sketchy job.1 -
So, rage time.
A few months ago I inherited a big Wordpress website, with around 750 pages.
The client has reported the main menu is broken.
Upon looking at the code it appears the previous "Wordpress Developer" (ahem ...) attempted to rewrite navigation system - no idea why.
As part of the 4000 class below is a screenshot of part of the file where he's determining if the current menu item is active, within a loop. Whilst the whole if statement spans 409 lines - the code basically continues exactly the same downwards.
Shameful :/22 -
Fuck code.org. Fuck code. Not code code, but "code" (the word "code"). I hate it. At least for teaching. Devs can use it as much as they want, they know what it means and know you can't hack facebook with 10 seconds of furiously typing "code" into a terminal. What the fuck are you thinking when you want me to hack facebook? No, when I program, it's not opening terminal, changing to green text and typing "hack <insert website name here, if none is given, this will result to facebook.com>" Can you just shut the fuck up about how you think that because you can change the font in google fucking docs you have the right to tell me what code can and can't do? No, fuck you. Now to my main point, fuck "code" (the string). It's an overused word, and it's nothing but a buzzword (to non devs, you guys know what you're talking about. how many times have you seen someone think they are a genius when they here the word "code"?) People who don't know shit don't call themselves programmers or devs, they call themselves coders. Why? It fucking sounds cool, and I won't deny that, but the way it's talked about in movies, by people, (fucking) code.org, etc, just makes people too much of a bitch for me to handle. I want everyone reading this rant who has friends who respect the fact that YOU know code (I truly believe everyone on devRant does), how it works, and it's/your limitations, AND that it takes hard work and effort, to thank god right now. If you're stuck with some people like me, I feel you. Never say "code" near them again. Say "program." I really hate people who think they know what an HTML tag is and go around calling themselves coders. Now onto my main point, code.org. FUCK IT. CAN YOU STOP RUINING MY FUCKING AP CS CLASS. NO CODE.ORG, I DON'T NEED TO WATCH YOUR TEN GODDAMN VIDEOS ON HOW TECHNOLOGY IS IMPORTANT, <sarcasm>I'VE BEEN LIVING UNDER A ROCK FOR THIRTY YEARS</sarcasm>. DO I REALLY NEED ANOTHER COPY OF SCRATCH? WAIT, NO, SCRATCH WAS BETTER. YOU HAD FUCKING MICROSOFT, GOOGLE, AND OTHER TECHNOLOGICAL GIANTS AND YOU FUCKED UP SO BAD YOU MADE IT WORSE THAT SCRATCH. JUST LETMECODE (yes I said that) AND STOP TALKING ABOUT HOW SOME IRRELEVANT ROBOT ARM DEVELOPED BY MIT IS USING AI AND MACHINE LEARNING TO MAKE SOME ROBOT EVOLVE?! IF YOU SPEND ONE MORE SECOND SAYING "INNOVATION" I'LL SHOVE THAT PRINT STATEMENT YOU HAVE A SYNTAX ERROR UP YOUR ASS. DON'T GET ME FUCKING STARTED ON HOW ITS IMPOSSIBLE TO DO ANYTHING FOR YOURSELF WHEN YOUR GETTING ALL THE ANSWERS WITHOUT DOING ANY WORK AND THE FACT THAT JAVASCRIPT IS YOUR FUCKING LANGUAGE. <sarcasm>GREAT IDEA, LETS GET THESE NEW PROGRAMMERS INTO A PROFESSIONAL ENVOIRMENT BY ADDING A DRAG AND DROP CODE (obviously we can say it) EDITOR</sarcasm> MAYBE IF YOU GOT THIS SHIT UP YOUR ASS AND TO YOUR BRAIN YOU'D ACTUALLY GET TO PRPGRAMMING IN YOUR ADVANCED AP COURSE. ITS CALLED FUCKING CODE.ORG FOR A REASON32
-
Forgive me father, for I have sinned. Alot actually, but I'm here for technical sins. Okay, a particular series of technical sins. Sit your ass back down padre, you signed up for this shit. Where was I? Right, it has been 11429 days since my last confession. May this serve as equal parts rant, confession, and record for the poor SOB who comes after me.
Ended up in a job where everything was done manually or controlled by rickety Access "apps". Many manhours were wasted on sitting and waiting for the main system to spit out a query download so it could be parsed by hand or loaded into one of the aforementioned apps that had a nasty habit of locking up the aged hardware that we were allowed. Updates to the system were done through and awful utility that tended to cut out silently, fail loudly and randomly, or post data horrifically wrong.
Fuck that noise. Floated the idea of automating downloads and uploads to bossman. This is where I learned that the main system had no SQL socket by default, but the vendor managing the system could provide one for an obscene amount of money. There was no buy in from above, not worth the price.
Automated it anyway. Main system had a free form entry field, ostensibly for handwriting SELECT queries. Using Python, AutoHotkey, and glorified copy-pasting, it worked after a fashion. Showed the time saved by not having to do downloads manually. Got us the buy in we needed, bigwigs get negotiating with the vendor, told to start developing something based on some docs from the vendor. Keep the hacky solution running as team loves not having to waste time on downloads.
Found SQLi vulnerability in the above free form query system, brought it up to bossman to bring up the chain. Vulnerability still there months later. Test using it for automated updates. Works and is magnitudes more stable than update utility. Bring it up again and show the time we can save exploiting it. Decision made to use it while it exists, saves more time. Team happier, able to actual develop solutions uninterrupted now. Using Python, AutoHotkey, glorified copy-pasting, and SQLi in the course of day to day business critical work. Ugliest hacky thing I've ever caused to exist.
Flash forward 6 years. Automation system now in heavy use acrossed two companies. Handles all automatic downloads for several departments, 1 million+ discrete updates daily with alot of room for expansion, stuff runs 24/7 on schedule, most former Access apps now gone and written sanely and managed by the automation system. Its on real hardware with real databases and security behind it.
It is still using AutoHotkey, copy-paste, and SQLi to interface with the main system. There never was and never will be a SQL socket. Keep this hellbeast I've spawned chugging along.
I've pointed out how many ways this can all go pearshaped. I've pointed out that one day the vendor will get their shit together they'll come in post system update and nothing will work anymore. I've pointed out the danger in continuing to use the system with such a glaring SQLi vulnerability.
Noone cares. Won't be my problem soon enough.
In no particular order:
Fuck management for not fighting for a good system interface
Fuck the vendor for A) not having a SQL socket and B) leaving the SQLi vulnerability there this long
Fuck me for bringing this thing into existence5 -
The riskiest dev choice...
How about "The riskiest thing you've done as a dev"? I have a great entry for that. and I suppose it was my choice to build the feature afterall.
I was working on an instance of a small MMO at a game company I worked for. The MMO boasted multiple servers, each of them a vastly different take on the base game. We could use, extend, or outright replace anything we wanted to, leading to everything from Zelda to pokemon to an RP haven to a top-down futuristic counterstrike. The server in this particular instance was a fantasy RPG, and I was building it a new leveling and experience system with most of the trimmings. (Talents, feats/perks, etc. were in a future update.)
A bit of background, first: the game's dev setup did not have the now-standard dev/staging/prod servers; everything ran on prod, devs worked on prod, players connected and played on prod, etc. Worse yet, there was no backup system implemented -- or not really. The CTO was really the only person with sufficient access. The techy CEO did as well, but he rarely dealt with anything technical except server hardware, occasionally. And usually just to troll/punish us devs (as in "Oops ! I pulled the cat5 ! ;)"). Neither of them were the most reliable of people, either. The CTO would occasionally remote in and make backups of each server -- we assumed whenever he happened to think of it -- and would also occasionally do it when asked, but it could take him a week, sometimes even up to a month to get around to it. So the backups were only really useful for retreiving lost code and assets, not so much for player data.
The lack of reliable backups and the lack of proper testing grounds (among the plethora of other issues at the company) made for an absolutely terrible dev setup, but that's just how it was, and that's what we dealt with. We were game devs, afterall. Terrible or not, we got to make games! What more could you ask for!? It was amazing and terrible and wonderful and the worst thing ever, all at the same time. (and no, I'm not sharing the company name, but it isn't EA or Nexon, surprisingly 😅)
Anyway, back to the story! My new leveling system also needed to migrate players' existing data, so... you can see where this is going.
I did as much testing and inspection of my code as I could, copied it from a personal dev script to the server's xp system, ... and debated if I really wanted to click [Apply]. Every time I considered it, I went back to check another part or do yet more testing. I ended up taking like 40 minutes to finally click it.
And when I did... that was the scariest button press of my life. And the scariest three seconds' wait afterwards. That one click could have ruined every single player's account, permanently lost us players ...
After applying it, I immediately checked my character to see if she was broken, checked the account data for corruption or botched flags, checked for broken interactions with the other systems....
Everything ended up working out perfectly, and the players loved all of the new features. They had no idea what went into building them, and certainly had no idea of what went into applying them, or what could have gone wrong -- which is probably a good thing.
Looking back, that entire environment was so fragile, it's a wonder things didn't go horribly wrong all the time. Really, they almost never did. Apocalypses did happen, but were exceedingly rare, and were ususally fixed quickly. I guess we were all super careful simply because everything was so fragile? or the decent devs were, at least. We never trusted the lessers with access 😅 at least on the main servers where it mattered. Some of the smaller servers... well, we never really cared about those.
But I'm honestly more surprised to realize I've never had nightmares of that button click. It was certainly terrifying enough.
But yay! Complete system overhaul and migration of stored and realtime player data! on prod! With no issues! And lots of happy players! Woooooo!
Thinking back on it makes me happy 😊rant deploying straight to prod prod prod prod dev server? dev on prod you chicken migration on prod wk149 git? who's a git? you're a git! scariest deploy ever game development1 -
The bossman asked if our signup service sends an automated email after we successfully process someone's payment or when we promote them to full customer.
That sounds like a simple query, yeah?
Well.
Here's some background:
We have four applications; one in React, three in Rails. I'll replace their names to retain some anonymity.
1) "IceSkate" is the React app, and it's a glorified signup form. (I wrote this one.)
2) "Bogan" is the main application, and is API-only; its frontend has been long since deprecated by the following two:
3) "Bum" is a fork of "Bogan" that has long since diverged. It now contains admin-only tools.
4) "Kulkuri" is also a fork of "Bogan" that has long since diverged. It now contains tools specifically for customers, which they can access.
All but IceSkate (obv) share a database.
Here's how signups happen:
Signups come in from IceSkate, which hits a backend API on Bogan. Bogan writes the data to the database, charges the card immediately, and leaves the signup for moderation.
And here's how promotion from signup to customer happens:
Bum has a view allowing admins to validate, modify, and "promote" a signup to a full customer. Upon successful promotion, Bum calls "ServerWrap", a module which calls actions on the other applications; in this case: Bogan.
Bogan routes execution through three separate models before calling "ServerWrap" again, this time calling KulKuri.
Finally, KulKuri actually creates the customer!
After KulKuri finishes creating the customer, execution resumes on Bogan, which then returns, causing execution to resume on Bum. Bum then runs through several other models, references the newly-created customer object (as all three share a database), and ... updates the customer with its current data, and then updates the signup object. After all of this, it finally shows the admin the "new customer" view.
It took me 25 minutes to follow the chain of calls, and I still don't know quite what's going on. I have no idea if any of it sends an email or not -- I didn't see any signs of this, but I very easily could have overlooked something.
So, to answer bossman's question... I asked the accounting people if they send the email manually. If they don't, it's automatic, which means I missed something and get to burrow through that mess all over again!
I really hope I missed something; otherwise I need to figure out how and where (and when!) to send the email...
just...
errrrgghh9 -
In electronics there's 3 options.
1. You pay a small fortune to get something decent.
2. You pay a smaller fortune to get crap.
3. You build it yourself and it'll be nicely priced AND decent.
Why is that? I have no idea. Profiteering gluttons perhaps.
Case in point: my watch. A waterproof one, so you'd expect to be able to take it in the shower, which I often did.
But then, le wild drop from 50cm height occurred and the whole thing just popped open, with soapy water rushing in. Luckily it didn't short out, and I quickly evacuated it out of the shower and dipped it with my towel.
Then already I thought.. what the fuck is wrong with the designers of this thing?! I'm all for keeping the inner parts of electronics accessible for self-servicing. But in a waterproof watch you wouldn't expect the backside to pop right off and expose the bloody internals, would you? So that's one thing. While evacuating it I quickly figured that I'd want to remove the battery immediately.. except that fucking thing was screwed in place?! WHAT THE FUCK?!! Use those screws to keep the fucking backside of the watch in place you certified pieces of shit that designed this craptacular piece of garbage!!!
Finished showering, went ahead and troubleshooted the thing. Miraculously it still worked. Except that now the UI of the fucking thing is biting me in the ass. A single button on the watch is used to operate the whole thing, and get it to set itself to the correct time, get radio signal, go in sleep mode (where the watch stops ticking, for storage purposes) and activate itself again. So I dived into the manual.. and still couldn't get it to work properly. So it's got one button just like an iPhone, it craps itself when it's dropped just like an iPhone, its design is shit just like an iPhone, and it's completely unusable when it craps itself just like an iPhone.
And the manual... Oh fucking shit. It specifies that the watch is 3 bar water resistant, yet apparently you can't take it into the shower. 3 FUCKING BAR!!! That's supposed to enable you to take a fucking dive with it! And apparently you can't drop it either.. who would've thought, when they lock it with no more than outwards pressure from the back plate into the main body! How difficult can it be to use fucking screws, and to make it watertight put some rubber bands or whatever?!
CERTIFIED MOTHERFUCKERS!!!
And the watch, it's in the garbage can right now. Right where it belongs!!21 -
Our web department was deploying a fairly large sales campaign (equivalent to a ‘Black Friday’ for us), and the day before, at 4:00PM, one of the devs emails us and asks “Hey, just a heads up, the main sales page takes almost 30 seconds to load. Any chance you could find out why? Thanks!”
We click the URL they sent, and sure enough, 30 seconds on the dot.
Our department manager almost fell out of his chair (a few ‘F’ bombs were thrown).
DBAs sit next door, so he shouts…
Mgr: ”Hey, did you know the new sales page is taking 30 seconds to open!?”
DBA: “Yea, but it’s not the database. Are you just now hearing about this? They have had performance problems for over week now. Our traces show it’s something on their end.”
Mgr: “-bleep- no!”
Mgr tries to get a hold of anyone …no one is answering the phone..so he leaves to find someone…anyone with authority.
4:15 he comes back..
Mgr: “-beep- All the web managers were in a meeting. I had to interrupt and ask if they knew about the performance problem.”
Me: “Oh crap. I assume they didn’t know or they wouldn’t be in a meeting.”
Mgr: “-bleep- no! No one knew. Apparently the only ones who knew were the 3 developers and the DBA!”
Me: “Uh…what exactly do they want us to do?”
Mgr: “The –bleep- if I know!”
Me: “Are there any load tests we could use for the staging servers? Maybe it’s only the developer servers.”
DBA: “No, just those 3 developers testing. They could reproduce the slowness on staging, so no need for the load tests.”
Mgr: “Oh my –bleep-ing God!”
4:30 ..one of the vice presidents comes into our area…
VP: “So, do we know what the problem is? John tells me you guys are fixing the problem.”
Mgr: “No, we just heard about the problem half hour ago. DBAs said the database side is fine and the traces look like the bottleneck is on web side of things.”
VP: “Hmm, no, John said the problem is the caching. Aren’t you responsible for that?”
Mgr: “Uh…um…yea, but I don’t think anyone knows what the problem is yet.”
VP: “Well, get the caching problem fixed as soon as possible. Our sales numbers this year hinge on the deployment tomorrow.”
- VP leaves -
Me: “I looked at the cache, it’s fine. Their traffic is barely a blip. How much do you want to bet they have a bug or a mistyped url in their javascript? A consistent 30 second load time is suspiciously indicative of a timeout somewhere.”
Mgr: “I was thinking the same thing. I’ll have networking run a trace.”
4:45 Networking run their trace, and sure enough, there was some relative path of ‘something’ pointing to a local resource not on development, it was waiting/timing out after 30 seconds. Fixed the path and page loaded instantaneously. Network admin walks over..
NetworkAdmin: “We had no idea they were having problems. If they told us last week, we could have identified the issue. Did anyone else think 30 second load time was a bit suspicious?”
4:50 VP walks in (“John” is the web team manager)..
VP: “John said the caching issue is fixed. Great job everyone.”
Mgr: “It wasn’t the caching, it was a mistyped resource or something in a javascript file.”
VP: “But the caching is fixed? Right? John said it was caching. Anyway, great job everyone. We’re going to have a great day tomorrow!”
VP leaves
NetworkAdmin: “Ouch…you feel that?”
Me: “Feel what?”
NetworkAdmin: “That bus John just threw us under.”
Mgr: “Yea, but I think John just saved 3 jobs. Remember that.”4 -
Here are the reasons why I don't like IPv6.
Now I'll be honest, I hate IPv6 with all my heart. So I'm not supporting it until inevitably it becomes the de facto standard of the internet. In home networks on the other hand.. huehue...
The main reason why I hate it is because it looks in every way overengineered. Or rather, poorly engineered. IPv4 has 32 bits worth, which translates to about 4 billion addresses. IPv6 on the other hand has 128 bits worth of addresses.. which translates to.. some obscenely huge number that I don't even want to start translating.
That's the problem. It's too big. Anyone who's worked on the internet for any amount of time knows that the internet on this planet will likely not exceed an amount of machines equal to about 1 or 2 extra bits (8.5B and 17.1B respectively). Now of course 33 or 34 bits in total is unwieldy, it doesn't go well with electronics. From 32 you essentially have to go up to 64 straight away. That's why 64-bit processors are.. well, 64 bits. The memory grew larger than the 4GB that a 32-bit processor could support, so that's what happened.
The internet could've grown that way too. Heck it probably could've become 64 bits in total of which 34 are assigned to the internet and the remaining bits are for whatever purposes large IP consumers would like to use the remainder for.
Whoever designed IPv6 however.. nope! Let's give everyone a /64 range, and give them quite literally an IP pool far, FAR larger than the entire current internet. What's the fucking point!?
The IPv6 standard is far larger than it should've been. It should've been 64 bits instead of 128, and it should've been separated differently. What were they thinking? A bazillion colonized planets' internetworks that would join the main internet as well? Yeah that's clearly something that the internet will develop into. The internet which is effectively just a big network that everyone leases and controls a little bit of. Just like a home network but scaled up. Imagine or even just look at the engineering challenges that interplanetary communications present. That is not going to be feasible for connecting multiple planets' internets. You can engineer however you want but you can't engineer around the hard limit of light speed. Besides, are our satellites internet-connected? Well yes but try using one. And those whizz only a couple of km above sea level. The latency involved makes it barely usable. Imagine communicating to the ISS, the moon or Mars. That is not going to happen at an internet scale. Not even close. And those are only the closest celestial objects out there.
So why was IPv6 engineered with hundreds of years of development and likely at least a stage 4 civilization in mind? No idea. Future-proofing or poor engineering? I honestly don't know. But as a stage 0 or maybe stage 1 person, I don't think that I or civilization for that matter is ready for a 128-bit internet. And we aren't even close to needing so many bits.
Going back to 64-bit processors and memory. We've passed 32 bit address width about a decade ago. But even now, we're only at about twice that size on average. We're not even close to saturating 64-bit address width, and that will likely take at least a few hundred years as well. I'd say that's more than sufficient. The internet should've really become a 64-bit internet too.34 -
Very long story ahead!
Yesterday in the evening a friend of mine (calling him F from now on) became the target of something new to me...
Apparently one can fake his phone number through some fishy ways and call people with that number. Someone (we think we might know who it was, the why is at the end) did this yesterday to F.
Here's the whole story:
We were just talking together on a TeamSpeak Server (a program to talk to others on the internet) when suddenly another friend said: "F, why did you just call me three times in a row?" That was the first thing that was a bit suspicious. After that, F got calls from random numbers (even Afghanistan, we are German), and they said something like "Have fun with the police coming to your house". Then there was silence. 10 minutes later his phone rang and there were a ton of pizza delivery services in his town that apparently got pizza orders from him. Then there was silence, again. Suddenly someone with a hidden number called him, a woman's voice said they were the police and if F doesn't stop calling the police there will be consequences. F then told her what was going on but I think she didn't really care. She then wanted to know where F lives, but I told him not to say that, because if it is the police they can find it out by themself and if it's not, they don't need to know that.
Now, a short break: There is some fake information going around about where F lives. I can't remember when we found out but the attacker thought he would actually live there. No idea what happened at that location...
Now back to the story:
Time went by, nothing really happened. Suddenly F shouted: "There are blue lights outside! The police is here!" He muted his microphone and (the following is what he told us what happened) went down to the door (remember, he is 16) and there were two police men. They were asking about why he called the police. F explained what we knew until then, about number spoofing and stuff... They sent a more technical person to him, he understood what F was trying to explain. The police men drove away and he came back to tell us what happened. (Now we get back to what I heared myself.) The mom came in, screamed something that I couldn't understand, and F went offline. We searched who the attacker could have been. And we are pretty sure we found him. That guy connected to our Minecraft server (that's where I know F from) with his real IP, and his main account, which made it easy to search. He also got a static IP which means it doesn't change. We also got some information that in the recent days this guy was talking about VoIP spoofing and such stuff. Another friend of mine, a bit older, found some proofs and I think he will go to the police.
That's it. Thanks for reading.7 -
This Part 3 and finale of the tale of Mr DDTW, or the worst coworker I've ever had to deal with. I suggest you start from the beginning if you don't have the context, it's been a trip.
Part 1: https://devrant.com/rants/4210605
Part 2: https://devrant.com/rants/4220715
The problem with this man threatening to snitch on me to the professor if I didn't revert my commit was that he backed me into a corner. Letting him go at his pace with his quality standards would have ruined the project for the rest of us, and I'm not going to let three other people's grades suffer because one was lazy. I'm the PM, team lead, the guy who will ultimately be held responsible for this project succeeding or failing and the mediator of problems.
So I snitched first.
The professor knew us. He had an idea of how we worked as a team, who was enthusiastic about this subject, who was diligent, and who wasn't. It'd been half a semester and he wasn't stupid. I'd also taken the not-so-minor task of testing our software and handling all the little integration problems between components and between the professor's server. This had resulted in several calls between me and him because he'd been flying by the seat of his pants with some of the upgrades he'd been doing to the server code and as the fastest group we were the ones running into all the bugs on his end. And he'd also noted our prior complaint and seen the discrepancy in commits, author tags and hours logged. Mr DDTW had been graded significantly worse than the rest of us. So when I sent him a goddamn novel about our team's internal problems, the bomb was set. And so we get to the conference call, with everybody panicking and with no clue what any of this is about. Except me.
Dear god. That call was pure catharsis. Never have I seen a man get demolished so hard. Mr DDTW got a 45 minute LECTURE, a goddamn SMACKDOWN, about how he needs to take some responsibility for this team effort and that in the real world he'd have been fired. And the professor was so incredibly serene throughout! He could've blasted him with the rage of a thousand suns but he said it in such a way that Mr DDTW's only real responses were "yes", "I understand" and "I'm sorry". An entire semester of this useless fucking bitch being nothing but a leech on our team in three separate projects and he was finally getting SCHOOLED. And then, it gets even better. The professor asked how we could solve this problem, as Mr DDTW needs to do work to be graded but he can't hold us back.
I dropped a suggestion: As I had implemented the module in a way that worked, we could carry on using my version while Mr DDTW could work on a separate branch. Everything else was working reasonably well for an MVP, we just needed to improve and test now, so if Mr DDTW got it working we could merge it back into the main branch. This solved the team's problem of not being able to progress, it solved Mr DDTWs problem of not wanting to fail the course, and it solved my problem of not having to work with this shit-for-brains for the forseeable future. A weight was lifted off my shoulders. No more Mr DDTW. No more bitching and no more shitcode. A grating arsehole that had been bugging everyone all sememster put in his place and out of my hair.
On the way home from uni that day, I rang a friend and told him the entire story as I needed to get it off my chest. Every time I brought up a problem, an issue, a setback, an argument, he made a remark.
"Damn, if only he just... did the work."
Every time he said it it was in a slightly different way, but every time it made me laugh harder as he just didn't stop interrupting me with the same comment. If only he did the work. But the funniest part of all was how right he was. Mr DDTW had so many opportunities to just sit down, shut up, and do the work like the rest of us, but instead he decided to do fuck-all until he got flak for it and proceeded to dig his own grave. What sort of delusional entitlement, sheer incompetence or other dumbfuckery was he suffering from to make such terrible decisions? It's his last year of university and he still hadn't learned to just do the goddamn work (I would later find out that his friend had covered his shortcomings a lot and was apparently the reason why he hadn't flunked out of uni yet).
And so ends the story of Mr Didn't Do The Work the worst person I have ever had the displeasure of working with. We never did merge his branch as we ran out of time during testing. The professor passed him, possibly out of pity or just so that he wouldn't have to resit the course and burden some other poor sods. We weren't the top scorers this time, partially because of my shortcomings as PM but mostly because of the huge delays and manpower deficit, but we did well enough to pass the course with some very high grades. With one exception of course.5 -
After returning back from the company we were purchasing a new phone system (hardware+software, $100K+, kind of a big deal)
VP: “I need the new phone system software integration for our CRM by next week. I need to demo the system for the other VPs”
Me: “No problem. Were you able to get their API like I asked?”
VP: “Salesman didn’t know for sure what that was, but he said all the developer software documentation is on their site.”
Me: “Did he give you a URL? Their main site is all marketing mumbo-jumbo. I assume there is another one specific for developers.”
VP: “Yea, he might have said something, but I don’t understand why you need it. The salesman said the integration would be seamless. He showed me several demos.”
Me: “No, I mean I need to know, is the API a full client install? a simple dll? is this going to be a web service integration? How will I know what to program against?”
VP: “I think I heard him say something about COM? Does that sound like an API?”
Me: “It’s a start. Did he provide you anything, a disk, a flash drive, anything with the software?”
VP: “No, only thing he told me was our CRM integration would be seamless and our development team would have no problems.”
Me: “OK..OK…I get it…he’s a salesman. Is there an 1-800 number I can call? A technical support email address? Anyone technical I can reach out to?”
VP: “Probably, but I don’t understand what the problem is. I need the CRM integrated by next week. I gave the other VPs a promise we would get it done. I do not break promises.”
Me: “Wait…when are we installing the new system?”
VP: “Well, the purchase order will be cut at the end of the month’s billing cycle, the company has about a two month turnaround time to deliver and install the hardware, so maybe 3 months from now? Are you going to be able to have the integration ready for next week?”
Me: “If we won’t see any of the hardware for 3 months, what exactly am I integrating with?”
VP: “That API you wanted or whatever it is. COM…yea, it’s COM. I was told the integration would be seamless and our developers would have no problem. I don’t understand why you can’t simply write the code to make it work. Getting the hardware installed is going to be the hardest part.”
Me: “OK, so I have no documentation, we have no hardware, no software, and no idea what this ‘seamless integration’ means. I’m afraid there isn’t anything I can do right now. ”
VP: “Fine!...I’ll just have to tell the other VPs you were not able to execute the seamless integration with the CRM.”
Which he did. When the hardware+software was finally installed, they hired consultants (because I “failed”). I think the bill was in the $50K range to perform the ‘integration’ which consisted of Excel spreadsheets (no kidding). When approached with the primary CRM integration, the team needed our API documentation, a year’s development time and $300K. I was pissed off enough, and I had the API documentation, I was able to get the basic CRM integration within 3 days. When an agent receives a call, I look up the # in our database, auto-fill the form with the customer info, etc. Easy stuff when you have the documentation.
The basics worked and the VP was congratulated by ‘saving’ the company $300K. May or may not have been bonuses involved, rumors still out on that one, but I didn't see em'. Later my manager told me the VP was really ticked that I performed the integration ‘behind his back’, but because it was a success, he couldn’t fire me.10 -
Indian web dev companies suck ( for developers )
when I finished 3 year grad program in computer application here in my country (India), I thought life's gonna be fun working as a developer. Oh boy, I was so wrong.
I started out working for a small service based IT company, followed by 2 more. I realized really quickly that they're nothing short of a scam. If your company's only agenda to somehow survive in the market and showing no signs of growth in 8 fucking years, then I'm sorry you're working for scamsters.
Now I'm not saying that all of them are alike. But most of them sorta are.
They don't give a shit about quality, not one bit. Quality means no money in the short run. And they haven't been able to develop any strategy to deal with that. Hence, no growth.
They promise 100 things on their website but only provide shitty services in 10.
There is no pair programming, no code review, no code quality check, no architect, no database designer. They won't give you extra time to write test cases. They use git as a storage device.
They don't put their developers (especially the ones who are learning) under any sort of managed development framework to ensure smooth work.
At the end of the day, their main objective is to somehow NOT deliver a project but finish a milestone and make money out of it.
After cashing out for a milestone, they want you to put your current project on hold and start working on a new project until you have like 10-15 projects in the pipeline and you're severely overwhelmed and you just wanna fucking QUIT.
They would say YES to literally every fucking thing, only to disappoint the client later.
I can't believe someone in the US, or UK thought it'd be a good idea to approach these companies
for their brand new app ideas. They're so fucked.
They're rarely finishing any project.
I'm sorry if I hurt your feelings. I had to get it out of my system.11 -
People like this guy commentating are the main reason why evolution is still just a theory.
Let's take for example someone having a problem with their car not starting up.
Already seeing this guy's response would be:
"Personally I hate cars. Seems like its always they're broken. Have you just tried using your legs and run 40 kilometers to work every day?"
No I didn't you fucker, and you know why? Because it's not convenient. The same way how it's not convenient for me or any sane developer to drop to a command line and run custom query (which can be automated) every time I want to quickly check some values in development.
And no, the OP didn't ask for setup of this on production, the conversation kept on in comments below and this guy was still defending his productive idea.26 -
Did I ever tell you kids about the time I worked for a company that got a contract to develop an iOS application around some object detection software that had been developed by another team?
Company I was working for was a tiny software consultancy, and this was my first ever dev job (I’m at my second now 😅). Nobody at the company has experience building mobile applications but CEO decides that the app should be written in React Native because _he_ knows React Native.
During a meeting with the client, CEO jokes about how easy the ask is and says he could finish it in a weekend. Please note that Head of Engineering had already budgeted a quarter for the work. CEO says we can do it in a week! And moves up the deadline. And only assigns two engineers to project. I am not one of those engineers.
The two engineers that are put on it struggle. A lot. They can’t seem to get the object detection to work at all, and the code that’s already written is in Objective-C. I realize one of the issues is that the engineers on the project can’t read Objective-C because they have no experience with Objective-C or even C. I have experience with C, so I volunteer to take a look at it to try to see what’s going on.
Turns out the problem is that the models are trained on one type of image format and the iPhone camera takes images in a different format.
The end of the week comes, they do not succeed in figuring out the image conversion in React Native. There’s an in-person demo with the customers scheduled for the next Monday. CEO spends the weekend trying to build the app. Only succeeds in locking literally every other engineer out of the project.
They manage to negotiate a second chance where we deliver what we were supposed to deliver at the original schedule.
I spent the weekend looking up how to convert images and figure it would be a lot easier to interface with the Objective-C if we used Swift. Taught myself enough Swift over the weekend to feel dangerous. Spoke to Head of Engineering on Monday and proposed solution — start over in Swift. Volunteer to lead effort. Eventually convince them it’s a good idea (and really, what’s the worst that can happen? If this solves our main problem at the moment, that’s still more progress than the original team made)
Spend the next week working 16 hour days building out application. Meet requirements for next deadline. Save contract.
And that’s ONE of the stories of my first dev job that got me hired as a senior engineer despite only having 10 months of work experience in the industry.11 -
OMFG I don't even know where to start..
Probably should start with last week (as this is the first time I had to deal with this problem directly)..
Also please note that all packages, procedure/function names, tables etc have fictional names, so every similarity between this story and reality is just a coincidence!!
Here it goes..
Lat week we implemented a new feature for the customer on production, everything was working fine.. After a day or two, the customer notices the audit logs are not complete aka missing user_id or have the wrong user_id inserted.
Hm.. ok.. I check logs (disk + database).. WTF, parameters are being sent in as they should, meaning they are there, so no idea what is with the missing ids.
OK, logs look fine, but I notice user_id have some weird values (I already memorized most frequent users and their ids). So I go check what is happening in the code, as the procedures/functions are called ok.
Wow, boy was I surprised.. many many times..
In the code, we actually check for user in this apps db or in case of using SSO (which we were) in the main db schema..
The user gets returned & logged ok, but that is it. Used only for authentication. When sending stuff to the db to log, old user Id is used, meaning that ofc userid was missing or wrong.
Anyhow, I fix that crap, take care of some other audit logs, so that proper user id was sent in. Test locally, cool. Works. Update customer's test servers. Works. Cool..
I still notice something off.. even though I fixed the audit_dbtable_2, audit_dbtable_1 still doesn't show proper user ids.. This was last week. I left it as is, as I had more urgent tasks waiting for me..
Anyhow, now it came the time for this fuckup to be fixed. Ok, I think to myself I can do this with a bit more hacking, but it leaves the original database and all other apps as is, so they won't break.
I crate another pck for api alone copy the calls, add user_id as param and from that on, I call other standard functions like usual, just leave out the user_id I am now explicitly sending with every call.
Ok this might work.
I prepare package, add user_id param to the calls.. great, time to test this code and my knowledge..
I made changes for api to incude the current user id (+ log it in the disk logs + audit_dbtable_1), test it, and check db..
Disk logs fine, debugging fine (user_id has proper value) but audit_dbtable_1 still userid = 0.
WTF?! I go check the code, where I forgot to include user id.. noup, it's all there. OK, I go check the logging, maybe I fucked up some parameters on db level. Nope, user is there in the friggin description ON THE SAME FUCKING TABLE!!
Just not in the column user_id...
WTF..Ok, cig break to let me think..
I come back and check the original auditing procedure on the db.. It is usually used/called with null as the user id. OK, I have replaced those with actual user ids I sent in the procedures/functions. Recheck every call!! TWICE!! Great.. no fuckups. Let's test it again!
OFC nothing changes, value in the db is still 0. WTF?! HOW!?
So I open the auditing pck, to look the insides of that bloody procedure.. WHAT THE ACTUAL FUCK?!
Instead of logging the p_user_sth_sth that is sent to that procedure, it just inserts the variable declared in the main package..
WHAT THE ACTUAL FUCK?! Did the 'new guy' made changes to this because he couldn't figure out what is wrong?! Nope, not him. I asked the CEO if he knows anything.. Noup.. I checked all customers dbs (different customers).. ALL HAD THIS HARDOCED IN!!! FORM THE FREAKING YEAR 2016!!! O.o
Unfuckin believable.. How did this ever work?!
Looks like at the begining, someone tried to implement this, but gave up mid implementation.. Decided it is enough to log current user id into BLABLA variable on some pck..
Which might have been ok 10+ years ago, but not today, not when you use connection pooling.. FFS!!
So yeah, I found easter eggs from years ago.. Almost went crazy when trying to figure out where I fucked this up. It was such a plan, simple, straight-forward solution to auditing..
If only the original procedure was working as it should.. bloddy hell!!8 -
Did a bunch more cowboy coding today as I call it (coding in vi on production). Gather 'round kiddies, uncle Logan's got a story fer ya…
First things first, disclaimer: I'm no sysadmin. I respect sysadmins and the work they do, but I'm the first to admit my strengths definitely lie more in writing programs rather than running servers.
Anyhow, I recently inherited someone else's codebase (the story of my profession career, but I digress) and let me tell you this thing has amateur hour written all over it. It's written in PHP and JavaScript by a self-taught programmer who apparently discovered procedural programming and decided there was nothing left to learn and stopped there (no disrespect to self-taught programmers).
I could rant for days about the various problems this codebase has, but today I have a very specific story to tell. A story about errors and logs.
And it all started when I noticed the disk space on our server was gradually decreasing.
So today I logged onto our API server (Ubuntu running Apache/PHP) and did a df -h to check the disk space, and was surprised to see that it had noticeably decreased since the last time I'd checked when everything was running smoothly. But seeing as this server does not store any persistent customer data (we have a separate db server) and purely hosts the stateless API, it should NOT be consuming disk space over time at all.
The only thing I could think of was the logs, but the logs were very quiet, just the odd benign message that was fully expected. Just to be sure I did an ls -Sh to check the size of the logs, and while some of them were a little big, nothing over a few megs. Nothing to account for gigabytes of disk space gradually disappearing.
What could it be? I wondered.
cd ../..
du . | sort --sort=numeric
What's this? 2671132 K in some log folder buried in the api source code? I cd into it and it turns out there are separate PHP log files in there, split up by customer, so that each customer of ours (we have 120) has their own respective error log! (Why??)
Armed with this newfound piece of (still rather unbelievable) evidence I perform a mad scramble to search the codebase for where this extra logging is happening and sure enough I find a custom PHP error handler that is capturing (most) errors and redirecting them to these individualized log files.
Conveniently enough, not ALL errors were being absorbed though, so I still knew the main error_log was working (and any time I explicitly error_logged it would go there, so I was none the wiser that this other error-catching was even happening).
Needless to say I removed the code as quickly as I found it, tail -f'd the error_log and to my dismay it was being absolutely flooded with syntax errors, runtime PHP exceptions, warnings galore, and all sorts of other things.
My jaw almost hit the floor. I've been with this company for 6 months and had no idea these errors were even happening!
The sad thing was how easy to fix all the errors ended up being. Most of them were "undefined index" errors that could have been completely avoided with a simple isset() check, but instead ended up throwing an exception, nullifying any code that came after it.
Anyway kids, the moral of the story is don't split up your log files. It makes absolutely no sense and can end up obscuring easily fixable bugs for half a year or more!
Happy coding.6 -
So my parents got speakers integrated into their monitor. A few years ago (like 3-4) they made me turn off the sound because it annoyed them since all they did were playing some shitty flash games and some office work. Now they needed the sound back on and this is how it happened.
1. Confirm they plugged the right cable in. I know them so I knew that could be a problem
2. Made them download Teamviewer because I know they can't even doubleclick without guidance
Now the juicy part was to tell them they need to turn on sound on the monitor. As I was watching via teamviewer I saw them trying to click on the menu items from said monitor. Took me 5 minutes to explain that their mouse can't do shit on that because they need to navigate with the buttons underneath the monitor.
Turned out they couldnt get things right and I had no idea what they were seeing because they explanations went like "All I can see is Main Menu and Exit." - "Is that really all dad?" "Yes thats all. Main Menu, Brightness and Exit" turnes out the middle part is interchangable like "Brightness, Saturation, etc..."
After 2 hours I gave up and told them to pick up my speakers tomorrow -
Fucking Amazon rant again...
TLDR: Amazon specializes in “the last mile”. They are repeatedly allowing a 3rd party shipper (Purolator) destroy their main value proposition. Thoughts at the end.
Me on the phone with their support...
Me: so it says my package was attempted to be delivered today. I did not get a call or notification or anything and I have been working from home all day to wait for the package.
Support: -Sigh- yes, I can see it was Purolator we have been having trouble with them lately.
Me: ok, so are you able to see what happened?
Support: let me put you on hold.
.......
Support: So they said they will not call for a delivery, did they use your building buzzer?
Me: Nope, just stood outside the building and then left I guess.
Support: -sigh- Well you can pick it up at their depot. Let me get you the address.
Me: The one by the airport?
Support: Yes it looks like it is about an hour away from where you are. And they are only open during work hours.
Me: So, after working from home to get this package you advice is to take 3 hours off work and go there to pick it up?
Support: Well, we can refund it? If thats what you want.
Me: No, I would like the package I ordered please.
Support: There is nothing I can do sir.
Me: So before I hang up let me see if I have it straight. When I order a package from Amazon, do I have an option of who ships it?
Support: No, I’m sorry but that is decided on our end.
Me: And I have had this problem before with this shipping agent. So, your telling me that when I ship things to me with Amazon that I have no control of wether I even get the package? Your telling me it is literally a coin toss as to wether or not I ever get my package?
Support: yes sir, I’m sorry but that is all I can do.
Me: So you realize that, for example, if I went to my local grocery store and it was a coin toss that I could take my groceries home (even after I paid for them) then I will always go to another store....
Support: yes, I know. There is nothing I can do.
Me: So from now on I have to order items, wait for them to be shipped, check the shipper and then cancel the order of it is them?
Support: -sigh- you cannot cancel an order after it has shipped...
Me: wow. Sure is great being a prime and audible member. I get fast delivery of 50% of my packages and no delivery at all of the other 50%. Sorry for the sarcasm...
Support: I’m sorry I can’t help more.
Me: So just to clarify. I can expect NOT to get the package I ordered?
Support: sorry
Me: have a nice day.
————
Here are my thoughts as a student of business...
Amazon specializes in “the last mile” (in their delivery service anyway) and when they deliver the package they also deliver on that value proposition.
However, now it seems that one of their shipping providers is failing at getting packages that last mile, which is resulting and destroying the idea of their value proposition in a customers eyes. (Affecting more than me as the rep said)
Now, instead of believing that Amazon will get things to me, saving me that last mile trip to the store etc., I firmly believe that it is a toss up as to wether I will ever receive my package (based on carrier)
I know that if I was in Amazon’s position (a carrier hurting my overall value proposition with consistently unacceptable service) that I would come down on them with a force they have never seen or drop them entirely.
But of course, every company reaches a point where they have such market share and sway that they take their eye off the ball when it comes to their value proposition to customers.16 -
(New account because my main account is not anonymous)
Let's rant!
I'm 3 exams away from my CS degree, I've chosen to do some internship instead of another exam, thinking was a great idea.
Now I'm in this company, where I've never met anyone because of pandemic. A little overview:
- No git, we exchange files on whatsapp (spicy versioning)
- Ideas are foggy, so they ask for change even if I met their requirements, because from a day to another they change
- My thesis supervisor is not in the IT field, he understands nothing
The first (and only) task they gave me, was a web page to make request to their server, fetch data etc.
Two months passed trying to met their requests, there were a lot of dynamic content changin on the page, so I asked if I could use some rendering framework to make the code less shitty, no answers.
I continued doing shitty code in plain JS.
Another intern guy graduated, I've to mantain his code. This guy once asked me "Why have you created 8 js modules to accomplish the web page job?", I just answered saying that was my way of work, since we're on the same level in the company I didn't felt to explain things like usability, maintainability etc. it's like I've a bit of imposter syndrome, so I've never 100% sure that my knowledge is correct.
Now we came at the point where I've got his code to mantain, and guess what:
900 lines of JS module that does everything from rendering to fetching data..
I do my tasks on his code, then a bug arises so the "managers" ask him what's happened (why don't you ask to me that I'm mantaing is code!?!?), he fixes the bug nonetheless he finished his intership. So we had two copies of the same work, one with my job done and still with his bug, and another one without my work and without the bug.
I ask how to merge, and they send me the lines changed (the numeration was changed on my file ofc, remember: no git...)
Now we arrive today, after a month that they haven't assigned any task to me and they say:
"Ok, now let's re-do everything with this spicy fancy stunning frontend framework".
A very "indie" Framework that now I've to study to "translate" my work. A thing that could be avoided when I've asked for a framework, 2/3 MONTHS AGO.1 -
FFUUUuucccckkk me sideways. So I decided to look into USB type-c's power delivery and alt modes. Cause I kinda want to make an adapter card to run my displays over a single cable. TLDR of the rest: USB-C has some huge capabilities which noone is interested in using since its way to complex to handle for what its worth in the end.
Now PD alone is kinda ok to deal with since a lot of powerbanks use it and some hobby guys documented how to work with it. I find it really odd thou that you NEED to use a dedicated IC for using the configuration chanel to negotiate how much power you can draw. Why the USB standard didnt use some simple 5V low speed signalling? Also the standard says that you only have to implement 5v 0.6A with every other power level being optional. (This is also true for cables. Most manufacturers use only the USB 2.0 standard for them and brag about how fast type-C is. ლ(ಠ益ಠლ) )
Now to the alt modes. These motherfuckers are a real shitshow to deal with. First you need a Mux to deal with USB-C's two way insertion, so your signals wont get flipped. Next thing is that you have four lanes at your disposal in alt mode. Which you can either use for four Display Port Lanes or two DP lanes and two USB 3.0 lanes. (You always get USB 2.0) Now you may think that there would be one simple chip to do it all? Nope you need atleast two at the price of 6$ each. One for PD and one for Alt modes. Both are very hard to solder (QFN, 0.5 mm pitch 40+ pins) TI ended up being the only one with a decent offering of IC's that do what I need. As for working with them, you would think that you just slap a simple MCU on there that communicates over I2C or SPI to configure the chips? Nope! You program the chips memory from which it configures itsself. And the programming is done with some TI tool which gives me no idea as to how you can handle everything whith no control logic behind it.
Looking into alternative IC's leaves me with cypress semi. And their documentation is basically a total mess. I wanna know what that chip is good for and what I need to do to make it work. I dont care about technical details mixed with marketing jargon nobody understands. And I really despise that I have to register just to download a datasheet. Especially since there is no info about it on the main page.
And this whole rant hasnt even touched the topic that USB-C only uses DP and nothing else. So you better hope that you have DP++ so you can use a passive conversion.
This was my Ted Talk about USB-C. Some info in it may be subject to my stupidity and errors as it currently is 02:15 in the morning and I need some sleep.14 -
"Graphics don't matter."
I ranted a while back about gamedev being hard to get into for me, and, today, user @DOSnotCompute posted a similar experience.
I had a couple more thoughts, so thought should post them here (FUCK! It ended up being too fucking long! sorry!)
So I was watching the making of mortal kombat 3 on yt, which was pretty amazing btw because I got to see the actors of the sprites in game which were engraved in my and thousands of others kids minds.
Anyhow, the creators of the series, John Tobias and Ed Boon, were interviewed and what not. And it hit me that while both were the designers, John was the main artist and Ed was the programmer (at least for MK1). Another game that comes to mind Super Meat Boy, and I bet hundreds of others did the same.
And it got me thinking, maybe that's my problem, I just need an artist.
And I think the reason why I never thought of that is because of this idea that graphics don't matter.
"you don't need an artist. You don't need graphics. The most important thing is the gameplay."
What a load of shit.
A lot of people believe that because they got tired of polished AAA games with automatic and predictible gameplay.
People started parrotting this knee jerk of a conclusion since then.
It's dumb. Imagine if Infiminer, one of the games Minecraft was based on, which btw looks terrible, had all the same features Minecraft had.
I would still not touch that shit with a pole.
Graphics ARE important. Games are on the VISUAL medium.
That doesn't mean you're sucking Sony's dick on every AAA release or that every game should be made with UnreUnityCocksReloadedEngine.
Some level of visual craft is required for a game ro be considered such.
(btw, I think most of you guys here get this, not trying to pander, just that I want to make it clear that I'm not accusing this community of being guilty of this)
If a game looks bad (given, bad can be subjective), if it gives the impression that it wasn't seriously made, then you kinda lower your expectations.
People get hyped on games that look good, because it means that the game could be good. Games that look unoriginal or terrible won't get played, wether they're good or not. And I think it's a reasonable reaction.
How many times did I hear things like "Look at x video game from the 90s, the graphics are terrible but it's fun as hell".
That is an absurd statement. The level of production some NES games went through is insane. We're talking millions of dollars for games that today might look primitive.
The graphics weren't shit back then, and even today you could say that they are simpler but also of excellent craftsmanship.
I'm not into creating art, I hate it in fact because you can't quantify the success of produced art.
So, duh, find an artist. Ok, how? This is the part where I have no fucking idea how.
You start spamming shit like "I need an artist" online? I dunno, something for another post I guess.
I guess the most healthy thing I could do is making demos that might look like shit just to get experience so that when I get to find an artist, I have practice already.7 -
Being a programmer in a scientific discipline can be infuriating.
using "no one" ="almost no one"
using everyone = "almost everyone"
1. No one knows what even the very idea of good practice is. And everyone refuses to learn. 3k lines of repetitive copy pasted main. 500 lines of plotting method.
2. Raw C-style pointer based array creation. Won't use develope array libraries because what if development stops. FUCKING HAVE YOU SEEN YOUR CODE WHAT IF DEVELOPMENT ON YOUR CODE STOPS. FUCK.
3. LOOP VARIABLES DECLARED AT THE BEGINNING OF THE METHOD WHY.
4. Everyone wants to make modular, independent code. No one wants to use OOP. NOPE. ALL IN ONE FILE. WRITE C++ LIKE A FUCKING PYTHON NOTEBOOK. FUCK.
5. LIBRARIES OH MY GOD PLEASE DO NOT CODE UP YOUR MATRIX MULTIPLICATION. PLEASE DO NOT TRIPLE LOOP IT. NO. THE LINEAR ALGEBRA LIBRARY WILL STAY IN DEVELOPMENT.
6. Please realize that literally not one comment over an 1800 line file does not help anyone.
FUCKING. WHY. WHY ARE WE SCIENTISTS SO GOOD AT SCIENCE AND SO FUCKING SHIT AT THE CODE THAT MAKES OUR SCIENCE HAPPEN. WHY. FUCKING. WHY. FUCK.undefined rage no comments scientific computing fuck this shit wall of text bad code science fuck c++ fucking4 -
I propose that the study of Rust and therefore the application of said programming language and all of the technology that compromises it should be made because the language is actually really fucking good. Reading and studying how it manages to manipulate and otherwise use memory without a garbage collector is something to be admired, illuminating in its own accord.
BUT going for it because it is a "beTter C++" should not constitute a basis for it's study.
Let me expand through anecdotal evidence, which is really not to be taken seriously, but at the same time what I am using for my reasoning behind this, please feel free to correct me if I am wrong, for I am a software engineer yes, I do have academic training through a B.S in Computer Science yes, BUT my professional life has been solely dedicated to web development, which admittedly I do not go on about technical details of it with you all because: I am not allowed to(1) and (2)it is better for me to bitch and shit over other petty development related details.
Anecdotal and otherwise non statistically supported evidence: I have seen many motherfuckers doing shit in both C and C++ that ADMIT not covering their mistakes through the use of a debugger. Mostly because (A) using a debugger and proper IDE is for pendejos and debugging is for putos GDB is too hard and the VS IDE is waaaaaa "I onlLy NeeD Vim" and (B) "If an error would have registered then it would not have compiled no?", thus giving me the idea that the most common occurrences of issues through the use of the C father/son languages come from user error, non formal training in the language and a nice cusp of "fuck it it runs" while leaving all sorts of issues that come from manipulating the realm of the Gods "memory".
EVERY manual, book, coming all the way back to the K&C book talks about memory and the way in which developers of these 2 languages are able to manipulate and work on it. EVERY new standard of the ISO implementation of these languages deals, through community effort or standard documentation about the new items excised through features concerning MODERN (meaning, no, the shit you learned 20 years ago won't fucking cut it) will not cut it.
THUS if your ass is not constantly checking what the scalpel of electrical/circuitry/computational representation of algorithms CONDONES in what you are doing then YOU are the fucking problem.
Rust is thus no different from the original ideas of the developers behind Go when stating that their developers are not efficient enough to deal with X language, Rust protects you, because it knows that you are a fucking moron, so the compiler, advanced, and well made as it is, will give you warnings of your own idiotic tendencies, which would not have been required have you not been.....well....a fucking idiot.
Rust is a good language, but I feel one that came out from the necessity of people writing system level software as a bunch of fucking morons.
This speaks a lot more of our academic endeavors and current documentation than anything else. But to me DEALING with the idea of adapting Rust as a better C++ should come from a different point of view.
Do I agree with Linus's point of view of C++? fuck no, I do not, he is a kernel engineer, a damn good one at that regardless of what Dr. Tanenbaum believes(ed) but not everyone writes kernels, and sometimes that everyone requires OOP and additions to the language that they use. Else I would be a fucking moron for dabbling in the dictionary of languages that I use professionally.
BUT in terms of C++ being unsafe and unsecured and a horrible alternative to Rust I personaly do not believe so. I see it as a powerful white canvas, in which you are able to paint software to the best of your ability WHICH then requires thorough scrutiny from the entire team. NOT a quick replacement for something that protects your from your own stupidity BY impending the use of what are otherwise unknown "safe" features.
To be clear: I am not diminishing Rust as the powerhouse of a language that it is, myself I am quite invested in the language. But instead do not feel the reason/need before articles claiming it as the C++ killer.
I am currently heavily invested in C++ since I am trying a lot of different things for a lot of projects, and have been able to discern multiple pain points and unsafe features. Mainly the reason for this is documentation (your mother knows C++) and tooling, ide support, debugging operations, plethora of resources come from it and I have been able to push out to my secret project a lot of good dealings. WHICH I will eventually replicate with Rust to see the main differences.
Online articles stating that one will delimit or otherwise kill the other is well....wrong to me. And not the proper approach.
Anyways, I like big tits and small waists.14 -
I was in second year of University when I joined the internship, I knew the business idea sucks and he wouldn't be able to carry out the operations either. Little did I know that I will work with the dumbest team ever, literally, the dumbest.
So, the major chunk of the software was outsourced to a consultancy. I was a tech intern, and we were developing an Android App that will save your parking location, let you reserve locations and all etc.
I knew I have stepped on a wrong turf, but again, I had nothing better to do that summer. So, for a very meager stipend, I said yes to a very stupid project. Let the stupidity flow...
~ The boss, had quit his job for this dumb idea with no funding, no team, nothing.
~ He was pursuing a certification course in Android Development from somewhere, where their final project will be a calculator!
~ He had little to no tech skills, hardly knew Java but was leading an Android App Dev project in Java. He had little to no managerial, marketing or sales skills either.
~ For a brief period, I had to work along with the consultancy guys to ramp up their work. They would take backups in a USB drive every evening, and share each others code using the same. VCS died a painful death that day.
~ They hardly wrote functions, rather, wrote very long code in the main (onCreate) function. Code style died of cancer.
~ They couldn't compress an image before sending it to a server. I had to do it for them.
~ Had no concept of creating utility classes.
And best of all,
~ Wrote 20 cases (switch case) with the same code! Instead of using a loop...1 -
A year ago it took me hours to get SSL working on my Digital Ocean droplet I was using to host my website. I had no idea what I was doing and even though I 'knew' how to use the terminal and do most things, I wasn't confident or competent to only rely on the CLI.
About a year later (today) I get an email that my SSL is about to expire and needs renewed. Done and taken care of within 20 minutes, (with a 2 hour gap due to waiting for the cert authority to send me the zip of files)
All that time using i3 and moving to Linux is paying off. Maybe by the time I can afford to build my next desktop I can make my main OS linux7 -
Four years ago while still a newbey in Android Dev and still using the eclipse IDE which was hell to configure by adding Android plugins,my girlfriend had a birthday.
With my new found love of coding thought of developing a b-day app for her.With so little android knowledge I had a great idea the main activity would have her photo as the background and button which when clicked would show a toast saying happy b-day love.
After spending few minutes in Tutorial point and learning how to display a toast and setting click listeners on buttons I was good to go and compiled the app.
Later that evening I head to her room where her b-day was to be held with some of her lady friends .When presenting gifts I presented her gift said had one more surprise for her and asked for her phone and using bluetooth sent the apk to her phone.
Installing the app I was scared to death on seeing how my grey buttons were displaying on her 2.7 screen size since had no idea on designing for multiple screens.
Giving her back the phone she loved the app and felt like her superman in the room though not for long.Her lady friends had gone ahead took her phone and were critising the app:
Why can't I take a selfie
Why can't the app play a b-day song for her and this went on them not knowing how hurting that was.
Bumped on the lady who lead the onslaught on me and had to go down memory lane.Life is a journey.2 -
So ok here it is, as asked in the comments.
Setting: customer (huge electronics chain) wants a huge migration from custom software to SAP erp, hybris commere for b2b and ... azure cloud
Timeframe: ~10 months….
My colleague and me had the glorious task to make the evaluation result of the B2B approval process (like you can only buy up till € 1000, then someone has to approve) available in the cart view, not just the end of the checkout. Well I though, easy, we have the results, just put them in the cart … hmm :-\
The whole thing is that the the storefront - called accelerator (although it should rather be called decelerator) is a 10-year old (looking) buggy interface, that promises to the customers, that it solves all their problems and just needs some minor customization. Fact is, it’s an abomination, which makes us spend 2 months in every project to „ripp it apart“ and fix/repair/rebuild major functionality (which changes every 6 months because of „updates“.
After a week of reading the scarce (aka non-existing) docs and decompiling and debugging hybris code, we found out (besides dozends of bugs) that this is not going to be easy. The domain model is fucked up - both CartModel and OrderModel extend AbstractOrderModel. Though we only need functionality that is in the AbstractOrderModel, the hybris guys decided (for an unknown reason) to use OrderModel in every single fucking method (about 30 nested calls ….). So what shall we do, we don’t have an order yet, only a cart. Fuck lets fake an order, push it through use the results and dismiss the order … good idea!? BAD IDEA (don’t ask …). So after a week or two we changed our strategy: create duplicate interface for nearly all (spring) services with changed method signatures that override the hybris beans and allow to use CartModels (which is possible, because within the super methods, they actually „cast" it to AbstractOrderModel *facepalm*).
After about 2 months (2 people full time) we have a working „prototype“. It works with the default-sample-accelerator data. Unfortunately the customer wanted to have it’s own dateset in the system (what a shock). Well you guess it … everything collapsed. The way the customer wanted to "have it working“ was just incompatible with the way hybris wants it (yeah yeah SAP, hybris is sooo customizable …). Well we basically had to rewrite everything again.
Just in case your wondering … the requirements were clear in the beginning (stick to the standard! [configuration/functinonality]). Well, then the customer found out that this is shit … and well …
So some months later, next big thing. I was appointed technical sublead (is that a word)/sub pm for the topics‚delivery service‘ (cart, delivery time calculation, u name it) and customerregistration - a reward for my great work with the b2b approval process???
Customer's office: 20+ people, mostly SAP related, a few c# guys, and drumrole .... the main (external) overall superhero ‚im the greates and ur shit‘ architect.
Aberage age 45+, me - the ‚hybris guy’ (he really just called me that all the time), age 32.
He powerpoints his „ tables" and other weird out of this world stuff on the wall, talks and talks. Everyone is in awe (or fear?). Everything he says is just bullshit and I see it in the eyes of the others. Finally the hybris guy interrups him, as he explains the overall architecture (which is just wrong) and points out how it should be (according to my docs which very more up to date. From now on he didn't just "not like" me anymore. (good first day)
I remember the looks of the other guys - they were releaved that someone pointed that out - saved the weeks of useless work ...
Instead of talking the customer's tongue he just spoke gibberish SAP … arg (common in SAP land as I had to learn the hard way).
Outcome of about (useless) 5 meetings later: we are going to blow out data from informatica to sap to azure to datahub to hybris ... hmpf needless to say its fucking super slow.
But who cares, I‘ll get my own rest endpoint that‘ll do all I need.
First try: error 500, 2. try: 20 seconds later, error message in html, content type json, a few days later the c# guy manages to deliver a kinda working still slow service, only the results are wrong, customer blames the hybris team, hmm we r just using their fucking results ...
The sap guys (customer service) just don't seem to be able to activate/configure the OOTB odata service, so I was told)
Several email rounds, meetings later, about 2 months, still no working hybris integration (all my emails with detailed checklists for every participent and deadlines were unanswered/ignored or answered with unrelated stuff). Customer pissed at us (god knows why, I tried, I really did!). So I decide to fly up there to handle it all by myself16 -
So I finally get code in Xcode able to compile and run after crashing in main()... due to obscure settings in it's build it does not like. Took hours of hunting around, googling, and used up all my craps table luck for the month.
Now, out of the blue, after a good 30 test run, edit, compile, run cycles... BOOM, the god damn thing starts crashing at before main() again. No friggin idea why.
Xcode says SIGABRT to me... yea well I got something for you Apple Xcode... 🖕🏼1 -
At work, my closest relation is with the DBA. Dude is a genius when it comes to proper database management as well as having a very high level of understanding concerning server administration, how he got that good at that I have no clue, he just says that he likes to fuck around with servers, Linux in particular although he also knows a lot about Windows servers.
Thing is, the dude used to work as a dev way back when VB pre VB.NET was all the rage and has been generating different small tools for his team of analysts(I used to be a part of his team) to use with only him maintaining them. He mentioned how he did not like how Microsoft just said fk u to VB6 developers, but that he was happy as long as he could use VB. He relearned how to do most of the GUI stuff he was used to do with VB6 into VB.NEt and all was good with the world. I have seen his code, proper OOP practices and architectural decisions, etc etc. Nothing to complain about his code, seems easy enough to extend, properly documented as well.
Then he got with me in order to figure out how to breach the gap between building GUI applications into web form, so that we could just host those apps in one of our servers and his users go from there, boy was he not prepared to see the amount of fuckery that we do in the web development world. Last time my dude touched web development there was still Classic ASP with JScript and VBScript(we actually had the same employer at one point in the past in which I had to deal with said technology, not bad, but definitely not something I recommend for the current state of web development) and decided that the closest thing to what he was used was either PHP(which he did not enjoy, no problem with that really, he just didn't click with the language) and WebForms using VB.NET, which he also did not like on account of them basically being on support mode since Microsoft is really pushing for people to adopt dotnet core.
After came ASP.NET with MVC, now, he did like it, but still had that lil bug in his head that told him that sticking to core was probably a better idea since he was just starting, why not start with the newest and greatest? Then in hit(both of us actually) that to this day Microsoft still not has command line templates for building web applications in .net core using VB.NET. I thought it was weird, so I decided to look into. Turns out, that without using Razor, you can actually build Web APIs with VB.NET just fine if you just convert a C# template into VB.NET, the process was...err....tricky, and not something we would want to do for other projects, with that in we decided to look into Microsoft's reasons to not have VB.NET. We discovered how Microsoft is not keeping the same language features between both languages, having crown C# as the language of choice for everything Microsoft, to this point, it seems that Microsoft was much more focused in developing features for the excellent F# way more than it ever had for VB.NET at this point and that it was not a major strategy for them to adapt most of the .net core functionality inside of VB, we found articles when the very same Microsoft team stated of how they will be slowly adding the required support for VB and that on version 5 we would definitely have proper support for VB.NET ALTHOUGH they will not be adding any new development into the language.
Past experience with Microsoft seems to point at them getting more and more ready to completely drop the language, it does not matter how many people use it, they would still kill it :P I personally would rather keep it, or open source the language's features so that people can keep adding support to it(if they can of course) because of its historical significance rather than them just completely dropping the language. I prefer using C#, and most of my .net core applications use C#, its very similar to Java on a lot of things(although very much different in others) and I am fine with it being the main language. I just think that it sucks to leave such a large developer pool in the shadows with their preferred tool of choice and force them to use something else just like that.
My boy is currently looking at how I developed a sample api with validation, user management, mediatR and a custom project structure as well as a client side application using React and typescript swappable with another one built using Angular(i wanted to test the differences to see which one I prefer, React with Typescript is beautiful, would not want to use it without it) and he is hating every minute of it on account of how complex frontend development has become :V
Just wanted to vent a little about a non bothersome situation.6 -
I actually do have one. 2 years ago I found myself in a stressful situation. It lasted for an hour or so but all ended well. Ever since that incident I was wondering what should be different so that situations like these could be avoided. I had an idea. I began making sketches, sorting out the architecture I'd need and then it hit me. Shit, I could reuse this very principle for a MUCH larger scale! And in fact there's noone in the market offering this yet! There are similar products, products that offer a tiny part of my idea's functionality, but none of them are even close to what I have in mind!
And so the coding began. I was still a student back then. And employed 12hrs/day. And married. Needless to say I did not have much time for coding. Now I'm also a father (although not a student any more!) which makes my schedule even worse.
All in all I've made quite a few widely reusable libraries by now which have saved me 10s of thousands of lines typing, had yet another idea on alternative TLS which seems impossible to crack (well okay, possible. But there's a twist - cracker will not be able to know he cracked the algo :) ). Now I'm close to 100k LOC of my main project and struggling with a fucking FE (since I'm more of a bkend guy). FE's already taken a few months from me and I'm still in a square 1 :/ But I'm moving forward. Slowly, but moving. Frustrated af, but not giving up.
I had a sort of a dream to start my project before I'm 30. I have less than a year left. Still doable. This project, if it's sucessful, has a potential to become extremely popular as it offers solutions to multiple problems we have today. This project should save me from 9-to-5 work every day where, no matter how great the environment is, I feel trapped. But I need money to survive in this city . With my family.
This project should be a solution to all of my problems and probably something great the world could enjoy.
I wish I could make it. I really do. I don't want to be 9-5 any more. I don't want to be dictated what's my schedule, what's that I have to do now. what to think. I want to be free of all of this. Have enough time to live. To travel, see the world. Live in a house (God I miss living in a house....). Spend time with my family. Show my lil boy what a wonderful thing the World is!
I really want this to work. I want to be free again. And I wish I hadn't to deal with FrontEnd.
Allright, enough wabbling. Time for a nice cup of tea and back to coding. "The next big thing" is not going to create itself while I'm ranting, right?6 -
#include <rant>
Using angry standard;
Int main()
{
cout << "So my mom recently started "exploring the web". I'm sure you already know where this is going; she ended up signing up for a free trail of some diet pills with her credit card on some sketchy website. The website never sent any product but attempted to charge her card over $300 multiple times. My mom's bank noticed and froze the account. She has now opened an investigation with the banks fraud department and is awaiting response. I took the liberty of running a whois look up and found the companies website is held by GoDaddy and is hiding behind Domains by Proxy (GoDaddy's sysadmin hider). I'm angry that she's in this situation but I have no idea of how to uncover the real company behind the diet pills site." << endl;
Return 0;
}3 -
I think I might change my middle name to "I told you so"
Couple of weeks ago I proposed integrating a daily process job into an existing WPF application (details of what+why would be too long to explain) and the manager suggested I make the changes
Me: "I can do it, but Jay has the most experience with that application. I don't have his WPF skills"
Mgr: "How hard can WPF be? If it uses the MVVM pattern, it should be a snap."
Me: "Its nearly an 8 year old WPF project with several chefs in that kitchen. I pretty sure I could figure it out, but that is a difference between 2 weeks and 2 days. Integration is pretty straight forward, Jay could probably do it in a day."
DevA: "WPF is easy. MVVM makes it even easier. I worked on the shipping app."
Me: "That's was a brand new, single page app, but yea, it should be easy."
DevB: "WPF has been around a long time and the tools have really matured. I don't understand what is so difficult."
Me: "I didn't say anything would be difficult, I know with that application, there is going to be complexity we need to figure out."
DevB: "It uses the MVVM, so all we need is the user control, a view model, controller, and its done."
DevA: "Sounds easy to me."
Mgr: "If you need more time to work on the vendor project, I'll have DevB work on the integration."
<yesterday>
Me: "How is the integration going?"
DevB: "This app is a mess. I have no idea how they got the control collections to work. If I hard-code everything, I can get it to work. This dynamic stuff is so confusing. Then there is the styling. Its uses dark mode, but no matter what I do, my controls show up in light mode."
Me: "The app uses Prism, so the control configuration is in, or around, the startup code."
DevB: "That makes sense. Will it fix the styling too?"
Me: "I have no idea. When I looked at it, some controls loaded the styles from the main resource, other's have it hard-coded. Different chefs in the kitchen, I guess. How far have you got?"
DevB: "I've created invoice button. That is as far as I got"
Me: "I'm finished with the vendor project and I'll be wrapping up the documentation today. I can try to help next week."
DevB: "Thanks. I think we might have to get Jay to help if we can't figure this out."
Me: "Good idea"
Two weeks and only a button. A button? I miss Delphi.3 -
## Building my own router
IT HAS ALREADY PAID OFF!!!!!
So I (with my fam) have evacuated from the capital of Lithuania into a distant place - much smaller, where average age is prolly >30 or even >40 years. I live in a village now. In a house with very good neighbours. In fact these neighbours own that house :D
Back to the point.
So these neighbours used to share their wifi (w/ internet) between the two houses. They have the line, the mian router has quite a strong antenna and that other house has 2 repeaters: 1 on the outside wall and another one -- indoors. Sepeaters are connected sequentially, i.e. the indoors one is repeating the outdoors one. ikr....?
The first day was alright. We settled in, got everything set up wifi-wise. Peachy.
The second day repeaters refused to issue a DHCP IP. That's something, right? Alright, nvm - I don't mind setting up static IPs. In fact I prefer them over the DHCP magic!
And by the noon both repeaters were connectable but neither of them could provide internet connection... We that sucks! I restarted both of them a few times, neighbours restarted their main router -- still no luck.
Here comes my router [God am I happy with this purchase and the whole idea of a customized router!!! Thanks @hakx20!].
I brought it outside, plugged it in. Connected to it through it's hotspot, used nmcli to connect to neighbours' main router with an internal wifi card (that shitty mPCIe operating in USB mode. yes, the same one, manufactured in 2003. Yes, in g mode.). A couple of iptables rules for traffic forwarding et voila! I have built my own repeater! And tomorrow I can WFH w/o any issues.
Yes, hardware routers are faster and easier to maintain. Yes, hardware routers are cheaper and usually have nicer bells and whistles. But when hardware fails you and the last thing you want is going to the public (shop), soldering rod won't help you. A software solution becomes the easiest to set up, considering you know how to.
Boi am I so happy about my purchase! CentOS router FTW!
P.S. even though we've fled the city we are responsible citizens and we've self-quarantined ourselves for the 14 days period. No local person any closer than 10 meters for the whole period until we're cleared. Being away from the city gives us sooo much freedom! Especialy now, when cities are shitting bricks in fear.rant ap success story repeater quarantine wifi centos hotspot custom router coronavirus custom router4 -
I use my PC mainly for gaming, Anime and home stuff.
Pc is a big tower under the desk btw.
Main monitor is a 34", 1440p, 60hz from LG (it's rather old). Second one is a 29", 1080p monitor from Phillips which I also could rotate. I really have no idea what I should use it for and I never really put it on anyway.
I could do more or less professional recording for Twitch or whatever but I'm to lazy and no pro, so I only use it for some multiplayer game sessions.
Questions or ideas how to optimise my setup are welcome.
Cable management is a mess btw. -
Todays story: conversation between me and my brain about a app that i have planned for a long while.
The application is just a huge, specyfic json editor/manager for a game that i like. The game uses json files to determine unit charactetistics. So in order to make modding easier i want to make a tool for that that is fancier and easier to use than a notepad.
Brain> Lets make a app that allows you to mod the game easier!
Me> Good idea. How would you want to make it?
Brain> Lets use C# cause you main that lang currently and you have experience with json parser lib.
Me> That is true. So what do you wanna implement first?
Brain> Oh. I have thought about it before! I want to implement: (10 000 features) and maybe few more later!
Me> It sounds like a infinity project, shouldnt you implement like 1 or 2 features at first and then jump to other ones?
Brain> Yes... but i dont wanna refactor those features latter so let just implement them all at once!
Me> Dammit brain! Let just implement just one feature now! Like a simple json editor. You can use inhieritance to reuse the code later.
Brain> Ok...
* Starts with that one feature but one day later starts coding 6 more *
* Cant publish the app yet, the code looks like shit, gui is unfinished because brain wanted only to test those 6 unfinished features without propely implementing them *
Me> Brain WTF! You said that you are going to focus on one feature at the time!
Brain> I got carried a bit...
Me> ...
Me> Ok. I understand. Let just refactor the code and clean the project out of those unfinished features.
Brain> No. I have a depression now...
Me> FUCK.
* 2 month passes by without any progress on ANY of my projects*
current day
Brain> I still have depression...
Me> Ok i dont care about that anymore! Tell me something that i dont know!
Brain> Oh I have good news as well!
Me> ???
Brain> What about the home server that is going to store all mods made by the users so they can share it? It would be a good practice with networking!
Me> * Gives up *1 -
I have no idea how this tab opened, maybe I clicked something, but it's really interesting to look through, really beautiful websites (though personally some of those ratings seem harsh), especially interesting to gather new ways and ideas, some get as creative as letting you walk through a virtual museum of some sorts, with some nice music playing in the background.
the main website:
- https://www.awwwards.com/
Virtual museum:
- http://vr.jadedalloul.com/
- https://awwwards.com/sites/...4 -
This is long rant/story:
My manager conducts sync-up meetings regularly. The idea is to sync up all developers on current state of work. He does’t conduct stand-ups. He doesn't have time for it. He rather discusses on individual basis if we are blocked. The rule of the sync-up meeting is NOT to discuss any blockers or problems but simply explain each other what we are doing and how we plan next.
Sometime ago, the manager brought up and explained a new way of working in the sync-up meeting. At this point, a new developer in the team was absent due to sickness.
Today, there was a sync-up meeting and the manager started to question the new member about the newly introduced way of working. He was unaware of it and the manager never communicated this important information via email or any mode of communication available.
So, the conversation goes on as follows:
"Manager": — "Why didn’t you complete your task as per the new way of working?"
"Employee": — "Well, I've no idea. Am I supposed to do? I’ve been working as usual like any other"
"Manager": — "We have a new process and you have failed to follow it, so we’re late in delivering your work"
"Employee": — "I’ve already finished my work on time. I've raised a pull-request this morning"
"Manager": — "It doesn’t matter, it is not merged to main branch and so we can’t include your work in the release"
"Employee": — "I’ve no idea about the new process"
"Manager": — "Haven’t you asked around about what happened from previous meeting"
"Employee": — "Yes, I have. I was told which tasks were handled, but nothing about a new process"
"Manager": — "Aren’t you interested to learn it?"
"Employee": — "Why won’t I be interested? I was on a sick leave and I have no clue what happened here"
"Manager": — "What’s happened is past now, let’s not focus on it"
"Employee": — <Dumbfounded>
The Employee felt ashamed in front of everyone. He did his job but it didn’t pay off.
…. After an hour … the Employee had a talk with the Manager
"Employee": — "You shouldn’t have pointed me out in front of everyone. It made me feel real bad. You should have emailed this information if its important for the team."
"Manager": — "I have no idea what you’re talking about. When did I say so? I think you’ve a bright future in the team. You should be focusing on doing better things."
Employee goes back to work. A minute later, the Manager sends a PowerPoint screenshot of the process in the group chat.
**The Process**
It's about delivering release packages based on priorities defined by client. Each release package is a set of work items or requirements. Individual developers are assigned to work items. They are expected to deliver on planned delivery timelines in order to consider a work item into a release package.1 -
Okay so my brother in law has a laptop that is... To put it mildly, chockful of viruses of all sort, as it's an old machine still running w7 while still being online and an av about 7 years out of date.
So my bro in law (let's just call him my bro) asked me to install an adblock.
As I launched chrome and went to install it, how ever, the addon page said something like "Cannot install, chrome is managed by your company" - wtf?
Also, the out of date AV couldn't even be updated as its main service just wouldn't start.
Okay, something fishy going on... Uninstalled the old av, downloaded malware bytes and went to scan the whole pc.
Before I went to bed, it'd already found >150 detections. Though as the computer is so old, the progress was slow.
Thinking it would have enough time over night, I went to bed... Only to find out the next morning... It BSoD'd over night, and so none of the finds were removed.
Uuugh! Okay, so... Scanning out of a live booted linux it is I thought! Little did I know how much it'd infuriate me!
Looking through google, I found several live rescue images from popular AV brands. But:
1 - Kaspersky Sys Rescue -- Doesn't even support non-EFI systems
2 - Eset SysRescue -- Doesn't mount the system drive, terminal emulator is X64 while the CPU of the laptop is X86 meaning I cannot run that. Doesn't provide any info on username and passwords, had to dig around the image from the laptop I used to burn it to the USB drive to find the user was, in fact, called eset and had an empty password. Root had pass set but not in the image shadow file, so no idea really. Couldn't sudo as the eset user, except for the terminal emulator, which crashes thanks to the architecture mismatch.
3 - avast - live usb / cd cannot be downloaded from web, has to be installed through avast, which I really didn't want to install on my laptop just to make a rescue flash drive
4 - comodo - didn't even boot due to architecture mismatch
Fuck it! Sick and tired of this, I'm downloading Debian with XFCE. Switched to a tty1 after kernel loads, killed lightdm and Xserver to minimize usb drive reads, downloaded clamav (which got stuck on man-db update. After 20 minutes... I just killed it from a second tty, and the install finished successfully)
A definitions update, short manual skimover, and finally, got scanning!
Only... It's taking forever and not printing anything. Stracing the clamscan command showed it was... Loading the virus definitions lol... Okay, it's doing its thing, I can finally go have dinner
Man I didn't know x86 support got so weak in the couple years I haven't used Linux on a laptop lol.9 -
A young guy I work with burst into tears today, I had no idea what happened so I tried to comfort him and ask what was up.
It appears his main client had gone nuts with him because they wanted him to make an internet toolbar (think Ask.com) and he politely informed them toolbars doesn't really exist anymore and it wouldn't work on things like modern browsers or mobile devices.
Being given a polite but honest opinion was obviously something the client wasn't used to and knowing the guy was a young and fairly inexperienced, they started throwing very personal insults and asking him exactly what he knows about things (a lot more than them).
So being the big, bold, handsome senior developer I am, I immediately phoned the client back and told them to either come speak to me face-to-face and apologise to him in person or we'd terminate there contract with immediate effect. They're coming down tomorrow...
So part my rant, part a rant on behalf of a young developer who did nothing wrong and was treated like shit, I think we've all been there.
We'll see how this goes! Who the hell wants a toolbar anyway?!6 -
Stories like the one I'm about to tell you are just another reason why people hate Windows. I know I usually preach 'Don't hate everything' and shit, but this is a real big fucking deal when it hits your desktop for no reason.
Now, onto the actual story...
Background: Playing with my Oculus, fixing issues like forgetting to use USB3 and stuff. I learned about an issue with Nvidia GPUs, where in Windows, they can only support 4 simultaneous displays per GPU. I only have the one GPU in my system, Nova, so I have to unplug a monitor to get Oculus and its virtual window thingy working. Alright, friend gave me idea of using my old GPU to drive one of my lesser used monitors, my right one. Great idea I thought, I'll install it a bit later.
A bit later...
I plug the GPU in (after 3 tries of missing the PCI-E slot, fuckers) and for some reason I'm getting boot issues. It's booting to the wrong drive, sometimes it'll not even bother TRYING to boot, suddenly one of my hard drives isn't even being recognized in BIOS, fuck. Alright, is the GPU at least being recognized? Shit, it isn't. FUCKFUCKFUCK.
Oh wait. I just forgot the power cable Duh. Plug that in, same issues. Alright, now I have no idea. Try desperately to boot, but it just won't I start getting boot error 0xc000000f. Critical device not found. Alrighty then. Fuck my life, eh?
Remove the GPU, look around a bit while frantically trying to boot the system, and I notice an oddly bent SATA cable. I look at it and the bastard is FRAYED AT THE END! Fuck, that's my main SSD! I finally replace the SATA cable and boot, still the same error... Boot into a recovery environment, and guess what?
Windows has decided to change my boot partition, ya know, the FUCKING C: DRIVE, from NTFS to RAW format, stripping it of formatting! What the actual fuck Microsoft? You just took a shit on yourself while having a seizure on the fucking MOON! Fine, fuck you, I have recovery USB! Oh, shit, that won't boot... I have an old installation! Boot ITS recovery, try desperately to find a fix online... CHKDSK C: /F... alright, repairing, awesome! Repaired, I can see data, but not boot. So now I'm at the point where I'm waiting for a USB installer to be created over USB 2.0. Wheeeeeeeeee. FML.
THESE are the times I usually hate Windows a lot. And I do. But it gets MOST of my work done. Except when it does this.
I'm already pissed, so don't go into the comments and just hate on Windows completely. Just a little. The main post is for the main hate. Deal with it. And I know that someone is going to come at me "Ohhhhh, you need FUCKIN LIIIIIIINUUUUUUUXXXXXXXX!' Want to know my response to that?
No.3 -
Been bughunting the last week or so on this import job that is suddenly running so slowly that it takes more than 24h and is restarting on top of itself.
It used to run in anywhere from 4 to 8 hours, which was bad enough. You see, it ran on timer scheduled by our main site. So our deployment window was determined by when this job finished, and if it didn't finish during work hours, then no deployment that day.
So we got the idea to move it to a separate service to eliminate that deployment window bottleneck. And now, seemingly unrelated, it is just running slow as shit.
There is a lot of bad design in the code, and we know we want to build a completely new solution. But we also absolutely need this import to run every day until a better solution can take over.
We've taken care of some of the most obvious problems that could cause the poor performance, but it's unclear whether it's going to be enough. And with a runtime of about a day and wild variations of the most atomic partial imports, it's extremely tedious to test as well...3 -
How the Common Lisp Community will eventually die soon:
Clojure is the only main Lisp dialect having some sort of heavy presence in today's modern development world. Yes, I am aware of other(if not all) environments in which Lisp or a dialect of it is being used for multiple things, CADLisp, Guile Scheme, Racket, etc etc whatever. I know.
Not only is Clojure present in the JVM(I give 0 fucks about whether you like it or not also) but also has compilation targets for Javascript via Clojurescript. This means that i can effectively target backend server operations, damn near everything inside of the JVM and also the browser.
Yet, there is no real point in using Lisp or Clojure other than for pure academic endeavours, for which it is not even a pure functional programming language, you would be better served learning something else if you want true functional purity. But also because examples for one of the major areas in software development, mainly web, are really lacking, like, lacking bad, as in, so bad most examples are few in between and there is no interest in making it target complete beginners or anything of the like.
But my biggest fucking gripe with Lisp as a whole, specifically Common Lisp, is how monstrously outdated the documentation you can find available for it is.
Say for example, aesthetics, these play a large role, a developer(web mostly) used to the attention to detail placed by the Rails community, the Laravel community, django, etc etc would find on documentation that came straight from the 90s. There is no passion for design, no attention to detail, it makes it look hacky and abandoned. Everything in Lisp looks so severely abandoned for which the most abundant pool of resources are not even made present on a fully general purpose language constrained as a scripting environment for a text editor: Emacs with Emacs Lisp which I reckon is about the most used Lisp dialect in the planet, even more so than Clojure or Common Lisp.
I just want the language to be made popular again y'know? To have a killer app or framework for it much like there is Rails for Ruby, Phoenix for Elixir, etc etc. But unless I get some serious hacking done to bring about the level of maturity of those frameworks(which I won't nor I believe I can) then it will always remain a niche language with funny syntax.
To be honest I am phasing away my use of Clojure in place of Pharo. I just hate seeing how much the Lisp community does in an effort to keep shit as obscure and far away from the reach of new developers as possible. I also DESPISE reading other Lisp developer's code. Far too fucking dense and clever for anyone other than the original developer to read and add to. The idea that Lisp allows for read only code is far too real man.
Lisp has been DED for a while, and the zombies that remain will soon disappear because the community was too busy playing circle jerks for anything real to be done with it. Even as the original language of AI it has been severely outshined by the likes of Python, R and Scala, shit, even Javascript has more presence in AI than Lisp does now a days.9 -
when you have to use one language inside of another, and you basically have to call functions allowing you to call the other's language function within it, and you get the hell confused, since it gets harder and harder to see what is what and who can call who and how, and the compiler ofc. won't say anything about it since it only cares about the main language you are in and not the nesting of the other...
I just have no idea what I'm doing right now, or if my thought process and understanding of this is even close to where it is supposed to be.
D: I'm just confused and insecure about this right now....
time for experiments to figure this out, and get the hang of it13 -
I just found out my parents have less than $30 in the bank by the end of each month after all expenses...
We are not living. We are barely surviving....
Every day in my house it is dark and the lights are off. They turn all lights off in order to avoid getting a high electricity bill. I have to use my phone's flashlight as the main source of light in my own house, as if i live in abandoned cottage in the middle of a forest.....
Both my parents are jobless (have been their entire lives). They just borrow money from their family members and grandparents to pay these bills every month. They depended on luck their whole lives. A luck in context of "maybe if i dont work anything at all then a huge pile of money will fall down from the sky!".
So now I, as their son, have to grow up in extreme poverty and fight my way up, because of DUMB, STUPID people. They are good people, but what does being a good person bring if you are fucking stupid and valueless?
I knew i was poor but today i found out i was THIS poor. I had no idea we were THIS much poor. Because today my 4g internet got cut off due to not paying bills. The bill is $30. My dad cant pay it cause he doesnt have $30 in the bank. I was in shock. So i had to pay it
My $8.125 usd an hour backend software engineer + DevOps engineer (2 jobs in 1), is considered as LUXURIOUS SALARY, in the most corrupted country of Europe -- SERBIA 🇷🇸
When i tell the world i make $8 an hour with a computer science degree working as a software engineer, they laugh at me. People mock me "bro even a mcdonalds worker earns $17/hour what are you doing" im doing what i was born into -- born into poverty of a third world shithole country.
With my $8 an hour salary, i am in TOP 3% of the HIGHEST earners in serbia. Can you fucking imagine how miserable lives do people live if this is not even an average salary, but among the ELITE salary? Because the average salary in Serbia, is $3.75 usd an hour, sometimes even less than that.
When people say "its not about luck its about hard work", please, GO. FUCK. YOURSELF.
Go and be born in a shithole third world country. Now on top of that be born in poverty due to poor decisions of your parents. Go ahead and try it. Lets see how hard you fucking have to work to get to the same level compared to someone who was born into for example America, where you get paid 6 figures immediately after graduating computer science. Or on top of that, you're born in a wealthy family in america. Did you work hard to be born in the 1st class freak show or were you LUCKY to be gifted such life?
My whole life i have been fighting to get money and escape this misery due to poor decisions of my parents.
Very ironically, my parents have lived extremely luxurious lives in the 90s. They had 5 cars. 1 huge house with a backyard garage private office private jacuzzi private gym. This house was worth at least 500k in the 90s. Today this house would cost at least 1.5 or 2 million. They went to luxurious travels. Hotels of $5000 per night per person. Literally wasted 45k in 3 days just for hotel. They even GAVE AWAY FOR FREE money to our relatives and cousins, taking them on luxurious vacations for free etc. None of those people appreciated them, none of them came to help them in tough times, everyone forgot about them and abandoned us.
Like i said, my parents are good people, but what does it profit being a good person if you are FUCKING STUPID.
They were extremely LUCKY but their STUPIDNESS has made them broke. I couldn't be THIS much fucking stupid even if i tried hard.
Nobody is coming to save us. No one cares. Its all up to me now. All the pressure and stress and poverty is passed and inherited onto my life now. its up to me to either get rich or end my STUPID bloodline
I am living a very difficult life and no one seems to understand this...26 -
Prequel to my previous post:
I received an offer from a startup that did not meet the originally advertised salary range. In every other aspect this place seemed like where I'd enjoy working the most and each previous interaction made a very good impression on me. So needless to say this was quite a shock.
They immediately apologised and explained the situation. They only now started to expand to and hire from my location (which can be verified) and I would be the very first person from this location (seems true too but I could only really verify this after joining). They explained the salary range I had seen was for their main hub location (accurate too) and said that the recruiter who posted the ad did not adjust it to mine. I asked why tf they didn't notify me of this earlier and they said they are super busy with everything, are new to location based salaries and normally don't check the recruiters posts as it should be her work.
Now, even if this is totally true, it was an awful sudden shock and felt a bit like a scam - totally contradicting my previous impressions.
Here are a couple of other points that I'll just sum to save time:
- before seeing the job ad I had a *reasonable* salary expectation even lower than their actual offering
- on the ad, the bottom end of their salary range far exceeded my reasonable exp.
- the relative level of my position would be even higher up the range that I have seen realised would be top 5%
- having had seen the ad, I started to have an *ideal* expectation being the bottom of the range
- in first interview I told them my exp. is the bottom end of their range +- a bit
- I told this to a dev guy who has no fucking idea about this stuff and I don't blame him but he noted this down to higher management
- generally I have not been very precise of my expectation as previously I only had lower class dev jobs, this would be the first decent.
- Hence I have seen an enormously high variation in salaries offered to me so this advertised range whilst high seemed possible
Now, with all this in mind I posted here a question about what some of you would do in my position.
I received the following group of responses:
- it's a scam, bad place, run
- it's an intentional (common) trick
- people make mistakes like this esp. startups so find out if this is intentional or not
- just decide if their current offering is reasonable for the position and location, ignore the rest
- just decide if the amount is enough
- location based salaries are retarded, don't work there (I kinda agree and also don't)
- if they can afford the higher pay in another place they should have no prob. meeting the range
- it's more important that you'd enjoy it there if the pay is sufficient for general needs
- company culture is generally more important these days
- fuck recruiters and hr people (amen to that btw)
Here is what I did:
Regardless of whether I believe them or not I hyperfocused on the potential scam/trick aspect.
I told them that every other interaction with them was positive and would love to join them but this was a really bad impression and feels like they are playing with me. I made up some bullshit previous examples of companies trying the same trick on me (which obv. never happened).
Then I said that I think to resolve this they should invite me to their main office for a day (all interviews had been online) and if after that they are still not ok to offer me at least the bottom of the adv. range then we can part ways. Otherwise this should ensure both of us that we are a good match, etc.
They seemed to love the idea and said that I should go there for x till y (3 days) and if we don't hate each other by the end I'll get the amount at the bottom of the range and they apologised again about it looking like a scam, etc.
So thanks a bunch again to those of you who provided valuable input. -
Not dev, but a perf-eng confidence boost.
Our company was hired by a client to onboard perf-testing process and do some perf-related go-live stuff. Basically, make sure the app meets the SLAs.
Our company mobilized some internal resources for the task. The had 3-4 months. 2 months later they realized they won't pull it off. What a shame...
When the threat of dropping the ball and losing the client and recommendations became very real, they engaged us. Half the time, half the resources, a worried and annoyed client who now wants to control the whole initiative.
During the first 2 meetings we get the general idea of what they have, what they want. We take some time to prepare a plan to make it on time. The client argues our plan, mostly because one of the main points was mocking downstream dependencies [integrations]. He asks, then demands to do it all with live integrations. We explain why this is an incredible risk and why we should do it the proposed way. He disagrees.
Alright then... Maybe he knows smth we don't. Let's do it the risky way...
A month later test results are far from the target. I did my best with app de-bottlenecking and fine-tuning. But since the live integrations do not deliver, they hide other bottlenecks. The initiative is stuck.
Finally, the client agrees to do it with mocking. But now there's no time left as it will take almost a month to prepare mocks...
The client agrees we should have done it our way from the start. They postpone the go-live and we carry out our testing and tuning the right way.
That was one expensive and long "I told you so". But it boosted our [perf team's] confidence to the top and beyond :)
don't tell us how to do our job, unless you do want extra expenses -
//First rant
So I've been working trying to get a file exporter for a binary file format mostly reverse engineered - 2001 Super Monkey Ball 2 (GameCube) if anyone's interested.
Everything works fine, goals show up in the right places, wormholes work as intended, etc. That is everything, except every single level you create will be invisible, or crash (Depending on which version of Dolphin emu you use).
This happens whenever trying to specify object names for 3D objects. I checked, all the many offsets seem correct, Object names are correct. Tried both null terminated strings and fixed 80 character strings - nothing.
Some other guy also made an exporter that works, however the code is an absolute mess - basically unreadable. It also lacks some newer parts of the file spec, which is the main reason as to why I'm rewriting it.
And as I'm working with an almost entirely unheard of file format, there are few people to go to for help. The 2 I know who are also familiar with the LZ file format have no idea either...
Sigh.1 -
Just a quick rant on JavaScript,
So there’s a lot of people hating javascript, and while not a long time ago i was part of them, but I changed my opinion a little.
I think JavaScript is a great way to deal with website programming as it is quick and efficient, but I would not say to program directly on it, use a js-compilable language (CoffeScript, TypeScript, Kotlin(I think), etc.), but then you might say: “Well, no need for js then, compile it in byte code”. That would break the point of how I see web design/dev. The main intent behind webpages is to have an easy and fast way to send code to other computers to render them, that’s why it is interpreted: “Easy to send” and “*All* computers can handle it” with the proper browser. You need to be able to change the way the website is rendered and/or works sometimes, for diverse reasons like copy/pasting data, make it render properly or use plugins/add-ons to change that code to suit your needs.
I think js should be kept as a “readable byte-code”, so that means: {
Keep comments when compiling the js-compilable code,
Add standardized machine-readable comments that will indicate to smart code viewers how to show a particular thing (Like have a higher-end function compiled in js shown as a minimized code with explanations of the function)
Keep it nicely formated and don’t obfuscate (coz that’s annoying)
Etc.
}
So you bypass the quirks and all that pesky js stuff, while keeping it’s good sides.
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
Part 2:
Web design for non-web:
Ok so things like node.js, electron, react-native and all that stuff; I won’t say they’re bad but...
Why we have this is because web designers wanted to make desktop apps and were like “Hey! Making web pages is easy! Let’s port it to desktop”, the problem is: Web technologies were made to work on a restricted canvas, aka a browser. It’s good on web for reasons mention earlier and more. But it’s not on desktop! You’re trying to push it outside of those boundaries. It’s difficult to make it break that canvas and go outside, make something that really works! For social media clients and that kind of stuff that you want to make a little more inclusive, yes! it’s a great idea (hello devrantron ;), but not if it’s an exact same copy of the website, just use the website. But for things that are supposed to really make use of YOUR computer; no!
I see those PWA (progressive webapps aka mobile app, but it’s an offline website”), I stand for the same positions, social media and those sort of things: yes, great idea! Games? 🤢.
I have way more to say but I have difficulties to remember them while reading, so feel free to comment your thoughts
Lol, “just a quick rant”1 -
Agreed to help out these 2 guys on a minecraft mod pack idea they had... stipulated this is a side project for me and I'm not going to dedicate too much time to it. They were fine with that
Fast forward a few months main 'idea guy' loses his job so spends more time on the pack and starts hounding me for progress and updates and throwing more and more things for me to do. He's also getting progressively angrier at my lack of substantial progress
Like fuck dude i told you this is s fucking side project to me. I'll work on it when I fucking want to. Hell I'm one more shouting match away from telling him to fuck off and find some other dumbass to be the only programmer in this group and get ignored when it comes to fucking anything else
Their idea of 'source control' is a fucking multi Mc instance that gets shared by the main guy every time HE changes anything. Any scripts or configuration edits I do I need to walk him through so he can update that instance
No clue why I put up with it so long. Maybe because other guy was a cool friend back in college. But at this point they both can fuck off6 -
In a time where a web dev is expected to know, well.. everything... Backend -JAVA, python, nodejs and C++ would be great.
Front- angular, react, other 10 libs
DBs -sql, mongo, redis, elastic, kafka, rebbitmq
Also be devops on the side with AWS and docker kubernetis and more stuff
How the f is that possible?
In my real job for the last couple of years and different companies, I usually use 1 language/framework & 1 main DB.. and although it's possible in some companies, but in mine, ppl dont get access to AWS etc..
So let's say there's me.. a server side dev for years.
So I decide to be better and learn Golang.. cool lang, never needed in my job, after few days of not using it I forgot all I learned and that was it.
Then I realized I gotta know some frontend cause everyone want a fullstack ninja nowadays.. so I tried Vuejs.. it was amazing .. never got to use it at work, cause i was a backend, and we didnt use frameworks on our products back then..
Also forgotten.
Then I decided to learned nodejs, because this is the coolest thing ever.. hated it, but whatever... Never got to use it at work, cause everything was written in other lang which the whole team knew... Forgot the little i knew.
Then I decided, its time to see what Angular is, cause everyone started using it... similar idea to vuejs which i barely remembered, but wow it's a lot of code to remember, or I'll have to google everything.. so I went over it, but can't say i even learned it.
Now Im trying to move on to python, which, I really am learning in depth.. however, since I dont have real experience with it, no one gives me a shot at being a python dev, so again i feel like I'm trying to memorize syntax and wasting my time..
Tired of seeing React in all job ads, i decided to have a look what's that all about.. and whadoyaknow... It's fucking the same idea as vue/angular with again different syntax..
THIS IS CRAZY!
in how many syntaxes do i need to know how to make a fucking crud api, and a page with same fucking post form, TO BE A GOOD PROGRAMMER?!?6 -
For the one I currently have. Spent about 2 weeks looking to get as much of my PHP skillset in the right place since I knew PHP was their main technology as well as JS, C# and VB.NET, we seldom use them tbh, and it is mostly extension or maintenance stuff, so I focused on PHP.
I was not panicking, I rarely ever do, but my body tends to disagree with my state of mind and I can feel myself trembling in certain situations, such as the interview.
The interview was on Monday and my last day of preparation was Sunday (obviously) so what I did was drank a lot of beer and played videogames, I just wanted to take my mind off things. I was, and have always been annoyingly confident in myself and could not understand why I was feeling so nervous internally.
Everything went away when the manager came to greet me, lovely looking gal with an awesome sense of style and a big smile, we clicked instantly and to this day the place is kinda like my second home, as hectic as it is to work in an institution of this size it is really my peace and quiet zone. The entire I.T department is a big family, before the pandemic we would go to bbqs together all the time, would go to a friend's ranch to shoot shit and just chill, parties and gatherings, it really is a nice place to be at and they take the "we are family" very fucking seriously, I fucking love it. The boss lady ain't here no more, but she recommended me for the position and well, here I am.
I severely hope everyone here finds the same kind of place, there are a lot of assholes in this industry and a lot of places that seem very into the idea of making you absolutely miserable with no chance of leveling up, I know because all other jobs previous to this place was the same way for me.
Have faith, keep them chins up, and don't ever fucking let anyone make you think you are something you are not. You glorious beautiful basterds!3 -
I need some opinions on Rx and MVVM. Its being done in iOS, but I think its fairly general programming question.
The small team I joined is using Rx (I've never used it before) and I'm trying to learn and catch up to them. Looking at the code, I think there are thousands of lines of over-engineered code that could be done so much simpler. From a non Rx point of view, I think we are following some bad practises, from an Rx point of view the guys are saying this is what Rx needs to be. I'm trying to discuss this with them, but they are shooting me down saying I just don't know enough about Rx. Maybe thats true, maybe I just don't get it, but they aren't exactly explaining it, just telling me i'm wrong and they are right. I need another set of eyes on this to see if it is just me.
One of the main points is that there are many places where network errors shouldn't complete the observable (i.e. can't call onError), I understand this concept. I read a response from the RxSwift maintainers that said the way to handle this was to wrap your response type in a class with a generic type (e.g. Result<T>) that contained a property to denote a success or error and maybe an error message. This way errors (such as incorrect password) won't cause it to complete, everything goes through onNext and users can retry / go again, makes sense.
The guys are saying that this breaks Rx principals and MVVM. Instead we need separate observables for every type of response. So we have viewModels that contain:
- isSuccessObservable
- isErrorObservable
- isLoadingObservable
- isRefreshingObservable
- etc. (some have close to 10 different observables)
To me this is overkill to have so many streams all frequently only ever delivering 1 or none messages. I would have aimed for 1 observable, that returns an object holding properties for each of these things, and sending several messages. Is that not what streams are suppose to do? Then the local code can use filters as part of the subscriptions. The major benefit of having 1 is that it becomes easier to make it generic and abstract away, which brings us to point 2.
Currently, due to each viewModel having different numbers of observables and methods of different names (but effectively doing the same thing) the guys create a new custom protocol (equivalent of a java interface) for each viewModel with its N observables. The viewModel creates local variables of PublishSubject, BehavorSubject, Driver etc. Then it implements the procotol / interface and casts all the local's back as observables. e.g.
protocol CarViewModelType {
isSuccessObservable: Observable<Car>
isErrorObservable: Observable<String>
isLoadingObservable: Observable<Void>
}
class CarViewModel {
isSuccessSubject: PublishSubject<Car>
isErrorSubject: PublishSubject<String>
isLoadingSubject: PublishSubject<Void>
// other stuff
}
extension CarViewModel: CarViewModelType {
isSuccessObservable {
return isSuccessSubject.asObservable()
}
isErrorObservable {
return isSuccessSubject.asObservable()
}
isLoadingObservable {
return isSuccessSubject.asObservable()
}
}
This has to be created by hand, for every viewModel, of which there is one for every screen and there is 40+ screens. This same structure is copy / pasted into every viewModel. As mentioned above I would like to make this all generic. Have a generic protocol for all viewModels to define 1 Observable, 1 local variable of generic type and handle the cast back automatically. The method to trigger all the business logic could also have its name standardised ("load", "fetch", "processData" etc.). Maybe we could also figure out a few other bits too. This would remove a lot of code, as well as making the code more readable (less messy), and make unit testing much easier. While it could never do everything automatically we could test the basic responses of each viewModel and have at least some testing done by default and not have everything be very boilerplate-y and copy / paste nature.
The guys think that subscribing to isSuccess and / or isError is perfect Rx + MVVM. But for some reason subscribing to status.filter(success) or status.filter(!success) is a sin of unimaginable proportions. Also the idea of multiple buttons and events all "reacting" to the same method named e.g. "load", is bad Rx (why if they all need to do the same thing?)
My thoughts on this are:
- To me its indentical in meaning and architecture, one way is just significantly less code.
- Lets say I agree its not textbook, is it not worth bending the rules to reduce code.
- We are already breaking the rules of MVVM to introduce coordinators (which I hate, as they are adding even more unnecessary code), so why is breaking it to reduce code such a no no.
Any thoughts on the above? Am I way off the mark or is this classic Rx?16 -
I have an internal perception of myself. It isn't an image like a memory is, and it's not a description such as a sentence, but it's purely a feeling. I feel it in the core of my soul, not my body. And when I listen to Minecraft volume Alpha, it transforms my internal perception for the duration of album and the feeling lingers afterwards.
By now I must have a year of in game time and hearing those sounds and seeing the old textures brings be back to the days of middle school playing Minecraft Pocket Edition Lite on my first phone.
I wasn't happier back then. I'm just as happy today as I was back then. But restoring my inner self to that time, just briefly, is wonderful.
I'm thankful to Minecraft for being a great game. It has seen many changes in it's public perception. In the beginning, it was for all ages. Deadmau5 played it, notch developed it. It was a different beast. Then, without the content of the game changing at all, it became a child's game. Then it became a child's game that PewDiePie played and it was acceptable to play without any shame again. And now, once again, it is on a downward slope to being a child's game.
No matter what the shifting sands of public view on the game is, I will always hold this game close to my heart and I will continue to play it whether it's socially acceptable or not. If for nothing else than to remind my soul of a simpler time.1 -
Once upon a time i had a great idea.
Because i couldnt be bothered to do anything productive i created a simple app in the C# that would look into every .js file (from a game that uses it for the gui/main menu) and search for "//todo" lines.
I did it mostly for kicks. I got that idea when i encountered one //todo in a file when i was trying to mod that game.
Yes i know grep exists: fuck you.
It would have taken me more time to learn that than to write that 20 line program...
The result? Over 30 lines of //todo with some briliant pearls in the type of:
>Temp workaround because X
>Workaround for race condition
>Clean that up
>Obsolete
When i return home i will post real quotes. They might be amusing to read...
The game is based on a custom C++ engine. HTML, CSS and JS is used for main menu and some graphical interface in game.
The most amusing thing is that this inefficient sack of chicken shit is powering one of the biggest (no playerbase but unit, world, gameplay vise) rts that i have ever played.
But still in spite of a dead community, buggy gui as shit and other problems i love this game and a lot of other people love it too. It is a great game when it works correctly.
To the interested: JS portion uses jquerry and knockout lib.14 -
Currently working on a new project with a group of people, (about 8 guys, no ladies 😒).
Anyways, out of the eight, there are only 3 devs, 3 designers and 2 main idea guys. I'm a member of all 3 sets and to top it of, the other designers don't know what they are doing.
Life is beautiful, fucking beautiful.2 -
whining
So I'm sitting here, working my ass off developing something far above my current skills.
On the opposite side of the table sits relatively new guy, working as a part of support "department". Relatively new means that he's with the company for around 1 month.
The guy started speaking to me. I took off my headphones and listened, while still reading code. He told me about how he'll have to carry out the recruitment process for the support department today. And that he was told to present himself as a leader of the department, blah blah blah.
To be honest, I stopped listening at that moment. I got really pissed. And it's not because of the absolute lack of the professionalism of the company (srsly, make a new guy do recruitment work?). It's because I asked boss to get someone to help me half a year ago. He did employ around 3 new support people (4th today). But no one for me.
And he has the balls to tell me that I NEED to work harder to make it for deadline that he imposed. That he won't employ anyone new for me because new people could stole his "idea". Because MAYBE in a month one guy, a junior like me, will come back (he's on a break to finish his master thesis).
Product I'm working on is probably the main reason other companies are even buying the system he's reselling. As a student I'm working only half-time, so those deadlines are almost impossible.
I wonder how he'll manage if I'll get accepted for the work I'm currently applying.4 -
this is a very Stupid idea so i wont put it to the dssue tracker. but. how about enabling people to host their own devRant servers with their very own rules? this way, the main server will have a bit more breathing room and common interests could have a shared server.
the client Would have the current buttons + empty buttons that can be given a special function from server side.
also, it would be possible to view rants from multiple servers (color coded so theres no mixup in button functions) in one feed.
the client would come with the main server on first start up. the most popular servers would be listed in the settings. also, rants with 50++ would automatically be put into the main server.6 -
Hm... Apparently I've been doing TDD all along... it's just that I don't save the tests in a seperate project.
I just keep editing Main() to test whatever i'm working on (each class).
Also the NJTransit site is sneaky as ****. It seems the devs know a bit about how to prevent site scraping by checking Headers and Client information...
Took all afternoon to get this test to pass....
it works in Chrome but not in my code... and even after I spoofed all the headers... including GZIP.... it wouldn't work for multiple requests...
I need to create a new WebClient for each request.... no idea how it knows the difference or why it cares... maybe it's a WebClient bug...
And this is only the test app. Originally was supposed to be built in React Native but that has it's own problems...
Books are too old, the examples don't work with the latest...
But I guess this also has a upside... learn TDD and React rather than just React... hopefully can finish this week...
I'm actually on vacation... yea... i still code like a work day... 10AM - 8PM....2 -
So my friend had an idea for a game and asked me if I could help him develop it. Now, he understands how the code works and can even write quite a bit himself. On several occasions (including today) this happened:
*writes code*
*tests code*
Me: Hmm... this isn't working like it's supposed to
Friend: It looks pretty good, maybe check to see if everything is in the right order
*checks code*
*tries alternative solution*
*checks again*
Me and friend: Well this is even worse than before
*presses ctrl+z a lot to go back to the original*
*opens new project*
*writes new code for same purpose*
*checks code*
Both of us: IT WORKS!!!
*checks again just to be sure*
Both of us: IT STILL WORKS!!!
*compares new code to original code*
Me: It's the exact same code with different variable names!!! Why did this not work before?
Friend: No idea
*puts new code into main program*
*it still doesn't work*
Reasons Java makes me cry sometimes4 -
I once was righting a C project for my professor, and I had a problem that I didn't know the solution, once I copied the script in the main into a function it worked perfectly.
And still have no idea of what happened.1 -
This is more of an essay than a rant. TLDR at the end. I simply can't choose from all the shitty lecturers I've had, so I'm going to have to go through them one by one. But of background. I'm currently in 7th year of college, I did a multimedia degree in 2 years, a intro course to Software Dev and I'm currently in my final year of my Software Dev degree. So let's start.
Intro Software Course
- we had a database module, which was thought by, I shit you not, the head of the psychology course in the college, she attempted to teach us Databases using access. And not even using SQL, using access GUI components and it's query builder. Need I say more?
1st year software dev
- We had a networking module, the guy that taught the labs, he literally didn't say more than 12 words the entire 12 week semester, his answer to any question you asked him was a grunt and "research it"
- We had a psychology module, I have no fucking idea why, but instead of learning something useful we were told to read this and get in touch with your feelings...
- database module. Yes we actually did SQL here, 12 weeks of select statements and normal form, talked about by a guy in a monotone voice, who sounded like he was contemplating bringing in an assault riffle some day. Also instead of using MySQL he decided to use Ingres. Why I will never know.
2nd Year Software Dev
- We had a module called Algorithms and Data Structures. The lecturer gave us problems she couldn't solve. Simple problems. She was also crazy. Absolutely nuts.
- Object Orientated Programming. I had this lecturer for 3 semesters up until 3rd year. This guy did COBOLT in college, graduated in the 70s or something and went straight into teaching, he taught us Java for nearly 2 years. He literally copied and pasted texts from PDFs and read through them in class. He told myself and another guy at one stage he really didn't care, and was just counting down the days to his retirement.
- Databases again, different lecturer from 1st year, taught us for 2 semesters (24 weeks) and somehow managed to teach us nothing.
3rd Year Software Dev
- software engineering.. This is where the biggest cunt I've ever met was introduced. He arrives into class 15 minutes late every time without fail, talks shit about stuff that has no relevancy to the topic at all, tries to turn everything into a rugby metaphor and every time you ask a question he somehow dodges it and swiftly changes topic. This cunts past profession? A Project Manager. Fucking typical. This dickhead has also thought me 2 other modules.
4th yr Software Dev
- El cunto mentioned above for 2 more modules. Need I say more.
- real time systems, this module took the piss, the module was written by the lecturer which is what earns his space here. Assignments given to us, which required more time to do than we had in labs so we had to work at home, the problem we that is we were using an obscure RTOS called OS9 which would only work on the college computers. When brought to the lecturers attention he just said "figure it out"
Internet of Things - There was 2 lecturers, each lecturer seemingly working off a different plan, one week you'd have one lecturer, the next would be the other one going on about something completely different and unrelated to anything else we'd done.
Some lecturers didn't even make this list as I couldn't be bothered trying to think back about how shit other ones were. These were the ones that always stood out in my mind.
My main take away point from this is that you go to college for the paper which says you have a degree. Learning things that are going to benefit you in a career is up to yourself.
TLDR; 90% of my college lectures were shit. You need to learn useful stuff yourself.1 -
I think I finally, really, comprehend why secret societies have historically been created... I mean the potentially logical ones. This train of thought is logically terrifying.
I want a logic check.
I've been jokingly mentioning some of my totally true, practically useless in most scenarios, skills/specific fields of knowledge/ability under a moniker of 'extremely useful, assuming apocalyptic event' for years. Things like advanced knowledge of Coefficients of glass expansion, Fortran, various things that have caused friends to refer to me as MacGyver after the reboot came out.
In recent years, I've personally encountered several varieties of the ones defined by helplessness, self-victimisation, some version of a real disability... that theyve expounded into a personified personal nemesis-- to flashily battle yet never overcome, etc... the vast majority perplexing me as to why that's a valid form of life to them... it's not that they never consider some other way; the ball is just quickly dropped and never picked back up.
College?(not that I'm a big fan) they wish they could but so expensive... aide? The form was hard/confusing/past-due...
Lookup/learn something more indepth than a tiktok? *some self-deprecating bs*
Yet it's "I always wanted to do/be/learn X"
Shows like 'How It's Made' fascinate, but don't inspire enough for a 5min google query.
In the dev world its a clear, inverted pyramid-- one of the first posts I saw when I rejoined here was ostream's rant on Apple sucking because after they stop support/updates you "can't" load a different OS... ofc you can. But several comments down... no mention of that... i think it was @LensFlare who was the only one in ~15 respondents to point out the core logical fallacy.
Basic shit is totally forgotten... try asking some random adults what plastic is made from... or pay attention to how many people declare they have a gluten "allergy".
I get people frequently telling me that things im pointing out as differences don't matter because "it's just semantics"... semantics is literally the epitome of "significance", with roots in 'meaning' and 'truth'
Back to the main issue... We are in a world where DIY is typically something you pay more to do as a catered experience than actually learning anything, people destroy their own arguments hopes of validity unwittingly often by stating the arguement, get 'offended' or 'triggered' by factual statements, propagate misinformation and bastardise words until MW needs money enough to print a new version, likely adding the misuse as an actual definition and basic knowledge and the thought to actually learn is vetoed by the existence of google translate, the wisdom of tiktok and the pure brillance of troubleshooting every random linux issue you have from not knowing basic CLI and thinking linux makes you cool, with chmod 777 because so many other dumbasses on forums keep propagating misinformation. Ask them what 777 means, most have no clue... as they didnt consider googling that one before putting it in a terminal several times.
The number of humans that actually know the basic shit that the infrastructure of the world is built on keeps decreasing... and we aren't even keeping a running tally.
The structure of the internet has the right idea... dns- 13 active master root servers, with multiple redundancies if they start dropping... hell ICANN is like a secret society but publicly known/obfuscated... the modern internet hasnt had a global meltdown... aside from the lack of censorship and global availability changing the social definition of a valid use of braincells to essentially propagating spam as if it's factual and educational.
So many 'devs' so few understanding what a driver is, much less how to write one... irl network techs that don't know what dhcp is or that their equiptment has logs... professionals in deducated fields like Autism research/coping... no clue why it was called "autism", obesity and malnutrition simultaneously existing in the same humans... it's like we need to prepare a subterranean life-supporting vault and stock it like Noah's ark... just including the basic knowledge of things that used to be common/obvious. I've literally had 2 different, early 20s, female, certified medical assistants taking my medical history legitimately ask if not having a uterus made it harder to get pregnant...i wish i was joking.
Any ideas better than a subterranean human vault system? It's not like we can simply store detailed explanations, guides, media... unless we find a way to make them into obfuscated tiktok videos apparently on nonsense or makeup tutorials.11 -
Why don't most products follow a minimalist approach right till the end? Most start ups start like that. But when things begin to fall apart or become better they tend to deviate. While the earlier reason is understandable (because no one likes to fail so they'll do anything to not fail), the second reason seems to me more of an organisational creation than what the users want.
From my understanding as the product becomes popular positions (managerial or product) created need to justify their presence. What do they do? So the breath of fresh air brings in a lot of garbage that may not be required and would be in deviance from the main product idea.
It is debatable that audiences would not accept such ideas that are being brought in, because hey audiences are smart. And they are. But the organisation in order to justify the original wrong decision tends to push their new features (through offers or marketing campaigns). This makes the organisation invested into a wrong direction and security of jobs of the new managers/product people. Win win situation, but lose lose for the organisation and the original product.rant minimal minimalism organisational priorities managers product management logic minimalistic approach minimalistic organisation hell -
My main problem with programming on android phones(not for android) is it's keyboard, almost none of default layouts don't have the needed buttons(i.e. ; [ ] ( ) ...), I managed to find a good one "Hacker's Keyboard", 5 rows almost every button(even shift, ctrl and arrow keys). But here's the problem with this: it's buttons width is very low on portrait mode, on landscape, even if you're used to lanscape typing, you won't be able to see shit because it's covering most of screen.
"Hey, what about an external keyboard", well it's not totally a bad idea, but you would need a stand for your phone, and if it's connecting via usb and not bt, you have to buy a usb2[yourPort] convertion, besides I want to hold my phone while typing "How about you make you make your own bt/usb attachable mini keyboard for your phone.", Wow that's a very good idea, it would take maybe a year to make it, but maybe instead of making the whole thing myself I can buy a mini keyboard and make the attaching part myself, it can't be THAT hard, right? Need a 3D printer(√), need time(have alot of it), need to design it(no problem), now start... uhhh nevermind, who am I kiddin', I won't be able to make such a thing, just use that "Hacker's Keyboard".24 -
Oh my freaking gosh! Okay so im "lead tech" on the robotics team. Ive come up with several ways we can improve our system. I had it all planed out and calculated but when i run it by the teacher running the team, EVERY SINGLE FRICKING TIME they shoot it down and they say "that just adds another layer of complexity" and I just want to yell because sure its a bit more complicated but so the fuck what?!?!? It works (theoritically according to math) efficiently and more efficiently than what their doing which is almost unknown to me because why the fuck not?! And omg i sware my entire team has the attentionspan of an ant because any time i need them to explain something, they get dustracted with whatever the hell they get distracted with and they NEVER SHUT THE FUCK UP. Any who other than that being super annoying thats not the point. Point is, the fucking teacher is afraid of making things a bit more complicated for no good reason and ever idea i have they shoot it down so (even as lead tech, and main programmer) i feel extra useless and im not gonna be here next year, so idk what the fuck there gonna do when i leave. (Like seriousally, im not even being conceded, ive been programming for several years. The other programmers have no idea what there doing) but if they dont learn that complexity isnt bad this team will NEVER get higher in the competition.4
-
Failed to make a decent demo for client because spaghetti code. I want to work on the project to sort out codebase to avoid same thing happening again, boss wont hear it and switches me to another project of which I have little knowledge of the stack when we have another guy who has experience in it.
My main project (the one I want to sort out) is so big it should have 4 people full time on it, but it has me and one part time outsourced contractor. I was hired as a meteor dev and he makes me work on an angular project like its totally easy to switch from meteor to node+angular+Jade.
I am a junior dev, boss has no idea how to project manage and ignores advice I give him.
This is going to be hell when we miss deadlines and have to explain to the client why their product has so many bugs.2 -
Random thoughts on more out of the box tools/environments.
Subject: Pharo
Some time ago I had shown one of my coworkers about Pharo and he quickly got the main idea behind it but mentioned how he didn't like the idea of leaving behind his text editor to deal with source code.
Some time last week I showed the dude some cool 3d animations you can do with Pharo while simultaneously manipulating the code to change them in real time. Now that caught his attention particularly and he decided he wanted to know more about the language but in particular the benefits of fucking around with an image based environment rather than a file based.
Both of us reached the conclusion that image based makes file based dev enviroments seem quaint in comparison, but estimated that it was nothing more than a sentiment rather than a fact.
We then considered what could be the advantage/disadvantages of such environments but I couldn't come up with anything other than the system not having something like Vim or VS Code or whatever which people love, but that it makes up for it with some of the craziest IDE tools I had ever seen. Plugins in this case act like source code repos that you can download and activate into your workflow in what feels something similar to VS Code being extended via plugins written in JS, and since the GUI is maleable as it is(because everything is basically just subsets of morp h windows) then extending functionality becomes so intuitive that its funny
Whereas with Emacs(for example) you have to really grind your gears with Elisp or Vimscript in Vim etc etc, with Pharo your plugin system is basicall you just adding classes that will convert your OS looking IDE into something else.
Because of how light the vm machine is, portability is a non issue, and passing pharo programs arround is not like installing Java in which you need the JVM.
Source code versioning, very important, already integrated into every live environment and can be extended to do pushes through simple key bindings with no hassle.
I dunno, I just feel that the tool is too good to be true. I keep trying to push limits into it but thus far I have found: data visualization and image modeling to work fine, web development with Teapot to be a cakewalk and work fine, therr are even packages for Arduino development.
I think its biggest con would be the image based system, but would really need to look into how this is bad by any reason other than "aww man I want vim!" since apparently some psychos already made Emacs and VS code packages for interfacing with Pharo source trees.
Embedded is certainly out of the question for any real project since its garbage collected and not the most performant cookie in the jar.
For Data science I can see some future, seems just as intuitive and interesting as a Jupyter Notebook actually, but the process can't and will not be the same since I still don't know of a way to save playground snippets unless you literally create classes for it, in which case every model you build gets saved inside of an object, sounds possible but, strange since it is not a the most common workflow in jupyter.
Some of the environment is sometimes glitchy, but it does have continuos development and have not found many hassles.
There is a biased factor from my side: I seem to be wired to understand the syntax and simple object model better than in other languages. To me this feels natural as if I was just writing ideas rather than code, mostly because I feel that there really ain't much in terms of syntax, the language gets out of my way and the IDE feels like the most intuitive environment in the world to me. I can see why some people would find it REALLY weird of counterintuitive tho.
Guess I really am a simple dude. -
A question for Web developers:
I'm planing to start working on a web part of my project. Important part is that it's supposed to be working with MongoDB. The idea is to build a small digital library, so the main functionalities should be user registering, his login, querying database for books, showing list of results and viewing pdf files up to 200MB size.
Since I have almost no experience with web technologies, I would like to hear your advices and opinions on the technologies/languages I should use and learn. Should I go with JavaScript? Php? Something third?
Please note that this is a school project on which I'm working after my job, and not something to be deployed to customers.
Thank you4 -
I was doing something in Git, switching and I guess another process was doing a fetch and now all the files no meter what bench I'm in says Unstaged/Untracked.
I tried deleting the main branch and checking it out again from remote but nothing.
I have no idea what I did or how to fix... Seems like I need to delete the whole folder... But then I'd lose any changes in feature branches out local branches which afternoon checked in....8 -
Have you ever worked for an organization that is not specialized in software development because that is not their main line of business, however, their products are software applications?
If you are, then hi you and me are in the same boat. Currently I have a nice manager and I'm acting as dev lead the strange thing I have a peer that is supposed to be lead as well but I cannot define his position....
In theory he should be scrum master / resource manager which fails at both terribly.
I ended up implementing Agile in the team and deciding what goes and not into the sprint based on quality while this guy just try to squeeze stuff into the sprint, the more the better even with all kinds or problems...
Honestly I'm not sure why he is still in the team since it seems like he only drains the budget, doesn't understand a thing about the products he is working on and every single idea he has is horrible.
Every meeting I have with him I always ended up asking myself "How can somebody be that stupid?" The lack of technical knowledge and even common sense is over 9000 in this one...
It might sound bitter from my end but after two years of dealing with this stupidness of getting people in software development that have no idea what software development is and understand the intricacies of it just because they did an access database or are good at excel is nonsense.
I'm at the verge of quitting and the only thing that is keeping me here is my manager and the fact that the products I am working with are pretty interesting.
Sorry for the long rant but I had to get it out of my chest before it explodes and I directly call out this person.
Not looking for suggestions but if anybody want to chime in go ahead.1 -
(a bit late for wk73 but I wanted to post this anyway)
Back in my first year of university, we had to write a relatively simple (though it looked super complicated back then) C++ console application. I don't know what it's called, but it's that game where the computer generates a random 4 digit code and you have to try to guess what it is. Every time you try, it will tell you which digits are correct, which would be correct if they were in a different position and which are outright wrong.
Anyway, the program had a main menu with a help option that would output a short guide on how to play the game. Instead of hard coding it into the source code, the "guide" had go be written in a separate text file and then read and dumped to the screen when necessary.
Here came my great idea on how to read files. Instead of looping through the file until I reached the end, I counted the number of lines my text file had and wrote some gem of a piece of code like this:
for (int i = 0; i<11; i++){
line = file.readline();
cout << line << endl;
}
My teacher obviously took points off for doing such a stupid thing, and I remember complaining A LOT about it. I argued that 11 was a constant because I didn't plan on changing the text file, and that the teacher had no right to take points off for only reading 11 lines because the file only had 11 lines, so it was read in full.
Goddammit, what an innocent little brat I was. I'm glad my first programming teachers were good enough to stay firm and teach me how to do things the right way, even if it's the hard way. -
Is there a program that can help me read books and get like the main idea... It seems my reading list grows stronger faster than I can read... No matter what... Even using Blinkist... Even on that i have 300 books.... :(10
-
So, today, I wanted to try setting up a wireguard VPN server on my little raspberry pi at home. I... expected /some/ issues, but what I found dumbfounded me.
1 - I already had the wireguard package from the unstable branch of the main raspbian repo installed... Huh, okay.
2 - Setting up config was extremely easy... Wow, so the rumors were true. Wireguard really is almost dumb-simple.
3 - Failed to create a network interface? Oh, trouble, here it is! So lets see... modprobe wireguard... Nope. Don't have the module? What?
4 - Reconfigure package to rebuild the module - missing kernel headers? Huh... weird
This was the simple stuff... Then I went down the rabbit hole of the Raspberry Pi ecosystem:
1 - There is the Raspberry Pi Bootloader, that is apparently separate from the Kernel itself. And I didn't seem to have any of the standard linux-image-* installed... What? Weird, yet there I was, running a 4.19.42-v7+ kernel...
2 - No kernel and no headers... What... The... Fuck
3 - Okay, so... Lets just... try to install the latest kernel image then? One apt-get install... It downloaded the image, but during package configuration, it failed because... I didn't have... its headers? What? What for? And if it needs them (for whatever reason), why isn't the headers package as a dependency? Ugh, whatever...
4 - Another apt-get install and... Okay, building the initrd image aaaaand...
FAIL
WHAT. What is it this time!?
Oh... Ran... No more space on device? What? Is /boot independent? Of course it is, it has to be, its a bloody different filesystem
Okay, so, lets che-OH MY GOD WTF.
Its just bloody 45 MBs big! The entire /boot is just 45 MBs large. WHY. THE. FUCK.
This was a default raspbian install from I have no idea when. But... Why. Oh WHY would ANYONE pre-configure /boot to be this incredibly tiny!?
No wonder the new init ramdisk couldn't fit in there! Its already used up from 64%!
Thanks, Raspbian Devs, now I gotta reinstall the whole system because, yes, the /boot is, of course, sector 8192. Just far enough from 2048 that there are *some* sectors free - About 3 MBs.
So what did I try? Remove the partition and recreate it from the very beginning. Only... I never tried in in the past, and okay, kernel doesn't like having the partition where its image resides deleted on the fly, it will not give up FDs pointing there or something.
So now, I have a system I cannot reboot, or it will never boot back up :|
Thanks, Raspbian!
I need to get a cheap 1U somewhere or something T.T1 -
When they decided to deprecate the old app that went back to early DOS, they decided to use VB.NET because they'd used some VBA and were familiar with it. Except they had a vague idea that C# was faster and decided to write the OpenGL code in that. Also they had some C++ code and decided to write more of it, accessed by the main program via COM.
I come in and the decision is made to integrate some third-party libs via a C++/CLI layer. On one hand screw COM, but on the other we're now using two non-standard MS C++ extensions. Then we decide we need scripting, so throw in some IronPython.
I'm the build engineer for all this, by the way. No fancy package managers since almost all the third-party dependencies are C++; a few of them are open source with our own hacks layered on top of the regular code, a few are proprietary. When I first started here you couldn't build on a fresh SVN checkout (ugh) without repeatedly building the program, copying DLLs manually, building again, ad nauseum. I finally got sick of being called in to do this process and announced that I was fixing it, which took a solid week of staring at failed compiler output.
Every so often someone wants to update that damn COM library and has to sacrifice a goat to figure out how the hell you get it to accept a new method. Maybe one day I'll do a whole rant just based on COM. -
So i recently inherited some legacy code.
Its actually not to bad. Just a few thousand locs which are mostly stretched across a handfull of functions lmao (800lines per function yay).
So the main thing i wana ask. Does someone here know of good techniques to gradually reimplement all of this.
Since im not gonna apply bandaids to this mess anymore than is needed.
Unfortunately this is a very important system and it only runs on production xD.
Idealy i would somehow be able to duplicate the tcp traffic to the reimplementation but that doesnt seem feasible.
Also what the individual modules classes and so on do wa snever documented and no one even knows how or why certain things even exist.
If anyone has any idea of what i can do. Apart from hoping to god i dont miss any weird quirky edge cases. Do let me know7 -
Now I have enough of this shit I fucking go grab a chainsaw and cut you into the tiniest pieces possible then pour gasoline on your fucking servers and lit them on fire. How the fuck should I remain calm if there is at least two fucking email I can't send because your fucking piece of shit server gets blacklisted EVERY FUCKING WEEK.
Oh how cool you made ipv6 available to shared plans so outlook servers won't blacklist mails. But guess what, it STILL DOESN'T WORK!!! Not to mention that you automatically modify my existing SPF record and set the shared storage ipv6 address to the main domain which should be pointing to the vps (still working though but have no idea why). I am so fucking fed up with people for today, and it's only just morning. -
I halfway remade a 2d radar in shadertoy (original in description).
https://shadertoy.com/view/wt3SR7/
(watch it in 640x360 by zooming in or out until you get that res, I tried to main aspect ratio, but I hardcoded one value because I'm lazy)
shaders are tough to get started with:
no breakpoints.
logging doesn't make sense so it's avoided.
if's are replaced with step statements.
if you suck at math, you suck at shaders.
if you suck at trig, you suck at shaders.
hardcoding values is viable debugging.
hail hsb2rgb for pretty colors (I have no fucking idea how does it work though).
I tried writing here the challenges I found while making it, but most of them are heuristics and are hard to follow/explain in just text.
I can say though, that sometimes you come up with a solution, but it doesn't look really good, so you have to use something else.
or sometimes you come up with a solution but it also creates unwanted coloring that you have to erase.
or sometimes you have no fucking idea what your operations results are, or you get dizzy by the math. Hardcoding helps wonders.1 -
Trying to write a program a la `man` in ncurses and just, is this hell?
I just want a floating header, a scrollable main body that reads from a file, and a command line footer, why is that so difficult? I finally got it to handle resizing terminals but now I need to try to compile it for windows, which does have unofficial ports of ncurses, but I have no idea how to use them.
Should I just restrict the windows version to a non-interactive command instead of a TUI like I want?2 -
Be me. shitty front end dev intern. React god.
boomer tech company using ASP.NET MVC frameworks. Hey energy-vampire, can you make us some sick react components???
sure.
get sent giant mvc repo. I've never used it. no documentation. no comments. nothing. just a fat app.
why do companies do this? I literally had no idea what to do with this thing. went to main guy and he had to build a .sln project, link it to some other project, setup an appsettings.json file, import secrets, and then build.
how the fuck would I know to do that???9 -
I realized that my mood swings based on how my gf behaves. She is one of the few triggers
If she is sad depressed angry or disrespectful towards me i am no longer in a positive mood, it kills the whole vibe. On the contrary if she is happy acts feminine behaves normally and is respectful towards me i also become happy and in a better mood
Bad mood does not stop me from doing my work, but depending on how terribly bad it becomes, it may or may not impact my coding and work life. Since the main and central tool for coding is my brain and mental state, not physical muscles, Once the central part of anyone's tool (thats used to get the job done) is attacked or threatened, it weakens the person's ability to perform as good as they have been, or worse, completely blocks them off from performing well
This is one of my biggest fears; Anyone who's capable, intentionally or not, of weakening the central part of my tool for work (in this case mind and mental state), begins to gain power and leverage over me (hold on this is actually a brilliant idea to have in mind, a malicious way to exploit and leverage the target victim is by attacking the central tool they use to get the work done)
However i am a mentally strong person (due to way too much trauma from school, solving extreme difficulty coding problems, hoes and financial struggles), but it does not help if i am attached to a person who i have feelings towards, a person who became the second half of me, "the better half". It is difficult to reject or all of a sudden stop loving the person who you loved for years or months. Such person can more easily attack my central tool
My question is--does anyone know how to protect the central tool from anyone being able to exploit or weaken it? For example if my gfs bad behavior puts me in a bad mood, how to prevent that from happening? How do i not care? Or how do i care but still not let it affect my mood in a negative light? If that makes sense10 -
Let's start by saying that I fucken know nothing.
Not even how to fucken start this rant.
I have to build a simple game for a university project.
In Java.
Since everyone in my team chose plain swing/awt, and for many other reasons, I jumped on that band wagon.
Knowing myself and that I quit the project last year, I chose an extremely simple type of game with very simple goals and Use-cases.
So far so good.
Logic, layer, and nearly everything else is nearly finished.
Since about 3 month.
Friends helped me restructure my game for better layer separation and I couldn't be happier with how that turned out.
But all those 3 month, my main problem has persisted.
I can't get it to draw a thing on the jframe.
For 3 month.
3 fucken month.
And now I don't even get a jFrame anymore.
WHAT THE FUCK
Git, tell me, what have I changed?
...
Nothing related to construction of the frame?
Ok, I removed a call to repaint there.
Let's putt it back.
NOPE, no JFrame.
What the actual fucken hell?
This is where you can stop reading, after this there will only be me crying about everything.
Sweet tears. 😭
In-between I got a frame, and something was drawn onto it.
But only on construction.
I couldn't get the paint chain to run a single time after that.
I have a nice thread with some loops that is supposed to update the logic and make a call to repaint/ update/ refresh the frame so that the game runs nicely with 60fps.
Logic works fine, but no call to what ever does anything related to painting.
This morning I had the idea that it might be because of the thread.
Refactored that the game loop runs in the main thread and here I now am without a jFrame.
And still 3255 letters to go.
I don't even even even even even..,...rant wtf fuck fucking fuck fuck! java nojframe jframe wth what the fuck pls kill me java swing java awt5 -
VESA is driving me crazy.
I'm trying to set my video mode via VESA functions which works, the QEMU window size changes, ton of more space.
Problem now however is that I have no idea where in the name of god the goddamn framebuffer starts.
Apparently it's address is located withing the mode info block which I have successfully queried and stored in ES:DI.
Problem now is getting this info block into my 32-bit kernel.
I tried smacking it on the stack which only produces hot garbage.
Essentially it goes like this
[...make sure pointer to block is stored within ES:DI...]
mov ebx, [ES:DI]
[Switch to 32 bit mode, ebx is not erased by doing so]
;Set up stack
mov ebp, 0x90000
mov esp, ebp
call kernel_main
jmp $
kernel_main takes this pointer as an argument, hence why I've pushed it onto stack:
main(uint32_t *ptr);
When I try accessing it however by doing the following:
vbe_mode_info_block* info_block = (vbe_mode_info_block)ptr;
And then try accessing the in the member 'framebuffer' using 'info_block->framebuffer' it's giving me hot garbage.
I'm probably doing something obvious wrong.
Frustrating.
I'm gonna try passing ES and DI seperately and converting them to a real mode address by doing addr = (ES*0x10)+DI;
MAYBE MAYBE MAYBE2 -
Maybe you people will like this story.
The past semester I studied Java in class. First time doing object oriented programming, I had an annoying teacher but got the hang of it. I still miss C from the last year.
As a final project we had to do any program and apply some stuff we saw in class (The program should have an array list, use interfaces, bla bla bla bery simple stuff). It also must have a complete documentation, a manual and a diary explaining what was developed every week. Bonus points if it was in a repository like GitLab.
I wanted to do an RPG game in a matrix, like a rougelike or an old FF game, that should be a map or two, a few monsters and items and that's it. Enough to show what can I do and to have enough excuses to apply everything that the teacher asked. I had a team with two friends who wanted to do the same.
After making accounts in three different pages that apparently would help us to be more organized (One to make charts and two task trackers) I lost all patience and made an account in GitLab, made the basic classes that we had defined in a chart, divided the tasks and put them in to do on GitLab and we started to work.
One of my companions caused a lot of problems. First, he didin't wanted to learn how to use GitLab (I simply asked them to do merge requests) and he insisted to use GitHub. Then he started to say that using the console version was even better (Pretty sure he said thet he never used Git, but maybe was gas poisoning). The GitLab repository never had a single commit to his name.
BUT WAIT IT GETS BETTER all the entire time, he was complaining about the graphical interface of the game, wanting to use some SDK for RPGs that he found. I told him that we will see that at the end, that first we should have all the mechanics done, test it in ASCII in the console and then, if we have time, we will put the visual interface, separated and optional from the main program to avoid problems.
After two weeks where he gave me very simple standard stuff late, half done and through Google Drive, I discovered he was most of the time working on... the graphical interface SDK! He took the job already done by me and the other guy and making a pretty hardcoded integration with the graphical interface and making everything that he tought it would be necesary. Soon enough the GitLab repository was totally outdated and completly useless. He had the totallity of the project in his half broken laptop, and sometimes he gave us a zip with all the code, outdated after a few minutes. Most of the stuff that I made was modified, a lot of the code was totally unknown to what it was and I had no idea even of how the folders were organised.
We had a month to finish it. I got totally disconected from the project and just hoped for the best, sometimes doing a handful of generic and adaptable lines of code for a specific thing (Funny enough, many core mechanics were nonexistent). The other guy managed to work more on the project, mostly fixing the mess that the guy did: apparently he didin't read the documentation of the SDK and just experimented and saw tutorials and tried to figure out how to do what he wanted.
Talking about documentation: we dont had yet. The code wasn't even commented propely. We did all that the last week and some stuff was finished the last night. The program apparently worked but I had no idea.
Thank God, the teacher just looked over everything and was very impressed by the working camera and the FF tiles. I don't think he saw the code or read too much of the documentation, much less when I directly wrote how I lost all access to the project.
I had a 10/10. I didin't complained. Most easy and annoying ten I ever had. I will never do a project with that guy. -
Bad (or at least uninformed due to unclear requirements) design decisions lead to somewhat perplexing (and above all, frustrating) problems down the line...
Here I am, wrote a cli client for event bus subscription, and since EC2 is eqv to Docker, had to fix the main function to keep it alive - now the deploy stage on the ci/cd pipeline fails due to startup script timing out. But why tho?
I’m not really sure whether I should’ve designed this differently from the get-go or whether my build and deploy configs don’t match anymore due to recent changes and I should figure out what’s wrong with them... or both.
Bottom line is: I have no idea what I’m doing.9 -
I started to learn backend development for help a friend with his idea for an startup. i learn the basics in one week. then we put the hands on the project.
the first week everything was ok, we make progress fast and get things done, second week my productivity go to the floor. i found my self trying to do hacky stuff every day. never reach solutions. i was a mess.
Today i just broke, inclusive with my main Data Science projects im feeling bad. i quit everything a start watching Mr. Robot.
Right now i feels truly bad, but i have no option, tomorrow i will pit my hands again on all this shit, what more i can do? this is what i want to do.
The suffering and stress seems to be part of this job. We can only keep going.6 -
Is it just me... Or is there like two different scrolling behaviours in the app on android? When I've for the blue theme with white text it seems really gittery when I'm first scrolling down rant comments or the main rants feed.. Then about halfway down it goes much smoother... No idea why...
-
Top 5 Reasons for Not Discussing Weird Topics in Your Graduate Admission Essay
Knowing the top five reasons for not discussing weird topics in your graduate admission essay is very important. There is really no strict requirement about what kind of topic you use, as long as you can discuss it effectively. However, choosing weird topics may not really work for you, especially if it’s a very controversial or sensitive one. The following are the top five reasons why you should avoid discussing weird topics in your essay.
Reason #1: Weird topics are weird.
First off, weird topics are exactly that, weird. The last thing you want to do is weird out your graduate school admission panel, which is almost a sure way of getting yourself that polite rejection letter that every applicant dreads of receiving.
One of the main important points to remember is to think of your audience when writing your graduate admission essay. This audience will be composed of tenured professors, and probably younger teachers closer to your own age. Although it is a good idea not to tailor your essay according to what you think they want to hear, it’s best to stick to a topic that will make the panel want to get to know you more. You can do this by putting yourself in the admission officer’s shoes and trying to feel what your reaction would be with a particular topic you have in mind. Being creative is good, but to any audience, weird is weird, and most audiences will not know how to react to a weird admission essay.
Reason #2: Weird topics may reflect your personality in a bad way.
Weird topics make you look weird, or worse. You may think that a weird topic is the same as a creative topic, something that most experts on admissions officers urge applicants to use. With a weird topic, you can easily make the jump from being creative to just plain strange or worse, someone with an emotional or personality problem. Weird topics, when discussed ineffectively, are bad topics, and can be anything from the death of a pet, recent religious epiphanies, and even parent bashing. These topics are the last topics that can paint you in a good light so avoid these and other similar topics.
Reason #3: Weird topics may not represent the real you.
Weird topics will not paint the real you, unless you are naturally weird. If you really think that being a little bit off will pay off, then by all means do so. But if you want to appear as normal and as emotionally healthy as possible, save the strange stories for Halloween night.
Reason #4: Weird topics may seem too informal.
Weird topics can get too informal. You can be informal but you need to look normal as well in order to avoid appearing irreverent. Some may disagree with this, but often the only way to get on your admission panel’s good side is to tread on the middle ground arefully, and not be too stiff and prudish but not be too loose either.
Reason #5: Weird topics may confuse the readers.
While most schools allow their applicants free reign when it comes to writing an admissions essay, you can do your self a lot of good by treading on the middle ground. Avoid weird or strange topics if you can. A weird topic will put your readers in a place where they may not understand you. And in a process where getting to know you as a person is the main objective, this move will definitely have an effect on whether you get accepted or not. Knowing what to write in a graduate school admission essay is fairly easy, especially if the school provides you with a set of questions, known as prompts as your guide. As long as you already have the other requirements such as the right grade point average, recommendation letters, program of study and the like, you can start working on your essay. But if your still not sure whether it good idea to write essay by yourself. You can find tons of great quality writing services such as https://uk-essays.com/research-pape.... At such a websites you’ll easily find help from from people who already have considerable experience in writing a wide variety of essays. They will gladly help in any issue that makes you difficult. -
What's the minimal feature set that can make a language as ornamented as JS into a comfortable REPL?
Should I write a full parser or should I try to patch my way around with regex?
It will have to interface a lot with JS so it has to be able to manage JS datastructures in some fashion, which means that I can't just make a whole new command line with its own programs.
My current plan:
Some delimiter (probably a semicolon) will take the output of a command and inject it in the next in case you decide halfway through a line to do some more processing, It also awaits promises and does some other nice stuff to make controlling such pipelines easy. I have an elaborate system in mind to decide where a value must be injected to make the line valid so in most cases you don't even have to indicate it. JS has beautifully simple syntax rules so I have a lot of technical balance to burn before I start building technical debt.
I have some ideas for automatic parentheses and commas in function calls. I realize while using a command line you do not want to tap shift often. My main idea here is that two names or values in js are always joined by an operator so the first missing operator is a call and following missing operators are commas until the end of line. This has lots of nasty edge cases though, like that no argument expression can begin with a unary operator or a bracket of any shape. You can always prepend a comma but it's cognitive load.
Anyway, do you have any suggestion or warning besides "js bad" which I know but it's the most popular sandboxable language and has a massive existing set of libraries which I kinda need.3