coding Discuss

My side project(codename: Budgeteer) is a web application I am developing to track my personal finances. You can import transactions via csv exports from your bank, create categories and have smart rules to place transactions in the right category. It can also provide insights such as spending trends and other metrics. I like to be in a position to track how much things like groceries cost over time and see if I can optimize my spending.

The project uses the following technologies.

  • ASP.NET Core Web APIs
  • Vue.js
  • Aspire
  • Postgres

Aspire has made the development experience a joy. It enables me to add containerized dependencies locally and have them all come up with F5 so I can quickly work through features.

This is the app with fake transactions.

Budgeteer Sample

I have the project deployed locally on a docker-compose setup. One of the things I miss though is the Aspire Dashboard. Through Open Telemetry, it gives loads of information on telemetry and logs and makes troubleshooting issues a breeze. When working through an IDE and by using an AppHost, the dashboard comes for free. In my setup though, I had to deploy it as stand alone and configure the open telemetry parts in order to get everything wired up.

Aspire Dashboard

Here’s what I did in case you are looking to do the same.

If you are running on a Docker Compose, this is how the dashboard service needs to look like:

  dashboard:
    image: mcr.microsoft.com/dotnet/aspire-dashboard:9.0
    ports:
      - 18888:18888
      - 4317:18889
    restart: unless-stopped
    environment:
      - Dashboard__Frontend__BrowserToken=${DASHBOARD_FRONTEND_BROWSER_TOKEN}
      - ASP_NETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}
      - DOTNET_HOSTNAME=${DOTNET_HOSTNAME}
      - DOTNET_APPLICATION_URL=${DOTNET_APPLICATION_URL}
      - Dashboard__Otlp__AuthMode=${DASHBOARD_OTLP_AUTHMODE}
      - Dashboard__Otlp__PrimaryApiKey=${DASHBOARD_OTLP_PRIMARY_APIKEY}

The ASP.NET Core Web API service needs to look like so. Notice the OTEL settings.

  api:
    image: budgeteer-api:latest
    environment:
      - ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}
      - ASPNETCORE_URLS=http://*:8080/
      - ASPNETCORE_HTTP_PORTS=8080
      - OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
      - OTEL_SERVICE_NAME=api
      - OTEL_EXPORTER_OTLP_HEADERS=x-otlp-api-key=${DASHBOARD_OTLP_PRIMARY_APIKEY}

Then, your docker-compose .env file should look like so:

    ASPNETCORE_ENVIRONMENT=Development
    OTEL_EXPORTER_OTLP_ENDPOINT=http://dashboard:18889
    DASHBOARD_FRONTEND_BROWSER_TOKEN=yourDashboardToken
    DOTNET_HOSTNAME=dashboard
    DOTNET_APPLICATION_URL=http://localhost:8081
    DASHBOARD_OTLP_AUTHMODE=ApiKey
    DASHBOARD_OTLP_PRIMARY_APIKEY=yourApiKey

The above example assumes that your project is based off the Aspire project template. If it’s not, then your’ll need to add the OpenTelemetry configuration in your ASP.NET Core project yourself which is beyond the scope of this post.

greece 1 comment

Why did you return to Greece?

In 2011, I left Greece for Ireland with my wife. We lived there for about twelve years, experiencing some of the best years of our lives.

  • I advanced my career from a mid-level backend developer to a solutions architect, a principal engineer, and eventually, a co-founder of a technology company.
  • I co-founded Ardanis, a digital software consultancy, and helped grow the company for over eight years.
  • Both our daughters were born in Dublin.
  • We even bought a house near Dublin.

Yet, at some point, we decided to return to Greece.

When I tell people in Greece about my return, the response is almost always the same:

Why did you return?

The question usually carries an undertone suggesting that Greece is inferior—a place not worth coming back to if you’ve lived in a well-run, prosperous country. But for me, the answer was more complex.

Yes, my profession allows me to work remotely, and many Greeks with similar opportunities choose to stay abroad. But what I found abroad was always almost fulfilling, like music playing slightly off-key. The real meaningful moments always felt just beyond reach—a cheap flight away.

The thought of returning to Greece lingered, always quietly waiting. Over the years, I watched friends move back to their homelands—Poland, Cyprus, Hungary, Portugal. If they could return, why couldn’t I? Greece, despite its issues, is not a dangerous place; there is no war, no fear of violence.

A few years before deciding to return, I discovered two practices that profoundly shaped my thinking: Meditation and Stoicism

Through Stoicism, I learned to listen to my inner voice—the ήγεμονικόν. Meditation then helped me amplify that voice.

One morning, during my usual meditation session in the quiet of our attic, I opened my eyes, and a message arrived in my mind, unbidden and unmistakable:

You are moving back to Greece.

It wasn’t just a thought—it felt like a truth revealed, as if someone had simply stated a fact, and now I knew it with certainty.

Six months later, after preparations and farewells, we were back in Greece.

Now that I’ve been here for two years, let me share why I made this choice.

I returned for

  • My parents, to be there for them, and my kids’ grandparents, while they are still around.
  • My sister and her family
  • My friends
  • My relatives
  • My kids to start Greek school and learn our heritage and culture.
  • My father-in-law’s wine
  • My mother-in-law’s pastitsio
  • The protection and support of my circle which dampened my anxiety and helped eliminate my panic attacks.
  • Friendship
  • The Greek lifestyle
  • The discussions on philosophy with Mr. Kyriakos, the bookshop owner.
  • The impromptu coffee/tavern outings where we get to discuss interesting topics.
  • Greek food, veggies, and delicious fruits.
  • The people I meet that invite me for coffee despite just meeting them.
  • The sea
  • The summers
  • The nature and Mount Olympus to which I have instant access.
  • The 100km of sandy beaches that we don’t know what to do with them in Pieria
  • The walks by the sea with the family in the purple lit, summer sunsets.
  • My hometown and county that the universe blessed in more than one way.
  • Katerini and Thessaloniki
  • Chalkidiki
  • The things I find meaningful in life
  • The fact that we don’t live forever

In order to truly understand why I returned, you would need to spend a decade abroad. Only by losing something can you fully appreciate what you once had.

So that’s why I returned.

But our journey here has just begun, and who knows what lies ahead?

Standing atop Mytikas, the highest peak of Mount Olympus at 2,917 meters. From here, I feel connected to both my journey abroad and my return home.