Skip to content

Developing Android Apps… step 0.1

Hello World on Android

Well, from tiny acorns mighty oaks do grow… I really should be asleep, but here’s a screenshot of my new Android tablet (an EKEN M-001) running my first Android application.

I will leave any comments on the development SDK till later. Generally seems quite painless to write small applications, complying with Android standard app architecture and following an appropriate UI style might take a bit more getting used to.

Is leaving an online legacy a good thing?

Although this may be somewhat morbid subject matter, it is an important issue relating to todays socially networked and internet centric culture in highly developed countries.

To begin with you might think that the fact that your online presence is likely to outlive you is a somewhat comforting one – after all most people would like to think they would leave behind some form of legacy when they die. And of course people can pay their respects by emailing relatives from anywhere in the world, creating tribute web pages and leaving facebook messages etc. However it is worth considering that for some people an enduring reminder of a loved one’s death may not in fact be very comforting, particularly if they died in tragic circumstances. I recently read an article about two obviously very bright but also terribly troubled researchers in the field of Artificial Intelligence. Both sadly commited suicide around a similar time a few years ago, although neither of the events were linked or seemingly related. Both these bright young people most likely believed strongly in the great ability of the internet to allow ones achievements to live on. But you have to wonder whether, for the families and friends that were affected, certain reminders of such tragic events are quite painful to have to deal with.

Not only can other people leave both positive and negative comments about a person online, social networking sites like facebook that are not under the full control of the family or friends present issues like dealing with the removal of personal information, and stopping unsensitive things happening such as ’suggestion’ type services which ask one to interact in some way with a person who is no longer alive.

As life with a heavy online presence becomes increasingly normalised, the superficial advantages on the surface give way to expose some much more serious issues which we deal with on a fairly regular basis in real life but which are uncharted territory on the internet.

This all links in with the privacy debate surrounding the internet as a whole which I feel is set to become one of the huge legal and political issues relating to the computing and technology industry, and I can only hope that such issues are not ignored by software giants, policy makers and politicians and the public at large in favour of the reward offered by advancing the online world.

Staying on the ball at work… keeping your mind fresh

It’s important to be aware of your productivity at work and the factors that can affect it. I thought I’d share some tips I find particularly useful as a software developer to be aware of, although these can apply to countless other jobs.

Any work can be potentially mentally taxing, but software development can be a particularly cerebral activity requiring a lot of concentration. Every programmer will know how difficult it is sometimes to juggle system architectures, models and concepts as well as more specific programming language related constructs and syntax. The complexity of these tasks can be comparable to solving mathematics problems and manipulating scientific theorems. Any intense thought processes take their toll on your energy and occupy your mind, and the more they do so the more difficult solving problems can become. When you add into the equation any work or home related stress and project deadlines that may crop up,  this can become all a bit much and even affect your wellbeing. Here are some tips for keeping your head fresh at work that hopefully may prove useful:

  • Take regular breaks – this is probably the single most important piece of advice to follow to increase productivity and your wellbeing too. It can be difficult to adhere to this particularly when a problem presents itself, however this is exactly the sort of situation where a break is most beneficial. If you can arrange to have a short break every hour or two, it will help to alleviate fatigue and can give you a fresh look at your work. Sometimes seeing a problem from a new perspective is exactly what you need to advance with your work.
  • Make notes – no matter how intelligent you are there is a limit to the amount of information you can keep in your head at any one time. The chances are that the more you try to remember, the more things you will as a consequence forget. It’s much better to make a few notes either electronically or physically to remind you of things you need to do or be mindful of in relation to your work. Sketching diagrams and scribbling down your ideas can also help where design is required or you are having trouble understanding something in particular.
  • Communicate – this is both important to do in order to share ideas and obtain assistance from others, but also simply to keep socially active and avoid feeling isolated from your colleagues. Software development can often be a somewhat solitary activity where words are rarely spoken amongst people. However for most people, the less you interact with your work peers the less pleasant your work environment may seem to be. The odd conversation can help to lighten the mood and boost your confidence in the work you are doing.
  • Pay attention to your working environment – this one is carefully worded because there are several potential issues here. Firstly, the physical surroundings in which you work can have a big impact on how you get on at work and your feelings about your job as a whole. An ideal environment for many developers would probably resemble their own desks in their own rooms at their own homes. Really what I’m saying is that its a matter of personal preference and so any opportunity to improve your surroundings to your liking should probably be taken. If you feel comfortable and relaxed you’re probably going to work better as a result. Also though, there are aspects of your work environment beyond your control and so it is worth being aware of how you feel about these aspects. These external environmental factors can be poignant enough to make you feel very negative about things. If this is, or has become, the case then you really need to monitor the situation and consider your options to improve the situation or remove yourself from it entirely. Remember that work is not a selfless act, you do it in expectation of something in return, and if it is not providing for you what you need in any particular aspect it is time to consider moving on.
  • Monitor your physical and mental wellbeing – these things are affected by so many factors I could not possibly list all the things to watch out for. But be aware that everything from your working hours to your diet and leisure/hobby activities can affect your physical and your mental health. It is easy when you’re working hard to ignore how you are feeling personally and your health in general. However one of the most important things in your life is your health so you need to avoid causing yourself any harm and take any problems you may be experiencing seriously and talk to a doctor about them.

At times you may have to actually force yourself to be mindful of these things, it is easy to forget or ignore them – we all do it! However it is worth it in the long run to be happy when you’re not at work and at the very least content as often as possible when you’re at work. And the more this is the case, the more productive you’re likely to be.

Hacking spam bots and web crawlers

Unless you’re someone that actually writes and benefits from these things, you could look at the vast quantity of unsolicited rogue bots and web crawlers as a huge nuisance. However even if you are on the receiving end of such unrelenting software, you could also view it as an opportunity to turn the situation on its head. It occurs to me that like any website that bots may themselves hack in order to extract or publish information, one could develop a website or web application to hack the bots themselves in a multitude of ways.

Now I’m not suggesting for one second that someone cause malicious damage this way (hacking in my dictionary defines a very wide set of computing practices, not necessarily with bad intentions). However there are interesting possibilities with this kind of reverse hacking, including spam prevention, SEO manipulation, and identification of bots and their method of operation.

Personally I don’t have the time or need at the moment to investigate these possibilities, but I thought I’d provide some food for thought – nuisance bots could actually be a useful resource.

EU plan to make technology more ‘open’… Is legislating on technology realistic?

http://news.slashdot.org/story/10/07/01/160239/EU-Plans-To-Make-Apple-Adobe-and-Others-Open-Up

It seems the EU are interested in introducing legislation to make big tech companies open up their technologies by using standard formats and interoperable interfaces. On one hand this vision of the future seems like a bright one, but on the other there is a big question as to whether it is really realistic to do this and how on earth the rules relating to this interoperability would be possible to define.

Trying to legislate on technology related issues is an extremely difficult thing, largely because only a very small minority of people will fully understand both the technology involved and the legal consuquence of imposing such legislation. This is why law suits involving technology companies are so horrendously expensive. There is also the issue that technology has been a world-wide market for some time now and it is impossible for the EU to introduce laws that affect distrubuted systems which operate outside of Europe.

One slashdot contributor summed up my feelings on the subject with the following comment:

What? (Score:5, Insightful)

by jim_v2000 (818799) writes: on Thursday July 01, @12:59PM (#32759272)

“Any kind of IT product should be able to communicate with any type of service in the future.” [EU]

What does that even mean?

Indeed defining what any statement so sweeping as that above really means is impossible and the statement reflects a chasm between recognising the intention for good in this proposal and understanding the reality of what it actually entails.

Virtual Machines – the open source way

Today I spent a few minutes checking out VirtualBox which is Sun/Oracle’s  open source Virtual Machine (VM) system which is free for home use. Once downloaded you can visit http://virtualboxes.org for a large number of OS disk images which are relatively easily installed. I did have to edit the XML file it puts into your user profile, I will see if there is an easier way to do this or if these instructions are provided somewhere obvious and if not post the relevant info up here.

What VirtualBox enables you to do is host any number of VMs which can be launched on your desktop as required. For those that are uninitiated VMs are very clever software virtualisations of physical machines

. They have applications ranging from a home user trying out a new OS such as a linux distribution, to software developers using them for testing and simulation of distributed software.

The system compares well and has many similar features as the most popular VM products from VMware. As far as any detailed analysis goes, as yet I can’t really offer an opinion, I’ve not enough knowledge of other VM products and haven’t used VirtualBox enough to really say anything much. From initial impressions it seems to compete well. Here you see a screenshot of VirtualBox running a Damn Small Linux image.

Mobile Devices – niche products versus. the features checklist

By now really, much as I have a dislike for gimmicks, I cannot deny that mobile devices are a ubiquitous part of everyday life. Nearly everyone in the UK has a computer on their person, and that computer is likely to have a powerful processor, an updatable Operating System, numerous pieces of software, several databases, some form of internet access and probably many other features.  These things are useful in a multitude of ways, and I think the real test as to whether they are a pointless gimmick or not depends on the user’s usage of the features.

What is somewhat frustrating though is that because mobile devices reach such a wide audience, they often fail to accommodate for a particular section of society. Most mobiles are marketed at the broadest range of individuals as possible, and as such attempt to do everything they possibly can as well as possible, prioritising only the features that appeal to the majority of the market. This leaves people with an amount of choice that is paradoxically both incredibly broad but also guilty of not catering enough for specific niches. Why do we need a netbook that touts potential for ‘multimedia’ usage as well as internet usage? Some folks might be quite content surfing the web and reading plain old text without watching videos as well! And the two are a very different purpose: compare e-readers with iphones (and ipads) – the design is deliberately different. So why are there hardly any web-readers? At best one can find a handful of  good quality ‘Mobile Internet Devices’ which aren’t phones and don’t focus on multimedia delivery.

I’m not against mobiles that can do everything, but sometimes I might want to buy a product for a more specific purpose – because a phone just can’t do everything as well as a product designed for a specific purpose.

On the software side, I agree that people want choice more than anything. But the problem is real choice isn’t a lock-in operating system or an App Store which is designed to turn the people who made the hardware a tidy profit. I’m happy to pay for software but I want to feel I’ve chosen the software, not that someone’s chosen it for me. And I want to at least have the option to tweak under the hood, and again if necessary I’d pay a small premium for an optional OS that offered such flexibility.

Its a shame that because the success of different types of mobile devices is driven by the mass target market, new innovation tends to emerge rarely. When it does happen it often becomes quickly absorbed into the ever-growing list of features that any new mobile device seems to have to implement in some way. Using this mobile features ‘checklist’ to develop new products gets in the way of any really creative developments which come from trying to solve a more specific problem on its own, or implement something in a better way by focusing entirely on it. I can only hope that more specific mobile devices will co-exist and thrive alongside their more all-encompassing cousins.

The importance of communication

The last few days has provided an interesting lesson in the importance of communication when designing systems and developing business ideas. By now I’ve had chance to discuss some of my own ideas with a variety of people and its proved very useful both from my point of view clarifying what I’m attempting to achieve and also receiving feedback from an outside observer’s point of view. Talking to someone, no matter who they are about a problem, whether its a business problem or a life problem always seems to help one way or another. In this case its a business proposition and it has been worthwhile to air my ideas that have been rattling round in my head for months. Without this outside involvement, you run the risk of becoming so closely wrapped up in what you’re trying to achieve that you may be taking a dangerously blinkered view of the whole thing which can be bad – even if what you are working on has the potential to be an amazing solution to a difficult problem. Sometimes it can even be the case that you don’t know, or aren’t focusing on, the good points of your solution because your too busy ironing out the faults you’ve identified because you know the subject matter so intimately.

I’ve found people can be surprisingly approachable about discussing things you may wish to achieve as long as you have enough material to talk about and believe in what you’re trying to do.

I think communication is a trick some people do miss which causes problems long term in business and in one’s personal life. Even if you’re not the most confident of individuals, discussing something on the internet can be a useful tool. Sometimes you can reach the exact types of people you’re looking for to discuss something on the internet, although of course the opposite is also the case (but even this might help you to decide that perhaps your target audience differs to the audience you originally envisaged).

So there’s a bit of food for thought for anyone thinking of developing their ideas into something productive; its worth approaching and discussing them with the relevant people, after all you’ve nothing to lose.

A bit of positivity

It seems my blog is receiving a fairly respectable amount of hits, considering the specific and nerdy nature of some of the posts which is nice to know. If anyone reading does have feedback or is interested in further information about any particular topics please do let me know. There are a few things I’m currently working on, including Prolog and Java interactions via the web. I am hoping to offer some contribution to the SWAPP API for SWI-Prolog, while I am working on a commercially oriented project that makes use of the API. I also hope to generate some commercial interest my project and pitch it to interested parties. At this early stage I don’t want to give much away, and indeed the project has some way to go yet anyway, however if anyone is interested I’d be more than happy to discuss the project with them.

Exams are nearly over, which is a great relief and the sun is shining here in Norwich. Things can indeed only get better as in a weeks time I will be making my way to France for a holiday with my lovely girlfriend and my housemates who will all be graduating this year. Bon voyage!

Google you’ve changed!

Interestingly Google have not only altered their look recently, they’ve changed some aspects of the core functionality too.

Unfortunately for me this means some of my web-sites don’t seem to get listed as highly as they used to and my inevitable bias is telling me that this change is bad!

In fact, I can’t help but point out a few criticisms:

  1. Aesthetically everything seems to be aligned to the left hand side and leaves a massive gap on the right – why not fill the space instead of giving me ‘blah blah blah…’
  2. The screen doesn’t resize, its fixed to your screen size so if you make the window smaller it doesn’t wrap the text.
  3. More importantly searches seem to be ordered differently, something I wouldn’t mind too much (as I’m sure its a very difficult job to please everyone with the search ordering), however the options on the side menu allow you to search for everything apart from just plain old web sites. Perhaps they just aren’t web 3.0 enough to be considered important these days?
  4. Why have we got two menus which seem to do the same thing now – one up top as has always been, and one new side menu which only seems to be different because it has a pretty icon beside it?

The more I think about it the more I’m starting to consider alternatives, and that says a lot: The fact that I’m prepared to waltz over to bing or altavista is quite a paradigm shift, especially as I generally use Chrome as my browser of choice and generally largely support Google’s end-user services.

I am confident if I have a little to say on the issue plenty of people are completely up in arms about it and this will not be an issue that will easily disappear.

Personally I just want Google’s search engine to be what it has always stood for – a simple way to find web sites. I don’t really care about customizing the look, and its much higher on my priority list to find the most relevant web site I’m looking for, not the page or specific content such as images, blog posts and most certainly not updates/tweets. And before anyone would suggest otherwise – I am a young person and I’m sure I can speak for plenty of us when I say I’m really not interested in gimmicks like twitter.

Apple really love a lock-in

Picture the scene – you’re at your favorite bar or pub, everyone’s cheery and the drinks they serve are superb. Last orders has been called and you don’t want the night to end: along comes the manager and guess what – he’s declaring a lock-in, fantastic!

But then consider this rather different scenario – you’re in a dingy back-street hovel of a hostelry, the beer they serve is stale. The night was looking alright when a lovely looking member of your preferred sex shows up and flashes you a smile. But they’ve gone home early, and you’ve no reason to stay – you just want to be tucked up at home and watch your favorite DVD to cheer you up. Unfortunately for you: along comes the manager and guess what – he’s declaring a lock-in, oh dear!

When I heard that Apple were not supporting Flash on the iPad I was somewhat dismayed, I was even more surprised to learn that they don’t support it for the iPhone either. It’s not that I care hugely about having Flash support, what is concerning is not having the choice and being subject to a technology lock-in. It’s a sad state that the health of a technology is not determined by its technical brilliance or its popularity, but by whether it is supported by the big players in the market. Personally I think if there is one overriding thing that rational people want out of a computer it as much freedom as is completely possible. Everyone knows what bad software and hardware look like, because they’ve all experienced ‘an unexpected error’ occurring, and we should have the right to say – no thanks I’ll use an equivalent product because its more stable (or offers more features or just because it looks pretty!). What’s the solution? Well if you like freedom, do shop around because your purchase is more than just a shiny product [which is re-branded old technology that doesn't come with a proper keyboard] – its an investment in the producers ideology.

As a caveat to this post – I’m not saying Apple is a bad company, or that their products are bad. I wouldn’t want to put those words in people’s mouths, I’m just advocating considering the overall philosophy of the company you are buying from and whether it matches your needs.

OZ – the vastly different programming language

I finally took some time recently to inspect a language I’d been intrigued by for a while. That language is OZ, the implementation of which is called the Mozart Programming System. It is a self described multi-paradigm programming language. This concept both arouses curiosity and suspicion in me. My curiosity being that there is a possibility that elegantly merging different styles of programming could create a very powerful development environment, my suspicion being that this is a very difficult thing to do without leveraging existing languages and there is also a danger that you pollute all that is good about the separate programming paradigms you are trying to incorporate.

Nevertheless I tried to be open minded and receptive of the platform and relate it to possible uses I can see emerging for it. However after some inspection I can only conclude that while the intention is good and a lot of hard work has obviously gone in to Mozart, the current version has many areas in which it could be criticised. Firstly and most notably, the language is very unlike any other language you may have used previously, which I suppose is what you would expect if you were trying to merge so many different ideas. However this is instantly going to turn many less fastidious programmers off. I actually think this may be the intention in the sense that the authors of Mozart are not aiming at a mass market. Unfortunately I can’t help thinking this is a bad move if you want to drastically change people’s opinions. A better strategy might have been to gently break people in to new programming constructs in the context of familiar scenarios. Even in the fast moving tech industry it takes a long time for people to move on from the recognised norm. Another issue I can see which will not help adoption of the language is its lack of really practical usage examples and of familiar API features. For example when looking at a promising ’servlet’ implementation in the tutorial I was a bit disappointed when the code was essentially transformed into a CGI script for installation on a web server. This is old technology and leaves one wondering – where is the .NET and Java EE competition in Mozart? Software industry developers want to know about data exchange and persistence and how they can deploy their applications. As far as I can see these are somewhat neglected areas. From a theoretical point of view some of the benefits offered by a multi-paradigm language seem attractive and no doubt the Mozart platform does have some very real uses. I just can’t see how it can compete on all frontiers, particularly web  based business applications.

My final concern is that in combining programming paradigms you risk polluting the very nature of them. Object-oriented programming is not just a means to an end, it is a view of how to model abstractions of real world entities: as objects containing data and operations which govern themselves. Logic programming is not just a convenient way of expressing logical statements, it provides a domain in which everything is represented in predicate logic. The question is can you really combine such differing views on the ‘problem domain’ (or ‘universe of discourse’ as it is sometimes called) and do you lose anything in the process? Without more examples of Mozart programs written in the intended manner it is difficult to tell.

I may be missing a big chunk of the puzzle, perhaps multi-paradigm programming really is the way forward. From my own perspective though I think the interoperability provided by web services is where programming is going in the future and I value common communication standards between languages over combining language features in one monolithic place. However it is a very interesting language and a provides genuinely different approach to programming. The platform is clearly mature enough for anyone interested to develop useful applications with, but it is a big investment in terms of learning curve and probably also in time spent writing your own APIs.

Relationship between the government and the software industry

So a general election has been called in the UK and party political campaigns are well underway, which has made me think about many issues related to how I will use my own vote.

In the back of my mind though there is a subset of these issues that is entirely related to my line of work, and they’re growing concerns that are unlikely to be mentioned much in the run up to the election.  The government can have an impact on the software industry and vice versa in a number of ways:

  • Governments regulate the way businesses operate and are instrumental to passing, maintaining and enforcing laws relating to issues such as intellectual property (a contentious issue in software)
  • Software development for government funded organisations is largely contracted out to private software companies, sometimes to disastrous results
  • In an increasingly inter-connected world software security means national security

One of the most important issues over which I feel government could affect change is the wasted spending on scrapped software projects. Software that is designed, developed and deployed in the correct manner can actually save money by improving business processes and reducing administration costs. But all too often government organisations such as county councils, the national health service and the ministry of defense have been seduced by software companies that plainly have been unable to deliver. These canned projects account for millions of pounds of loss due to:

  • Lack of understanding of what is required, of how to approach the problem and of the technology involved itself
  • Over-optimistic estimates of the time and monetary costs as well as under-estimating the skills and expertise required
  • Poorly thought out system design and architecture
  • … the list goes on

What I feel the government and government organisations really need are experienced people who can understand the software development process and have some understanding of modern software technologies so they can recognise what they require and can determine whether a consultancy can deliver.

The more you think about it, the more numerous other issues where software and government policy meet seem. Security is another key area that is and will increasingly become important. It is not a sensationalist view to assume that the internet is now seen as a platform for criminals to operate, and indeed on which to organise and carry out attacks.

Perhaps one day soon the government will need a whole new department of people who are part software expert, part politician. I’m in favour of such a development in government if it means there is someone there to make intelligent, rational decisions about the strategy under which software is employed in government organisations.

Gap between industry and academia in computing

the academic CV

the academic CV Vol 1-4

While it’s a subject that follows on from my previous post and could be debated at great length, I just thought I’d comment on a perfect little example.

Firstly I must start by saying the computing industry and computing research are inevitably inextricably linked and in many areas research leads to breakthroughs used in industry, so it’s not all bad news.

However I came across a brilliant example of one major difference in the two worlds when I decided out of curiousity to read through a CV of an academic which they posted on their website. I could not believe my eyes when a 20 page document presented itself, packed full of names of published research articles and projects undertaken. Now in private industry generally as soon as something this monolithic arrives on the desk of an employer, it will probably be instantly rejected. Certainly it is highly unlikely to be read in much detail. Clearly though this must be just the sort of thing a university wants to see because this chap obviously had done a lot of research in his time.

I just found it amazing how things could differ so much. The more serious point about this is that there are many people out there in academia and industry who as individuals are poles apart in the sense that neither has worked or studied in the other’s environment before. This can be a problem and usually, though I hate to say it, it is professors that never worked in or with industry that present a problem. Though their research may be advancing important computing science and technology, it is often the case that it will be a long time before it sees light of day in the ‘real world’ and when it does, it will probably be somewhat unrecognizable compared to the original research. Additionally it causes problems for students wishing to go into the software business trying to learn from people who don’t have much interest in it.

However sometimes the worst culprits are those in academia or industry that misguidedly think they know what the other place is all about because they have very limited experience of it. In some circumstances it is much better to admit what you don’t know. That’s exactly what this guy’s CV said to me with no uncertainty: I’m not of the business world, and that’s just fine.

Perhaps it would be better if everyone was this honest, rather than some academics pretending they are really in touch with the software industry when they are not, and conversely some software developers pretending they are using technology on the cutting edge of research when they are implementing old technology?

The problem is it’s not fashionable or in line with self-preservation to admit what you don’t know.

Bad programming practice inherent in student assignments?

I’ve been contemplating with some disillusionment the practice of ignoring poor quality program design inherent in the assignments of many computing courses. When we are asked to focus on one particular skill just to ‘get the job done’, it seems that we’re losing something in ignoring the bigger picture, especially when you consider that there is no way this would happen in the industry. To take an extreme example you won’t last long in a software job if you ignore exceptions in order to focus on getting data in and out of a program. However paradoxically practices like these are necessary (and generally encouraged) in order to complete an assignment in an acceptable time frame.

The problem is you don’t get much more than a surface level understanding of how best to employ technologies if you’re only focusing on one goal at a time. While I agree this may be necessary when beginning to learn a new skill, such as use of SQL, sooner or later you’re going to need to hook that skill up with some other’s you’ve acquired. In the case of SQL, you’re going to want to hook it up to an application – but this is only the start of the story. Not only would you want to make use of it in an application, you’ll eventually need to know how best to design software that uses SQL based data persistence to a relational database and how to architect the overall solution. Sadly the interweaving of technologies is something you really don’t find on many course syllabuses, but you’ll certainly come into contact with it in the software industry. In fact its a discipline that many would consider belonging only to a ’senior’ developer.

Well, if I can grasp such concepts, I’m sure there are many far cleverer students out there that also can. So it begs the question why are courses not more industry oriented, and why do we need to waste time re-iterating things such as how to write SQL if we never learn the wider context under which it is generally used? (I’m talking multi-tier, persistence managed, distributed systems with rich application and presentation layers)

Appropriate web marketing and ‘the flashy web’

My recent launch of a new web site has led my mind down the path of considering marketing approaches on the web, particularly for ‘high-tech’ businesses. There is a current trend amongst professional business web sites in that many fall either side of the style / function dichotomy. The biggest and best organisations tend to have a firm grasp of the fact that a web site, while required to look nice and present an image of the business, is also there to perform a function. Generally this function is to inform people about the business and clearly offer any online services in a user friendly manner.

However there appears to be many businesses out there which seem to value style and the grandeur of pure ambition over conveying meaning and providing assurance of what they can offer. This is particularly evident in small ‘web and software development’ companies, as well as technology based consultancies. People may be initially drawn in by the customer pulling power of sleek design and an attitude that says “we’re so modern we wear trendy clothes in our office, we advocate ‘blue sky thinking’ and we have a mass following on twitter”. However closer inspection often reveals that many of these development companies are in fact largely visual design companies instead, and a lot of technology consultants aren’t in fact sure what services they are offering and to whom.

I’m not bashing the services which such organisations may provide, merely their online marketing strategy. I don’t pretend to be a business and PR expert, but I feel that many businesses such as those described above are misdirecting their time spent on their online image. A slick visual approach to enticing customers may work for end-user oriented services, that is – those which are available through the site itself. But a customer base of business users are instinctively more deliberative about their perusal of who you are and what you can offer, so this needs to be tailored to their expectations.

Intelligent Architectures – a space for development projects and business oriented ventures

I have just launched a new website to use as a space for posting information related to the Knowledge Management Environment Specification which I am working on under the organisation name - Intelligent Architectures. It seemed convenient to have an area to publish material related to this project and other similar ventures which have more scope than can be hosted on a blog or my personal website. It also has a fresh and clean design more appropriate for pitching to potentially interested parties.

For further information, see the new site in its all its tentative but nevertheless functional glory here:

Intelligent Architectures

Deploying an app on Glassfish via Apache Ant

So you want to deploy onto Glassfish 3 using apache ant?

One very simple method to use is the following:

glassfish + ant(!)

<java jar=”${path.J2EE}/../modules/admin-cli.jar” fork=”true”>
<arg line=”deploy –force=true warnamehere.war”/>
</java>
Here ${path.J2EE} points to the app server’s library directory -> glassfish/lib


This simply invokes glassfish’s deployment mechanism using one of the glassfish admininstration jars. It is not quite as neat as using an Ant task, however I had trouble doing this with Glassfish 3 which is what I am running on my development machine.

Why I have warmed to Prolog

I’ll be honest in that I used to find programming languages which involved a very compact looking syntax somewhat scary to think about. It is hard to interpret shorthand-style languages. However having got to know the syntax and general mindset required to program in Prolog I now find it quite straightforward, and dare I say it reasonably enjoyable.
There are a few more important factors that come into play in my fondness of the language:
  • Programming Logic (ProLog) is exactly what it says on the tin. There are no frills, and no other programming paradigms mixed in which I count as a huge advantage. Most other languages that implement First Order Logic / Horn Clauses seem to try to be a jack of all trades and as the proverbial goes they end up being master of [insert-expletive]-all.
  • It has a very cerebral feel to it, allowing a developer to implement quite complex, intelligent, procedures in relatively few lines of code. The challenge is more about the problems you are trying to solve rather than implementing a whole framework of APIs to produce a complete systems solution.
With this in mind, I intend to not let the AI theory and Prolog programming knowledge I am currently rapidly acquiring stagnate and become a fond but distant memory.
AI and logic seems to have hit on times of slow progress and relative disinterest, which I believe is a great shame as it has a wider and more practically-tangible potential than it is often given credit for.

Making AI accessible

I’ve been thinking a lot lately about AI and how it can be applied in different spheres of computing. Surprisingly despite the usefulness of logic and AI techniques, languages like Prolog are often neglected by developers.

Interestingly SWI-Prolog has many libraries making it pretty much ready for use in a distributed environment, and it wouldn’t seem to hard to implement a form of web-service using the Prolog engine to make logical deductions. In fact I’m working on a specification for a system which would make knowledge/intelligence based software more accessible to end-users, potential business adopters and software developers alike.

It will be interesting to see how things pan out with this development, I hope to be able to have a demonstrable system which can show the potential of intelligence based software architecture.