2021 PROJECTS

In this post, I will cover some projects I have worked on over the last few months and some projects I have planned for the future.

Bipedal Robot


I am currently busy building a bipedal robot based on this Instructables post by K.Biagini. I used his design as a foundation and added additional components and functionality (such as arms and a Piezo for sound).

I had to modify his 3D models to achieve what I wanted. Here are links to download my modified 3d Models:
– Body Extension (to fit in the extra components) – Link
– Modified Head – Link
– Arms – Link

Here is a list of all the electronic components used:
– 1x Arduino Nano
– 6x micro servos
– 2 x push buttons
– 1x mini toggle switch
– 1x 9v Battery
– 1x ultrasonic sensor (HC-SR04)
– 1x RGB LED
– 1x Piezo

These components are connected as follows:

Pinout configuration of Arduino Nano:

Pin NumberConnected Hardware
2Ultrasonic Sensor Echo Pin
3RGB LED Red Pin
4Push Button 1
5RGB LED Green Pin
6RGB LED Blue Pin
7Push Button 2
8Servo Signal Pin (Right Hip)
9Servo Signal Pin (Right Ankle)
10Servo Signal Pin (Left Hip)
11Piezo
12Servo Signal Pin (Left Ankle)
13Ultrasonic Sensor Trigger Pin
14 (A0)Servo Signal Pin (Left Arm)
15 (A1)Servo Signal Pin (Right Arm)

This is still an in-progress project and is not done, Especially from a coding perspective on the Arduino, but once I have completed this project, I will create a post containing the complete source code.

Rotary Control

I needed a rotary control for another project discussed below, so I decided to build one as per this Post on the Prusa Printers blog. It is based on an Arduino Pro Micro and uses Rotary Encoder Module.

I modified the code available on the Prusa blog to mimic keyboard WASD inputs. Turning the dial left and right will input A and D, respectively. Pressing in the dial control push button will switch to up and down inputs, thus turning the dial left and right will input W and S.
Here is the modified code (Based on Prusa Printers blog post code):

#include <ClickEncoder.h>
#include <TimerOne.h>
#include <HID-Project.h>

#define ENCODER_CLK A0 
#define ENCODER_DT A1
#define ENCODER_SW A2

ClickEncoder *encoder; // variable representing the rotary encoder
int16_t last, value; // variables for current and last rotation value
bool upDown = false;
void timerIsr() {
  encoder->service();
}

void setup() {
  Serial.begin(9600); // Opens the serial connection
  Keyboard.begin();
  encoder = new ClickEncoder(ENCODER_DT, ENCODER_CLK, ENCODER_SW); 

  Timer1.initialize(1000); // Initializes the timer
  Timer1.attachInterrupt(timerIsr); 
  last = -1;
} 

void loop() {  
  value += encoder->getValue();

  if (value != last) { 
    if (upDown)
    {
    if(last<value) // Detecting the direction of rotation
        Keyboard.write('s');
      else
        Keyboard.write('w');
    }
    else
    {
      if(last<value) // Detecting the direction of rotation
        Keyboard.write('d');
      else
        Keyboard.write('a');
    }
    last = value; 
    Serial.print("Encoder Value: "); 
    Serial.println(value);
  }

  // This next part handles the rotary encoder BUTTON
  ClickEncoder::Button b = encoder->getButton(); 
  if (b != ClickEncoder::Open) {
    switch (b) {
      case ClickEncoder::Clicked: 
        upDown = !upDown;
      break;      
      
      case ClickEncoder::DoubleClicked: 
        
      break;      
    }
  }

  delay(10); 
}

I use the rotary control with a Raspberry Pi to control a camera pan-tilt mechanism. Here is a video showing it in action:

I will cover the purpose of the camera as well as the configuration and coding related to the pan-tilt mechanism later in this post.

Raspberry Pi Projects

Raspberry Pi and TensorFlow lite

TensorFlow is a deep learning library developed by Google that allows for the easy creation and implementation of Machine Learning models. There are many articles available online on how to do this, so I will not focus on how to do this.

At a high level, I created a basic object identification model created on my windows PC and then converted the model to a TensorFlow lite model that can be run on a Raspberry pi 4. When the TensorFlow lite model is run on the Raspberry Pi, a video feed is shown of the attached Raspberry Pi camera, with green blocks around items that the model has identified with a text label of what the model believes the object is, as well as a numerical percentage which indicates the level of confidence the model has in the object identification.

I have attached a 3inch LCD screen (in a 3D printed housing) to the Raspberry Pi to show the video feed and object identification in real-time.

The Raspberry Pi Camera is mounted on a pan-tilt bracket which is controlled via two micro servos. As mentioned earlier, the pan-tilt mechanism is controlled via the dial control discussed earlier. The pan-tilt mechanism servos are driven by an Arduino Uno R3 connected to the Raspberry Pi 4 via USB. I initially connected servos straight to Raspberry Pi GPIO pins. However, this resulted in servo jitter. After numerous modifications and attempted fixes, I was not happy with the results, so I decided to use an Arduino Uno R3 to drive the servos instead and connect it to the Raspberry Pi Via USB. I have always found hardware interfacing significantly easier with Arduino and also the result more consistent.

