Google Maps / The Obligatory “Coming Soon” Post.

•30th November, 2009 • 5 Comments

No posts in six months! Tom and I have been slack. We’re off to linux.conf.au (LCA) in New Zealand with a couple of friends in January so we should have plenty to write about then.

I’m currently finishing up my semester of university in Sweden, and will have some musings about that shortly (by “shortly” I mean in the next couple of months.. hopefully).

In the meantime.. Grant may have been photographed by a Google van on Hindley Street in Adelaide, which is both hilarious and upsetting – hilarious for the obvious reasons, but upsetting because this means they could be replacing their current street view images of Australia. And there are some good images on Google Street View, there’s one image in particular that I’m quite fond of and wouldn’t like to see replaced…

Without any further ado, here’s my mother on Google Street View:

Check out that seamless exit from the vehicle. Fantastic.

That’s all for now. Bring on LCA!

Solving ENGN3211 with Minizinc

•25th June, 2009 • 5 Comments

It is compulsory for engineering students at the university I attend to complete an introductory course in economics and accounting (ENGN3211). With exams in full-swing, I’ve been going through the course material for ENGN3211, revising for the exam. After labouriously going through each of the ENGN3211 assignments yesterday, something quite self-evident became apparent: economic type problems are particularly well suited to constraint programming. Having become increasingly interested in constraint programming lately through Jess’ posts on Minizinc, I decided to see how easy it would be to ’solve’ problems from the ENGN3211 assignments by describing them in Minizinc. Continue reading ‘Solving ENGN3211 with Minizinc’

Eight Queens Problem in Minizinc

•22nd June, 2009 • 7 Comments

There’s a few things that I’m really good at, and one of them is procrastination. I can find anything to do that will delay me getting inevitable tasks done. Today it’s because I have an exam tomorrow and still have a lot of studying that I should do for that. I have also been given a research task to do.

Instead of doing either of those tasks, I’ve knocked up a solution to the eight queens problem using the Minizinc constraints programming language. The eight queens problem simply is, how to arrange eight queens on a chessboard so that none of them are in check.

Not sure if it works correctly – did it in about two seconds flat – so bonus points if you can find problems with it.

include "globals.mzn";

array[1..8] of var 1..8: xpos;
array[1..8] of var 1..8: ypos;

%no two queens can have the same xvalue
constraint
    forall (i in 1..8) (
        forall (j in 1..8 where j!=i) (
            xpos[i] != xpos[j]
        )
    );

%no two queens can have the same yvalue
constraint
    forall (i in 1..8) (
        forall (j in 1..8 where j!=i) (
            ypos[i] != ypos[j]
        )
    );

%none on the diagonals
constraint
    forall (i in 1..8) (
        forall (j in 1..8 where j!=i) (
            (xpos[i] - xpos[j] != ypos[i] - ypos[j]) /\
            (xpos[i] - xpos[j] != ypos[j] - ypos[i]) /\
            (xpos[j] - xpos[i] != ypos[i] - ypos[j])
        )
    );

solve satisfy;

output [ "X: " ++ show(xpos[i]) ++ " " ++
         "Y: " ++ show(ypos[i]) ++ "\n" | i in 1..8 ];

The output that I get is:

X: 4 Y: 8
X: 2 Y: 7
X: 7 Y: 6
X: 3 Y: 5
X: 6 Y: 4
X: 8 Y: 3
X: 5 Y: 2
X: 1 Y: 1

Now to find something else to procrastinate with..

Free (To Make Your Own Choices)

•19th June, 2009 • 4 Comments

Firstly, I have to say that I support open source software.

Now, one of my courses at uni this semester is Operating Systems. I don’t mind the course; I realised with slight shock while reading over the lecture slides for the upcoming exam that I actually found most – if not all – of the content of the course quite interesting. I like it.

But, one of the lectures was a bit interesting in another way. Towards the beginning of the course we were given a lecture entitled “System Software”. A very ambiguous title. As it turned out, the aim of this lecture was to convince any proprietary-software-loving folk in the audience that their views were wrong.

The lecture was incredibly biased, here are a spattering of memorable quotes from the lecture, (Module 2 – System Software, Operating Systems, University of South Australia):
Free software is… the freedom to use your computer, the way YOU want, not the way the marketing and legal department wants” (Very colourful words there, yeah, screw the system!)

