Recently an upgrade on my hosting server has been conducted, making a change from predominantly PHP4 (PHP5 available but not widely used) to predominantly PHP5 (PHP4 available but infrequently used). This has been prompted by the announcement by PHP developers that support for PHP4 will be discontinued at the end of the year.

I didn’t think there would be any issues with the migration as I have long been coding in a PHP5 compatible way, however after the move Halifax Online suffered a few issues. After much investigation I discovered that this was due to some deprecated code use within some functions in a party application which had been added to the site. This was easily fixed, but the issue its self is rather interesting.

It is common practice to store ephemeral data in loops and pass this data along to other loops or functions. While the actual variable name doesn’t matter so long as it is consistent, it makes sense to name it something which indicates that the data is for use only in situ and is ephemeral. The developer of the problematic application had used a variable named $this to perform this action.

Name wise this makes a lot of sense because it indicates quite clearly that the content of the variable is ephemeral and for use only in situ, especially with respect to functions. The problem is that $this is somewhat reserved under PHP5 and so while can be read from under ordinary circumstances, cannot be written to. This is because in an object orientated environment it is used to represent the current object in which a piece of code resides, and so changing it within this context has no meaning; changing attributes of it makes sense, but changing the whole thing (as the code was effectively doing by assigning it a value) is impossible. Can I demolish and rebuild my house while still inside it?

I just thought I’d share this little gem with folk who are trying to make their applications PHP5 compatible before the end of the year. It took me quite a while to find because I was looking primarily for deprecated function use, not variable use.

I looked up my AI module marks this morning on SIS and found I had achieved 84% in the coursework. I had worked very hard on this piece because it fed into my final year project and so was delighted to have gained such a high mark. Upon reading news I noticed that the module leader had posted the highest and lowest marks and the corresponding average. The highest mark was 84%, the same as mine! This has given me a completely elated feeling, and it just goes to show that hard work and diligence really does pay off :)

It is interesting to note where the kind of research I am doing is ending up in the real world. This technology from Siemens highlights the presence of speed limit roadsigns to the driver and interfaces with the cruise control system. Pretty cool.

Siemens heads up road sign display

On Friday 30th November, the School of Computing plays host to the CompSoc Linux install fest - a chance for new users of Linux to get a copy of the operating system on their own machine so they can use it at home and further their learning and enjoyment of the OS.

The event takes place at 2pm and goes on until the School closes at just after 5pm. During that time we hope to offer a full range of opportunities for attendees.

  • Have a Linux distribution of your choice installed on your machine
  • Dual boot setup with Windows will be supported
  • Talks on secure computing and Linux basics from staff and students
  • Linux experts available to answer all your Linux orientated questions
  • Demonstrations of a range of Linux and KDE/Gnome window manager features

There will of course be the usual trip to the pub after the event, and I’m hoping line up of things we are offering is going to persuade many people its worth coming along and giving Linux a try.

I’m proud to be doing my bit to spread the use of open source software and am looking forward to showing people that it really is easy to install and use Linux. Every since the day I first used Linux I’ve never looked back.

Recently I decided that it would be a good idea to not only keep a paper journal of my thoughts on my final year project and a BibTeX file of my academic reading but also to blog about my progress on the project. I find that writing things down by hand is all well and good but a lot of the things I read to do with the project are online (downloaded from the web of knowledge etc.) and it would be nice for people to comment on my findings when I make them.

I therefore present to all, Reading Roadsigns, the blog for my final year project which is all about researching and implementing a method of reading and recognising roadsigns in a static image. If you are interested in computer vision or are working on an object detection or recognition project, please add the blog feed to your RSS reader.

Recently I’ve been experimenting with the Scale Invariant Feature Transform (SIFT) algorithm. I began by downloading the open SIFT implementation for Matlab and then used it to gain an understanding of how the algorithm worked.

Since first using the implementation I have been able to demonstrate how to find objects that have previously been seen by the system in a completely new image, and have also managed to make use of the SIFT algorithm in a more generic fashion by applying it to one of my coursework tasks - to find faces and cars in a set of images.

The power and potential in this algorithm becomes immediately apparent after using it on test image for an hour or so and indeed my reading since first use of it in Matlab indicates to me that the use of this algorithm in the kind of task I am researching is highly recommended by a number of academics. I certainly intend to use my findings here as an important component in my interim project report.

I’ve just realised its been over a week since I last posted anything, so I better give an update. Thus far, ns2 has been installed on the School of Computing machines and it’s been updated to include MobiWan.  However, the problem is that I’ve accessed the machine where it’s located and I’ve got error messages stating that I’ve not got permission to access files.

So for now it’s back to support.  In other news, I’ve not been able to read anything in the last few days due to coursework commitments of other modules.  It’s certainly hard trying balance five modules and a final year project, but I’m meeting my Supervisor on Wednesday so I aim to read another couple of papers prior to then.

After the last meeting, it was decided that implementing Fast Handovers for Mobile IPv6 or Hierarchical Mobile IPv6 would be too demanding for a FYP.  So what I’m going to concentrate on is the scalability of the base specification of Mobile IPv6.

The proposed simulator is still ns2, assuming I can get it working - I’ve started to play with the simulator minus the Mobiwan extension on my own machine, so I’m starting to get a feel for it.

What is highly frustrating is that all the reading in the world will be for nothing if I can’t find a simulator to run my experiments on.  I’ve recently downloaded and installed Omnet++ to see if it’s a viable alternative but for now I’ll still persevere with it.

Will update again after my Supervisor meeting on Wednesday.

Welcome to the project blog of Reading Roadsigns. I wanted a place where I could quickly pen my thoughts about my project and share my findings with the world when I hit upon something I feel is worthy of a mention. I hope that though this site I can keep myself focused on the project by feeling I need to have something to say about what I’m doing and also by receiving input on my work in progress from the community at large.

I welcome any and all comments on my work and if you have something more substantial to say I encourage you to drop me an e-mail.

Nothing says “Reading Time” like a having six hours between sound-check and gig. So with this in mind, I’ve read another couple of papers relating to Mobile IPv6. What is nice about academic reading, is that the more you read, the more you seem to understand. Now that sounds a bit obvious, but if you’ve ever read an academic paper, you’ll know that it’s a bit like wading through treacle.

So what I’m trying to say is, perseverance is the key and you’ll soon find that as you go from one paper to the next, you see the same concepts being explained in different ways which all helps with understanding what the heck you’re doing!

So here’s the first of the two papers with a summary and critique.  WARNING! This is a LONG post!

Pérez-Costa, X., Torrent-Moreno, M., and Hartenstein, H. 2003. A performance comparison of Mobile IPv6, Hierarchical Mobile IPv6, fast handovers for Mobile IPv6 and their combination. SIGMOBILE Mob. Comput. Commun. Rev. 7, 4 (Oct. 2003), 5-19.

This is the first ‘long’ paper I’ve read thus far at 14 pages in length, but has been the most useful and relevant with regards to my project. This paper introduces some of the ideas and experiments that I may decide to use when designing and running my own experiments.

As the title suggests, the paper compares the performance of the base specification of MIPv6, Hierarchical MIPv6 (HMIPv6) and Fast Handovers for MIPv6 also known as Fast MIPv6 (FMIPv6).

As this is just a summary of the paper, the base specification of Mobile IPv6 will be described in my report so is omitted here. Hierarchical MIPv6 attempts to improve handover times by introducing a ‘micro-mobility’ protocol. What this means in essence, is that if a Mobile Node (MN) moves from one point of attachment to another within a particular IP subnet, then HMIPv6 manages the handover with a Mobile Anchor Point (MAP). It does this by acting as ‘local’ Home Agent (HA) which assigns a Regional Care of Address (RCoA) to the MN when it enters the MAP domain.

Next, the MAP informs the HA and correspondent nodes (CN) within the subnet of the RCoA of the MN. Finally, the MAP intercepts all packets and then forwards them on to the MN to its on-link care of address (LCoA). This means thatonly the MAP need know about the movement of the MN while it is in that particular MAP’s domain.

Fast Handovers for MIPv6 work by anticipating the next move of the MN. Essentially, this involves the old Access Router (AR) to act as a proxy to the MN while the MN attaches to a new AR. There follows a short period of time where the old AR forwards packets for the MN to the new AR before a Fast Binding Update is sent and the old AR link is severed.

There are a couple more papers referenced within the text that go into more depth which I hope to read soon.

The paper goes onto describe a combination of the two extensions called Hierarchical MIPv6 + Fast Handovers for MIPv6 or H+F MPIv6 which I won’t go into as a new internet-draft proposing a combination has been released.

What becomes interesting is that the paper describes the setup for the simulation using ns-2. The key phrase here was:

“…large enough to proveide realistic results but to be small enough to be handled efficiently within ns-2.”

Also the  Internet was modelled by adjusting the Link Delay and non-deterministic movement of the Mobile Node was modelled using the random waypoint model.  The wireless medium used the 2Mbps WLAN 802.11 DCF (Distributed Coordination Function) provided by ns-2.  The simulated network was small, but contained four distinct subnets, each of which was a Micro-Mobility Domain.

One interesting point that was raised in this paper was the issue that 802.11 and similar technologies do not allow the receipt of IP flows at different frequency bands simultaneously from two access routers.  That is unless you have multiple wireless interfaces.

The simulations utilised the following performance metrics:

  • Handoff Latency
  • Packet Loss
  • Signalling load
  • Bandwidth per Station (The number of stations was increased from 1 up to 50)

Another key point was that each experiment had to be run a number of times in order to get an average value.  This appears to be the best way of getting an accurate result be smoothing out extreme results.

The types of traffic sources used in the experiments were:

  • VoIP
  • Streaming Video
  • File download with TCP (Testing bandwidth)

The experiments focused on the results from one Mobile Node moving in a deterministic and non-deterministic manner with an increasing number of competing stations.  The traffic sources were used one at a time before the experiments were done using all of the traffic sources at the same time to simulate a ‘realistic’ scenario.

What I took away from this paper was that designing experiments was not an easy task and that the authors had obviously gone to great depths to investigate the peformance of theses extensions fully.  However, some questions still arose whilst reading:

  • Why did other nodes move randomly all the time?  What if  many mobile nodes were moving in the same direction at the same time?  For example this could be commuters on a train.
  • Why did the authors decide to not implement Binding Acknowledgements to Correspondent Node Binding Updates?  Surely to provide a realistic scenario it is necessary to include all features even if it incurs additional overhead.
  • Was the simulated network an over-simplification?  Is modelling the Internet so difficult?  I guess the answer to that is probably!

So to sum up, I’ve learnt a lot about what I’m going to have to do regarding the experiments I’ll need to design.  And I also learnt a lot about the workings of MIPv6 and its proposed extensions.

My thanks if you’ve gotten to the end of this post and I’ll post the details of the (much) shorter paper tomorrow!

I’ve now started to go through the process of learning LaTeX for the purposes of presenting my Final Year Project Report. What is interesting about LaTeX is that it takes care of the layout, all you have to do is specify the structure and of course the content! One of the frustrating things about MS Word is that it doesn’t allow you to lay things out as you want them without a fight! I’m hoping that through using LaTeX, my report will look professional and in keeping with academia.

Thus far, I am beginning to work my way through a tutorial by Andrew Roberts which can be found here.

There is also a Wikibook on LaTeX which can be found here.

« Previous PageNext Page »