DEV Community

Piotr Słupski
Piotr Słupski

Posted on

Three Appalling Cases of bad development


A base64 in base64 in base64

Recently I've been doing some more web development, which turned to be a lot of fun with modern develoments like Progressive Web Apps, Single Page Applications, Vue.js as the latest fad, as well as the tools that enabled me into the modern world of development like npm and composer.

How to leave a ticking time bomb

So I was challenged by a friend to debug an application. I can't share the code due to NDA, but I will try to describe it best as I can.

The website had to do with dealership searches. When the buddy who brought this to the table noticed that PHP was as old as 2004, he contacted me to clear stuff up.

It turned out, that not only was the server software older than archlinux's Time Machine, but the search bar was shooting direct requests at mysql_* functions. In order to get to the gist of the issues, a specific pattern of base64_encode and decode were used to

  1. Decode part of hidden instructions
  2. Encode some other part, while decoding another
  3. Encode yet antoher part, while decoding the result of the previous computation
  4. Upon contacting the developer, he said that because we don't have mcrypt installed or running on our PHP7 install, we must've badly installed PHP5.

I gave up after an hour of going endlessly in base64 encoding/decoding, and decided to write better code for future generations. Acting like a little bitch makes you a little bitch - the code was as delicious as a donut filled with nails.

How to badly manage your developers

The most interesting thing I came across were managers who "didn't give a fuck about technology".

This leads to:

  1. Increased time of development ( not taking the necessary duration of development into account before, say, a demo )
  2. No possibility to delegate ( not understanding tech means not being able to delegate tasks properly, as well as not being able to determine the skills of your coworkers or employees )
  3. No safety net - technical responsibility will fall only on the tech people, while the manager can proudly say "you were JUST supposed to add LinkedIn integration".
  4. Lack of trust in the cooperation as a whole.

Hire technical managers. It's easier for technical people to learn fast.

Your lack of mathematical and logical prowess is not an excuse while doing technological projects. Tech Culture is lacking - work on it.

Never ending starts

The last most inconvienient issue I have is the constant feeling of "building anew". Most devs and business persons expect that their groundbreaking idea is just around the corner, you just have to take this and that and voila, then you just add this and that, and boom, we're already on Ibiza, whilst in fact its raining outside and your life is still shit.

Development and research require TIME. Especially, development requires time. As with any human activity, we find the first possible pattern to deal with, measure the outcomes and optimize the operational pattern.

In order to become good at something (for instance, developing applications), one must develop applications. In order to build a product, you need people who no longer need to prove themselves in development - they get shit done without losing precious time.

Instead, most people just talk, without putting in the singe-daily-step-forward (SDSF) needed to achieve the goal. It's persistency that delivers apps, not inspiration. Inspiration is needed to map that first pattern, then reiterating over your model kicks in.

This is my first, I hope you enjoyed it. Thanks for reading!

Top comments (0)