25 December 2012

Burgers in London

Burgers in UK seem to be medium to small compared to America. It seems the British burgers get a bit stingy in the way they make their order sizes but are still able to squeeze in a hefty ounce of beef. Unfortunately, if one really wants to enjoy a burger then may want to have a helping of two rather than just one burger in UK. For some strange reason, they also give side orders of skinny fries but why would any one want such a ridiculous size of fries. Chunky homemade fries are the real deal that go with a meaty scrumptious burger. Generally, one has several options to enjoy a burger meal in the big city like London. One can head out to a pub and get a full meal deal which are quite a bargain also at times can be quite tasty. Another, option is if one is really pocket tight then to head over to McDonald's or the Burger King. But, these places will make you sick later and the burgers are full of additives. Another, option is to head over to open markets where they make fresh burgers right there and then especially around the City of London. But, my favoriate places are the dedicated burger joints that truly provide flavor. Not a big fan of Fine Burger or Gourmet Burger. And, places like Hard Rock Cafe, Sticky Fingers, or Fuddruckers have really lost their touch on quality food with excessive waiting queues and misplaced orders. Some of my favoriate burger places in London, where they use quality meat, would have to be:

24 December 2012

Java Web Hosting

Java hosting has come along way as a result of cloud computing. As Java runs in a JVM it makes for appropriate language platform for large scale applications requiring several magnitudes of processing and load. The JVM also allows one to program in multiple alternative languages alongside Java such as Groovy and Scala. Java is also a very enterprise friendly language supporting a multitude of open source libraries and frameworks in a wide area of application domains. Java has always been a more expensive way to host an application on the web. However, the cloud has increased the possibilities for developers. There are quite a few cloud hosting providers that have started to provide Java support. A lot of them provide multiple language support.
However, one can always use a standard VPS or a dedicated server provider as an alternative for PaaS/IaaS for Java web hosting for which there are even more options available similar to Python.

Java Web Hosting
JSP Hosting

The following frameworks are often quite workable and supported on these cloud hosting platforms:

Rainy Days in London

It rains a lot in London. There are more rainy days compared to almost two months of sunshine. One would expect that a lot of people would be out with umbrellas handy which is often the case. It seems as soon as the first signs of drizzle appears people are magically able to bring out their umbrellas. Only the fact remains that so many of these people do not really have a clue about how to carry an umbrella let alone to hold one in their hands. A lot of these umbrellas have a pointy end to them. These people do not realize that the end is in fact a hazard to many people behind and around them and should be pointed vertically down and not horizontally up as it can appear to act like a concealed weapon. The chances of hitting someone are quite high especially if the individual with a brolly decides to circumnavigate and circumlocate their route to a certain angle. In a city like London where there are so many pedestrians the chances of causing grievous bodily harm from such carelessness are high. I have to admit I have been hit by brollies a lot in London and can say with experience that these people do not even have the manners to say sorry or the fact that they cannot even watch out as to how they carry an umbrella is a misdirection of its own. Maybe, they should start having etiquette schools for individuals with umbrellas in UK. 

22 December 2012

Indecipherable Requirements

These days in agile development teams there is more emphasis on design, implementation, testing towards delivery rather than the production of clear requirements. Requirements often times can become the stumbling block for either incorrect or slow implementation, as well as a complete misdirection in delivery. In agile principles communication is key between stakeholders and developers. However, such communication in requirements needs to be clearly written down and mapped out for clarity sake. Also, what is required needs to be translated into implementation. There is a translation step required here at point of functional and non-functional requirements. There are two critical points of communication failure in agile teams. One being between stakeholder and developers. And, another being between developers in the team. Often times the emphasis is on getting the correct information from stakeholders but not fully translating them between developers. These days the members of agile teams use various tools for such communication flows. In all fairness, development teams need to understand the fact that people cannot read their minds especially if such teams are working in distributed and co-located environments. And, without sufficient translation of clear requirements in written form it becomes very difficult for developers in the team who are tasked at implementation to manage and understand them. Furthermore, the speed with which the implementation is progressed can also suffer which impacts the delivery time scales.

