Skip to content

Instantly share code, notes, and snippets.

How to calculate your hourly rate as a freelancer?

Many people struggle with this question. Some just try to make as much as a full-time employee makes (and ignore that they won't be able to bill as many days). Others follow tips on startup related websites that suggest to ask for 20% to 50% more than an salary would yield (and ignore the additional risk and expenses they have).

Below you will find some numbers to help you calculate how high your hourly or daily rate should be.

Your yearly income should be higher than an average salary

  • You take more risk than full time employees, phases without income are likely
@aleixmorgadas
aleixmorgadas / 0_README.md
Created July 8, 2024 06:14
Most common crawler URIs to be ignored by OpenTelemetry SDK to avoid false alarms

Ignored URIs

We don't want our monitoring systems to raise an alert for each GET 404 Not Found because there are crawlers that try certain URIs.

Here a list of the most common URIs used by crawlers to be added to OpenTelemetry.

const sdk = new NodeSDK({
  instrumentations: [
 getNodeAutoInstrumentations({

Invariantes vs Reglas de negocio

A partir de esta conversación escribo este Gist.

Posible caso

Tenemos un almacen que tiene un stock por producto.

Regla de negocio:

  • No podemos vender un producto que no tenemos stock.
@aleixmorgadas
aleixmorgadas / AbstractIntegrationTest.java
Created December 5, 2023 18:47
Signelton Abstract Integration Test to reuse a Testcontainer between test classes
package dev.aleixmorgadas;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.test.web.servlet.MockMvc;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
@aleixmorgadas
aleixmorgadas / 0_README.md
Last active September 6, 2023 15:59
Testcontainers MongoDB with volume and fixed ports.

Testcontainers MongoDB with volume and fixed ports

For the example, I'm using SpringBoot in DevMode. It is the only mode I consider that makes sense to enable the volume mapping.

Remember to add .data/ to .gitignore

@aleixmorgadas
aleixmorgadas / .0_README.md
Created September 2, 2023 19:03
Mocking Storybook dependencies with vue3-vite

Mocking Storybook dependencies with vue3-vite

When you are using @storybook/vue3-vite and you are wondering how to mock external modules, here an example.

In this case, I will mock the Auth0-vue module so that I can render components without problems.

:information: The files have a $ to represent a folder because / it is not permited charater in a gitst

@aleixmorgadas
aleixmorgadas / 0_README.md
Last active September 6, 2023 04:07
Aggregate with MongoDB

Entity Event Sourced with Spring Boot and MongoDB

@aleixmorgadas
aleixmorgadas / README.md
Created July 29, 2023 11:33
Keychron VIA app Linux

Keychron VIA app Linux

Open chromium.

Go to https://usevia.app/

You might see the error:

Vid: 0x3434
@aleixmorgadas
aleixmorgadas / 0_README.md
Last active July 27, 2023 13:26
Refreshing Auth0 ManagementAPI token before it expires when using Spring Boot

Refreshing Auth0 ManagementAPI token before it expires.

The expectation here is that the token expiration is 24h. You can check it in Applications > API > Settings > Token Settings.

What I did is refreshing the token every 12 hours.

In my case, I use Spring Boot 3.

@aleixmorgadas
aleixmorgadas / 0_README.md
Last active June 24, 2024 12:30
Starting a FastAPI as a server mock

Using FastAPI as Server Mock

I wanted to start a real mock server with real instances that I could fine tune for my own needs.

I found a way to start the FastAPI to run the tests agains it, and then kill the uvicorn.

Here an example code 👍

image