Hi, my name is Jasper van Es and I'm a Manchester based full stack developer and designer, originally from the
Netherlands.
My main specialisms are front-end development and UX design.
I love working on websites and applications which contain playful user interactions to help the users achieve
their goals.
What defines me best is my ambition to keep learning new things,
from diving into new languages and frameworks to experimenting with the latest tools in illustrator or figma.
This allows me to be of additional value outside my main area of expertise.
Work
H
Jotun
Jotun is one of the world's leading manufacturers of paints and coatings,
combining high quality with creativity and innovation.
To help with their online presence, DEPT set up an agile retain team, with me being the lead front-end
developer. The responsibility of this team was to maintain and build out Jotun's corporate website focussed on the B2B market. As well as the two portals
available to their B2B customers, Hullkeeper and myJotun.
HullKeeper provides easy access to the hull optimization services from Jotun. This enables their customers to
cut carbon emissions, protect biodiversity and preserve fuel while keeping their ships hull in optimal
condition. MyJotun provides a easy way to find and order products including technical data sheets for all
available products. This is complemented by a knowledge base covering a wide range of subjects from paint
terminology, to explaining how different power plants operate.
My first responsibility was to improve their SEO, following an audit done just before we took on the website.
This covered things like a proper hierarchy of titles present and better handling of the internationalisation
and localisation of pages. Following this I upgraded the tech stack consisting of a collection of Razor
templates, C# infused HTML, and SPA's build in vanilla javascript. While working on this I noticed the
inconsistencies between the B2C and B2B sites, both technically and design wise.
My proposed solution was to create a shared component library that would serve a the single source of truth to
work from. I then setup the library using React, Typescript, TailwindCSS, Storybook, Percy and Vitest. With
ESLint, Prettier, Webpack and Plop as supporting tools. The library is then managed via Azure Devops and
served to the B2B and B2C sites as a Git Submodule.
Ebay Copy tool
Ebay asked DEPT to create a leading customer experience, executing ideas, concepts and designs that would
engage their audiences worldwide. eBay wanted campaigns that were consistently relevant to each of their
users. For this, DEPT created Creative Automation tools which enables Ebay to create multiple cross-channel
communications at the click of a button.
The Copy tool was created by the German DEPT team allowing Ebay to preview how a piece of copy would look in
different scenario's. Over time, some of requirements for the tool changed, leading to the decision to revise
the tool. I was asked to collaborate with fellow DEPTsters from London and Berlin, with me responsible for the
front-end and the deployment process.
To improve the deployment process the project was moved into Git, as well as setting up node/yarn for building
via Parcel and deploying to AWS & S3. The next step was to improve the existing codebase, as I noticed that a
similar setup was reused for every preview. The final improvement made was better feedback about the content,
checking the amount of characters, the dimensions of the content in regards to the other content and available
space.
I managed to refactor the code reducing it by 70%, even after adding the new previews and other
improvements. Both the client and the internal team were impressed with my contributions and the end result.
London Marathon Events
As the organisation behind several athletic events in the London area, LME wanted to have a consistent base
identity between the differently branded event websites. For this they asked DEPT to build out their websites.
These sites are powered by Sitecore and build with a front-end stack composed of CSS using Shared Components
and React using Hooks and Prop Types.
My responsibilities within the team were twofold: Providing support for the existing sites, estimating new
work and coaching the junior team members. The other being the lead front-end developer for two new websites,
London Marathon Foundation, and the user portal used to track (your) upcoming events.
One of the challenges I faced while building the foundation site was the lack of responsive designs and
different states like hovering. To resolve this I've worked closely with the QA team having regular catchups
and working iterative. By designing in code I covered the missing designs and additionally add micro
animations improving the user experience.
NVA - Dutch Association for Anaesthesiology
After creating the website for the NVA 0to9 was asked to create a mobile application.
With the scrum team we decided to build the application using React Native.
This allowed us to access native features of the device while developing platform independent.
The application fetches its data from the NVA website, allowing the client to manage the app content in the
CMS.
The main features of the app are a newsfeed, a database of common anaesthetics and a tool providing advise
based on a diagnosis.
I've created the interface of the tool, based upon the treatment guideline of the NVA and consultations with
several anaesthesiologists.
Stork
Stork, is a value-driven global provider of fully integrated operations, maintenance, modifications and asset
integrity solutions.
Together with 0to9 I've maintained and updated the corporate website network of Stork. One of the biggest additions being the Cooperheat
Equipment shop.
This webshop offers a full range of specialised heat treatment equipment, compact heat treatment units, data
recorders, panel burners, consumables, spares and accessories.
Beside the development of the webshop I've designed and developed the interface for ordering custom products.
Yanmar Power Up
Yanmar asked 0to9 to create a campaign promoting two new engines famelies both offline and online.
The core concept of the campaign was power up, to accompany this idea we took the base shape of the Yanmar
logo,
flip it around to turn it into an upwards pointing arrow, resembling the arrow displays from racing tracks.
For the campaign website we took the concept one
step further by starting at the bottom of the page,
as you scroll upwards you'll pass the new engines and gain power along the way.
By applying calculus within SASS I was able to make the page responsive while still preserving the arrow
shaped content blocks.
Bites We Love
Starting of as an existing B2C webshop based on Prestashop, Bites We Love offered a subscription to weekly
packages of nuts similar to services as HelloFresh.
Trying to expand their services to the B2B market, my team at 0to9 was tasked with the migration of the
webshop to a Wordpress and Woocommerce environment.
Beside the migration we' ve redesigned the webshop and created a separate site for the B2B customers.
After creating the new front end of the webshop we've optimised the handling of the orders for the site
administrators.
Ranging from small quality of life improvements like custom confirmation mails and the option to specify a
preferred shipping date,
to the ability to send invoices directly from Wordpress and linking the system with the accounting and
shipping software of third parties.
NVA - Dutch Association for Anaesthesiology
After creating the website for the NVA 0to9 was asked to create a mobile application.
With the scrum team we decided to build the application using React Native.
This allowed us to access native features of the device while developing platform independent.
The application fetches its data from the NVA website, allowing the client to manage the app content in the
CMS.
The main features of the app are a newsfeed, a database of common anaesthetics and a tool providing advise
based on a diagnosis.
I've created the interface of the tool, based upon the treatment guideline of the NVA and consultations with
several anaesthesiologists.
Study Detective
The Study Detective is a tool to help highschool students with choosing a college or university.
The student is guided through the process of finding the right course of study by a combination of game design
and storytelling.
The applicatie divides the process into four stages: Oriëntation, Immersion, Filtering en Deciding.
As part of my dissertation the Study Detective was based upon the research on the best way to guide students.
Pixel Symphony
As light and sound are both comprised of waves, is there a way to map one unto the other, so that the blind
can hear an image or the deaf can see a sound?
While thinking about this, I started with an assessment to create a web application by combining different
javascript API's.
After gaining experience by tutoring several classmates, I decided to complete the assessment by creating my
own API instead of just combining them.
The API called Pixel Symphony takes an image and converts it into piano music. The music score is based upon
the color values of the pixels within the image.
By combining this with the (pre OAuth 2.0) API of Instagram it becomes possible to listen to the music hidden
in you own pictures.
Gameboy Pokémon Trainer
Inspired by "Twitch plays pokémon", I've build a Proof of concept for ChatGpt playing Pokémon. The tool uses a
Javascript based Gameboy emulator, which is then captured by a Screen Capture API. At intervals, it will make
a screenshot of the recording, which in turn is processed via Tesseract to identify text in the image. Based
on this text, the state of the game is determined, like walking around or being in a battle. It then creates a
prompt for OpenAI to ask what the next action should be, the response gets turned into a series of button
inputs for the emulator.
The emulator can be controlled via keyboard inputs, as well as using the mouse by clicking on the buttons of
the handheld console around the emulator. The console is custom made completely using CSS, and it's design is
inspired by the Gameboy Advance and Nintendo Gamecube. The rest of the webpage is designed based on retro
games and the buttons are modelled after the type badges of the Pokémon game being emulated.
Lastly, I've created a logo for this project combining the ChatGPT logo with a Pokéball.
Logo collection
Neighbourhood
When Residently shifted its focus to partner up with bigger institutionalised property managers, the load on
its operations team grew exponentially.
To accommodate for these changes, my team was asked to spearhead the development of Residently's Portfolio
Management System called Neighbourhood.
This product allowed the partners to manage their properties, payment details and contracts without
intervention from Residently.
When creating new endpoints, we added extra authorisation and authentication logic to make sure partners can
only access their own portfolios.
My main focus after this setup was to bring the product to life, by setting up dynamic inputs, form validation
and parts of the component library.
This library was maintained through a combination of Storybook and Jest, to guarantee both the quality and the
overall consistency of the platform.
Mobile App
Having previous experience with app development Residently asked me to join a greenfield team to develop the
mobile resident application.
The tech stack we landed on was React Native and Redux, and 3rd party integrations like Firebase, Auth0 and
Zendesk.
The activity/progress feed, passwordless login and the notification system are some of the features I
developed.
The app gives residents the option to manage their home on the go. I does this through the following core
features:
They can request services like painting and cleaning as well as make their home available on Airbnb when on
holiday.
Residents are notified of upcoming payments and can easily set up direct debit if preferred.
Maintenance requests can be made directly to the property manager.
Switchboard
The initial chat system in the Residently app used a SDK from Zendesk to facilitate communication between
residents and property managers.
But soon after we discovered that this solution was very limited both for customisation as well as
scalability. As more traditional
managers preferred to email the residents, unwilling to use Zendesk.
As a solution we created a system that takes in an email and outputs a chat message, and vice versa.
These emails get processed through SendGrid and stored in a database, with attachments being stored on S3
(AWS).
My responsibility was to handle this conversion between (HTML) emails and Markdown messages that would be
shown to residents in the app.
To achieve this I had to create an API comprised of several services and sanitisers to clean and structure the
message.
Plain text emails just needed to have their urls converted into clickable links. HTML emails however, required
a more thorough approach.
To get an impression of how complex an email can get, click here.
First unwanted tags, like stylesheets and presentational tables, and things like trailing whitespace had to be
removed. The resulting HTML was then converted into Markdown.
On the app side, the Markdown had to be rendered using a custom style guide which I both designed and
implemented.
The biggest complexity however was handling the wide variety of signatures partners were using in their
emails.
This content, including images, would end up in the chat message making them look very cluttered.
For this I created a library of Regular expressions to find both generic and partner specific text patterns to
remove the signatures from the messages.
Similar rules were used to find embedded images in the signatures.
In addition to this library, I build a test and logging features to warrant the effectiveness of the system.
The testing system takes a collection of example emails and shows the parsed result on a webpage as well as
comparing it to a pre-generated version using Rspec.
For the logging I have created an integration with Slack that logs incoming messages that don't match any of
the rules while still mentioning a partner organisation.
Spike Features
These projects were made in the time Residently provided to work on personal development and ideas, called
Spike days.
As I worked on these, I developed a personal mission to enrich the experience for residents by better using
all available data.
For example, I would take floor plan images and convent them into interactive svgs.
These could then be used to request services like flooring. By selecting a room and a floor type,
residents can preview the result as well as receive an estimate based on the area.
Property search
Knowledge about the resident's property could also be used to help them find a compatible new home if they
wish to move out.
While working on this feature the app lacked the option to browse available properties, so this was a good
opportunity for me to both add this and enrich it.
The properties have small labels indicating the difference in price, area, etc. relative to the residents
current properties.
Moving AI
With services being one of the main features of the app, I decided to look further than just using existing
data.
Instead I focused on ways to use Google's Vision AI and user created content to make the process of moving
house easier.
When requesting a quote, most moving companies require an inventory list.
When a resident takes a picture, the app will use object detection to generate this list for them.