Here is a diagram of how the servos are connected to the Arduino Uno R3:

Below is the Arduino source code I wrote to control the servos. Instructions are sent to the Arduino through serial communication via USB, and the servos are adjusted accordingly.

#include <Servo.h>
#define SERVO1_PIN A2
#define SERVO2_PIN A3

Servo servo1;
Servo servo2;
String direction;
String key;
int servo1Pos = 0;
int servo2Pos = 0;

void setup()
{
  servo1Pos = 90;
  servo2Pos = 90;
  Serial.begin(9600);
  servo1.attach(SERVO1_PIN);
  servo2.attach(SERVO2_PIN);

  servo1.write(30);
  delay(500);
  servo1.write(180);
  delay(500);
  servo1.write(servo1Pos);
  delay(500);
  servo2.write(30);
  delay(500);
  servo2.write(150);
  delay(500);
  servo2.write(servo2Pos);
  delay(500);
  Serial.println("Started");
  servo1.detach();
  servo2.detach();
}

String readSerialPort()
{
  String msg = "";
  if (Serial.available()) {
    delay(10);
    msg = Serial.read();
    Serial.flush();
    msg.trim();
    Serial.println(msg);
  }
  return msg;
}

void loop()
{
  direction = "";
  direction = readSerialPort();
  //Serial.print("direction : " + direction);
  key = "";

  if (direction != "")
  {
    direction.trim();
    key = direction;

    servo1.attach(SERVO1_PIN);
    servo2.attach(SERVO2_PIN);

    if (key == "97")
    {
      if (servo2Pos > 30)
      {
        servo2Pos -= 10;
      }
      servo2.write(servo2Pos);
      delay(500);
      Serial.print("A");
    }

    else if (key == "115")
    {
      if (servo1Pos < 180)
      {
        servo1Pos += 10;
      }
      servo1.write(servo1Pos);
      delay(500);
      Serial.print("S");
    }

    else if (key == "119")
    {
      if (servo1Pos > 30)
      {
        servo1Pos -= 10;
      }
      servo1.write(servo1Pos);
      delay(500);
      Serial.print("W");
    }

    else if (key == "100")
    {
      if (servo2Pos < 150)
      {
        servo2Pos += 10;
      }
      servo2.write(servo2Pos);
      delay(500);
      Serial.print("D");
    }

    delay(100);
    servo1.detach();
    servo2.detach();
  }

}

On the Raspberry Pi, the following Python script is used to transfer the rotary control input via serial communication to the Arduino:

# Import libraries
import serial
import time
import keyboard
import pygame

pygame.init()
screen = pygame.display.set_mode((1, 1))

with serial.Serial("/dev/ttyACM0", 9600, timeout=1) as arduino:
    time.sleep(0.1)
if arduino.isOpen():
    done = False
while not done:
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_s:
    arduino.write('s'.encode())

if event.key == pygame.K_w:
    arduino.write('w'.encode())

if event.key == pygame.K_a:
    arduino.write('a'.encode())

if event.key == pygame.K_d:
    arduino.write('d'.encode())
time.sleep(0.5)

arduino.Close();
print ("Goodbye")

The next thing I want to implement on this project is face tracking using TensorFlow lite with automated camera movement.

Raspberry Pi Zero W Mini PC

I built a tiny PC using a Raspberry Pi Zero W combined with a RII RT-MWK01 V3 wireless mini keyboard and a 5 inch LCD display for Raspberry Pi with a 3D printed screen stand.


It is possible to run Quake 1 on the Raspberry Pi Zero following the instructions in this GitHub, and it runs great.

Raspberry Pi Mini Server Rack

I have 3D printed a mini server rack and configured a four Raspberry Pi Cluster consisting of three raspberry Pi 3s and one Raspberry Pi 2. They are all networked via a basic five-port switch.

I am currently busy with a few different projects using the Pi cluster and will have some posts in the future going into some more details on these projects.

I developed a little Python application to monitor my different Raspberry Pis and show which ones are online (shown in green) and offline (shown in red).

The application pings each endpoint every 5 seconds, and it is also possible to click on an individual endpoint to ping it immediately. The list of endpoints is read from a CSV file, and it is easy to add additional endpoints. The UI is automatically updated on program startup with the endpoints listed in the CSV file.

Here is the Python source code of the application:

import PySimpleGUI as sg
import csv
import time
import os
from apscheduler.schedulers.background import BackgroundScheduler


def ping(address):
    response = os.system("ping -n 1 " + address)
    return response


def update_element(server):
    global window
    global layout
    response = ping(server.address)
    if response == 0:
        server.status = 1
        window.Element(server.name).Update(button_color=('white', 'green'))
        window.refresh()
    else:
        server.status = 0
        window.Element(server.name).Update(button_color=('white', 'red'))
        window.refresh()