(Regarding the EULA for Windows XP) “.. you have the right to do not all that much. You are barely allowed to even run it [the operating system]” (Barely allowed to even run it? If you install and run Windows on the average home computer, you are not breaking the EULA – and yes, I have read it).

Most vendors do not give you source code, so you cannot make changes to it or inspect it for security flaws” (Okay, I consider myself a decent programmer, average at the least – and I have never, ever even felt the need to go through the source code of an open source operating system to “inspect it for security flaws”. Who does that? Not me. If that’s one of the reasons to use open source, we must be scraping the bottom of the barrell..)

OS

This is a third year Operating Systems lecture slide. No joke.

There are lots of software engineers out there that do not have a clue, do you trust them with your airplane/life? Someone could put spying tools into the software they give you” (Scare tactics, much?)

Copy protection can stop you from using software you have legally purchased. What if the next version of Windows prevents a hardware dongle from working because there are no drivers. You may need to illegally crack your software to use software you are legally allowed to use!?!?!” (There really was that much punctuation, and the lecture failed to state the actual intent of copy protection).

The cost is free and you are not held to ransom by other companies who seek to control you for your money” (What…? Very colourful words again).

The lecture also gives a run down on Richard Stallman and names him as a visionary. But, of course, there’s no mention of the Steves, or Bill Gates, have they not contributed anything to operating systems over the years? Anything pre-Linux doesn’t exist.

The lecture continues to hammer in the point about free software being amazing, but why is there no mention of any other alternatives? Instead of the colourful words, why not give people some facts and figures, and some info about this horrible, deathly “proprietary software” thing, which is barely mentioned?

I’m all for open source, but I’m also for people being free to make their own decisions.

BASH and Rundle Mall

•12th May, 2009 • Leave a Comment

So… I am going to Adelaide very soon.  On Friday, to be precise.  (I am very excited!)  Searching through tourist information on the city, I came across a publicly accessible web-cam feed for Rundle Mall.  After finding this, I thought to myself “Wouldn’t it be cool if when I was in Adelaide, I got a photo of me and my friends taken by this web-cam.”  Unfortunately, there is a bit of a logistical problem here: How can I save the current web-cam shot when I am standing in Rundle Mall?

Enter BASH scripting.  With a few lines of BASH code, it is possible to save the current web-cam shot at a set interval for an indefinite period.

#!/bin/bash

#A short script to download timed snapshots of a file that undergoes regular updates.

#The url of the file
url="http://www.adelaidecitycouncil.com/netcatapps/webcam/images/rundle.jpg"
#This expression extracts the suffix part of the url from the url
suffixpart=${url##*.}
#The interval at which the file is fetched.
#N.B. Some sites may not take kindly to short intervals.
interval=5s

#Determine which command should be used for downloading given the current platform.
systemname=`uname -s || uname`
case $systemname in
    *Linux)
        cmd="wget $url -O"
        ;;
    *Darwin)
        cmd="curl $url -o"
        ;;
    *)
        cmd="wget $url -O"
        ;;
esac

#Infinite loop that does the downloading.
#The script must manually be interrupted to halt.
while [ 1 ]
do
    datepart=`date "+%H%M%S"`
    $cmd $datepart.$suffixpart
    sleep $interval
done

The URL of the web-cam feed that the script downloads is easily changed by setting url (line 6) to a different URL string.  Changing the interval at which snapshots are taken is similarly simple.  I’ve made an effort to ensure that the script is compatible with a variety of platforms by performing a run-time check but it is likely that the script may not work on platforms other than Darwin (Mac OSX) as this was the testing platform.

Now all that remains is to leave this script running on a friend’s computer with web-access whilst visiting Rundle Mall.  By syncing a watch to the system time on the computer, it will even be possible to know which shots are relevant without viewing all the snapshots individually (as the filename for each snapshot reflects when it was taken).

My Old Console Addiction (Part II)

•24th April, 2009 • Leave a Comment

I have quite a few old game consoles*, but I only want to write about a couple that I really enjoy. The Gameboy Pocket has already been written about, so this is my other favourite out of my old consoles – the Atari 2600!

