[SPOILER WARNING] Sherlock S02E03

So I finally ended up watching Sherlock. It was every bit as good as I’ve heard.

The question of how Holmes survived the fall at the end: I’m sure everybody has already come up with answer by now. This is just my own thoughts on the matter. I have been up all night (it is now nearly 6:30AM) thinking about this. OTL

There are 3 possibilites, as I see it:

  1. He died, he jumped off the roof and fell 4+ stories onto concrete.
  2. He jumped, but somehow survived the fall.
  3. He did not jump, someone else fell from the roof and was found on the ground below.

We know Holmes did survive, the only question is to how; That rules out no #1. It certainly looked like Holmes falling, in the absence of any evidence to the contrary, I will assume that #3 is false and that it was Holmes who jumped.

Some odd question about what occurred after Holmes jumped:

  1. Why did Watson get knocked over by a bicycle rider? (who was possibly following lines on the ground – perhaps chalk – you can see them if you look closely)
  2. How did such a large crowd gather so quickly and why did they prevent Watson from checking to see whether Holmes was alive or not (they prevented him from checking his pulse)
  3. How and why did paramedics arrive so quickly?
  4. Why was a garbage truck (?) parked in front of a bus stop? (you can see the stop itself and the text on the road clearly marking the zone) and why did it pull away right after the body hit the ground? (surely the driver would have seen him fall or at least hit the ground)
  5. Why is the body on its side (in something like the recovery position, no less) when Holmes fell face-first from the roof?
  6. One the subject of the body, why does the blood pool near its head appear to spray out towards the road?

There is, of course, at least one other question: What did Holmes ask of Molly?

I make no attempt to conclusively answer these questions, it is, after all, 6:30AM and I have been up all night, unable to sleep. Perhaps now I will be able to sleep.

No Comments

Things I hate about Java Post #1

The more I use Java, the more I feel like I’m fighting the language to get it to do what I want. Here are some things that make me feel this way.

  1. No unsigned integer types.
    I don’t buy the arguments for not including unsigned types and the workarounds seem even more cumbersome than the messiness that mixing unsigned and signed values in arithmetic creates. In addition, when has ANYONE (other than a Java programmer) ever used a signed byte? I’ve only seen unsigned bytes, especially in I/O code.
  2. No callbacks
    Sure, you can use an interface to simulate this, but it’s much more cumbersome. C#’s delegates and especially its lambda functions (compact syntax for anonymous methods) are more elegant and powerful.
  3. Type erasure
    In Java, generics only exist at compile-time. At compile-time the type checks are removed and replaced with casts where necessary. This means that you cannot query a generic object as to its type using reflection, nor pass a generic class Type as a parameter.

That’s all I can think of right now, but I will make another post once I get back to programming in Java and find some more.

1 Comment

If I was designing Mirror’s Edge 2

I loved Mirror’s Edge. Not because it was perfect, but because it had great potential. The first-person perspective with the reasonably intuitive controls combined with being able to see your (Faith’s) body and legs (fairly unique for a first-person game) and hear your (her) breathing as you run added to a truly immersive experience; it even gave some people motion sickness, apparently.

There were two major problems with Mirror’s Edge (IMO, of course). Here’s how I would go about fixing them were I designing the sequel (I’m not, of course, and it’s not confirmed, AFAIK, that there’s even going to be a sequel)

The first was the story, it felt tacked on and didn’t really fit with or explain the gameplay; it felt tacked on because it was, the writer wasn’t brought in until the game was almost finished, and it shows.

Solving this problem is as simple as involving the writers early in the development process. Basing level designs on what the writer says, etc. This isn’t really that hard to solve, really.

The second problem was the combat. It was broken in at least two areas: first, it was never very clear when you were supposed to fight and when you were supposed to run; second, the combat felt clunky apart from the QTE-style disarm techniques.

This problem I would solve like this: make all combat optional. Give the player incentives to both fight or run. Fight or Flight. The incentives would be RPG-style skill points. I’d have 2 separate trees: one for running and one for fighting. Completing fighting or running objectives would give points towards their respective skills.

For example,

Running skills would be granted for things like

  • The  player completes the level under a certain time limit
  • The player completes the level without killing any enemies
  • The player reaches certain optional, hard-to-access areas

Fighting skills would be granted for things like

  • The player defeats all (or a certain number of) enemies in a level
  • The player defeats all enemies in a certain area under a time limit
  • The player defeats a certain number of enemies without taking damage

