Testing 123
+ +A nice test header + + + + # + + +
+Does this webhook work?
+WELL!?
+ + + + +diff --git a/.gitmodules b/.gitmodules index 41cc572..f208aff 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "themes/hugo-profile"] path = themes/hugo-profile url = https://github.com/gurusabarish/hugo-profile.git +[submodule "themes/blowfish"] + path = themes/blowfish + url = https://github.com/nunocoracao/blowfish.git diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..1cca827 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,17 @@ +--- +title: "Hi, I'm Ash Marlow" +description: "Software Engineer specializing in hardware, security, and automation." +type: "background" +--- + +I am a **Software Engineer** specializing in the intersection of hardware, security, and automation. My career has evolved from architecting firmware for IoT appliances at Panasonic to securing high-stakes MoD systems with Tanium at Pointwire. Currently, I’m at Nextbase, where I test firmware and cloud systems by building automation frameworks and hardware-in-the-loop (HIL) test environments. + +When I’m not writing scripts or managing my Proxmox server, you’ll usually find me tinkering with my **HomeLab** setup, playing the piano, or heading out on a day trip with my dog. + +### Tech Stack & Arsenal + +{{< icon "github" >}} +{{< icon "docker" >}} +{{< badge icon="raspberrypi" >}}Raspberry Pi HIL{{< /badge >}} +{{< badge icon="cpu" >}}STM32 / ESP32{{< /badge >}} +{{< badge icon="tanium" >}}Tanium Cloud{{< /badge >}} \ No newline at end of file diff --git a/content/about/index.md b/content/about/index.md new file mode 100644 index 0000000..cbb679b --- /dev/null +++ b/content/about/index.md @@ -0,0 +1,39 @@ +--- +title: "Curriculum Vitae" +description: "My professional experience and education." +layout: "simple" +--- + +## Professional Experience + +{{< timeline >}} + +{{< timelineItem icon="briefcase" header="Nextbase" badge="June 2025 - Present" subheader="Software QA Specialist" >}} +Currently driving software quality by bridging the gap between firmware development and automated validation. +* **Automated Testing:** Developed Raspberry Pi-based automation scripts to replace manual verification of dashcam hardware. +* **Stability Lead:** Specialized in long-duration stability and stress testing. +* **OTA Specialist:** Engineered test cases for Over-The-Air firmware updates. +{{< /timelineItem >}} + +{{< timelineItem icon="shield" header="Pointwire" badge="June 2024 - June 2025" subheader="Technical Consultant" >}} +Specialized in enterprise endpoint security and infrastructure management. +* **Tanium SME:** Certified Operator, Administrator, and Cloud Specialist. +* **Government & Defence:** Maintained SC Clearance to deliver secure deployments on MoD systems. +* **Virtualization:** Engineered a Proxmox-based lab environment to simulate customer networks. +{{< /timelineItem >}} + +{{< timelineItem icon="code" header="Panasonic" badge="April 2023 - June 2024" subheader="Embedded Software Engineer" >}} +Developed firmware for high-end, IoT-enabled smart home appliances. +* **Model-Based Development:** Leveraged Simulink & Embedded Coder for STM32 microcontrollers. +* **Test Automation:** Developed a Python-based automation framework. +{{< /timelineItem >}} + +{{< /timeline >}} + +--- + +## Education & Credentials + +* **ISTQB Certified Tester (Foundation)** - *2026* +* **Tanium Certified Cloud Deployment Specialist** - *2024* +* **BSc Physics** - University of Bristol *(2018 - 2022)* \ No newline at end of file diff --git a/content/blogs/hello-world.md b/content/blog/hello-world.md similarity index 100% rename from content/blogs/hello-world.md rename to content/blog/hello-world.md diff --git a/content/blogs/retro-handhelds/Gameboy After.jpg b/content/blog/retro-handhelds/Gameboy After.jpg similarity index 100% rename from content/blogs/retro-handhelds/Gameboy After.jpg rename to content/blog/retro-handhelds/Gameboy After.jpg diff --git a/content/blogs/retro-handhelds/Gameboy Before.jpg b/content/blog/retro-handhelds/Gameboy Before.jpg similarity index 100% rename from content/blogs/retro-handhelds/Gameboy Before.jpg rename to content/blog/retro-handhelds/Gameboy Before.jpg diff --git a/content/blogs/retro-handhelds/Handheld Collection.jpg b/content/blog/retro-handhelds/Handheld Collection.jpg similarity index 100% rename from content/blogs/retro-handhelds/Handheld Collection.jpg rename to content/blog/retro-handhelds/Handheld Collection.jpg diff --git a/content/blogs/retro-handhelds/Miyoo Mini V4.jpg b/content/blog/retro-handhelds/Miyoo Mini V4.jpg similarity index 100% rename from content/blogs/retro-handhelds/Miyoo Mini V4.jpg rename to content/blog/retro-handhelds/Miyoo Mini V4.jpg diff --git a/content/blogs/retro-handhelds/MiyooMiniPlus.jpg b/content/blog/retro-handhelds/MiyooMiniPlus.jpg similarity index 100% rename from content/blogs/retro-handhelds/MiyooMiniPlus.jpg rename to content/blog/retro-handhelds/MiyooMiniPlus.jpg diff --git a/content/blogs/retro-handhelds/RG35XXSP.jpg b/content/blog/retro-handhelds/RG35XXSP.jpg similarity index 100% rename from content/blogs/retro-handhelds/RG35XXSP.jpg rename to content/blog/retro-handhelds/RG35XXSP.jpg diff --git a/content/blogs/retro-handhelds/RetroGaming.jpg b/content/blog/retro-handhelds/RetroGaming.jpg similarity index 100% rename from content/blogs/retro-handhelds/RetroGaming.jpg rename to content/blog/retro-handhelds/RetroGaming.jpg diff --git a/content/blogs/retro-handhelds/Retroid3.jpg b/content/blog/retro-handhelds/Retroid3.jpg similarity index 100% rename from content/blogs/retro-handhelds/Retroid3.jpg rename to content/blog/retro-handhelds/Retroid3.jpg diff --git a/content/blogs/retro-handhelds/V90.jpg b/content/blog/retro-handhelds/V90.jpg similarity index 100% rename from content/blogs/retro-handhelds/V90.jpg rename to content/blog/retro-handhelds/V90.jpg diff --git a/content/blogs/retro-handhelds/featured.gif b/content/blog/retro-handhelds/featured.gif similarity index 100% rename from content/blogs/retro-handhelds/featured.gif rename to content/blog/retro-handhelds/featured.gif diff --git a/content/blogs/retro-handhelds/index.md b/content/blog/retro-handhelds/index.md similarity index 98% rename from content/blogs/retro-handhelds/index.md rename to content/blog/retro-handhelds/index.md index 036a6df..a067f27 100644 --- a/content/blogs/retro-handhelds/index.md +++ b/content/blog/retro-handhelds/index.md @@ -2,7 +2,7 @@ date: '2026-03-13T22:44:48Z' draft: false title: Retro Handhelds -image: /blogs/retro-handhelds/featured.gif +image: /blog/retro-handhelds/featured.gif summary: "Retro handheld collection" tags: ["Games"] --- diff --git a/hugo.yaml b/hugo.yaml index fee1763..845c006 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -1,203 +1,44 @@ baseURL: "https://me.marlow.boats" -languageCode: "en-us" +languageCode: "en-gb" title: "Ash Marlow" -theme: hugo-profile -outputs: - home: - - "HTML" - - "RSS" - - "JSON" - page: - - "HTML" - - "RSS" +theme: "blowfish" -pagination: - pagerSize: 3 +outputs: + home: ["HTML", "RSS", "JSON"] + page: ["HTML", "RSS"] markup: - goldmark: - renderer: - unsafe: true - -Menus: - main: - - identifier: blog - name: Blog - title: Blog posts - url: /blogs - weight: 1 - - identifier: projects - name: Projects - title: Projects - url: /projects - weight: 2 + goldmark: + renderer: + unsafe: true params: - title: "Ash Marlow" - description: My CV, Blog and Projects - favicon: "/img/AM.ico" - animate: true - theme: - defaultTheme: "dark" - font: - fontSize: 1rem # default: 1rem - fontWeight: 400 # default: 400 - lineHeight: 1.5 # default: 1.5 - textAlign: left # default: left - navbar: - align: ms-auto # Left: ms-auto | center: mx-auto | right: me-auto | Default: ms-auto - # brandLogo: "/logo.png" # Logo for the brand | default is the favicon variable - # showBrandLogo: false # Show brand logo in nav bar | default is true - disableSearch: true - # searchPlaceholder: "Search" - stickyNavBar: - enable : true - showOnScrollUp : true - enableSeparator: false - menus: - disableAbout: false - disableExperience: false - disableEducation: false - disableProjects: false - disableAchievements: false - disableContact: false + color: "slate" + defaultAppearance: "dark" + header: + layout: "basic" + footer: + showCopyright: true + homepage: + layout: "background" + showRecent: true +menus: + main: + - identifier: about + name: CV & About + url: /about/ + weight: 1 + - identifier: blog + name: Blog + url: /blog/ + weight: 2 + - identifier: projects + name: Projects + url: /projects/ + weight: 3 - about: - enable: true - title: "About me" - image: "/img/me.jpg" - content: |- - I am a **Software Engineer** specializing in the intersection of hardware, security, and automation. My career has evolved from architecting firmware for IoT appliances at Panasonic to securing high-stakes MoD systems with Tanium at Pointwire. Currently, I’m at Nextbase, where I test firmware and cloud systems by building automation frameworks and hardware-in-the-loop (HIL) test environments. - - I’m a firm believer that if a task is worth doing twice, it’s worth automating once. Whether it's hunting down safety-critical bugs in microcontrollers or optimizing OTA update stability, I enjoy the challenge of making complex systems "bulletproof." - - When I’m not writing scripts or managing my Proxmox server, you’ll usually find me tinkering with my **HomeLab** setup, playing the piano, or heading out on a day trip with my dog. - skills: - enable: true - title: "Tech stack & tools I'm currently leaning into:" - items: - - "Python (Automation)" - - "Tanium (Certified Admin/Cloud)" - - "Linux & Docker" - - "Embedded (STM32 / ESP32)" - - "Proxmox Virtualization" - - "HIL Testing & Raspberry Pi" - - experience: - enable: true - items: - - company: "Nextbase" - companyUrl: "https://nextbase.co.uk/" - jobs: - - name: "Software QA Specialist" - date: "June 2025 - present" - content: | - Currently driving software quality at Nextbase by bridging the gap between firmware development and automated validation. - - * **Automated Testing:** Developed Raspberry Pi-based automation scripts to replace manual verification of dashcam hardware. - * **Stability Lead:** Specialized in long-duration stability and stress testing to ensure device reliability in extreme conditions. - * **OTA Specialist:** Engineered test cases for Over-The-Air firmware updates, ensuring 100% success rates for end-user deployments. - * **In-house Tooling:** Authored custom scripts for internal testing tools to accelerate the QA feedback loop. - info: - content: Working as a Test Engineer - featuredItems: - customIcons: - - icon: /img/work/nb.jpeg - url: "https://nextbase.co.uk/" - tooltip: Nextbase - - company: "Pointwire" - companyUrl: "https://pointwire.com/" - jobs: - - name: "Technical Consultant" - date: "June 2024 - June 2025" - content: | - Specialized in enterprise endpoint security and infrastructure management, focusing on the deployment and optimization of the Tanium ecosystem for high-security clients. - - * **Tanium SME:** Certified Operator, Administrator, and Cloud Specialist; led end-to-end deployments to improve global endpoint visibility and security posture. - * **Government & Defence:** Maintained SC Clearance to deliver secure deployments on MoD systems, adhering to strict MoD security protocols. - * **Virtualization & Testing:** Engineered a Proxmox-based lab environment to simulate customer networks, enabling risk-free validation of Tanium configurations and software updates. - * **Custom Integration:** Developed a bespoke web application to interface with partner APIs, streamlining data flow between security platforms. - * **Infrastructure & Networking:** Configured Windows Server environments, LDAP integrations, and complex VLAN architectures for secure system provisioning. - * **Multi-Tool Proficiency:** Managed deployments of Deep Instinct (EPP) and Corelight (NDR) to provide layered defense-in-depth for clients. - info: - content: Cyber Security - featuredItems: - customIcons: - - icon: /img/work/pointwire.png - url: "https://pointwire.com/" - tooltip: Example tooltip content - - company: "Panasonic" - companyUrl: "https://www.pmuk.co.uk/" - jobs: - - name: "Embedded Software Engineer" - date: "April 2023 - June 2024" - content: | - Developed firmware for high-end, IoT-enabled smart home appliances, focusing on model-based design and automated endurance validation. - - * **Model-Based Development:** Leveraged **Simulink & Embedded Coder** to architect and generate production C code for **STM32** microcontrollers. - * **IoT Innovation:** Co-led the software development for next-generation smart microwave ovens, integrating complex user functions with hardware constraints. - * **Safety-Critical Testing:** Executed rigorous Unit Testing in Simulink and long-term endurance cycles, identifying a critical edge-case bug that prevented potential hardware failure. - * **Test Automation:** Developed a Python-based automation framework to control appliance functions remotely, streamlining the verification of firmware builds. - info: - content: Software Engineer - featuredItems: - customIcons: - - icon: /img/work/panasonic.jpg - url: "https://www.pmuk.co.uk/" - tooltip: Example tooltip content - - education: - enable: true - title: "Credentials & Education" - index: false - items: - - title: "BSc Physics" - school: - name: "University of Bristol" - url: "https://www.bristol.ac.uk/" - date: "2018 - 2022" - content: |- - Final year project on developing Dye Sensitised Solar cells. Developed a strong mathematical foundation and analytical approach to complex problem-solving. - * **Advanced Computational Physics** - * **Environmental Physics** - * **Material Physics** - - - title: "Tanium Certified" - school: - name: "Tanium" - url: "https://www.tanium.com/" - date: "2024" - content: |- - Successfully completed the professional certification track for Endpoint Management, specializing in Cloud architecture and security operations. - * **Tanium Certified Operator** - * **Tanium Certified Administrator** - * **Tanium Certified Cloud Deployment Specialist** - - - title: "ISTQB Certified Tester (Foundation)" - school: - name: "ISTQB" - url: "https://www.istqb.org/" - date: "Expected 2026" - content: |- - Currently undertaking global certification in software testing principles and quality assurance methodologies. - - - title: "NVQ Level 3 - Equipment Maintenance Engineering" - school: - name: "British Army (REME)" - url: "https://www.army.mod.uk/" - date: "2011 - 2021" - content: |- - Served as a Class 1 Vehicle Mechanic. Specialized in fleet diagnostics and safety-critical maintenance. Also served as a Parachute Instructor, managing student safety and high-stakes risk mitigation for 900+ jumps. - contact: - enable: true - # title: "Custom Name" - content: My inbox is always open. Whether you have a question or just want to say hi, I’ll try my best to get back to you! - btnName: Mail me - btnLink: mailto:ash@ash-marlow.co.uk - # formspree: - # enable: true # `contact.email` value will be ignored - # formId: abcdefgh # Take it from your form's endpoint, like 'https://formspree.io/f/abcdefgh' - # emailCaption: "Enter your email address" - # messageCaption: "Enter your message here" - # messageRows: 5 \ No newline at end of file +author: + name: Your Name + avatar: "static/img/me.jpg" # Make sure this path is exact + bio: "Tech enthusiast and Docker lover." \ No newline at end of file diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..7ec3d97 --- /dev/null +++ b/public/404.html @@ -0,0 +1,606 @@ + +
+ + + + + + + + + + ++ Error 404 +
+It seems that the page you've requested does not exist.
+
+ My biggest pass time outside of computing is retro game emulation. Most commonly in the form of dedicated emulation handhelds but also diving into console modding and Linux gaming.
+ +P### owkiddy V90
+
A clamshell device with a custom firmware that provides a basic but functional UI. +It’s limited chipset only really allows for emulating upto the 16 bit era with a few Playstation 1 games just about playable. +The screen leaves a lot to be desired by modern standards but when I first got this handheld I absolutely loved it. +It’s low price and clamshell design make it a great device to throw in a bag without much thought or worry. +The buttons are great and it made a great first handheld. +Powkiddy is believed to be working on a V2 which I am very excited to see.
+ +
This is an absolutely amazing device that I still regularly play today. +The screen is a bright 480p display, the controls are soft but precise and while small it’s surprisingly comfortable to hold (ignoring use of the triggers). +The real brilliance behind this device is the open source Onion OS. +Adding features such as game switcher, auto save and loading states, custom themes and even a custom boot logo, alongside a £50 price tag makes the Miyoo Mini + a very easy recommendation.
+ +
This is the console that convinced me to start spending a bit of money on these devices. +At £120 and promising the ability to emulate GameCube and PlayStation 2 I was sold. +At the time of buying this device I was very impressed with the 720p display and the ability to play the sixth generation consoles (with a lot of tweaks and hacks) but sadly it hasn’t aged that well as there are now much better options. +The one way that is handheld has improved is the software. +As my first android device I wasn’t a big fan of the need to occasionally use the touchscreen for system navigation and the need for a frontend app to tie all the emulators together neatly. +The options for frontend apps was very limited back then but now that ES-DE has launched on android it’s a much nicer experience.
+ +
A direct clone of the Gameboy advance SP, but with the power to emulate upto Dreamcast and Nintendo 64. +This is unfortunately the only handheld I have ever sold. +This is an incredibly popular device so I am certainly in the minority but I just couldn’t get over the clicky buttons, early software and poor build quality.
+ +
+The Miyoo mini is the first handheld I really wanted but due to pricing, high demand and stock shortages it took me a long time to get hold of it. +It really does not disappoint. Technically its a worse version of the Miyoo mini +. +Its smaller and lacks WIFI but that small, super pocketable size gives it a huge amount of charm. +If you are looking for something that can play upto Playstation 1 games, and you can take anywhere in your pocket then this is the device to get.
+ +
+I purchased this original Gameboy from Facebook Marketplace. +Like a lot of old plastic grey electronics it has horrible yellowing, so I tool this opportunity to clean it up. +The Gameboy was stripped down, rubber and plastic components washed and yhe main board was cleaned. +The shell was coated in Hydrogen Peroxide and left outside on a sunny day.
+
+The console was then reassembled and a new screen lens applied to have it looking good as new. +As much as I appreciate an original Gameboy, its not really something I would want to play in the modern day. +The four AA batteries to power it, the contrast wheel and the fact that my nostalgia really starts at Gameboy color, means its more of a show piece for me.
+ + + + +I am a Software Engineer specializing in the intersection of hardware, security, and automation. My career has evolved from architecting firmware for IoT appliances at Panasonic to securing high-stakes MoD systems with Tanium at Pointwire. Currently, I’m at Nextbase, where I test firmware and cloud systems by building automation frameworks and hardware-in-the-loop (HIL) test environments.
+When I’m not writing scripts or managing my Proxmox server, you’ll usually find me tinkering with my HomeLab setup, playing the piano, or heading out on a day trip with my dog.
+ ++ + + + Raspberry Pi HIL + + + + + + + STM32 / ESP32 + + + + + + + Tanium Cloud + + + +
+
+
+
+ For christmas my wife got me a virtual running challenge. I have to run 80km with a smart watch and at the end I get a nice Scooby-Doo medal. The issue is, now that everything requires its own app I forget to open it. My Garmin watch tracks all my running and syncs it to the running app but I wanted a way see my progress, clearly on my desk in the hope it will motivate me to get out and run more.
+I had a waveshare 4.2" eink display in my drawer that ive been looking to find a good use for. A quick search only and I found a python wrapper that can pull data from Garmin connect and suddenly I had all the pieces to put this project together.
+I found this brilliant tool online called Python Garmin Connect that allows you to input your Garmin account details and pull specific data from their API. The tool was installed and setup up as a system service on my server and the results servered with a Caddy web server.
+ +In VS Code I installed platform IO and connected my ESP32. The code was written to connect to wifi, grab the data from the web server and display it to the eink. I gave it a title and a progress bar with percentage to clearly show how much I have completed. I also added a Last Updated time stamp and logic to put the ESP to deep sleep and only update each morning after my typical workout time slot.
+
I later decided it made more sense to show todays date at the botton my the page, making it double as a basic daily calender.
+One of the greatest challenges was my desicion to include an image. An easier option would have been to buy an ESP32 with a micro SD card slot to give me an easier way of storing the image. Wanted to make this work without buying anything new I decided to stream the image from my Caddy server directly ro the display. With some AI magic I had a bash script that would convert any image I gave it to a resized monochrome bitmap suitable for the basic eink display. The great thing about using this approach is it makes changing the image for a different future challenge much easier.
+ +The case comes from printables and felt like the cleanest option.
+ +Wrap up your project here. What would you do differently next time? This provides that “closing” feel for a future employer.
+
+
+
+ This is where you write your main paragraphs. You can drop images anywhere using the standard syntax. Thanks to the style block above, they will automatically stay at 50% width.
+
Wrap up your project here. What would you do differently next time? This provides that “closing” feel for a future employer.
+ + + + +For my final year project of my BSc Physics degree, I fabricated solar cells using natural dyes extracted from plants, fruits and vegetables. +The motivation being the project was to investigate alternative methods for solar power generation which don’t involve conventional silicon as this can be difficult to recycle at end of use.
+ +To test the cells that we would be making, a light box was setup. +A standard silicon cell was then tested to get an understanding of how much power could reasonably be harnessed from the light source and to give a benchmark to compare results against. +Initially the testing of cells was done using a separate voltmeter and ammeter to record the I-V curve created by the cell. +This was found to be very inefficient and was difficult to reliably repeat, so I setup a test circuit with an Arduino to record the result.
+
The dyes were extracted from a range of plants, fruits and vegetables all based on success in previous research. +The exact extraction method had to vary slightly based on the source of the dye but the base principle involved crushing the source in either water or ethanol and then filtering the solution.
+ +With the dye extracted it was then watered down and analyzed using a spectrometer. +This allowed us to see the absorption of the dye over a range of wavelengths. +The absorption of the dye in the wavelengths of the sun are one of the most important properties of the dye so testing this at an early stage helped us rule out certain dye sources without making cells for them.
+ +To make the cells, a Titanium dioxide paste was made, and spread thinly onto a sheet of conductive glass. +The cell was then heated on a hotplate and left to cool. +The extracted dye was then carefully dropped onto the Ti02 with a pipet and left to soak in. +The excess dye could then be rinsed off and the cell is left to dry. +Finally a small amount of redox electrolyte solution is sandwiched between the Ti02 layer and another sheet of conductive glass, and the pieces are clamped together.
+ +Wrap up your project here. What would you do differently next time? This provides that “closing” feel for a future employer.
+ + + + +
+
+
+
+
+
+
+