Skip to content

Prolog and artificial intelligence

Time I think for a bit of variety. I’ve recently started lectures on the subject of artificial intelligence and AI programming, and I have to say I find the whole subject thoroughly interesting if somewhat mind-melting if you think about it too much. There are applications for intelligent systems in the spheres of business and entertainment including game-playing, path-finding, robotics and expert systems.

The programming language we’ve been studying for this module is Prolog which takes some getting used to. We were given further lectures on propositional and predicate logic before we started the Prolog work and this has probably helped to understand the reasoning behind a Prolog declaration and procedure.

A brief point I’d like to make is that many introductory tutorials  will name their variables and predicates (functions if you like) with such helpful convention as X, Y, Z / A, B, C and P, Q, R. Needless to say this doesn’t help to convey much understanding about the operation of such functions. Prolog programming does indeed require a massive shift in perspective from programming in many other languages, and many built-in predicates are defined in this way so it is important to be able to see X, Y, Z for what they are in relation to the application of the predicate. However it might do well to describe your own identifiers more clearly. For example I found it much easier to write a function that finds the maximum number in a list using: CurrentMax and Max than X and Y!

The message is simple, but it might assist those who are struggling to understand more complicated aspects of the programming such as when lists and elements from those lists are utilised. e.g. [X | Y] can become [Element | List].

EJB persistence in a ThinWire web application

So it seems a ThinWire web application can quite easily be integrated with more advanced Java EE features. In the screenshot below you can see an updated version of my testing environment. The application now has a screen to query and update a MySQL database via a remote EJB session bean. This shows that the business logic (in the EJB-JAR) can still be highly separated from the user interface (the web application WAR).

After spending some time now using the ThinWire RIA platform I can honestly say it is definitely a mature and powerful tool for building web applications that require complex user interface features. While my test application still does not extensively test every feature one may require, it shows ThinWire is a highly viable candidate for developing business applications.

Additionally this has been a useful learning experience from my personal point of view, as a good example of deploying an EAR (Enterprise Archive) carrying a distributed system using sophisticated persistence architecture.

ThinWire progress

Over the last few days I’ve been working on developing an application designed to assess the potential of the ThinWire RIA platform as a tool for building production quality rich web applications.

The platform makes producing an application from scratch relatively effortless. There is some initial set-up involved – including removing the Mac files and folders from the ThinWire installation if you’re using Windows (there must have been a better way than the route I took which was to manually delete every one). But I found creating a buildable and deployable application, with an associated Eclipse project, was a very rapid process. The sample applications are fairly sensibly structured in order to give you a very good idea as to an appropriate development pattern to follow.

I now have an application in a healthy enough state to start testing things like persistence of entities to and from a database. It will be interesting to see if there are any behavior quirks due to the design pattern of the platform or if, as claimed, it really can cope with any Java feature you would wish to integrate into your user interface.

Building a ThinWire application – prelude

The first important note to make about the ThinWire RIA platform is that it comes with fully buildable example applications. By fully buildable I mean straight out of the box you can delve into the applications, alter and redeploy them. This may seem like a commodity where learning a new platform is concerned but many others only include code snippets or non-deployable examples that function in an unrealistic environment solely developed for testing.

Some nice things that you get include a ready to start apache tomcat application server, but also more usefully an apache ant build script for both example applications.

The build script is an excellent addition for any developer looking to rapidly develop deployable and fully functional applications. As far as I can see from examining this script and building my own test app out of it the build and deployment procedure is one of the most straightforward I have come across for an AJAX / RIA platform.

I strongly recommend developer who has never used an apache ant build script to develop and deploy their applications to look into it for future applications they may develop. IDE based deployment tools can only go so far to helping you develop and implement a web application.

Deliberating as to whether AJAX is actually a future-proof term

After thinking about my previous post for a second I realised that it is questionable as to whether it is really appropriate to use the term AJAX for many of the new ‘Rich Internet Application’ (RIA) platforms. All this jargon is harmful to the general perception of such technologies due to their inaccessibility to the uninitiated.

