DEV Community

Johannes Schröder
Johannes Schröder

Posted on

Finding the right tool for the job

micro-service screenshot

From time to time you come across a real problem. Like a real one, not a "like to solve" one. And then you use your valuable resources —the time between your real job and the moment you fall asleep on your keyboard— to dig in and figure out how to solve it.

The Problem

My problem was "unencrypted passwords lying in clients emails for EVER".

The Concept

After a few weeks on brainstorming, a coworker and I found a way to deal with this problem: "encryption in the browser" — well, sounds kinda lame and obvious...

The Project

My first attempt was to create a working prototype in Symofony, since it's the framework I'm most familiar with.

The prototype was exactly how I wanted it to be, except the feeling that my micro-service was not micro at all.

38 Composer packages
393 NPM packages

After a while I tried to get rid of the packages I didn't use, but it got worse.

My first intention was to throw everything away and pretend it never happened.

But then, I decided to give it an other try and recreated the same application in express.

The amount of packages grew up to ~610 NPM packages, but the reward was great:

  • one ecosystem (node)
  • bundled executable (thanks to pkg)
  • one language to deal with (js)

Result: cryptletter

The result of my work can be found at github. If you have tips, find bugs, or just want to give some feedback on the concept in general, feel free to contact me. Any feedback is appreciated.

Lessons learned

The first "weapon of choice" might not be the best. Just using a framework for the sake of using it is most of the time not that good.

I never used express for real project, since I am one from the PHP world. But learning new things is kinda awesome.


How do you choose a tool or framework for a project?

  • "Check the requirements and decide"
  • "Let's use [insert framework here] for anything"
  • "Wordpress!" — "But you don't even know the requirements?"...

Discussion (0)