Women and Logic

Since some of my work currently falls within the Semantic Web and rules, I decided to pick up a introduction to mathematical logic book. While shopping in Borders last night, my girlfriend asked me what book I picked up, and when I told her she replied:

“It sounds WAY over my head and I probably wouldn’t understand a word of it.”

To which I said:

“That’s because women rarely have a need for logic”

She did not find it nearly as funny as I did.

Software Developers cannot predict the Future

A great quote that everyone involved with building software should learn and repeat:

“Giving up the illusion that you can predict the future is a very liberating moment. All you can do is give yourself the capacity to respond … the creation of that capacity is the purpose of strategy.” – Lord John Browne, chairman of BP Amaco

All too often, people assume that if they document everything about a project, they will be prepared for anything that can happen in the future. When what they should be doing is making the best decisions they can using the information they have available. Anything else is wasted effort at best, and at worst, saddles you with a lot of debt, both technical and non-technical.

A former manager once said that software projects are like handfuls of jell-o: to grip the them too hard, and you’ll have a mess on your hands.

Technorati Tags not pinging from ecto

I use ecto for my blog editor. I like it a lot, since I can write blog posts offline and not have to worry about my browser crashing or session timing out.

However, I have been having some problems with ecto‘s implementation of Technorati tags. It seems that if I tag using ecto, which is done in the client itself, my blog isn’t indexed by Technorati. However, since this blog is hosted by TypePad, if I submit a post as a draft to TypePad, then apply my Technorati links there and publish, my blog gets indexed almost instantly. I know that TypePad has some sort of direct connection to Technorati, but I wonder if it’s at the expense of non-TypePad blogs.

Parallels Release Candidate update released

New build of Parallels Desktop is available. Get it here.

I’m glad to see a new release. I’ve been using the previous Beta ( Build 1862 ) for weeks now, and it’s pretty stable. This release also includes a new release of the Parallels Tools package, so hopefully the graphics problems i’ve talked about before are fixed.

Related Posts:

* Visual Studio Development on OS X w/ Parallels

* Virtual Machines: Virtualization vs. Emulation

Technorati Tags: ,

What is the Semantic Web and why should I care? – Part 1: Semantics

This is the first article in a small series that will look at explaining the Semantic Web, and attempting to leave people better informed as to whether the Semantic Web, or any part of it, is the right solution for their problems. Since some of the core ideas behind the semantic web are rather abstract, i’ll be tackling it in small chunks, with shorter posts meant for easier digestion.

Too Much Data

With the explosion of the internet and the web, there is a wealth of data for everyone to read, process and understand. However, the sheer volume of data can be overwhelming for a single person to handle. Add the amount of user generated content ( blogs, del.icio.us bookmarks, etc… ) and the problem becomes almost unsolvable.

What we need is a way to create automated agents that go out and find the relevant data for us, and bring it back. Tags are an poor man’s example of this type of data collection agent. We specify the tags that are of interest to us, and whenever someone uses that tag, we get notified. However, there are all sorts of problems with this type of collection. Someone could misuse a tag, or we could get false-positives. A false positive in this case is when a tag carries one or more meanings. Take the tag ‘traffic’ for example. I could use that tag for content relating to automobile traffic patterns, web site traffic optimization hints, or a report on illegal trading of drugs. Any of those pieces of content could use the tag ‘traffic’, and yet all three have different audiences and different meanings. Since a tag only matches on a single keyword, it casts a wide net. So what’s a solution? Some say it’s the Semantic Web.

Semantic Web

Everyone is talking about the Semantic Web like it’s 1998 all over again, but what exactly is the Semantic Web or more importantly, why should you care about it? The two key concepts of the Semantic Web are:

* Common shared meaning

* Machine processable metadata.

By combining those two characteristics, the Semantic Web is supposed to usher in a new era of knowledge management and content dissemination. The first characteristic will be covered in this article, with the second characteristic covered in Part 2.

Semantics is typically the word used to refer to the phrase “common shared meaning“. Dictionary.com defines semantics, in part, as:

“the meaning, or an interpretation of the meaning, of a word, sign, sentence, etc”

Well then, that’s pretty clear isn’t it? That’s a great academic definition, but what does it mean in relation to technology? More specifically, what does it mean to the web?

Syntax vs. Semantics

To understand how semantics relates to the web, you first need to understand syntax, and what the difference is between semantics and syntax.

Imagine for a moment that you have a web service that defines two operations:

Add( int number1, int number2) : int

Subtract( int number1, int number2) : int

Now, any human can look at the above service definition and infer that the first operation adds two input numbers, and returns the sum and the second operation takes two input numbers and returns the difference between the two. However, a machine processing this definition would not be able to tell the difference between the two. That’s because the syntax of both operations is the same. Both accept two numbers and return a third.

Since a human already has an idea of what ‘Add’ and ‘Subtract’ are and the syntax of the two operations roughly match what they know, they are able to draw the distinction between the two. That, in a nutshell, is what semantics are. Let’s look at another example.

Suppose you have an XML file that contains the following data representing two members of a school’s faculty:

<academicStaffMember >Bill Johnson</academicStaffMember>

<professor>Dr. James Smith</professor >

What if you wanted to query for all faculty members in this document? Again, a human would be able to see that not only is an academic staff member regular a faculty member, but a professor also is a faculty member. A machine processing this file would only be able to perform a superficial query, typically using XPath, like this:

//academicStaffMember – To get all “academic staff members”

//professor – To get all “professors”

There is no query like this:


That would return both elements. Again, there is no way for a machine to establish a connection between the two elements in the same way that a human can. Since most web pages are just XML formatted pieces of data, you should have a better idea of the the core problem that the Semantic Web tries to solve.

Wrapping It Up

The Semantic Web involves data that not only conforms to a specific syntax, but also carries with it meaning, so that it can be processed and parsed in an automated fashion. How exactly that meaning is transcribed is the other half of the Semantic Web definintion found above, and is the subject of Part 2.

Technorati Tags: ,

Dear ReSharper: I'm Leaving you

Dear ReSharper,

I tried….I really did…I tried to use you with Visual Studio.NET 2005, but no it’s official: we’re breaking up. During the courting process ( ReSharper EAP ), you had enough features to draw my eye. Pretty soon, we started an exclusive relationship ( ReSharper 1.0 ) and things were great. Before long it I decided it was time for a change ( I moved to 2005 ). Thankfully, you decided to come with me ( ReSharper 2.0 ).

However, ever since this “new” ReSharper has been around, things have changed. You started to take up too much of my (processing) time. It got to the point where I couldn’t get you out of my ( virtual ) memory ( around 400 MB ). After a while, I needed a break. During another brief courtship, you tried to show me you had changed ( post 2.0 EAP’s ), and after a while, I took you back ( ReSharper 2.0.1 ).

But now, it’s over. We can’t keep having these fights ( crashing ). It’s just not healthy. I know, I know, there are things about you that I love ( refactorings, keyboard shortcuts, etc.. ), but there’s things about Visual Studio.NET 2005 I love too ( actually getting work done ) and you’re making me choose. Unfortunately, it’s not much of a choice. You can’t win against Visual Studio.

I know what you’re going to say. “Visual Studio is the problem“. Perhaps, but without you, Visual Studio is less of a problem ( around 250 MB ). It’s a fact of life that I have baggage ( a solution with VB.NET & C# ), and so you’ve found out my secret: I’m a two language man. I am what I am, and you’re going to have to accept that.

If you can somehow figure out how to becoming less (resource) hungry and give me back more of my (processing) time, then I may decide to take you back. Until then, we’ve had some good times, but I have to get back to work now.



Technorati Tags: ,