So in relatively simple terms an RIA is essentially just a web site transformed into a more complex web application through use of many common application user interface features such as trees, lists, calendar date pickers etc. But AJAX is a term used to describe the technology behind many of the original platforms that provide these rich user interfaces – Asynchronous JavaScript And XML. My problem here is with the XML part of the acronym as many of the newer platforms, to my knowledge ThinWire included, don’t actually directly manipulate XML in the user interface. Or at least its not part of the core functionality of the RIAs mechanism of operating. Sure you might be able to do stuff with XML data within the confines of the platform, but then you can also do stuff with many other data formats too and it would be nonsensical to list all these in an acronym describing the nature of how the RIA actually works.

Of course dropping the AX leaves ‘AJ’ which is not as audibly pleasing a word. AJ also could be prey to a similar fate as the XML in an (unlikely but possible) shift away from JavaScript as a browser language, and additionally a term describing that browser language says little about what it is used for anyway. I am coming round to the idea of calling such things RIA platforms instead to describe any kind of technology which might lie beneath a Rich Internet Application. As there are so many RIA platforms out there with many different modes of operation this seems like the logical solution.

ThinWire for AJAX development

ThinWire is an AJAX platform I’ve only fairly recently discovered, and feel unlike many others, worth a mention. The trouble with many AJAX platforms is that they tend to not offer a full package in terms of customisation and extensibility. My current favorite is GWT-Ext for its sheer versatility due to the server side code being pure Java and the client side Java that is converted into JavaScript. This offers much more scope than manipulating JavaScript directly or some new intermediary language.

What ThinWire does is push everything out to the server side code, which is written entirely in Java. There is no conversion of Java into JavaScript, the view the user gets is simply handled entirely by some server side code. This seems to me not a terrible model as your user interface can still be contained in a separate .jar than the main application logic to stop the wrong code bleeding into both. Additionally one can presumably use all features of the Java language as the UI components are simply Java classes all the way through. There seems to be a reasonably extensive library of visual components. Like GWT-Ext the UIs created with the ThinWire AJAX platform are event-based. The only downside seems to be that the project hasn’t been updated with new features for sometime, though bug fixes appear to still be being released.

Still if the whole package is essentially all Java, there shouldn’t be anything stopping a user extending the thing themselves for their own purposes. The key ’selling’ point of it is the pushing of the code responsible for the client side view out to the server.

Petition to save MySQL or damage Oracle-Sun merger?

A very quick post as a response to this petition hailed elsewhere as a righteous thing for open-source database MySQL:
http://www.helpmysql.org/en/petition

My take – brilliant; put yet another spanner in the works delaying Oracle’s acquisition of Sun and therefore jeopardise all of Sun’s products including Java which put simply seems to me much more important than MySQL.

At the end of the day business decisions are all about compromise, sometimes you have to sacrifice certain things in order to save others. In an uncertain economical climate the more the buy-out of Sun by Oracle is delayed the more damage could potentially occur. To take it to an extreme Oracle may never actually complete the purchase of Sun and then the future is bleak for all Sun technologies which would be a very bad thing indeed.

Function seems to follow form

I remember some years ago that the graphical environment offered by windowed operating systems seemed an immensely rich and interactive experience. The Windows Icons Menus Pointer (WIMP) model opened up the world of computers to an even more diverse range of users. Even more people who probably didn’t have a real need for computing started using them just because their usage became increasingly accessible.

Interestingly this enjoyable rich experience has since become one we take for granted. We wouldn’t ever dream of going back to a command-line interface for every application (although for some things, a command-line does indeed still make sense). Similarly people focused on the glitz of the world wide web early on in its development, and this again brought more diverse people to become users of computing technology.

However since the initial appeal of these media has faded, we have focused on the functionality of these things in getting our business done. As a result we have become much more impatient with the interfaces we use and less interested in the inner workings of the software itself. Instead of seeing abstract components of an interface we tend to see things literally as what they are supposed to represent.

René Magritte's 'this is not a pipe'

René Magritte's 'this is not a pipe'

This goal-oriented usage of computers has lead to a mostly two-tiered level of understanding amongst users. There are those that see the visual things they are manipulating as exactly what they represent. For them the interaction begins with their direct input put into the system and ends with the output which is generally received instantaneously. Then there are those that are aware of the underlying structures and models that are being manipulated by the software itself in order to carry out their instructions.

