Wednesday 30 December 2009

LeJos Robotics Repository...

...has been created using google code and can be viewed here . If anyone would like to be added to the project, please let me know.

Tuesday 29 December 2009

The Beginning of a Tweetbot

Although in terms of setting up LeJos on mac osx 10.4 has been very pain staking today, we did manage to get the tweet bot up and running in it's basic form (although no interaction with twitter as of yet).

We have created a lego tweetbot code repository using google code and created twitter account for Tweetbot (if you wish to follow). We also wrote some basic code for communication. A good start to the project (if you discount silly problems hardware and LeJos related).

Here are the two bots that will be part of the tweetbot project


Friday 18 December 2009

Daily Update Meeting - remotely

As Wadz is ill I facilitated the GIMS daily progress meeting. This was a good experience as it is crucial to ensure that order is maintained and everyone sticks to the 3 questions and answers as concisely as possible, otherwise chaos will ensue.

Also, due to being close to Christmas a lot of the guys are off, so the rightshore guys who were on site moved the tasks along and calculated burn down and burn up. This is also very good exposure and experience for them as they will have to take these skills back home with them and ensure that we work in this manner when the project moves into the next phase.

So all in all it was pretty good. It would be so much better if we had a web cam though.

Thursday 17 December 2009

Tweetbot 2nd stage

As chris pointed out the 2nd stage of the tweetbot would be to perform actions indicated by a request from the followers. This however is something that is quite tricky and will require a lot of thought to implement as understanding of language and semantics is required.

Retrospective

So we had our retrospective today, which was pretty good (I even got to facilitate). Four actions were determined and although we didn't meet our target the general consensus was that this way of working was definitely very good. People felt that they gelled better with the team and had a better understanding of where everyone fits in.

Tomorrow is our last virtual progress meeting then the new iteration begins in the new year. Bring on the new year :D

Wednesday 16 December 2009

Tweetbot

Another idea I have had which I would like to incorporate in my robot is for it to state it's actions via twitter. I could set up a twitter account for the bot, then when it is running get it to tweet what it is doing and looking for in natural language over twitter. So, for example, take my final year intelligent robotics project where we created a robotic dog which would wag it's tail when stroked but stop wagging if stroked too hard, these are posts the bot could make over twitter.
Also the bot had a planning system in place and would scan for objects in order to find a ball and then use manhattan distance to bring it back to the 'master' again things we can tweet would be it's location, the object it is scanning (whether it's a ball or not), 'got it' when it has retrieved it and then how it is getting back to it's master.

So for my new bot, once it has been programmed up, I think it would be cool to try and implement something like this. Any thoughts?

Friday 11 December 2009

Virtual Progress Meeting Over GIMS

So since a lot of us work from our home/base location on the Friday and every day we have a 15 minute progress meeting to highlight what we have been doing and any issues we decided to use GIMS (Group Instant Messaging Service, essentially a work MSN).

So this includes a 9 people conversation, obviously this can pose issues and can get very 'messy' so we had a chair who posed 3 questions:

1) What work did you do yesterday?
2) What are you working on today?
3) Any blockers.

Each person was asked in turn, type the answer, move onto the next person.

We had intended to broadcast the board via webcam (the locals in the office would have done this) but unfortunately  our work's network has blocked the webcam functionality which is a shame.

The meeting worked pretty well albeit a techy glitch at the beginning and if we can use VOIP and webcams it will be even better. I think using this approach today and hence forth on Friday's will be a good way of demonstrating that we can do this over a distributed environment (especially if we are to send work offshore).

The only disadvantages are if there are technical problems, the fact that we cannot at the moment use webcams and the meeting takes longer than 15 minutes as people are typing. Other than that it has worked pretty well as a pilot.

Since the webcam option is blocked, I have requested that the local guys take a pic of the board and the burn down chart and send it across to us so we can see the progress based on today's meeting.

It's been a lot better than I had anticipated.

Thursday 10 December 2009

STS Continues to Pain Me...

...this time when re-naming your project. Turns out tc Server doesn't pick up the re-name and issues arise. With the help of Wadud, we worked out that you need to find the Server.xml for your tc server and change any references to the old naming convention of your project. Also link the file with the editor (a backward and forward arrow button in STS). This change needs to be made for your pom.xml file as well as  your org.eclipse.wst.common.component file.

Clean  *everything* (much safer this way) and try again.


Such a pain, you'd think that tools like STS would sort this out for you instead of having to go through this.

Daily Progress Meeting

So we have just had our daily progress meeting and (as it's the first week) we seem to be burning up. It turns out that we hadn't identified all the tasks on Monday so they have accumulated over the course of the week. This isn't necessarily a bad thing and it is the first week using an Agile approach on a RUP project for plumbing tasks.



 

Although we burnt up and at this stage that isn't necessarily a bad thing, we are much more focussed and the people new to the process are both getting into and enjoying it.

Tomorrow (as us non-locals are travelling home tonight) we will be attempting a progress meeting via GIMS. This will be a good test to see whether this approach is sustainable over a distributed project environment.

Wednesday 9 December 2009

Another STS PITA

So here's another problem that took ages to sort out. If the XSD you are using in your project is referencing other XSDs on a server and in your network connection settings you have not bypassed the proxy for that server thn instead of STS informing you of this it does this instead (for ages):



There is no useful warning message or error or time out message. Although the issue itself was not with STS it is still a big usability fail! 

Tuesday 8 December 2009

New Project - Agile Approach

We have started introducing Agile working practices on our project as of yesterday. A step in the right direction :D This is the Agile task 'board' (brown paper) in our 'War Room' :D First stand up meeting today, those not familiar with the concept seem to be ok with it so far :) Let's just hope we can make this as successful as possible :-)


