Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "all about the base"
Are you for real Guido/python devs?! Can we stop shoving politics into non issues just to virtue signal please?
What the fuck is next?! Oh you can't kill a process you politely put it to sleep, you can't call that machine a server anymore it might get offended now it's called a service caring electrical appliance, hey what about removing python all together after all python could be misconstrued as phallic and drive women away; I know! Let's call it Santa/elves instead of master/slave!
Fuck off! And what's that of you being akward saying server/slave terminology around black people? That's insanely racist! Who the fuck thinks all black people are descendants of slaves? Why the fuck are you racist enough to imply they can't do their job properly because (unlike you) they would be uncomfortable, you low expectations racist fuck!
You just fucked with your open source base and I really don't wanna see python going woke and then broke.
I'm drunk and I'll probably regret this, but here's a drunken rank of things I've learned as an engineer for the past 10 years.
The best way I've advanced my career is by changing companies.
Technology stacks don't really matter because there are like 15 basic patterns of software engineering in my field that apply. I work in data so it's not going to be the same as webdev or embedded. But all fields have about 10-20 core principles and the tech stack is just trying to make those things easier, so don't fret overit.
There's a reason why people recommend job hunting. If I'm unsatisfied at a job, it's probably time to move on.
I've made some good, lifelong friends at companies I've worked with. I don't need to make that a requirement of every place I work. I've been perfectly happy working at places where I didn't form friendships with my coworkers and I've been unhappy at places where I made some great friends.
I've learned to be honest with my manager. Not too honest, but honest enough where I can be authentic at work. What's the worse that can happen? He fire me? I'll just pick up a new job in 2 weeks.
If I'm awaken at 2am from being on-call for more than once per quarter, then something is seriously wrong and I will either fix it or quit.
pour another glass
Qualities of a good manager share a lot of qualities of a good engineer.
When I first started, I was enamored with technology and programming and computer science. I'm over it.
Good code is code that can be understood by a junior engineer. Great code can be understood by a first year CS freshman. The best code is no code at all.
The most underrated skill to learn as an engineer is how to document. Fuck, someone please teach me how to write good documentation. Seriously, if there's any recommendations, I'd seriously pay for a course (like probably a lot of money, maybe 1k for a course if it guaranteed that I could write good docs.)
Related to above, writing good proposals for changes is a great skill.
Almost every holy war out there (vim vs emacs, mac vs linux, whatever) doesn't matter... except one. See below.
The older I get, the more I appreciate dynamic languages. Fuck, I said it. Fight me.
If I ever find myself thinking I'm the smartest person in the room, it's time to leave.
I don't know why full stack webdevs are paid so poorly. No really, they should be paid like half a mil a year just base salary. Fuck they have to understand both front end AND back end AND how different browsers work AND networking AND databases AND caching AND differences between web and mobile AND omg what the fuck there's another framework out there that companies want to use? Seriously, why are webdevs paid so little.
We should hire more interns, they're awesome. Those energetic little fucks with their ideas. Even better when they can question or criticize something. I love interns.
Don't meet your heroes. I paid 5k to take a course by one of my heroes. He's a brilliant man, but at the end of it I realized that he's making it up as he goes along like the rest of us.
Tech stack matters. OK I just said tech stack doesn't matter, but hear me out. If you hear Python dev vs C++ dev, you think very different things, right? That's because certain tools are really good at certain jobs. If you're not sure what you want to do, just do Java. It's a shitty programming language that's good at almost everything.
The greatest programming language ever is lisp. I should learn lisp.
For beginners, the most lucrative programming language to learn is SQL. Fuck all other languages. If you know SQL and nothing else, you can make bank. Payroll specialtist? Maybe 50k. Payroll specialist who knows SQL? 90k. Average joe with organizational skills at big corp? $40k. Average joe with organization skills AND sql? Call yourself a PM and earn $150k.
Tests are important but TDD is a damn cult.
Cushy government jobs are not what they are cracked up to be, at least for early to mid-career engineers. Sure, $120k + bennies + pension sound great, but you'll be selling your soul to work on esoteric proprietary technology. Much respect to government workers but seriously there's a reason why the median age for engineers at those places is 50+. Advice does not apply to government contractors.
Third party recruiters are leeches. However, if you find a good one, seriously develop a good relationship with them. They can help bootstrap your career. How do you know if you have a good one? If they've been a third party recruiter for more than 3 years, they're probably bad. The good ones typically become recruiters are large companies.
Options are worthless or can make you a millionaire. They're probably worthless unless the headcount of engineering is more than 100. Then maybe they are worth something within this decade.
Work from home is the tits. But lack of whiteboarding sucks.39
Ahhhhh devrant... long time no see.
I just need to get something off my heart. The past two years, I worked for the same ISP in Germany, but now as a devops engineer. Well, popo hit the fan really quick lately..
First a good friend, team lead for one of five areas in Germany, quit his job. He was one of the nicest persons I knew, and he believed that all that five areas should work together and share dev resources. Thats why I work mostly in other areas as developer.
Shortly after, his deputy quit as well. I heard that this specific area, the management were a bunch of dicks, but wow!
A short while later, I learnd the hard truth, why those two good friends quit, and that brings me to this story. In a meeting I readied myself up to present my new plattform - a social room - to management. I got a lot of positive feedback from others and we thaught managment would approve of the project. But nope. "We can buy from external, we dont need to program ourselfs. In fact lets stop spending money on internal programming, we should outsource everything!"
I was baffeld... Wtf did i just witness? My team lead didn't say anything, and afterwards I didn't dare to question it, but I told most of my close dev friends and we all realizied, that the rumors were true... We will be shifting into project managment.
At this point, I realized that I wasnt having it, and made a linkedIn account, not because I wanted to switch jobs, but because, meh you never know.
One week ago, one of my bestest buddies said he will quit and join his team lead that left eariler this year, I was heartbroken. Me and our other buddy are devestated, because now we have to do everything he had done. Management didn't listen as we told them that nobody can maintain his code. I have so many projects, I can bearly keep up with them. Now I got a lead role for creating the server infrastucture for a huge project my buddy was working on. Only as specialist and not PM, but his Team Lead thinks I am replacing him!
Last week I got a message on LinkedIn, a consulting firm reached out to me to aquire me as a new consultant or devops engineer. They look great, only less vacation (26 instead of 30 days), 40h shifts instead of 38h and only slightly more base payment. I currently receive about 53.000€ a year, the new firm only grants up to 60.000€ a year for anyone. Otherwise, they look great.
With all my buddies quitting around me, work getting more while time developing decreasing, I don't know what the right thing to do is... There is no way I can get a payment increase in my current position. I always say "my workplace is save, but my work isnt". I don't want to do project managment.
Today I have a meeting with my team lead, she is really nice btw. This is an annual meeting where we discuss my future in the company etc. Shortly after, I have a meeting with the new firm to discuss a bunch of questions I have.
I dont know what to do...
Edit: I missed you, devrant7
Biggest challenge I overcame as dev? One of many.
Avoiding a life sentence when the 'powers that be' targeted one of my libraries for the root cause of system performance issues and I didn't correct that accusation with a flame thrower.
What the accusation? What I named the library. Yep. The *name* was causing every single problem in the system.
Panorama (very, very expensive APM system at the time) identified my library in it's analysis, the calls to/from SQLServer was the bottleneck
We had one of Panorama's engineers on-site and he asked what (not the actual name) MyLibrary was and (I'll preface I did not know or involved in any of the so-called 'research') a crack team of developers+managers researched the system thoroughly and found MyLibrary was used in just about every project. I wrote the .Net 1.1 MyLibrary as a mini-ORM to simplify the execution of database code (stored procs, etc) and gracefully handle+log database exceptions (auto-logged details such as the target db, stored procedure name, parameter values, etc, everything you'd need to troubleshoot database errors). This was before Dapper and the other fancy tools used by kids these days.
By the time the news got to me, there was a team cobbled together who's only focus was to remove any/every trace of MyLibrary from the code base. Using Waterfall, they calculated it would take at least a year to remove+replace MyLibrary with the equivalent ADO.Net plumbing.
In a department wide meeting:
DeptMgr: "This day forward, no one is to use MyLibrary to access the database! It's slow, unprofessionally named, and the root cause of all the database issues."
Me: "What about MyLibrary is slow? It's excecuting standard the ADO.Net code. Only extra bit of code is the exception handling to capture the details when the exception is logged."
DeptMgr: "We've spent the last 6 weeks with the Panorama engineer and he's identified MyLibrary as the cause. Company has spent over $100,000 on this software and we have to make fact based decisions. Look at this slide ... "
<DeptMgr shows a histogram of the stacktrace, showing MyLibrary as the slowest>
Me: "You do realize that the execution time is the database call itself, not the code. In that example, the invoice call, it's the stored procedure that taking 5 seconds, not MyLibrary."
<at this point, DeptMgr is getting red-face mad>
AreaMgr: "Yes...yes...but if we stopped using MyLibrary, removing the unnecessary layers, will make the code run faster."
<typical headknodd-ers knod their heads in agreement>
Dev01: "The loading of MyLibrary takes CPU cycles away from code that supports our customers. Every CPU cycle counts."
Me: "I'm really confused. Maybe I'm looking at the data wrong. On the slide where you highlighted all the bottlenecks, the histogram shows the latency is the database, I mean...it's right there, in red. Am I looking at it wrong?"
<this was meeting with 20+ other devs, mgrs, a VP, the Panorama engineer>
DeptMgr: "Yes you are! I know MyLibrary is your baby. You need to check your ego at the door and face the facts. Your MyLibrary is a failed experiment and needs to be exterminated from this system!"
Fast forward 9 months, maybe 50% of the projects updated, come across the documentation left from the Panorama. Even after the removal of MyLibrary, there was zero increases in performance. The engineer recommended DBAs start optimizing their indexes and other N+1 problems discovered. I decide to ask the developer who lead the re-write.
Me: "I see that removing MyLibrary did nothing to improve performance."
Dev: "Yes, DeptMgr was pissed. He was ready to throw the Panorama engineer out a window when he said the problems were in the database all along. Didn't you say that?"
Me: "Um, so is this re-write project dead?"
Dev: "No. Removing MyLibrary introduced all kinds of bugs. All the boilerplate ADO.Net code caused a lot of unhandled exceptions, then we had to go back and write exception handling code."
Me: "What a failure. What dipshit would think writing more code leads to less bugs?"
Dev: "I know, I know. We're so far behind schedule. We had to come up with something. I ended up writing a library to make replacing MyLibrary easier. I called it KnightRider. Like the TV show. Everyone is excited to speed up their code with KnightRider. Same method names, same exception handling. All we have to do is replace MyLibrary with KnightRider and we're done."
Me: "Won't the bottlenecks then point to KnightRider?"
Dev: "Meh, not my problem. Panorama meets primarily with the DBAs and the networking team now. I doubt we ever use Panorama to look at our C# code."
Needless to say, I was (still) pissed that they had used MyLibrary as dirty word and a scapegoat for months when they *knew* where the problems were. Pissed enough for a flamethrower? Maybe.9
The knowledge base for fixing stupid shit in Windows 10 is abysmal. I had a slow login that seemed to be progressively worse. I had searched in the past about this. The suggestions ranged from getting an SSD to reinstalling Windows. None of them addressed the issue. I had removed some startup programs thinking that might be the issue. It was not. I finally found some obscure mention by some guy that said: delete the user temp folder. So I did that. Now it takes almost no time to login. I think the only delay is the steam stuff in the background.
Of course all the official Microsoft suggestions were total shit.24
On the game front, I see so much conflicting advice. "Start getting feedback" as soon as possible. "Donnt soft launch on steam! The algol will wreck you.", "soft launch on itch to get feedback", "dont soft launch on itch!"
"Start marketing today", "focus on influencers", "get to know communities *before* you advertise", "dont get to know communities beforehand if you're just planning on self prompting", "dont self promote".
"CPM is important.", "CPA is important". Etc.
Sounds a lot like "have a bunch of money upfront." The solution is just to succeed from the start! It's so obvious. Just invent the next gta. The next facebook. Get a small loan of 50,000 dollars, or a million. Donate for a year to other kickstarter projects so people will know you and reciprocate! But also dont ebeg!
How about no. How about fuck all this advice by silver spoon assholes that didnt have to work on shoestring budgets. The advice is the equivalent of having a 300 page tonedeaf book, every page blank except page 150, where the words "fuck you. I got mine." Are printed in times new Roman, 14pt font, neatly in the center of the page.
The truth is most of the "indies" already made it in the software industry proper, before switching over. $5k kickstarter videos, with $15k marketing budgets, no doubt funded in part through their own money funneled through services that provide shell donations, because KS is being used as a glorified advertising service. People buying off steam curators for promotions, youtubers making sponsored videos without disclosing they're sponsored. Fake viralility. Fake campaigns. Predetermined success for those who could *already* afford to develop and go commercial without a publisher. And they came into the market and cannibalized the opportunity, raising the bar for everyone that wasnt them. I guess that's actually a good thing, because we wouldnt have half the amazing games we do, and the pressure to produce quality. But then I see fantastic games utterly ignored or flailing in an attempt to compete for eyeballs in an industry frequently dominated by gatekeeping marketeers and influencers, where human grace determines success or complete oblivion. And I'm just disgusted with it.
Also buy my game. Preorder NOW! And you'll get a REAL canvas bag, I'll go to like the goodwill and buy one and screen print the game logo on it or some shit. Buy the special collectors edition and get pictures of my feet. Buy the game of the year edition and get a real gasmask. Preorder now and I'll fucking suck your di k right now. No lie. Preorder the diamond edition RIGHT NOW in the next six minutes and I will send you one hundred thousand dollars in gold plated bottle caps. Limited supply. one million per customer. Offer expires soon. This is not a scam. I repeat. This is NOT a scam.
In other news I'm soft launching Atom Ranger in six months (assuming the nuclear apocalypse hasn't *actually* started by then). Its state of decay and fallout meets rimworld. Build and manage a sprawling base, resolving conflicts, exploring post apocalyptic Colorado and surrounding territories of no-mans-land. Navigate hazardous weather, radioactive terrain, collapsed bridges, dangerous rivers, and deal with cultists, bandits, slavers, and hungry cannibals. Broker peace between not just the factions outside your settlements, but within your base too. Manage conflicts, settle disputes, avert disasters, barter, scavenge, and survive in a fully dynamic world, where buildings slowly crumble, grass and trees sprout up in the road and vacant lots, fires burn out of control, and factions loot, ruin, and takeover settlements. Watch the world and the survivors in it change and survive. Help them to survive, or become a warlord and rule over the wastes.
Lets be honest. It's basically kenshi but less complicated.
If you want to volunteer to test (instead of paying to be a glorified tester, aka "alpha") let me know in the comments.
I'm currently setting up a discord and mailing list.30
Everyone and their dog is making a game, so why can't I?
1. open world (check)
2. taking inspiration from metro and fallout (check)
3. on a map roughly the size of the u.s. (check)
So I thought what I'd do is pretend to be one of those deaf mutes. While also pretending to be a programmer. Sometimes you make believe
so hard that it comes true apparently.
For the main map I thought I'd automate laying down the base map before hand tweaking it. It's been a bit of a slog. Roughly 1 pixel per mile. (okay, 1973 by 1067). The u.s. is 3.1 million miles, this would work out to 2.1 million miles instead. Eh.
Wrote the script to filter out all the ocean pixels, based on the elevation map, and output the difference. Still had to edit around the shoreline but it sped things up a lot. Just attached the elevation map, because the actual one is an ugly cluster of death magenta to represent the ocean.
Consequence of filtering is, the shoreline is messy and not entirely representative of the u.s.
The preprocessing step also added a lot of in-land 'lakes' that don't exist in some areas, like death valley. Already expected that.
But the plus side is I now have map layers for both elevation and ecology biomes. Aligning them close enough so that the heightmap wasn't displaced, and didn't cut off the shoreline in the ecology layer (at export), was a royal pain, and as super finicky. But thankfully thats done.
Next step is to go through the ecology map, copy each key color, and write down the biome id, courtesy of the 2017 ecoregions project.
From there, I write down the primary landscape features (water, plants, trees, terrain roughness, etc), anything easy to convey.
Main thing I'm interested in is tree types, because those, as tiles, convey a lot more information about the hex terrain than anything else.
Once the biomes are marked, and the tree types are written, the next step is to assign a tile to each tree type, and each density level of mountains (flat, hills, mountains, snowcapped peaks, etc).
The reference ids, colors, and numbers on the map will simplify the process.
After that, I'll write an exporter with python, and dump to csv or another format.
Next steps are laying out the instances in the level editor, that'll act as the tiles in question.
Theres a few naive approaches:
Spawn all the relevant instances at startup, and load the corresponding tiles.
Or setup chunks of instances, enough to cover the camera, and a buffer surrounding the camera. As the camera moves, reconfigure the instances to match the streamed in tile data.
Instances here make sense, because if theres any simulation going on (and I'd like there to be), they can detect in event code, when they are in the invisible buffer around the camera but not yet visible, and be activated by the camera, or deactive themselves after leaving the camera and buffer's area.
The alternative is to let a global controller stream the data in, as a series of tile IDs, corresponding to the various tile sprites, and code global interaction like tile picking into a single event, which seems unwieldy and not at all manageable. I can see it turning into a giant switch case already.
So instances it is.
Actually, if I do 16^2 pixel chunks, it only works out to 124x68 chunks in all. A few thousand, mostly inactive chunks is pretty trivial, and simplifies spawning and serializing/deserializing.
All of this doesn't account for
* putting lakes back in that aren't present
* lots of islands and parts of shores that would typically have bays and parts that jut out, need reworked.
* great lakes need refinement and corrections
* elevation key map too blocky. Need a higher resolution one while reducing color count
This can be solved by introducing some noise into the elevations, varying say, within one standard div.
* mountains will still require refinement to individual state geography. Thats for later on
* shoreline is too smooth, and needs to be less straight-line and less blocky. less corners.
* rivers need added, not just large ones but smaller ones too
* available tree assets need to be matched, as best and fully as possible, to types of trees represented in biome data, so that even if I don't have an exact match, I can still place *something* thats native or looks close enough to what you would expect in a given biome.
Ponderosa pines vs white pines for example.
This also doesn't account for 1. major and minor roads, 2. artificial and natural attractions, 3. other major features people in any given state are familiar with. 4. named places, 5. infrastructure, 6. cities and buildings and towns.
Also I'm pretty sure I cut off part of florida.
Woops, sorry everglades.
Guess I'll just make it a death-zone from nuclear fallout.
Take that gators!5
Central team: No, your team must be doing something wrong. Our pipeline is super-configurable and works for any situation! You just have to read the docs!
Me: Where are the docs?
Central team: Uhh, well, umm... we'll hook you up with a CI/CD coach!
Me: Okay, cool. In the mean time, can you point me at the repo where all the base scripts are?
Central team: Sure, it's here.
Me, some weeks later: Yeah, uhh, the coach can't seem to figure out how to make our Prod deployment work either.
Central team: That's impossible! It's so easy and completely configurable!
Me: Well, okay... but, here's the thing: your pipeline IS pretty "configurable", in the sense that you look for A LOT of variables...
Central team: See! We told you!
Me: ...none of which are actually documented, so they're just about useless to me...
Central team: But, but the coach...
Me: ...couldn't make heads or taisl of it either despite him literally being ON YOUR TEAM...
Central team: Then your project must just be architected wrong!
Me: Well, we're not perfect, so could be...
Central team: Right!
Me: ...but I think it's far more likely that the scripts... you know, the ACTUAL Python scripts the pipeline executes... while it took me DAYS to get through all your levels of abstraction and indirection and, well, BULLSHIT... it turns out they are incredibly NOT flexible. They do one thing, all the time, basically disregarding any flexibility in the pipeline. So, yeah, I'm thinking this is probably one of this "it's you, not me" deals.
Central team: Waaaaahhhhhhhh!!!!!!3
In only I were 1.15 times faster or had better planning (why didn’t I use the Saturday Sunday at the end of the first week 🤦🏼♂️), things would’ve happened differently. I think I’m becoming stupid and my tolerance levels are going down too.
So this happened a while back ..
I was given a code base which didn’t have any changes in the last two years and I was asked to add a feature to this. This was my first task in this new group I was part of. I had two weeks to do this starting on a Monday.
Partway through implementation I realised that the code base is a pile of shit and I wasn’t doing myself or anyone else any favours by shitting on it.
It’s Wednesday. I’ve dealt with many other codebases before but the urge to rewrite this particular one was just unlike anything else. And so I started changing code and before I realised, I modified almost all the important files.
I got sick of this mixed up code and started a rewrite from scratch. It was Friday and I finally had just the basic mechanics of the whole thing working. Now I needed to add all the functionalities and also my new feature.
It should be noted that at no point did I tell any of the superiors I was doing this fearing what they might say and also fearing going back to adding shit to shit.
By the end of the second week, the rewrite was complete and I only had the new feature to add. The rewrite was significantly smaller, compartmentalised and well commented because I did the bloody commenting (where it was not obvious from the code). So on Friday, I was asked about the progress and I told them that it needed some more work and that I need a couple more days. And I got shit for it. I was told it was a mistake giving this task to me and that I am not competent enough. One of the superiors told the other superior about perhaps giving me something more suited to my level. To be fair to them, they were expecting the work in the two weeks to be for the new feature.
And in two days’ time, on Monday (I worked on Saturday and half of Sunday), I finished the whole thing and gave it to them. New feature was working. And I still did not tell them what I did. The tool worked fine so they had no idea what happened because this project had no version control and I pointed them to a new directory with the new code with a first commit.3
I have been working on this software for 3 years now. The code base was a working prototype made by my boss before I came, not more, not less. Php + Angular. Have been refactoring a lot, backend is backed with hundreds of tests now, frontend still lacks a lot. Still a lot of programm structures are still the same weird ones my boss once created in a rush between two meetings while learning Angular to get the prototype finished. Now it's used in production which makes hard to refactor, because we have to maintain backwards compatibility. Neither the parts I added or refactored completely are satisfying, because they are built on this structures, because i never got any feedback for anything I decided and because I changed my own paradigms over time.
So I am all alone on this project. All genuinly new projects are assigned to the new team members (i was the first one, no we are five plus my boss) because I wont have time, have to maintain the old one. So I never can do something new which is quite frustrating.
I did a little side tool, the only thing I invented and did completely by myself in our repertoire - and now some stakeholder shows big interest onto this. Instead of giving me the task to make a real project from this my boss wants to give it to them to develop it. Why? Because I need more time for the main application.
Also the more the software is used the more bug tickets and feature requests come. I was crying for help for months but the others had appareantly more important stuff to do.
This might be true to some extend. Yesterday we had some kind of crisis meeting and my boss wanted again to assing pur junior to help me, who has a shit load of other things to do and is a student. I insisted that this would not be enough, and one of the fulltime devs has to get involved because the thing is our core application and I am only part time btw. So my boss said we wont decide today but one of them should do it. They should have some time to figure out who which is understandable but it's not that I didn't keep saying this for months. Now they are all like whimp whimp when I have to do php i will quit. The new projects are all typescript, with node backend if any. But alas, one of them even said yesterday he doesn't want to do js anymore. Okay... but... this is our tech stack then get another job allready?
And I should do the same probably. But then again I feel very sorry for my boss who helped me in very dark times of corona and more. If both of us leave, the project he worked on for decade (including convincing poeole, collect money..) might be suddenly at it's end while he is so exited about it's access today...
I also get insecure if it's really that they hate php so much or that they don't want to work with me personally because maybe I am a bad team Player or what?
I experienced the same at my old workplace, got left alone with big parts of the project because they didn't want to do php and js in this case and it ended up five devs doing the python backend and me doing the frontend and the php cms part all alone. Then I quit and now everything seems to happen again.
And then again I think I am only fucked up so hard by this stuff because I do not really like being a developer at all. I only do it for the money and because I am good at it (at least i think so. Nobody ever bothers to ever to read my code and give me feedback, because you know, php and js). So I guess I would hate any other job in the field maybe likewise?
This job *is* convinient, salary, office
position, flexibility could not be better. At the end of the day it's not that stressfull. And i don't have any second of freetime (due to family) or energy i could offer a new and more demanding employer, can't work over time or even take a fulltime position, can't home office, can't earn less, can't travel very long to the office and especially can't go back to school to learn something completely new. Some of these constraints are softwe then other naturally but still my posibilities at the Moment are very limited. That might change in about five years if the family situation changed. So it would most likely be reasonable to stay until then at my current job? And bear being alone with this app, don't getting involved on any new project, don't learn anything new, don't invent anything.
There was one potential way out, they considered offering me PHD position to the upcoming ml part of the project... But I learned that I would attend to a bunch of classes at university first, which i would like to, but I don't think i have the time.
I feel trapped somehow. I also feel very lonely in the Office because those fucktards keep saying in home office.
Man, I don't want to go to work today.6
"And in a stunning turn of events, he got it to work!"
But seriously... I've literally been throwing shit at a wall and seeing what would stick.
Fucking DTOs and getting shit out of a database. I need better resources on how to do this properly!
Anyways, I found that just using 'object' and letting the compiler deal with the rest of the bullshit actually allowed my code to work and run. I'm still a little in shock.
I'm over here trying to keep things in a nice one-to-one because that's what my PM recommended... and instead I just get slammed by Type casting nonsense and more errors than I can begin to understand. And unfortunately, Stackoverflow is of no help because everyone's issues are very nuanced and unrelated to my problem... Maybe I'm the problem? 🤷
But here it is working without all that bullshit. I don't know man... This code base is not the rager I was expecting. I'm getting my ass kicked with code that doesn't fall in line with the book I'm learning from.
You know how they say, "forget everything you've read and learned"? I'm feeling that really hard right now.
Constantly fighting the urge to rip everything down and do it based on what my book is recommending, but then the logical natured side of me is like "you ain't got that kind of time to be unfucking someone's work, only to get caught in more trouble. Your ego is not worth it"
Anyways, it's fucking late here and I'm glad enough to not have to think about this issue anymore. Bye.3
I'm literally one junior developer building a front end stack for a company that uses the waterfall method of building shit...
My application has not been fully tested and none of the real user base has actually tested it. I have no clue what potential egde cases exist in my application. I did as much testing as possible but it's keeping me on edge that there is potentially something broken lurking underneath that I don't know about.
If it is broken it's all erupting into flames and there's nothing I can do about it because the application will have to go through a whole beuacratic process to allowed to be fixed.3
So, just to recap if you missed the last few episodes. I've been a web developer for years. But I decided to get a degree and go to uni.
Also I am firmly on the fewer comments side of the debate about self-documenting code. Even though I usually rephrase it and say method and variable names are comments. Basic idea: something is unclear, you should leave a comment. But, before you leave a comment, take a good look at your method. Can you rename a variable? Maybe the method name? Maybe extract a method into smaller methods so it doesn't need a comment? And only if you fail to do so, leave a comment.
Alright, now that we rehashed that, uni coding makes no bloody sense.
There is code that is abbreviated to the max (or min).
And then, they need everything commented. I mean, why do that? Why call the parameters a and b instead of base and exponent. And then say:
"But write a whole article about it above the method". Like:
a is the base for a power operation.
b is the exponent for a power operation.
return int representing a to the power of b
How about just do this:
public static int power(int base, int exponent).
How is this not the same documentation?
Is it because we're at a uni, a place for smart people and smart people shouldn't have an issue keeping a mental map between the variables and their meaning?
Or is it because they are all mathematicians. All respect to applied mathematics. I mean, the function about exponent calculation, I was not aware that it could be that effective. But on the other hand, keep mathematicians away from programming. I get it, writing maths per hand doesn't have intellisense and therefore you don't want to write long variable names. It's and old tradition. Yada yada, yah.
But programming is not maths. And maths shouldn't be maths like that. Right naming makes it simpler. It might still be a while until we all LaTeX rather than handwrite and be able to give maths right naming schemes, but programming is beyond the point. Calling the array you handing in a function A and the one that you're returning D makes no fucking sense.4
About a year ago I had the great idea to enforce ago I had the great idea of proposing that we all lint our legacy code base using eslint to increase the overall quality of our JS.
I distributed the task of initially fixing all the errors eslint would find to the whole Frontend team (Luckily we only use JS there). I've finished my part in a couple of weeks and came across this piece of spaghetti.
One of the guys who has been with the company for over 10 years said, that the guy who wrote this monster was very proud of it...
In case you cannot understand what this does: It calculates the distance between 2 points on earth.9
A year ago I built my first todo, not from a tutorial, but using basic libraries and nw.js, and doing basic dom manipulations.
It had drag n drop, icons, and basic saving and loading. And I was satisfied.
Since then I've been working odd jobs.
And today I've decided to stretch out a bit, and build a basic airtable clone, because I think I can.
And also because I hate anything without an offline option.
First thing I realized was I wasn't about to duplicate all the features of a spreadsheet from scratch. I'd need a base to work from.
I spent about an hour looking.
Core features needed would be trivial serialization or saving/loading.
Proper event support for when a cell, row, or column changed, or was selected. Necessary for triggering validation and serialization/saving.
Custom column types.
Embedding html in cells.
Optional but nice to have:
Changeable column width and row height.
Drag and drop on rows and columns.
Right click menu support out of the box.
After that hour I had a few I wanted to test.
And started looking at frameworks to support the SPA aspects.
Both mithril and riot have minimal router support. But theres also a ton of other leightweight frameworks and libraries worthy of prototyping in, solid, marko, svelte, etc.
I didn't want to futz with lots of overhead, babeling/gulping/grunting/webpacking or any complex configuration-over-convention.
Didn't care for dom vs shadow dom. Its a prototype not a startup.
And I didn't care to do it the "right way". Learning curve here was antithesis to experimenting. I was trying to get away from plugin, configuration-over-convention, astronaut architecture, monolithic frameworks, the works.
Could I import the library without five dozen dependancies and learning four different tools before getting to hello world?
"But if you know IJK then its quick to get started!", except I don't, so it won't. I didn't want that.
Could I get cheap component-oriented designs?
Was I managing complex state embedded in a monolith that took over the entire layout and conventions of my code, like the world balanced on the back of a turtle?
Did it obscure the dom and state, and the standard way of doing things or *compliment* those?
As for validation, theres a number of vanilla libraries, one of which treats validation similar to unit testing, which seems kinda novel.
For presentation and backend I could do NW.JS, which would remove some of the complications, by putting everything in one script. Or if I wanted to make it a web backend, and avoid writing it in something that ran like a potato strapped to a nuclear rocket (visual studio), I could skip TS and go with python and quart, an async variation of flask.
This has the advantage that using something thats *not* JS, namely python, for interacting with a proper database, and would allow self-hosting or putting it online so people can share data and access in real time with others.
And because I'm horrible, and do things the wrong way for convenience, I could use tailwind.
Because it pisses people off.
How easy (or hard) would it be to recreate a basic functional clone of the core of airtable?
I don't know, but I have feeling I'm going to find out!1
the red haired girl and the blue haired girl.
there was this story about a programmer who spent years studying computer science before finally getting a job.
the dev studied only computer science and was put on blue team after a few days.
a few hours into one of the constant coding sessions, the boss told the devs that red team members and blue team members would be working in pairs.
the person from red team transferred the devs work to their data base without the dev knowing, then locked down the devs computer. the dev could not do anything. later, the dev got fired for not doing any work. after that, the company got millions of dollars, and the dev did not see any of it.
both the dev and the managers made a note not to hire any programmer who cannot secure their work.
it is not ethical to teach people programming without also teaching them cyber security.
computer networking, programming and security should all be the same major.
it is a bad idea to teach people how to build anything without telling them how to secure it.
the story above was just a scenario, but it probably happens way more often than people think.
Schools should teach both things in the same major.5
My team and me nearly finished a big new feature for our website.
I am a junior dev and this was the first big thing I was in charge of and now that I see how it unfold I feel really bad.
It consists of php backend (integrated into a 20 years old monolith) and vue frontend (punctually jumpstarted by a clusterfuck of typescript files included into php rendered html) and especially the frontend part looks so bad.
Vue is relatively young in our project and almost nobody has a clue about it. I learned so much about vue in the process, but the result is a behemoth of awfulness that grew over several months.
I have a really strong desire rewrite the whole mess, but I will never be officially allowed because it works and practically all the flaws in our code base are subject to the classic
"well, someday, somebody probably has to do something about that, but for now let's start this shiny new feature"
So for now I think about doing it secretly and pass it to my buddy to review it. I guess chances are high that not even the colleagues in my team (apart from my buddy) are going to notice, since they aren't as interested into vue as I am and don't have the overview over this features code as I do, but on the other hand it feels like something I could get in trouble for and apart from the cursed code base my company is great.
Have you ever bin that disgusted by your own production code before it was even one year old?3