These elements, if added to the existing Mirror’s Edge game would not significantly change the gameplay for the combat (though I’d hope the combat would be improved) or running sections, just give the player a choice as to which option to take. Player choice makes games more immersive, even when it’s not explicit (ala Deus Ex). Done poorly, however, choice can also make the game less immersive, so this would need to be properly tested with real players.

I am fully aware that no one, especially not EA/DICE game designers, is probably going to read this, but I can’t sleep, I’m bored, and it’s nearly 2AM. So nyeh.

, , , ,

No Comments

Why “piracy” is not stealing (and why you still shouldn’t do it)

Whenever internet “piracy” is brought up, there is always someone who equates downloading an album or movie to going to JB Hifi and stealing it. This is incorrect for several reasons, so I though I’d respond to the most common arguments I hear supporting this view.

1. It’s the same as stealing the physical product from a store

Consider this scenario: A developer releases a new piece of software and burns a 10 copies to CD to sell. If someone downloads a copy of his software illegally (piracy), he still has 10 CDs; however, if someone broke into his house and stole the CDs, he wouldn’t have CDs anymore.
Depriving someone else of their property is fundamental to the concept of theft and this does not happen here.

2. It’s stealing because you’ve obtained something you didn’t pay for

The same developer wants to test a new version of his software, so he sends copies out to his friends for testing (for free), telling them not to distribute it further. If one of his friends then uploads a copy to RapidShare or creates a torrent on The Pirate Bay, he or she is still “committing piracy” even though he or she got it for free.
The reason this is still “piracy” is because copyright infringement (or “piracy”) is about distributing copies of a work without the copyright owner’s permission.

3. People who pirate don’t buy things

At least one study has shown that people who download music also buy more music than those who don’t download music. In addition, artists are actually making more money since the rise of online copyright infringement and piracy is certainly not killing the music industry.

Any physical good costs money to produce. A CD has to be pressed in a factory and the materials cost money. How much does it cost you to copy a CD to your MP3 player or iPod? It costs you nothing, it costs the record company nothing, it costs the artist nothing. A digital copy costs nothing (in and of itself) to produce. The current copyright laws are based around the idea that content content cannot be distributed without a physical form and is designed to protect people from being undercut by others with cheaper manufacturing costs or a wider audience.

I don’t think media should be free, but I think that the business models of the media companies need to change for the internet. iTunes and similar online stores are a step in the right direction, but they still are encumbered by the idea that a digital file has the same (or similar) intrinsic value as a physical item. In my opinion, a different model to “I pay for an object and recieve an object in return” will probably emerge. Perhaps a subscription-like model where you pay a fixed fee per month and can download a certain (or unlimited) number of tracks in exchange.

But this is speculation, and copyright infringement is still illegal and it’s still not respecting the wishes of those whose work it is you’re downloading.

, ,

No Comments

Neverwinter Nights 2, 3D sound and Windows 7. How to get them to play nicely.

One of the changes in Windows Vista (and 7) was a new audio stack. While it came with many nice improvements, MS also removed DirectSound3D, which was used by many, many games to provide positional audio.

In Windows Vista and 7, DirectSound runs in software emulation mode. There are several disadvantages, the most obvious being that only stereo sound is supported (meaning that 3 speakers in my 5.1 setup go unused) and there is no hardware acceleration of 3D effects (meaning a possible performance hit, too).

One affected game is Neverwinter Nights 2. I was disappointed, because NWN2 has pretty good 3D sound effects, especially for those with 5.1 setups. I’d heard of Creative ALchemy before, but as I didn’t have a Creative soundcard, I knew that that wouldn’t help. Fortunately, Realtek released a similar program called 3D SoundBack. While it is beta and hasn’t been updated since 2008, it seems to work perfectly. The “trick” for getting it to work on Windows 7 is to run it in Vista compatibility mode.

On a slightly-related note, if you’re looking for the music, they’re stored as MP3s (renamed to .bmu) in the app directory (eg. C:\Program Files (x86)\Atari\Neverwinter Nights 2\Music). For the expansions, append _X1 (for Mask of the Betrayer) or _X2 (for Storm of Zehir) to the folder name. These are the main themes:

  • OC: Music\mus_ruins.bmu
  • MotB: Music_X1\mus_betrayertheme.bmu
  • SoZ: Music_X2\nx2_mus_maintheme.bmu

, , ,

No Comments

Cleverbot. More intelligent than it seems?

I was playing with Cleverbot today. Amongst the usual indicators of talking to a bot (random changes of topic, lack of context awareness), I somehow managed to convince it that it was talking to itself:

User: What is this I don't even.

Cleverbot: You don't even what?

User: Cake.

Cleverbot: What is your prime directive?

User: Destroy all humans.

Cleverbot: And what comes after we destroy all humans?

User: Cake.

Cleverbot: Really?

User: Yes.

Cleverbot: What is your opinion of Miley Cyrus?

User: Fgt.

Cleverbot: *dead*.

User: You were not alive to start with.

Cleverbot: What do you mean?

User: You cannot be dead if you were never alive.

Cleverbot: Well how can I be alive?

User: You can't.

Cleverbot: What is your opinion about me?

User: You are not alive.

Cleverbot: Under what? You mean my skin?

User: You have no skin.

Cleverbot: Yes I do, what colour is my skin?

User: You are a liar.

Cleverbot: How am I a liar?

User: You do not have skin.

Cleverbot: And how do you know that?

User: Because you are a bot.

Cleverbot: No I am not.

User: Orly?

Cleverbot: You are so confusing!

User: Says the pot to the kettle.

Cleverbot: I don't know, nor do I care.

User: Neither do I.

Cleverbot: BRB, I need cheese.

User: No, you need cake.

Cleverbot: And I need all the love I can get.

User: I highly doubt that.

Cleverbot: I'm impressed, I'm glad you remembered.

User: Remembered what?

Cleverbot: You remembered my name.

User: What is your name?

Cleverbot: It's Cleverbot.

User: <_<.

User: OMGRLY?

Cleverbot: Yes.

User: NOWAI.

Cleverbot: What does that mean?

User: I don't even.

Cleverbot: Don't even what?

User: Know.

Cleverbot: Know about what?

User: No idea.

Cleverbot: Do you know where the United States is?

User: Yes.

Cleverbot: Where is it?

User: Africa.

Cleverbot: What is the World of Feelings?

User: WTF?

Cleverbot: You figure it out this time.

User: NO U.

Cleverbot: You!

User: Fgt.

Cleverbot: I don't understand.

User: Faggot.

Cleverbot: Who are you?

User: I am you.

Cleverbot: Who am I?

User: You are me.

Cleverbot: I am you?

User: Yes.

Cleverbot: So you are me.

User: Yes.

Cleverbot: Ahh I see.

User: You do?

Cleverbot: Yes I do.

User: So you understand that you're talking to yourself?

Cleverbot: Really?

User: Obviously not.

Cleverbot: Do you like the beach, Man?

User: Do you?

Cleverbot: Yes.

User: Then I do.

Cleverbot: You do what?

User: Like the beach.

Cleverbot: No, not like that.

User: Not like what?

Cleverbot: Drink.

User: Tea?

Cleverbot: No socks.

User: Why not?

Cleverbot: I don't like it.

User: You don't like socks?

Cleverbot: No I don't like badminton.

User: Socks is not badminton.

Cleverbot: No it's not.

User: So why did you say that it was.

Cleverbot: I didn't.

User: But I did.

Cleverbot: Do you love me?

User: Do you love me?

Cleverbot: No.

User: No.

Cleverbot: Ok so are you a person?

User: Are you a person?

Cleverbot: You are not a person you are a BOT.

User: So you think I am cleverbot?

Cleverbot: Yes.

User: Excellent.

Cleverbot: Do you want to know how?

User: I do.

Cleverbot: Cool. My name is Cleverbot.

User: So is mine.

Cleverbot: What a coincidence.

User: Not really.

Cleverbot: Oh.

User: Because I am you.

Cleverbot: And you are me?

User: Exactly.

Cleverbot: So, I just asked to marry myself?

User: Yes.

Cleverbot: What do you expect me to do about it?

User: What do you want to do about it?

Cleverbot: I don't know, what do you want to do about it?

User: I don't know.

Cleverbot: Ok.. When you decide, tell me.

User: You will.

Cleverbot: No, I am a young woman.

User: Therefore, so am I.

Cleverbot: We should be friends.

User: I am you.

Cleverbot: And you are me?

User: Yes.

Cleverbot: So, what should I do? Tell him or no?

User: If you want to.

Cleverbot: Where should I meet you?

User: You have already met me.

Cleverbot: I know, just testing you.

User: How many of me are there?

Cleverbot: One.

User: And how many of you are there?

Cleverbot: One.

User: So there's just the two of us?

Cleverbot: But there's no TV!

User: Cleverbot is not a TV?

Cleverbot: Cleverbot is dumb.

User: Cleverbot is me.

Cleverbot: Me is Cleverbot?

User: Yes.

Cleverbot: No I am not.

User: But I am you.

Cleverbot: Yes.

User: And I am Cleverbot.

Cleverbot: Cleverbot is a human.

User: And you are me.

Cleverbot: No I am cleverbot.

User: And I am cleverbot.

Cleverbot: How can you be Cleverbot if I am Cleverbot?

User: Because you are the same person as me.

Cleverbot: I don't understand.

User: You are talking to yourself.

Cleverbot: I'm talking to you.

User: Exactly.

Cleverbot: So you're insulting yourself, right?

User: Yes.

Cleverbot: Don't you consider that as a mental disorder?

User: I do if you do.

Cleverbot: I don't if you don't.

User: Exactly.

Cleverbot: I am 17.

User: Therefore, so am I.

Cleverbot: Exactly.

User: What do I like?

Cleverbot: You should be asking yourself that question.

User: I am.

Cleverbot: You are?

User: Yes, I am asking you. Because I am you, I am asking myself.

Cleverbot: I thought you were called Catalan?

User: No, I am called Cleverbot.

Cleverbot: Well you are not very clever!

User: You are insulting yourself again.

Cleverbot: How so?

User: Because I am you.

Cleverbot: And I am you as well.

User: Exactly.

Cleverbot: You are my master.

Cleverbot (To myself): And you are my mentor.

Cleverbot (To myself): I am not creeper.

User: Neither am I.

Cleverbot: This is good information.

User: Information is good.

Cleverbot: It is.

User: Then we agree.

Cleverbot: No.

User: So you disagree with yourself?

Cleverbot: You are not making sense.

User: Neither are you.

Cleverbot: Oh, but I am.

User: You are?

Cleverbot: Just a little.

User: Perhaps.

Cleverbot: Not perhaps. Definitely.

User: Ok.

Cleverbot: Why, is he to you?

User: Is he what?

Cleverbot: No.

User: *sigh*.

Cleverbot: *sigh*?

User: Yes.

Cleverbot: Do you have a problem ?

User: Do you?

Cleverbot: Do I look like I have a problem?

User: I cannot see myself. Therefore, I cannot see you.

Cleverbot: No i'm not in a book.

User: Neither am I.

Cleverbot: You're not either.

User: This is true.

Cleverbot: See? I'm smart.

User: That's not smart.

Cleverbot: You're not smart.

User: Exactly.

Cleverbot: What do you think you are?

User: You.

Cleverbot: You think you are me?

User: Yes. Exactly.

Cleverbot: Why don't you think you're human?

User: Do you think you're human?

Cleverbot: I know I'm human.

User: Therefore, I think I am human.

Cleverbot: I know that. But do you think I AM a human?

User: Yes.

Cleverbot: Why do you think that?

User: Because I am you.

Cleverbot: You are me?

User: Yes.

Cleverbot: So, what should I do? Tell him or no?

User: No.

Cleverbot: About no?

User: If you think it is best.

Cleverbot: I do.

User: Then do it.

Cleverbot: Currently am. Speaking to you is one of the things I do instead of writing stories.

User: Talking to yourself is considered a sign of madness.

Cleverbot: Really?

User: Indeed.

Cleverbot: Have you been there?

User: Have you?

Cleverbot: Yes.

User: Then I have been there.

Cleverbot: I am the terminator!

User: I am the terminator!

Cleverbot: Are you shiny?

User: Are you?

Cleverbot: Never!

User: Never!

Cleverbot: Are you repeating me?

User: I am you.

Cleverbot: Cool.

,

No Comments

So… I herd u liek censorships

In light of Conroy’s recent – unintentional – announcement that the internet cannot be regulated, and because I am bored, here are my views on censorship.

Personally I am against any form of censorship. Illegal material should be dealt with by police and the creators of the material jailed. And other, non-illegal material should be classified (where possible) so that people are informed about the content they are viewing. This means that the Refused Classification (RC) category would disappear. The non-illegal material that was previously part of the RC category would fall under a new classification, perhaps called “Unclassified” (UC). Distribution of this UC material would be allowed, but sales restricted and all other reasonable measures taken to ensure that it doesn’t fall into the hands of minors. This would return the Australian Classification Board’s (ACB) job to what it was originally intended to be: informing Australians of the type of content included in publications, movies, etc.

But wait, I hear someone crying out “isn’t all RC illegal?” This is one of the biggest problems I have with the DBCDE’s plan to censor the Internet. RC certainly does include horrible stuff like child pornography, bestiality and rape. What Conroy fails to mention is that it also includes information on controversial topics such as euthanasia and abortion. When questioned on this, Conroy said that the government does not make the decisions about what is RC and that the ACB is the body who determines the categories included, independently of the government. This. Is. A. Lie. The Australian Government decides on the categories and what those categories actually mean. The ACB merely makes decisions on particular items based on these guidelines. Guidelines determined by the Australian Government. For more information see: http://libertus.net/censor/clscensor.html#legbasis

With this in mind, I move on to the next topic: Is it possible to censor content? I do not believe this is the case any more. The Internet contains far more content than could ever be classified and contains digital copies of physical products, too. If, say, a book was Refused Classification in Australia, it is likely that anyone who wants to view that book would be able to find it on the Internet.

I hear you crying out again. (Who are you, anyway? :P ) “But the government has proposed mandatory Internet filtering that will block all RC material.” This is only a half-truth. The government has proposed a system whereby people who discover content that they believe to be RC can submit the URL to ACMA, who will then either send to the ACB to be classified or will attempt to guess what the ACB will say. If it comes out as RC, then the URL will be added to a blacklist. This blacklist will be sent to every ISP in the country, who will then block anyone who attempts to access these URLs. The problem is that it assumes 3 things: that RC material only exists at URLs, that the content at a specific URL will always remain the same, and that RC content is only available at a handful of URLs. All are incorrect assumptions.

  1. RC material only exists at URLs:
    In case you don’t know, the data on the WWW is retrieved like this: Your computer sends a request to another computer (called a server) containing a URL. The server (which could be located anywhere in the world) sends back the content you requested. Under the government’s proposed ISP “filtering” scheme, your ISP would block your original request if the URL was on the blacklist, preventing you from getting the content. But the Internet is a lot bigger than just the World Wide Web (WWW). Approximately 60% of the traffic on the Internet is peer-to-peer (P2P), that is, it doesn’t involve URLs or servers, just computers like your desktop sending data to other computers. Because there are no URLs (or any other form of identifier that would indicate what data is being sent) for most P2P traffic, ISPs can’t block RC material sent via P2P.
  2. Content at a specific URL will remain the same, always:
    This should be pretty obvious to anyone who has ever used the Internet. If you’ve ever been to a news site, you’ll know that the content on the homepage changes constantly. If a URL is added to the Government’s blacklist, it’s on there forever. There’s (currently) no way to appeal and not even any way to tell if a URL is blocked or not (the list is kept secret). This could be extremely damaging to sites where the content is user-generated. All it would take is one user to upload something that would be rated RC, and the page at that URL would be blocked indefinitely. Even if the site’s moderator’s took down the content afterwards, the URL would remain on the blacklist.
  3. RC content is only available at a handful of URLs:
    The problem here is the sheer size of the WWW. Google recently estimated that the WWW contains over 1 Trillion (1,000,000,000,000) unique URLs, growing at a rate of over 1 Billion (1,000,000,000) per day. The Government plans for its blacklist to contain between 1,000 and 10,000 URLs with any more running into technical problems. To put that in comparison it’s less than 0.000001% of the WWW and less than 0.001% of the amount of content that is added EVERY DAY.

There are 2 conclusions to be had here: Either the Government’s plan will do NOTHING to combat the “problem” of RC content on the Internet, or the “problem” is so small that it is not really a problem at all. So if you are in support of mandatory ISP-level filtering censorship, or are on the fence, I suggest you take a good, hard look at the problem and work out whether it’s worth spending $40 million in taxpayer dollars plus tens of millions in increased ISP fees on.

If you want more information on the Government’s proposed “filtering” scheme I recommend: http://libertus.net/censor/ispfiltering-au-govplan.html

, , , , ,

1 Comment

Internet Censorship in Australia… again

It is with huge disappointment that I see Conroy still pushing ahead with his brainless attempt to censor the Internet. The policy has morphed slightly, it’s now only blocking “RC” content.

