Current Projects  |  Hardware: NA  |  Photography: Wildlife & Landscape  |  Unity: 2D RPG Game  |  Website: Modifications and Improvements  | 
Header Image

 Explore Topics:

Back to Top

Hello World! - 23/04/2023

In my first post I wanted to outline my intentions with the blog and discuss my current project. My aim is to collate my work into an accessible portfolio-style journal that could be presented to potential employers and to keep track of my progress for personal development. Prior to starting this blog my personal projects have gone undocumented and in some cases forgotten.

For my current project I am developing a 2D top-down RPG game for Android using Unity game engine for the game development and Aseprite for the sprite and asset design. I always attempt to write as much of the code as I can myself but when I need help I've been using a combination of: YouTube tutorials, google, and ChatGPT. I want to be completely forthcoming that the code in the game is an amalgamation of my code, tutorials, and ChatGPT. The game is a personal learning project to further my understanding of programming and game development and I currently have no intentions of releasing it on the Play Store.

I hope to upload some screenshots of the game later today and keep the blog updated as often as I can. Ideally I'd like to update the blog each time I work on the game, but due to family commitments and uni this is near impossible, so I may do a bulk update with multiple posts to keep the blog up-to-date.

Thanks for reading,

Jack

Current State of the Game - 24/04/2023

In this post I thought I'd discuss the game in its current state, what I'm working on now, and what's next.

Currently the game has a small test area with trees, water, and a house. There is a playable character who is fully animated and can be controlled by the user. There is also a fully animated NPC wizard who patrols the test area randomly and has a single line of dialogue if the user interacts with him. The house has an animated door that opens when the player is in range and the player sprite has a fade animation to make it appear that the player has entered the building. For the input controls I've modified a touch screen thumbstick asset to make it function as a D-Pad on the left side of the screen and I have an action button on the right side of the screen which for now is being used to interact with the NPC and trigger dialogue.

At the moment I'm working on implementing a dialogue mechanic into the game. I attempted to do this myself and managed to trigger a dialogue box and text to be displayed when the player interacts with the NPC, but this wouldn't work for multiple lines of dialogue with multiple characters. So, I'm going to be following a far more advanced YouTube tutorial which is more fit for purpose.

As for the future of the game and what I'd like to achieve, I'd like to create a functioning game with a basic storyline, multiple levels, more characters, weapons, and enemies. I think this is a reasonable and achievable goal. As I said in my previous post, this game is personal project to become more proficient at programming and game design, therefore I may decide to leave this project unfinished to move onto something I believe to be more productive.

Thanks for reading,

Jack

Unknown Error - 25/04/2023

Ironically after I wrote the last post regarding the current state of the game, I opened up Unity to take some screenshots for the blog and was greeted with a red error message stating there was an unknown error while loading my scene! After a quick google and a conversation with ChatGPT I had a few potential fixes to try out in an attempt save many hours of work. I tried: re-importing the scene, deleting scene metadata, editing the unity scene file, copying the entire project folder and re-importing... all to no avail. I did have a backup, but it was 9 days old, so it wasn't of much use. Needless to say, I'll be far more vigilant with my backups going forward. Fortunately, it was only my scene that was corrupted, and my assets and scripts were still present. So, I set about painting a new test area from the tile palette and configuring my various assets with the correct scripts and settings. I tried to remind myself that though annoying, it was probably a good opportunity to reinforce what I'd learnt, and the game is now back to its previous state.

Thanks for reading,

Jack

Website Relocation - 25/04/2023

Originally, I hosted a free WordPress site with 000Webhost and I was going to use that for the blog. But once I had the site setup to my liking and had my first two blog posts, I realised I’d already used around 40% of my 300MB available space. Also, Google Chrome was annoyingly flagging the blog page as a potentially dangerous site.

So, I began looking around for free alternatives but, I didn’t really find anything worthwhile. Later that day I happened to be on someone else’s blog reading an ATtiny85 rubber ducky tutorial (which I’ll be starting soon) and wondered how they were hosting their site. I had a look around the site and found they were using GitHub Pages, so I went over to YouTube and searched for a GitHub Pages free website tutorial and began building my page. I downloaded my original site via FTP using filezilla, I thought it would be worth trying to transfer the website files to my new GitHub page. I wasn’t overly optimistic as my original site was using the WordPress content management system and my GitHub Page wasn't - long story short, it didn’t work. So, I started setting up the new page using HTML with ChatGPT there to help when I needed it, and here we are! GitHub Pages has 1GB of available free space which should keep the blog going for a while, if I get close to exceeding that, I can consider my options as to what I'll do next, but for now I’ll be keeping the blog here.

Thanks for reading,

Jack

Belated Update – 16/07/2023

I haven’t updated the blog in some time now, but that’s not say I haven’t been busy! I’ve been working on creating assets for the game, a start menu, and the opening scene.

The start menu is the biggest piece of art I have ever done in Aseprite. Originally, it was going to be a practice run for the final product, but I liked how it was turning out, so I spent some more time working on it and I’m pleased with the result. The game also has a name, Feathers of Ember: The Rise of Solstice. ChatGPT helped with some ideas for the name and I really like it! Originally, I wasn't going to name the game as its only a personal project, but the start menu just didn't look right without a title. Designing the start menu brought another issue to my attention. That is, the variation in colour vibrancy on different devices. In a previous post I mentioned I had this issue from my laptop to my PC, but I had assumed that was due to the matte display on my laptop, but unfortunately this wasn’t the case. When I ran the game on my phone, the colours were dull and washed out. Today I spent half an hour adjusting the brightness of all of my game assets to rectify the issue and now the game looks as it should.

