Finding one’s place within the pack

Back in January, I silenced the sceptical voices in my head and conquered my impostor syndrome. I stepped away from the comfort and familiarity of my role at Stickee – a company where I was fortunate enough to cut my teeth and spend four years honing my craft with bleeding-edge Laravel technologies – in search of my next great challenge. That search led me to Overwolf, where I ultimately found my place within the Tebex payments team.

Looking back, I still find it hard to believe I made it through the recruitment process. Make no mistake, Overwolf is highly selective about whom they welcome into their ranks, and the multi-stage application process was nothing short of an ordeal, akin to running a gauntlet through a den of wolves. On particularly challenging days, I remind myself of this: I earned my place here.

Thus far, my experience has been nothing short of fantastic. I feel both supported in my professional growth and genuinely cared for in terms of my well-being, all while being entrusted with complex, technically demanding problems across the intricate code infrastructure. When I joined, I harboured concerns about readjusting to corporate life; my last stint at a large international software company was an internship at Amadeus in 20161, and I would be lying if I claimed I wasn’t wary of the potential for stifling monotony or the insidious creep of bureaucracy… particularly the kind that disguises itself as agile while rigidly adhering to waterfall principles.

Thankfully, those fears have proven completely unfounded. The breadth of work I’ve encountered so far has been both engaging and rewarding, but above all, I’ve relished the camaraderie that permeates the organisation. Honestly, there’s something profoundly motivating about working alongside talented individuals who share a genuine passion for what they do and for their colleagues. Something not at all dissimilar to what I experienced at Stickee.

I’m eager to immerse myself in the challenges yet to come, striving to create meaningful contributions to tools that empower gamers across the world. I’ve always been obsessed with being able to make a demonstrable difference to others in the work that I do. I can certainly do that here.

  1. Not that Amadeus in Bad Homburg had any of those, mind you! But one does hear horror stories from friends and colleagues working at larger tech companies. ↩︎

Don’t truncate in Laravel Excel imports

One of the greatest things about Laravel Excel is its event system – you can easily register closures or classes to be executed during certain events in the import lifecycle, such as before and after the import.

I’ve often wanted to truncate a database table to import the data ‘fresh’ before an import – I can think of twice off the top of my head where I’ve wanted to do this within commercial software. One thing to remember, however, is that all Laravel Excel imports are wrapped in a database transaction. To quote the documentation found here:

The entire import is automatically wrapped in a database transaction, that means that every error will rollback the entire import. When using batch inserts, only the current batch will be rollbacked.

You can of course, disable database transactions entirely if you’d prefer to do it yourself and/or if you really need database truncation, but for the most part, just remember that calling truncate() on an Eloquent model or table will itself trigger a database transaction and subsequently your import may fail due to the nested transactions if not supported by your DBMS.

If in doubt, simply use Model::query()->delete() to blitz your table free of entries before your import. Your importer class should implement the WithEvents interface. Your implementation might look a little like this:

public function registerEvents(): array
{
	return [
		BeforeImport::class => function (): void {
			// Don't call truncate, call delete!
			Model::query()->delete();
		},
	];
}