Exercise 1

Some initial discussion took place about the nature of the problem of peeking at email to determine, whether it was unread and, if so, whether the email was a question or not. As a result, a decision was made to use the presence of a question mark in the mail body as an indication that the email was a question. A further discussion took place to identify whether an environment was available for scripting a solution. Following a google search for mail filtering solutions, a Ruby based tool was found which supported the embedding of rules based on To, From, CC and properties within the email body. This was eventually downloaded (after a few teething problems with internet connectivity) and installed, however the initial tests (derived from the examples provided) proved not to work. Some discussion then took place as to whether a library was available in either Ruby or Python for scripting a solution. The POP library of Python was considered, however we considered the interface available to be sufficiently granular, that the downloaded Ruby tool, regurgitate-mail (?), may provide a better return for the time we had left to invest. After further experimentation and investigation, it appeared the problems identified may be underlying bugs in the software, so some sample POP python code was googled. A sample implementation was found, but part of the behaviour of the library in-terms of get the number of un-read mails without marking mails as being read was still unknown. Nevertheless, the sample code was downloaded and customised to include parameterisation of the POP server. As a test, an attempt was made to find a POP server for my .mac account, but internet connectivity problems made this impossible so an alternative server was found.

Eventually, the sample implementation was made to work for retrieving emails, however it was not possible to start writing the methods for parsing the email bodies for questions as the allowed time had elapsed.

Exercise 2

The initial decision was made to use Visual Basic as the tooling environment for the final solution, due its immediate availability.

Following an initial search on google for Sudoku Solvers led to a web-page containing a single entry to a contest for VB based Sudoku Solver projects. This page also contained a number of sample puzzle and solutions for validation. The available project was downloaded, however it was not compatible with the version of VB.NET available on our hardware. Consequently, a new VB project was created and the existing implementation code was copied into the new project.

After a limited amount of customisation to remove redundant code, the binary output from the project was able to produce a gridded string, which appeared to solve a sudoku puzzle passed as a parameter.

An attempt was then made to determine the correct VB classes to use to retrieve the Sudoku web page. Initial searches of the MSDN installation of the machine were un-successful and internet connectivity problems made searching the on-line MSDN problematic. Initial attempts to find reusable software on the web for retrieving the Sudoku web page were also not successful and some discussion then began on using an alternative mechanism, such as python based scripting, to retrieve this data.

The decision was made to keep with the VB solution and, following some web-searching with my PDA, some sample C# code was found which provided a base for customising a solution in VB. Using largely guesswork, couresy of the VB code completion facility and some limited help from the MSDN, suitable web access classes were eventually determinated. Problems then arose due to the marshalling algorithms of byte data to strings being non-significant. A solution to this was eventually found and some working code to retrieve the sudoku web page was finally put together. Unfortunately, by this point, the time limit for the exercise had lapsed.

Exercise 3 (rough notes only)

Initial search for dial control

Discussion about SVG or static graphics

Found flash control configured by XML by configuration took some time to determine

Considered xml output from svn status, but eventually agreed to work with raw text. Discussed how to process the svn output to a single number and worked out a script using shell, awk and sed to calculate a weighted number.

Idea of using ant to automate workflow for updating gauge web page. After some configuration setup of available apache installation , working solution.

--Shamail Faily