Blog Archive
-
▼
2015
(7)
- ► 05/17 - 05/24 (1)
- ► 04/19 - 04/26 (1)
- ► 03/29 - 04/05 (2)
- ► 01/18 - 01/25 (2)
-
►
2012
(1)
- ► 08/05 - 08/12 (1)
-
►
2011
(1)
- ► 01/16 - 01/23 (1)
-
►
2010
(13)
- ► 09/19 - 09/26 (1)
- ► 07/18 - 07/25 (2)
- ► 07/11 - 07/18 (7)
- ► 04/25 - 05/02 (2)
- ► 04/18 - 04/25 (1)
-
►
2009
(16)
- ► 12/13 - 12/20 (2)
- ► 12/06 - 12/13 (1)
- ► 11/22 - 11/29 (2)
- ► 11/15 - 11/22 (7)
- ► 07/12 - 07/19 (1)
- ► 05/24 - 05/31 (2)
- ► 02/15 - 02/22 (1)
-
►
2008
(1)
- ► 08/24 - 08/31 (1)
Friday, May 29, 2009
Ode to Java
Monday, May 25, 2009
Working Remotely - Some Hints & Tips
Many development teams - especially in the Open Source world, are distributed geographically. There are certain challenges with distributed teams which need special attention but luckily there are some great tools around to aid us in our daily work. Here are some tools and advice, based on my personal experience that may help you work more effectively when working remotely.
Attitude
I believe the most important aspect of working remotely is a good, collaborative work ethic. Talk to other developers on the team, don't just e-mail them, pick up the phone! open communication is key and without it everything else falls apart. I cannot understate the importance of picking up the phone (or Skyping). It's all too easy when you have a question to send a quick e-mail, move on to something else and forget where you were and the context of the question and problem. You may think i'm stating the obvious, but think about the case of a geographically distributed development environment. The decision to e-mail a question can lead to the question not being answered until the next day or even later, hindering the progress on that particular task which may have other unforeseen 'knock on' effects. So, if at all possible - pick up the phone.
Discipline
It takes a certain amount of personal discipline to work remotely. It's important to have clear objective which are measurable by management. The developer should provide regular updates against agreed project deliverables. This is an important part of gaining the trust of the rest of the dev team and management.
Useful Tools
There are a number of tools which can help a great deal when working remotely. For example, you can author and co-author documents using Google Documents or Buzzword. You can share larger documents and spare your inbox with Omnidrive.
Use cases can be developed together using on-line collaboration tools such as PBWorks which also has many other useful features to make teams more productive.
Evolve mind maps with Mind42 or MindMeister. Need to actually talk to each other? well Skype is the obvious choice but Yuuguu lets you share applications too. WebEx is also a great tool for on-line conferencing and holding secure meetings. There are free versions of WebEx available.
Taking collective feedback on design has always been tricky, espcially in a distributed development environment. One of the most useful apps for de-centralised design is ConceptShare which allows online collaboration on design by way of contextual comments, markup and a full history of discussion. Another popular collaboration tool is Campfire.
Tracking the time you've spent on projects can be made easier by using a tool such as Klok - a personal time tracker. Another tool which can be very useful it RescueTime which "gives your team the ability to see how they spent their time and helps them spend it more productively. Team members have full control over their data.
One great tool for developers - if you happen to use the IntelliJ IDEA is IDE Talk which is instant messaing for developers within the IDE. I've found this very useful.
If you want to send large files, i've found YouSentIt very useful.
Accessing Your Office PC/Network
It may be necessary at times to access your office network or PC. Normall, your company will provide you with VPN access to allow you to access the company network remotely. You can also use tools such as GoToMyPC or VNC, which I have used extensively and found very useful when accessing my office PC.
Thursday, February 19, 2009
A Short Modern Definition of Evolution & Natural Selection
Saturday, August 30, 2008
Neo-Darwinism and the Survival of Genes in Gene Pools

I'm not a scientist, I'm a software developer and I don't pretend to understand genetics deeply but it's important to me that I understand the principles of natural selection - not just the process that Darwin outlined but the modern 'Neo-Darwinism' understanding. So, i'm going to quickly outline how natural selection actually works as I understand it.
Neo-Darwinism is the modern understanding of the process of natural selection (the 'engine' behind evolution). It is a gene-centric view of life and something that Darwin had no idea about as the science of genetics had not been developed during his lifetime. 'So, what is the modern understanding of natural selection..?:
- Natural selection is the non-random (see point 2 below) survival of randomly occurring genes in gene pools (genes 'live' in gene pools)
- Genes make bodies (like our bodies) - the genes that make bodies that are 'good' at surviving in their environments are the genes that will be 'naturally selected' and therefore will survive. Genes that make bodies that are not good at surviving will be 'naturally de-selected' - i.e. they will not survive.
This is a fact - even if not a single fossil had ever been found, there is hugely enough evidence in genetics laboratories around the world to prove time and time again. It is not disputed, the physical evidence is there and even if it were the 'only' evidence it would be enough to prove the fact of evolution by natural selection. If you want to argue that natural selection is a 'theory' then you should lookup what is meant by the word 'theory' in the scientific world. To make it easy here is the link to the Wikipedia definition of the word (see the scientific definition):
http://en.wikipedia.org/wiki/Theory
The 'theory' - if tested (which it has been over and over again) always works and is the only explanation that works and can be tested.