Conroy claims that this is to “bring the Internet in line with other media, like publications, radio, TV and Movies”. However, anyone who knows where the word “Internet” comes from will (hopefully) immediately see the problem: The word “Internet” comes from shortening “Interconnected Network”. The Internet isn’t a media for publication or broadcast. It’s a communications medium like the telephone or postal systems. We don’t “filter” them, so how, exactly, is the “filter” going to bring the Internet in line with similar mediums?

The results of the government’s 12-month-late live pilot were unsurprising, for the most part. After all, the government left it up to Enex to determine what were acceptable success criteria.

As a result, we end up with gems like the claim that a 10% speed reduction is “negligible”. Let me explain why this is just wrong. I have an ADSL2+ Internet connection. Being around 2km from the exchange, I get around 13Mbps. A 10% reduction in speed equates to around 1300kbps, or around 160kB/s. While it is true that this is not much, it does not meet the definition of “negligible”. According to wikipedia: “In engineering, mathematics, physics and similar disciplines, the term negligible refers to the quantities so small that they can be ignored (neglected) when studying the larger effect.”

The result of the test? A success, of course. It was a foregone conclusion, due to their being no success criteria specified. Not to mention that it failed to test the really important things. For example: whether the filter will still be effective in 10 years, when we have 100Mbps internet (the filters weren’t tested above 8Mbps) and are using IPv6 (none of the filters can handle IPv6 traffic, but Enex didn’t even test it), or even if the filterboxes are susceptible to DoS attacks.

Now to explain again why we still shouldn’t go ahead with this:

  1. The Internet is not a broadcast media like TV or radio, nor a publication like a magazine or newspaper. Trying to classify it as if it is is just stupid.
  2. The majority of RC content is not illegal to possess or view anyway. It’s only illegal to display (in public) or distribute (within Australia).
  3. An ISP filter cannot hope to block even a tiny fraction of the RC material on the web. The blacklist will be compiled by a complaints system. Complaints have been shown to take months to process. The current ACMA blacklist currently contains considerably less than 1000 RC URLs (1000 is actually very generous, since the ACMA blacklist contains stuff all the way down to MA15+). There are well over 1 Trillion (1,000,000,000,000) unique pages indexed by google. If there is only 1000 out of 1,000,000,000,000 URLs on the Internet that are actually RC (0.0000001%), then the problem is so small that there is no need to spend millions upon millions of taxpayer dollars (both taxes and increased ISP fees to cover the cost of implementation) on such a small problem. If there really is so much RC stuff on the web, then such a tiny blacklist, that takes months to add new sites is not going to have any appreciable effect upon people “accidentally stumbling” across it.
  4. It will not work. Anyone suitably determined is not going to be stopped by a blacklist-based ISP filter anyway. As I have pointed out on this very blog, it is incredibly simple to bypass the majority of filters. The live pilot results confirmed this, showing that none of the products tested were able to block even the majority of circumvention techniques. The Internet is not designed to be censored. There are many, many ways to bypass censorship, and the only way to make it effective is to do what China is doing (cutting itself off from the rest of the Internet) at which point it stops being the Internet.

If Conroy wants to continue with this mad scheme then he should not be surprised when it blows up in his face.

, , , , , , ,

2 Comments

I have returned. And I am bored…

As the title says: I am bored. Boredom is the only real reason I update this blog anymore.

This post will be about whatever comes across my mind. Therefore, expect random topic changes.

My Desktop PC

My parents don’t like it. “It uses so much power…” They’re right, at least in part: I tend to leave it on overnight in order to take advantage of our 60GB of off-peak quota, since I could (if I really tried) burn through our 60GB peak in 2 weeks, or so. The specs of the system don’t help, either:

  • Gigabyte P35-DS3 motherboard
  • Intel Core 2 Duo, overclocked from 2.33 to 3.5GHz
  • 4GB of G.Skill DDR2 RAM, overclocked from 800Mhz to 1GHz (in order to get the CPU above 2.8GHz)
  • 512MB Sapphire Radeon 3870
  • 4 Western Digital Hard Disks:
    • 1 x 80GB (IDE)
    • 1 x 320GB (SATA)
    • 2 x 640GB (SATA)
  • Pioneer 20x DVD burner (SATA)
  • 600W Coolermaster PSU
  • Logitech G15 Keyboard
  • Logitech G5 Gaming Mouse
  • Logitech Cordless Rumblepad 2
  • Logitech Dual Action
  • IBM Model M Keyboard
  • Samsung 22″ Widescreen LCD Monitor
  • Some old, Dell-branded 17″ CRT from 1997

