Char Pointers in C

The Code:

I decided to write a quick bit of code to reinforce my understanding of char pointers in C; especially Char** as I recently confused myself. Firstly lets get straight to the code as it is the best way to learn. The code comments should explain what each line is doing however additional explanation of the steps is provided further down the page.

Read more…

Please share πŸ™‚

Weather Station using Raspberry Pi & Arduino


This post will be extensive so will be separated into 3 parts to make it easier to write and read. I have spent the last couple of months developing a weather station; both for the fun of it and to improve my understanding of the C programming language. The weather station will perform quite a few tasks. It comes in 3 separate bits; several remote sensors that transmit their temperature, location and battery status over an RF link, a receiver module that receives the data over the RF link and the raspberry pi main station which talks over I2C to the receiver unit to get the data. The raspberry pi then processes this information to display on an LCD screen. It has five buttons; one switches between all remote sensors and it’s self, 2nd switches between the data&time, IP address and WiFi signal strength, 3rd switches between Celsius and Fahrenheit, 4th turns the display backlight on/off and 5th safely turns the raspberry pi off. All of the code is written in C, both the raspberry pi and arduino.

Read more…

Please share πŸ™‚

Arduino: Using C to write 7 Segment 4 Bit Display Driver

I have started re-learning C using the “C Head First Book” after doing it at university a number of years ago and decided to purchase an Ardunio (Well Genunio as I am not in the USA). The first lab in the book was to create a moisture sensor for detecting if a plant needed watering and write the output to the serial port to display on the PC. I purchased quite a few components from Banggood including this 4 bit 7 segment display. I found some driver code via the bang good forums which worked but decided to write my own as I wasn’t a fan of how it was written. It is also far better to write it from scratch if you want to learn exactly how it works and not just pass variables into a pre-defined function.

How the 7 segment display works

The banggood display module has two 74HC595 shift registers on the back which controls the individual led segments on the display. A shift register is simply put a way of expanding the pins of a micro-controller, this means the display only needs 3 input PINS. The display is a 4 bit display because it has four blocks of 7 segments (excluding the dot). The schematic diagram I found for the display shows which pins of shift registers control which segments on the display. The display segments are labelled using letters A-G and DP. The below image shows which letters correspond to which segment.

Read more…

Please share πŸ™‚

Get Android Notifications Gnome Desktop Linux

LinConnect, Great way for Android Notifications to appear in Gnome

I have recently discovered a new application which sends notifications to the Linux notification system via LibNotify. It is beautifully simple and quite useful, incoming calls etc are all sent to the Gnome 3 notification area. Surprisingly so are system notifications such as the GPS chip being accessed so I noticed how often Google SearchΒ was accessing it.

I installed this in Arch Linux, the AUR is out of date so I did it manually for now. Just install the following:

  • python2
  • python-pip
  • python-gobject
  • cherrypy (python package)
  • pybonjour (python package)

Make a directory and cd to that directory. Then execute this (Don’t need root):

Once it has installed it will start itself however it requires you to leave the terminal open you executed the commands so either logout and login for it to start in the background as it inserted itself into the start programs or run this:

Here is an example notification:

Notification Text from LinConnect
Notification Text from LinConnect

Android Client:

Play Store Application


All this information was sourced from the developers GitHub page. This is a very useful application and wanted to spread the word πŸ™‚

GitHub – Hauckwill

Please share πŸ™‚

Install Kolab Mail Server on Ubuntu

This post will show you how to install Kolab mail server on ubuntu 14.04, in this example on a DigitalOcean VPS.Β  Kolab’s recipient policy will be removed because I do not need guaranteed unique email addresses, secondary alias addresses setup etc. DKIM is another important factor when configuring a mail server as it allows other mail servers to validate the authenticity of you emails. There are many useful plugins available for roundcube such as integration with Google Authenticator app. For sources see the reference section at the end.

Install Kolab

The first step is to install Kolab on the VPS. Add the following to /etc/apt/sources.list.d/kolab.list using nano or similar.

We need to import the authentication key to validate the packages. Run these commands.

To make sure the Ubuntu server priorities the packages from the Kolab repository we need to create a preferences file. Create and put the following in /etc/apt/preferences.d/kolab:

Setup Kolab

Read more…

Please share πŸ™‚

Caesar Cipher Decryption Tool in Java

One of my university modules tasked me with developing a Caesar cipher decryption tool. The tool had to be able to decrypt any encrypted text without knowing the offset used to encrypt the text. The code is surprisingly short and I am not aware of any other Java examples.Β  The code was originally developed with a command line interface however I have ported it to run on a tomcat server.

To tool is available here: CCDT and the text file mentioned below is from Practical Cryptography

Read more…

Please share πŸ™‚