2025 in Review: a year of exposure, compounding, and trusting my gut
A reflective 2025 year-in-review covering community building with ZurichJS, conference speaking across the world, shipping high-impact systems at Smallpdf, and showing up consistently online. Lessons learned, things shipped, and what’s next for 2026, including ZurichJS Conf in Zurich.
2025, exposure as a strategy
2025 was a year of exposure.
Exposure to new communities, different cultures, new technologies, and very different ways of thinking about the web and frontend. It felt like taking one long breath and looking at the state of JavaScript, the ecosystem around it, and where I actually want to position myself long-term.
At the same time, it was a year of stepping outside of self-imposed guardrails.
Before this, most of my growth happened inside companies. Building influence, shipping impact, mentoring, climbing the ladder, and doing meaningful work, but always within a defined scope. Team goals, org structure, OKRs, ARR. I still carry a lot of that mindset into my role at Smallpdf , and I care deeply about doing good work there. What changed in 2025 is that I stopped bounding my identity and ambition to that scope alone.
Pre-2024, I didn’t do conferences or meetups at all.
The first meetup I ever spoke at was React Advanced London in February 2024. I was living in Switzerland at the time, self-funded the trip, and treated it as a leap of faith. No expectations, no incentives, just a strong urge to see what would happen if I put myself out there.
Everything that followed, conferences, meetups, workshops, writing, happened for the same reason. Not because a company asked me to, and not because it was tied to a role or a title, but because I genuinely wanted to do it. I care deeply about owning my voice, my opinions, and the way I tell stories.
Before that, most of that instinct stayed internal. Product demos, sprint reviews, showing off features at the end of a cycle, I was often the demo person. I enjoyed explaining systems, telling the story behind the work, and making complex things feel accessible. But it was all bounded by the context of the company and the problem space I was hired into.
In 2025, I took that same instinct and moved it outside. I went all in on sharing online, speaking more, running workshops, and putting ideas into the open without a role or a roadmap defining the narrative. Less translating company work, more expressing how I actually think about frontend, systems, and building in public.
A big driver behind this was something I’ve always cared about: mentoring, teaching, and lifting people up. I genuinely love meeting new people, hearing their stories, sharing what I’ve learned, and creating environments where others feel welcome to do the same. This year, I actively looked for more spaces to do that, and when they didn’t exist in the shape I wanted, I started building them. A lot of this comes from my past as a CrossFit trainer and wanting to help people become healthier.
Even though I work full-time as an individual contributor, this year was about treating everything around that role seriously. Not as side projects or casual experiments, but as things worth real effort and real accountability. Fewer ideas sitting in notes or in my head, more execution in the open. Ship, fail, iterate, repeat. Fail fast, fix faster.
ZurichJS became a big part of that shift. I treat it very much like a startup, just community-first and non-profit by design. Product thinking, experimentation, A/B testing ideas, and moving fast without being tied to revenue targets or company politics. That flexibility fundamentally changed how I think about building.
Looking back, what came out of it surprised me. I went into the year with very few expectations, and I’m ending it proud, humbled, and a bit overwhelmed by how much momentum built once things started compounding.
If I think about the T-shaped engineer model, 2025 was all about breadth. Trying everything, stress-testing instincts, and learning at speed. In 2026, I want to keep that same community energy, but go deeper. Narrowing the verticals I care about most and building real depth that sets foundations for the next few years.
ZurichJS, the story and lessons learnt trying to build a thriving community

