Hands on with Wolfram Alpha

I’v been interested in Wolfram Alpha ever since I heard about it and I’ve been itching to play with it since I saw Stephen Wolfram’s online demo. A few days ago I got an invitation to try out a preview of Alpha. In between studying for exams and taking care of laundry, I’ve been trying Alpha a little bit at a time to see if it’s lived up to my previous enthusiasm.

The answer is yes and no. Let’s put it this way: Alpha claims to be a computational knowledge engine and that’s exactly what that is. My first query was “earth’s radius”. I have no idea why I chose that, but the answers were as I would have expected. I got the answer in terms of miles, kilometers, meters and nautical miles. More interestingly I got the answer in terms of multiples of Venus and the moon’s radius. Good start.

So after that I tried “Star Trek” (since I just saw the new movie and loved it). I got information about the release date, producer and writers. I also got a very detailed cast listing. There were also recommendations which give similar information for the other Star Trek movies. However I was rather surprised that there wasn’t any information regarding any of the series.

From the web demo I knew that Alpha could do mathematical problems. So I typed in a few calculation problems and as in the demo I got the solution, plots of the solutions as well as a step-by-step description of how the solution was computed. Very useful for college calculus students. I was interested in seeing if Alpha could tell me how to do integration in general, not just for a particular problem. If I just type in “integration” Alpha seems to think that I want to an integration and then gives me examples of the integration problems that it can do. In this case Alpha considers it to be a general topic. But if I tell it to interpret it as a normal word, then it gives me definitions, synonyms as well as how it’s used in language (as a noun or verb). But nothing on how to do integration.

Going back to the yes/no question, the answer is “yes” because it is a computation system that can answer specific questions by actually calculating the answers in a way that Google simple can’t. However it doesn’t give answers to broader, more general questions. The integration example is one. There are also gaps in Alpha’s knowledge base. Entering “halting problem” gives no answer, but Alpha does know that it is a topic in computability theory. But given that this is a preview and that Alpha will probably always be a work in progress, gaps in the knowledge base will be filled gradually over time.

I’ve done some more experimentation over the past few days, but there is still a lot of work to do. Typing in sulfuric acid or it’s chemical formula gives information about the chemical, but saying something like “molarity of sulfuric acid” or even “sulfuric acid molarity” confuses Alpha completely. Alpha definitely show promise, but I’m certainly not giving up my Google or Wikipedia.

Sunday Selection 2009-05-10

Reading

Pseudocode or Code? There are lots of coding styles and lots of ways to teach them. This post looks at the style of writing out an algorithm in pseudocode and then fleshing it out with the actual code. This is a method that sounds like it should be intuitive, but I don’t think I’ve ever really used it before (and I don’t think any of my fellow students have either). Does it work? Read the article, try it out and then make up your own mind.

What do you think about LaTex? This is an ongoing discussion at Programming Reddit which I think is very interesting. I currently use LaTex for any documents that I need to submit for class or otherwise because it looks very professional, but it can be a real pain to use. This discussion has brought up some interesting points about both the philosophy and implementation of LaTex and computerized typesetting in general.

Media and Software

Google Chrome and Chrome experiments I know I’ve recommended Google Chrome as a download before, but these fun little JavaScript apps really show the full potential of Chrome’s high-speed V8 Javascript engine. The most interesting (and fun to play ones) are the ones that do some kind of physics simulation.

Capturing my life

Being a busy college student there are a lot of things I do every day, a lot of interesting conversations I have, a a lot of thoughts that I have and a lot of things I read or hear about. However most of what I experience every day gets stashed somewhere in the mess of grey cells that is my brain, never to be accessed again. Some of these thoughts I would like to keep to myself, but most of these are things I wouldn’t mind sharing with others (especially if they’re cool things that are already ‘out there’). Even if they’re not things that would necessarily interest other people, it would be nice to have a record of them for future reference. I’ve had the experience of vaguely reading or hearing about something a few months earlier and then trying really hard to remember what it was and where to get more information about. In some cases the search can be long and tedious and not always fruitful. What I’d really like is a continuous, indexed, easily searchable record of my whole life (along with useful links to the relevant Wikipedia articles). Too bad we can’t just download our memories wholesale onto some computer-accessible medium.

The Life Capture Experiment

Despite the limitations of today’s technologies, I would still like to record as much as possible even if it’s not as easy as a brain-download.There are two main barriers to recording everything that goes on in my life: time and intent. I simply don’t have the time to sit down, collect and then polish everything into a presentable format. If I tried to make a weblog post out of everything that happened to me, I wouldn’t be getting much sleep (and wouldn’t have many friends left). At the same time, I often don’t remember to record things. Either they’re followed very quickly by other things, or they’re not important enough for me to devote much thought and effort.

Part of the solution is simply habit. I can record a lot more if I simply just make it a habit to write more things down. I can also put up more blog posts if I form a strict schedule and a stronger habit. However, I think habit can always using a helping hand from technology. Before I start thinking about a technical solution, let me put the problem in slightly more technical terms:

The problem is that of capture: I need to be able to capture as much of my life as possible in a digital format. I should be able to easily navigate these captures of my life in the future and distribute them openly if I choose to do so. Capturing my life must not take up significant time or effort unless I choose to make something in particular more presentable.

Right. Now for the solution. Considering both the state of technology and the type of things I do everyday, it makes sense to divide the problem into 2: microcapture and macrocapture.

Microcapture