This variation in user perspective of computing technology is an interesting area of social differences relating to issues such as software ‘usability’. What is also interesting is the functional manner of usage users will eventually adopt with new technology. It does unfortunately breed a ‘why can’t the computer do a simple task I ask it’ mentality when a user encounters problems with an operation they are trying to perform: even if the operation is in fact actually incredibly complex in terms of the work that is carried out by the ‘computer’ and indeed any networked resources it may utilise.

Google Wave: google frustrated with Internet Explorer?

It seems google developers have been having major problems getting their new Google Wave web collaboration software to run in IE. Ignoring all the possible business motives , I’d just like to make a few comments about the actual technicalities of this.

Firstly any web developer worth their weight will know that Internet Explorer is indeed a frustrating platform to accommodate. IE does not support web standards in the same way as most other browsers and behaves very differently with each version. IE8 is better at consistently interpreting web pages and javascript but it is still not perfect (then again neither is any other particular browser IMO). However regardless of these inconsistencies web developers should still support IE to a certain extent as it is still one of the most widely used platforms for web browsing.

What makes me confused about Google’s admission they are finding IE support difficult is the fact that their own web development platforms for user interfaces, GWT and GWT-Ext, are relatively well supportive of IE. There are still bugs present when using many of the layout combinations, but I’ve worked with GWT-Ext for long enough to know that these are not insurmountable by a few CSS based bug fixes. And if I can resolve these problems I’m certain there are plenty of much cleverer individuals at Google who also can.

I know that Google Wave is not necessarily developed from the GWT/GWT-Ext framework, but regardless of the way they have developed it I find it hard to believe they cannot support IE directly.

The fix seems to be some kind of add-on to IE to make it support Google Wave which seems to me a counter-productive step. If you start treating one target platform very differently from the rest, surely you’re setting yourself up for further cross-compatibility problems down the line?

Current systems analysis techniques + outsourcing to skilled people != (not equal) to success

An interesting topic of conversation has come up in our systems analysis course module about the choice of developing bespoke in-house solutions, outsourcing, and purchasing solutions.

Ultimately the evidence (empirical and anecdotal) seems to point towards the fact that outsourcing work does not in fact save money in the long-term! Shock horror!

The main reason cited for this is the clear communication problems that can occur when work is outsourced to a development organisation in a foreign country. This communication barrier is due to a combination of factors, and I believe is far more complex than one might assume by face value alone. It seems that systems analysis and design techniques are relatively sophisticated these days with the inclusion of detailed Object Oriented class diagrams. It is also true that developers in foreign countries often do have qualifications that should indicate they are capable and skilled programmers and it is also true that many have qualifications that are supposed to assert their aptitude at carrying out work outsourced to them from another country.

You would think with this combination of design skill on the outsourcing side and development skill on the ‘outsourcee’ side that these projects would be really rather successful.

However as I have already mentioned this is often not the case, with the company paying for the outsourcing often also having to pay for large amounts of quality assurance (QA) in order to check and fix poor quality coding. All the factors to blame here seem to essentially come down to this communication problem: That these people are not working together in the same office, with the same level of understanding of language, cultural and business paradigms. As a result all manner of misinterpretations occur and cannot be resolved due to the lack of easy clarification of problem areas.

This leaves both sides quite able to hold their hands up and say: wasn’t my fault this didn’t work out!

I do not presume to be so clever to present a solution to this problem. Sometimes outsourcing software development is successful. But it seems clear that currently the software industry is still not a universal language-independent industry. With software different people work in different ways on different problems. While some applications of software development are common and proven, such as many e-commerce solutions for shops that wish to sell their stock online, many more applications of software development are so hugely varied and often previously unexplored.

Anyway I’m rambling on now. From a programmers perspective it is curiously appealing to think of software development as  a bit of a mysterious art, from a business’ perspective it is probably hugely frustrating.  However when skilled people are working together collaboratively in the same environment – both analysts and developers – it is a very creative and productive atmosphere. Under these circumstances people are much more effective at establishing a clear design and implementation pattern that works for them.

In short the most important tool to use in the specification of a software system still seems to be verbal communication in person. This allows discrepancies to be clarified and the project as a whole to be managed in a consistent manner.

Web application architecture

As a way of keeping my knowledge of web applications fresh in my mind, this is a quick post on the architecture of common web applications, taking into account the varied scale of such applications.