What we shipped in 2025
In 2025, ZurichJS ran 11 meetups and 5 workshops.
We hosted 30 speakers, ranging from local voices to internationally recognised folks like:
- Matteo Collina Co-Founder and CTO at Platformatic, Node.js TSC member, Fastify lead maintainer
- Elian Van Cutsem Lead DevRel at React Bricks, CTO at Vulpo, Astro maintainer, devs.gent organiser
- Ewa Gasperowicz Senior Developer Relations Engineer at Google
- Harshil Agrawal Developer Educator at Cloudflare
- Indermohan Singh Senior Developer Advocate for Dynatrace Apps, developer, musician
- Dani Coll Senior Developer Advocate at Dynatrace
- Rahul Nanwani CEO at ImageKit
- Salih Güler Senior Developer Advocate at AWS
- Wout Mertens Head of Product at StratoKit SA, Qwik core contributor
- Nico Martin Frontend developer, Google Developer Expert for Web Technologies and AI
- Adam Berecz Founder of Vueform
- Christian Wörz Expert fullstack engineer, Microsoft MVP for Web Development and Dev Tools
- Savas Vedova Staff Frontend Engineer at GitLab, founder of Stormkit
- Bert De Swaef Founder of Vulpo Digital Studio
- Aleksej Dix Founder of Allyship.dev
- Alex Suzuki Solopreneur, author of STRICH, barcode scanning for web apps
- Jan Hesters CTO at ReactSquad and SocialKit
We partnered with companies like ImageKit, Storyblok, OnlyDust, Sentry, Stripe, Cloudflare, GetYourGuide, Platformatic, and many others, ending the year with 20+ partnerships across companies, conferences, and communities.
Attendance settled into a very healthy rhythm. Most events had between 40 and 65 attendees comfortably, with strong repeat attendance and a growing core of familiar faces. Over the year, we welcomed 425 new community members and averaged a 4.8 out of 5 rating across events.
By the end of the year, ZurichJS was fully financially stable. That might sound trivial, but in Zurich it very much isn’t. To give a sense of scale: 18 large pizzas cost roughly CHF 600 (~$750), enough to feed about 50 people, and that’s before drinks or anything else. On top of that, I was travelling from Geneva to Zurich almost every time, close to four hours one way.
Still, we made it work. Consistently. And that consistency mattered more than anything else.
The special moments
One of the most surprising things this year was how far people were willing to travel just to be part of the community. We had attendees show up from Germany, France, Greece, and Albania, just for a meetup evening in Zurich. That felt surreal.
We also saw ZurichJS start to ripple outward. Towards the end of the year, we helped inspire the creation of TiranaJS , a community that’s now doing an incredible job on its own. Seeing something like that come out of what we were building was incredibly cool!

There were smaller moments, too, that I really loved. Seeing our yellow ZurichJS t-shirts pop up at conferences around Europe. Those shirts actually have a bit of an open-source origin story themselves. Elian Van Cutsem and Bert De Swaef brought them over from Belgium and helped us produce them when they came to speak at our July event . Months later, those same shirts showed up again when we attended the WhatTheStack conference together as a team.

That trip ended up being a turning point. It’s where we met Daniel Roe , which very quickly turned into a no-brainer decision to bring him in as part of the ZurichJS Conf 2026 lineup.
Looking back, a lot of things just fell into place in a way you can’t really plan for.
The people behind it
ZurichJS doesn’t exist without the people behind the scenes.
What started with Bogdan and myself quickly grew into something bigger. Nadja joined and completely changed the trajectory of ZurichJS, helping us officially register as a Verein in Switzerland. On June 18th, during the Node.js multithreading workshop with Matteo Collina, we officially received the paperwork recognising the Swiss JavaScript Group, a non-profit association, of which ZurichJS is a part. That was a huge milestone.