Perhaps, a suggestion in such matters is to keep communication simple but clear. There should be no level of complications in the requirement translation and they should not read like a puzzle where the developer has to spend time trying to decipher what another lead developer or stakeholder has actually asked for in terms of implementation. In going forward there needs to be a set of work flow targets that are agreed between team members so the progress can be smooth allowing for less issues in communication and more clarity towards completed work. There are various ways in which such issues can be taken care of. However, it depends on the willingness of developers to allow for more clarity and understanding. Often times developers stress more on the technical aspects of their work rather than trying to improve their own effective communication skills.  In a lot of ways, BDD (Behavior Driven Development) improves upon such issues as it tries to relay more acceptance work from the get go of implementation and testing. In tools like JBehave, Cucumber, and Spock such approaches can further be integrated and automated with continuous integration tests. Even going further, the work flow can be outlined and mapped using agile tools. Additionally, elements of risk metrics and other methods can be incorporated in the process. JIRA is a very common project tracking application which comes integrated with other Atlassian tools. However, when a ticket is produced the actual verbiage that is added in as an issue or story needs to be defined clearly and synthetically. My proposed approach is to automate such requirements using specific keywords using a full work flow system where such issues and stories can be mapped and managed centrally with little effort. The specific keywords can be applied through script files and be modifiable based on team requirements of project work. For example, such keywords can be used in simple defined sentences: "for", "in", "out", "allow", "apply", "change", "remove", etc. All these words imply a specific task in relation to the work that needs to be applied. Notice the two sentence phrases below. The second one is clearer than the first in what really needs to be implemented and what really is implied from the stakeholder to the developer within a JIRA ticket.
  • Filter out id that is not in the list of ids
  • Filter for id that is in the list of ids
If one gave such requirements to a developer especially to a new starter, without any real knowledge of the system architecture other than the programming language, they may in fact get quite lost in terms of what was actually implied in the sentence. Moreover, if the written requirements do not agree with what the lead developer, architect, or stakeholder actually wants you to implement then that will increase the confusion not to mention frustration even more. Plus, relying on verbal communication to a limit is acceptable but may hinder the understanding even more as well as defeat the purpose of having formal requirements specifications as a way of tracking work and building automated acceptance tests. The first one reads with a double negative and almost like a puzzle. The second clearly states what needs to be implemented. Notice the keywords like: "for", "in", "out", "not", "list". These words make a big difference and not only that but the order in which they are put in the phrase can too. The first one implies to use for-each loop step to remove from a list. However, the second one implies for-each loop step to add into a list. The general terms like "out" can be translated to imply remove from and "in" to imply add in. But, obviously such keywords are based on context. Going further, if such keywords were added into a script file and the process of requirement production was automated it may in fact help speed up communication as well as correct implementation of requirements. If one is using JIRA this can be a fairly productive aspect for a team. Utilizing work flow modeling and Java, Groovy, or Python for integration and NLP for linguistic translation. The impediment from lack of requirements or indecipherable requirements could be reduced. The very same keywords can be linked to BDD acceptance testing criteria as well. When communication can be broken down into simple granular level with agreed use of words it can help developers understand and link requirements to implementations quite rapidly in an agile process. Requirements are an important step in the software engineering process. Such requirements need to be elicited, analyzed, specified, validated and verified in the process of delivery.

21 December 2012

BBC and TV Licensing

In Britain, almost every one is required to pay a TV license fee. However, it is puzzling as to how this TV licensing revenue is managed and spent. One of the disconcerting aspects is the quality of programming that is consumed on the BBC services which is quite disproportionate to the cost incurred to the TV viewer. One of the main reasons why so many people today have started taking up alternative options for more quality entertainment such as from satellite and cable. Recently, in news there has been inquiry into how the BBC decided to pay Mr Entwistle £400,000 in payments, even though his employment as Director-General was for such a short time. Furthermore, it is a clear reflection, on the fact that a huge proportion of the TV licensing cost seems to be paid towards salaries. Is it really justified for TV viewers to have to pay such high costs in TV license fees only to see it being used up to pay huge management salaries?

According to Wikipedia, BBC revenues amount to well over £5 Billion, employing about 23,000 employees,  and the corporation as it is called is owned by the public. "The BBC is a semi-autonomous public service broadcaster that operates under a Royal Charter and a Licence and Agreement from the Home Secretary. Within the United Kingdom its work is funded principally by an annual television licence fee, which is charged to all British households, companies and organisations using any type of equipment to receive live television broadcasts; the level of the fee is set annually by the British Government and agreed by Parliament." - Wikipedia. 

If this is clearly the case, then surely the cost of licensing should come under review and should be lowered as there is no real justification charging so much to a TV viewer and then also paying such high renumeration packages to management employees. The revenues received do not even reflect the level of quality programming offered to the public.

Christmas 2012

Christmas is fast approaching and there is a real rush developing on the high streets. Sales are on and a rambunctious bunch ready to grab a good bargain within the time constraints of a busy life. Often times buying the right gift for someone can become tricky. It is almost always a call on the lines of how well one knows someone. At times the cost factor becomes an issue. On other occasions, it is really not knowing someone important or much at all brings about a sudden rush of anxiety. Especially, when one has not even had a chance to check their wish list. How will they accept your gift? Will they like it? Furthermore, the gift giving between opposite sex becomes equally as hard. Christmas has in a way turned in to a very gift giving sort of event where people expect one another to give. The materialistic desires far overshadow the abstract ways of giving. The transformations of a family home glistening with a blossoming and well lit tree is an inviting indulgence in which merry people gather for almost a very poignant orgy of eating and drinking in copious amounts beyond the limits of their bellies can hold. By the time, Christmas passes on it leaves people with over run balances and a level of stress to plan for in the next year. Not even giving them sufficient time to recuperate does the next party opens its doors. The almost sudden new years eve exhumes an aura of everything associated to fun and people attempt to make new resolutions to change specific aspects of their lives in the coming new year. The deadly cold winds like a ghost on a snowboard all the while passing and gliding through engulfing tenaciously at every thing that can be associated with the elements of winter. 

20 December 2012

Python Web Hosting

Python hosting has come along way with the inception of the cloud. In past, most hosting providers only supported PHP based applications. However, the demand for hosting and the flexibility for more options has increased significantly. There are more and more growing options available now either shared, virtual private or a dedicated. Depending on ones application requirements each one can be workable. However, shared hosting is possibly the most minimalist option there is. Python is also emerging into a stronger contender to PHP and Ruby web frameworks and is able to support larger websites with fluid ease. Developing in Python is not only faster but it is also more maintainable. Arguably, Python is easy to learn and a lot faster then Ruby. Although, Ruby appears to be a more trendy way of developing websites, it is also a quite slow and one would require a stronger architectural dependency on caches to scale up a large application. Similarly, with PHP having a large application being cacheable is a key to the performance as well the limitations of a lifecycle of a request/response. PHP in all fairness although workable can be quite cumbersome to maintain in a multithreaded, high availability, low latency, and security conscious application. PHP in my view is really aptly suited to small scale applications or ones that have a significant infrastructure backbone of cacheability  with such layers of memcache or redis. Furthermore, the use of PHP web frameworks is a bit like over engineering with a half baked language. And, even then, the major drawbacks of PHP are lack of consistency, lack of backward compatibility, quality of open source libraries, object orientation, as well as the major one that being security vulnerabilities. However, one of the core Python drawbacks is also the lack of compatibility between 2.x and 3.x which can boil down to how much one requires access to various libraries compared to a closed and isolated web application. Some of the Python web frameworks that I particularly like are: Django, Tornado, Bottle, and Flask. Python is an amazingly good multitasking and integration language. It also does a really good job for data processing and in distributed systems environments which depend on services with no single point of failure. If you know Groovy you can pretty much pick up Python and therefore the ramp up time for a Java/Groovy Developer towards picking up Python is also faster then in trying to learn up Ruby. If one is facing a deciding factor between CGI and an alternative then one must be aware that in most shared hosting they use FastCGI whether it be Ruby, Python, or PHP. However, using the passenger module does help to get  WSGI support but there is no full support for it in Python. Python, in my opinion is an even better swiss army knief compared to Perl especially for Natural Language Processing and Machine Learning. I have listed below a few Python hosting options most of the PaaS options can be fairly expensive but offer a more flexible and larger scope for development. However, as all things go on the Cloud if one's PaaS provider is dependent on Amazon as an IaaS and if that goes down then your hosting provider would naturally also be effected. 
As well as, several others....check out djangofriendlyhosting

