Category Archives: Hardware

Magic Mirror

Apologies this post has taken longer than I expected to get out. Its a bit different from the others as its about a specific project.

I decided to give making the Magic Mirror a go. It was my first (and I expect not my last) DIY project and I must say I really enjoyed doing it. I’ve been wanting to do it for a while but as with many people the first road block instantly made me move onto the next thing to do. Not very productive right?

So this time round when the urge to make it took me I put myself on the spot, I told my fiance I’d make it for her as a gift for her birthday, though I didn’t tell her exactly what it was only that I was making something myself.

So what is the Magic Mirror? If you haven’t checked out the above link I’d recommend you do they can probably explain it better than me. Essentially it’s a mirror that gives you information, be it the time, weather, news headlines, and a lot more. The image below shows my end product :

Magic Mirror

What I needed to make the Magic Mirror was:

  • A Monitor
  • A Raspberry Pi
  • A Frame
  • A Two-way / See through mirror
  • Wood
  • Tools

The Monitor

The monitor I used was Iiyama ProLite E2207WS, mainly because I’ve had it for years and wasn’t doing anything with it.


First thing I needed to do was get the frame off it, which wasn’t as bad as I thought it would be. Was quite worried I’d end up damaging the buttons but it worked out well. You do definitely need to be careful not to damage them as you may not be able to use the monitor if you do.

Monitor – No Frame
Monitor – Buttons

If you don’t have a monitor lying around make sure you get one where the HDMI connector would not be facing the wall. They should be facing towards the floor if the monitor was standing up right. Another useful option for the monitor would be to ensure it has a USB port capable of powering a Raspberry Pi, that way you only need to worry about one cable. Unfortunately for me my monitor did not have a USB port so I have two cables on display.

Raspberry Pi

I think it’s recommended you use the Raspberry Pi 3 to make the Magic Mirror but again I had a Raspberry PI 2 Model B+ lying about the house that I wanted to do something with. So instead of buying a new Raspberry Pi I just used that instead (and now have an excuse to get the Pi 3). There wasn’t really much to this bit to be fair, those behind the Magic Mirror software make it very easy to get things installed and moving, this is what you need to do:

Update OS

Generally its considered best practice to ensure your OS is up to date before you get started.

Install MagicMirror²

Open a bash terminal

Run the following:

bash -c "$(curl -sL"

This will pull down and install everything we need to get the MagicMirror up and running. Once complete you should be presented with the MagicMirror UI.

The next thing you can do is modify the configuration slightly to better suit your needs. For example

  • Update the news feeds to a provider of your choice
  • Update the weather to your location or one you are interested in
  • Update the Calendar to your own
  • You can also add additional modules:
    • For information on this please check out the GitHub page here

Now finally for the Pi we need to make sure the Magic Mirror starts for us on boot. It is recommended to use PM2 for this.

Setting up PM2

First, we need to install it; so run the following from terminal:

sudo npm install -g pm2

Second, we need ensure PM2 starts on boot; run:

pm2 startup

Once that is finished, run the command it shows you.

Next up we need to add a start script for our Magic Mirror, it is recommended to put this script in the Magic Mirror directory (and its just cleaner)

cd ~

If you’re not experienced with ‘vi’ try ‘nano‘ instead. Now we want to add our startup commands

cd ~/MagicMirror
DISPLAY=:0 npm stat

Save and close vi. Ensure script is executable by running:

chmod a+x

Now lets start MagicMirror using PM2; run:

pm2 start

MagicMirror should now start up. Once it does press the super key + tab to navigate back to your terminal and run the following to ensure PM2 starts your MagicMirror on boot.

pm2 save

That’s it, our software side of things is complete next up lets check out the Mirror itself.

The Mirror

The mirror was one of the things that stopped me going forward in the past. I’d spoken to a local Mirror shop and they made it sound like getting the two way sheet/glass was going to be really difficult. Annoyingly if I’d just taken a look on the web I’d have found it. This time round I took to Amazon a tried to hunt something down, luckily I found a seller called Sign Materials Direct who sold something along the lines that I needed.

Unfortunately they didn’t sell it the size I needed as the sheet needs to match the monitor. Luckily, again, however someone had had a similar issue as me and had asked the question about customisation. Turns out they can cut the material to “any shape or size” you need. So I got in touch with them at the email address in the link (who got back to me very quickly) and within a few days I had my custom cut sheet that fit perfectly.

If you’re in the UK I would highly recommend you give them a try, I was really happy with the price and speed.