We’re also incredibly lucky to have volunteers and advocates who bring the community to life. Hugo Sousa , Colin Schwarz , Jan Schwarzkopf , Aldous Waites , and many others constantly help keep things moving. Enrique Ruiz Durazo deserves a special mention. He’s been one of our longest supporters and has captured the soul of ZurichJS through photography and video in a way that’s honestly priceless. He now helps run the Cursor community in Zurich !
None of this work is paid. None of us benefits financially from this. It’s all driven by care for the community and a belief that these spaces are priceless.
Running a meetup is a lot more work than it looks
On average, each event takes around 100 cumulative hours of work across the organisers.
That includes everything from planning social posts, designing speaker graphics, coordinating with speakers, helping with travel or accommodation, meeting speakers in person, setting up venues, ordering food, managing drinks, cleaning up, and yes, even A/B testing pizza timing. Cold pizza gets poor feedback fast. Ask me how I know.
As an organizing team, we meet weekly online. That’s around 52 meetings a year, what we half-jokingly call the ZurichJS ORC, our Operational Risk Committee, just to keep everything running smoothly.
We also built our own in-house platform to run ZurichJS on top of Meetup.com. That launched in 2025 and ended up having a massive SEO impact. Over the year, the site saw 11,000+ visitors and over 31,000 page views, with November alone hitting 2,200 unique visitors, largely driven by organic search from all over the world.
Sponsorships, constraints, and hard lessons
Sponsorship turned out to be one of the hardest parts.
There’s a constant balance to strike. You might get enough money to run an event, but that often comes with expectations around sponsor talks or content control. Swiss audiences are particularly sensitive to this, and rightfully so. Content quality matters, and it’s on us to keep talks balanced, relevant, and genuinely valuable.
We also learned that sponsorship effort doesn’t always scale with sponsorship size. It’s very possible to spend months coordinating, reporting, generating UTMs, and sending newsletters for a few hundred francs, just to keep the meetup alive.
Another interesting constraint is that sponsors often prefer reimbursing tangible items like food and drinks, which makes sense from an accounting perspective. But venues frequently already cover catering. What’s harder to fund are the boring but necessary things: Meetup.com fees, software licenses, tools, and infrastructure that actually make organisers’ lives easier.
All of this forced us to think deeply about sustainability, financial viability, and what it really means to run a community long-term without burning out the people behind it. Luckily, we've managed to build enough of a buffer/runway so that we can now act strategically over tactically.
From meetups to a conference
Toward the end of 2025, it became clear that ZurichJS had the potential to outgrow the shape of a meetup.
So for 2026, we’re taking another leap of faith and turning ZurichJS into a full-scale conference. We’re planning for 300+ attendees, with a venue that can scale up to 500 if needed, and with enough contingency built in to scale things both up and down without putting the community at risk. Financial viability has been a first-order concern from day one.
One thing I care deeply about is accessibility. Switzerland has a reputation for being expensive, not just to live in, but to travel to. We want to challenge that head-on.
I’ve been pulling heavily from my experience in monetization and localization at Smallpdf and applying it to ZurichJS Conf. That means things like localized pricing, absorbing FX fees so people can pay in euros without penalty, reduced student pricing, and generally doing everything we can to remove unnecessary friction. That's why we built our own platform from the ground up to manage everything from payments to issuing tickets, CFPs, and the whole lifecycle. That doesn't come without technical risks, but it has significant advantages to it, too.
We’re also exploring ways to make the overall trip viable, not just the ticket. That includes negotiating accommodation options, travel deals, and structuring the event so that a ticket plus three or four days in Zurich can realistically come in under €1,000. That’s still a lot of money for many people, but it’s a meaningful step toward making the conference accessible beyond Swiss borders, and far easier for companies to justify covering end to end.
On the content side, we’re aiming for an exciting lineup. One unexpected upside of 2025 was how much travel and community work expanded my circle. I’ve met incredible people around the world, many of whom I now call friends, and being able to bring those connections together into a single event feels like a natural next step.
At its core, ZurichJS Conf is an extension of the same values the meetup was built on: care, consistency, and putting the community first. Just at a much larger scale.
Conferences, iteration, and finding my lane
In 2025, I was involved in 35 events across conferences, meetups, podcasts, and panels. That also meant a lot of time on the move. Over the year, I took 34 flights, travelled 76,851 km, and spent 4 days and 17 hours in planes.
That breaks down roughly into:
- 19 conference talks, sometimes two talks at the same event
- 11 meetups where I spoke
- 18 events I helped host
- 2 podcasts and 2 panels
I spoke or participated in events across Germany, Greece, Italy, North Macedonia, Portugal, Switzerland, Thailand, the UK, the US and online.
Some of the highlights still feel surreal to write down. Speaking in person at React Summit US was a genuine dream; I was also selected to speak online at JSNation US. Others were the International JavaScript Conference in Munich, Voxxed Days Crete, WhatTheStack, CityJS Athens, CityJS London, jsday Bologna, and Voxxed Days Zurich.

Iteration beats ideation
Two talks defined my year.
The first is Caching, Payloads, and Other Dark Arts: Optimizing UX in Suboptimal Conditions . This talk is close to my heart because it was the first talk I ever gave, at that React Advanced London meetup in February 2024.
Since then, I’ve iterated on that talk relentlessly. Changing slide structure. Moving from Google Slides to Keynote. Rethinking demos. Re-recording examples. Reordering the main points. Finding better ways to prove the same ideas. Huge thanks to Matheus Albuquerque for pushing me on presentation craft in ways I didn’t even realize I needed.
What came out of that process was a clear lesson: iteration often beats ideation, something I also learned from Daniel Roe . You don’t need a perfect idea, you need something real enough to start refining. That talk is now my most successful one, with the highest acceptance rate, and it keeps getting better precisely because it keeps evolving.
The second is my payments and monetization talk, now titled Orchestrating Millions Across the Globe: Reactive Payments at Scale . It started with a very different name and shape. Over time, it found its footing. As I refined the narrative and anchored it more for mass applicability, it started resonating more and getting picked up by conferences more consistently.
Both talks taught me the same thing: start somewhere, then earn clarity through repetition.
Widening the surface area
By the end of the year, I had introduced 11 new talks on my personal website (mostly created in December in preparation for 2026 CFP applications).
Some are React-focused, including deep dives into things like React 19.2, which was born from an invitation by the International JavaScript Conference to write an article on it . Others explore TanStack Start, frontend architecture, and resilience.
Some are more career-oriented, from my path from bootcamp to Staff Engineer, to leadership, pragmatism, and what it actually means to grow influence over time. Others go deeper into monetization and payments, the battleground of building high-conversion payment experiences.
I also started experimenting with topics that blend engineering with personal interests. Leadership lessons through motorbiking. Resilience, both in software and outside of it. Open source tools I genuinely enjoy, like Raycast.
At this point, the question I’m actively exploring is not “what can I talk about?”, but “what do I want to become known for?”. So far, the answer seems to be high-energy, pragmatic talks about resilient frontend systems, performance, architecture, payments, and monetization.
We’ll see where iteration takes that next.
Workshops and going deeper
Alongside talks, I started leaning harder into workshops.
My Real World React has evolved into Designing Frontend Architectures That Survive Production . It’s a workshop that scales anywhere from three to eight hours, and I had the chance to run it at ZurichJS in November with a room full of familiar faces. That was my favorite run of the workshop.
I’m also introducing a new workshop: Payments and Monetization at Scale for Frontend Engineers . Not because I consider myself a payments expert, but because I remember how unprepared I felt when I first worked on payment-heavy systems. Credit card schemes, banks, licensing, compliance, cross-border payments, none of that is obvious, and yet if you work anywhere near payments or checkout systems, it's invaluable knowledge as an engineer.
The goal isn’t mastery. It’s giving engineers enough context to ask better questions and avoid costly mistakes.
Reconciling hype with reality
One tension I had to reconcile this year is the gap between conference narratives and production reality.
At Smallpdf, we operate at massive scale, tens of millions of users per month, but not on bleeding-edge stacks. We still run our frontend on React 16 and Redux-Saga. I don’t spend my days shipping Server Components or rewriting everything to the latest paradigm.
At times, that fed my imposter syndrome.
But research I did while writing the React 19.2 article helped ground me. Roughly 60% of enterprise codebases are still on React 16 or 17. Most production systems haven’t made the leap yet. While it's very valuable to cover bleeding-edge topics and hint at the direction of the industry, it's just as important to bring content that addresses problems most teams face, even if they're operating on much larger, older codebases. I try to find a middle ground there.
People, not stages

