Details
-
AboutSoftware developer at Ruter AS, public transport services in Oslo.
-
LocationOslo, Norway
Joined devRant on 6/21/2017
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
-
Ever have to put your work on hold due to being called into a 2 hour meeting to discuss how important it is that we need this thing finished asap.1
-
Probably the smallest, most inconsequential rant I'll write here, but - is it that hard for websites with a main search input or login field on their landing page to put its tab index to 1?
I mean, my mouse is all the way over *there* ~ -
!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 -
Hi, I am a Javascript apprentice. Can you help me with my project?
- Sure! What do you need?
Oh, it’s very simple, I just want to make a static webpage that shows a clock with the real time.
- Wait, why static? Why not dynamic?
I don’t know, I guess it’ll be easier.
- Well, maybe, but that’s boring, and if that’s boring you are not going to put in time, and if you’re not going to put in time, it’s going to be harder; so it’s better to start with something harder in order to make it easier.
You know that doesn’t make sense right?
- When you learn Javascript you’ll get it.
Okay, so I want to parse this date first to make the clock be universal for all the regions.
- You’re not going to do that by yourself right? You know what they say, don’t repeat yourself!
But it’s just two lines.
- Don’t reinvent the wheel!
Literally, Javascript has a built in library for t...
- One component per file!
I’m lost.
- It happens, and you’ll get lost managing your files as well. You should use Webpack or Browserify for managing your modules.
Doesn’t Javascript include that already?
- Yes, but some people still have previous versions of ECMAScript, so it wouldn’t be compatible.
What’s ECMAScript?
- Javascript
Why is it called ECMAScript then?
- It’s called both ways. Anyways, after you install Webpack to manage your modules, you still need a module and dependency manager, such as bower, or node package manager or yarn.
What does that have to do with my page?
- So you can install AngularJS.
What’s AngularJS?
- A Javascript framework that allows you to do complex stuff easily, such as two way data binding!
Oh, that’s great, so if I modify one sentence on a part of the page, it will automatically refresh the other part of the page which is related to the first one and viceversa?
- Exactly! Except two way data binding is not recommended, since you don’t want child components to edit the parent components of your app.
Then why make two way data binding in the first place?
- It’s backed up by Google. You just don’t get it do you?
I have installed AngularJS now, but it seems I have to redefine something called a... directive?
- AngularJS is old now, you should start using Angular, aka Angular 2.
But it’s the same name... wtf! Only 3 minutes have passed since we started talking, how are they in Angular 2 already?
- You mean 3.
2.
- 3.
4?
- 5.
6?
- Exactly.
Okay, I now know Angular 6.0, and use a component based architecture using only a one way data binding, I have read and started using the Design Patterns already described to solve my problem without reinventing the wheel using libraries such as lodash and D3 for a world map visualization of my clock as well as moment to parse the dates correctly. I also used ECMAScript 6 with Babel to secure backwards compatibility.
- That’s good.
Really?
- Yes, except you didn’t concatenate your html into templates that can be under a super Javascript file which can, then, be concatenated along all your Javascript files and finally be minimized in order to reduce latency. And automate all that process using Gulp while testing every single unit of your code using Jasmine or protractor or just the Angular built in unit tester.
I did.
- But did you use TypeScript?37 -
Going to have a call for a position in Vancouver, Canada with AWS. I'm from the poor side of Europe, so I'm really excited. My ultimate goal is California, but Canada will do as well until then.2
-
Tired of stereotypes. It seems that if someone uses a Mac, is posh; if someone uses Windows is a silly cunt, and if someone uses Linux ... well, it seems that's the way to go, right? Well, no.
Suddenly the world is filled with script kids who come and indirectly recriminate you that you have no idea of computer science because you use Ubuntu instead of Arch. That has happened to me with a recently graduated kid.
Really? Do you really consider yourself a good developer only because you have Arch installed and you hate Windows and Apple?
Let people use the system and development software that they prefer most (or that one that their company forces them to use).
This kids have to be more humble and focus on creating better code, help their colleagues and know how to deal with clients.11 -
I’ve begun to notice a distinct pattern with devs. I realise it has probably always been there but Im just thinking out loud as Ive started to actively notice it.
*Dev has literally one problem with a library/framework/environment*
“Holy crap <NAME> is the worst thing ever!! its actually worse than an STD. whoever made it needs to quit making software and become a goat farmer” (paraphrasing of course)
What is it with us that the second we have difficulty with a library or framework we immediately brand it as a cancerous polyp on the anus of humanity?8 -
Admin work, because its all manual:
- Each new project has to fill out an Excel tab in a workbook, with a list of all the major tasks and who is responsible. This then needs to be used to create a Gantt chart, manually, in the same tab, showing in what month a task starts and ends.
- Every month we have to manually enter status updates into a powerpoint slide on a shared deck. Which has a collision at least once per month.
- Once a quarter we need to do something similar as the powerpoint slides, but into a word doc instead.
- Once a week we need to track our time on projects in a tool that can't be integrated with (no API or anything). Meaning we can't link up a ticket tracking system to it, so again, all manual.
- Once every 6 months a new round of research funding opens up and we write proposals. The status for which are tracked in another Excel spreadsheet, manually, once a week until the deadline.
- The instructions for what to do with the proposals are so vague and badly documented that there is an unwritten rule, that for the first time you will have to ask a bunch of questions to the project manager. This is accepted by everyone and its just the done thing.
- Everything is stored in a dropbox style system, which has become so cluttered I can only find resources by saving the links sent out previously.
- Some of these updates / reports also get a 1 hour meeting for everyone to stand up and read out what they've entered.
- From time to time random things will need to be reported on to the higher ups (how many publications, research papers, patents, times and dates etc.). Again rather than a tool, a new Excel spreadsheet is whipped up and emailed to everyone on the team. Whoever sent it out, then has to merge the 20+ copies into 1 doc.
- Some of the staff (mostly the devs), use a ticket tracking system to keep track of everything. Management refuse to use it to track the things they need. Instead we have to copy paste from it into the word docs, powerpoint, excel etc.
- By far the most annoying. Management force all the above as they need the info for finance, accounting, legal etc etc. So we have to do it, but whenever there is a question from legal, management send the question to us. So despite having documented every facet of everything imaginable, it all gets ignored in favour of endless emails.
I once tried to to put an end to all of this madness by proposing the use of a ticket tracking system, and then building reporting tools on top of it.
... I was told that it "wasn't appropriate". Still don't know what that means.9 -
I'm not even in the mood to speculate how much time I've spent trying to convert this certain datatype from one of the frameworks we're using. I couldn't find it in the documentation, google and SO says to use a member which just doesn't work and seems to be deprecated.
I started writing my own converter which got way bigger than what I was comfortable with due to all the special cases needing separate checks and handling.
I eventually came across a function which does exactly what I needed. It was the one suggested by said googles and SOs, it was just... recently renamed.
Not sure how to describe this sense of "yay, I found the proper solution!" and "are you fucking kidding me". Thank goodness for devRant. -
So my programmer boyfriend chose his career over me.
We made plans together that he will teach me how to do be better at coding and that he will leave his company because it sucks. However, they joined some hackathon and won.
Now, they are going overseas and our plans? Nothing. He chose his company, success, money and fame over me.
We’re engaged btw. Sorry for being so dramatic. Any advise?17 -
!rant
We keep ranting about managers, here is something good about mine. He increased my salary a 100% of my current. Which is freaking awesome.
That's all have a good day. ☺️6 -
- "Finance are too busy to look at this"
- "Finance have too much to do"
- "We can't this sorted at the minute because finance are overloaded"
Finance just sent me a request for "detailed description" for each business trip i've made. Attached is a spreadsheet report with 122 columns detailing every facet of my travel expenses that they have recorded so far. Not even just one row per trip, but one row per item, like:
- Trip 1 - Airport parking: .....
- Trip 1 - Airfare Outbound: ....
- Trip 1 - Airfare Inbound: ....
This is way you are too busy, because this is fucking ridiculous. Fix your shitty process and stop bitching.
FYI, your "detailed descriptions" can be found in the contracts we've signed, which outline all the travel needs, which you've already reviewed and signed off on. Get your shit together and stop bugging me4 -
Most of the Top "Rants" are jokes.
Many of them even just lame, ancient jokes.
Seems to becoming PoorDevJokes6 -
Yesterday was the first day of an "Advanced" C programming class. I looked at the first homework afterwards and saw this:
NEVER use 'assert'. Real programmers don't use assert in big software projects because it makes your code stop.
Who the... What... How... Why would you...
*sigh* it's going to be a long two months.5 -
After one year of learning to code I am still not sure if I am an adequate programmer or a really effective Google user...5
-
One of my best mentors was my father!
When i was very, very young (like 8 years old), he brought a new computer from his work! The first thing he did was play Doom (lol) but later, he always tried to show me all the things that could be done, coding in VB6.
He always told me: "You can use this to make the computer do what you want to do! You can do many things!". Even if at that time I did not understand much, he always tried to explain me how to develop a calculator or even a "Hello World" but with the name of my mother.
I will never forget his face of happiness, when I simulated a face that blinked with a counter. I do not even remember how I did it, but he hugged me so hard lol.
A couple of years ago, he was the first to try my first application on Android: An application that screamed when you shook the phone lol. He laughed a lot with that application.
He helped me in my university and we even developed several solutions together for different companies. Now we work separately, but he was an important part of what I am now.
PS: My english is kinda rusty, so forgive me ><.9 -
Been spending the past two days setting up linux on my new work laptop which happens to have a hybrid nvidia GPU, in addition to requiring a usermade driver to get the docking station working. Both the (proprietary!) nvidia driver and displaylink driver demanded to rebuild the kernel, and the nvidia ones crashed during it.
I had no idea it could be this much of a hassle. Had I bought it myself I would have taken it back. Never buying a laptop with a discrete GPU ever again. Sweet butts. -
First day at new job yesterday, and it was really enjoyable, it's nice to be at a place that is actually competent at software development. I actually have people I can turn to who are tons more experienced than me.
Aside from the usual orienteering, I spent my time examining their existing systems and wrapping my head around the project I'll be working on for my trial period.
People seem friendly, coffee is good, they know what they're doing, willing to experiment and try new things, and I will get a free mac book pro as an employee.
Hope I get this.3 -
Holy fucking shit. I just went to my first Java class at uni (3 1/2 hour long one at that) and I havent felt so damn irritated in a while.
Some background:
So first, I only had about an hour of sleep last night and a full day of work before this class so I was more cranky than normal.
Theres only 7 students in the class, 6 others plus me. I am the only one with any resemblence of programming experience. The teacher also claims to be a linux developer.
This is a three part course series. Java 1, 2, and 3. All taught by the same teacher.
The fuckery:
-teacher spends 48 minutes talking about text editors. Not even IDEs. Just talking in depth as fuck about notepad (notepad. Not notepad++ )and atom and textpad. Those three only though, nothing on vim or emacs or ACTUAL IDEs. 48 minutes.
- I briefly mentioned learning node.js on the side and am now the "javascript girl" to my teacher. I'm probably less experienced with js than any other thing i ever practised or studied.
-professor saw linux on laptop and asked what distro. When I said arch he said "oh no you shouldnt be using that Its not really for beginners" ... Uhh what makes you think I'm a beginner to linux? Or does he not think I should be using arch while learning java? Either way its really ridiculous and irritates me that he would discourage anyone from using any software/OS/anything, regardless of what it is or skill level.
-teacher moved a bunch of content out of the course because theyre either "concepts that are never implemented anymore" or "arent critical to know to master the language". These particular topics that were removed? Multi-dimensional arrays, scopes, and exception handling. EXCEPTION HANDLING.
-he writes a hello world program and displays it on the board, proof of it working and everything. He tells the class to write the same program, compile and run it. Never did I guess we would spend the remaining hour and ten minutes of class struggling with fucking hello world programs. Especially when the correct code is on the fucking projector.
And I get it guys, everyone starts somewhere. People have to learn from square one. But these kids have no fucking interest in this. One of them literally admitted to pursuing this degree for the "lavish life" that comes with the salary. Others just picked programming because they didnt know what else to choose to get into the school. It fucking saddens me. I hope that one or some of them end up caring and finding a passion in this field, otherwise I feel fucking sorry for them having to spaghetti code their way through life to get a paycheck cause they couldnt be bothered to put in the effort. I feel even more sorry for any devs they work with in the future too.
The other annoying bit is that I can't test out of this class!! so it looks like for either 7 hours a week ill be bored out of my fucking mind with these beginner concepts or ill be helping others fix really stupid shit in their code (like putting quotes around hello world so it would actually print the string).
Fucking hell. Waste of a semester class.44 -
Hey fellow devs,
I'm proud to say, that today I've passed my final step/exam of my apprenticeship.
So now I'm officially an IT-Specialist - Software Development or "Fachinformatiker für Anwendungsentwicklung" in german.
I'm so fuckin' relieved and happy that this chapter is now finally closed and the real fun can begin!
My new job - indeed the old one with 4x payment and just a 32 hour week instead of a 40 hour one.
Now I will cheer and drink as much whiskey I can find out there! :D
PS.: This baby (pic related) was my presentation device today. One member of the commission had to laugh, a ranter as it seems! ;)16 -
Unpopular opinion about Microsoft buying GitHub.
Just putting it out there that when you made your github repos you did so under their privacy policy and terms and will be protected under those in the future, and that both GitHub and Microsoft are corporations with the goals of making money.
Are people seriously mad that their code has gone from one capitalist corporation to another, with no foreseeable change in privacy or data policy? I have respect for those that switched to self hosted long ago since that's going from corporate to private, but if you throw away the UX and community GitHub has developed because a multinational corporation (with so many branches, products and divisions, which happens to have a few products you don't like) will soon own it, are you actually making a rational, guided decision?
Also just throwing it out there that GitLab is also a company. They've also had issues with keeping data intact in the past. They do, however, have free private repos (although I can't ever trust someone who gives me "free" privacy) as well as builtin CI. There are some definite upsides to it, although the UX has a ton of differences. If you're expecting the same dashboard and workflow you've used on GitHub, don't, GitLab has cool features but the bells and whistles aren't the exact same.
If you're switching to GitLab solely because of Microsoft, step back and think, regardless of how popular it might make you to hate Microsoft, is it really worth changing your development ecosystem to go from one corporate entity to another solely because you don't like the company?
I use GitLab and GitBub as well as Bitbucket and selfhosted git on a daily basis. They each have their upsides and downsides; but I think switching from one to the other solely because of Microsoft is not only totally irrational, but really makes light of/disrespects the amazing tools and UX the teams behind each one have carefully developed. Pick your Git hosting based on features and what works out for your use case, not because of which corporate overlord has their name plastered on it.
(Also just throwing it out there that lots of devs love VS Code, and that's Microsoft owned too... They did also build and pioneer a bunch of really cool shit for devs including Typescript so it's not like they're evil or incapable in any sense?)11