While I’ll refer in particular to the Java Enterprise Edition based (J2EE) solutions, the principles of structuring an application are the same in other development platforms.

So from a high level perspective, the following components are common to most web apps:

Server Side Components

Permanent data store: Most usually a relational database (RDBMS), which can be interacted with through SQL. This can take any form of interaction; from other parts of the application simply manually connecting and running SQL statements to quite complex persistence management components which automatically update and query the database using the objects in the system.

Data model: An abstraction of the information that the application needs to manipulate, generally always defined as classes in an Object Oriented manner in the relevant programming language. They may for example mirror members of a particular web-site and their member details, or items in a catalogue. These model classes take varying levels of complexity; in Java they may be Plain Old Java Objects (POJOs) or more complex Enterprise Java Beans which can directly linked to the database using a persistence management component.

Persistence manager – A layer which acts as a middle-man between the data model classes and the data source.

Interaction controller: The controller manipulates the data model based on the interaction the user carries out in the user interface. This can be a very thin layer, but it’s existence is important to act as the entry point to the server side components – seperating business/application logic from the user interface. In Java web development this is usually a servlet.

Client Side Components

User interface: A full blown application or website that is run on the client machine, most often in a web browser. There are a variety of technologies which may be used here. It could simply be a HTML page using HTML forms or it could incorporate an AJAX-style language that uses javascript, or converts its code into javascript. The primary reason for using javascript as a client side run time technology is the convenience provided by the incorporation of javascript interpreters into nearly all web browsers, meaning users needn’t first download anything to use the application. Often as far as a user is concerned a web-app is simply another web-page offering more interactivity than is usually available. The complexity of this layer depends on the complexity of the UI components required.

The separation as to where certain code and features of an application should go is an important business issue, as there are certain issues relating how thin the client side is. Generally it should be as simple as possible, as it is harder to maintain client side code and carry out complex processes there.

Anyway that’s a very straightforward summary of the common structure of web applications. The specific technologies used to implement web app solutions vary incredibly and there is no right or wrong mixture of technologies. It is important not lose sight of the overall architecture of web apps and not get bogged down with doing too much with one very specific technology and try to do everything in that space (which you might do if your very familiar with it or like it better than another). The fact is that development is a process of breaking down problems into ever smaller chunks which often require different approaches to solve.

Systems analysis distilled

Following on from a recent post of mine about the appropriateness of some systems analysis and design approaches to today’s computing challenges, I have drawn a diagram that is an attempt at doing exactly what I believe is the only way forward for systems analysis – distilling it into a more scalable and relevant solution.

Essentially all I’ve done is kept in the most important parts of traditional ‘SSADM’ style analysis: defining the organisation in terms of data flowing through system processes, and assessing the possibility of improving these business processes. The former stage I have referred to as system data flow and the latter I have redefined as business development decisions. The final stage I propose is called technical development decisions. The reason for defining these stages as ‘decisions’ is because that is predominantly what the process of analysis is itself – making decisions with valid justifications.

My version of systems analysis I have tentatively named systems analysis distilled.

You may be wondering: Why did I bother? Well, as described in the previous post, my reservation with traditional systems analysis is that it does not relate well to the technical implementation of solutions. Likewise simply using an Object Oriented approach when carrying out systems analysis doesn’t cover the business considerations. There are also issues with the scalability of traditional methods – there is too much padding (in terms of drawing diagrams and ‘logicalisation’) certainly not relevant to smaller organisations, and if we are honest some are not relevant to any organisation today.

More than this though, my motivation is actually to clear up the confusion about how the analysis as a whole fits together, and how this fits in with the entire development lifecycle; from analysis to design and implementation.

So for those that may be interested, assuming there are any, behold systems analysis distilled

diag

(I don’t expect the diagram to convey everything I am trying to explain, but it should give an idea)

Please bear in mind all work on this blog Creative Commons licenced

Is a framework really a solution?

04_10_80---Construction_webAt the risk of procrastinating other work and becoming a chronic poster, I’m going to go for a second one today.