def update_window():
    global serverList
    for server in serverlist:
        update_element(server)


class server:
    def __init__(self, name, address, status):
        self.name = name
        self.address = address
        self.status = status


serverlist = []

with open('servers.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            line_count += 1
        else:
            serverlist.append(server(row[0], row[1], 0))
            line_count += 1

layout = [
    [sg.Text("Server List:")],
]

for server in serverlist:
    layout.append([sg.Button('%s' % server.name, 
                    button_color=('white', 'orange'), 
                    key='%s' % server.name)])

window = sg.Window(title="KillerRobotics Server Monitor", 
                    layout=layout, margins=(100, 30))
window.finalize()
scheduler = BackgroundScheduler()
scheduler.start()

scheduler.add_job(update_window, 'interval', seconds=5, id='server_check_job')

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        scheduler.remove_all_jobs()
        scheduler.shutdown()
        window.close()
        break
    elif event in [server.name for server in serverlist]:
        scheduler.pause()
        update_element([server for server in 
                         serverlist if server.name == event][0])
        scheduler.resume()

Raspberry Pi Pico

I ordered a few Raspberry Pi Picos on its release, and thus far, I am very impressed with this small and inexpensive microcontroller.

The Raspberry Pi Pico sells for $4 (USD) and has the following specifications:
– RP2040 microcontroller chip designed by Raspberry Pi
– Dual-core Arm Cortex-M0+ processor, flexible clock running up to 133 MHz
– 264KB on-chip SRAM
– 2MB on-board QSPI Flash
– 26 multifunction GPIO pins, including 3 analogue inputs
– 2 × UART, 2 × SPI controllers, 2 × I2C controllers, 16 × PWM channels
– 1 × USB 1.1 controller and PHY, with host and device support
– 8 × Programmable I/O (PIO) state machines for custom peripheral support
– Low-power sleep and dormant modes
– Accurate on-chip clock
– Temperature sensor
– Accelerated integer and floating-point libraries on-chip

It is a versatile little microcontroller that nicely fills the gap between Arduino and similar microcontrollers and the more traditional Raspberry Pis or similar single board computers.
I have only scratched the surface of using the Pico on some really basic projects, but I have quite a few ideas of using it on some more interesting projects in the future.

3D Printing

I ran into some problems with my 3D printer (Wanhao i3 Mini) over the last few months. The First problem was that half of the printed LCD display died, which was an annoyance, but the printer was still usable. The next issue, which was significantly more severe, was that the printer was unable to heat up the hot end.

My first course of action was to replace both the heating cartridge and the thermistor to ensure that neither of those components were to blame, and unfortunately, they were not. After some diagnostics with a multimeter on the printer’s motherboard, I determined that no power was passing through to the heating cartridge connectors on the motherboard.

I ordered a replacement motherboard and installed it, and the 3D printer is working as good as new again. When I have some more time, I will try and diagnose the exact problem on the old motherboard and repair it.
Here are photos of the old motherboard I removed from the printer:

Below are some photos of a few things I have 3D printed the last few months:

2021 PROJECTS

REVIEW – AMAZON KINDLE 2019 MODEL (10TH GENERATION)

The main improvement offered by the 10th generation base model Kindle over its predecessors, is the inclusion of an integrated light, which was previously only a feature of the more expensive Kindle Paperwhite and Kindle Oasis, and this is a game-changer. The inclusion of the light vastly increases the ease by which you can read the Kindle in various conditions and dramatically improves screen visibility.  

While on the topic of the screen, it is Amazon’s 6″ e-Ink glare-free display, with a PPI of 167 pixels per inch and offers a 16-level grayscale color palette, meaning even comic books and graphic novels are easily readable and details do not get lost.

The Kindle 2019 model offers a comfortable read, with text size easily resizable to user taste and allows for much quicker reading.

The Kindle supports books, comics books\graphic novels, magazines, and audiobooks across the following file formats: Kindle Format 8 (AZW3), Kindle (AZW), TXT, PDF, unprotected MOBI, PRC natively; HTML DOC, DOCX, JPEG, GIF, PNG, PMP through conversion; Audible audio format (AAX). Amazon has also vastly improved PDF support, and reading PDFs is now far less painful than in the past.

The Kindle model reviewed here comes with 8GB of non-expandable storage, enough to hold ample books and comics. However, heavy audiobook listeners might want to look at the 32GB version of the Kindle Paperwhite or Kindle Oasis instead.

A Bluetooth audio device is required (Headphone, Speaker, etc.) to listen to audiobooks, and the Kindle does allow the user to switch between reading and listening rather seamlessly.

The Kindle is entirely Wi-Fi enabled, and once online, it seamlessly integrates into the Amazon ecosystem.

Amazon claims a battery life of up to 4-weeks, obviously depending on usage and light brightness selected. I found the Kindle needed to be charged once every ten days or so with moderate usage (1-2 hours a day), and the light turned up to roughly 80% brightness.

The Kindle weighs in at 174g without a cover, making it shockingly light for its size, definitely contributing to its reading comfort.

The Kindle 2019 model retails on Amazon for $89.99 with the special offer enabled (ads show on the device lock screen) and $109.99 without the special offer. I find the special offer unintrusive, especially if you use a cover that obstructs the screen when not in use.

Amazon’s Kindle e-book readers are pretty much the de facto standard for e-book readers, with Amazon controlling over 80% of the e-book reader market, and it is easy to see why. From the ease of use to simple convenience, Amazons Kindle Devices and Ecosystems are hard to beat.    

REVIEW – AMAZON KINDLE 2019 MODEL (10TH GENERATION)

REVIEW – COOLER MASTER MM710 PRO-GRADE GAMING MOUSE WITH HONEYCOMB SHELL AND ULTRAWEAVE CABLE

The Cooler Master MM710 is an ultra-light gaming mouse in the same vein of the now famous Glorious Model O mouse. It is currently listed on Amazon at around the $50 price-point, making it a fair bit less expensive than the Glorious Model O. It weighs 53 grams and as someone who usually prefers a heavier mouse, it feels completely weightless.
The Honeycomb shell has a very comfortable ergonomic shape, and the ultraweave cable combined with its ultra smooth PTFE feet makes using the mouse absolutely effortless.

The mouse pictured below is the matte black option, however, matte white, gloss black and gloss white options are also available.

Here is a technical specification breakdown of the MM710:

MM710
Year Released 2019
DPI 16000dpi
Buttons 6
Connectivity Wired USB
Weight 53g
Sensor Pixart Optical
Additional Features

Ultra-Lightweight

Ultraweave cable

Omron Switches

The MM710 was the first ultra-lightweight gaming mouse I have tried, and I found using it very comfortable and precise, saying that I am not quite ready to give up the Logitech G603 as my daily driver as I still find it more comfortable. A large part of this relates to the muscle memory I have developed by using a heavier mouse for many years now, and it will take time to get used to such a lightweight mouse.
The MM710 is an excellent product at a very reasonable price, and it is worth considering if you are looking for a lightweight mouse.

REVIEW – COOLER MASTER MM710 PRO-GRADE GAMING MOUSE WITH HONEYCOMB SHELL AND ULTRAWEAVE CABLE

MOVIE REVIEW – MAKER: A DOCUMENTARY ON THE MAKER MOVEMENT

MakerMovie

Maker is a documentary film directed by Mu-Ming Tsai that focuses on the maker movement and the wide variety of topics it entails, such as 3D printing, electronics, biotech, etc.

Numerous interviews with different individuals within the movement are shown and clearly shows the passion they all have. And the film really presses the message across of getting people away from being consumers and becoming makers.

Throughout the documentary, the filmmakers visit various maker spaces and even one biotechnology maker space, and it very interesting to see the facilities on offer.

Two companies formed out of the maker movement, Pebble smartwatches, and OpenROV are also visited, and both illustrate how it is possible to establish companies on the principles of the maker movement.

The film also examines Crowdfunding and how it can provide the financial means for anyone to turn their creations into a consumer product and a successful company.
As an avid supporter of the maker movement, I thoroughly enjoyed the film, and it is an excellent mechanism to introduce people to what the maker movement is. I highly recommend this film.

MOVIE REVIEW – MAKER: A DOCUMENTARY ON THE MAKER MOVEMENT

LEARNING PYTHON AND DEVELOPING A GAME

Screen

As I mentioned in my Surviving Lockdown post, I started upskilling on Python, and when upskilling on a new programming language, I usually do a project to build on and enforce the things I am learning.

For my Python-based project, I decided to use PyGame to develop a small game. One piece of advice I can offer when developing a game is that it is better to develop a small and basic game that you finish than a large and ambitious game you never complete. I believe everyone who has tried some form of game development has at least one over-ambitious project they never completed, so it is better to start small.

The game I developed is called “Space Octopus Invasion” and here is a video of the game in action:

The tools and resources I used in the development process are as follows:

  • Trello
    I used Trello for task tracking and planning.
    trello
  • PyCharm
    PyCharm is my favorite Python IDE developed by JetBrains, and it offers a free community edition.
    pycharm
  • PyInstaller 
    A great utility to package a python application into an executable file.
  • InstallForge 
    A free installer maker that allows you to create a professional-looking setup wizard to install your game.
  • GameDevMarket.net
    I am not an artistically inclined person, and typically I use art, sound, and music assets when developing a game, I recommend GameDevMarket.net as they have a great selection of assets available.

The Installer for the game can be downloaded here: Installer.

And the source code can be downloaded here: Source Code.

LEARNING PYTHON AND DEVELOPING A GAME

MOVIE REVIEW – NOT FOR RESALE: A VIDEO GAME STORE DOCUMENTARY

Untitled

Not For Resale: A Video Game Store Documentary is an interesting and informative film directed by Kevin J. James. It is a documentary film that examines the place of brick and mortar video game stores in a world that is increasingly becoming exclusively digitally focused.

The film focuses on a variety of Retro Game Stores, including two I have had the pleasure of visiting 8bit and Up in New York City and Pink Gorilla Games in Seattle. Numerous owners and employees of these stores are interviewed about the future of these local “Mom and Pop” shops in a world where physical media is becoming increasingly unfashionable and demand for physical retro video games is decreasing year on year (partly due to these retro games being made available on new platforms).

The documentary also examines the rise of the digital distribution of video games and how that affects the customer from a product ownership perspective. From a positive perspective, the digital distribution of video games has removed a massive barrier to entry for smaller and indie developers, who can now release their games alongside the big corporations. There are, however, also negative points. These mainly focus on the possibility that a customer can lose access to a digital product they have purchased if it is removed from the digital distribution platform. Digital products can be removed from digital distribution platforms for a variety of reasons, including the lapse of licensing agreements.

The film also examines the preservation of video games and video game history, an important task undertaken by various organizations, including the Video Game History Foundation and the National Video Game Museum in Frisco, Texas. These organizations strive to preserve all things related to the history of video games, not just merely the game itself but all source code, design documents, and marketing material. The documentary also discusses the Library of Congress of the United States’ video game section, where video games are stored for historical purposes in a similar way to which the Library archives films and books.

Not For Resale: A Video Game Store Documentary is an enjoyable film that, at its core, looks at the impact video games have on our lives and the way this important part of many of our lives will be affected in the future.  Not For Resale: A Video Game Store Documentary is an excellent documentary that comes highly recommended.

MOVIE REVIEW – NOT FOR RESALE: A VIDEO GAME STORE DOCUMENTARY

SURVIVING LOCKDOWN

I had to travel for work to New York City for a week at the end of February (returning early March), and upon returning, I became ill with the flu (I was tested for COVID-19, and luckily tests came back negative). Nevertheless, I was placed on doctor mandated self-isolation. On the 26th March at 23:59, the government of South Africa put the country on lockdown, meaning that you can only leave your house to buy food, get medication, or seek urgent medical assistance. The Army was deployed to assist the police in enforcing the lockdown, and leaving your home for any other reason than the ones mentioned above can result in you being arrested.

This does mean that I have been at home, except a handful of exceptions, for over a month now, and have kept myself busy with a variety of things, such as playing video games, watching some movies, doing a few Python courses and 3d printing a few things.
From a gaming perspective, I have been playing the following games:

Legend of Zelda Link’s Awakening (on the Nintendo Switch)

71u6nI9eAcL._SL1500_

I thoroughly enjoyed Link’s Awakening, and it is an amazing remake of the Gameboy classic. The game has buckets of charm and is very enjoyable. It is not a challenging game, except for the last boss that can be a bit tricky. I highly recommend Link’s Awakening, and I enjoyed every second from beginning to end, and it took me about 15 hours to complete.

Animal Crossing New Horizons (on the Nintendo Switch)

81s8etnYPrL._SL1500_

I have been absolutely obsessed with Animal Crossing New Horizons, and I must have logged over 40 hours of gameplay to date, and I am still far from done with this game. It is the perfect game while stuck at home, and it is a fantastically fun and feel-good game.

Afterparty (on the Nintendo Switch)

afterparty-switch-hero

A delightful adventure by Night School Studio, the creators of Oxenfree. I enjoyed this game, and I love the art style. The game is about 6 hours long, and I am now busy with my second play through doing alternative paths from my first playthrough. Afterparty is a must for anyone who loves adventure games.

Doom 64 (on the Nintendo Switch)

doom-64-switch-hero

Doom64 is a tremendous classic fps, and it plays fantastically in Switch Handheld mode. Initially released in 1997 on the Nintendo 64, it has now been re-released on modern platforms. All the enemies and weapons received a redesign from the original Doom games, and I love how enemies look in Doom 64. Doom 64 is a must-play for any Doom fan.

Mario Kart 8 Deluxe (on the Nintendo Switch)

91KQmjDxj-L._SL1500_

I am busy playing through Mario Kart 8 again, I have finished the game on the WiiU previously, but I am casually playing through it again between Animal Crossing sessions. Mario Kart 8 Deluxe on the Switch is the definitive version of Mario Kart 8, with all the DLC included and with enhanced graphics (and a fixed battle mode), it is the best Mario Kart game to date.

Doom Eternal (on PC)

81IiXIFw0lL._SL1500_

Doom Eternal is a beautiful game, and it definitely amps up the difficulty from Doom 2016. All the enemies received a redesign from Doom 2016, with the new designs being more closely inspired by the original Doom games (Doom and Doom II). I love the redesigns of the enemies, and thus far, I am enjoying the game. The game has more strategy compared to Doom 2016, with some enemies having specific weak points that can be exploited, and certain kills (glory kill, chainsaw and flamethrower) providing specific pickups (either health, ammo or armor). The game truly looks amazing and performs great, and I am having no issues running the game at 144fps on Ultra Nightmare settings at 1440p on my 9900k and RTX2080. A definite must-play for FPS fans.

I have also watched a fair number of movies, including:

Not for Resale: A Video Game Store Documentary

Untitled

I enjoyed this documentary about Video Game stores and physical media, and I will be posting a full review soon.

Indie Game the Movie

indie-game-the-movie

An entertaining and informative look at the indie game industry, a must-watch for anyone interested in the process of creating video games. I will also be posting a full review of Indie Game the Movie soon.

I have also kept myself busy 3D printing a few things, mostly using the CCTree PLA Wood filament. I have had a few requests from colleagues and friends for Baby Groot and Pikachu models, so I printed out a few of each to give away.

IMG_1132

SURVIVING LOCKDOWN

MY AUDIO SETUP

IMG_0085

This article will cover the different components of the hi-fi audio setup I use with my PC.  The setup described below offers excellent quality audio without breaking the bank.

When building a PC based hi-fi audio setup, the following main components will be required:

  • A DAC
  • An Audio Switch
  • A Headphone Amplifier
  • Audio Cables
  • Headphones
  • Studio Monitors (Speakers)

We will now cover each of the components mentioned above for my setup.

DAC

A DAC (Digital-to-Analog Converter) converts digital signals that computers use to audio we can hear. A DAC is one of the most significant determining factors with regard to audio quality. Although most motherboards and laptops have onboard audio solutions, they tend to be mediocre at best, and using a dedicated DAC is the quickest way of gaining a significant bump in audio quality.

For a DAC, I selected the SMSL M100 DAC. The M100 utilises the AK4452 DAC chip and implements the XMOX 2nd generation Audio USB interface. It supports PCM signals of up to 32bit 768kHz and DSD up to DSD512.

For inputs, the M100 offers optical, USB and coaxial inputs, and for output RCA. If the DAC is not connected to the PC via USB, power will have to be provided via a USB micro power port.

The M100 is a fantastic little DAC, offering sound quality that would have cost a fortune five years ago. The M100 currently sells for $80 (USD) on Amazon.

Audio Switch

An audio switch allows you to switch between different audio inputs and outputs, for example, selecting if you want audio to play through speakers or headphones with the flick of a switch.

For an audio switch, I use the NobSound Little Bear MC403, which is a 4 to 3 out audio switch. For input, it offers a 3.5mm jack, two sets of RCA jacks and Bluetooth, and for output, it has a 3.5mm jack and once again two sets of RCA jacks. The MC403 implements Bluetooth 4.0, and in order to use it as a Bluetooth receiver, it must be powered (5V DC). However, none of its other functionalities requires it to be powered.

IMG_0142

It is imperative to select an Audio Switch that has complete audio line isolation. I have previously used an inexpensive switch that did not properly isolate all its audio lines, and that resulted in a great deal of line noise.

The MC403 offers excellent audio line isolation, with no noise interference between different inputs. The NobSound Little Bear MC403 sells on Amazon for around $70(USD).

Headphone Amplifier

For a headphone amplifier, I selected the Sabaj PHA3 Vacuum Tube Headphone Amplifier. The PHA3 utilises two 6J9 Vacuum tubes. A headphone amplifier obviously amplifies the sound delivered to the headphones (a must for high impedance headphones as the DAC will not be powerful enough to play sounds over these headphones at a reasonable level). However, an additional benefit of vacuum tube headphone amplifiers specifically is that they enrich the sound quality and widens the sound stage. The effect of Vacuum tubes on sound quality is very subjective, and it is not an effect everyone enjoys, however personally, I find it makes the audio playback sound more natural and makes the listening experience more enjoyable.

The Sabaj PHA3 Vacuum Tube Headphone Amplifier can be purchased on Amazon for around $50(USD).

IMG_0142

Audio Cables

Not all audio cables are made equally. There is no point in spending a fair amount on money on an audio setup and then using inexpensive low-quality cables to connect everything together, as this will have a negative effect on the overall audio quality.

I use the Seismic Audio Premium Red RCA Audio Patch Cables to connect the different parts of my setup. They are amazing quality cables that offer spring strain relief, and 24K gold plated RCA connectors. It is very difficult to explain the quality these cables offer until you hold a set of these cables in your hands and then becomes apparent why they are different from your average RCA patch cables. They are available on Amazon for around $10(USD).

Headphones

I have four sets of headphones\earphones I frequently use for a variety of use cases. I have two primary headphones I use with my hi-fi setup, and they are the Samson Z55 and the Phillips SHP9500. Let us have a look at these two headphones first:

Samson Z55

My daily use headphones are the Samson Z55 Professional Reference Headphones. They are closed-back headphones that offer best in class sound quality and excellent sound isolation. The headphones use 45mm neodymium drivers and have an impedance of 32 ohms. The Z55 offers a frequency response of 10Hz-25kHz.

The Headphones have a detachable cable (as all good headphones do), and the cable has a locking mechanism to ensure a secure fit.

The Samson Z55 comes with lambskin ear pads and has a very tight clamp, which can cause a bit of discomfort after prolonged use, especially in a warmer climate.

I have made two customisations to my Z55 headphones. Firstly, replacing the earpads with the Brainwavz Hybrid Memory Foam Ear Pads, which are incredibly comfortable and a massive upgrade over the standard earpads from a comfort and sound isolation perspective.

Secondly, I use a headband cover, the LTYIVABHTTW headband cover, as my headband started showing signs of wear and tear after more than a year of daily use. The LTYIVABHTTW headband cover is made from durable stretchy material and uses a zipper to attach over the headphone headband. It is incredibly comfortable, and you do not even notice it is there.

The Samson Z55 Headphones can be picked up from Amazon for around $100(USD).

The Brainwavz Hybrid Memory Foam Ear Pads cost around $25(USD)  on Amazon.

Lastly, the LTYIVABHTTW headband cover sells for under $15 (USD) on Amazon.

Phillips SHP9500

The Phillips SHP9500 are open-back headphones that are unbelievable value for money, costing only $70(USD) on Amazon, the sound quality they offer rival headphones that cost four times more. As they are open-back headphones, the SHP9500 offers little to no sound isolation, but they do offer a large sound stage.

The Phillips SHP9500 uses 50mm neodymium drivers, with a 32 ohms impedance and a frequency response of 12Hz-35kHz. Additionally, the Phillips SHP9500 has a detachable cord.

These headphones are hands down the most comfortable headphones I have ever tried and can easily be worn all day without causing any discomfort. This is the main reason why I alternate between them and the Samson Z55, as especially in a warmer climate, the Z55 can become uncomfortable after long listening sessions. In contrast, the SHP9500, with its light clamping pressure, can be comfortable used even on the warmest summer day without any problems.

Additionally, to the two headphones mentioned above, I also use the JBL Under Armour Sport Train Headphones while at the gym (the only time I would typically use wireless headphones) and then I also use the Sony MDRXB50 Wired Earbuds when out and about on my Amazon Fire 10 tablet and Nintendo Switch. Let us have a look at these now:

JBL Under Armour Sport Headphones

The Headphones I use in the gym is the JBL Under Armour Sport Headphones. They are Bluetooth headphones specially designed to be worn while physically active. They have a tight clamp on-ear design to stay on while moving around. They are sweatproof, and the earpads and headband are made of Under Armour’s breathe material. The headphones have a folding design and come with a sturdy carry case, which is ideal for protecting the headphones while they are in your gym bag.

From a technical specification perspective, the JBL Under Armour Sport Headphones implements a Bluetooth 4.1 interface, has 40mm Drivers with an impedance of 32 ohms, and an estimated battery life of 16 hours.

The headphones offer good sound quality for Bluetooth headphones, and they are very comfortable while working out.

The JBL Under Armour Sport Headphones is available from Amazon for $160(USD). 

Sony MDRXB50 Wired Earbuds

I use the Sony MDRXB50 Wired Earbuds when I’m am out and about with my Amazon Fire 10 tablet and Nintendo Switch. They are high quality, relatively inexpensive earbuds available for around $30 on Amazon.

The MDRXB50 uses 12mm dome-type drivers along with high-energy neodymium magnets, which deliver excellent sound quality for their small size. The earbuds have a frequency response of 4Hz – 24kHz and a 16ohms impedance.

These earbuds offer great value for money and come with a carry pouch and flat tangle-free cable, making them an excellent compact option for when traveling or just out of the house.

Studio Monitors (Speakers)                    

Samson Media One BT3

For speakers, I use the Samson Media One BT3 powered studio monitors. They are good quality speakers offering Bluetooth as well as 3.5mm and RCA inputs. They are sturdily constructed stereo speakers, and each of the two speakers contains a 3-inch copolymer woofer and a 1-inch silk dome tweeter. They offer excellent sound quality and 15 watts per channel RMS (30 watts peak)  that can easily fill a large room.

They are available from Amazon for around $100(USD).

IMG_0143

MY AUDIO SETUP

REVIEW – LOGITECH G603 LIGHTSPEED WIRELESS GAMING MOUSE

IMG_0173

The Logitech G603 is an extremely popular wireless gaming mouse. That popularity is for an excellent reason, as the G603 is a well made and high performing wireless gaming mouse at a very reasonable price made by a giant in the industry who make some of the best gaming mouse available.

IMG_0181

The mouse can connect to your PC using either Bluetooth or the proprietary Logitech Lightspeed wireless connectivity solution that offers super-low latency, equivalent to wired solutions.

The G603 has a toggle switch to switch between HI Performance mode, which offers 1ms response times for gaming and an 8ms response time LO Performance mode for normal desktop usage, which consumes far less power and results in a longer battery life.

The mouse is powered by either one or two AA batteries, which also acts as the mouse’s configurable weight. With a one AA battery, the mouse weighs 112 grams, and with two it weighs 136g.

One of the fantastic features of this mouse is the absolutely amazing battery life it offers, and with two AA batteries installed, the advertised battery life on HI mode is 500 hours and on LO mode 18 months. Part of the reason this amazing battery life can achieved is that the mouse features no RGB lighting, definitely not a mouse for you if RGB is a must.

Here is a technical specification breakdown of the Logitech G603:

G603
Year Released 2017
DPI Adjustable up to 12000dpi
Buttons 6
Connectivity 2.4GHz Lightspeed and Bluetooth
Weight

112.3g with one AA battery

135.7g with two AA batteries

Sensor Logitech Hero
Additional Features

Onboard memory profile

Amazing Battery Life

Battery One or two AA batteries

The G603 is a comfortable larger form factor mouse, most suited for a palm grip style.
Thus far, I have been impressed with its performance and build quality, and it is easy to see why Logitech as gained an excellent reputation for their gaming mice.

UPDATE ON CORSAIR IRONCLAW RGB WIRELESS GAMING MOUSE

IMG_7959

Just a quick update on the IronCLaw Wireless Gaming Mouse I reviewed in July 2019, after just over six months of using the IronClaw as my daily driver mouse and loving it, the mouse wheel unfortunately broke.

After a quick search on the internet, this appears to be a common issue with Corsair mice, and the fact that Corsair must be aware of this design flaw and has done nothing to address this over the numerous iterations of different gaming mice is simply not acceptable.

Until this issue is resolved, I would recommend avoiding Corsair gaming mice for the time being.

REVIEW – LOGITECH G603 LIGHTSPEED WIRELESS GAMING MOUSE

A Tour of Silicon Valley

I recently did a self-tour of Silicon Valley, and as someone who works in the field of technology, it was a fantastic experience.

The first stop of the tour was Apple Park, the Head Quarters for Apple Inc. The only section open to the public is the Visitor Center, which mainly consists of a massive apple store (which was insanely busy as it was 2 days after the iPhone 11 and 11 Pro launched) as well as a sizeable Augmented Reality display of the Apple Park Campus and the famous UFO looking Apple Ring building. This AR display consists of a large model, shown in the photos below, that you can interact with using an iPad Pro which the staff hand out to guests entering the display area. On the iPad Pro graphics are superimposed over the model showing not only a realistic aerial view of the campus but also showing various bits of information relating to the design of the ring building such as how the ring building is designed in a way to take advantage of the environment (wind, etc.) to cool itself in an ecologically friendly manner.

The next stop was the Apple Garage, which is the garage at the house in which Steve Jobs grew up. It is commonly considered the birthplace of Apple. Steve Wozniak (Apple co-founder) has said that this is a bit of a romanticized myth, but it was still great to see.

IMG_9460

Next came the Computer History Museum, a truly amazing museum with items covering the entire history of computers. From the abacus to mainframes and supercomputers to the current day smartphone, the items on display are truly astonishing. Below are some photos and descriptions of some of the items on display.

Numerous Abacuses on display, one of the oldest forms of calculation tools.

A variety of mechanical calculation machines.

IMG_9482

A Curta Calculator, also known as the Pepper Grinder Calculator. One of the most advanced handheld mechanical calculators ever created.

A Selection of IBM Mainframe Equipment.

IMG_9510

A model of ENIAC, the world’s first general-purpose computer.

IMG_9536

A Selection of Fortran Programming Books and Promotional Material.

A PDP-1 Display, Spacewar! one of the first video games ever was programmed on and ran on the PDP-1.

IMG_9551

A 486 DX motherboard.

A display showing the advancement of transistors, microprocessors, silicon wafers, and Moore’s Law.

Various Robots on display. Including expensive toys, industrial robots, and research robots.

Numerous bizarre and unusual computer peripherals on display.

Video and computer gaming displays, with various consoles and games on display.

Apple I, Apple II, Apple Lisa, and Original Macintosh computers.

IBM PC Model 5150 and an Altair 8800.

IMG_9663

A boxed copy of Windows 1.0.

IMG_9667

The NeXTcube workstation from NeXt Computers. NeXt computers were founded by Steve Jobs after leaving Apple in 1985, and Next Computers were acquired by Apple when Steve Jobs rejoined Apple in 1997. The NeXTStep Operating system became the foundation for Mac OSX.

IMG_9671

Waymo Self-Driving Car.

IMG_9673

A scale model of the Mars Rover.

World of Warcraft exhibition.

An exhibition showing the rise of MP3s and the rise and fall of Napster.

The next stop after the Computer History Museum was the Googleplex, the massive headquarters of Google. The Googleplex, which is mostly open to the public, has various significant things to see, such as the Android Statue Lawn, where retired Android statues representing previous versions of the mobile operating system are on display. From volleyball courts to Massive Statues to vegetable gardens, it is easy to see why the Google Campus has a reputation as the best working environment. Here are a few photos of the Googleplex.

The last stop in Silicon Valley was Stanford University, a University that amongst its alumni has various famous people. Stanford has a beautiful Campus, as can be seen in the photos below.

A Tour of Silicon Valley