For the opening scene of the game, I want a UI letter to be displayed after the player presses the play button, this will give some context to why you are going to the island and where you should go once you arrive. I then wanted a cutscene of the player arriving on the beach at the bottom of the map by boat, once the cutscene is over the player will be free to explore the village and go on with their quest.

Initially, I’d planned for the boat to stop at the bottom of the beach, fade the screen to black while the player got off the boat, and then remove the black fade showing the player standing on the beach. This seemed like it was going to be more difficult, time consuming, and less effective than animating the player getting off the boat. So, I decided I’d go with the latter and animate the player getting off the boat.

First, I created a new camera to act as the cutscene camera and made it a child of the boat. Then, I disabled the main camera in my script and activated the cutscene camera. I made three empty game objects and assigned them with 2D colliders. I placed them in a horizontal row along the sea to serve as the path for the boat to follow. In the script, I applied left velocity to the boat when it collided with the start collider. It would then travel to the stop collider and play the jump off boat animation. For this to work, I drew the character onto the boat in Asperite. Next, I positioned the main character sprite in my game exactly where the drawn character would land. To avoid displaying two character sprites simultaneously, I had to make the main character sprite invisible while the boat approached and the animation played. The final frame of the animation depicted a crouching pose, so when the invisible player became visible again, it seamlessly blended with the animated character, creating the illusion of the player finishing the jump and standing up. This process required significant tweaking, as the character on the boat was part of the boat itself and did not have its own distinct coordinates for positioning the main character. After the animation played, I enabled the main camera and disabled the cutscene camera. The boat transitioned to another animation and sailed off without the player, eventually reaching its final collider and getting destroyed.

I’m really pleased with how the game is coming along. Next, I need to work on the UI letter that will be shown between the start screen and the boat cutscene and the start of the game will be in place.

Thanks for reading,

Jack

Start Menu
Blog Image 1

Asset Collage
Blog Image 1

Boat
Blog Image 1

Signposts - 05/07/2023

Today, I created a basic signpost asset for the game. Players can interact with the signpost by approaching it and pressing the '1' button. This triggers the display of a UI dialogue box that contains relevant text information specific to that sign. The UI box remains visible until the player moves away, at which point it automatically closes. I tied this in with the dialogue system I implemented yesterday. Both systems utilize the same UI box and effectively replace the displayed text by disabling other text elements in the script.

Thanks for reading,

Jack

Signpost Text
Blog Image 1

Dialogue System Take Two – 04/07/2023

In a previous post I wrote that I had followed a YouTube tutorial to get a dialogue system set up, which I had. The dialogue tutorial I followed was fantastic and it worked great, I just decided I wanted to make a simpler version of my own. I’m sure my code isn’t the greatest, but I managed to get the dialogue system to function how I wanted, which is great! My approach was simple, I wanted the player to press a button when in range of an NPC to trigger the dialogue UI box and display the correct sentences, and once the player walks away the UI box would disappear. Although simple in theory, there were lots of hurdles along the way and it took a good couple of hours to get it working how I’d like.

My next task was to start designing the level with the end user in mind. So far, I had a small test area without boundaries or colliders to keep the player contained within the bounds of the level. I set about making some tree lined boarders and moving the wizards house to a more suitable location. I also set the teleportation coordinates for the mother’s house entry and exit.

Getting to this stage of the game’s development is exciting. Walking around the level in its current state, in and out of buildings, having conversations with NPCs makes it feel like the start of a real game. I’ve put a lot of hours of work into the project now, and this feels like a real milestone in the game’s development.

Thanks for reading,

Jack

Dialogue and Aerial View
Blog Image 1

Back in the Game! - 02/07/2023

Just a general update this morning. The website is completely up to date, I’ve added a scrolling text animation at the top of the page listing all current projects. I feel this stops the site from feeling so static and plain and gives visitors to my site a quick update of what I’m currently working on.

I’ve also resumed development on my 2D RPG project in Unity. Most of the game mechanics are now in place, so my aim for the next few weeks is to design more characters and buildings and get started on a storyline. This morning I designed a new sprite for the main characters mother along with a floor tile set for her house, I've included a screenshot below.

Thanks for reading,

Jack

Mother Sprite
Blog Image 1

3D Bust Model 2020 – 24/06/2023

During the lockdown in 2020, I was furloughed from my job for three months. Luckily, I had recently bought a new gaming PC, so I decided to make the most of my time off by learning a new skill, this is when I got into game development and C# programming. Whilst searching for online courses I came across a YouTube tutorial that focused on sculpting an ogre head and bust using Blender. While I followed the tutorial as a reference, I wanted to make it my own, so I decided to create an elf character instead, I was really pleased with the result and thoroughly enjoyed the process of sculpting. Over the next few days, I’m hoping to do some more sculpting in Blender so I should have some more screenshots to upload to the blog very soon.

Jack

Elf Bust
Blog Image 1