There are a lot of tiny things that happen everyday, things people say to me, things I overhear, things I see and the lots of tiny everyday tasks that I do. Now most of this isn’t important and I will probably never give it a second thought again, but every once in a while you wish you had put down that great idea your friend gave you. The best example of how this works is Twitter: you post very short updates on what you are doing at the moment. I started using Twitter a few months ago and though I can’t say that I’m an avid user (yet), but with my new interest in recording my life Twitter is a good tool. The 140 character limit helps make sure that I don’t spend any more time or effort on it than I absolutely need to.

Before I started using Twitter, the main outlet for what I was doing was the Facebook status notification. I’ve just started using Ping.fm to tie Twitter to my Facebook status as well as statuses for AIM and Gtalk. In the long run, I’d like to microcapture more than just small snippets of text. I read a lot online and I would like to have both a record of things that are interesting and things that I might find useful in the not too distant future. Luckily this problem has been largely solved. Social bookmarking sites (I use Delicious) allow just the sort of online microcapture that I’m looking for. And it helps that Ping.fm can be set up to add URLs in status updates to Delicious bookmarks.

In the future, I’m planning to explore image microcapture. Digital cameras are small enough to be carried around everywhere while providing acceptable resolution. Taking more pictures on a regular basis is definitely something I’d like to build a habit of. I probably won’t be placing these images directly online, at least not without looking at them once for anything I want to keep private. In fact, pictures probably stand on the border of micro and macrocapture, talking about which…

Macrocapture

Recording 140 characters a dozen times a day might be an efficient way of recording my activities, but doesn’t really form a coherent picture of me as a person. A large part of what makes me a unique person is what I think (in addition to what I do) and it’s much harder for other people to see that side of me. I’ll define macrocapture is the recording of these thoughts and ideas (and tangible products thereof) with the goal of forming a coherent of me and my life.

The only form of macrocapture I currently practice is this weblog. The Bytebaker has been an effective outlet for my thoughts and interests and as a bonus it has also attracted a fair amount of interesting discussion (and I hope it continues to do so). As time goes on, the way I use The Bytebaker changes as well. It’s becoming less of a mind-dump and more of a professional outlet for my thoughts. When I started I could write something in half an hour and hit ‘publish’, but now I don’t like posting before I’ve had a chance to revise, refine and think about my material. I want each post to be a coherent, clear thought (or a collection of closely related thoughts). That doesn’t mean that I’ll chagne what I write about (or how), but I will try to make posts more polished and easier for readers to follow my train of thought.

While this weblog is a good way to macrocapture important ideas and thoughts, it doesn’t document the evolution and refinement of those ideas over time. Microcapture can help by saving independent single time-points (and the associated events) but I need some thing in between a Twitter feed and a professional weblog to capture the process of my thoughts.

Enter the wiki. I haven’t really used wikis much before this year (though I did keep a diary on and off at various times). But the experience of using a wiki for my software engineering group project has made me appreciate the helpfulness of recording the development of concepts and issues over time. A wiki can be a staging area for my macrocaptures. Any piece of text (or image) that needs to be bigger than a tweet, but isn’t ready for presentation will go into the wiki. Over time, those individual records can be polished into weblog posts, articles, college papers or anything else that needs to be presented or published. Even if they’re not used, the wiki will still hold them and keep track of them.

Now even though I use the term wiki, I haven’t actually decided on how to implement this. One way would certainly to be just keep them as files in my Git repository. But since I move about and use different computers a lot, a real online wiki might be a better solution. I’m investigating free wiki providers at the moment. One major criteria I have is that I need to be able to easily export snapshots so that I can keep a dump of it in my Git repository. I’m not sure if the wiki would be public or private. I suppose that in the end some parts of it will be public and others won’t. Once again, the wiki is meant to be a macro-level capture of my thought process and not a cleanly organized narrative.

Tools I’ll be using

Technology is going to be an important part of this experiment. There isn’t any one good tool to use for capturing my life, especially if I plan on sharing large segments of it. I also need to be able to automate most of it. Since I’m just starting, I’m sure there are a lot of changes that are going to be taking place, but here’s a list of things that I plan on using for the time being.

  • Twitter and Ping.fm — For most microcapture.
  • A photosharing web service — Most probably either Flickr or Picasa
  • WordPress for The Bytebaker
  • Some form of Wiki software for other macrocapture
  • Git Version Control for all data that is not online
  • A personal server running Mac OS X 10.5 (for now)

Sunday Selection 2009-05-03

After a few weeks off for various reasons, Sunday Selection is back. Here goes:

Reading:

Needle in a haystack: efficient storage of billions of photos This is a very informative piece from Facebook’s engineers about how they put together the infrstructure needed to support Facebook’s massive photo storage system. It’s pretty long and gets quite technical, but is definitely worth reading if you’re interested in storage.

From BFS to ZFS: past, present and future of filesystems While we’re on the topic of filesystems, this is an article from about a year ago that gives a very comprehensive (and not too technical) overview of the history of filesystems write from the early days. Also included is a glimpse into what might become the filesystems of the future.

Media

Interview with John McCarthy, the father of Lisp Lisp is one of the most powerful programming languages in existence and I have a strong interest in it. This interview with the creator of the language takes a look at the inspiration and history behind the creation of Lisp

Software

Adobe AIR this new technology from Adobe is designed to bring the web out of the broswer and on to the desktop. It’s designed to help developers write Rich Internet Applications which combine the information available on the Internet with all the benefits of a desktop application. I haven’t really used it very much myself and I’m not a big fan of proprietary formats, but it is still an interesting piece of technology.