Forgot your password?
typodupeerror
Games

Journal: Well, that's another game finished then 2

Journal by Stephen Williams

I beat Final Fantasy IV last night.

The final battle took two attempts. I got utterly schooled the first time I attempted it. Before trying again, I levelled my party up five or so more levels (over the course of a couple of sessions), giving me a party with levels between 67 and 72-ish. I also changed my strategy the second time, using three party members to attack and two to heal, instead of having four attackers and only one healer.

The dizzying parallax scrolling effects used during the final battle were very nice, especially considering the age of the game. I don't recall seeing anything like them in FFVI.

In terms of difficulty, I'd rate the final battle about the same as FFIX's, easier than VI's, and slightly harder than VII's. However, I'd rate the game as a whole as the hardest FF I've played so far. The random battles get very difficult very quickly, and the learning curve doesn't get any shallower as the game progresses. Unlike the later FFs, the game is level-driven rather than story-driven. You have to commit time to levelling your party. I tend to be a fairly consciencious leveller-upper in RPGs, but it still came as a shock to the system.

It's my least favourite FF so far. The story was nothing special; the game lacked the certain "something" that made VII, IX and especially VI so wonderful. But it wasn't a bad game, at all. Just not a great one.

I have FFV to tackle at some point. I'll probably play it over Christmas; right now, I have Xenogears to finish.

Music

Journal: Adding up the layers of harmony 4

Journal by Stephen Williams

Got myself a neat little portable MP3 player.

It's very small (smaller than an ordinary cassette case) and light (feels about the same weight as a cassette; heavier with 2 AA batteries in, of course). It came with a USB cable, AC adaptor, and a bizarre set of earphones that I can't figure out how to put on without using a mirror.

I got a 256MB CompactFlash card with it. I'd have liked a 1GB Microdrive, but they're rather expensive. Maybe next year.

Since it's a very new player, the Linux kernel doesn't know about the Nex IIe yet. (Its predecessor, the Nex II, is supported however). When I plugged it into the USB port - nada. So I had a look at the Linux USB device database and picked a CompactFlash reader that's known to work with Linux.

The Linux USB mass storage subsystem makes CompactFlash cards look like SCSI hard disks. So I can mount /dev/sda1 somewhere (I chose /cflash), copy my MP3s to the card, unmount the filesystem, stick the card into the Nex IIe and I'm good to go. Works like a charm.

The player sounds very good, to my ears. I encode my MP3s using LAME with the --r3mix option; the resulting VBR MP3s sound just great to me. (An audiophile with top-of-the-range equipment could doubtless tell the difference; but I'm a normal person, so I can't).

User Journal

Journal: Has it really been a year? 3

Journal by Stephen Williams

It's chryseis' first birthday.

I was wondering whether to consider the 28th or the 29th to be chryseis' birthday. It was assembled late on the September 28th, 2001; but didn't really achieve "consciousness" until the 29th. So with that in mind, I decided it should be the 29th.

Nowadays, most new IA-32 computers are sold with CPUs clocked in excess of 1GHz. Nevertheless, chryseis' CPU, an AMD Duron clocked at "only" 900MHz, still seems ridiculously fast. (And it is).

Mind you, if anyone reading this would like to buy chryseis a birthday present, send a dual-Athlon motherboard to the usual address ;-)

It's funny.  Laugh.

Journal: Wrong number 2

Journal by Stephen Williams

Some confused young lady from Yell called our office today to confirm our listing. The pertinent part of the conversation went something like this:

Her: "Can you confirm that your phone number is [reads number that somewhat resembles ours, but is several digits too short]?"
Me: "No, it's [correct number]."
Her: "Uhm... *checks phone number again* yes, that's what I've got... and can you confirm that you are the Bracknell Bees?"

Uhm, no. The Bracknell Bees is a local ice hockey team.

So, not only did she manage to misread our phone number, making it too short to be a valid phone number for this area, but she thought we were the ice hockey team.

How?!

User Journal

Journal: Second wedding in a month 4

Journal by Stephen Williams

Yup, August would appear to be the month for weddings.

This time, it was the turn of one of my friends from university: nice girl called Hannah, who was marrying an equally nice guy called Keith.

Hannah's family is Roman Catholic, so the wedding was held in the Catholic church where she was baptized as a child. It's a really pretty little village church with a thatched roof. I'd never seen a church quite like it before.

Hannah arrived in a horse-drawn carriage. Classiest entrance ever.

I've never been to a Catholic service before. It was very different from what I'm used to. It was read straight out of an order of service; the priest read the service word-for-word.

The weather kept fine, so there was ample time for photographs after the service. There were a lot of photographs. Standing outside in the sunshine in a jacket and tie got oppressive after a while. Goodness knows how uncomfortable the wedding party were, in their top hats, waistcoats and tailcoats!

My friend Chris gave me a lift from the church to the reception in his sports car. Bombing up the A2 in an open-top Lotus is an experience.

The reception was held at a local mansion house. In the past, it was probably owned by someone with a name like "Marquis St. John-Smythe XIV". Nowadays, it seems to be used exclusively for functions like wedding receptions.

I lost one of my cufflinks, which was bad. But I found it again, which was good.

The meal was very good. The first course was a fish course; there's something disconcerting about having a whole prawn staring up at you from the plate. Tasted good, once I'd figured out how to get into it... The main course was chicken in mushroom sauce; the dessert was strawberries. And the wedding cake was chocolate, not the traditional fruit cake, 'coz Hannah doesn't like fruit cake.

The best man's speech was a bit poor. He took the now all-too-common "let's dredge up a load of anecdotes from the groom's past and embarrass him" route. So poor Keith had to sit there and blush for ten minutes. On top of that, he spoke indistinctly.

A fair few of my friends and I are teetotallers, so we toasted the bride and groom with mineral water.

A book was passed around for the guests to write congratulatory messages to the bride and groom. My friends and I wrote a silly BASIC program that, if typed in and run, would print "CONGRATULATIONS HANNAH AND KEITH" in an infinite loop, and had our names as REM statements. Yup, we're a sad bunch of nerds alright :-)

There was a dance in the evening. (No, I didn't dance. Don't you know me at all?!) Some more friends from uni who just had evening invitations arrived. I hadn't seen some of these people for two years (since the last uni wedding, in fact), and it was really great to see them all again. It took a few seconds for us all to revert to "silly university mode" :-)

At around 22:30, some of us decided to get away from the (very loud) band for a while, so we went out to explore the grounds of the mansion. In the darkness. With only the light of the moon, the security lights, a small torch and the "headlight" on Paula's wheelchair. And then the digital cameras came out. And it all got very silly. Maybe it's best that we only meet up every couple of years :-)

Hannah and Keith departed just after 23:00. They're honeymooning in Egypt. I hope they have a good trip, and are very happy together as husband and wife. They're both Great, and deserve every happiness.

User Journal

Journal: Where am I going? 5

Journal by Stephen Williams

This Slashdot article about careers and goals in life got me thinking.

For a long time, I've thought of myself as a person with no goals; no aims in life. I've never been career minded; it has never made sense to me to define myself by my job, or to make it the focus of my life. I just don't think it's that important.

I don't have a plan for my life. When I left university, I had no idea where I'd be by the time I reached my mid-twenties. Now I'm there, and I have no idea where I'll be when I'm thirty, or forty, or fifty.

There's no plan. There's no roadmap. I'm winging it.

One of the comments attached to the Slashdot article said something along the lines of "imagine your funeral, and imagine what you want all the people there to be saying about you. Then make plans to make it happen". So I began to think about what I want to be remembered for. Almost straight away, some silly tacky cliche popped into my head; something about people remembering me as the most loyal, trustworthy friend they could hope to have had.

It might be silly, and obvious, and not really very adventurous. But, thinking about it, I think it's all I could possibly want out of life; to be the very best friend to as many people as I can possibly be. To make a difference to the people around me; to improve their lives a little bit by being their friend.

Unfortunately, I'm not yet very good at it. I tend to fall into the "sarcastic, bad-tempered computer nerd" archetype far too easily. That's something I need to work on. A lot. I'll be working on it all my life, I think.

My job is just a job. It pays the mortgage, keeps me fed, and pays for a cool gadget or two every now and again. But basically, that's it. It's a means to an end, not an end in itself. It keeps me alive; it isn't the focus of my life.

Spending my life striving to be a better programmer, Linux admin or geek would be a waste. Spending my life striving to serve my friends to the best of my ability is not a waste. That's where I need to be going, I think.

Programming

Journal: Optimizations

Journal by Stephen Williams

A couple of optimizations for the program below:

The last line:
    print("#{buffer}")
contains a completely unnecessary string substitution. Goodness knows why I did that. It can be replaced with:
    print(buffer)

The two buffer.concat() calls halfway down the program can be replaced with a single buffer.concat() using a string sub:
    buffer.concat("#{match[1]}\n")

However, I'm not sure whether it's better to apply that one or not. Two concat()s might be faster than one concat() and a string substitution. I ought to run some tests (e.g. time how long it takes to perform a million of each) to find out.

Programming

Journal: A little program

Journal by Stephen Williams

I have the verse program (included in the Debian GNU/Linux distribution) run automatically every time I log into my computer, so I get a Bible verse every day.

Soon, I'm hoping to obtain a second HDD on which to install FreeBSD. I want to use "verse" under FreeBSD, too. But it's not included in the standard distribution. The sensible thing to do would be to just get the Debian source package and compile the program under FreeBSD; or maybe use the Linux version using FreeBSD's Linux emulation. However, that'd be no fun. So I decided to write my own version of the program, in Ruby.

Here it is. It uses exactly the same verse file as the version that comes with Debian. My version has an extra feature: the verse file can optionally be compressed using gzip.

#!/usr/bin/ruby
#
# @(#) $Id: rverse,v 1.1 2002/08/06 21:37:18 stephen Exp $
#
# Reimplementation of Debian GNU/Linux "verse" command
# Copyright (c) 2002 Stephen Williams.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more
# details, see the GNU General Public License.
# (http://www.fsf.org/licenses/gpl.txt)
#

# Set this to the name of your verse file. It can optionally be gzipped
VERSE_FILE = "/usr/lib/daily.verse"

# Make a string, RMMDD, where MM is the current month and DD the current day
t = Time.now()
prefix = format("R%02d%02d", t.mon(), t.day())

# Open the file and read the lines beginning with the prefix
re = Regexp.new("^#{prefix}(.*)")
buffer = ""
matched_yet = false
# gzip -cqdf sends a file to standard output, decompressing it if it
# is compressed
IO.popen("gzip -cqdf #{VERSE_FILE}") do |file|

    file.each() do |line|

        if match = re.match(line.chomp())
            matched_yet = true
            buffer.concat(match[1])
            buffer.concat("\n")
        else
            # Didn't match, although some lines already have, which must mean
            # that we've passed the end of the verse
            if matched_yet
                break
            end
        end

    end
end

print("#{buffer}")

User Journal

Journal: Family wedding 3

Journal by Stephen Williams

My uncle got married yesterday.

I took Friday off work so I could travel up to my parents' house; then on Saturday morning, we all went to my uncle's together. He's my mother's brother, and lives in the same house they both grew up in, in Cromer, their home town, a seaside town in the east of England. I haven't been there in years. When we got there, I felt rather like Sabin in Final Fantasy VI when he arrived back at Figaro Castle after ten years ("This is just like old times! I have to wander around for a while!"). The place has hardly changed.

My uncle had asked my father to be best man, my mother to do the Bible readings, and my brother and I to be ushers, so we spent some time in the morning going over what we had to do during the various events. My uncle seemed remarkably calm, though he assured us that he didn't feel calm!

It was quite an informal do; no top hats and tailcoats, or any of that nonsense. We weren't all in matching outfits, though there was a common colour scheme: dark jackets and trousers, lilac shirts and ties, and white buttonholes. My mother wore a red trouser suit with a pink buttonhole.

(My uncle has a set of bathroom scales. I stood on them before getting changed. I currently weigh just under 100lb. This can't be healthy).

Being an usher is an easy job at an informal wedding. We just had to greet the guests as they arrived and hand them an order of service. Once everyone had arrived, our duties were over until the end of the service; then we had to make sure the doors were open for the bride and groom to leave through. (After they left, they promptly re-entered because it was raining. The wedding photos had to be taken in the church. Typical British wedding weather, then).

The bride arrived in a vintage chauffeur-driven limousine. She wore a lacy cream-coloured dress, with a lace tiara-thing on her head. She didn't have a veil, or a long train with a platoon of bridesmaids.

Before the service began, a large candle was placed on the communion table at the front of the church, and lit. At the beginning of the service, the minister explained that it represented Christ, and invited the bride and groom to come to the front and light two smaller candles from it, which represented themselves as single people. After they had said their vows, they blew the single candles out, and lit a fourth candle together; that represented themselves as a married couple. Nice touch; never seen that done in a wedding service before.

There were about sixty people there, including the wedding party. Most of the guests were from my mother's side of the family. My maternal grandmother (now sadly passed on; shame, she'd have loved to see her son get married) was from a large family with about twelve siblings; so my mother has a lot of cousins. While the photographs were being taken, she introduced me to some of them. Many of the women share a definite family resemblance: high cheekbones and prominent noses.

(According to one of my mother's cousins, I look like my mother, and share many of her mannerisms. My mother apologised profusely for that! I don't mind; there are far worse people to be compared with).

As the reception began, my brother and I were called upon to perform ushering duties again. This time, we stood with the bride and groom as they received the guests; we had to take the wedding presents from the guests and put them on a table. That enabled the bride and groom to concentrate on talking to their guests without being distracted. We were also to have taken the guests' coats, but no-one had one. (Despite being rainy, it was also warm. Bleagh, humidity, just what we needed).

The reception meal was a buffet; no silly sit-down meal with a gazillion sets of knives and forks or anything. As a member of the wedding party, I was sat at the top table, along with the bride and groom, the minister, the other members of the wedding party, and the bride's sister and her family. There were a few short speeches after the meal; the best man, the bride's father and the groom all spoke.

After the reception, the limousine returned to collect my uncle and his new wife, and then we all went home.

It was a fantastic day. I am so happy for my uncle. He had never expected to get married, but now he has; and his new wife is a lovely person; and they adore each other; and it's just all so great! *enthuses*

User Journal

Journal: My life's goal is accomplished 7

Journal by Stephen Williams

I sometimes hear people say things like "I don't want the world to end until I've graduated", or "I don't want the world to end until I'm married", or "I don't want the world to end until I've had a child".

My equivalent has always been "I don't want the world to end until I have a static IP address".

And now I have one.

Bring on the Apocalypse.

Advertising is the rattling of a stick inside a swill bucket. -- George Orwell

Working...