Blender Tutorial – 24/06/2023

Last night I followed a fantastic YouTube tutorial to create a stormy ocean scene in Blender. This was a steep learning curve for me as prior to this I had only designed small assets and character models.

To design the ocean and waves, we used an ocean modifier in conjunction with multiple planes. We also utilized the particle system to create rain fall from a rain drop model we created. We created and shrink-wrapped a plane to the ocean and set the camera to the position of the plane, this allows the camera to move with the movement of the waves which gives a first-person perspective that you are floating in the ocean.

This was a far more advanced tutorial that anything I had done previously, and though I couldn’t replicate the ocean scene myself, I learnt a great deal just by navigating different systems within Blender and refamiliarizing myself with the hot keys. It’s also fun to create something that looks so realistic!

Thanks for reading,

Jack

GIF of Ocean Scene & Screenshot of Scene in Blender


Blog Image 1

YouTube Tutorial Blender/Unity - 11/06/2023

Quick post with a few screenshots of assets I made in Blender some time ago. I was following a 3D RPG YouTube tutorial which provided a free asset pack to follow along with, but I’ve never really liked the idea of using free assets. I understand that using free assets allows you to focus on the game development and coding, but I’d rather spend a bit more time learning how to design my own. So, I followed some tutorials on how to design and animate various assets before following along with the RPG tutorial. I’ve attached screenshots of individual assets in Blender and two showing the assets in the game view in Unity.

Thanks for reading,

Jack

Blender Assets
Blog Image 1

Game in Unity
Blog Image 1

General Update – 10/06/2023

I’ve had a bit of an impromptu break from the blog, so I have quite a backlog of posts that I’m aiming to get done over the next few days. I thought I’d use this entry as a quick overview of what I’ve been up to, then I’ll make some more detailed posts about each individual project.

  • 3D Cube Game: I finished making the 3D cube game. It was a great mini-project, and completing something I started gave a great sense of accomplishment.

  • Blender Assets: I’ve been doing some basic 3D design in Blender. Due to my main project being in 2D I haven’t used Blender for some time so, I wanted to refamiliarize myself with the workflow.

  • Website: I’ve made a few changes to the website layout. I’ve been using Photoshop to create collages from screenshots for a cleaner look. Additionally, I permanently overlaid the text onto the header image to ensure it is positioned correctly on all devices.

  • Jellyfin RPi4: I’m in the process of setting up a Jellyfin server on my Raspberry Pi 4B, which will allow me to stream media on my TV from a storage device.

  • Kano Kit: I was gifted a Kano Kit with a Raspberry Pi 3 and 10” screen. I intend to install a Linux distro on RPi3 and use it as a mini-Linux computer.

Going forward, my plan is to get back to work on my 2D RPG project and continue practicing in Blender, with the aim of developing a small 3D game with my own assets as my next project.

Thanks for reading,

Jack

My First Game – 27/05/2023

Prior to starting my current project, I had experimented with Unity and followed tutorials for 2D and 3D asset development in Blender and Aseprite. During that time, I also designed a small game which I’d like to briefly discuss in this post.

I use the term "game" loosely as it was more of a level than a complete game. The goal was to create, animate, and import, some 2D assets from Aseprite into Unity. The level incorporated various game mechanics that I believed would be valuable for me to learn and easily transferrable to future game development projects. Some of mechanics I implemented included player movement, enemy AI, projectiles, a health bar, a health system, a death system, and a game over screen.

Working on this project was a valuable learning experience, and it presented its fair share of challenges. However, I found the time invested to be worthwhile as it provided me with a valuable insight into the process of designing a game—from creating the artwork to coding. Having this project as a reference will be immensely helpful when I implement similar mechanics in future games. I've included a screenshot of the game below.

Thanks for reading,

Jack

Game Screenshot
Blog Image 1

3D Mini Game – 27/05/2023

Recently, I’ve been spending such a large amount of time on my main project, and I’m really pleased with how it’s turning out. However, as the game progresses, I feel I’m delving deeper into more advanced areas of game development while neglecting the basics. Therefore, I’ve decided to put the main project on hold for now and design a mini-game in 3D.

The basic concept of the game is as follows: the player, temporarily represented by a cube, must jump over the moving beam that increases in speed over time. If the player touches the beam, its game over, and their score is equal to the amount of time they managed to play without colliding with the beam. I intend to create power-ups, and various increases in difficulty such as changes in player size, jump height, multiple and thicker beams, and potentially holes in the ground for the player to avoid.

I’m really pleased with how the game is coming along, and its rewarding to see such quick progression in comparison to my other project. I’ve been able to code a significant portion of the game myself, and I’ve been taking detailed notes on player movement which will be valuable for future projects. I’ve attached below a screenshot of the game in its current state, and another showing the game over screen.

Thanks for reading,

Jack

Game in Current State
Blog Image 1

Door Entry/Exit – 23/05/2023

I’ve just finished working on the door entry/exit system. Previously, I had created a scene management system and intended on changing the scene when entering the house and returning to the previous scene when the player exited the house. After a bit of Googling, I decided to scrap that idea and stick to one scene, by having the interior of the house located at a different position within the same scene. This way, I could teleport the player into the building using the sprites transform position and do the same on their way out. I created two methods: one for the house entry and the other for the house exit. Within these methods, I used if statements to check which collider the player had made contact with, and then used the relevant coordinates to teleport the player to the correct position. I invoked a delay for the teleportation to allow the door animation to finish before the player entered, providing a smoother transition between each entry/exit.

