j

jess

Software developer, who likes to describe her day as a developer and tell about games, mainly indie games.

Open source and epicurus project

Epicurus is my current open-source software that I'm working on.

It started as a tool to generate mutation tests configuration based on git commits diff, to avoid overloading on CPU and results in slow mutation tests.

After some time, I started mentorship about software architecture and because of that, I learned some precious lessons.


First lesson

I thought a lot and structured the project only to generate Stryker configuration, copying the configuration file and recreating this file, putting the modified files in mutate: [] array. This process took me some time thinking a lot about how to do that in a safer way because I have to modify a file on the fly. After some researches, I discovered that the idea is not the best path to follow in the project. If Stryker changes the way to pass the files I have to mutate, I need to reformulate the code, the maintenance cost is too high.

Do I really need to modify the file? It's the question rounding my mind.

After the first talk with my mentor, they brought some ideas that blew my mind.

Instead of modify the file, what do you think about use the Stryker CLI? Do they have some flag to pass files you want to mutate? If yes, we can use that!

And they have the flag! It's all we want to fast-forward the project! It can see more in the documentation.

Scope changed

Now with this new possibility, I changed the scope of the project. Removed all code about modify configuration files, and refactored to only return the modified files in this format: modifiedFile1.js,modifiedFile2.js


Second lesson

With the change of the scope, I discovered the Epicurus is not more specific to Stryker, but should be applied in different projects. To use with Stryker, I can only do this command in terminal:

$ npx stryker run -m $(epicurus)

Based on Unix philosophy, I basically built a modular software to retrieve modified files and use the result to run my mutation tests at Stryker.

I can use Epicurus in another contexts because there is modular and minimalist software.


Third lesson

With this new structure, I have to refactor some things.

My constructor has this code:

 constructor({ dirDepth = '../../../', dir = 'src', format = ',' } = {}) {
    this.dirPath = path.resolve(`${__dirname}`, dirDepth);
    this.dir = dir;
    this.format = format;
  }

My idea with this code is when you use epicurus CLI you can decide the dirDepth , dir and format , but my mentor says when I put on this way, in the constructor, I need to instantiate another object to change dirDepth, dir and format. For my scope, it's not a bad thing, but for another project could be a problematic thing. He suggests me to pass these arguments to the method responsible for that, in this case fiilterFiles and getFilesFromDir .

How to be productive

Hello there!

I will talk about productivity today.
What is productivity? It's a big question to think about.
Do we have to be productive all the time?
The idea of productivity is very foggy to me, it's all to do with society and capitalism, mainly neoliberalism, that forces employees to always be productive without thinking about their health, only about profit.


Even in a pandemic, we have to be productive no matter what happens in our life.


What is more important? Your life or the company? Clearly our life, please!


We have only one life, I intend to spend this time with my family and friends, doing things that I love. This doesn't say anything about my professional skills or that I don't do my job correctly. I'm a developer, but my profession does not define my life.


While at work, I do my best to deliver the features and improve the product that customers use.


I use some tools to help manage my time.


One of those is Clockwise.

From their website, we have this information about what Clockwise is.

It is a smart calendar assistant that makes your calendar work for you.
Clockwise is the smart calendar extension that frees up your time, so you can focus on what matters.

Clockwise brings together a powerful optimization engine with a personal calendar assistant to make your work life run smoothly.

🗓Clockwise automatically moves your meetings in order to optimize your calendar and free up Focus Time for you and your team. Level-up your time management with Clockwise.

Clockwise creates more time for you to get things done through:

— Blocks of uninterrupted time to help you focus on what matters.
— Automatic scheduling conflict resolution to cut your busywork.
— Work and meeting hours preferences for a schedule that works for you.


I configure my focus time on Clockwise to be 40 hours / week. It's impossible, but Clockwise tries to force me to as many focus hours as I can. And they really help to keep your agenda tidy.

A technique I use sometimes, depending on which task I am doing, is pomodoro. It basically forces you to focus and break the focus time in specific time slots.


I use an app on my android to do that called Pomodoro. They allow you to customize how much time you spend in your sessions and day goals. It's a very nice this tool because you have limited time to focus on your task, and after 25 minutes, the app alerts you to pause for 5 minutes and rest for that time. After some sessions the pause break is long, about 15 minutes to rest, everything is possible to customize which is really cool.

I think that's it for now, and don't forget to rest and relax when the weekend comes. Don't push yourself too hard, this is unproductive.

Bye!