# Leon Hassan > Blogs about technology and the web. Public Ghost content for AI and LLM tooling. Use `/llms-full.txt` for consolidated page and post context. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages - [About this site](https://blog.leonhassan.co.uk/about-2.md) - The Man Cave is an independent publication launched in February 2024 by Leon Hassan. If you subscribe today, you'll get full access to the website as well as email newsletters about new content when it's available. Your subscription makes this site possible, and allows The Man Cave to continue to e… - [About this site](https://blog.leonhassan.co.uk/about.md) - Front-endgineering is an independent publication launched in July 2026 by Leon Hassan. If you subscribe today, you'll get full access to the website as well as email newsletters about new content when it's available. Your subscription makes this site possible, and allows Front-endgineering to conti… ## Posts - [Developing SAP applications with VS Code](https://blog.leonhassan.co.uk/developing-sap-applications-with-vs-code.md) - I've written a book for SAP PRESS on developing SAP applications using Visual Studio Code. I've spent a lot of time this year writing, it's up for pre-order now from this link and it's being released on November 22nd 2022. If you've been following my socials, you're likely already aware of this. Ho… - [Utility files in SAPUI5](https://blog.leonhassan.co.uk/utility-files-in-sapui5.md) - Something I see a lot in UI5 applications is chunks of code being repeated either within the same application or within the same suite of applications. Using a utility file to manage this code separately from your business logic (A.K.A your controllers) means that the separation of concern is much… - [CSS Animations 101](https://blog.leonhassan.co.uk/css-animations-101.md) - Getting up to speed with CSS Animations and why they should be your first choice over JS implementations. - [ABAP Development with VS Code](https://blog.leonhassan.co.uk/abap-development-with-vs-code.md) - As a developer who entered SAP from the world of web, I am relatively unforgiving with the quality of the tools available to ABAP developers. However progress is being made. The ABAP Development Tools (ADT) which make developing ABAP in Eclipse possible, also enables other code editors and IDEs for… - [Consuming SAP Gateway services on localhost](https://blog.leonhassan.co.uk/consuming-sap-gateway-services-on-localhost.md) - All web developers will at some point come across "CORS" errors and they can be incredibly frustrating, after all you're just trying to grab some data from your development server. This blog will show you how you can use XAMPP as a reverse-proxy so that you can pull data from your development serve… - [Deploying a React application to GitHub Pages](https://blog.leonhassan.co.uk/deploying-a-react-app-to-github-pages.md) - This post will detail the process to easily and reliably deploy your React web app to GitHub Pages. What is GitHub Pages? GitHub Pages is a way for you to turn your GitHub repository into a website for free, it hosts the site/app/documentation for your repository. It's free and helps you get on wit… - [A first look at FIORI Fundamentals with React.js](https://blog.leonhassan.co.uk/fiori-fundamentals-with-react-js.md) - This blog will discuss a UI5 developers view on Fiori fundamentals and my first impressions of React. I will go over how to setup your React project using Fiori fundamentals and showcase some of the new components offered in fundamentals. What are FIORI Fundamentals? For those of you new to SAP, Fi… - [UI5, Babel and Gulp. The beginnings of a DevOps pipeline.](https://blog.leonhassan.co.uk/ui5-babel-and-gulp-the-beginning-of-a-devops-pipeline.md) - In this article I will be detailing a very simple DevOps pipeline that uses Babel.js and Gulp.js to transpile ECMAScript 6 to ES5, making it compatible with IE9! Prerequisites: Node.js v8.11 npm install Add the following dev dependencies to your project by either dropping them directly into your pa… - [Capgemini Cloud Automation for SAP](https://blog.leonhassan.co.uk/capgemini-cloud-automation-for-sap.md) - Capgemini's industry-leading solution to the old days of manually starting and stopping SAP systems with a cloud automation platform for all your systems and providers. - [Progressive Web Applications Manifest and Cache API](https://blog.leonhassan.co.uk/progressive-web-applications-manifest.md) - In this PWA post I will cover the Cache API and the storage limitations of the Cache and IndexedDB APIs, how you can use a Manifest file to support touch icons and the 'add to homescreen' functionality and the Lighthouse audit tool. Cache API A cache is technically a request-to-response map, where… - [Service Workers in Progressive Web Apps](https://blog.leonhassan.co.uk/service-workers-in-progressive-web-apps.md) - Service workers are the foundation of Progressive Web Applications. A service worker is kind of Web Worker, which means that this JavaScript is executed outside of the main browser thread. This allows us to (with user permission) send push notifications to the user's device, even when the app isn't… - [Setting up a simple REST server in Node.js](https://blog.leonhassan.co.uk/setting-up-a-simple-rest-server-in-node-js.md) - In my experience lots of people have heard of Node.js, but aren't entirely sure how to get started. In this tutorial we will be setting up a simple RESTful API server in Node.js and how to host it in the cloud for free, with Heroku. What is a RESTful API? An Application Program Interface (API) base… - [JavaScript for Progressive Web Apps](https://blog.leonhassan.co.uk/javascript-for-progressive-web-apps.md) - This post is to give a quick recap on some JavaScript features such as the Fetch API and arrow functions, so that you can get to work on the other PWA posts and write your own service worker! Arrow functions An arrow function expression is a shorter method of writing a function expression and do no… - [What is a Progressive Web Application?](https://blog.leonhassan.co.uk/what-is-a-progressive-web-application.md) - A Progressive Web App (PWA) is a web app that uses modern web capabilities to deliver a more native experience to the user and meets a number of requirements. For your app to be considered a PWA, there are a number of requirements your app must fulfil: What makes a PWA? * Be served over HTTPS. * Co… - [Functional documentation with markdown and version control](https://blog.leonhassan.co.uk/functional-documentation-with-markdown-and-version-control.md) - One issue I've seen come up again and again in projects I've worked on is keeping track of documents and tracking the changes made to them. At the Capgemini Engineering blog we write posts in markdown and put them in version control, this makes it really easy to comment on drafts and help build the… - [Learning Gulp.js](https://blog.leonhassan.co.uk/learning-gulp-js.md) - Gulp.js is a task runner that is used to automate tasks such as compiling all your style sheets into a single file, uglifying your JavaScript and so much more. This post is going to introduce you to the world of task runners through Gulp and how you can leverage task runners to make your work bette… - [Customising the terminal in Mac OS X](https://blog.leonhassan.co.uk/customising-the-terminal-in-mac-os-x.md) - The first thing I do when I get a new workstation is setup my terminal so that I don't need to squint into the void trying to read things. I add some colour, remove the icky bold fonting on the file path and rearrange the prompt to be a little nicer. In this post I'm going to cover how you can repl… - [An Introduction to Docker](https://blog.leonhassan.co.uk/an-introduction-to-docker.md) - What is Docker? Docker is a tool that simplifies building, shipping and running applications. Docker containerises your code, making it easier to transport and more reliable to use. Docker relies on images and containers, they are your fundamental building blocks in Docker. What are they? Images An… - [Design Thinking: Cutting through the fluff](https://blog.leonhassan.co.uk/design-thinking-cutting-through-the-fluff.md) - Design thinking: What is it and why do I care about it? Design thinking is a framework for finding ideal solutions to complex problems, through observation, empathy and experimentation centered around humans. You might think that this is all rather fluffy and without real content, but I'm here to s… - [SAPUI5 Tutorial - Fragments](https://blog.leonhassan.co.uk/sapui5-tutorial-fragments.md) - Webforms with fragments In this post we will be using fragments to create a webform that allows the user to easily view and edit the information in the form. Fragments are just like partials if you are familiar with Ruby, they are constituent parts of a view. That is to say that they are a tiny par… - [SAPUI5 Tutorial - My First UI5 Application](https://blog.leonhassan.co.uk/sapui5-tutorial-my-first-ui5-application.md) - My First SAPUI5 application In this post we will be covering some basic set-up of our development environment (including the SAP Web IDE), going over MVC architecture with particular regard to SAP applications and finally building your first SAP application. Getting Started The first thing you shou… - [My first month at Capgemini](https://blog.leonhassan.co.uk/my-first-month-at-capgemini.md) - Where have I been? I have just finished my degree, BSc Computer Science with Year in Industry and received a 2:1. Roughly 9 days after my final exam I started work at Capgemini, at the beginning of June. I should be back now with pretty regular posts, focusing on cool things at work, some tutorial… - [My Dissertation - Week 8](https://blog.leonhassan.co.uk/my-dissertation-week-8.md) - Sorry for the week break, I was away for 5 days and then spent a day driving around the UK so I've basically skipped a week of work. Technically this is week 9 of work, but it's the 8th iteration of work for my project. This iterations tasks consisted of creating the actual pages from their corresp… - [My Dissertation - Week 6 & 7](https://blog.leonhassan.co.uk/my-dissertation-week-6-7.md) - This sprint has been the beginning of my front-end work. Originally I had planned to do all of my designs stage-by-stage, starting with some hand-drawn designs, then Photoshop wireframes and finally actually coding the design. I ended up taking a slightly different route.. I felt like I needed this… - [My Dissertation - Week 5](https://blog.leonhassan.co.uk/my-dissertation-week-5.md) - I didn't do an awful lot of work this week, I was very busy with not-dissertation-things. I did manage to complete a code review and refactor my current codebase for the server. Although these were the only tasks I accomplished this week.. Refactoring I refactored a lot of code for my server becaus… - [My Dissertation - Week 4](https://blog.leonhassan.co.uk/my-dissertation-week-4.md) - The big task for this sprint was to sort out everything I needed for my mid-project demonstration. I ended up setting up both continuous integration and cloud deployment too, it made my demonstration a little nicer. Next sprint will most likely end up being a code review and refactor, then I should… - [My Dissertation - Week 3](https://blog.leonhassan.co.uk/my-dissertation-week-3.md) - In this issue of 'Dissertation Weekly', my tasks were to implement Google Maps travel API and to get pathfinding working. Pathfinding The first step in actually implementing some kind of pathfinding was to get some kind of weight for the edge between each venue/item. To do this I got the latitude a… - [My Dissertation - Week 2](https://blog.leonhassan.co.uk/my-dissertation-week-2.md) - This weeks tasks originally consisted of getting information about venues in an area, getting information for each of those venues and plotting a logical route through each of these venues. However after some cursory research into route plotting and how I could accomplish it, I pushed this particul… - [My Dissertation - Week 1](https://blog.leonhassan.co.uk/my-dissertation-week-1.md) - This weeks tasks consist of setting up the project in version control and creating a proof of concept Node.js server (in version control). Version control I decided to use Git via Github as my version control because I have used it before, in both my industrial year and personal projects. I decided… - [My Dissertation - Week 0](https://blog.leonhassan.co.uk/my-dissertation-week-0.md) - I'm back again, sorry for the lack of posts. I worked very hard at university and the downtime I did have I spent playing games and going out! The student life will soon be over for me, I should make the most of it right? My new blog series - Dissertation This series of blog posts, tagged with Diss… - [We're back in action!](https://blog.leonhassan.co.uk/were-back-in-action.md) - I'm sorry that I've been so quiet recently, I'm afraid that I tried to upgrade Ghost from 0.5 to 0.11 and everything went sideways. So in my infinite wisdom I thought this would be the perfect time to upgrade my box from Ubuntu v14 to v16 the new LTS, this in turn gave me a good set of new errors t… - [Atebol Interactive - My new job](https://blog.leonhassan.co.uk/atebol-interactive-my-new-job.md) - Atebol started off as a bilingual book publisher that slowly made it's way into website design, specifically bilingual websites! Now we handle many educational and governmental websites. We're a small company and we get to do a lot of cool stuff. We get to try new things and have a lot more creativ… - [The Hybrid Hackathon & the end of my Internship](https://blog.leonhassan.co.uk/finishing-my-industrial-year-at-ibm.md) - Sorry that there hasn't been many posts in the past 2 months or so! Life has been busy and I've been a little more than neglecting of my poor disused blog.. Here's a summary of what's been going on since my last post: * Finished first place in the HybridHack @ IBM * Finished my IY at IBM * Bought a… - [What is Docker?](https://blog.leonhassan.co.uk/what-is-docker.md) - Docker is a container system for software. It's focus is in making the deployment of software easier and more manageable. For example shipping containers made the transportation of all sorts of goods much easier to move and handle, loading times were decreased and you don't have to spend time packi… - [Travelling to Japan - Part 3](https://blog.leonhassan.co.uk/travelling-to-japan-part-2-osaka.md) - Kyoto This post is going to be about our trip to Kyoto and all the stuff we did while there!! Accommodation We stayed at the Backpackers Hostel: K's House Kyoto, we spent 4 nights here. It was a very different atmosphere when compared to the Emblem Hostel (from our first stay in Tokyo), this was ve… - [Running Node.js in Atom](https://blog.leonhassan.co.uk/running-node-js-in-atom.md) - Recently I've started writing Node.js and got to fiddle my way through configuring my Atom install to automatically run my Node.js code for me. Installing Node.js You can install Node.js using nvm (Node Version Manager) or you can download it from the official site. I recommend using nvm to keep yo… - [Let's Encrypt! - Part 2](https://blog.leonhassan.co.uk/lets-encrypt-part-2.md) - In the last post we covered how to install Let's Encrypt, and how to obtain your certificate. We're going to finish up this tutorial now by going over how to configure your SSL/TLS on Nginx and how to set up auto-renewal for Let's Encrypt! Configuring SSL/TLS on Nginx Now that we have our certifica… - [Let's Encrypt! - Free SSL/TLS certificates](https://blog.leonhassan.co.uk/lets-encrypt-free-ssl-tls-certificates.md) - Let's Encrpyt is a free, automated and open certificate authority by the Internet Security Research Group (ISRG)! This will be a long tutorial, so I'll break it into two parts and this post will cover obtaining your certificate. Installing your certificate will be out later on! I hope this is a hel… - [Reveal.js - The best presentations!](https://blog.leonhassan.co.uk/reveal-js-the-best-presentations.md) - What is Reveal.js? Reveal.js is a framework for creating HTML presentations, it's super nice! How do I use it? Reveal is really easy to use if you have any JavaScript experience, and even if you don't you can just use a GUI editor like Slides. What makes Reveal so good is that it's all web-based (d… - [IBM Emerging Technologies - New Project!](https://blog.leonhassan.co.uk/ibm-emerging-technologies-new-project.md) - Let me start off by saying I'm sorry it's been a while, I had flu! Who gets flu in April!? The Project Last week, before being stricken with disease, I went to the first meeting for a new project from IBM Emerging Technologies. We call this project the AI bot-game. We're currently ironing out detai… - [Travelling to Japan - Part 2](https://blog.leonhassan.co.uk/travelling-to-japan-part-2.md) - Tokyo - Round 1 So this post is gonna go over where we stayed for our first stint in Tokyo, where we went in Tokyo and what we did! Accommodation We stayed at the Emblem Hostel for our first 3 nights in Japan, it was really really nice. The staff were friendly, attentive, and helpful. Best of all,… - [Beer52 - My first box!](https://blog.leonhassan.co.uk/beer52-my-first-box.md) - A few days ago I ordered my first box from Beer52 (link is a referral, you get £10 off!). So this is gonna be an unboxing post, if you love your craft beer.. Read on! What did I get? I ordered a 10-beer box, the standard is 8 beers but they let you add another 2 beers for £5 a month (or for free if… - [Microsoft Keynote - 30/03/2016](https://blog.leonhassan.co.uk/windows-bash.md) - It's happening!! So I'm writing about all the major parts of the Microsoft Keynote - March 30th 2016: * Windows Ink APIs * Windows Hello * Cortana APIs * Microsoft HoloLens Development Edition * Desktop app conversions * Bash on Windows * Xamarin * Xbox One retail developer kit I'll go over the poi… - [FED@IBM Hackademy](https://blog.leonhassan.co.uk/ibm-hackademy.md) - All of this week I've been in IBM Hursley for the Hackademy, ran by Damon Deaner and Sam Richard. If you're a fellow IBM'er or just an interested party, have a look at our dedicated Twitter account: @IBMFrontend. Or our hashtag: #IBMHackademy Day 1 & 2 We spent the first day and a half in talks wit… - [Travelling to Japan - Part 1](https://blog.leonhassan.co.uk/travelling-to-japan-part-1-2.md) - The Flight! Our flights were with Air China, found via SkySkanner and sold by LastMinute.com for £450pp. The flights were 14.5 hours each way we swapped in Beijing, China for 1.5 hours each way. We had an initial scare because in all my glory, only put our first and last names when buying the ticke… - [Events galore!](https://blog.leonhassan.co.uk/events-galore.md) - As you all know I recently went to a Hackathon! Since then there's been a whole slew of cool events, namely the Hackademy for front-end design and a talk at Surrey University on various hot topics. Hackademy If you follow IBM and their various promotional campaigns, you might've seen some hashtags… - [Travelling to Japan - Part 0](https://blog.leonhassan.co.uk/travelling-to-japan-part-1.md) - My girlfriend and I went to Japan for 13 nights, from London Heathrow to Tokyo Haneda! In the following blog posts (tagged "Japan") I will go over what airline we used, where we stayed, where we ate and drank and where we visited. I'm going to break it into a few parts so that I don't end up writin… - [Hursley Hackathon](https://blog.leonhassan.co.uk/hursley-hackathon.md) - On Thursday I travelled down to IBM Hursley to meet up with my team and take part in the first IBM Hackathon, for placement and graduate students. We got on-site and had a presentation that went over the details of the 4 challenges we could choose from and then we were taken to our workspace to get… - [Internet of Things in the office](https://blog.leonhassan.co.uk/internet-of-things-in-the-office.md) - What is the Internet of Things? The IoT (Internet of Things) is the development of everyday objects having network connectivity and allowing them to send/receive data. This makes way for great things like The Magic Mirror created by Michael Teeuw, which is a mirror powered by a Raspberry Pi that ac… - [Overleaf Campus Challenge 2016](https://blog.leonhassan.co.uk/overleaf-campus-challenge-2016.md) - What is the challenge? Here's a wonderful poster from Overleaf themselves! Just click the poster to go straight to the challenge page! The following information can be found on the challenge page, on Overleaf: 1st and 2nd Place Overall Winners The winners of our Campus Challenge 2016 will be the un… - [RFID - What is it and what does it mean for me?](https://blog.leonhassan.co.uk/rfid-protective-wallets-do-you-need-one.md) - What is RFID? RFID stands for Radio-Frequency IDentification, this refers to a small electronic device that consist of a microchip (typically carrying around 2,000 bytes of data) and an antenna. RFID devices serve more or less the same purpose as a barcode or a magnetic strip on the back of your cr… - [My Industrial Year so far..](https://blog.leonhassan.co.uk/my-industrial-year-so-far.md) - My course I study Computer Science (G401) at Aberystwyth University, I am currently on my Industrial Year (8 months in!) at IBM. As a part of my course I was required to find myself a placement, and on this placement I am visited twice by a tutor assigned to me by the university to check up on how… - [The website is live!](https://blog.leonhassan.co.uk/the-website-is-live.md) - So for the past 2-3 days I've been working on getting my website up and running, which resulted in a lot of relearning and rekindling! This all started because I'd finally gotten my Student Git pack, which might I add is wonderful and available for anyone in full time education, is over the age of… ## Optional - [RSS Feed](https://blog.leonhassan.co.uk/rss/) - [Sitemap](https://blog.leonhassan.co.uk/sitemap.xml) - [Full content of pages and posts](https://blog.leonhassan.co.uk/llms-full.txt)