Thanks for reading,

Jack

Game Update – 21/05/2023

Lately, I haven’t been able to spend as much time on the game as I would like, but I’ve been doing what I can with what little time I have. Mostly, this has been spent polishing the fishing mechanics. Realistically, fishing was unnecessary, and I could have spent that time developing the core game mechanics and made greater progression overall with the game. This in some ways is a lesson learnt with regards to prioritising different aspects of the game, but I’ve learnt a lot whilst creating the fishing mechanic, so I don’t see this as wasted time, just something to take into consideration going forward.

My next job is editing the player movement script. The tutorial I followed for my player movement used the player transform to move the sprite, this is causing issues with collisions and physics, which is not something I was aware of when I started making the game. I’m hoping this will be a fairly simple process of changing over from transform to rigidbody so I can move onto the door entry/exit system, then it will be time to think about some dialogue and level design!

Thanks for reading,

Jack

Snow! - 06/05/2023

Just a quick post about the game today. I started editing my terrain tiles and trees to make a snowy area in the game, which was super quick and simple, yet effective. I also created an empty canvas in Aseprite, dotted around some faint white pixels, created a new frame, then flipped the pixels vertically on the second frame to make a quick snowfall animation. I also fixed a bug that caused the player to drift if an NPC collided with him.

Thanks for reading,

Jack

Screenshot of Snowy Area
Blog Image 1

Wizard House Update - 05/05/2023

Last night I spent a bit of time working on a few sprites for the wizard’s house. It only took around 45mins to make some basic pieces of furniture and items to go with them. I didn’t do a lot of shading on the sprites, as I don’t feel that the furniture items need too much work done to them, seeing as they are not the main focus of the scene. I may return to them and improve or replace them if I feel the need, but for now, they are helping me to get a feel for how I’d like the game to look further down the line.

A lot of the game mechanics are in place now so I’m starting to think about creating some levels and storyline. I haven’t decided whether to design the fighting mechanic and animations for the game now, or to keep the player passive and do some level design and story and implement the fighting mechanic and enemies after.

Thanks for reading,

Jack

Screenshot of Wizard House
Wizard_House

Fishing! - 01/05/2023

Yesterday I started work on a fishing mechanic for the game. I decided (for now, at least) fishing would be triggered when the player stepped onto a fishing platform, the rod would appear, then a random amount of time would pass, the animator would then play a catching fish animation, and finally a UI box would be displayed with the species and weight of the fish caught. I set myself the goal of coding the fishing mechanic myself which I did! It was once I got to the UI system that I started to struggle, and I did get stuck for a very long time. I had an issue trying to get the UI box to appear and disappear when the fish had been caught. I also struggled to get the fishing sequence to start over once a fish had been caught. I used ChatGPT to help with some code and left myself lots of notes for future reference. I’m going to move onto the interior of the wizard’s house for now, but I may return to fishing to make it more interactive in future.

Thanks for reading,

Jack

Fishing Animation in Aseprite and in-game
Blog Image 1

Quick Post – 30/04/2023

Just a quick post today. Did a bit of work in Aseprite editing the main characters walk animation as I wasn’t happy with it. I also modified my house sprite to make it black with a purple logo, this will serve as the wizard’s house in the game.

Thanks for reading,

Jack

Screenshot of Black House & Walk Animation in Aseprite
Blog Image 1

Animator Transitions - 29/04/2023

I’ve just finished editing, animating, and importing the female sprite into the game. I thought I’d do a quick post on animation transitions. Transitions between animated states are set to occur when certain conditions are met. Below I’ve attached a screenshot of the animator transition window. The arrows represent the transitions, and the labelled boxes (nodes) represent the animation for that state. The player or NPC can walk or stand idle in 4 different directions in my game so there are lot’s of transitions for what seems like a small number of movements. That being said, transitions look harder than they are, once the script has the correct variables set for the transition conditions, its just a case of selecting and correctly setting the conditions for each event.

Thanks for reading,

Jack

Screenshot of Transitions for Female NPC
Blog Image 1

Female Sprite - 29/04/2023

Started working on a female sprite for the game this morning in Aseprite. I filled my wizard character sprite with a skin tone colour for the base of my character, this saves me having to redo all of the basic body shape. Still needs some editing and shading but I’m happy with how its coming along.

Thanks for reading,

Jack

Screenshot of Female Sprite
Blog Image 1

Dialogue System – 28/04/2023

Today I followed the dialogue tutorial on YouTube, and I now have a fantastic, fully functioning, dialogue system! When the player approaches an NPC who he is able to initiate a conversation with, he can press button 1 when in range to trigger the dialogue system, the dialogue box appears with the NPCs name and the text is written character-by-character until all the sentences in the queue have been read, then the dialogue box disappears and the game resumes. This system was too advanced for me to have written by myself so following a tutorial was an excellent way to learn. I always leave lots of notes in my code and save all tutorial videos to a YouTube playlist in case I need to refer back to them at a later date or for another project.

Thanks for reading,

Jack

Scene Transitions - 27/04/2023

