Friday, November 15, 2013

The final triumph

"Classic" companion cube.
I love the idea that Portal is going to be a game that will be talked about hopefully forever, like Pong and Pacman.
This one opens up to be a tiny container.
I contemplated putting a note in there to start it off as a box of thoughts, but left it to the receiver to use in how she seen best.

Wednesday, November 13, 2013

Yet another birthday present

It was fun making Pokémon so I made another one.
It was a little bit dull since the colour scheme is very similar but I was getting better at printing the wings.

Monday, November 11, 2013

Other breach of copyright

Could be posting more content to this blog.
Not code but most people get a buzz out of it.

Starbug from Red Dwarf.
This one lives at my house. Wanted more things on my shelf :)

Saturday, November 9, 2013

Breach of copyright?

A while ago I bought a 3D printer with no specific purpose.
It's come in handy a few times but it is more of a laugh than a useful toy at this point.
Did this for a friend birthday though. It's obviously Dragonite from Pokémon and I have not asked permission to reproduce this model.

Do I go to jail for this work or does he?

Making this post as I've just stumbled upon and believe it is important.

Since my post was approved so quickly, thought I'd link directly to my post so the circle is complete:

Monday, September 23, 2013

A green cape

Trying to take a picture of yourself can be hard.
Love the challenge.
I've added the new cape to the collection of capes page. Still need to do my blue basketball material one.

Thursday, August 22, 2013

Minecraft got me onto github

I've been playing Minecraft for a long time now and I've always enjoyed knowing the fact it is written in Java. Things became interesting when I started playing with a friend on a private server. We hang out on Skype and basically make our own fun.

The guy running the server felt a little out of his league and was struggling to keep up with updates. Always that frustrating balance of work and life.

So I offered a hand. I've ran a few servers and I love looking after Java stuff.

The first trick I needed to do was be able to set up a testing environment that wouldn't affect the people playing the game. Easy enough to use my little netbook. It took a little while to work out how to separate the server configuration from the server data but I managed to do it with a bukkit server. I think the main bit was moving the world data outside the home directory via world-container and launching the app with "-log-pattern ../minecraftData/server.log"

We were using the plugin to take snapshots of the world but this plugin didn't recognise the world-container configuration. Was super simple to fork it at, build and deploy.

I believe the changes have been pulled into gamerx's copy but a new version hasn't been released for such a minor change.

dynamap took a lot more fiddling around trying to understand what it setup and expected.
tilespath: ../../../minecraftData/dynmap/web/tiles
webpath: ../../../minecraftData/dynmap/web
I then copied some of the html that needed to be served into this directory so it knew how to server up the basic data. Fortunately it still looked in the plugins directory for some of the more dynamic resources.

With this set, I was able to symlink the data directory to a directory in Dropbox. It meant the same configuration I was testing inside Eclipse was also used on my netbook. When I was happy with my testing, I used a diff application to move new settings and plugins to another folder in Dropbox that was synced the hosted server.

I was in admin heaven :D

Then came a request to have multiple worlds hosted by the same process. The requirement was we wanted people to be creative in some areas without the hassle of mobs but still be able to have the challenge of fighting of mobs without access to the creative tools.

There were a couple of plugins that changed a players gamemode per world but none had the ability to remember a players state in a mixed world.
So I wrote
Forces players into a game mode on some worlds.
Remembers if a player has a certain game mode on others.
Also has some basic inventory management when switching worlds.
Need to work on enforcing certain rules in worlds. At the moment I believe a player in a survival world can be given resources from a player with operator status in creative worlds. Would be nice to stop this.

Thursday, March 14, 2013

Building Browser Plugins

You know those moments when you are asked to build something that just cannot be done from a web app?
Was asked how we could take a screen shot of a web page being viewed for annotation and review.

The good thing being, this is what browser add ons are for.

So I started with Chrome, being the browser most used after Internet Explorer.
Took a little bit but finally got everything sorted.
Was then able to take most of that knowledge and apply it to Firefox.
Safari was meant to look stupidly simple, but it took me a while to work out that plugins weren't being activated on files served from the file system. Had to set up a http server :/

You'll notice that I skipped IE even though it is the browser that sees the most use amongst the customers.
That's because it doesn't have an add on system like the other browsers do.
You have to build an add on that technically exists in the operating system and then targets the browser. I can't write javascript like I was for other browsers.

What did I take away from building the plugins?
Chrome was the favourite. Building the plugins was rather easy. There is a clear path for reloading the plugin and bundling it for delivery. Documentation was good.

Safari was the next easiest. Building the plugin was straight forward although I hated having the extra 'plugin builder' window open that is where I reloaded the plugin for. Filling out the details for the plugin via a UI is a very mac way of doing things. Documentation was a pain to navigate and sometimes missing some detail. Building the plugin for delivery was easy enough.

Which leaves Firefox near the bottom of the list. You have to disable some caching options so that it always picks up the latest version of the plugin you are building. You also have to open a new window every time you want to reload your plugin which for me meant restarting Firefox for every change. Documentation was excellent though. Building the plugin for deployment was a little trickier than the others.

At least I built add ons for those browsers. I just couldn't make it happen for IE.

Getting a grip on verbage.
I keep wanting to use the word plug-in.
Plugins are generally used for features like embedding the Flash player.
Extension was sometimes used for other things as well, like supporting different image/video formats.
Minor thing but annoying.