via Canva

In my last article, I walked you through how to setup SSH with a Raspberry Pi so that we could log in without needing to enter a password. In this article, we are going to talk about how to connect everything so that we can use our Electron Rsync client to connect to the Raspberry Pi and sync our files from our computer to the Raspberry Pi. If you want to catch up or reference the previous article feel free to check it out below.

Since I did some due diligence at the beginning by making the code modular and…

All you need is a computer and a Raspberry Pi that is connected to a network either with an ethernet cable or with a wifi dongle and a micro-USB power adapter if you are using a Raspberry Pi 3 or older. In my next article, we are going to talk about how to set up Rsync through an Electron GUI and connect to a Raspberry Pi, and sync files between both devices. This article will act as the setup guide.

Raspberry Pi 3

Finding my Raspberry Pi on the network

There are a few different ways to find the local network address of your Raspberry Pi. If you don’t have…

Refactored Vue mounted lifecycle hook.

In my last article, I wrote about how to build a Rsync GUI with Electron. With the incredible amount of responses to my previous article, I decided to continue to write more about my journey with Electron. The code I wrote for the Rsync client took about 2 hours to write and was in dire need of a refactor. If you want to catch up with where we are currently at feel, free to check out my last article below, otherwise let’s get going!

Let’s talk about the pre-refactored code and what can be improved. You will probably notice below…


I’ve heard of Electron but have never used it outside of cloning and launching one of the example apps from their README. Instead of learning a new programming language or framework, I decided it was time to see if I could re-purpose my Javascript skills by using Electron while still creating a good user experience.

If you have been following my recent articles then you know that I am in the process of creating an image hosting service called Eikona. I currently have a working prototype for the web app and the back-end services. The only missing piece is a…

Image from Pexels

Observer vs Scroll Lazy Loading

This article came out of my desire to find the best lazy loading approach for a good user experience on Eikona (my image hosting platform). In my last article, I talked about how I implemented Websocket streaming for a large number of images. Towards the end of the article, I mentioned that I chose a scroll calculation based method over the popular observer-based lazy loading pattern. If you missed the last article on Websockets and want to catch up, you can check out the article link below.

Observer Lazy Loading Pattern

The basic premise with this lazy loading pattern is that there is an…

Eikona photo hosting service (prototype)

In my last article, I briefly talked about the importance of inexpensive, scalable, and most importantly well-performing cloud-based object storage. Then I took the time to walk you through how to set up and import your data to B2, which I am currently using. In this post, I will walk you through how I am able to optimally load thousands of images without any loading indicators, screens, or a break in the user experience (UX). If you want to follow along and catch up with where we are now, feel free to check out my last article on B2.


Sourced from Wikipedia commons

If you have been following my past article or two then you know that I am on a quest to create a highly performant image hosting service for web and mobile called Eikona (picture in Greek). See below if you want to catch up on my journey from prototype to production.

In my first article, I demonstrate an early prototype of Eikona where I was able to load 2,500+ images locally by bundling them with Webpack. This made it appear to the user that there was little to no loading time (less than 1 second, including the UI loading). I…

Stressing out the new Macbook Air

I drove 3 hours round trip to get the new MacBook Air the day after I ordered it. It was either that or wait 3–4 weeks for delivery. I don’t know about you, but I was too excited to start playing with this new laptop and putting it through its paces. I have had several MacBooks over the years. Being a contractor (programmer) I have worked on fully loaded versions of 2017, 2018, and most recently the 2019 MacBook Pro with an i9 and 32GB of ram.

Like many people, I have been intrigued by the performance claims and glowing…

Eikona (early prototype)

For fun in my spare time, I’ve been writing an image and media hosting service for myself and my wife. I’ve also been contemplating open-sourcing it for those who may want to host it themselves, or even potentially creating a Saas for people who want such a service but aren’t interested in self-hosting.

The project is currently a functional but rough prototype. I plan to create a working web app in Vue and eventually an iOS and Android app in Flutter by the beginning of next year.

Where did this idea come from and why would I attempt such a…


This is the beginning of a series of posts on Git. Buckle up and enjoy this journey if you are new to Git, are wanting to get a deeper understanding of Git, or want a reference for later use. I am going to do my best to explain Git and how to use it as accurately and concisely as possible. …

Thomas Underwood

🙏 Jesus and Technology are my two favorite things. 💻

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store