Software

Dennis Ritchie, father of Unix and C, Has Passed Away

0

Dennis RitchieDennis Ritchie, creator of the C programming language and co-creator of the Unix operating system, has died aged at the age of 70.

Thank-you for giving us a superior language, and being a pioneer in the age of computing. Rest in peace!

/* for Dennis Ritchie */
#include <stdio.h> 

main() 
{
    printf("Goodbye World");
}

ZD Net Article: http://www.zdnet.com/news/dennis-ritchie-father-of-unix-and-c-dies/6314570

Wiki entry on C: http://en.wikipedia.org/wiki/C_%28programming_language%29 

Telling Git To Ignore File Permissions

0

So, I have been having issues with git and repos. Im still extremely new to git (having used subversion for years) so every once in a while I run into something that makes me want to keep going back to svn. Today was such a day when I discovered that git didn’t like that some of the permissions had changed on the files within my repos.

Most of this problem for me occurs from working on files both in Linux and Windows, so its natural that samba will change some of these permissions. So, after reading the manual for a while, I discovered I could issue the following:

git config core.filemode false

This will instruct git to ignore changes to file permissions! Yay! Migraine easing. And according to the git manual:

core.fileMode
    If false, the executable bit differences between the index and the
    working copy are ignored; useful on broken filesystems like FAT.
    See git-update-index(1). True by default.

And there you have it 🙂 Pretty straight forward, and saved me from having to buy more headache pills 🙂

Finally Finished Working On My Amiga A1200

1

AMIIGGGAAHH!I Spent quite a bit of time this weekend working on my Amiga. It has been a few years since I used it for anything other than recording music (for CVGM.net) and thought it was about time I got it working again. For quite a while now I have had the itch to get back into programming on the Amiga, and couldn’t think of a better time. Its also not that often lately that I have a few hours of downtime to actually devote to filling the entire kitchen with old computer stuff 🙂

Over the years as a programmer on the Amiga, I have accumulated a fair amount of Amigas, and also bought a few bits here and there. All my Amiga 1200’s are PAL, and every time I fly home to the UK I always bring one back with me if I can find one. On my trip last year, I was able to find an “Desktop Dynamite” pack for 50 quid, so I threw away a bunch of closes and packed my suitcase with wonderful Amiga goodness instead. The machine I had been using previously had a broken pin on the PCMCIA slot, which seems to be a common thing to break on all my Amiga machines over the years.

Amiga 1200 Catweasel HDThe most useful device I ever bought for my Amiga was my Catweasel A1200, it lets me hook up all kinds of drives to the system, and access them natively. In this modification, I will be replacing the built-in floppy with a PC drive. It will prevent me from booting via floppy disk, but the benefits of being able to read Amiga and PC disks while in Workbench are worth it. I also have a Scandy VGA ScanDoubler device thingy that clips over top of some of the chips in the Amiga and lets me connect it directly to a VGA monitor, though I tend to run into a few problems from time to time with it (it might be because my PAL Amiga doesn’t like it, I bought it in the US so it might be NTSC based) such as the screen flickering green or with a tint of blue. For this particular project, I have decided to leave it out of the system and I will put it back in another time. For now, I will settle for my 1084S and a nice Interlaced screen.

Amiga Hard Drive In The PCThe hardest part about working on the Amiga is getting the hard drive working. By default, the Amiga has a size limit of 4gb. I had bought 2 4Gb IBM HD’s online for $1 through Ebay just for this. Now we had to get them working on the Amiga! This is where UAE comes in. One of the nice new features of the newer UAE is the ability to connect Amiga hard drives natively and use them like a real hard drive, instead of the traditional HDF files. It does however still have some problems. It cannot yet (at the time of writing anyways) partition the drive correctly, so all the partition work must be done on the real Amiga. This was a bit of a ballache for me, as I have every Workbench disk except the Install disk (that contained HDToolbox) so I ended up connecting my A2000HD and using an old version from there, just to get the partitions going. From there, I could connect to the drive to the PC and mount it natively.