Following on from my previous post discussing the merits and woes of particular IDEs, an overriding theme which runs through my dislike of the .NET framework is the fact that it is a framework. Taking the literal meaning of the word framework – I can explain my issue with the things quite easily. You see a framework in its true sense is like scaffolding – it is used to hold something up and to keep it together. The trouble is you take the framework away and you are left with something that doesn’t hang together properly. I’m not the only one with this concern about a framework development pattern, plenty of developers share it. Aside from the difficulty of integration with things external to a framework based development environment – it’s hard not to fall into the trap of developing frameworks for your own use. The convenient few classes you have used repeatedly to help you out can grow out of control into something that is horrendous to maintain.

The alternative to framework based development is to ensure as much modularity as possible, which requires thinking about how your programs and classes may be used from another developer’s points of view. The more your code can function autonomously, the easier it will be to maintain.

One of the big problems to avoid when programming is making a whole ‘toolset’ which can only be used on its own. You wouldn’t design a screwdriver that can only be used in combination with a drill and spanner at the same time, so why program like that?

Visual Studio Express editions are better than full Visual Studio…?

The benefit of writing a blog is that every once in a while you don’t have to be entirely objective in your writing, so as a caveat to this post – that is exactly what I’m going to do.

For a long time I’ve harboured the opinion that Microsoft’s development platforms are not as accessible to a developer looking to learn the technology as other platforms are.

My basis for this belief is Microsoft’s apparent ‘we’ll do things our way’ approach to development. You have a steep learning curve to deal with as everything in Visual Studio is presented as their interpretation of a programming language, so to speak.

I firmly believe that at the very least for a developer learning a language or wanting to simply write some straightforward code for a standalone application – the Express versions of Visual Studio are the way to go. You needn’t worry so much about the IDE trying to make use of a lot of stuff you don’t really want in your project.

Part of the problem with full Visual Studio is that it is intended for use with Microsoft’s own whole seperate world of development technologies, as an independant package. The whole philosophy of which is that you can’t pick and choose which stuff you like and make use of just that. Generally once you go down the route of developing a Microsoft solution, it must be Microsoft all the way with all the niceties, not-so-niceties, and quirks in between. Of course this is a good business strategy and it also means that Microsoft get total commitment from developers that choose to use their platform commercially. However for many developers who do not have this full unwavering faith (and perhaps financial investment in terms of using / being a stakeholder of Microsoft products) it can be very annoying. Don’t get me wrong, I want to learn about the Microsoft family of development technologies, just not exclusively.

The essence of my argument for Visual Studio Express over the full version is that it is simpler. Personally I like simplicity in development platforms, it helps you understand new concepts better and really get to the root of what is going on behind everything you put into your code. Because you have to pay to gain access to more features of the .NET framework and associated development tools, the free Express editions do less for you and don’t have the annoying habit of trying to integrate features you don’t want in your Visual Studio projects.

Of course my own views on the usability of Visual Studio in general may be shaped by my familiarity with Java integrated development environments (IDEs). Nevertheless I feel my animosity towards Visual Studio is not unfounded having had several ‘bad expriences’ with it.

As an alternative to Visual Studio if you’re really looking to learn a language such as C++ from the ground up, and don’t mind applying an extra bit of your own mental steam, the old school approach of a text editor and compiler/linker is probably one of the best methods.

I think we try to be too clever and do too much in all walks of life, particularly in the computing industry, to the detriment of what we may actually be trying to achieve. It is worth considering that perhaps IDEs need to be much more text-editor like by default and allow you to choose which additional features you want for a project in a very clear and concise manner. I would choose choice of simplicity versus complexity over complexity alone, and I would choose simplicity over complexity if choice is not an option. The latter is why my preference is for Microsoft’s Visual Studio Express Editions over the full version of Visual Studio.