Also best to add I’m not affiliated with Sign Materials Direct, just a happy customer.

Custom Cut Acrylic Mirror

The Frame

At first I was thinking I might make the frame myself as I was going to have to make a housing unit to put the monitor in and then attach it to the frame anyway. Then I realised, I am neither a carpenter nor an artist and threw that idea a way.

We have a large Mirror in our living room and thought getting a matching frame would look quite good. So off to the local Mirror shop I went again, that’s where the larger mirror came from, and that was a no go as their supplier doesn’t do custom sizes. But moving on anyway I gave the internet a go and found a company who make custom frames and thought they looked really nice. So I got the frame from there.


Now I was a bit worried about was may be I’d measured something wrong or had typed something wrong, made a “school boy error” or one of the pieces didn’t fit right etc. But nope it was all good, the frame and Mirror fit perfectly.

Frame and Mirror

The Wood

The next step was to get some decent wood and cut it to house the monitor and Raspberry Pi. I didn’t have a saw so this was a pretty good excuse to get an over the top tool for the job right?

The wood I used was Redwood planed timber, apparently normally used for door frames. But did the job quite nicely in this instance. Unfortunately I didn’t take any pictures for that part which may have been the most interesting, wood cuttings everywhere and a large circular saw.

Anyway I ended up with a bit more than I needed, mainly because I cut one piece slightly too small so had to go buy some more. Though I’m sure I’ll be needing to cut it for a shelf or something… or to just cut it. So got the wood cut to the right size, screwed the pieces together, and painted the whole thing white. Eventually, once dried, got the housing unit attached to the back of the frame with perhaps a few too many screws than was needed but better safe than sorry right?

One thing I would add if you decided to do this yourself, I can’t imagine the unit would get too hot but I drilled two large(ish) holes into the top of the housing unit to allow some kind of air flow just in case. I’m not planning on leaving it powered on all the time but I would say it’s worth putting the holes there.

On the wall

The final job, getting it on the wall. This step was easier to do than I thought it would be as the wall had a large screw in it already for the Magic Mirror to rest on all I needed to add was something to stabilise it. This was done by adding some 90° hooks to the underside of the Housing unit to give the overall structure more support. I may add some more hooks to the top of the housing unit to make sure but it is certainly well secure now.


Well thanks for sticking all the way through this post. I know it’s not my normal style but I thought I might try adding this as it’s the first project I gave a go and am quite pleased with the results. The fiance really likes it so that’s good.

With all the modules available for the Magic Mirror and no doubt some more really cool ones that will come out the in future I’m going to add to what I’ve got so far. Things like facial recognition, Alexa integration, calendar notifications, and there’s plenty more.

Hopefully you decide to give it a go yourself and if there’s anything I can help with please get in touch.

What is Computer Hardware?

What is Computer Hardware?

I’ve decided to start off with a bit of an introduction into computers for complete beginners and so this will be part of that content. So let’s start with Computer Hardware – Side Note: This is likely to be the only post just about hardware, the next will look at software and continue from there.

The Computer Hardware is the name of the physical components of a computer system, these components can be placed into the following categories:

  • Input
  • Processing
    • CPU
    • Memory
      • Main Memory
      • Secondary Storage
  • Output

Input is the data we provide to the computer, this can be through a variety of means such as, using a mouse, keyboard, microphone, game controller, using touch input (smartphones), or other means including pulling data from a database (if you’re unsure what a database is you can think of it as a digital filing cabinet, we’ll look into then in the future).

The Processing is what the computer does with our data, so using the mouse from the input examples the computer would calculate where the mouse pointer should move to, what key had been pressed (if any), what effects the button press has made, or the action the must be performed on the data from the database (e.g. reading a name from the file)

The output is then the results of the performing some action on the data, again continuing with our previous examples, the mouse pointer moves to the correct location on the  screen, the pressed key is displayed (such as in a text editor), the game view changes in some way (perhaps the player jumped), or the contents of the data from the database is  printed.

In order to perform the above, a computer is made up of two very important parts, the Hardware and the Software (we’ll discuss this in another post).


A normal computer is itself made up of several components:

  1. Central Processing Unit (CPU)
  2. Main Memory or Random Access Memory (RAM)
  3. Secondary Storage Devices (such as Hard drives)
  4. Motherboard
  5. Input peripherals and devices
  6. Output devices


When the computer is performing a task of such as making a calculation, the CPU is actually the part of the computer that is performing this action. Therefore the CPU can be considered, quite crudely, to be the brain of the computer and the most important component.

