Friday, 20 April 2012

Goals for May 2012

Having set aside the next couple of weeks to myself, I think some goals should be set so that I will be able to look back with some sense of achievement.

Goal 1: Get up to date with Java 7
Motivation: Java 6 will be officially at the end of its life this November.

Goal 2: Dabble with Neo4J
Motivation: I'm curious about ways of storing data without a conventional relational database, and I have a few ideas about graphs that I would like to manipulate in code.

Goal 3: Produce a simple prototype of a web-based application using websockets.
Motivation: Preparation for approaching real world problems with a base level of knowledge about how they can be solved.

Update:
My "couple of weeks" plan has been expanded out to three weeks, as I won a pass to a 3 day conference Progressive NOSQL Tutorials which has so far given me some hands on experience with MongoDB.  Tomorrow will cover Neo4J.

Wednesday, 7 March 2012

Benefits of starting off in a small company

"Specialisation and inter-dependence leads to a higher standard of living" - at least that's what I claimed to have learnt in high school economics.  The statement included three terms that I had picked up during the year and had the added benefit of being the longest and most convoluted statement for the memory game that the class was playing.

I was fortunate enough to gain a broad education of the core aspects of web application development and deployment in my first "proper" job after graduating from university.

After a few years I realised that setting up servers for deployment and maintaining their security and performance settings didn't show up on the balance sheet as making the company money, so I tried to switch to be more focused on designing, developing and testing applications.

When I moved to the opposite side of the world (from New Zealand to London) I was expecting to be working within much larger organisations with experts and people who know their servers like the back of their hand.  So far I haven't encountered that.

Last week I traveled over to mainland Europe to configure production servers for the project that I have been involved in for over a year.  The idea was that the OS would already be installed and I would simply set up the application server and possibly apply some enhancements.  The combination of the installed OS being 32 bit on 64 bit hardware and my old-school approach to Linux server configuration (without any X Windows) meant that I had to re-install the OS and start from scratch.

I've seen mention of DevOps but haven't really looked into it.  So far I consider myself to have enough knowledge of any application and the environment that it is being deployed into to not have to introduce any new process into the mix.  However, I do have an ambition to appear less on the critical path of project activities.

3D as piracy protection

Just a theory, but has the film industry pushed 3D partly because it reduces the appeal of films that are sneakily copied by dubious people using cameras in a cinema?

Sunday, 4 December 2011

Auto-refreshing Caches - Part 2

In case you can't guess from the title of this post, this is the second in a series of posts related to my experiences developing and tuning an auto-refreshing cache.

Challenges for pre-loading

The particular caching software which we applied for this project has a typical key-oriented lookup for determining whether an item has already been populated into the cache.


The code for pre-loading of entries into the cache needs to use the same key value as a regular cache lookup will use.
- The default cache key generation system may not be appropriate.
- The key generation settings need to be kept in sync between the pre-loader and the regular fetcher.


Unit testing the service layer

By setting up a unit test for the pre-loading of each cache we have added some automated checking of the cache key generation.

The steps required are:
- Mocking of DAO for service layer to use in tests
- Calling service layer with known parameters
- Generating expected cache key with same known parameters
- Asserting that the expected cache key matches with the key of the cached entry.


Company Christmas Party

Recently the company that I currently work for acquired 80% ownership of an e-commerce company that I previously worked for.

I'll see a few more familiar faces at the Christmas party this week.

With a bit of luck I might even do some match-making - borrowing a developer to give the team a hand for my current project.

Tuesday, 22 November 2011

Hey, that's cool! - Contagious enthusiasm

I find it fun to work with young developers, their enthusiasm and willingness to learn new things makes leading the way less of a chore and more of a privilege. Today was a great example. Late in the day I set up a user account in Jira and emailed it across to the newest member of the team. As we got ready to shut down our development for the day he said something along the lines of, "Hey, that's cool. I'll definitely be using this. I've only used bugzilla before, but this looks heaps better. Can it integrate with tasks in eclipse?" ... The next ten minutes flew by as I gave a brief demo of the plugin, including uploading/downloading of contexts. Then it was time to show how the subversion check-in comments automatically tie together which files were updated for each task. I think the next step will be to get Jenkins running on a shared server instead of just on my laptop.