If there’s one thing conferences gave me this year, it’s people.
I met and connected deeply with folks like Tejas Kumar , whose energy, honesty, and accountability pushed me in ways I didn’t expect. We’re recording a ConTejas episode together in early 2026, and it won’t necessarily only be about tech. We'll be potentially exploring topics that at least I have never brought to light before in a public manner.
Spending time with and getting to know Mark Erikson reminded me what community leadership actually looks like. Thoughtful, generous, patient, and relentlessly welcoming. He's nothing short of awesome, and I love getting lost in hours of conversation with him!
Though my highlight connections for the year were Daniel Afonso and Mateus Albuquerque , with whom I co-hosted a workshop at CityJS London. Teaching together, learning from each other, and then becoming friends along the way was one of the most rewarding experiences of the year.

There are two more people I especially want to call out.
Aris Markogiannakis is one of the most consistent one-person forces I’ve ever seen. Pulling together full-scale conferences across the globe with CityJS , while quietly doing the unglamorous, behind-the-scenes work that actually makes communities work, takes a level of care and stamina that rarely gets enough credit. Over the last decade, through JSMonthly and CityJS, he’s helped create spaces where people find meaning, friendships, and career opportunities. Seeing how much heart he puts into that has been incredible to experience, and it’s a genuine pleasure to support him whenever I can.
The second is Erik Rasmussen . He delivered one of the most memorable and interactive talks I saw this year, including live demos that connect React state to physical light bulbs. Simple in theory, but genuinely perspective-shifting in practice. Erik and I met at CityJS Athens in 2024 and later spent time together at React Alicante, which led to conversations that really stuck with me, about strengths, individuality, and the fact that you don’t need to be exceptional at everything to have something meaningful to contribute. That alone changed how I think about positioning myself in the conference world. What a great guy!
Looking ahead
I’m already confirmed to return to jsday Bologna , and I’ll be speaking at Devoxx Greece , Voxxed Days Zurich along with my good friend Dan Neciu , and CityJS Singapore , with more in the pipeline.
Smallpdf, shipping at scale and sharpening my edge