The job of the CPU can be explained as follows:

  1. Fetch
    1. The CPU retrieves an instruction from RAM which contains the next action to perform for a program.
  2. Decode
    1. The instruction to execute has been stored in the form of a number, in order to perform its action the number must be decoded into an electrical signal
  3. Execute
    1.  The electrical signal is then passed onto the correct component to perform the operation, this could be the Arithmetic Logic Unit (performs the arithmetic computations) or the disk drive (to load some data).

** Fun Fact **: The original predecessors to modern computers where huge devices that weighed tons. They were primarily vacuum tubes and switches made up of electrical and mechanical components. Although they were extremely large by today’s standards they were not very powerful. An example can be found with

Electronic Numerical Integrator And Computer (ENIAC) was created in 1946 by John Eckert and John Mauchly and were capable of performing about 5000 addition calculations a  second vs a modern smartphone can perform billions per seconds.


While the CPU can be thought of as the ‘brain’ of the computer, the RAM (or Main Memory) is the memory (as the name suggests) of the computer. This is where active work is currently being stored, for example, any executing (running) program will be held in RAM, this includes any data the program is working with. RAM is also very quick, this is a huge benefit and along with many other improvements is very noticeable by how fast modern PCs run.

RAM is a volatile memory type, that means it does not continue to store its data once the computer is turned off. This is unlike Secondary memory or secondary storage, described later.

Interestingly, it is called Random Access Memory because it enables the CPU to quickly access the data stored at any random location, hence the Random Access name.

RAM is divided into small storage locations called bytes, a single byte is large enough to contain a small number or character. Modern RAM “Sticks”, a stick is just one RAM module, work in the billions of bytes. For example, a standard 4GB stick is 4294967296 bytes, huge right? Of course, this is again another example of great improvements in the world.

Each byte can be further divided into small storage items called bits (binary digit), there are 8 bits to a byte. A bit can be thought of as a tiny switch (much like your light switch) and so can be in one of two positions, on and off. In modern computers however they are not actual switches (at least not like your light switch but the understanding is easily transferable). So a bit can be thought of as being on or off or being one of two values a 0 or a 1, which is called binary. Bytes have their own unique address and is identified by that address, in a similar way postal addresses work.

Secondary Storage

Secondary storage is non-volatile memory, this means that the data stored on the disk continues even after the machine has been turned off. Programs that we install on our computers are stored in secondary storage, such as text editors, browsers, streaming services, and the apps we install. It is quite a bit slower than RAM but still very quick in its own right.

There are a few common secondary storage devices, Hard Disk Drives (HDDs), Solid State Drives (SSDs), Compact Disks (CDs), Universal Serial Bus (USB) drive, and many others.

  • HDD:  Works by storing data magnetically onto a disk.
  • SSD: Uses semi-conductor chips, for those of you who are keen on RAM chips the SSD chips are non-volatile and the data stays put without power.
  • CD:  Stores data in microscopic holes called ‘pits’ and ‘lands’, these pits and lands are read using a laser and are turned into an electrical pulse which is recognised as 0s and 1s
  • USB Drive:  Also uses chips to store data. These are small and very cheap.
  • Additional
    • External HDD: The same as HDD except these devices are connected, normally through USB, to the “outside” of the computer and can be moved between different  computers quite easily

Input Devices

In order for a computer to be able to do anything useful we must provide it with input, how this input is provided varies wildly, from using a mouse or keyboard or input from a database or a file on the computer.

Essentially any device that collects information from the ‘outside’ world and provides it to the computer is considered an input device. As mentioned, a mouse or keyboard are perfect examples but also consider the USB drive that provides us with data stored on it. Additionally, temperature reading devices or the components in modern phones such as accelerometers and gyroscopes are input devices.

Output Devices

As the name suggests output is any information provided by the computer to the outside world can be considered output, printed documents, Graphical User Interface (GUI) on a monitor, flashing LED, audio through speakers or headphones, cooling fan, data saved to external memory such as external HDD, USB devices, and CDs.


Hopefully, this hasn’t been too much information for you and you get the general idea of what a computer is and what each part of the computer does. Not all parts mentioned here are needed and there are some parts left off but this gives you a good starting point. I won’t concentrate too much on Hardware specifically but wanted to give an overview before I got into the areas I’m more interested in, which is Software and the next post is coming soon…

I welcome feedback, especially at this very early stage, so any improvements you think I can make please get in touch either in a comment below or send me a message and I’ll get back to you.