This 2600 is referred to as a "Vader" console, you can also get another 2600 which is black/gray and looks quite different (but plays the same cartridges, however).

This 2600 is referred to as a "Vader" console, you can also get another 2600 which is black/gray and looks quite different (but plays the same cartridges, however).

This was the first gaming console that I ever played. I’d even go as far as to say that this machine allowed me to play the first video games that I’d ever played – PC, console or otherwise. I believe this Atari 2600 was selling in the early eighties, and I remember playing it when I was around three – five years old in 1990-1992, so it would have been a little outdated when I had it.

Unfortunately, the console that I’ve got now, the one pictured, isn’t the one I played as a kid, but rather just another one that I purchased of the exact same model that I had. The one I had as a kid was taken to a pawn shop to make way for the next console that my family purchased (the Sega Mega Drive, and I do still have that very one)

I had to get my hands on one of these, there’s just something so cool about it to me – and I’m probably one of the only people who get excited about stuff like this – but how cool is it that this was once the best gaming console out? I played this for hours on end the same way that kids today play the PS3, and it seemed really exciting for the time – it’s a piece of gaming history! But even if you don’t think that’s as cool as I do, the games are still pretty wicked. Space Invaders still remains too hard for me, despite me being at least five times the age of when I first played it.

Here’s a shot of the games I have for it at the moment:

Games!

Games: Berzerk, Pacman, Bowling, Space Invaders, Othello, Missile Command, Basketball, Combat, Sprintmaster, Asteroids, River Raid II, Outlaw, Human Cannonball, Indy 500, Freeway, Slot Machine, Seaquest, Asteroids (again), Crystal Castles. And Kung-Fu Master, Summer & Winter Games.

Berzerk remains my favourite game; it’s just a classic running around with a gun shooting mindless robots kind of game. It used to scare me a bit as a kid, but it’s quite fun. It’s also noted as the first video game that someone has died playing (I think two did, actually). Another version of Berzerk on another console (don’t remember which one) was also one of the first (if not, the first) games to have voices in it.

Anyway, that’s enough mindless babbling for now.

*Other consoles I own include Sega Mega Drive II, Super Nintendo, Gameboy Color, Nintendo 64 and GameCube.

Super Mushroom!

•1st April, 2009 • 1 Comment

So, in a feat of amazing procrastination, Grant introducted me to CubeCraft. And the product of that is this Mushroom from Mario!

It's a Super Mushroom from Mario! (If you don't know what it is, get off this blog. Now.)

If you don't know what it is, then you don't belong here.

I should have been sleeping an hour ago, but it was worth it.

My Old Console Addiction (Part I)

•20th March, 2009 • 1 Comment

When I was a kid I had one of the original Gameboys, the big grey one. We only had a few games, I think because we quickly moved onto a Sega Mega Drive and other consoles, and thus didn’t use the Gameboy as much. But I thought it was awesome. Unfortunately, my younger sisters completely screwed that nice old chunky grey one, but I got myself this off ebay just a couple of months ago:

Mah Gameboy

Note the clear plastic still over the screen; no screen scratches!

I always wanted a coloured one when I was younger, instead of that grey one, and I’ve finally got one. The pocket is much more handy than the original one, too; much lighter and easier to hold. With little to no scratches on the actual console, and none on the screen because of the protective plastic, I think I’ll hang on to this for a while – it’s in great condition, and I’m having fun playing games with it. Five games came with the console, and I managed to find one around the house. So the games I have are:

Five of the games came with the console when I bought it, and the game in the top left was one that I found around the house from our old Gameboy

L-R, T-B: Bill and Ted's Excellent Adventure (I found that in our pantry, there's all kinds of crazy stuff in there), Lamborghini American Challenge, Super Mario Land 2: Six Golden Coins, Donkey Kong Land 2, Warioland 2, Yoshi's Cookie.

I know there’s at least another two games around my house, but I can’t find them. I blame my younger siblings for that.

But anyway, I’m so glad I found Bill and Ted’s Excellent Adventure, I used to watch those movies over and over as a kid, and I never owned them, just borrowed them excessively from the local video store (way back when they actually had videos and not dvds, woah). So, of course, I also played Bill and Ted’s Excellent Adventure on Gameboy quite a bit. It didn’t tie in heaps with the movies, but it’s still a decent game – just collect all of the coins in a level and a telephone booth will spawn, go to that and it’ll take you to the next level. Not too bad at all.

