Got one of these in the letter box on the weekend:
Can you see it? Oh. It's a bit small. Here's a close up:
Wait. What? Oh. So that's why I could never see the kingdom. It's over there, beyond the sparkley fountains of milk and honey in... in... HAD.
Seriously? It's the primary quote on the pamphlet for Cthulhus name.
The thing that grabs peoples attention.
And you got it wrong?
I did try google maps by the way. Gave up after a bit because it was boring. And stupid.
Mainly because of the semi-useless word "HAD."
The results where quite humorous and gave results focused on Israeli restaurants in:
Ash Sharqiyah, Oman
A possible I suppose.
Al Anbar, Iraq
Hmm. Seems to stretch the idea a bit don't you think?
And surprisingly:
Casper, WY, United States
Yeah. Real place. Loads of Israeli restaurants there according to Google.
Although I would hazard a guess and say that this kingdom is not likely to be at the Ramada Plaza Riverside Hotel and Convention Center unless they prefer the decor.
And the big question is, why Israeli?
I'm babbling.
"Random Acts" is a blog about things of interest, software, technology, religion (or the lack of it), politics and philosophy
Tuesday, 30 April 2013
Monday, 22 April 2013
Displaying a summary of Apache2 access logs by country using Ruby
Recently I had a case where a site was being hammered by script kiddies.
Nothing compromised I might add.
First off I limited access to the site by country (Australia in this case).
Note I wasn't blocking countries, but blocking all countries except Australia.
Then I wanted to get a summary of the Apache2 access log to see where these annoying little herberts where from.
An Apache2 access log entry looks something like this:
Now where was that access from?
So I knocked up a *very* simple ruby script to get that data.
The code below is 100% inelegant.
It's not meant to be elegant.
It's meant to illustrate the point.
A 'real' script would have much better coding and options for dates and ranges.
Output for today would look something like this:
As you can see, pretty basic.
The principal rows show the IP address, accesses, successes, failures, IP-Value and country.
First off you need a Ip-To-Country list.
In a prior post I mentioned getting zone range files.
So go to http://software77.net/geo-ip/ and get the full list.
The file will have a lot of useful comments at the top.
Make a copy of the file excluding the comments as IpToCountry.csv.
You should see a file roughly 126,000 lines long where each line looks something like this:
The fields are 'Address From', 'Address To', 'Registrar', 'Date Assigned', 'Country2', 'Country3', 'Country'.
And now the ruby code.
First the requires:
Since we are using *BRUTE FORCE* and not bothering to be elegant, we simply read the csv file into an array of hashes.
The first pass now reads the access log into a hash of hashes:
I have eschewed elegance here for brute force and clarity.
So. Now we have everything we need.
Now we traverse the data dumping the report out:
And you have your report.
Nothing compromised I might add.
First off I limited access to the site by country (Australia in this case).
Note I wasn't blocking countries, but blocking all countries except Australia.
Then I wanted to get a summary of the Apache2 access log to see where these annoying little herberts where from.
An Apache2 access log entry looks something like this:
180.76.5.62 - - [22/Apr/2013:12:19:46 +1000] "GET /index.php?title=User:Coombayah HTTP/1.1" 403 409 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
Now where was that access from?
So I knocked up a *very* simple ruby script to get that data.
The code below is 100% inelegant.
It's not meant to be elegant.
It's meant to illustrate the point.
A 'real' script would have much better coding and options for dates and ranges.
Output for today would look something like this:
2013-04-22 - 128
119.63.193.131 2 0 2 2000667011 Japan
119.63.193.132 2 0 2 2000667012 Japan
123.125.71.112 2 0 2 2071807856 China
123.125.71.74 2 0 2 2071807818 China
176.31.9.218 4 0 4 2954824154 France
192.80.187.162 4 0 4 3226516386 United States
216.152.250.163 4 0 4 3633904291 United States
216.152.250.187 4 0 4 3633904315 United States
218.30.103.31 2 0 2 3659425567 China
220.181.108.155 2 0 2 3702877339 China
46.246.60.177 7 0 7 787889329 Sweden
46.28.64.213 25 0 25 773603541 Ukraine
66.249.74.135 10 0 10 1123633799 United States
IPs with 1 access and failure: ["119.63.193.195", "119.63.193.196", "123.125.71.107",
"123.125.71.113", "123.125.71.69", "123.125.71.72", "123.125.71.75", "123.125.71.76",
"123.125.71.83", "123.125.71.91", "173.255.217.233", "180.76.5.10", "180.76.5.15",
"180.76.5.162", "180.76.5.62", "180.76.5.7", "180.76.6.227", "202.46.48.27",
"202.46.61.34", "220.181.108.143", "220.181.108.147", "220.181.108.148",
"220.181.108.158", "220.181.108.159", "220.181.108.161", "220.181.108.162",
"220.181.108.178", "220.181.108.181", "220.181.108.183", "220.181.108.186",
"42.98.185.25", "46.161.41.24", "78.46.250.165", "80.93.217.42", "85.216.108.89"]
As you can see, pretty basic.
The principal rows show the IP address, accesses, successes, failures, IP-Value and country.
First off you need a Ip-To-Country list.
In a prior post I mentioned getting zone range files.
So go to http://software77.net/geo-ip/ and get the full list.
The file will have a lot of useful comments at the top.
Make a copy of the file excluding the comments as IpToCountry.csv.
You should see a file roughly 126,000 lines long where each line looks something like this:
"16777216","16777471","apnic","1313020800","AU","AUS","Australia"
The fields are 'Address From', 'Address To', 'Registrar', 'Date Assigned', 'Country2', 'Country3', 'Country'.
And now the ruby code.
First the requires:
require 'date'
require 'csv'
Since we are using *BRUTE FORCE* and not bothering to be elegant, we simply read the csv file into an array of hashes.
printf "Loading Ip to Country map\n"
ip_to_country = []
CSV.foreach('IpToCountry.csv') do |row|
ip_to_country << { :from => row[0].to_i, :to => row[1].to_i, :country => row[6] }
end
The first pass now reads the access log into a hash of hashes:
unique_days = {}
f = File.new('logs/access.log', 'r')
while (line = f.gets)
ip,tmp,tmp,dt,offset,verb,url,http,rcode,sz,tmp,browser = line.split
d = DateTime.strptime( "#{dt} #{offset}", "[%d/%b/%Y:%H:%M:%S %Z]")
date = d.strftime("%Y-%m-%d")
if ! unique_days.has_key? date
unique_days[date] = { :ip => {}, :total => 0 }
else
if ! unique_days[date][:ip].has_key? ip
unique_days[date][:ip][ip] = { :total => 0, :succeeded => 0, :failed => 0 }
end
unique_days[date][:ip][ip][:total] += 1
if rcode == '200'
unique_days[date][:ip][ip][:succeeded] += 1
else
unique_days[date][:ip][ip][:failed] += 1
end
unique_days[date][:total] += 1
end
end
f.close
I have eschewed elegance here for brute force and clarity.
So. Now we have everything we need.
Now we traverse the data dumping the report out:
unique_days.each do |date,h|
printf "#{date} - #{h[:total]}\n"
only_one_failed = []
h[:ip].sort.map do |k,data|
octets = k.split('.')
if data[:total] == 1 && data[:failed] == 1
only_one_failed << k
next
end
ip_value = (octets[0].to_i * 256 * 256 * 256) + (octets[1].to_i * 256 * 256) + (octets[2].to_i * 256) + (octets[3].to_i)
country = 'Unknown'
ip_to_country.each do |row|
if ip_value >= row[:from] && ip_value <= row[:to]
country = row[:country]
break
end
end
printf " %-16s %4d %4d %4d %10d %s\n", k, data[:total], data[:succeeded], data[:failed], ip_value, country
end
printf " IPs with 1 access and failure: #{only_one_failed}\n"
end
And you have your report.
Configuring an Apache2 instance to only allow access from a specific set of countries
Ok. This is pretty simple, but I'm documenting it here for myself.
The issue arose for me when one of our test servers started getting hammered by script kiddies from China and so on.
They didn't get in, but that wasn't the point.
The point was that the web site was for Australian users only.
Now to short circuit any comments I can say:
1) The solution had to work for several frameworks (Elgg, Joomla, etc)
2) I wasn't redirecting traffic to a special page
3) I wanted to black all access except Australian IPv4 ranges
I could have gone to MaxMind or its ilk, but that would make '1' problematic.
The first step was to locate a *correct* and *regularly updated* list of CIDR and range formatted IPv4 list.
I tried several including http://www.ipdeny.com/ipblocks/ with no luck.
Most have gaps in their lists because they use 'official' sources.
And ISP ranges are not always covered in those lists.
Eventually I found http://software77.net/geo-ip/
I downloaded the zone and CIDR lists for the countries I was interested in.
Then I modified the /etc/apache2/sites-available/my-site.something.com file to look like this:
<caveat>
Abbreviated for this post. :-)
</caveat>
Then in the /home/my-user/my-site/site/.htaccess file I added the following to the bottom:
The block from under the 'Deny from all' to the end is the CIDR formatted file for a country.
You have to add the 'Allow from ' in front of the address, but if you use vi that's trivial.
If you want to allow another country access, then simply add the CIDR formatted file below the first.
Then I ran '/etc/init.d/apache2 reload' and all is well.
IMPORTANT NOTE: Things change. You have to check for additions and deletions on the CIDR files on a regular basis - say, once a month to ensure that you .htaccess file is up to date.
Some readers may have noticed that I suggest downloading the zone files as well.
This is to allow you to read your apache logs and see which country that access came from.
I will be posting another entry soon that shows how to do that in Ruby.
The issue arose for me when one of our test servers started getting hammered by script kiddies from China and so on.
They didn't get in, but that wasn't the point.
The point was that the web site was for Australian users only.
Now to short circuit any comments I can say:
1) The solution had to work for several frameworks (Elgg, Joomla, etc)
2) I wasn't redirecting traffic to a special page
3) I wanted to black all access except Australian IPv4 ranges
I could have gone to MaxMind or its ilk, but that would make '1' problematic.
The first step was to locate a *correct* and *regularly updated* list of CIDR and range formatted IPv4 list.
I tried several including http://www.ipdeny.com/ipblocks/ with no luck.
Most have gaps in their lists because they use 'official' sources.
And ISP ranges are not always covered in those lists.
Eventually I found http://software77.net/geo-ip/
I downloaded the zone and CIDR lists for the countries I was interested in.
Then I modified the /etc/apache2/sites-available/my-site.something.com file to look like this:
<caveat>
Abbreviated for this post. :-)
</caveat>
<VirtualHost *:80>
ServerAdmin my.email@my.email.service.com
ServerName my-site.something.com
ServerSignature Off
DocumentRoot /home/my-user/my-site/site
LogLevel warn
ErrorLog /home/my-user/my-site/logs/error.log
CustomLog /home/my-user/my-site/logs/access.log combined
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory /home/my-user/my-site/site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Deny,Allow
# See .htaccess for country limiting
</Directory>
</VirtualHost>
Then in the /home/my-user/my-site/site/.htaccess file I added the following to the bottom:
<Limit GET HEAD POST>
Order Deny,Allow
Deny from all
# Report generated on Mon Apr 22 01:02:36 2013
# by http://software77.net/geo-ip/
# Report Type : CIDR format
# Country : Australia
# ISO 3166 CC : ALPHA-2 AU; ALPHA-3 AUS
# Registry : APNIC
# Records found: 6,160 BEFORE flattening (As they appear in the database)
# Records : 3,999 AFTER flattening (Adjoining CIDR blocks concatenated into single blocks where possible)
Allow from 1.0.0.0/24
Allow from 1.0.4.0/22
...elided for brevity...
Allow from 223.255.248.0/22
Allow from 223.255.255.0/24
</Limit>
The block from under the 'Deny from all' to the end is the CIDR formatted file for a country.
You have to add the 'Allow from ' in front of the address, but if you use vi that's trivial.
If you want to allow another country access, then simply add the CIDR formatted file below the first.
Then I ran '/etc/init.d/apache2 reload' and all is well.
IMPORTANT NOTE: Things change. You have to check for additions and deletions on the CIDR files on a regular basis - say, once a month to ensure that you .htaccess file is up to date.
Some readers may have noticed that I suggest downloading the zone files as well.
This is to allow you to read your apache logs and see which country that access came from.
I will be posting another entry soon that shows how to do that in Ruby.
Sunday, 21 April 2013
I've decided to stop watching debates about the existence or nature of god for a while
We foster cats and catlings.
"Wait. What?" I hear you say.
Just give me a few moments to explain.
Over the last year Ben and I have been fostering sick cats, mothers with kittens and the like.
Loads of them.
And, like 2 year olds, you have to watch them like a hawk.
They are always being mischevious, investigative and learning about the world they are in.
Since they are often sick or just kittens, we have to keep them inside for their own safety.
So they learn about the world that is the our house.
You can't concentrate on much, read a book and so on.
Some things you can do includes watching TV.
And I've been watching debates about the existence and nature of god while keeping a watchful eye on the fuzz balls.
So while you listen to Dawkins, Krause, Lennox et al, you observe the cats, their habits, their kittie-language and so on.
One thing that leaps out is the solid block that is the limit to their intelligence.
They can jump on chairs without knowing that it is a chair.
They eat food from a mechanical food chain beyond their grasp.
They cathramorphise us as their parent cats.
They can't read.
They may watch TV sometimes but have no capability of understanding any of the massive technological edifice behind those flickering images.
They are limited.
I suspect that even with evolution in play they will never be able to:
Open a can of cat food;
Read a book;
Build a car or fly a jet fighter within any reasonable time span.
So when I see a bunch of atheists, theists and deists debating I get an image in my head.
And that image is a bunch of house cats, sitting on a carpet discussing the nature of Dog.
I'm not saying that the debates are pointless and shouldn't be done.
They should continue, but on the understanding that a hundred years from now they will be debating the same thing.
So I'm laying off the debates for a while.
Sunday, 24 March 2013
There's a few things that are hard for average people to understand
I'm kinda in a state of physical limbo.
It's damn hard to explain.
Because most people have no conception of what it's like to be 'half-n-half'.
For example...
For years, no decades, until I was 40 my left knee would dislocate.
Roughly once a month or so.
I mean that bone down the back of your calf.
There'd be a sudden movement and I'd be on my back in agony.
Muscles frantically jamming solid trying to move an immovable object etc.
Pain washing over me like waves...
I'd have to...
and if you're squemish skip to the next paragraph...
I'd have to jam my wrist around the back of my knee and with the other arm yank hard on my ankle.
There'd be this enormous "THWACK" as the bone snapped back into position.
I'd then faint.
My mother would run into the kitchen to avoid this.
Anyway...
Thankfully I don't have that problem now.
I'm guessing because of HRT dropping muscle mass etc.
But the basic issue still persists.
And it's so hard to explain because very few people have any idea what to equate it to.
I have a left collar bone.
Oh. Yes. You do too. That thin one at the top of your chest.
Left side.
No.
Your other left.
Anyway I've broken it a couple of times.
But that's not the issue.
The 'ball' at the end that fits into your chest bone is 'gracile.'
The socket is 'robust'.
For the non-anatomically inclined that roughly means gracile=>female, robust=>male.
So it doesn't quite fit.
And occassionally pops out.
And people in an office setting are sometimes privy to me pushing my chest out and...
THWACK.
As I pop it back into place.
Sometimes it doesn't work.
Like today.
I've been walking around all day with a dislocated collar bone trying to snap it back into place.
Driving.
Lifting.
Caring for kittens.
Sweating with pain.
Wiping tears away because you just have to soldier on.
"Ship? Out of danger?"
Still haven't got it back into place.
Hot showers help.
Pain killers?
Nothing - not a dent.
Anyway.
You have no clue what I'm talking about.
Life sucks sometimes.
Wednesday, 27 February 2013
Interesting human dynamic going on in the supermarket today.
Dropped in to pick up some essentials.
Stopped by the "mixers" aisle.
And was gob smacked.
My smack was gobbed so completely I nearly fainted.
Two people had filled a trolley to over flowing with every single bottle of Tonic Water on the shelves.
I wasn't alone in looking like I'd just been hit in the face with a fish.
Quite a few people had storm clouds over their heads.
Now.
Interesting.
You put items in your cart.
Until you pay for them they still 'technically' belong to the supermarket.
So it should be perfectly ok to go up to someones cart and simply take things from it.
Except it's not.
Why not?
Because it breaks some deep inbuilt rule we have about social behaviour.
So a group of people watched the pair struggle to get their cart to the checkout.
The thunderous looks would have done Wotan and Thor proud.
And I thought: "Ah. So this is why Assault Rifles are illegal in Australia."
Disgusted with myself at not saying: "Oi? WTF? You pricks!" I turned away.
Especially since I actually intended to get some tonic water.
At the end of the aisle I noticed some "DIET" tonic water.
"Oh lord no," I thought, "I'm reduced to this."
But Ben noticed a 'normal' bottle at the back.
We pushed aside some bottles and to our amazement there were four bottles of "normal" tonic water.
I grabbed them.
And covered them with sliced cheese and milk bottles.
We made our way to the checkout.
Seriously you would need a machete to cut the air.
The hatred and anger flowing from the people around this tonic water pair was palpable.
Now I know that only a few of them were likely to actually be buying tonic water.
But these two were blissfully unaware of the hundreds of daggers and muttered oaths.
They went through, paid and left.
The air tasted of cordite.
I really felt like if anyone noticed my four bottles I'd be hung, drawn and quartered.
Or in the US, riddled with bullets.
But it got me thinking about Altruistic Punishment.
Google it.
Now.
Oh and Sociopaths.
Most examples apply to cyclists, but I think this fits.
And this is why I buy books from Pragmatic Programmers!
Monday: Ruby 2.0.0 announced and available via rvm.
Tuesday: Rails 4.0 beta1 announced.
Wednesday: I get an email from progprog saying this:
This is just to let you know that Agile Web Development with Rails (4th edition) (eBook) has recently been updated. You own an electronic version of this book, and so you'll be able to download this latest version. We have also uploaded it to your Dropbox
I glance up to the toolbar and see the dropbox icon whirring and 2mins later I'm reading it.
Frickin brilliant.
Thanks Dave and Andy and all your gophers!
Now it's up to me to upgrade my apps...
Wednesday, 30 January 2013
I think I will have to wash my eyeballs with bleach
I did something tonight that I never normally do.
I watched a un-frackin-believably bad movie to the bitter end.
Despite the better engines of my nature.
Despite my brain desperately trying to climb out of my skull and strangle me I might add.
It was about a pair of Viz characters called San and Tray.
The "Fat Slags" if you don't know anything about them.
Now I like Viz.
If I see a copy I always buy it.
The Ads alone make it worth it.
"Klondike Kittens! Sh*t their own weight in gold!"
"Chessington world of sheds!"
And the like.
But then I guess I'm corrupt.
It's an absurd comic with racist, sexist and just plain stupid strips.
They make you laugh, even though you don't want to admit it.
If you've never seen it, and have any sensibilities at all, don't look for it.
In fact, don't buy it if you are any mother, father, child, dog, cat or, for that matter, any living creature.
Or not-living.
I suspect it would corrupt a lump of coal if it was exposed to it.
In any case, you'll end up with a substance resembling guacamole running out of your ears.
If you have ears.
Coal might have problems.
But would probably spontaneously burst into flames.
But it's kinda funny.
In a comic way.
Not in a movie way.
The movie was appalling.
I sat with my mouth open, totally stunned, for the entire movie.
There was a part of my brain screaming at me to press stop.
For Wotans sake.
STOP.
But I persevered.
It was so bad.
Never again.
Never.
Ever.
Ver.
Er.
R.
Tuesday, 29 January 2013
Why do engineers feel a visceral urge to frack with things that work?
Ok.
I'm old.
But seriously.
Why do engineers feel the urge to frack with stuff that works?
It's not broken, so just don't fix it.
Example 1:
Decades ago when most people wehere struggling to get to grips with Windows 3.1 I was administering hundreds of Unix workstations across dozens of minesites across Australia.
Mining engineers aren't dumb.
And they have this visceral urge to change stuff.
To fix stuff.
Stuff that don't need fixing.
So one day, around 1990 I think, I turned up at a minesite and was given the task of figuring out why this program wasn't working.
I looked at the code and thought "Ah. This is C. I know C."
I tried to figure out why the program wasn't working.
We didn't have IDEs in those days (unless you include VisualAge) so all I had was vi.
Nothing worked.
It wouldn't compile.
The error messages didn't make sense.
After about 10 minutes I looked at the code in detail and saw that it was including a header.
Which was a *massive* list of macros.
Which made Pascal look like C.
WTF?
Why?
If you're writing code in C why use a pascal compiler?
If you have to macro a language to look like another you're using the wrong language.
Needless to say I fixed it...
But I asked myself: "Why the frack do people frack with stuff?"
Example 2:
On another minesite.
I sat down in front of this machine.
I opened an xterm and typed a command.
Utter garbage.
I stared uncomprehendingly at the keyboard.
WTF?
It took a while before I realised that the main user of this machine preferred French.
So he had remapped every key on a standard US keyboard to a French keyboard.
Why?
Needless to say I fixed it...
I asked myself: "Why the frack do people frack with stuff?"
Example 3:
Yet another minesite.
I opened an xterm and typed a command.
Utter garbage.
I stared uncomprehendingly at the keyboard.
WTF?
The user had a shed load of aliases that changed just about every Unix command to a DOS command.
Worse they had remapped every key to do something Emacsey.
Home? No... That means history -25 lines.
Left arrow? No... That means last command.
Why?
Worse was that he had aliased vi to emacs.
WHY?
Is it that hard to type emacs instead of vi?
Needless to say I fixed it...
I asked myself: "Why the frack do people frack with stuff?"
IT FRICKIN WORKS OUT OF THE BOX.
STOP FRACKIN WITH IT.
DEAL.
And that brings us to today.
I'm ripping our humungous DVD collection to drobos.
So I have a Mac with NO CHANGES AT ALL.
My /etc/bashrc and .bash_login are minimal to say the least.
The only changes I make are to map MP3, M3U8 and M4V to VLC.
Ok.
So I enlist my husbands Mac to help rip some DVDs.
Sit in front of it.
Log in.
And stare uncomprehendingly at the screen.
He's mapped every hot corner possible.
He's changed the Application menu to something incomprehensible.
He's changed just about everything that can be changed.
WTF?
Why?
STOP IT.
JUST STOP IT.
PLEASE.
FOR WOTANS SAKE.
It's not necessary.
And it makes life frackin difficult for others.
JUST STOP IT.
IF IT AIN'T BROKE DON'T FIX IT.
Friday, 18 January 2013
MineCraft: Crack for Engineers.
Oh Lord.
I am sad to say I've become yet another statistic.
Along with Sweden (who recently added minecraft to their school curriculum) I have now become addicted.
Sad.
But fun.
But sad.
On the plus side, I would say it is a cure for alcoholism, over eating and in fact any human activity.
The dying words of a minecrafter would be:
"Just... One... More... Block..."
It started just before Christmas.
My brother came over and was frackin desperate to show his creations.
He is a frackin genius architecturally and his creations are pure brilliance.
We had steadfastly refused to even look at MC, but he persevered and we got the XBox 360 version on his insistence (read coercion).
To his chagrin it didn't support connecting to his favorite server.
In any case, in the days that followed Ben started playing.
First he ended up on this island.
With a mountain in the "way".
"Well," he said, "It'll have to go."
So dig, dig, dig.
Some 12 hours later he had excavated an ginormous cavern that you could land B52s in.
Dr No would have a conniption and envy fit.
It could easily house several Saturn 5's.
Or just a couple of Vostoks.
Multiple levels, and since we were just learning, floating candles at all levels.
Benworts or Benhalla.
Take your pick.
You get Vertigo.
Looking... Up.
Despite my best efforts I became involved.
And so we built a tunnel spanning a massive distance.
Underwater.
And established "KimTopia" in a desert biome.
(I have a fondness for Dune, so my village is named Arrakeen)
Exasperated at the lack of functionality in the XBox version we purchased a 'normal' client.
And then.
Of course.
We're engineers.
So...
I built and configured a server to run MC.
On which Ben and Jon and I have created huge creations.
So.
It's sad.
But kind.
And sad.
And you find yourself saying things like this:
"I just need to get 6 raw fish so I can train an ocelot to scare creepers. Oh and I finished the apartment block and the coffee shop for the villagers. We now have three iron golems and a shed load of kiddie villagers running and madly dashing about as kiddies are wont to do. Can you dig out that chasm and get some lava so we can create a wall to burn the frack out of zombies. I have finished getting rid of the sand and cactii so the villagers will be happy. Oh and can we make a marina for them? I have some ideas about making a version of Cardiff harbour so we can fit the Doctor Who and Torchwood sets into it. Damn but I'm tired. What's the time? 2am? Oh well. Maybe another hour. BUT NO MORE THAN THAT MKAY?"
3am:
"Damn. Just... One... More... Block...."
Bzzzzzzt.... Snore... QWERTY embedded into face....
I am sad to say I've become yet another statistic.
Along with Sweden (who recently added minecraft to their school curriculum) I have now become addicted.
Sad.
But fun.
But sad.
On the plus side, I would say it is a cure for alcoholism, over eating and in fact any human activity.
The dying words of a minecrafter would be:
"Just... One... More... Block..."
It started just before Christmas.
My brother came over and was frackin desperate to show his creations.
He is a frackin genius architecturally and his creations are pure brilliance.
We had steadfastly refused to even look at MC, but he persevered and we got the XBox 360 version on his insistence (read coercion).
To his chagrin it didn't support connecting to his favorite server.
In any case, in the days that followed Ben started playing.
First he ended up on this island.
With a mountain in the "way".
"Well," he said, "It'll have to go."
So dig, dig, dig.
Some 12 hours later he had excavated an ginormous cavern that you could land B52s in.
Dr No would have a conniption and envy fit.
It could easily house several Saturn 5's.
Or just a couple of Vostoks.
Multiple levels, and since we were just learning, floating candles at all levels.
Benworts or Benhalla.
Take your pick.
You get Vertigo.
Looking... Up.
Despite my best efforts I became involved.
And so we built a tunnel spanning a massive distance.
Underwater.
And established "KimTopia" in a desert biome.
(I have a fondness for Dune, so my village is named Arrakeen)
Exasperated at the lack of functionality in the XBox version we purchased a 'normal' client.
And then.
Of course.
We're engineers.
So...
I built and configured a server to run MC.
On which Ben and Jon and I have created huge creations.
So.
It's sad.
But kind.
And sad.
And you find yourself saying things like this:
"I just need to get 6 raw fish so I can train an ocelot to scare creepers. Oh and I finished the apartment block and the coffee shop for the villagers. We now have three iron golems and a shed load of kiddie villagers running and madly dashing about as kiddies are wont to do. Can you dig out that chasm and get some lava so we can create a wall to burn the frack out of zombies. I have finished getting rid of the sand and cactii so the villagers will be happy. Oh and can we make a marina for them? I have some ideas about making a version of Cardiff harbour so we can fit the Doctor Who and Torchwood sets into it. Damn but I'm tired. What's the time? 2am? Oh well. Maybe another hour. BUT NO MORE THAN THAT MKAY?"
3am:
"Damn. Just... One... More... Block...."
Bzzzzzzt.... Snore... QWERTY embedded into face....
Subscribe to:
Comments (Atom)


