UCTRONICS SMART ROBOT CAR KIT

uctronrobot

The UCTRONICS Smart Robot Car Kit is an easy to build obstacle avoidance robot kit that also allows for direct user control of the robot through either Infrared (using the included remote control) or Bluetooth (an Android App is available on the Google Play Store).

This is a great starter kit as no soldering is required and additionally there is a lot of space on the robot chassis for customization and additions later on. Assembly instructions are provided in full color and takes the builder through the assembly process in a step-by-step manner, which is easy to follow.
A prebuilt Arduino sketch is available for download from the UCTRONICS website to make the assembled robot functional, however nothing prevents the builder from writing their own. This is however one area where I do feel the kit falls short as an educational tool, instead of just providing a prebuilt sketch, it would have been great if a step-by-step guide was provided taking the builder through the process of writing their own sketch, explaining concepts and what is being done and why along the way.
This is however still a great starter kit and I would recommend it for anyone getting started in robotics or Arduino related building.

UCTRONICS SMART ROBOT CAR KIT

BOOK REVIEW – BLOOD, SWEAT AND PIXELS BY JASON SCHREIER

bloodsweatpixel

Blood, Sweat and Pixel is a very enjoyable book, containing the stories behind the creation of various video games. It gives the reader insight into how this process is never straight forward nor easy and is rather a perilous journey undertaken by developers out of sheer love for the medium.

The creation process of various video games are covered, from the successful, such as The Witcher 3 and Uncharted 4, to the ill-fated Star Wars 1313.

The book also conveys the sad stories of how many video games outlive the studios that created them, and the reality that very few video game development studios remains afloat in the challenging video game industry.

The reader is also given great insight into the challenges video game developers face, from tight budgets and technological difficulties to dealing with tyrannical publishers. It gives the reader a much greater sense of appreciation for what the developers endure to make their creative visions a reality.

As someone who loves video games and is interested in the development process behind them, I found this book highly entertaining and informative. I struggled to put this book down and would highly recommend it.   

BOOK REVIEW – BLOOD, SWEAT AND PIXELS BY JASON SCHREIER

Nintendo World New York and A Quick Update

I recently had the privilege of a two-week holiday in New York City. During this time I visited Nintendo World (located in the Rockefeller Center) and it was a great experience. There were a lot of amazing displays, showing examples of every Nintendo console ever made and even a Gameboy that was damaged in a bombing during the Gulf war that was still functioning. Here are some photos:

If you are ever in New York, I would recommend going to have a look.

Here are some other photos from the trip:

While there I also picked up a few things that I will be covering on the blog over the next few months:

Nintendo World New York and A Quick Update

Bite Size C# – Eventing\Observer Pattern

Let us have a look at the eventing or observer pattern. This pattern is based on the raising and handling of events. Events are a mechanism for the communication between object that allow us to build loosely coupled applications that can be easily extended.

At a high level this pattern functions as follows:
An object (known as the Publisher) defines a contract (delegate method) to which other objects (knows as Subscribers) must comply in order to be notified of a certain condition occurring in the Publisher object. This is achieved as follows, when a certain state is reached in the Publisher object an event will be raised, which will then trigger all the Subscriber objects to react by executing the method defined within the individual Subscriber objects that matches the delegate method as defined in the Publisher.

Now let us have a look at an example:

First let us create the Publisher, here we have to do three things:
1. Define a delegate which will act as the contract between the Publisher and Subscribers.
2. Define an event based on the delegate.
3. Raise the defined event.

public class KillerRobotPublisher
{
	public delegate void KillerRobotEventHandler(object source, EventArgs args);

	public event KillerRobotEventHandler KillerRobotAction;

	protected virtual void OnKillerRobotAction()
	 {
		if(KillerRobotAction!=null) //check if there are any subscribers
			{
				KillerRobotAction(this,EventArgs.Empty);
			}
	 }

	public void DoKillerRobotAction(string action)
	 {
		Console.WriteLine(“Killer Robot is doing “ +action);
		//add additional action logic here

		OnKillerRobotAction();
	}
}

Next let us create a Subscriber to subscribe to the KillerRobotAction event on the Publisher.

public class KillerRobotSubscriber
{
	public void OnKillerRobotAction(object source, EventArgs args)
     //this method conforms to the delegate defined in the Publisher
	 {
		Console.WriteLine(“The Killer Robot did something!”);
	 }
}