My plan is to look around at pawn shops and at Cash Converters around Adelaide in search of some of the cooler games on Gameboy. Some that I would like to get are Paperboy, Lemmings, NBA Jam, and just anything that seems awesome, really.

I don’t think this is the last old console that I’ll get. I also would love to get my hands on the Atari 2600 – the first console I ever played. There’s a few drifting around Ebay so I will try to get my hands on one for some awesome Space Invaders and Frogger action. I also have a Sega Mega Drive and a Super Nintendo. I wouldn’t mind getting a Sega Saturn – I never had one as a kid (I don’t think many people did, it kinda didn’t take off) but I was always a bigger fan of Sega rather than Nintendo so owning one would be awesome.

Thankyou, Ebay, for allowing me to spend my hard earned cash on old consoles.

Fixing Facebook

•15th March, 2009 • 3 Comments

So Facebook is having a bad-hair day.  However, with a little custom CSS, some aspects of the site can be restored to how they were previously.  Most web browsers allow the user to over-ride parts of a site’s style-sheet with those from a user-supplied style-sheet.  For instructions on how to set the user style-sheet for your browser, see User Stylesheets.

Among the changes that are most irksome aesthetically are the rounded corners on thumbnails and the now overly large wall font.  These changes can be negated with the following CSS over-rides:

.UIRoundedImage_Corners{display:none !important;}
.UIIntentionalStory_Message{font-size: 11px !important;}

There are a lot of other changes to Facebook that I find annoying, and when I find the spare-time, I’ll probably find ways to overcome these.  In the mean-time, check-out userstyles.org for more comprehensive user style-sheets.

Hunt The Wumpus

•12th March, 2009 • 1 Comment

Of course, everyone loves a weird text based game implemented in Java, and that’s why I’m pleased to provide Hunt The Wumpus.

It’s a very simple game that I completed in first year uni. Basically, you move around some rooms and try to kill a monster called a wumpus and avoid it and other monsters.

There’s  20 or so rooms and they each connect up to three of the other rooms. For example, from room 0 you can get to rooms 1, 4 and 7. When in a room, if there’s a monster in a joining room, then you’ll get a warning (eg, “I smell a Wumpus”).

There’s three monsters -  a wumpus that’ll eat you as soon as you set foot into the room it’s in, a bottomless pit (maybe not so much of a monster, but still) which you’ll fall into and die if you step into that room, and a Superbat, which will move you to another random room if you enter the room that it’s in – and that random room may be a room with another monster in it! The wumpus also moves around occasionally, you’ll get warnings if it’s moved into another room, too.

You’re armed with two arrows. The goal is to shoot and kill the wumpus by shooting into a connecting room, so for example, shooting into room 1 from room 0, if you think that the wumpus is in that room. You’re supposed to work out which room he’s in from the warnings when he’s in an adjacent room. Shooting him with two arrows gives a better chance of actually killing him than shooting him with just one.

Grab all the class files in a zip from here. The HuntTheWunpus class the one to be run. All files created by me except for the map generator, created by Adam Jenkins. Contact me if you really want the source. I’m a bit hesitant to put it up until I find out for sure if I have the rights to it.

UniSA Course Review (Part I)

•20th February, 2009 • Leave a Comment

So, for some reason I thought it would be a good idea to write a review of all of the courses I’ve done thus far as part of my computer science degree. I promise I’ll try not to be too scathing*.

Programming in Java 1 (COMP 1011)
The first programming course of the degree. It’s kind of a “welcome to computer science, now let’s make programs that track the business of a car hire company!” sort of course. That probably didn’t make sense, so let me put it this way – it’s boring. It doesn’t really get you excited about learning to program, but I guess you have to be patient and get through the fundamental stuff before you start going anything interesting. This course was quite a bit of work, mainly because I did all of the practicals (as they were all for marks, I hate it when they do that), and they were rather time consuming. I do think this course provided a good programming foundation. It can have a 7/10.