If one requires standard website with a small scale load then one can use PHP or Python eg like a company or promotion website
If the load is relatively high with a lot of distributed data processing then go for Python e.g like a newspaper site, games site, or a search site
If the level of work is enterprise requiring more control more heavy processing, and a heavy use of JVM then go for Java, Groovy, or Scala.

Java/Groovy and Python make a good composition for most back-end lifting work where as front-end interface masking can better be handled by core HTML/CSS/JavaScript libraries and frameworks. PHP can also be used behind the scenes, like with data loads or job controls with gearman, but as much away from security and heavy lifting as possible.

19 December 2012

Semantic Web

Semantic Web is all about making the web navigation more connected by treating every aspect of the web as a resource. This also inspires the concepts of linked data or the web of data. Semantic Web essentially utilizes XML based extensible languages specifically catering for the creation of and management of resources, knowledge, reasoning, as well as querying. Semantic Web is driven from the theoretical underpinnings of Knowledge Representation and Reasoning, one of the core branches of Artificial Intelligence.

The following books are valuable sources of information:
  • Logic in Computer Science: Modelling and Reasoning About Systems
  • Knowledge Representation and Reasoning
  • Semantic Web Programming
  • Semantic Web Primer
  • Semantic Web for the Working Ontologist
  • Practical Semantic Web and Linked Data Applications
  • Practical RDF
  • Explorer's Guide to Semantic Web
  • Linked Data Evolving the Web into a Global Data Space
  • Programming the Semantic Web
  • Learning SPARQL
As well as, learning Prolog especially the SWI-Prolog can be quite valuable asset which has a detailed background in Semantic Web experimental work especially for curation and archiving. Especially, the W3C site is a valuable reference point for keeping up with the progress - SemanticWeb@W3C. And, a list of tools associated for different language implementations - SemanticWebTools@W3C. Another context of work for which Semantic Web is often connected to is the concept of Semantic Tagging for Findability. The applications of Semantic Web are numerous as it is more about the resource context and utilizing the concepts of HTTP and REST. In general, intelligence in any aspect of application has a reference point to the context in which it is used. The more broad a context one incorporates into the application for aspects of knowledge and reasoning the lower the level of accuracy. This is because intelligence is learned and is best utilized by way of contextual specialization of concepts from which patterns and logical deductions for inference can further be derived dynamically. This can be equated to every aspect of Artificial Intelligence.

18 December 2012

Mayan Apocalypse 2012

Is it true that the world will end this Friday, December 21, 2012? It seems so unreal that the end of the world should be so close by and yet people are going about their business mostly to catch the Christmas sales that came in early. Surely, the conspiracy theorists will try to find more ways to push the date forward through some strange explanation. It seems so bizarre that every time people get their dates wrong they move it forward a few more years as if people are that gullible. Even this Mayan apocalypse is based on strange new age beliefs unfolded through incorrect interpretations of the Mayan theology. How many people have gotten it wrong in past:

Mayan Apocalypse 2012
Rapture, May 21, 2011
Jehovah’s Witnesses’ prediction of the Second Coming, August 1914
The Second Big Bang, November 23, 2009
Y2K, January 1, 2000
The Great Fire of London, September 2, 1666

List of dates predicted for apocalyptic events

14 December 2012

Public Payphones

In London, public pay phones are possibly one of the most unclean places in city. The sheer amount of germs that can be caught in the phone booths is just overwhelming. Also, the service does not seem to be very well maintained and very unreliable at times especially being susceptible to outside disturbances in phone reception. The chances of being rudely disconnected become exponentially increased as one approaches towards the centrally located pay phones. No wonder mobile phones have caught on so fast in UK. On land lines and pay phones it seems to be dominated still by BT but yet on mobiles there is still some healthy competition. Perhaps, it is why technology is moving further a field at such a fast pace on the mobile front comparatively and the land line services are lagging behind. It would be great if telecommunications was so much more flexible avoiding the need to get a land line in order to get Internet. People these days receive and make calls on the Internet which seems to be a life saver especially on the monthly bill. Perhaps, one day Internet will become free and more accessible reducing the need for people to have to communicate through such limited channels. Compared to America, UK still has a lot to catch up in all aspects of telecommunications.

Tenants, Estate Agents, and LandLords

Estate agents should be best avoided. They charge tenants for admin costs, inventory costs, credit checking costs, and whatever else including as far as lying and covering up stuff to get a fast deal. As a tenant one is best to approach the landlord directly. Estate agents care very little about tenants and more about landlords. They are more interested in tenants at time of transaction after which they literally cannot be bothered unless it involves a landlord having a dispute such as with late rent. And, even then they would rather create more problems than mediate because in fact it means a potentially new opportunity to get a new tenant transaction. Most landlords are generally fine with late rent payments as far as they are aware that one is always paying their rent with diligence. However, the more you learn about a landlord before signing an agreement the better. Tenants are often caught out by either bad landlords, bad estate agents, or both. You may find one of the typical encounters where rent is expected to be paid on time and yet perhaps, contracts or inventory checking has been delayed almost by months. If one has not received a signed copy of tenancy agreement or even an inventory report by move in date then delay the next rent payment by all means until it is received. It is surprising how little tenants rights there are in UK compared to landlords. If one looks at any tenancy agreement the tenant requirements are multiple pages long usually compared to a half page landlord requirements. Tenants also need to be able to do background checks on landlords as well. It seems like every one wants tenant personal details, at times a bit too much, and yet they all seem to protect the rights of the landlord. Especially, if a tenant undergoes a credit check through an estate agency and they use a third-party it may be deemed on the tenant to pay the costs as well as the risk of getting incorrect links against their profile. Credit checks are not very reliable sources of information. They do not work in real-time nor do they provide fully up-to-date and accurate information. It seems like tenants have a lot to lose than a landlord in many respects. Also, it is in best interest of tenants to be informed about the asking rental price as well as the valuation price so they are able to better assess whether the actual rent is worth the price. At same time, when tenants start to spend a lot of rent perhaps they may also ponder at the option of getting a mortgage instead, or even part buying. It seems as a long term living as a tenant is not a very viable option for many and soon people will almost always decide to get a place of their own. Living under the roof owned by someone else is always a very limited and restricted form of accommodation. Another factor, is when one does decide to move out, the agents are always around trying to do their viewings and all of a sudden the accommodation not only becomes frustrating but it ends up feeling like a display gallery. There really are very few rights for tenants or even for their invasion of privacy. The best option really is having your own place.

13 December 2012

Travel Tracking

Seasonal travel is one of the busiest times of the year for transportation services. On other occasions it is rush hour management that can cause severe delays and disruptions to commuters. Tracking best routes and mapping restrictions and disruptions in real-time is a very plausible and useful level of analytics to have at hand for any commuter. This process will not only allow them precise information in real-time but could also allow them to fully comprehend their travel plans from source to destination in a very fast and conducive way. Most transportation networks can be mapped as graphs. Graphs are a generalization of representing the structure and relationships between data points or so called nodes. In a train network each station could be a node and each route to another node as a weighted link or more precisely an edge. Various algorithms can then be applied to work out specific natural language search requirements or more precisely the semantic context of search. This could be a sub-optimal or a greedy option. In a sub-optimal option aspects like global optimization ideas can be applied where a solution sample only needs to be good enough based on the defined function as the search space is so huge. Graph algorithms like dijkstra's shortest path,  uniform-cost search, minimum spanning trees, best-first search, breadth-first search, depth-first search, travelling salesman problem can be applied based on specific semantic requirements of travel. So, one could be looking for an option of finding the shortest and fastest possible route to get to destination before or at a certain time. Another semantic requirement might be to find the best route without connections, delays, or disruptions to travel.  Further, another option could be to find all possible routes that can be reached from source to destination with the cheapest possible price for travel. There is so much data about when one travels that finding and discovering the right information can be difficult. Data only becomes information based on the contextual usefulness. Various mashup applications can be applied that utilize web apis from public transport agencies utilizing their feeds for precise information sharing. Google transit has started their own standardization process towards travel data. However, in every aspect accessibility to right information, at right time, in the right possible way becomes crucial. This is where responsive user interfaces can become the stepping stone for a barrier free access to easy and quick information navigability. We live in an overload of data, almost everything can be translated to some form of information. Knowing how to obtain, deliver, and present such data so it can become useful information is paramount. 

Hybrid Logic Can Save Traffic In London

Actuated traffic lights with Boolean level controller logic can always seem malnourished of severely constrained logic. It seems the traffic lights in London always go off unexpectedly and very haphazard. I feel if they employed more hybridized approaches towards congestion and traffic control would be more effective. They could centrally control the traffic boards across the city but apply more significant real world situations. An off and on service has very limited service and an increased risk of accidents. Even the aspect of controlling traffic held up or pedestrians waiting to cross can be modified. Fuzzy Logic is all about the Fuzzy constraints of approximated reasoning being still between the limit bounds of 0 and 1 only relative constraints can be better controlled over a full specified spectrum of natural language domain. Smooth flow of traffic resulting in less frustrations can be controlled. Looking at times of day and variations can be applied. Classical reasoning of rigid constraints over multivariate changes are severely limited. I think in a city where roads are small and population growing as well as with multimodal means of transport it is only sensible, feasible, and yet workable to apply more intelligent methods in the works where interconnected traffic flows can be changed and modified based on patterns of usage and potential delays as well as more dynamic flows from specified natural language.

11 December 2012

O2 A Dreadful Mobile Service

Possibly the worst mobile operator in UK would have to be O2. Perhaps, even beating at odds with the likes of Orange and Vodafone. I have not tried other mobile providers but it is a sure bet that most mobile provider quality of service is dismally poor. And, to top it of you are still asked to pay for line rental when they experience network outages. Customers pay for service not for when they out of service surely. O2 also have one of the worst call centers I have ever come across. I think the word dim wits is quite aptly appropriate, or perhaps a bit too refined a description of their lack of training and common sense within the call center staff. Not to mention when I search the web I noticed similar stories coming around that people are frustrated and that people don't get paid to do O2's job. After all we pay for a service and yet they expect us to do their job for them as well. Their call centers have detailed information about customer accounts and yet they still cannot be bothered to read the information that is present on their screens. Furthermore, it's droning that the time spent listening to music on the other end until one gets through to an advisor has got to be one of the most frustrating and time consuming processes of all. It is as if people are expected to wait around while some advisor decides to pick up the call. A typical aspect of getting through to a manager at one of their call center and one can expect to be waiting around for an unusually long time. It is like the manager expects you to wait while they finish their lunch break, complete their crossword or just keep one on hold as if to display how busy they are. And, when these people do pick up they are possibly the rudest bunch of patronizing people one can ever come across. And, this is from a business that is expected to offer a service to customers. Not to mention the tiresome network outages that seem to be becoming a bit of bane with O2. I have to mention that in UK the level of service for not just mobile providers but a lot of other services is also similar. It is as if lack of quality of service is almost always the bottom of every business model in UK. Prices are inflated and service is poor. And, they expect the customer to be calm and collected otherwise they hang up. Unfortunately, for so many customers in UK frustration for lack of service is almost like the British weather. What most businesses do not seem to realize is that customers are the ones with a choice. They can always switch to another provider. One of the sure ways of losing business is not providing good service and further to lack ethics. Customers nowadays are not stupid a lot do their research. And, yet the service is one factor that always seems to be lagging behind in every business model. Most customers in my view would show brand loyalty if they received reliability of product that was capped at the right price, a strong sense of business ethics, and an approachable service model.