Visual Studio Express editions are better than full Visual Studio…?
The benefit of writing a blog is that every once in a while you don’t have to be entirely
objective in your writing, so as a caveat to this post – that is exactly what I’m going to
do.
For a long time I’ve harboured the opinion that Microsoft’s development platforms are not as
accessible to a developer looking to learn the technology as other platforms are.
My basis for this belief is Microsoft’s apprent ‘we’ll do things our way’ approach to
development. You have a steep learning curve to deal with as everything in Visual Studio is
presented as their interpretation of a programming language, so to speak.
I firmly believe that at the very least for a developer learning a language or wanting to
simply write some straightforward code for a standalone application – the Express versions
of Visual Studio are the way to go. You needn’t worry so much about the IDE trying to make
use of a lot of stuff you don’t really want in your project.
Part of the problem with full Visual Studio is that it is intended for use with Microsoft’s
own whole seperate world of development technologies, as an independant package. The whole
philosophy of which is that you can’t pick and choose which stuff you like and make use of
just that. Generally once you go down the route of developing a Microsoft solution, it must
be Microsoft all the way with all the niceties, not-so-niceties, and quirks in between. Of
course this is a good business strategy and means that you get total commitment from
developers as well.
This essence of my argument for Visual Studio Express over the full version is that it is
simpler. Personally I like simplicity in development platforms, it helps you understand new
concepts better and really get to the root of what is going on behind everything you put
into your code. Because you have to pay to gain access to more features of the .NET
framework and associated development tools, the free Express editions do less for you and
don’t have the annoying habit of trying to integrate features you don’t want in your Visual
Studio projects.
Of course my own views on the of Visual Studio in general may be shaped by my familiarity
with Java integreated development environments (IDEs). Nevertheless I feel my animosity
towards Visual Studio is not unfounded having had several ‘bad expriences’ with it.
Alternatively if you’re really looking to learn a language such as C++ from the ground up,
and don’t mind applying an extra bit of your own mental steam, the old school approach of a
text editor and compiler/linker is probably one of the best methods.
I think we try to be too clever and do too much in all walks of life, particularly in the
computing industry, to the detriment of what we may actually be trying to achieve. It is
worth considering that perhaps IDEs need to be much more text-editor like by default and
allow you to choose which additional features you want for a project an a very clear and
concise manner. I would choose choice of simplicity versus complexity over complexity alone,
and I would choose simplicity over complexity if choice is not an option. The latter is why
my preference is for Microsoft’s Visual Studio Express Editions over the full version of
Visual S

The problem with system analysis and design approaches

In the process of studying formulated analysis and design approaches relating to modern business information systems (IS) a clear problem presents itself; dealing with the varied nature of information systems in the currently rapidly developing computerised process improvement industry.

In short, stuff has changed an awful lot in just the last 5 years in development of business software. A slow awakening to the need of automated, computerised and online information systems has prompted a growth in varied businesses investing in software development. The wider the range of potential investors in technological business improvement, the harder it is to specify an approach for developing technology based solutions.

As such, texts written on the subject more than just 4 years ago seem outdated in their approach to, at the very least, the implementation phase of proposed systems solution. For example many design techniques may refer to defining file and database ‘records’ that may store data. Today people need to consider the possibility that their system may not deal in files at all considering the internet based nature of many modern business applications, and the database considerations are generally auxiliary to the overall architecture of the solution.

Of course many business systems are so outdated to the point that any form of automation is hugely beneficial. But with organisations in which keeping the level of technology in line with modern standards is necessary (e.g. to do business with other similar organisations), it is critical to make sure that the resulting solution is developed with internal extensibility and compatibility with other information systems in mind.

I think this problem of defining a set approach to the design and development of new solutions is perhaps why current thinking on how to analyse and design business systems seems fragmented and over-cooked. If anything the increasing variety of solutions available (such as web services and multi-tier systems), should lead to a more simplified design process focusing on common milestones required regardless of the potential technology required to implement the solution.

In essence what I’m getting at is there is a need to boil down and distil this avenue of study into a more concrete doctrine which may prolong the future of the interest in the business considerations which are very important to the success of software development projects.

Considering language and writing style in technical articles

One thing I’ve been thinking about a fair bit lately and trying to develop is an appropriate and concise writing style for this blog, and other technically themed articles. I believe my choice and usage of language is generally reasonably good, but I still read back over some of the things I have written and feel like stamping large sections of my writing with ‘could do better’ in red ink. It’s something that I think most scientific university departments attempt to encourage you to develop but unfortunately (and I suppose rightly) it is not generally ‘on the curriculum’. In light of this I suppose the best course of action is to develop it by practice and by reading well written technical texts and articles. So that’s what I’m attempting to do lately. I have found a short, but nevertheless very useful article here:

http://www1.cs.columbia.edu/~hgs/etc/writing-style.html

Back to the land of academia

So, the summer is over. I’ve completed my period of work in the wacky world of software development and enjoyed my time spent there thanks to the good people who decided to take me on. I’ve learnt a lot, and achieved a lot in a twelve week period.

I travel back to university tomorrow to enjoy a slightly different lifestyle for another year, and as usual am looking forward to it. I do feel an exposure to the practicalities of software dev has really helped to consolidate what I already know and will undoubtedly give me useful experience to draw on in the future. I think college and university courses should offer more vocational experience in some way, because it is a very useful way of accelerating your learning.

The dawn of the new academic year is almost synonymous to a new year by the ordinary annual calendar, and on this academic new years eve I feel ready for anything my next year at uni can throw at me.

Hotmail interface doesn’t like long words!

I almost couldn’t believe it when I saw it. I emailed myself some rather long URLs to look at another time and on opening the email i was confronted with this:

The message displays but cuts off the string of text at a certain point. It allows you to then click a button to display the rest of the message. I really don’t know how they thought this would be a useful feature! Of course to provide a scrollbar does shoot the big advertising bar on the right side off the screen, perhaps this has something more to do with it! Although personally I wouldn’t be too bothered if the text simply wrapped if its larger than the viewing pane. Oh well…

The targeted internet advertising debate

A recently reported story on the BBC news website discusses the issues related to targeted internet advertising. A few weeks ago I made a post about my opinion of internet advertising and stated that:

adverts that are for products I have no interest in or products that I in fact dislike the very idea of, are where the frustration lies. Unfortunately that’s a subjective thing, and makes me think that perhaps much or all of current internet advertising should be axed or at the very least better targeted to the user

So I found it interesting that groups such as the Centre for Digital Democracy are building a movement against targeted advertising on the grounds of privacy.

However as I explored in my last post the alternative to adverts that are not targeted is shoving adverts that bear no relation to the user in their face. Mike Zaneis, vice president of public policy for the Interactive Advertising Bureau told the BBC that

…the beautiful thing is they don’t have to click on that advert, or pay attention to it or do anything.

This statement aggrovates me just about as much as inappropriate advertising does because most online advertising demands you do pay attention to it, especially if it is animated. I defy anyone not to at least notice moving advertising on an otherwise static page, particularly if the advert obscures the content you are trying to read.

I fully understand the need for advertising to support online business, however I feel that people on both sides of this argument are missing the mark. There needs to be a compromise between privacy and how appropriate the advertising is to the user. And the visibility of internet advertising has gone way too far, with adverts even imitating common parts of the websites they appear on and sometimes requiring user interaction to minimise them otherwise they take over large parts of the page. In my view this is a borderline adware tactic.

Internet advertising needs to evolve in a more intelligent way otherwise it may suffer the fate of many ‘pushy’ sales techniques in alienating the potential customers and therefore websites declining to opt for it in fear of losing their user base. In my opinion there is nothing ‘beautiful’ about internet advertising in its current state, and simply saying it can be ignored is just the same as saying television and printed media advertising can be ignored. The difference is a computer is the domain of the user, they like to have control of what they are viewing and the world of the internet has the technical infrastructure to make this possible and could be a sophisticated medium for subtle and acceptable advertising. At the moment it is simply yet another annoyance built into our technology among many that will eventually fall prey to technological natural selection.

Google chrome bug

Has your installation of chrome stopped working?

Have a look and see if the suggestion in this link helps: http://www.google.com/support/forum/p/Chrome/thread?tid=2680b41d121dc73a&hl=en

(you may have to hunt for the directory in order to run the relevant file)

I became frustrated by this problem myself which has occurred several times now on my Vista laptop. The solution, which I haven’t really looked at in any detail, seems to involve forcing a rename of a google exe using the setup.exe

I suspect chrome fails to properly rename the relavent exe when it updates itself. Previously I went to the trouble of uninstalling then reinstalling the browser, now at least this provides a quicker solution. On uninstalling I provided feedback on multiple occasions that I was only doing it because the thing stopped working, and otherwise I was relatively satisfied with it !

I thought it worthy of a post to raise the profile of this obviously relatively common issue so that at least people can resolve it for themselves quickly. Hopefully though the chrome updating system will eventually be fixed so that this no longer occurs.