When it comes to programming, my strengths are solving difficult problems and simplifying them into smaller, easier to understand problems and learning new techniques to do things.
A great example of this is this website you're on right now. I originally created it while on my placement at university. I was part of a team re-writing an old C++ application into a new AngularJS web application, so I had quite a bit of experience using AngularJS. I decided I wanted a website where I could set up the HTML/CSS once, and for any updates I could edit the JS code.
Early last year I got married, and I had been interested in creating a project using Elixir, so I decided to use the oppurtunity to create our own RSVP site in Elixir using the Phoenix framework, and host it on an AWS server with a postgresql database. This was a lot easier and more fun than I had expected, so I thought about updating this personal website to something similar, after all it was still using AngualrJS 1.5.0 which was officially unsopported as of Januray 2022!
After some thorough thought, I decided I would update to something newer and different to AngularJS, but I decided against using Elixir/Phoenix as the backend because I wanted to keep this as a static site hosted in an Amazon s3 bucket.
I spent some time looking at multiple new web frameworks, looking for something that wasn't too complicated and gave me the features I want, without being too overcomplicated. Eventually I settled on
Svelte
The main feature of Svelte that I've leant on heavily is components. I've created custom components for everything - the header bar, sidebar, projects, programming languages are all components. This seems to work well for me, because I can organise the codebase nicely so I can reduce repetitiveness and make it easy to (for example) add a new language to the section above.
The build process is also simpler, but more involved than it used to be with AngularJS. The old way I had set up everything using
Grunt so I had three commands I could run. The first one would start a local server with livereload enabled, monitor for any changes and refresh the page. The second one would do a full build (minifying JS, compressing images etc.) so I could test it locally, and the final command would upload any changed files to the Amazon S3 bucket that stores my site.
The new process involves only having two commands, one of them starts a local test server with livereload, and the other builds the site and places all needed files into a seperate directory, which I manually upload to the S3 bucket.
I was using the
Angular Material design components in the old site and I liked the look, so I decided to copy it. I like the idea of having as little redundant CSS as possible (I know it doesn't actually make any difference but it feels nicer to me) so I created the look and feel from scratch. I know UI design is one of my weaknesses, but I think I did an OK job.
If you're interested, a copy of the old AngularJS site is available
here. There's no guarantees it will still be working, as it still relies on AngularJS 1.5.0 which is no longer supported, so may break at any time.