Lessons Learnt from the STS & RTC Installation

Today I embarked upon the STS & RTC installation specified in Andrew's post.

What can i say other than it has been fairly painful. Firstly I was using an older version of STS, so I upgraded STS. Once I did this, I referenced back to my original workspace - bad idea! Eclipse totally got itself in a twist. The best thing to do is create a brand new workspace and import your project from the existing to the new workspace.

The second issue I have been having issues with is the installing new software. I added the urls (specified in Andrew's post) but in order to connect to the repository I had to change the network connection settings. This caused the urls to time out. I tweaked the settings again to ensure they are correct, still no luck. I had to delete and re-add all the urls in order to get the software to update.

Both these issues have caused me a tremendous amount of pain today and I thought it would be worth documenting, in order to make life easier for others.

Thursday 3 December 2009

Getting Started With Spring Web Services

Being a newbie in the world of web services I was asked to set one up on my current project. As we are using Spring MVC & STS it made sense to continue down the Spring route.

Also Spring-WS supports contract first whereby one starts with the WSDL first and then implements the endpoint using Java as opposed to contract last where you start with the code first and generate the WSDL from that. There are many advantages outlined in the Spring Tutorial extensively, but one of the biggest selling points for me was that in a contract first the contract would remain constant over time whereas in a contract last the contract might be subject to change as the Java code changes.

The Spring Tutorial above will take you through a detailed outline of how to set up a Spring Web Service, in my post (from my now newly acquired Spring Web Service wisdom) I will take you through the basic set up for a web service with the generation of a WSDL. This simplification is aimed at the newbie for whom it may be a daunting task to set up a Spring web service with very little prior experience. Before I get going, I'd like to thanks Russel Hart (@rus_hart on twitter)  for all his help and guidance with my task.

  • Step 1: Download and Install STS from SpringSource
  • Step 2:  Create a new Maven Project ensuring that the archetype is a webapp.
  • Step 3: Add all the Maven dependencies to your pom.xml.
  • Step 4: Create/Import the XSD that you will be using for the project (this is the data contract).
  • Step 5: Modify the web.xml file (this defines a Spring-WS MessageDispatcherServlet and maps all incoming requests to this servlet).
  • Step 6: Create a ws-servlet.xml file (this file will contain your EndPoints bean and WSDL (service contract) Definitions to autogenerate the WSDL).
  • Step 7: In src--> main create a folder called 'java' and ensure that it is part of the Java buildpath (right click on the project properties --> Java Build Path --> Add Folder and add the java folder to the buildpath).
  • Step 8: In the Java folder create the EndPoint java class.
  • Step 9: Extend the AbstractJDomPayLoadEndPoint class and implement the invokeInternal method. NB: It is possible to extend other classes also most suited to your particular project.
  • Step 10: Ensure that your project builds
  • Step 11: Ensure that you have added the web project to your Tomcat server.
  • Step 12: Run the project on your Tomcat server.
  • Step 13: Check your localhost to ensure your WSDL has been generated (in my instance the URL would be: http://localhost:8080/wsTest/Sample.wsdl).

That is pretty much the it in terms of the steps needed to setup Spring WS and create the service contract. You will then need to write the Java code to implement you Endpoint for your project accordingly.

My Sample project and the WS Tutorial project (from SpringSource) can be found here.

Tuesday 1 December 2009

Robotics Brainstorming

I've had a lot of robotics thoughts on my mind so I thought I would share them here.

Firstly I have been thinking about self healing robots. The technology seems to exist for robots that are able to repair themselves, so that would be pretty cool. Another area I've been thinking about is self replicating robots, or robots that build themselves based on a bunch of components. A robot that is able to change it's shape, transformer style would be pretty cool too.

Ok so now back to my current robot. Well in terms of behaviour, I will be attempting to take my Final Year Project (Mars Rover Planning System implemented in Java as a piece of software) and attemtping to program it into a physical robot.

There are going to be some problems with this, in particular relating to distance calculations and determining it's own location. When building it purely from a software perspective, my Mars terrain was a fixed value. This meant that it was always going to be that fixed space and the rocks and rover could be added anywhere within that space. Using java code the robot could determine it's own location and then using pytahgoras' theorem determine how far each rock was.

Now, I guess in a real environment this could be overcome by creating a fixed grid like environment but that to me sort of defeats the point. Also, if it was a fixed grid, how does the robot determine it's own location? (Unless it always starts from the same position). As well as that, what about determining the distance of the objects I mean the sensors would have to really perform on this front. I haven't as of yet played with the sensors or quite deduced how I will do this but it's definitely something worth thinking about.

Sunday 29 November 2009

Programming the Bot

My little brother was eager to program the bot, so I thought I'd give it a little whirl with the Mindstorms software. I got him to program it using the Mindstorms software:



 

And here is the video .

Saturday 28 November 2009

NXT Bot: Building the Chassis

I've just spent the past 2 hours building the chassis for my robot. I still need to put LeJos on my laptop and then onto the NXT block before I can start programming it. If I get the chance, I will do that tomorrow.

Here is the progress:



 

 

 

Next week I will be enhancing it in terms of a claw for gripping and then putting sensors on for object detection.

It has been a very productive robotics day :D

Monday 23 November 2009

LeJos Setup

Courtesy of Mike Brook (aka @FrozenKnight on twitter)

Helpful links for getting LEJOS setup with your NXT brick.

Make sure you download all the latest updates from the Lego Mindstorms Tech Support pages (get the 1.02 version driver, and the fix for Mac OSX 10.5+) http://mindstorms.lego.com/en-us/support/files/Driver.aspx

How to install LEJOS onto Mac running OSX 'Snow Leopard' http://lejos.sourceforge.net/forum/viewtopic.php?t=1696&postdays=0&postorder=asc&start=0

Getting NetBeans setup to compile and upload your programs http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/CompileAndRun.htm

Read this post if you have problems with compile and upload http://lejos.sourceforge.net/forum/viewtopic.php?t=1696&postdays=0&postorder=asc&start=15

Saturday 14 November 2009

Beginnings of a New Robot

Back in April I started building a robot using the old Mindstorms kit. This entailed using an RCX block which communicated through the infra-red port connected up via a serial cable. Although now archaic technology I managed to install LeJos on there and make it work.

A few months later the programs failed to download to the RCX block. I decided to upgrade to the newer model. This week the brand spanking new Mindstorms NXT 2.0 robot arrived (I am still awaiting my Java Brains book).

Before I install LeJos on this robot (and waiting for my Java Brains book, which won't be dispatched for (between) a few weeks to a month) I thought I would install the Mindstorms software and test out all the hardware.

Here are the pics, including the old and new kit:





It's nice that there's quite a few cool sensors, including a colour sensor. I remember the good ol' uni days where in the robotics class I had to build a colour sensor out of an infra-red sensor and roses sweet wrappers (that's right chocolate wrappers) and then determine what object it was by picking up the RGB values.

So my plan for the bot is to next week build the physical robot (as I didn't really have time today) and then to try and (re)program my final year Mars Rover planning system Java project into a LeJos project using a physical bot instead of being software based.

Friday 25 September 2009

i-Design 09 Conference

The Conference

I attended my first conference yesterday. The i-Design 09 conference in London (pictures: here).

I really enjoyed it. It was at an excellent venue too, the old cinema at Westminster University (the first cinema in the UK). There were some really interesting speakers also. My favourite speaker was Bill Thompson. He was coherent and funny and made a lot of good points. I also thought Tim Milne was good too but that could have been because he was also cute (for an old bloke) ;-)

The first half of the conference was focussed around the web, content and so forth. There were publishing companies, marketing companies there and various others. The message given was that we need to embrace the technological revolution.

One of the points that Tim Milne made was that back in the day (way before my time) when Coronation Street was on terrestrial televison there was a much more connected and bonded feeling as you were part of something that everyone was doing at the same time. I disagreed with this point, as to me that is a form of control. You *have* to watch a programme at a prescribed time because if you miss it then you won't get the opportunity to do so. The invention of VHS probably revolutionised the creating a *you* focussed technological experience.

Other then that, the rest of the morning was interesting and pretty much on par with the technovision stuff at work in terms of ideas and concepts.

Another thing that struck me was that Bill Thompson mentioned integrating people and technology. He mentioned the development of a contact lens which displays information on your retina. During our HCI Project back in 2006 we came up with a similar idea (but for glasses instead of lenses) but this was parked after iterating through a UCD process based on user feedback.

The afternoon was pretty good too, mostly focussed around sound and vision. Much more artsy! I liked the 3D sound and the immersive technologies. It was very similar to the minority report stuff. Much more *you* focussed without the traditional screen interaction. We started looking into these in HCI back at uni so it was nice to see how it's progressing. There are some really interesting projects out there (links below).

One of the stories the guy was telling was really interesting. They work on 5D and have worked on film sets with the likes of Steven Spielberg. When Spielberg was making minority report he wanted them to use technology which was very possible in the near future. That fact made the penny drop with Minority report and made me realise it wasn't a H.G. Wells of the 00s ;)

Also another story I really liked was the opera house in Toronto which wanted to attract a younger audience. The Sony Centre provided funding and a complete *you* experience was created. It became a co-authored space which responded to people, changed lighting ambience based upon the clothing colour people were wearing and so forth. So the building repsonded to the people. I thought it was a very interesting idea (gave me my own idea of doing something like that with a combination of Artificial Intelligence).

Another interesting story was about the interactive cinema, where people decide the direction of the film. Although multiple choice, there's an element of creating a user centred experience.

The general message of the conference was about a User Centred experience and design approach and to fit the technology around the design and not the other way round. It also provided a different perspective on immersiveness and interface design that is much more interactive. Something we as a company are already thinking of doing (Wadud's idea #4 innovation portal ;-) those who have access will know what I mean).

One thing one of the panelists did say was that it's all well and good having a UCD approach but sometimes we don't want to interact, we just want to sit back and be shown a film and relax without to much thought and interactivity. I thought that too was an excellent point :)

Quotes
Here are some quotes I really liked from the Conference(I didn't get the names of who said them as I was typing on my i-Phone):

"New age of the Internet give as much as you take."

"No use resisting the drive to give away content on the Internet for free."

"A disconnected life is no life at all."

"Printing puts a mark on history i.e it is the roots, the time it was printed. Guttenberg should have invented the Internet!"

"Capitalism went digital. We moved to a digital economy we will live completely different lives - only thing Karl Marx got right" (although I disagree with that being the only thing Marx got right).

"The technologies that will be in the future are the ones that we have not yet imagined, no one imagined touch screens and mobile phones."

"Compartmentalising dooms towards failure."

"We are influenced by the relationships we have and search and discovery impacts that"

"The relationships we have shape our perceptions and inform the choices we make"

"Positive and brand associations are formed by positive interactive experiences."

"We spend out lived searching for people we can connect with and this is what enhances our experiences."


"Digital tech is at a stage where we can embed it into our lives and it becomes more about the you experience"


"Entertainment Weekly's video adverts are like putting a pacemaker in a corpse but it is genius because of the buzz created around it."

"Getting rid of the rectangular screen is a possibility for the future."

"Any interface should have a form that is related to experience."

"The child has to learn to use the computer the computer doesn't learn to use the child."



Links

Matterbox
Future of Sound
Show Studio
Cog App
Wet Design
Extra Version
Plugin Media (They're hiring for those interested).
Jason Bruges Studio
Vison Labz <-- One of my favourites. MOTH
Squid Soup <-- Another one of my favourites. 5D

Saturday 22 August 2009

Re-designing a Web Page

I am currently working on re-designing this website for a friend of Sean's.

My first observation of it was that there is no real structure to the home page. It seems to link off to different pages with no real 'web site'. Also it doesn't state what the purpose of the web page is. As well as that there are little links all very close together on the core part of the page.

Using Balsamiq I created a first draft design of the potential layout of the home page. Please have a look and let me know what you think and whether I can make any improvements.

Wednesday 29 July 2009

Lifts in Radisson

The lifts in the Radisson are very poorly designed. They may appear to be cool because you pick what floor you want to go to from the outside and it indicates a designated lift for your floor. As a result you're a bit restricted.
I experienced this today, as a lady had selected her floor and the entered the lift, the doors had opened and had it been a conventional lift I could have hopped in. I hit my floor, and since the lift she was in hadn't moved, I thought that would also be my designated lift but no, it designated a different lift. So 2 people in 2 different lifts both about to move at the same time. What a green way of doing things!!

Sunday 21 June 2009

Monday 15 June 2009

Can Twitter Lead to Crime?

On the way to work this morning, I was reading the metro and I came across an article about how twitter updates can increase crime rates. There was an incident where a guy had mentioned he was going on holiday for a week, which lead to his house being robbed. What are your thoughts on this? Is this a serious concern. I personally lock down things like twitter and facebook so only people I know can see my posts. Does this mean as a result, the full features of the tools are not being embellished?

Saturday 13 June 2009

Utilising WATiR to Test in an Agile Environment

Free talk happening in London on 30th June. Click here for more information and to register.

Tuesday 2 June 2009

iRise

So for the past 2 weeks I've been working on a visualisation for a client using iRise. The visualisation is a mock up of functionality specified by the client.

iRise is much more sophisticated than Axure. It is possible to mock up applications as well as web pages. With iRise it is possible to use data sheets and manipulate data adding to the level of sophistication.

As well as that, it is possible to add comments to the visualisation when demonstrating it and associating the comments to the widgets.

There are many more advanatages to iRise which I won't outline here.

Some of the drawbacks are that it's a little bloated and if you're a technical minded person it is easy to fall into the trap of trying to do everything perfectly and technically correct.

Another drawback is that in order to view the simulation, iRise reader needs to be downloaded. Although it is possible to download iRise reader for free.

As I've only been using iRise for 2 weeks, I am still in the process of learning the full range of features.

Another tool I am looking into at the moment is Balsamiq. which focusses more on mocking up functionality than perfecting the UI. The UI is demonstrated through electronic representations of hand drawn elements. Can't wait to try it out :)

Saturday 4 April 2009

The Beginnings of a Robot

A few months ago, I purchased and old lego mindstorms kit from a friend. He wasn't using it much and I wanted to play around with some robotics in my spare time (as PhD funding is so hard to secure). I figured before investing in a new kit, it would be good to have a play around and install LeJos on an older model.

Since it is not a USB kit, it has in fact caused a lot of hassle. Firstly, connecting to the Com1 port and making sure that the environment variables are set up. Secondly, ensuring that the battery that is used for the infra red port doesn't drain quickly and thirdly having to re-install the firmware for LeJos everytime the battery dies on the RCX block.

All I want to do is install LeJos so I can write code, instead of using the mindstorms software, which is in fact for kids!!! So tomorrow, I will set out in buying a new battery for the IR tower.

In the mean time, here is a photograph of the robot so far. Currently, I have only built it in it's basic elements. Additions to come soon...



I am hoping to invest in the newer NXT Model soon.

Lastly, watch this space for more updates on progress.

Friday 3 April 2009

End of Sprint Feeling



Is this how you're supposed to feel at the end of a sprint?

(drawing by Wadz)

Wednesday 1 April 2009

Robot Problems!

I have an old mindstorms kit (pre-usb days) which I recently acquired off a friend. This is to allow me to play around with robotics in my spare time. Now being an AI graduate and a developer, I don't really want to be using the mindstorms software so I put LeJos (Java for lego) on it before. Once the battery dies, you have to re-install the firmware. Only it's not working. At first I was having problems with the RCXTTY variable not being set, although I've solved that.

The current problem I am encountering is that it tries to install the firmware and then I get the following error:

C:\Lejos\bin>firmdl.bat
read firmware srec
100%
Installing firmware
Loading native libs
Tower error: write failure

I have spent a good part of the night trying to sort this out and only half watching the England game. I've googled for help and I'm at a loss. I have read and followed the the instructions and I'm sure they are correct.

The only other thing I can think of is that the battery might not be at the capacity required to install this. I'll try a battery replacement and if that doesn't work just throw it out the window.

End of Sprint

So we have finished the sprint for this release. The code freeze was last night and the demo this morning. The client were satisfied and the demo was short and sweet. This sprint hasn't been very heavy going, as there hasn't been any new functionality introduced just enhancements of exisiting functionality.

Two recurring issues in this sprint have been:

1) The client constantly chopping and changing what they want and leaving it to the last minute to request these changes.

2) Dev's digressing from the requirements set out in the story and trying to do 'clever' things.

Although 1) might seem like the changes are minor, the issues are more around the bigger picture and the impact that it will have on making the change. This includes amending test scripts, deploying to the sprint test environment, re-testing, fixing any bugs that may arise and assessing any impacts on existing fucntionality. Now, at the beginning of a sprint it's easier to be a little flexible, after all we are Agile but there's a huge difference between flexibility and completely bending over backwards and becoming a bunch of yes people. It should never be the latter!

For 2) Although it is nice to have innovation, when you are working for a client who has specified what they want, if you don't meet that then the innovation means nothing. I witnessed the client actually tell a dev so you've done x, y and z, that's great but not what I wanted. I wanted you to make a minor change to a and that's it. Please can you roll back x,y and z to what it was doing previously! Now this reflects badly on the dev and the sprint team. I've noticed in this sprint, the dev getting rather carried away and digressing away from what they were asked to do without assessing and considering the impact to the rest of the team and the functionality just built! This is very risky and should not really be happening, especially on the day before the demo or even after the demo!