Fundamentals of Information Technology (INFT 1016)
This course was a bit of everything – some basic html, some programming theory, number systems (binary, hexidecimal), operating systems. I guess it served as a bit of an introduction, but I can’t say I found it extremely useful. One thing that was useful was the number system stuff – binary addition and subtraction, I hadn’t done those little things and they do crop up from time to time. But besides that.. not very memorable. 5/10 (ooh, so harsh).

Discrete Mathematics (MATH 1043)
This course earned me my lowest grade so far in my degree. We had a great lecturer, but I didn’t like the course – I remember I used to like maths but in recent years, it’s been the opposite. Getting me to do something that I’m not interested in is always a bit of a lost cause. So I didn’t give it the attention that it deserved – a lot of the logic concepts have cropped up again in the sort of research I’ve been doing and I can see that having a really strong knowledge of this stuff would be handy. I’ll give it a 7/10, most of the points were for the awesome lecturer (he was funny, and he kind of looked like Mr Bean).

Communication for Information Systems and Technology (COMM 1053)
The course that everyone in computer science at my university is forced to do. Basically, they get you to write a report in a group and then do a presentation of the content of this report. The tutorials were spent doing short exercises on summarising text and proofreading. I think my tutor was a pirate (no, really, he had an eyepatch and told us about his boat). Incredibly boring course, but you have to do it. 2/10 (yeah, it was that bad).

Programming in Java 2 (COMP 1009)
The obligatory follow up to the first Java course. Gets onto some further programming concepts in Java – inheritance, polymorphism, and some data structures such as linked lists and hash tables. It was made more interesting by the fact that we had one of the best lecturers I’ve come across so far – Adam Jenkins (this supports my theory that the more facial hair a lecturer has, the better they are – come on, it works for programming courses). 9/10 (could have had a 10 if he marked our assignments on time).

Foundations of Computing (COMP 1035)
The title doesn’t give much away, but it’s actually a course about computation; Turing machines, automata, parsers, languages, and a touch of petri nets. Quite theoretical, but I found it.. kind of fun (shh, don’t tell anyone). Oh, and it gets bonus points for the guy who fell asleep in the lecture, and made the lecturer end the lecture early because he wouldn’t wake up and he was snoring. Excellent stuff. 9.5/10.

Data Modelling and Database Design (INFS 2004)
Serves as an introduction to databases, involved designing databases as domain models and implementing them in Oracle. Also A LOT of SQL queries, all by hand. I dislike databases quite a bit – they’re not as bad as networking, but they’re getting there. Even so, I didn’t mind this course too much. 6/10.

User Interfaces (INFT 1004)
Exactly what the course title says – we handcoded a UI in Java swing (using the gridbag layout, it was a bit painful). We went through an analysis and design process where the requirements for the UI were elicited from the client, and written up in a document, and then it was implemented with a minimal backend, just the UI was coded, and it had to show navigation. Besides the arty farty documentation part, it was quite decent. 8/10.

Requirements Engineering N (COMP 2028)
A little bit arty farty (yes, I do like that term), but I think this is a useful course nonetheless. If not for anything else, then because it serves as an introduction to formal methods (which seems like all I will be getting in this degree – they don’t run the formal methods course at my university anymore). I often wonder what the ‘N’ is there for. I mean, what could it possibly be there for? It can still have 7/10, despite the weird name.

Objects and Algorithms in C++ (COMP 2012)
I think that everyone who wants to be a decent programmer has to do a course on data structures and algorithms, it’s an important course that’s proved useful in a lot of other applications.. but it’s hard. It’s in C++ and this was my introduction to the language. The assignments were on or above the level that we had been taught of Java – except I hadn’t already done a year of courses in C++ as I had done in Java. Especially with that lovely assignment at the end, which turned out to be a big recursive mess. Thanks for that. 7/10.

Network Fundamentals (INFT 1012)
Networking is worse than maths. No one seems to understand why I dislike it, and I don’t really either. I guess I’m a bit skeptical of it because I feel that I don’t need to know things in as much detail as networking courses tend to go into (why do I need to know how RIP passes packets through a network?). You should have seen the slides for the course, there was barely any information on them. And what does that mean? Well, try revising for an exam using those, it’s not easy. But hey, I really like programming, I guess networking just isn’t my area. 3/10.