Now lastly let us create a basic application to instantiate the objects and to subscribe the Subscriber to the Publisher:

class Program
{
	static void Main(string[] args)
	{
		var killerRobotPub = new KillerRobotPublisher(); //Instantiate Publisher Object
		var killerRobotSub = new KillerRobotSubscriber(); //Instantiate Subscriber Object 

		killerRobotPub.KillerRobotAction += killerRobotSub.OnKillerRobotAction;
		//Subscribe the KillerRobotSubscriber to the KillerRobotAction event on the KillerRobotPublisher.

		killerRobotPub.DoKillerRobotAction(“A Dance”);
	}
}

The console output of this application will look like this:

console_Output

Bite Size C# – Eventing\Observer Pattern

Review – RAZER MAMBA TOURNAMENT EDITION

Recently my Mad Catz R.A.T. 5 died after several years of great service, so I found myself in the market for a new mouse. After shopping around I decided on the Razer Mamba Tournament Edition as it is a larger form factor mouse which I find more comfortable.

From a feature perspective it measures up against the R.A.T.5 as follows:

R.A.T. 5 Mamba TE
Year Released 2010 2015
DPI Adjustable up to 5600dpi Adjustable up to 16000dpi
Buttons 8 9
Connectivity Wired USB (braided cable) Wired USB (braided cable)
Weight Adjustable up to 150g 133g
Sensor Lazer 5G Lazer
Additional Features Adjustable length, Aluminium Chassis, Removable Thumb Rest RGB (Chroma, configurable)

The Mamba TE does offer a lot less as far as configurability of the mouse’s physical attributes (e.g. weight and length) is concerned, however I do find it extremely comfortable. It is fractionally lighter than the R.A.T. 5 at its heaviest configuration (17g lighter) but in all honesty I cannot feel a meaningful difference. I find that the Mamba TE does feel like a more refined product, which is to be expected with a product 5 years newer.
I loved the R.A.T.5 and I loved that it was built like a tank, however I am really enjoying the feel of the new mouse and it also looks good, especially if you enjoy RGB.

This slideshow requires JavaScript.

Review – RAZER MAMBA TOURNAMENT EDITION

BOOK REVIEW – VIRTUAL REALITY FOR BEGINNERS! by MURRAY RAMIREZ

IMG_3720

Virtual Reality for Beginners! is a basic, but comprehensive introduction to Virtual Reality, covering topics such as the history and development of Virtual Reality, current VR hardware and software, 360° cameras and a basic analysis of the VR industry.

The book goes into a fair amount of detail with regards to currently available VR headsets, covering everything from the Google Cardboard to the Oculus Rift and HTC Vive. It provides a detailed breakdown of each product, giving a good amount of detail on the specifications and features of each as well as available software.  This does provide an interesting read, however because so much focus is placed on current hardware this will result in the book becoming outdated very quickly.

All the information in this book can be sourced online, however I found the book to be an interesting, well written quick read which was also inexpensive. Given this I would still recommend this book to anyone interested in VR, who currently has very limited knowledge on the topic.

BOOK REVIEW – VIRTUAL REALITY FOR BEGINNERS! by MURRAY RAMIREZ

Bite Size C# – Extension Methods

Extension methods allow us to add methods to existing classes without changing the class’ source code, nor by inheriting from the class. Extension methods are more relevant when wanting to add a method to a class from which one cannot inherit, such as sealed classes.
Just note, you cannot use extension methods with a static class as extension methods require an instance variable for an object in order to be utilised.
Let us look at an example, here we will add an extension method to the string class, which is a sealed class (i.e. you cannot inherit from this class).

class Program
{
	static void Main(string[] args)
	{
		string sentence=  “This is something a person would say.”;

		var robotSentence = sentence.ToRobot();
		Console.WriteLine(robotSentence);
	}
}

public static class StringExtensions
{
	public static string ToRobot(this string str)
	{
		if(String.IsNullOrEmpty(str)) return str;
		var words = str.Split(‘ ‘);
		var robotStr = String.Empty;

		foreach(var word in words)
		{
			if(word.Length > 4)
			{
				robotStr+=“BEEP “;
			} else {
				robotStr+=“BOOP ”;
			}
		}

		return robotStr.Trim();
	}
}

Also note that extension methods must be non-generic static methods defined in a static class.

Bite Size C# – Extension Methods