Mihail Tirdea · Software Engineer & Tech Lead

I build web applications and APIs in Laravel, Symfony and Go.

  • New products, from the first commit to launch.
  • Existing systems, made faster and easier to change.
Building software since
2012
Laravel
Certified (verification page, opens in a new tab)
Tech lead since
2021
Mihail Tirdea in a dark green suit, adjusting a cufflink.
Roles and projects by year, from 2012 to now. A lit window was active in the selected year.

Active now: Powercloud, GradSmart, Kraftbuch, t3lly.

  1. Studies2012 to 2016
  2. PremierDenta2012 to 2025
  3. Vlinde2016 to 2019
  4. NTT DATA2019 to 2020
  5. Netbyte2020 to 2021
  6. Powercloud2021 to now
  7. GradSmart2021 to now
  8. The Ambientalist2024
  9. Licen2025
  10. Kraftbuch2026 to now
  11. t3lly2026 to now

In service

  1. In service

    to now

    Powercloud

    Tech lead · E.ON

    Powercloud turns meter readings into invoices for more than 5 million E.ON customers. I lead one of the teams that build it.

    PHP · Symfony · MySQL · Redis · RabbitMQ · Docker · Datadog

    Three flows, one home

    Energy, data and money each take their own route to and from a home.

    Flow

    Power runs from the plant through the grid operator’s wires into the home. The supplier never touches it.

    The metering operator reads the meter and passes the values to the supplier and the grid operator.

    The customer pays the supplier. The supplier pays the grid operator for the wires and the market for the energy.

  2. In service

    to now

    GradSmart

    Co-founder

    A graduate job board that matches candidates with roles through personality profiling.

    Laravel · PostgreSQL · Livewire · Redis

  3. In service

    to now

    Independent

    Products and client work

    • Kraftbuch 2026

      A training log: workouts, routines, personal records and body measurements, shared between friends. In English, German and Romanian.

      Laravel · Livewire · Flux · Pest

    • t3lly 2026

      A phone-first TV tracker: follow shows, tick off episodes, get release alerts, and pick a film together on movie night.

      Laravel · Inertia · Vue · TypeScript

    • Licen 2025

      Salesforce Data 360 planning and cost forecasting, for ArchCloud Digital. As technical owner I took the rebuild to launch in under six months, in a team of three. Announcement on LinkedIn

      Laravel · Inertia · Vue · PostgreSQL

    • The Ambientalist 2024

      Website for a composer of atmospheric electronic music, where every release since 2018 plays with one click. An hourly job checks Apple Music for new releases and adds them.

      Python · JavaScript

    • PremierDenta 2012 to 2025

      Online store for dental instruments, built and maintained for fourteen years.

      WordPress · WooCommerce · MySQL

Record

  1. Closed

    to

    Netbyte Digital Agency

    Business partner

  2. Closed

    to

    NTT DATA

    Full stack developer

    • WerKenntDenBesten 2020

      Speed work and a Laravel upgrade for an advertising portal.

    • Traum-Ferienwohnungen 2019 to 2020

      B2B agency management: estates, inquiries and bookings.

    • Leipziger Foren portals 2019 to 2020

      Multitenant event planning portals with resources and documentation.

  3. Closed

    to

    Vlinde Transylvania

    Full stack developer

    • Pro-Report 3 2017 to 2018

      Construction documentation app for iOS and Android.

    • GoGun 2017 to 2018

      Online shop with PayPal and Stripe payments.

    • Speisekarte 2016 to 2018

      Multitenant, multilanguage restaurant platform.

  4. Completed

    to

    Studies

    BSc Information Technology

    “Vasile Alecsandri” University of Bacău, with an Erasmus semester at the Université de Lorraine.

Field notes

Practical notes from my work with Go, PHP and databases.

Example in the monitor

One key. Almost 3 MiB more.

Change to the list
$ids = range(0, 99_999);// keys 0 to 99_999 are implied$ids['100000'] = true;$ids['meta'] = true;$result = ['ids' => $ids, 'meta' => true];

2.02 MiB. A packed list. The values sit in a row, and the keys are just their positions.

2.02 MiB. Still packed. PHP reads '100000' as the integer 100000, the next index, and the array already had room for it.

5.00 MiB. A hash table now. Every value moved into a bigger slot that also stores a key, and memory peaked at 7.02 MiB while both copies existed.

2.02 MiB. The list stays packed. The two-key wrapper around it adds 376 bytes.

PHP 8.4.19, 64-bit arm64. Memory above a baseline from memory_get_usage(false), the same in three fresh runs per case.

A string key that PHP can’t read as an integer turns a packed list into a hash table, and every value pays for it. Keep the flag beside the list instead, though callers then get a wrapper rather than a bare list.

Read the original post

Same fields, half the memory

type Reading struct {    Estimated bool    MeterID   int64    Final     bool    KWh       int32    Tariff    int16}

32 bytes per value 16 of them padding

64-bit Go. Illustrative struct. A million values in memory: 32 MB.

On 64-bit Go, an int64 needs 8-byte alignment. Put a bool before it and the next field needs seven bytes of padding. Flip the switch to reorder the same five fields.

Read the original post

All posts on LinkedIn

Profile

I work remotely with teams worldwide, many of them in Germany.

Flexible, creative, and open to new ideas.

“Mike is a superstar! As a non-techy his ability to explain technical things in terms that I understand is very valuable and I’m looking forward to working with him for a long time!”

Jack Lam, on LinkedIn
Backend
PHP, Laravel, Symfony, Go, GraphQL
Data and infrastructure
MySQL, PostgreSQL, Redis, Elasticsearch, RabbitMQ, WebSockets, Docker
Frontend
Vue.js, Nuxt.js, Livewire, Alpine.js, Tailwind CSS
Observability
Datadog, Sentry, New Relic
Certification
Laravel Certified Developer, 2020 (verification page, opens in a new tab)
Languages
English, Romanian

Get in touch

For independent projects, tell me what you’re building.

tirdea.mihai@proton.me