To begin with, I tried to copy a version of AmiKit to the drive. The copy process went very well, however I ran into a lot of problems getting it to work on the real Amiga. After a few hours of trying to get it to boot, and never reahing the desktop, I decided to take another approach and instead I went with a more simplified Workbench from ClassicWB (http://classicwb.abime.net/) which only required my OS 3.9 CD. The bare basic programs and tools were installed, which was enough to get me started at this point. I added some more games and demos for WHDLoad, and that’s all I really needed. I also took advantage of being online with UAE, and added the newest Catweasel drivers, and a few other tools.

My Amiga has a wireless Netgear card, and I need to use the prism2.device to get it to connect to the network. Once I get moved into my new place next week, I will get that all set up and working. I tried briefly with the Genesis TCP stack and just couldn’t get it to see the card. Nothing like browsing the web on a 16 colour Amiga Interlaced screen! Oh how modern day kids are spoiled!

Detailed Amiga Specs: Commodore Amiga 1200 (PAL, Personally Purchased From the UK), DKB 1240 & 32Mb RAM (030 & 6882 FPU), Catweasel A1200, 4Gb IBM HD, OS 3.9 w/Boing Bag 1 & 2, ClassicWB Image.

Some Pictures Of Beauty:

rfcpool Bitcoin Miner Status Tool Released

0

This last couple of weeks I have been working on my Bitcoin Miner status API for rfcpool, and finally got around to releasing the first versions of my status tool, I’m glad I’m getting the hang of bitcoin now, thanks to SoFi. The API itself can do more than monitor the status of one mining pool, and in the future it will connect to multiple pools and display the results together in the same window. Originally, it was started when I began working on an alternative to the GUIMiner application, which I hope to finish one day.

Rfcpool Miner status - Main Screen

If you are into BitCoin mining, why not check out rfcpool with their no-fee PPLNS payout system and give the app a whirl 🙂

I have set up a dedicated project page for the app, you can find more detailed information about it HERE.

Creating A New Game & Framework In 30 Days – Piles’o’Tiles for Android/iPhone \o/

0
The Big Arrow - PilesOTiles

Click To Enlarge The Image

It’s been a while since I did any work on my games, which really is a shame as I still play my own games from time to time, and people are still buying them and playing them too. So, I have decided that I would motivate myself with a “New Game In 30 Days” type blogfest, where I port the old game to a brand new format in the space of a month!

The first game I picked to port is my popular Piles’o’Tiles Mahjong game, its been long overdue to be overhauled and is still fairly popular amongst players. On top of porting the game, within the same period of time I plan to develop a re-usable game framework that I will use in all of my games, so after Tiles I can easily jump in and start porting my other games such as Jelly-Othelly, Crazy Crystals and my unreleased WordHunter games. I also have some ideas for a few new games, but need the framework before I put together some experimental test versions, and see how bad the idea sucks when it’s played for real!

The plan is to have tiles in an almost-ready state by the end of the month, and from there I can fix any small issues, tweak a few bits and pieces and then release not too long after, if it even takes that long.

Today is Day 4, and most of the screen switching framework is in place, graphics are loading and being processed accordingly, and most menu/gadget functions are in and working. Once a few little things are fixed, the next steps are to start adding actual game code, such as level rendering and a few other parts critical to testing the rest of the game itself. Once they work, then I can start on the menus and level selectors etc. before finishing with the finer details.

I will keep you posted as to how it progresses, and when I am ready to find some beta testers to take a look at it! The plan is to try and get it released for Android & Desktops at the same time with an iPhone version to follow not too long afterwards. Thanks!

Toshiba L675D And Kubuntu 10.10 Maverick/Lucid No-Boot – SOLVED!

0

I picked up a new laptop last week (L675D-S7015) to replace my failing HP laptop, and one of the first things that I wanted to be able to do on it was install Linux. On the old machine, when it was set to dual boot the Windows part would randomly reboot during startup, which was terribly annoying. So, on this machine I was very frustrated when I went to boot my 10.10 Kubuntu Live CD, and was just presented with a blinking cursor seconds after pushing the Start Kubuntu option from the disk menu!!

After a bit of playing and thinking about the problem, I remembered an issue I had a long time ago on a different Toshiba with ACPI. I did some googling and all I could find on the subject was people trying the ‘nomodeset’ and ‘forcevesa’ modes, which didn’t work in this particular case. I was able to remedy the issue by pushing F6 on the CD menu and select ‘acpi=off’ and then booting. Fired right up!

Once Kubuntu is installed, and you reboot for the first time, you will again experience the same problem. To fix this, we need to make a slight tweak to the Grub boot options. When the Grub menu appears showing your choice of OS, highlight the Linux kernel and push ‘e’ to edit it. If your linux doesn’t show the grub menu, you can hold shift during the beginning of the boot to show it. Scroll down to the part that says ‘quiet splash’ and add ‘acpi=off’ to the end of the string. Push Ctrl+X to boot it. You should find now that you can boot to the linux desktop.

Now we can get it to work, we need to make these changes permanent. Once booted, go to a terminal window and type ‘sudo vi /etc/default/grub’ and just like before, find the GRUB_CMDLINE_LINUX_DEFAULT and add acpi=off to the end, it should then read ‘quiet splash acpi=off’. Save the changes, exit the editor and you MUST run update-grub in order to make them permanent. It re-generates the grub configuration file, and makes the changes permanent.

After this is done, you can reboot to test it, but it should work without you needing to do anything else! You can proceed to install updates and new kernels, and the option will automatically be applied when the kernel is upgraded!

If like me you boot to more than one OS, while you are editing the grub config file you can change which OS is booted by default. Looking at GRUB_DEFAULT which is 0 by default, and will boot the topmost option. Set it to 3, it will boot the 3rd OS in the list. Set it to whichever OS you want to boot if it isnt the default, and dont forget to update-grub! You can also change the GRUB_TIMEOUT value from 10 seconds to anything you please.

I took some crude pictures using my phone of the process. Hope this helps someone else who has been frustrated with this process!

Android Development Finally Taking Shape!!

0

Over the last few weeks, I have been helping my friend Paul port some of his code over to Android. Currently he releases games for PC, Mac, and iPhone and so the move to Android is a good one. Most of my involvement was working on sound, and the C to Java handling code. Lots of stress when digging through the error logs, but it has coming along very nicely! We started the process aiming for an Android 1.6 target, to ensure we can support the most amount of users across all devices.

I have also been tinkering with some of my own Android projects, moreso converting some of the games I have written to work on the new platform. So far its working out well, I have the basis for my framework in and working, and I am hoping to have the first of my games ready in about 2 months. I’ll post more about them here as I get them ready for testing or release.

In the meantime, check out some of Paul’s great games at http://www.shoecakegames.com 🙂

Dual-Booting Kubuntu Alongside Windows 7 Without Wubi – Properly!

0

Windows 7/Kubuntu Dual BootThe hard drive took a major dump in my laptop this weekend, left it backing up some stuff while I went to go see Tron, and when I got home it sounded like a DJ was scratching some kind of new rap tune. Needless to say, the drive was on its way out, but luckily I have been able to recover almost all of my data so far 🙂

After installing a replacement hard drive, I thought it was about time that I put a dedicated linux partition on this system as I have been using Kubuntu to do some Android development (installed via Wubi). While Wubi is nice for messing around, it isn’t the most stable system to be using and I have had a couple of disasters in the past with it messing up my virtual partitions. Wubi also has some known bugs, where after installing inside Windows, you’ll get a message about no root filesystem being defined and that you should fix it in the partition manager. Nice, if you can actually get there to do it!

So, I installed Windows 7, left 40gb of free space intentionally for Kubuntu. After the process of doing all the software installs and updates etc. for Windows I thought that I had better take a shot at installing the Linux side of things. Boy, what a mess 🙂 Firstly, there is something about the partition layout in Windows 7 that GPartEd just cannot see them (even using the GPartEd Live CD, or any LiveCD including Kubuntu). It thinks my hard drive is completely unpartitioned. Not what I was expecting, as I was hoping I could just throw some linux partitions into the free space, and then install. Very confusing 🙂 Adding any changes at this point would erase my new Windows 7 partition instantly.

I remember something a friend told me years ago about partitioning, that he had once used Linux to do the partitioning of his drives for some wierd XP install, as the Windows tools at the time were quite shit, so I figured that to get this to work the way I want it, I should probbably attempt something similar. I didnt really have much to lose (besides sitting through a few hundred megs of Windows Updates) so I went ahead and prepared the partition in GPartEd.

An important thing to remember here is the partition table. You must go into the Partition Table section and create a new ms-dos partition table, otherwise if you don’t it may try and use GPT by default (which won’t work with Windows 7). If you try to install Windows 7 without this partition type change, it will pop up a Warning message when you try to select the partition, and clicking Details will tell you that it cannot install on a GPT partition. So, after this step (which will completely zap your entire drive) I proceeded to create an NTFS partition, leaving 40gb free space for Linux later on. After applying the partition changes, booting the Windows 7 installer and installing windows by selecting the NTFS partition I just created, I was then able to reboot with a KUbuntu LiveCD and work with the free space on the drive correctly! It will even mount the Windows partition (just remember to hit Yes on the option to Unmount it duringi the Kubuntu install). Even grub works well and offers Windows 7 as an option in the boot menu.

When installing Linux with manual partitions, remember to add a swap partition at least 2x the size of the available ram in the machine, and the rest can then be an ext4 partition (that mounts to /) and thats the minimal that Kubuntu will need in order to boot correctly. Grub takes care of the rest of the issues with booting and selection etc. as most of Grub resides in the liunux part.

I am sure that several people have had problems trying to get the dual booting to work correctly, so I hope that this helps at least one human being out there who has struggled with this as long as I have.

Immutable Drives In VirtualBox On Windows

2

I have been playing with VirtualBox for the last day or so now, and I am very pleased with the way that it works so far. Feels snappier to me than VMWare did, but maybe thats just me 🙂

One of the more useful features I found in VirtualBox is immutable hard drives. These are drive images that never change, so to speak. Any data that is written is saved to another drive containing only changes, so if you have lots of VM images for many different projects (like I do) you don’t have to install an OS on each of them; Just make a differencing disk and only make it the size of the changed data (such as programs and updates etc.) Brilliant!

It took me a while to figure out how to make an immutable disk on Windows, as the GUI is not very friendly towards this process. You should start by making a new Virtual Machine with the desired OS (I used Windows for the time being) and create a new hard drive image for it. From that VM, proceed to install Windows as you normally would do, activate it and install all your Windows updates and tools you wish shared to your multiple machines. For me, this is mostly just Windows, all the updates, and Altap Salamander.

Once this process was done, I proceeded to delete all temporary files from the system, a bunch of un-necessary Windows files, and ran a defrag on the drive using PerfectDisk to make sure everything was at it’s peak performance.

In order to make the drive immutable, we have to perform several steps to it. Firstly, I compressed the VDI image to make sure the file was as small as possible. While cloning will do this for us as well (described later) I wanted to keep the original image small in case I needed it for something else in the future. VirtualBox is great in that you can control it via the command line. Open a Command Prompt and change the folder that you installed VirtualBox and run the VBoxManage command with the modifyhd command, followed by the VDI file and the compact command:

This may take a few minutes to complete, but if the file has lots of empty space in it, that will all disappear after the process is complete. Next, we will make a clone of the disk. Again, I chose to do it this way so I could keep the original for something else in the future. Cloning a drive is very simple to do, using the clonehd command and the filename of the source VDI, and a filename of a target VDI. Cloning is an important step, as VirtualBox won’t allow you to use the same VDI file copied to multiple locations, the cloning process changes the internal drive GUID so that the clone can be added as a seperate drive. In VMWare in the past, i’d have huge VMDK files that I would just copy to a new VM and launch from there, which also resulted in much larger files being used than what was actually necessary. I cloned the drive using the following command:

VBoxManage clonehd "Windows XP Pro 32-Bit.vdi" "Windows XP Pro 32-Bit - Immutable.vdi"

Which will produce a new VDI file that we will use with our future VM’s:

If you go back to the Media Manager in VirtualBox, click on Add and add the newly created VDI file to the list of volumes. Everything should match except for the name. The next step is to mark this as an immutable drive, so VirtualBox recognizes it as such. This is done with the modifyhd tag as follows:

VBoxManage modifyhd "Windows XP Pro 32-Bit - Immutable.vdi" --type immutable

And if you refresh your Media Manager folder, you will see that the drive type is now set to immutable:

So, now that we have an immutable drive we should probably try and use it 🙂 To do this, simply go back to the VM management and create a new Virtual Machine for Windows as you did before. Now when you get to the part where it asks about the Hard Drive, choose an existing drive and select the Immutable image, You will notice that it has a blue spot next to it, signifying that it’s immutable:

After the VM is created, click Settings and go to Storage, select the Immutable drive and place a checkmark in the box for differencing. This will cause a new hard disk name to appear. Click OK to accept the changes, then launch the VM. It will boot to the same way as it did before, except its not using the old image. Make sure it boots OK then go ahead and shut down the VM so we can make some changes.

Some Notes About Differencing

Typically, drives that use differencing disks will “forget” the changes made to them once the VM is restarted. This is the case here by default, once you boot with a differencing disk, any changes made will be lost when it shuts down. This protects the original disk, and prevents anything from changing in it. Its always easy to see which VM’s use immutable drives, if you go to the Media Manager there will be an expandable arrow next to the main drive, which contains all the differencing disks from the various VM’s that use that specific immutable drive.

Differencing disks can be changed to allow them to retain their changes after the VM shuts down. In the console, simply run the following command (exchanging the GUID for the one found in your media manager) :

VBoxManage modifyhd cfcb7143-af07-40ff-89b1-c953bfacaebb --autoreset off

The filename should match the GUID and is located in the Virtual Machines folder/{Machine Name}/Snapshots folder. Mine is {cfcb7143-af07-40ff-89b1-c953bfacaebb}.vdi respectively.

After that, any changes written to the disk will remain permanent! I hope this helps someone out there with a similar situation, and that this helps then understand it a little better 🙂

Recent Experiences With VirtualBox – Better Than VMWare :)

0

I would like to thank my friend bpoint for getting me into using VirtualBox instead of VMWare, I am already finding it far more useful and saved considerable amounts of disk space 🙂

VirtualBox is a virtual machine system that allows you to install additional OS’es into virtual machines, including Windows, Linux, and even Mac!

Im sure I will blog about it more when I learn how to use it properly and all that good stuff 🙂

Go to Top
%d bloggers like this: