One of the assessed deliverables for my MSc project is a project website, so I’ve been having a bit of a setup session this weekend.
The objectives set for the website are a little… what’s the word… vague? See what you think:
A multipage website summarizing the work so far.
– Objectives
– Deliverables
– Plan
– Literature
That’s it as far as I can tell. Exactly how will the delivered work be assessed? Your guess is probably about as good as mine. Having looked at the discussion forum for the module (the full-timers did this in the first half of the year – I’ve been told I set my own deadlines when it comes to the project stuff as I’m not a full-time student) it seems that the marking scheme was quite severe with many complaints about low marks and little evident explanation, so I’ll make some enquiries before I start work on the content proper.
Back in April, I asked how the website deliverable should be ‘handed in’ and was told that a zip with some files in it would be fine.
Screw that.
I mean, seriously – the world has moved on. To be even vaguely interesting, I’m thinking about reusing relevant content from this blog, and some of the tooling I’m using like Ganttproject saves XML data that’s crying out for some transformation and JavaScript magic. I have my own domain name and there’s an opportunity here to learn some stuff about infrastructure (and I am doing this MSc. to learn stuff in the first place), so I’ve been setting up a server. Again, checking back on the forums, some of the other students went the same route and there’s no evidence of it harming their chances. I think hosting the project website as a subdomain of crossedstreams.com makes sense – I already own the domain name and subdomains are a simple matter of extra DNS records, which is dead easy to set up with my provider, getNetPortal.
I shan’t be hosting my site on getNetPortal though. As I spend most of my professional life working on the Java EE platform, Java is the obvious choice. Why not use a different language for the experience? Whilst I’ve got the time to learn a bit about hosting a public-facing website, I’m not sure I’ll have the time to learn a new way of creating websites that I’ll be happy with… not to mention that there’s a toolset and delivery pipeline that varies from platform to platform. Playing about with Erlang or some such will have to wait for another day.
GetNetPortal do host Java web applications, but it’s a shared Tomcat environment with a bunch of limitations as well as apparently risks to other people’s app availability if I deploy more than three times in a day. So where else can I go? Other specialised hosting companies are out there, but they’re not exactly cheap…
So I’ve provisioned myself a server on Amazon’s Elastic Compute Cloud (Amazon EC2). Amazon provide a bunch of images themselves and one of them happens to be a Linux-based 64bit Tomcat 7 server. Time between me finding the image I wanted and having a working server available? About five minutes. No matter how you cut it, that’s pretty awesome. To be honest, the biggest challenge was choosing an image – there’s a huge number to choose from and I tried a couple of other images that weren’t as well set up before settling on the Amazon-provided one. The best thing – EC2 is pay-as-you-go, at dirt cheap rates for low utilisation.
For those of you who haven’t seen EC2, here’s a couple of screenshots that might help explain what it’s all about. First up, let’s take a look at the application server I provisioned.

Checking my bill tonight, I can see an itemised account of exactly what I’ve been billed for. Being able to see this level of detail should let me stay in control of what I’m spending.

The rest of my time has been spent having a look around my new server, setting up Tomcat (to host a placeholder app in the root context) and iptables (to route traffic from the privileged ports 80 and 443 out to the ports Tomcat is listening on – 8080 and 8443 – thus avoiding the need to install a dedicated webserver or run Tomcat with root privileges), setting up some self-signed SSL certificates (I’ll need those so that I can bring up apps that require logon – without SSL, those usernames and passwords would be floating around the internetz in clear, negating the point of their existence) and finally scripting up the setup process in case I need to set this stuff up again.
Now, I can tick off the project tasks around setting up hosting nice and early. Quite a productive weekend!
In terms of languages fella, why not try an -alomst- new language? Groovy on grails is lovely from a productivity point of view, and you can reuse all your fave java libraries, and drop out to trad Java if it’s absolutely necessary. The build process spits of good old .war files too, so all your deployment knowledge is put to good use.. And it’s just a joy to work with (IMNSHO).
P.S. One of your work colleagues who’s at the #SHRUG just described you to me as “Oh yeah, the Java Guru!” Top reputation fella 🙂
Hey Ibbo, thanks a lot for taking the time!
Hmm, should I take a look at Grails? I looked at it waaaay back when and decided against looking further (kinda weird-looking project structure and running short on memory in build) but maybe this is a good opportunity to take a fresh look and maybe vary on the theme. Nice suggestion, thanks!
The Java Guru huh? All those sacrificed chickens at the altar of Sun must’ve paid off 😉