2025 was about settling into my role at Smallpdf .
I joined in August 2024, and the first months were about finding my footing. Joining a product that’s been around for over a decade can be overwhelming.
There’s history, context, and many people who’ve been working on the same systems for eight or nine years. Change needs to be introduced carefully.
Coming from a high-paced startup background, that was a readjustment. The pace is different. You’re not just building for speed, you’re building for continuity. Systems need to survive years of evolution, not just the next quarter.
2025 is where things clicked. I moved from learning the system to actively shaping parts of it.
Once I found my footing, I took ownership of the entire monetization stack. That meant being accountable for everything from the checkout experience users see, to subscriptions, pricing, introducing payment orchestration, observability, testing, and experimentation. These are systems that move money, affect conversion, and fail incredibly fast when something goes wrong.
Redesigning the checkout meant unifying fragmented flows, supporting multiple seats, billing cycles, and currencies, and turning rigid paths into configurable experiences.
One of the highlights was building an in-house reactive payment orchestration layer. Integrating Stripe, Adyen, and Braintree via Recurly fundamentally changed how we roll out payment providers. What used to take weeks could suddenly happen in days, sometimes minutes. That led to faster market entry and greater redundancy, which we sorely needed. It even saved us a couple of times during some production incidents.
Launching Alipay led to a 3.5× revenue increase in Asia. We introduced UPI in India, laid the groundwork for PIX in Brazil, and reintroduced multi-PSP flows so we could move faster without putting all our eggs in one basket. It was something else to see this in action as money flowed through the system.
On the technical side, I focused heavily on resilience and observability.
Introducing TanStack Query into a decade-old codebase paid off quickly through better caching and request deduplication. We reduced checkout bundle size by roughly 70% through modularisation and aggressive lazy loading, which was driven by the orchestration system. Foundational observability work with Datadog, TrackJS, and Metabase gave us better visibility and faster incident response.
A quieter but important part of the work was setting standards how we design APIs. How frontend and backend contracts evolve. How teams think about testing, failure modes, and resilience. I helped run a lot of workshops internally on those topics; funnily enough, they complemented a lot of the topics I talk about externally at conferences.
There was also a personal balance to learn. I’m the only person at Smallpdf who regularly speaks at conferences or is visibly active on the broader community. The company has been supportive, but a question always floated around in my mind: How do you balance public work with delivery, performance reviews, and showing up for your team?
What I learned is that this balance is possible. With clear ownership, strong outcomes, and trust. Letting results speak louder than visibility.
Looking ahead to 2026, I want to expand beyond monetization while staying close to it. I’m excited to lean deeper into core product work, especially as we integrate more AI-driven features, and to operate closer to technical leadership by improving how teams run and how frontend operates as a discipline.
Before moving on, I want to call out a few people who made working at Smallpdf a pleasure!
Stéphane Turquay has been an absolute powerhouse. An idea machine in the best sense, deep product thinking, strong technical intuition, and a rare ability to connect dots quickly. Watching him build in public, especially on LinkedIn, has been awesome, and working alongside him has made the day-to-day at Smallpdf great fun.
David Beníček deserves a lot of credit for keeping the frontend guild grounded. A calm presence, especially when things get noisy, and an excellent manager who creates space for people to do good work without unnecessary friction.
And Eduard Schäli has been instrumental in helping evolve how we operate as an engineering organisation, from sense-checking big decisions to doing the unglamorous work of improving how teams function. It’s been great to work with someone so focused on pulling the company toward a better long-term future.
LinkedIn, consistency over intensity
In 2025, LinkedIn became my main place to share publicly.
All through consistent effort. Over the year, I added around 1,600 new connections, published 210 posts, and gained roughly 1,900 new followers, bringing me to just over 3,100 in total.
Engagement stayed steady:
- ~270,000 impressions
- ~65,000 members reached
- ~6,000 engagements
- ~4,500 reactions and 500 comments on my posts

I also made a point to engage outward. Around 1,500 reactions and 550 comments on other people’s posts over the year. I really enjoy amplifying what others are doing.
I didn’t post daily. Instead, I tried to keep a sustainable rhythm of one to three posts per week. Most of what I shared revolved around events and community, warm-ups before, reflections after, photos, and people I met along the way.
Most of my content isn’t deep technical insight. It’s updates, reflections, and things I’m building toward. People are mostly following the journey, and I’m okay with that. In 2026, I want to go deeper on the technical side, especially around talk preparation and things I’m learning, but I want to build toward that slowly.
LinkedIn works well for me because it’s a lightweight way for people to stay in the loop. A lot of my work happens on the ground, at events, with people, and sharing that visually feels best.
Looking ahead, I’d like to at least double my following, and ideally push toward 10k by the end of 2026 or early 2027. I’m still figuring out what works best, but I’m keeping the pacing sustainable.
One person I’ve learned a lot from here is Dan Neciu , especially around consistency and tone. He's done incredible work online over the last year.
The biggest lesson for me was simple: you don’t always have to post to be present. Engaging with others, supporting their work, and reposting with your own thoughts makes a big difference over time.
At the end of the day, I do this mostly for myself. It’s fun, it keeps me connected, and it gives people a way to follow along if they want to.
Wrapping it up
Looking back, 2025 was about exposure, ownership, and momentum. Trying a lot of things, learning fast, and letting compounding do its work.
In 2026, I’m doubling down. Going deeper on the things that energized me the most in 2025, building with more intent, and continuing to invest in community. If you’re around next year, I’d genuinely love to see you in Zurich, especially at ZurichJS and ZurichJS Conf . It’s the culmination of a lot of hard work, and my gut is already telling me it's going to be fantastic!
If you want to collaborate, speak, host something together, run a workshop, or just grab a coffee and chat, reach out. I’m always up for it!
Let’s make 2026 another one to remember 🚀