Voxnest is a technology company that provides professional solutions for podcasters and brands looking to engage with listeners. Delivering more than 200 million listens per month and enabling more than 50,000 podcast producers to get heard, the company's comprehensive tools for podcast creation, distribution, management, measurement, analytics, monetization and advertising include Spreaker, Spreaker Enterprise and Dynamo; a standalone real-time ad injection technology. At the end of 2020, iHeartMedia, the number 1 audio and radio company in the USA, reaching 9 out of 10 Americans every month, acquired Voxnest in order to put themselves in direct competition with Google and Spotify for the $2.7 billion audio Ad market. Since February 2020, I'm contracted as a full remote Front-End Engineer for Voxnest, collaborating with other remote engineers scattered in Europe (Italy, Spain, Portugal, etc.). Pushing over 2,000 commits per year and working on a TypeScript, React, Redux, Thunk, i18next, Victory, Axios, Moment, Jasmine and Enzyme stack, most of my workload focuses on improvements on our Enterprise solutions and global Content Management System. Amongst some of the solutions I developed, I worked extensively on our constantly-evolving audio/podcasts' creation and management solutions, administrative and hierarchical permissions ecosystem, campaigns and advertisements solutions and suite of custom analytics by timeline, device, location, demographics and interests. Our internal metrics validated our choices in solutions as these were proven to help our customers find the perfect audience for their products or services, get more engaged listeners and make their investments count. I'm having a blast at Voxnest; by developing products that matter and bringing value to our users, not only I feel fulfilled with my work, but also I collaborate with a team of fun and smart people, as well as being given the opportunity to grow my skills via a budget allocated for training, conferences and courses. This isn't McDonald's but in other words, I'm lovin' it.
With over 50 million monthly active users, Kahoot! is one of the world’s fastest growing learning brands. Used by millions each day in over 180 countries, Kahoot! makes it easy to create, play and share fun learning games in minutes, on any subject, in any language, on any device, for all ages. More than 2 billion players have played on the Kahoot! platform cumulatively since launch in 2013. I was hired by Kahoot! in London as JavaScript Engineer / Front-end developer in 2015. With offices in Norway, the USA and the UK, we were a small team of 20+ engineers worldwide and I played a part in the addition of new features and functionalities to the platform through some of the latest JavaScript tooling such as React, Flux and Docker. I also helped in the maintenance of some legacy web apps based on AngularJS and Backbone. We embraced Test Driven Development: new features always had unit/functional/integration tests and continuous integration was done via CircleCi. I spent a lot of my time working on the creation platform of the game where we added modifiers around time, points, displays as well as new game modes to enhance the fun and learning experience of Kahoot. At the time of my assignment with Kahoot! the Create platform was built on React and Node.js. The team was extremely smart and fun from top to bottom and I had a lot of fun working at Kahoot! I learnt a lot of things along the way and am extremely proud of the awesome features we released while I was there; features that are still there to this day and that made the game and company what it is today. Working at Kahoot! was an amazing experience!
Central Working is a flexible co-working office space company. Central Working approached YLD for help and changes to their actual Content Management System. The majority of the content had actually been hard-coded into the JavaScript files instead of being manageable via the CMS which was a concern on many levels. The main task was to create new fields, transfer all content of the existing site to the CMS and set it all up for any future additions. YLD had to comply and perform the work with the coding stack that was already in place: the content management platform was built using an open-source tool called KeystoneJS which itself is built on top of a MongoDB database. The main language was JavaScript and pages templating was built on Jade (a variation of html); the rest of the stack was on node.js and express for routing, gulp for the build system and sass for styling. I was chosen as the single engineer to be assigned on this project. During the course of this engagement, I had first to quickly familiarise myself to a Keystone environment and then update the code so Central Working would be able to manage futre content such as multiple texts, photos, links, meta titles, tags, google map locations and more through the CMS. When this was all set-up for extension of the actual content I also had to transfer the existing content to the Keystone CMS, re-build and re-render the site. Lastly, I provided Central Working with the adequate documentation so they would understand in non-technical terms what was roughly done, what they could control and how; and as a result manage the content of centralworking.com themselves. To my knowledge, they were very pleased with what was provided.
At YLD, the term "missions" meant the workflow entities created in the User Interface of Missions.ai; a Slack-focussed platform owned by Slack to create custom workflows. The aims of internal missions were to improve a targeted aspect of YLD internal communication or to automate a specific part of the business, usually by composing data sources and forms. For example, missions have been created that allow an employee to query his/her remaining training budget or be notified of inconsistencies in timesheets. Missions typically have a few components: one or more lambdas, Google sheets, Slack slash commands, or workflows developed in the GUI at Missions.ai. There is a collection of steps that can be modified and edited to determine the user journey. In most cases, the code was implemented via Amazon Web Services and lambdas to perform the specific functionalities rather than use the Missions.ai editor which had a more restrictive environment. On top of that, the technical stack of the Yld missions repositories also used tools like Lerna, Circle CI, axios, prettier, husky, Serverless, ESLint, Meetup and Zapier. While working on the YLD missions/projects, I fully wrote and implemented the following AWS Lambdas: - check when an employee is away: a lambda returning in Slack a given employee's planned days off and holidays from our HR system for a 1 year period starting from the day of the request; allowing project managers and team leads to plan the future work loads. - check who is away this week: a mission returning in Slack for the actual week, the alphabetically ordered list of employees that had days off from our HR system and which days or 'full week' for someone away the whole week. Its purpose was also for planning and work load management. - Rewrite the Slack mission logic of the birthdays/company anniversaries lambdas that had bugs and allow to not skip employees who had celebrations on week ends.
Trainline is Europe’s leading independent train and coach platform, working with 180+ train and coach companies to offer travel to thousands of destinations across 36 countries. Attracting more than 60 million visits per month, the company has continually strived for innovation since its inception in 1997. The team needed help in optimising their legacy platform and redesigning its user interface, and were looking for a partner to onboard Node.js to rebuild their web experience for both desktop and mobile. They also needed to build up new skill sets and capabilities within their team to create a world class software engineering organisation, able to meet new demands. Working integrated within Trainline’s team, I was part of the YLD team that built up their development capabilities while transforming the monolithic trainline.com website from .Net/C# to a Node.js backend with a React.js frontend architecture that scales horizontally and improves application and business performance; supporting a global customer base by handling multiple currencies and languages. This meant faster, incremental software development and release of new features, like restructured shopping basket and payment pages, wrapped in an efficient and scalable Node.js layer, making them more user-friendly while enhancing the final user experience. Among other developments, we migrated existing customers across the separate European sites to a single global platform and localising the site in four additional European languages (French, Spanish, German and Spanish) with an aim of internationalising the site entirely. I was for my part very much involved in that globalisation part of the project adding multiple new functionalities based on 'i18n' and 'react-intl' for React.
Based in London and with offices across Manchester, Lisbon and Porto, YLD offers consulting services in software engineering, digital product design and training programs. I worked for YLD slightly under 2 years; my involvements with Trainline and Central working were delivered via YLD contracts. While in-between clients' projects/on the bench, I spent some time joining the YLD website team and adding new features, new pages, new tests, new CSS effects and components to improve the overall flow of the official YLD website. The tech stack and main tools were Gatsby, React, Node.js, Styled-components, Lodash, Contentful, Netlify, Storybook and Circle CI. My primary tasks on the project were to optimise the top navigation bar and menus, creating new case studies pages and adding new training course modals. I also introduced and configured from scratch end-to-end testing as none were in place and too many features were "lost in translation" due to the rotation of engineers working on the project. Engineers with diverse seniorities and different coding styles were coming and going on this project and with bugs recurring over time it became obvious that it had to be done to limit these issues. I introduced Test cafe as my favourite e-2-e testing framework to the team and everyone agreed that it would be a great addition to the site which I configured for many pages.