We should be having our retrospective at some point at the end of this week or early next week. I will be raising these issues then!

Friday 27 March 2009

Prototyping Web Pages

When I first joined my current project, we were in the Elaboration/Construction phase. My job was to prototype the UI component (web pages) using a tool called Axure RP Pro.

Prototyping Advantages
The advantages of prototyping are that it allows direct user involvement with the functionality of the system from the beginning. This allows the user to determine that the use cases are being modeled correctly and the system is performing to their expectations as they are able to see the visualisation and simulation of the requirements and use cases.

Not only is prototyping advantageous to the user, it is also very helpful for the developer as they are receiving iterative feedback which means that the turnaround will be rapid when developing the real system. It also allows them to assess any future enhancements and determine any foreseeable issues for the future.

In terms of documentation, prototyping is self documenting as the pages can be annotated.

Prototyping is throw away code, it is easier to throw away and start again. It is very important to have that option at start of analysis, as continuing down the wrong track due to a lot of investment in developing screens, is generally, a bad idea.

Prototyping Disadvantages
Prototyping has many advantages, but along with the advantages there are disadvantages.

What tends to happen with prototypes is that users and developers forget that it is a throw away system and become very involved in the development of the prototype. They get caught up in getting the aesthetics right instead of focussing on the functional side and become too attached to the system. They lose sight of the fact that prototyping is to demonstrate the functionality and UI as a mock up system.

