May 26th, 2009 — 7:59am
Recently, while reading about methods for manipulating RDF, I discovered the search engine PowerSet. More recently, Wolfram Research’s Wolfram Alpha launched. There’s been no shortage of new search engines in the past year or so – Cuil is one that was much publicized but ended up remarkably useless – but these two still impress me.
PowerSet impresses me because of its interface – I can easily see what a particular match is about without leaving the list of search results. Speeding up the typical use cases like this is very important for usability.
Wolfram Alpha impresses me because of the quality of the results. Maybe I’m in the minority thinking this – the press seems to have been giving it mostly negative reviews. Clearly WA is not intended as a Google replacement, but perhaps it was described as being one at some point. Today, being available to the public, it’s something different. It lets me look at data, mostly of the quantitative sort, and make all sorts of semi-interactive charts and comparisons. Here are some searches I liked: earthquakes in Japan, 1 cup of coffee, Tokyo to Osaka. I especially like the interactive earthquake graph.
WA is not without its problems though. Sometimes it’s hard to figure out what kind of queries you can make. I found the above mostly by experimentation. If they exposed more details about their data model and what they knew about each kind of object, maybe this would be easier. Right now I’m wondering why I can do a query like “largest cities” but not “largest cities in mexico”, for instance. I suppose this is mainly a question of maturity both on behalf of the system and of its users, though.
Search engines like PowerSet and WA are indicative of a broader trend towards semantics in computing and internet usage. While the semantic web isn’t here yet in the sense that we don’t have a semantic web browser or a unified way of querying the internet, clearly services that are based very heavily on semantic models are becoming mainstream. More on the impact of this in a future post.
1 comment » | Uncategorized
May 19th, 2009 — 3:08am
As part of an application form I had to fill out recently, I had to write a summary of my research ideas. Of course this changes all the time, since I’m still searching for a precise topic (and probably will be for a long time). But this is what a snapshot of those thoughts, taken now, looks like:
One of the most important problems in software engineering is reducing the impact of change. To this end, recently methods such as inversion of control (dependency injection) have become popular, in order to reduce the coupling to concrete interfaces. However, even with these schemes, there is still a dependency on specific names and abstract interfaces. My project aims to investigate the possible use of semantic methods to address this problem. In essence, I want to allow developers to use semantic interfaces rather than syntactic ones to describe and access their components.
Specifically, I am investigating techniques commonly used in the context of Semantic Web Services, such as ontologies and semantic/syntactic mediation, and their applicability to this problem.
We may regard services as being somewhat large scale components. However, I am interested in applying these methods not just for large scale services distributed across the web, but also for small and numerous software components running in a single process. In such a setting, performance and scalability are important issues to investigate, in addition to the usual problems of reliability, correctness of composition, etc.
Comment » | Uncategorized
May 15th, 2009 — 4:50am
I just found out about BioCaster, a tool made by people at my institute. It tracks news in real time and lets you view the spread of diseases geographically.
I’ve seen similar services before (related to swine flu, etc), but this one lets you break down the data by disease and even by symptoms.
Asahi Shinbun mentions it in an article (Japanese).
Comment » | Uncategorized
May 8th, 2009 — 4:10am
I’ve started experimenting with the programming language Scala. I’ve been wanting to get back into functional programming for some time, but I’ve found it impractical for the time being to dive right into something like ML, Haskell or Scheme. Scala has gained notoriety since Twitter announced that they’ve rewritten their engine in it. Some of its benefits are:
- Mixes multiple paradigms, including imperative, functional and actor programming
- Runs on the Java VM – interop with Java libraries and frameworks is trivial
- Lightweight syntax
There is much to like in this. I’m hoping that it will turn out to be useful as a rapid prototyping language for trying things out, especially since so many third party tools are available in Java world.
For now I am using exercises from Project Euler as a means to experiment with and learn it. This works surprisingly well.
Also see this list of the most popular programming languages – Scala is now number 27, ahead of Prolog, Erlang, Haskell and ML.
1 comment » | Software development
May 1st, 2009 — 5:39am
Following up on yesterday’s post on code reuse, I have a more specific reason to be skeptical of literate programming.
Programming and software development is stuck in a textual paradigm – the idea that programming is something you do by writing text in a formal language. I think this idea constrains us somewhat in the development of languages and tools. IDE’s like Eclipse allow you to perform operations on the abstract syntax tree to some extent (e.g. automated refactorings), but in general, those too are text oriented.
I don’t have a replacement for the textual paradigm today. Because of the strong link between languages and automata, clearly computer programming is very strongly related to formal languages. But sentences in formal languages don’t need to be represented as text.
However, I don’t think I want to advocate leaving text behind completely. It is one of the most powerful devices for input and output of precise information, to and from people and computers. But I think we need to take steps towards being less about text editing, and literate programming does not seem to permit that.
Comment » | Software development