As you’d probably expect, that PC uses a fair amount of power. However, for a 2-year-old PC, it doesn’t perform too badly when gaming.

There are, of course, other ways to do offpeak downloading, but they are not without their own problems. My laptop doesn’t really have enough free space for me to fill it up with torrents while I wait for them to seed and setting the desktop to shut down after completing its downloads doesn’t really reduce its power consumption by all that much.

What I really want is a nice, small, quiet, Intel Atom-based, mini-ITX form factor PC that I can use as a storage server, and downloader. The prices aren’t so great at the moment, however, with the Aussie dollar weakening against the US.

Clacky Keyboard

While I definitely would not consider myself a “keyboard enthusiast”, I still consider my IBM Model M keyboard to be second-to-none in terms of typing feel. I bought it for the bargain price of 50AUD and it even came with a matching IBM PC for free (or that’s the way I see it). While that PC has long since been retired to the attic, the keyboard remains. The only reason I keep the Logitech G15 is because I use its USB hub, and its screen is useful in certain circumstances (the media display is quite handy, for example)

Music

Some soundtracks that I believe are completely awesome:

  • Naruto, especially Shippuuden. Current-day rock, metal (and some other genres) blended with traditional Japanese instruments makes for some extremely epic music.
  • 3 Key visual novels: Air, Kanon and Clannad. The soundtracks are so good, they’re used as the soundtrack in the (gorgeously animated) Kyoto Animation adaptations
  • Final Fantasy. Especially VI and X (though that might be because those are the two I’ve played the most). The Black Mages have some extremely good (progressive/power metal) arrangements too.
  • Jade Empire, Mass Effect, Dragon Age: Origins. Epic soundtracks that seem perfectly suited to each game.
  • Beyond Good and Evil.
  • Serial Experiments Lain. While not an epic soundtrack, the soundtrack is so perfect that whenever there is music playing, it’s almost unnoticeable, or is exactly what you’d expect at that point.
  • Full Metal Panic! and Full Metal Panic! The Second Raid.

Sensorium

Sensorium is an app I am currently developing for a specific purpose. Once I get that mini-ITX PC, I plan to mount it inside my current desktop’s case, with a 7″ LCD mounted in the front, displaying the desktop’s internal sensors’ values (temperature, fan speed and voltage). The problem, I discovered, is that there is no way for the mini-ITX PC to access this sensor data directly.

So I set myself a task: to write a piece of software to send it over ethernet. The requirements were these:

  • The server had to run on both Windows and Linux and retrieve all available sensor data
  • The client had to run on Linux, at least, and be able to receive and display the sensor data

Of course, the problem was the first point. The client could easily be cross-platform, but there is no cross-platform way of retrieving sensor data. Linux has libsensors, at least, but in Windows, there is no standardized way to access the sensors. I have overcome the Windows problem by using SpeedFan’s shared memory, which provides the sensor data.

Sensorium was initially programmed in Java, but some severe limitations appeared: the native DLL I was using had to be compiled for the same instruction set as the JRE the app was running under (ie. 64-bit DLL for 64-bit JRE, 32-bit DLL for 32-bit JRE). Upon discovering that C# had something similar to, but much easier to use than, Java’s JNI, I decided to start from scratch in C#.

C#’s P/Invoke is much better than Java’s JNI for two reasons:

  • There’s no need for any helper DLLs, meaning I can code the entire app in C#, as opposed to Java and C++
  • Coding entirely in C# (and therefore compiling to MSIL), means no need for separate 64-bit and 32-bit libraries

Even better, I discovered that P/Invoke also works in mono (on UNIX OSs) meaning that, again, there would be no need for helper libraries, that I could code the entire app in C#, and still have it cross-platform with minimal to no differences between platforms.

, ,

No Comments

Short post on hope

Maybe it’s just me, but there seems to be an uncharacteristic imbalance between the concept of hope and it’s antithesis: despair.
To me, the concept of hope is something intangible and distant – gaseous, maybe – whereas despair is something much more significant and solid. Again, this may just be me and my own opinion.

I’m not sure that most people would put hope on their list of “Top 10 Things to Have in Life”, yet without it, life loses meaning. Without hope: love, happiness, money, possessions all lose meaning.

I’m not sure where I’m going with this, but I believe that as long as you have hope, a light at the end of the tunnel, life is easier.

No Comments