Project Management for Software Engineering (COMP 2008)
The “you’re getting towards the end of your degree and now have to develop some decent software in a group” kind of course. Myself and three others designed and implemented a program that would animate three recursive algorithms (a knight’s tour, 8 queens and towers of hanoi) in Java, using the Java 2D drawing tools. And then we tested it, a lot. I’m glad that I finally got to do something that resembled a proper working program with a UI and backend. The course also contained a lot of tutorials on project management type stuff – precedence networks, metrics, etc. Not too bad. 8/10.

Object-Oriented Software Engineering (COMP 2006)
I actually enjoyed this course although no one else seemed to. It’s a course that’s centred around modelling OO systems in UML, and touches on some of the more common design patterns. Anything programming is alright with me. 8/10.

Information Security (INFS 2016)
Not one of my favourite courses, and here’s why:

  • it was hideously outdated (eg, we learnt about different “types” of firewalls, with different features – when these days you get a firewall and it’ll just have all of those features, no one refers to the different types.
  • it was not technical at all.
  • it was quite badly run. There was even a lecture one week when no lecturer turned up. Nice.

Honestly, it was a waste of a course, and if I had the time again I would have picked something different, or I would have possibly enquired about going straight into “Computer and Network Security”, for which this course is a prerequisite. At least that course seemed to have some content. 1/10.

Database Technology (INFS 2011)
Quite a detailed course on databases. Contained a continuation of the earlier databases course with some more complex SQL (triggers, distributed transactions, etc) and a mixture of other things – XML, XQuery, fragmentation of databases, and a lot of technical stuff about DBMS’s, like cold and warm restarts. Databases isn’t an area of interest for me but I found this course okay. Nothing that I’d get excited about, but I don’t think it’s a waste of time learning about this stuff. 6/10.

So there you go, hopefully this has been vaguely interesting.

*this is possibly a lie.

XKCD’s Knapsack Problem in Minizinc

•10th February, 2009 • 1 Comment

Here’s my implementation of the knapsack problem described in the XKCD comic (pictured below) using the Minizinc constraint programming language.

npcompleteha0

http://xkcd.com/287/

 % XKCD Knapsack Problem in Minizinc
 % Model created by Jess T
 %

int: maxPossibilities = 7;
int: numberOfAppetizers = 6;

% an array of floats is not supported, hence why i have used ints
array[1..numberOfAppetizers] of int: apps = [215, 275, 335, 355, 420, 580];
array[1..maxPossibilities] of var 0..580: finalArray;

constraint
    forall (i in 1..maxPossibilities) (
    finalArray[i] == 0 \/
    finalArray[i] == apps[1] \/
    finalArray[i] == apps[2] \/
    finalArray[i] == apps[3] \/
    finalArray[i] == apps[4] \/
    finalArray[i] == apps[5] \/
    finalArray[i] == apps[6]
);

constraint
    (sum(i in 1..maxPossibilities) (finalArray[i])) == 1505;

solve satisfy;

finalArray = [355, 215, 0, 0, 0, 355, 580]
or Hot Wings ($3.55) + Mixed Fruit ($2.15) + Hot Wings ($3.55) + Sampler Plate ($5.80) = $15.05.

A Flower-box of Sorts

•9th February, 2009 • Leave a Comment

A proper introduction and updated ‘About’ page will be forthcoming.  In the mean-time, just know this: I am a Software Engineering student and a new contributor will soon enough make her debut on this blog.

We just wanted to get the ball rolling with a few posts first.  The scope of topics that we will cover will probably be quite broad.

Fixing a Mac Classic II (Part II)

•9th February, 2009 • 1 Comment

Ok.  So apparently washing a logic board isn’t as crazy as it sounds.  The Mac now boots.  Although, it is still unusable as the keyboard is in pieces and a suitable mouse is nowhere to be found.  I was expecting to run into other show-stoppers along the lines of a broken disk or OS install but funnily enough it boots.  The sounding of the start-up charm is down-right startling when you’re half expecting the machine to blow up in your face.

This really wasnt expected... but ok?

This really wasn't expected... but ok?

Some progress has been made on painting everything but, unfortunately, the spray paint has run out.  Also, there are some unsightly areas where the paint has gone blotchy or been accidentally scratched before dry.  Hopefully, by sanding back these areas and repainting them, things will look better.

The keys are very shiny and too smooth.  Typing on them will feel weird.  Notice the unsightly scratch on the space-bar.

The keys are very shiny and too smooth. Typing on them will feel weird. Notice the unsightly scratch on the space-bar.

The finish actually looks better than expected but the case really could have been painted more skilfully.  Notice the blotches and drips.

The finish actually looks better than expected but the case really could have been painted more skilfully. Notice the blotches and drips.

The keyboard casing has actually turned out quite nicely but still requires a second coat.  Notice the key status LEDs will no longer be visible.

The keyboard casing has actually turned out quite nicely but still requires a second coat. Notice the key status LEDs will no longer be visible.

Fixing a Mac Classic II (Part I)

•8th February, 2009 • Leave a Comment

This will be the first of a series of posts that follows the transformation of an old, broken Mac Classic II that was found on a junk-pile at work into something both gaudy and functional.  Currently, the machine does not boot.  Instead garbled, black-and-white vertical bars are displayed and the machine does not issue the nominal start-up chime.  After a quick look on the web, it was discovered that the likely cause of this problem was a build-up of residue on the logic board that had been leaking from the ageing capacitors.  The solution suggested on various forums is to remove this residue by washing the board in warm water with detergent.  To do this, the machine first had to be disassembled, which proved challenging in itself.

Holding the chassis together were 4 security screws in addition to the usual plastic clips.  Two of these screws are down long narrow holes, which makes accessing them with standard security tools impossible.  To overcome this problem, a more specialised tool (in a pack of 4) was purchased from Dick Smith for $20 AUD.  Unfortunately, the handle on this tool was too large and contact with the chassis prevented the end of the tool reaching the head of the screw.  This was fixed by cutting the handle with a hack-saw.

Notice the straight edge on the handle of the tool, this is because some of the handle has been cut off.  To the right of the tool is a pen torch.  This is essential for lighting the long narrow hole.

Notice the straight edge on the handle of the tool, this is because some of the handle has been cut off. To the right of the tool is a pen torch. This is essential for lighting the long narrow hole.

After disassembling the chassis, it became possible to access the logic board.  Indeed, a thin film had built-up around the contacts of a few of the chips, which meant that the seemingly crazy idea of washing the board was entirely necessary.  The clock battery and RAM modules were removed from the board and then it was washed for half an hour in warm water with detergent, dried and then rinsed in plain old water for half an hour.  The meddling residue was a bit more stubborn than expected and had to be removed with the aid of a spare toothbrush.  It is recommended to wait at least 2 days after going through this process of washing the board before powering it up again.  As such, the board is still drying and it is not known whether washing it has fixed it or possibly ruined it.

This felt daring.  Hopefully the board will still be functional when it is dry.

This felt daring. Hopefully the board will still be functional when it is dry.

Whilst the logic board was out of the chassis, the voltage on the clock battery was also checked and the battery was found to be dead.  The battery was quite uncommon: 1/2 AA at 3.6V.  Nevertheless, a replacement battery was procured from Dick Smith for $14 AUD.

The battery on the left is the old, dead battery.  The battery on the right is the new, over-priced battery.  Above, is the RAM.  None of these components were connected to the board whilst it was being washed.

The battery on the left is the old, dead battery. The battery on the right is the new, over-priced battery. Above, is the RAM.

Dismantling the case would also provide an opportunity to make some cosmetic changes.  A coat of white, high-gloss enamel spray-paint was in order.  This was purchased at $8 AUD per can from MagnetMart.  The finish and colour was chosen to match my MacBook.  So far, only the back part of the chassis has been painted.  In some parts, the coat of paint went a bit drippy and dried lumpy.  I guess this could be corrected by sanding back where it is lumpy before a second coat is applied.

NB. it is dreary looking.  Lets fix that!

NB. it is dreary looking. Let's fix that!

The keyboard that is intended for use with the Mac was incredibly dirty when it was found on the junk-pile but was disassembled and washed.  It is much cleaner now and whilst it is disassembled, I shall paint it to match the Mac.

This man would surely have died if he had seen how dirty the keyboard was prior to being washed.

This man would surely have died if he had seen how dirty the keyboard was prior to being washed.

This is what a keyboard looks like when it is balding... and in the possession of someone who types violently.

This is what a keyboard looks like when it is balding... and in the possession of someone who types violently.