Today I set to work on the scene transition from the test area, into the house, and back out to the test area. I’ve done scene transitions before but not for entering/exiting buildings. I created an empty game object in my scene, added box collider 2D, and set it as a trigger. I then positioned the collider over the interior door of the house, in my player script I had already setup the collision detection for the exterior door, so I added a short bit code to this so it could detect if the player had collided with the interior door. Then, in a scene management script I set the scene to change back to the test area when the player collides with the interior door. This worked fine but I found the instant scene change to be harsh when playing the game. I had no idea how to delay the scene change so asked ChatGPT for help, it suggested creating a method for each scene change and invoking the method with a float parameter for the time delay which worked perfectly! Next, I need to make sure the player is in the correct position once he returns to the test area. Then, I can move onto the dialogue system tutorial.

Thanks for reading,

Jack

Game in Unity - 25/04/2023

Quick post with a screenshot of the game in Unity in its current state. Everything is as it was before the scene corruption. I’ll be implementing the dialogue system over the next few days. Then, I’ll be designing the interior of the house and setting up a scene transition so when the player enters the house, the test area disappears, and the house interior is shown.

Thanks for reading,

Jack

Game in Unity Editor
Blog Image 1

Astrophotography #4 - 01/07/2024



Astrophotography Images
Blog Image 1
Blog Image 1 Blog Image 1

Astrophotography #3 – 11/01/2024

After getting somewhat comfortable with the basics of the telescope and camera I wanted to see if I could control the camera and mount remotely. After a quick google I found a Linux distribution called Astroberry for the Raspberry Pi, I immediately flashed it to an SD card and inserted it into my Pi 4B.

Astroberry is specifically designed for astronomy use and device control. It comes bundled with various navigation applications and facilitates remote access to your astronomy equipment. Once setup, the Pi would be connected to my local Wi-Fi network and be functioning as a remote server, the Pi will be plugged into the camera or mount, device control would be handled by an application running on the Raspberry Pi, I would then connect to the remote Pi server using my PC or phone to access the application and control my devices.

After installing Astroberry I followed an online tutorial for the setup process. All seemed well until it came to the mount control. You must manually select drivers to control the camera and mount, I googled which drivers were needed for my specific devices but unfortunately the mount drivers didn’t work. I tried multiple drivers, connecting the Pi directly to the mount, connecting the Pi to the handset, updating the handset firmware, installing a different application to handle the mount control, and finally a fresh install of Astroberry. After a lot of time spent googling, it seemed to be a common issue with my mount, and nobody seemed to have a solution.

For the time being I gave up on the mount control and decided to see if I could get the camera control set up. With the drivers installed I plugged in my camera, and it was ready to go! I decided to test the Astroberry server in the garden and I found that it was rather slow and would drop connection due to a weak Wi-Fi signal. I spent some time seeing if I could improve the connection but decided to call it quits for the time being and find another solution for camera control.

I found a popular program called Astrophotography Tool (APT). APT doesn’t require an internet connection to operate which made it perfect for my situation. APT was very quick to set up on my laptop and is feature rich. APT allows me to record in manual mode with 5x zoom which is necessary for planetary lucky imaging for my model of camera, which is very handy! The only downside is that I must take my laptop in the garden which is much larger than a Raspberry Pi.

I’m happy to have found a solution for the camera control though I aim to have another look at the mount control using a different approach in the near future. For now, I think I’ll stick to improving my astrophotography. I’ve included a collage of images of some recent astro shots and an image of APT running on my laptop.

Thanks for reading,

Jack

Collage of Astrophotography Images
Blog Image 1

Astrophotography #2 – 04/01/2024

Once I had familiarised myself with the alignment process and the functionality of the telescope and GoTo mount, I wanted to take a few test shots with the camera connected to the telescope. So, I took a few terrestrial shots in daylight to check everything was working as it should before I attempted my first astrophotography shots.

The first night I took the camera out I realized that I was suffering from information overload, and I wasn’t as proficient with the telescope as I had first thought. So, instead of taking multiple long exposures of DSOs I decided to start with planetary photography. The Andromeda Galaxy is very hard to find from my location (for me, at least) and that was my original target, but I decided to take a step back and start with something clearly visible and easy to locate, Jupiter.

All my research up until that point had been on how to photograph DSOs, so I took a few test shots of Jupiter with varying exposure times and manual settings, unaware that this was not the best way to take planetary images. My first image came out over exposed, but it was an image of a planet (and four of its moons) taken through the telescope with my camera, so I deemed it a success and saw it as a base from which to work from.

After multiple cloudy nights I finally managed to get back out in the garden, this time armed with some planetary photography knowledge. The approach for planetary photography is often different from that of DSOs; planets such as Jupiter are much brighter than galaxies or nebulae therefore, they don’t need the long exposure times. My approach this time would be to shoot videos of varying lengths (2-3 minutes) in the hopes of getting ‘lucky’ with some of the frames, this is a process called Lucky Imaging. The frames of the video are put into a stacking program which chooses the best frames and stacks them on top of one another to create a more detailed image.

I managed to get a few reasonable videos; however, they were unfortunately out of focus. Since then, I’ve learned techniques for focusing the camera while it’s attached to the telescope. Afterword, I used a program called PIPP to convert the videos, allowing me to import them into the stacking software Autostakkert. Using Autostakkert I identified the best images from the video and stacked them. This produced the clearer image of Jupiter seen below, which I am very pleased with for a second attempt!

My final image from the collage below was a single short exposure shot of the moon. I’m also going to try a video of the Moon and use lucky imaging to see if I can get an even clearer image in future. I’m also keen to get back out to have another go at Jupiter now I have learnt some new techniques for focusing the camera correctly.

I’m very pleased with my progress so far, and eager to get back out and put some of the new techniques I’ve learned into practice, just need to wait for the clouds to clear off!

Thanks for reading,

Jack

Collage of Astrophotography Images
Blog Image 1

Telescope Setup
Blog Image 1

Astrophotography #1 – 03/01/2024

I’ve always been interested in space; there’s something special about stargazing on a clear night, observing the many distant stars and planets scattered across a pitch-black sky. Besides my impromptu stargazing sessions, I had very little understanding of the cosmos. Recently, my eldest son and I have started learning about the solar system together. This, in turn, has piqued my interest in space and has led to me to my next project - astrophotography.

Fortunately for me, my dad already had a Sky-Watcher SkyMax 127 GoTo telescope that I could borrow. With the telescope sorted, I began searching for a budget-friendly camera suitable for astrophotography. I spent a lot of time scouring astro forums in search of the best budget camera for the job, and after many hours of research I settled on the Canon 600D DSLR (Rebel T3i). Mainly due to the 600D having an articulating screen, Live View Mode, compatibility with Magic Lantern Custom Firmware, and a great price (£71 for the camera body). Finally, I ordered a T-Ring & T-Mount adapter to attach the camera to the telescope and I was ready to go!

My end-goal is to photograph deep sky objects (DSOs), so I set myself the challenging but achievable goal of shooting an image of a galaxy or nebulae, with my target objects being the Andromeda Galaxy and the Orion Nebula.

My first couple of nights of clear skies were spent attempting to star align the telescopes GoTo system. Star alignment is the process of selecting a star on the handheld controller, slewing the telescope to that specific star, and aligning it in the centre of the eyepiece on the telescope, and repeated two-to-three times. Once aligned, the GoTo system allows you to select an object (such as stars, planets, or DSOs) on the handheld controller and automatically slew the telescope to the objects position, it will then track the object as it moves across the night sky.

I ran into a few issues with the alignment process. I had preplanned which stars I would use for the alignment (Capella & Aldebaran) and made sure they were on the star alignment list; I was unaware that the list of stars would change once I had aligned the first star. Once the first star has been aligned, the system may provide a shorter list of stars to choose from. This new list contains the best visable stars for the most accurate alignment, and did not include the star I had a planned to use. After some time searching for another suitable star I settled on Hamal, and finally, I had successfully completed the star alignment. Another issue was identifying the stars I had chosen, I use a stargazing app called Stellarium which allows me to point my phone at objects in the sky and identify them using augmented reality. Locating the stars with the naked eye and on Stellarium was relatively easy but, once I began to use the finder-scope I really struggled distinguishing between stars due to the magnification of the finder-scope. I tried to persevere with the telescopic finder-scope I had, but, in the end, I purchased a red dot scope which has made the whole process far easier.

After a few more practice sessions with the telescope, I was ready to attempt my first astrophotography shot!

Thanks for reading,

Jack

Red Dot Scope (bottom) Telescopic Finder-Scope (top)
Blog Image 1

Photography Introduction – 07/07/2024

I’ve always been interested in photography. When I was in my 20’s my dad gave me his old Olympus DLSR and taught me the basics of the exposure triangle and how to take photos in manual mode. At the time I really enjoyed it, but unfortunately, the camera ended up gathering dust, and I eventually gave it back to my dad. As time went by and phone cameras improved, I began to enjoy photography again and wanted to step up to a DSLR and have another go at “proper” photography.

Initially, I was put off by the overwhelming amount of choices in camera bodies, lenses, cost, and terminology that comes with photography and decided against getting a DSLR for quite some time. This changed when I became interested in astrophotography, as I now had two reasons to get a DSLR. Fortunately, one of the recommended cameras for astrophotography was the Canon 600D (Rebel T3i), a very affordable camera body, and I got mine for a fantastic price!

I used the camera for a few weeks solely for astrophotography and gave little thought to using it for regular photography. Eventually, my dad and nephew, who are both keen photographers, convinced me to get a lens for the camera and to practice some regular photography, and I’m very glad they did! Initially, I struggled to get decent shots due to inexperience and an inferior lens. But, after some experimentation and a few lenses bought and sold, I managed to start getting some acceptable shots.

I’m so pleased to have gotten back into photography, especially as astrophotography is near impossible with such long sunny days and short nights. I’ve posted some of best photos below, and I’ll discuss my setups in a subsequent post.

Thanks for reading,

Jack

Collage of Photographs
Blog Image 1
Blog Image 1
Blog Image 1
Blog Image 1
Blog Image 1
Blog Image 1
Blog Image 1
Blog Image 1

Camera Modification - 12/01/25

My most recent project has been modifying a Canon 450D for astrophotography.

Standard DSLRs block most of the hydrogen-alpha wavelength because it makes terrestrial photographs appear too red. Removing the H-alpha filter from a DSLR allows you to capture far more of the red light emitted by deep-space objects such as nebulae.

The modification was somewhat tricky, as the filter is not designed to be removed and sits directly over the camera’s delicate sensor. One particular screw was almost impossible to remove without a specialised tool that I unfortunately don’t own. To overcome this, I drilled a small hole into the camera body to access the screw and remove it with minimal damage.

Once the filter was removed, I carefully reconstructed the camera, ensuring all ribbon cables were seated correctly in their respective positions. I powered on the camera and the modification was a success. I’m now eager for a clear sky to get out and test it!

Thanks for reading,

Jack

Camera Modification in progress
Blog Image 1
Blog Image 1

Pwnagotchi! - 29/06/2023

I’ve just finished assembling my Pwnagotchi! I’ll start by letting ChatGPT give you a brief description of what a Pwnagotchi is, and what it does. Then I’ll run through the components I used and how I set it up.

ChatGPT: Pwnagotchi is an AI project that uses a small device to analyse Wi-Fi networks and learn how to crack passwords. It evolves and improves its hacking techniques over time by observing network data packets. However, it's crucial to remember that using it for illegal or unethical purposes is against the law.

Components:
Raspberry Pi Zero WH
Waveshare 2.13” eInk Display
Pi Zero Case for Waveshare 2.13”
Micro-SD card

I began by downloading the PwnOS from GitHub, I then flashed it to the SD card using balenaEtcher. During the flashing process, I connected the eInk display to the General-Purpose Input/Output (GPIO) pins and assembled the case. Once the flashing was complete, I created a config.toml file in the boot directory of the SD card. This file allows customisation of various functions of the Pwnagotchi, including Wi-Fi scanning, network attacks, data collection, and display options. For now, my primary concern was the display property, I needed to set the Pwnagotchi’s output to my Waveshare eInk screen. After locating the ‘display’ property within the config.toml file, I changed it to 'waveshare_V3' and saved my changes. After saving the file, I ejected the SD card, inserted it into the Pi Zero, and plugged in the power supply.

I had read online that the first boot can take anywhere from 5-30 minutes. However, upon returning, I found that nothing had happened. The activity LED on the Pi was solid green, but the display remained blank. Seeking a solution, I turned to Pwnagotchi Subreddits and discovered that the Waveshare V3 had known compatibility issues with PwnOS. Fortunately, I found a patched version of the OS specifically for the V3 display and promptly downloaded and flashed it to the SD card. I also created a new config.toml file with suggested revised settings. After completing these steps, I plugged in the power supply again and, to my delight, the Pwnagotchi booted up successfully within about 5 minutes, with the eInk display functioning as it should.

I haven’t had time to test the Pwnagotchi or access the data it has collected on my Wi-Fi network just yet. Over the next few days, I’m going to do some research on how best to use my Pwnagotchi and how to setup a Secure Shell (SSH) to access the collected data. This was a fun project I’d been wanting to do for some time, which I would have got round to doing sooner had the Pi Zero WH been in stock!

Thanks for reading,

Jack

Pwnagotchi and Pi & eInk Display
Blog Image 1

Raspberry Pi Jellyfin Server - 15/06/2023

I’ve just finished setting up a Jellyfin media server on my Raspberry Pi 4. I followed a tutorial to set up a network shared folder to transfer my media files from my Windows PC to my Raspberry Pi’s mounted USB drive to be streamed on my network via the Jellyfin application.

I ordered a 256GB USB drive for the media storage, and a new case and fan for the Pi as my previous one was getting noisy and had started to run hot. I also wanted to be able to turn the Pi on and off remotely, so the server doesn’t have to be always on. I plugged the Pi into a smart plug that can be operated from my phone allowing me to turn the Pi on remotely. I also downloaded an app for my phone that allows me to SSH into the Pi and use the shell to shut down the Pi remotely.

I ran into a few minor issues with the installation. Due to my lack of knowledge when it comes to Linux these trivial issues turned out to be rather time consuming. One such issue was formatting, renaming, and mounting the USB drive in the correct directory. The tutorial I followed didn’t include the steps to set up the storage device, so I used ChatGPT to assist me in getting the drive up and running.

Once set up, the Jellyfin application works seamlessly allowing me to stream my media over my network to any compatible device. The application scrapes movie and TV-show data such as: cover art, reviews, actors, and a lot more. I’ve had no issues with streaming on my relatively slow broadband connection and the GUI is like that of Netflix or Prime Video. I’m really impressed with Jellyfin and looking forward to testing it further over the next few days.

This project was a lot harder than anticipated but definitely a valuable learning experience. I have limited knowledge when it comes to Linux, but I enjoyed the challenge of getting familiar with using the shell to operate the system and get Jellyfin up and running.

Thanks for reading,

Jack

New RPi4 Case
Blog Image 1

Kano Computer Kit – 13/06/2023

Recently, I was gifted a second-hand Kano Computer Kit and a Kano Screen. The kit comes with a Raspberry Pi3, a 10” screen, and wireless keyboard. Kano kits are DIY computer kits aimed at teaching children about building computers and computer programming. The kit comes with a micro-SD card with Kano OS pre-installed, this a child friendly Linux distro with a colourful and simple GUI. There are plenty of pre-installed learning applications suitable for various ages with the option to install new apps if required. My sons are too young to use the Kano kit for now, so I’ll be installing a different distro on there and using it as a mini-Linux computer.

Thanks for reading,

Jack

Kano Kit
Blog Image 1

ESP8266 Beacon Spammer – 21/05/2023

Yesterday I followed a tutorial to create a beacon spammer using a ESP8266 microcontroller. Once the device is set up, it runs a beacon spamming script that allows the device to create a set number of fake available Wi-Fi networks. Hackers may use this approach with the intention of tricking a user to connect to the fake network, once connected, the attacker may launch further attacks such as intercepting traffic or stealing sensitive information. For me it was just a cheap mini project and a party trick! I’ll be trying out some more hacks using the ESP8266 that will utilize the mini-OLED sometime soon.

Thanks for reading,

Jack

ESP8266 & Fake Available Networks
Blog Image 1

Update - 12/05/2023

I haven’t had a chance to update the blog for a few days, so I thought I’d do a quick post with an overview of what I’ve been working on with the game and some other little projects I’ve been tinkering with.

With regards to the game, I’ve been debugging and polishing the mechanics that are already in place before moving forward. The majority of my time has been spent on the fishing mechanic. I had an issue where the sprite animation would ‘pop’ my sprite back by a few pixels when the fishing animation began, this was quickly remedied by adjusting the pivot point of the sprite in the relevant frames. I also fixed an issue with the fishing UI box which was occurring when the player was no longer colliding with the fishing platform, instead of disappearing from view, the UI box would display itself with empty fields. This was solved by setting a new bool parameter within the animator and setting it to become true once the player had left the fishing platform.

Yesterday I fitted a 3.5” TFT display to my Raspberry Pi 4B. This is eventually going to be used with a power bank and Wi-Fi adapter with packet injection and monitor mode for portable ethical hacking! I’ve included a few screenshots below of the Raspberry Pi 4B and the newly fitted screen.

I also installed Ubuntu onto my Fire HD 10 tablet! I was looking into getting a smaller laptop for practicing programming then I had the idea of running Linux on my tablet with a Bluetooth keyboard instead. Originally, I wanted to uninstall the custom firmware I was running on the Fire tablet and have Ubuntu as the main OS, but after a bit of googling I decided on a different approach. I used Andronix to install the Linux distro, Termux as the Android terminal emulator to interact with the Linux system, and VNC viewer for remote access and control of the Linux environment. It works incredibly well for simple tasks especially as the Fire HD 10 only has 3GB of RAM.

Thanks for reading,

Jack

Raspberry Pi 4B & Ubuntu on Fire HD 10
Blog Image 1

Anbernic RG350M Custom Firmware - 03/05/2023

Today I installed a custom firmware on my Anbernic RG350M handheld retro emulation console. The stock firmware is shockingly bad, so I set about finding custom firmware (CFW) online. There were a few different options available, but I went with ADAM image as it runs OpenDingux beta firmware with RetroArch. I am somewhat familiar with the latter as on a previous project I installed RetroPie on my Raspberry Pi 4 and RetroArch is the emulator for RetroPie.

For the installation of the CFW, I formatted both micro-SD cards, then used a program called balenaEtcher to write the firmware image to the first SD card, once finished, I transferred all my ROMs (game files) from my computer into their relevant folders on the second SD card. Finally, once the firmware and ROMs had successfully been transferred, I used a program called Skraper to scrape (locate and download) the box art for the ROMs and then I was done!

I’ve attached two screenshots, the first showing the stock firmware, and the second the newly installed CFW. It’s clear to see the CFW is far superior with a beautiful, bright, GUI that is a pleasure to use. A far cry from the dated and disorganized stock firmware it was replacing. In total it took around 90 minutes to complete the installation, this included 45 minutes for the box art scraping. A small amount of time to invest for such a great reward. Right, I'm off to play some Zelda!

Thanks for reading,

Jack

Screenshot of Stock Firmware VS CFW
AnbernicStock

Digispark ATTiny85 Rubber Ducky - 26/04/2023

A few days ago, I found my Digispark ATTiny85 microcontroller in the back of one of my desk drawers. I purchased it after visiting a forum discussion on ‘bad USBs’ where one of the posters said you could pick one up on Amazon for around £3! What is it? The Digispark ATTiny85 is a small, exposed board microcontroller with a built-in USB connector meaning it can be programmed directly from a computer.

So, this morning I thought I’d finally get round to making my Rubber Ducky. Following along with a tutorial I installed the Arduino IDE and relevant drivers, found a Wi-Fi password stealer GitHub repo for the code, and used webhook.site for a temporary URL to receive the webhook data (in this case: Wi-Fi password). All-in-all it took around half an hour for the rubber ducky to be complete and functioning flawlessly. Rubber ducky’s are designed to look like regular USBs. However, instead of storing data, they contain a small computer which emulates a keyboard when plugged into the target device, the computer assumes all is well as it is used to receiving information from the user via the keyboard. Once plugged in, the malicious script will be executed to access and send the targeted sensitive data to the hacker.

Hacking projects mentioned on my blog will never be used maliciously, I test them on my own devices and networks only.

Thanks for reading,

Jack

Image of My Digispark ATTiny85 Next to a £1 Coin
Blog Image 2