After involvement with the prototype the user can end up expecting the real system performance to be the same as the prototype. They overlook that in the real system there will be large volumes of data and other system issues like infrastructure, high volume of users accessing the servers etc.

Prototyping on Our Project
It was decided to prototype the UI on the project as this would allow the client and us to work collaboratively in order to establish exactly what the client wanted. It allowed us to determine the scope of the project.
It also provided the client with a visual representation of the use cases and allowed direct involvement and feedback on the potential system.

We achieved the following through prototyping:

  • Input from the client

  • Collaborative working through the workshops

  • Quick turnaround


Axure RP Pro
Axure RP pro is a RAPID tool for prototyping web pages. It is more like a drawing package than a development system. It maps a storyboard on the model of the system, it achieves this though the use of ‘Wireframes’ of web applications.
The web pages are created by dragging and dropping components onto the screen.
Axure allows the creation of ‘Masters’ which are essentially like templates (i.e headers and footers) in word.

Adding components such as text fields, images etc is relatively straight forward with the drag and drop feature. It is also possible to link to other pages within the project or external links using the side bar on the right hand side. It is just a matter of selecting the component and then from the side bar menu deciding the course of action and whether the action should occur on ‘mouse click’ or on mouse ‘hover’. Linking pages in Axure is like linking one slide to another in Powerpoint.

