Patrick’s development blog

Delete data from hard drive securely

Posted in Computer Science, Security by Patrick on May 10, 2011

It’s common for people to say that it’s necessary to overwrite the hard drive many times before the data becomes unrecoverable. This is however just a myth. The probability of recovering only a single byte is less than 1%, so it’s very unlikely that someone can restore something much bigger like 100 MB.

In other words, overwriting the hard drive many times is just a waste of time. Writing 0:s on the whole hard drive is sufficient and can be done with tools like dd.

More information:


Drawing rectangles SDL

Posted in SDL / OpenGL by Patrick on June 24, 2009

Drawing rectangles can become such a pain in the ass after drawing them a couple of times. I made a helper function that makes this easier.

void FillRect(int x, int y, int w, int h, int color) {
SDL_Rect rect = {x,y,w,h};
SDL_FillRect(screen, &rect, color);

I want to add a 100×150 rectangle at the position (25,25) with the color white.


Great, no more headache and code memorizing.

Getting mouse state in SDL

Posted in SDL / OpenGL by Patrick on June 23, 2009

I’ve decided to finally start a programming project after a very long break. I found the need to use mouse states when creating a Level editor for my RPG because regular events doesn’t really do what I want.

I want to add tiles fast and be able to hold the mouse key down, instead of clicking every time I want to add a tile.

Mouse states

int cx,cy;
Uint8 ms = SDL_GetMouseState(&cx, &cy);
// the left mouse key is pressed
} else if (ms & SDL_BUTTON(SDL_BUTTON_RIGHT)) {
// the right mouse key is pressed

Using the OpenBSD package system

Posted in BSD by Patrick on June 15, 2009

The package system in OpenBSD consists of pre-compiled programs that can be managed with the pkg tool. The packages may not necessarily contain the same kind of security and realibility as the base system, but pkg is useful for installing “third party” software.

1. Create the environment variabel PKG_PATH with the value of the right directory to fetch the packages.
export PKG_PATH=

2. Add this line into the startup file, ~/.profiles so we don’t have to export it every time we use pkg.

Installing a package
pkg_add -i firefox

Removing a package
pkg_delete firefox

Information about installed packages

Mount ntfs drive on Linux

Posted in Linux/GNU by Patrick on April 28, 2009

1. Install ntfs-3g.
2. Create a folder in /media or /mnt (mkdir /media/windows)
3. Use fdisk -l to get the name of the NTFS drive (example: dev/sda1)
4. Add the drive into /etc/fstab so it mounts automatically.

/dev/sda1 /media/windows ntfs-3g defaults 0 0

Using X with SSH

Posted in Linux/GNU by Patrick on April 17, 2009

I was working on the school computers from home trough SSH and needed to use X. Using the “-X” parameter gave me error messages when I used the keyboard mouse if I remember correctly. This worked without any error messages though.

ssh -Y -l user server

Encrypt chat conversations in Pidgin using pidgin-otr

Posted in Articles, Security by Patrick on March 17, 2009

Pidgin is an excellent “chat client” or instant messaging client. I’ve even replaced the MSN client on my Windows system with Pidgin. It’s open source and has support for many different chat networks like MSN, ICQ…

There’s a plugin called pidgin-otr (Off-the-Record messaging) which allows you to encrypt your conversations (assuming the other part also has pidgin-otr installed). Regretfully, people never seems to care about encryption even if they seem to get close to crazy if someone invades their privacy, quite the paradox… Well that’s just another story which i’m not going to post here, as i’m just spreading the word about everything that’s good : )

The Off-the-Record messaging plugin uses public and private keys. It’s very easy to use. Just download the plugin, activate it in the Pidgin add-on menu and generate a key. In the conversation window, a button will appear that makes it easy to toggle encryption on/off.

Download Pidgin from:
Download Pidgin-otr from:

Encrypting mail in Thunderbird using GnuPG and Enigmail

Posted in Articles, Security by Patrick on March 17, 2009

Thunderbird is a mail user agent developed by Mozilla. GnuPG is an encryption program (free software) that uses the standard OpenPGP. This standard is based on encryption using a private and public key. The private key is used to decrypt the data while the public key is used to encrypt the data.

The Thunderbird add-on Enigmail, provides an “back-end” interface to GnuPG so the user can use Thunderbird to encrypt/decrypt mail. After installing Enigmail, generate a keypair. This will create a public and private key for the current account. The public key is meant to be distributed so other people can send mail encrypted to you. The private key however, is important NOT to distribute. Since it is used to encrypt the messages sent to you with your public key. The public key is usually uploaded to a keyserver.

It’s possible to search for public keys on the keyservers and add public keys into a local list and configure Thunderbird to encrypt all messages by default (supposing the public key to the person in question is added into your key list). Both Thunderbird, GnuPG and Enigmail, are very useful indeed : )

For more information about GnuPG and Enigmail:

Compile SDL/OpenGL applications using g++

Posted in SDL / OpenGL by Patrick on February 16, 2009

This is how I compile a C++ program with SDL and the OpenGL libraries GL and GLU.

g++ -o appname opengl.cpp `sdl-config –libs –cflags` -lGL -lGLU

sdl-config –libs –cflags is used to get the library path and include path for SDL. This can be used instead of manually specifying the libraries for SDL.

Burn DVD in Linux using dvd+rw-tools

Posted in Linux/GNU by Patrick on February 11, 2009

Install dvd+rw-tools with your package manager or download it from here. And then invoke the following commands…

Format disc where /dev/dvd is the device name:

dvd+rw-format -force /dev/dvd

Burn the directory (/home/user/stuff) onto the DVD:

growisofs -Z /dev/dvd -R -J /home/user/stuff

More information: