Emil Sandberg
Web Development Portfolio

This website is a constantly expanding collection of coding projects that I have done and am in control to showcase. It is a portfolio of my skills and experience, as well as a playground, an exploration of new things that I learn.

All projects use Github Pages to host the static files and serverless technologies, primarily Netlify, for backend functionality. Thanks to this, the entire portfolio is deployed with no charges. The source code for all projects is available on Github.

Serverless chat

Chat application

Very simple chat application, using vanilla HTML/JS/CSS on the frontend and serverless technologies on the backend, more specifically Netlify and Ably.

This was originally a school project, for which I had a Websocket server running. To reduce maintenance costs, I started looking into serverless options and decided to try out Ably for a serverless Websocket alternative. This application does not provide a true duplex Websocket channel though, only the receiving of messages happens through the socket. When sending a message, the message is first passed through a serverless function on Netlify, which performs validation, database lookup and prepares the message to be broadcast, which unfortunately loses some of the realtime benefits of Websocket. All of this logic could be done on the client in order to achieve a full-duplex communication but that would leave the application open to abuse, as all of the validation can be easily bypassed on the client. I wished there was a way to add this kind of logic in the Ably service directly, but it does not seem to be possible; the only thing that is exposed is an API.

Web accessibility showcase

Web accessibility showcase

A collection of thoughts and demos of some accessibility concepts and techniques that I have learned. This is a constant work in progress to which I will add more complex examples, in particular regarding accessibility in JavaScript applications.

Korpkvädet - Hobby project website

Korpkvädet project website

A website in Swedish for a LARP (live role-playing game) project I was involved in, one of my tasks being to setup the project website. The website is pretty straightforward, built with Wordpress, to allow for other team members to easily add content, and using Airtable to store participant registration data. The work consisted mainly of implementing the layout and structure and navigation, then styling according to specifications, and adding plugins and tweaking functionality for things like sitemap, search, changelog, table of contents, dynamic registration form (not available anymore as registration has closed) and management of registration data (storing it in Airtable).

Unfortunately, the code for this project is quite messy, with secrets not being managed in a way that would enable me to put the code up on Github in a public repo.

Creative Coding on the Web in p5.js (Bachelor's thesis)

Bachelor's thesis

My bachelor's thesis at Blekinge Institute of Technology in Sweden. The topic of the thesis is the field of creative coding in general and the JavaScript library p5.js in particular. It describes the library and investigates its use cases and how the web can be used as a creative platform.