It is possible to make the web pages interactive; however this is very limited and usually requires a fair bit of work for complex functionality.
As this is a prototyping tool, one would want to demonstrate interactive functionality. In order to achieve this in Axure it is possible to use a dynamic panel. On the main page you would drag a dynamic panel, with a ‘save’ button. You would then need to modify the state, which is essentially like another page. Once you have created your confirmation in the state, you can then link the save button to that state

If the interactivity functionality is fairly simple and straightforward the dynamic panel feature works very well. The difficulty arises in trying to demonstrate complex functionality, such as a tree view menu. The reason being, if there are many items and sub items in this menu then all the permutaions in that state have to be created, which can ultimately result in having many states. Now, if the task is to create the menu and not to modify it at a later stage, although a lengthy process it can ultimately be worth the time and effort. The problem arises if there are constant requests to make modifications here and there, in which case they have to be manually updated for every single state.




Fig 1: Axure RP Pro Editor


In order to view the ‘web page’ it needs to be built. This can be done as a single ‘chm’ file which is displayed as a help file or html pages with an index page.


When the files are compiled there is an option to generate them as CHM files or HTML files. Although in terms of viewing the web page the format doesn’t seem to make a difference, however the difference lies in that a CHM file is generated as a single help file whereas a HTML is generated with all the pages, images etc. So in terms of sending the files to the developers to create the pages it is easier to have a single CHM file.

Fig 2: Built CHM File


Fig 3: Built HTML File



Advantages of using this tool

  • It is easy to use and can be picked up very quickly.
  • Mock up of web pages and an interactive demo can be created very quickly.

  • As the prototype can be viewed in a browser it can be sent out to the client, the Business Analysts and the developers.

  • The prototype can be version controlled as it is a single self contained unit.


  • Disadvantages of using this tool


    • Everything is saved in a single .rp file even though a file can have multiple web pages this means that there is a lack of collaborative use and only one person can work on the file at any one time even if the multiple web pages are created by different people.


    • If the .rp file is divided into two separate files so each developer can work on their web pages but needs to be integrated later on, this can prove difficult as it is a manual task as Axure does not allow importing other projects.


    • If there is a consistent master across multiple .rp files and the master changes, the changes then have to be manually updated across the files.


    • The final html/chm pages cannot be uses in the real system, so it is a completely throw away system.



    Conclusion

    • Prototyping is an iterative process that takes place at the Inception/ Elaboration phase

    • Prototyping web pages is a quick and easy way that makes the development process easier, through user feedback

    • Axure RP v4.6 Pro is a Rapid prototyping tool

    • It allows the creation of interactive web pages using Wireframes

    • It is easy to use

    • It Lacks collaborative use

    • New version (v5) meant to be far better

    Monday 23 March 2009

    ASP Controls

    Controls in ASP are amazing and very useful to use if used in the correct way. One of the nice things about custom controls is that if you have generic functionality across multiple pages, then a nice little feature is to create a custom control and embed that on your pages. This means it's easy to maintain and you're not having to duplicate the same code across pages.

    Two annoying things I have found:

    1) Developers who create a control and it is only ever used once on one page. Why do this if the functionality is not generic and used across multiple pages? Why not use the .aspx page and write the code directly onto the page.

    2) Spaghetti code, where you have a page which has a control, that control contains a control and that control contains a control. It is so hard to maintain or debug this!

    Controls are nice to use, I just wish people would learn to do so properly!

    Sunday 22 March 2009

    Sprinting Again

    So, once again we are sprinting once again for the next release. This sprint will hopefully not be too taxing, however already we have encountered some frustrating problems.

    First of all a defect raised in UAT 6 weeks after the release went in, meant that our planning session was held up until Thursday.

    Once in the planning session, there were people in our team's session who weren't part of our team having an input on our stories. I found this rather unnecessary and frustrating.

    It would be better that only the team and other required people are present in the planning session and not just anyone and everyone!

    Hopefully the sprint will go well :) On the plus side, I managed to put 2 stories into sprint test before I left on Friday. Yay :)

    Saturday 14 March 2009

    Building effective ASP.NET 3.5 Web applications using Visual Studio 2008

    For the past 5 days I've been on this course at the QA training centre in Glasgow.

    It has been an absolutely fantastic course, quite intense as there was a lot of material to cover over 5 days. It was a combination of the instructor going through slides, showing demos and then us putting it into practice in the lab sessions.

    We build a web project, building as each chapter progressed. The topics that were covered were:

    • Fundamentals of ASP.NET Development

    • Using Visual Studio 2008

    • Designing Web Forms

    • Site Navigation

    • Validation

    • User Controls and Web Parts

    • Components and Architecture

    • Data Binding

    • Linq

    • ADO.NET

    • Caching

    • State Management

    • Securing Access to Web Applications

    • Under the Covers

    • Web Services

    • ASP.NET AJAX



    As I said, a lot of material was covered in a short space of time. However, I found all this very useful as on my current project I am using ASP.NET on a day to day basis and this course really helped with filling in the blanks.

    I would definitely recommend it for anyone who is new to ASP.NET.

    Here's is the link to the course for anyone who is interested.

    Friday 20 February 2009

    HCI and Web Design

    One of my favourite modules at University was Human Computer Interaction 1 & 2. It was taught very well by Dr. Russel Beale and was fun and interesting. I learnt a lot from that module especially in terms of the human aspect of designing a system and web sites.

    However, one thing I have found is that in the business I work in, HCI tends to be put on the back burner. It's usually not seen to be as important as the core functionality of the system and seen as 'cosmetic'.

    I find it quite frustrating that basic concepts such as good colour schemes, affordances and metaphors are not taken into consideration when designing systems. Usually decisions for look and feel are made by the client, but there tends not to be a usability expert on either side to say 'hold on a second, we shouldn't do it like this because that page will look noisy' or 'the buttons shouldn't be arranged as 'Cancel' 'OK' as when people hit enter on most systems they are expecting it to click 'OK' and not 'Cancel'.

    Other things we tend to lack is that (apart from UAT) we don't have end users directly involved with using the system iteratively as it is progressing. Techniques like Cognitive Walkthroughs would provide us with a fantastic insight into how we can make systems more user friendly.

    Usability studies are usually based around human psychology and human perception and if the system layout doesn't meet the user's expectation then they will be reluctant to use it or they will not use the functionality to it's fullest.

    Finally, I know the IT and business world isn't as black and white as this and text book answers cannot always be used due to other constraints. My goal is to try and incoporate HCI and Usability practices wherever possible.

    Some Links to Usability Sites:
    Neilsen's Usability Heuristics
    Usability First

    Automated UI Testing using Ruby and Watir

    Just before Christmas our Scrum Master was asked to come up with a way of automating UI testing using open source software. He came across Watir (Web Automated Testing in Ruby).

    Creating scripts in Watir is very easy to do. Our Scrum master (using the watir API) has written some classes including domain specific ones (relating to our project) thus making it very easy for anyone to be able to write scripts.

    The point of this was to help with regression testing so that it is almost push a button and the scripts will do all the work for UI testing. Obviously there are limitations (such as automating email activation) but it is devised in such a way that writing a script has a natural language feel to it.

    We have been incorporating the writing of these scripts as screens are developed in our sprints, this allows us to provide better test coverage.

    The scripts have mostly been written by the developers and a tester, we were hoping that the testers would be more enthusiastic in getting involved, however this has not been the case. I think they are a bit hesitant and would rather go through every single screen than to trust the automated process, which is a shame really as it works so well.

    For further details on the technical aspect of Watir, please visit the link provided.

    Demo & Retrospective

    Demo

    Even though it was a late night on Wednesday, we managed to get all our stories 'done' ready for the demo the next day. I was told by the scrum masters that the demo with the client went very well. The only disappointing thing is that apart from the Scrum masters and the BAs and other management types outside of the sprint teams.

    I raised this during the last retrospective and an item was actioned for this. However, nothing came about of this. The scrum masters decided that the team members should go to the dry run prior to the sprint demo. I was one of those who went along, it was nice to see our work up there and as one of the client is a part of our sprint team, it was re-assuring to see him presenting and selling the end product so well.

    The only issue is that the sprint teams should have the option of going to a client demo whether they choose to or not is up to them. Ultimately it is the sprint team who have produced the work and the client should have exposure to this, it feels a bit like they're being shielded from the sprint team. I know that management have their reasons and that 'rooms are too small' etc, even if the sprint team were there as observers it would be a good learning experience for the team too, especially those that have not been involved in agile development before.

    Lastly, it is one of the practices of Agile, that team members should be present at demos! I mean after all, we only did the work!!!

    Retrospective

    So we had our 2 hour retrospective meeting (which went over the 2 hours) and a lot of discussion came about.
    The approach that was taken was that prior to the meeting our team (on flipchart paper) wrote down the positive and negative elements of the sprint.

    In the meeting we created an agenda which was:
    1) What went well
    2) Could do better
    3) Like to start doing
    4)Actions
    5) AOB

    We went through the flipchart list, discussed them and then came up with an action list.

    What has happened in the past is that action has not been taken on the action list (see what I did there). That was another point that was raised, so let's hope this time round that something comes of the actions.

    Thursday 19 February 2009

    This is what happens when the system goes down...

    ...between 5.30-8.30 pm on a Wednesday night (the day before the demo and one last script to System Test).




    (Artists: Femz & Wadz)

    Tuesday 17 February 2009

    Multi-Functional Teams

    As mentioned in one of my previous posts, sprint teams are meant to consist of team members who are multi functional. Although, we tend to have defined roles (i.e I'm a developer and person x is a tester, person y a business analyst etc) the whole multi-functional teams has been put to the test this week.

    In the past BAs have taken on testing roles especially towards the end of a sprint, however this time round we've managed to finish all the development and the bottle neck is at the testing end. So myself, and the rest of the developers have put on our testing hats and started testing (obviously not code that we have written and the test conditions have been written by the testers).

    It's not so bad as long as the test conditions are written well and it's a case of executing them and raising any defects. At the end of the day, the ultimate goal is to get the stories into 'done' and points on the board, so it's much more beneficial to help out in this way then to sit there twiddling our thumbs.

    Running a Stand Up Meeting

    So yesterday, I was given the opportunity to run a stand up meeting which was pretty cool. I jokingly suggested it to the scrum master that if he 'wanted me to run it' and he agreed.

    It was an interesting experience, a little bit daunting being up there however the fact that it was an informal environment and we have done many stand ups in the past few weeks meant it wasn't as bad as I thought it would be.

    Being up there put me out of my comfort zone which was a good learning experience. I think it's a good idea to rotate around the team to run the stand up meetings.

    Tuesday 10 February 2009

    Stand Up Meetings

    During our stand up meetings we have been 'mixing it up' a little. Initially it started out with going round the team members and each one stating what they have been working on yesterday, what they are working on today and providing estimates of tasks allocated to them.

    Lately we have started doing our stand up meetings based upon the story, so we go through each story and discuss the progress. I find this a far more effective stand up as a) everyone should be working on a task and therefore everyone gets a chance to speak b) the progress of each story is much more obvious c) there is less digression during the meeting and d) it re-aligns focus.

    I think the latter process works very well, that's not to discard the former though as there are times when the former is more effective (especially at the beginning of a sprint).

    Sunday 8 February 2009

    Agile Methodology

    The first time I heard about the Agile Methodology was when I was working on my previous project. We were using RUP, however being a large scale project things weren't quite going according to plan.
    A few of our senior software engineers got together and decided to take the Agile approach. It worked very well for us and we pulled ourselves out of the rut and delivered on time, which the client were very happy about.

    The basic gist of Agile is collaborative working. The following exist in Agile development:

    • Product Owner

    • Product backlog

    • Sprint team

    • Backlog

    • Stories

    • Points

    • Tasks

    • Burn down chart

    • Velocity

    • Planning Session

    • Stand up meetings

    • Retrospective



    Generally there is a business problem that needs to be solved through the development of software and the person responsible for this problem is the product owner, who has a product backlog of business problems.

    A team or multiple teams known as sprint teams are formed for this purpose. They generally consist of developers, testers, business analysts and a scrum master. Sometimes (but not commonly the product owner or the product owner proxy). The team is a self organising, multi tasking team. The team will work on the software in sprints. A sprint is a fixed amount of time (between 2-6 weeks).

    At the beginning of each sprint the team is involved in a planning session where they determine the velocity that they will work at. During the planning session, the team take the backlog and prioritise what needs to go into that sprint. They then divide these up into stories and assign points based upon the velocity. The points are assigned using planning poker, and team members have to estimate individually, then once every team member has indicated their estimate a consensus is reached based upon discussion.

    After the planning session the team work on the tasks (these are the stories broken down into smaller components) in the sprint and every day a 15 minute daily meeting occurs where they discuss their progress amongst other team members.

    There is no outside interference when a sprint team is working. At the end of the sprint there is generally a demo to demonstrate what was achieved and a retrospective meeting held for lessons learnt.

    This is the basic gist of Agile development. For details please visit the link above or read Scrum and XP from the Trenches.

    On my previous project I worked alongside a sprint team, mostly working on support work for the teams so I wasn't really involved in the core development for the sprint team.

    When I joined my current project, we were encountering similar problems to those of my last project. There were a few of us from our previous project who joined the current project. Once again a couple of the senior guys suggested Agile development.
    Once again this worked very well and we were able to deliver Release 1. For Release 1 our business analysts were the product owners. Once again, I wasn't involved in the core development within a sprint team.

    My first real experience with Agile development was about a month ago when we started Release 2. I had expressed an interest in being involved with core development work and was finally provided with this opportunity.

    This time round the product owner was the client, and their proxies are actually a apart of our sprint teams. I hadn't really been to a planning session before and it was a very interesting experience. During my first planning session, I found it very hard to determine how to allocate points to the stories as I'd never worked on a story (or core development before). We had time boxed the planning session to 3 hours, however it overran due to lengthy discussion about the stories.

    We started the sprint and I must say, I found Scrum to be a very effective way of working. The teams work very closely together and having all the developers, testers, business analysts and the client(as the proxy) together meant that the team was very productive. I found that having stories and allocated time for tasks meant that I focussed much more on achieving my goal. Also with everyone sitting together the communication and turn around was excellent.
    Including a client member on the team also means that we get a much quicker response back from the business and that they are more sold into the process and ensuring the success of the team as they are also liable.

    The retrospective was very interesting also, we were given sheets of paper to write issues we encountered during the sprint and how we could resolve them for the next sprint. The scrum masters then went through the common themes and discussed them. Recurring themes were given higher priorities to over come for the next sprint. Basically, everyone got to have a say.

    Our second (and final) sprint for this release started on Monday. I was better equipped for the planning session and able to make sound judgements on point allocations. So far the week has gone well and we seem to be on track.

    I will keep posting our progress as the weeks progress :)

    Software Engineering in Industry

    As an AI student at University I didn't really focus much on the software engineering part of Computer Science. We mostly worked on AI and intelligent algorithms and principles. A lot of the Computer Science students and especially the Software Engineering students were taught the different methodologies and principles. The only software engineering I had done was a module in my first year and writing my dissertation in a software engineering fashion (can be found on my website).

    So when I started working it took a while to get into Software Engineering practices, especially on large scale projects. At present our company adopts IBM's Rational Unified Process (RUP) on software development projects. This has worked well, however recently we have started using Agile (will be discussed in my next post) alongside RUP and it seems to be working very well.

    First Post

    The first post of a new blog is always a bit difficult. I have so many blogs dotted all over the place from uni days etc, now that I'm all grown up and working I thought I would create a more grown up and technical specific blog.

    I work for an IT consultancy company (I started as a graduate on the grad scheme) and about 3 months ago moved into a business unit focussing on development, therefore I thought it would be a good idea to keep a technical blog on technical/methodology related stuff and my experiences. So that's it really, I hope you enjoy reading my thoughts and feel free to comment.

    Search This Blog