Idea: RSS Similar Item Group View

One thing about reading technology news from multiple sources is the massive repeat of items in different feeds. What I would like my RSS reader (currently Google Reader) to do is group the similar items under the same category.

For example, in my Google Reader account I have a gadgets folder that contains both feeds from Gizmodo and Engadget. I never manage to follow even one of those feeds, but sometimes I check them out to see what’s new in the gadget world. Each of these competing blogs has its own merits that make me keep it in my RSS reading list. However, I would like to see similar news items grouped into one, much like what Google News does with news items.

I went to offer this feature to Google and naturally I’m not the first person to do that. The funny thing is that the guy who suggested the feature even used the Gizmodo/Engadget example himself.

My Current Two Principles Of Software Development

What makes good software? I always felt this question was too big for me to answer, never seeing myself as astute in the software development business as the big guns like Herb Sutter, Raymond Chen and the likes. However, this is a blog and as blogs go you can post something today and say the opposite tomorrow. Still, I couldn’t resist putting the word “current” in this post’s headline to emphasize that my opinion may change in the future.

Over the years my view of software development changed a lot. During my studies I was an “enthusiastic purist” developer – the kind that will always look for the newest paradigms and techniques, trying to follow and use them in my own code. That was the enthusiastic part. The purist part of me insisted on following the good practices I learned along the way. There are very few good practices that are true no-matter-what, the most important one being DRY – Don’t Repeat Yourself.

While working as a software developer I noticed that, no matter the company I worked for, the level of acquaintance of existing programmers with these new techniques was very low. They may have heard of some, but no one would dare use them. Most developers stick to what they already know. The effect of this being that even if you know how to write something in a “new” way, you have to educate the other developers and convince them that there is an actual benefit to using your way. This is a good thing because it works like a peer review process, but with the natural resistance to change it becomes very hard to actually use new techniques in an existing company.

Over time I learned that what makes software successful is happy users. No big surprise there, right? But the reality of things is that making software which users will like on time usually comes on the expense of the way the software is implemented. I’m not the first to say that software development is about making compromises, but if you’re an “enthusiastic purist” that realization can be a little depressing. I had to learn to compromise in order to deliver software on time. I still think this is a little unfortunate because in every piece of software there’s room for improvements – in design, in speed, in beauty – improvements that probably will never be made.

In short, I learned that

Software should:

  1. work well for the user, and
  2. be implemented in a way that allows known future developments

These are my (current) two principles of software development. I consider their weight equal, but if these two principles still contradict each other – the first one should be preferred (or the deadline should be postponed once again.) Otherwise, you will not have users left to use your future developments. The second principle contains in it as many good practices as needed, but unfortunately not more.

I would have loved to add another principle, namely “be well implemented” or “be well designed.” However, in the real world, where companies develop products until they’re most profitable (and not a second more), we don’t have the luxury of having another principle like that. Working on the first two takes most of our time.

Free vs. Free

In a recent post I wrote that I installed the non-free driver for my video card on my new Ubuntu Linux installation. A friend asked me why I had to pay for the driver. I didn’t.

The word “free” has two main meanings in the software world:

  • Costs nothing (also known as “Free as in beer”)
  • Liberty (or freedom)

The first meaning is easy to understand, but what does it mean that a piece of software has freedom? Wikipedia explains free software as follows:

Free software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions only to ensure that further recipients can also do these things. To make these acts possible, the human readable form of the program (called the source code) must be made available. The source code may be either accompanied by a software license saying that the copyright holder permits these acts (a free software licence), or be released into public domain, so that these rights automatically hold.

Here’s an example of software that is not free: Microsoft Word may just be the most used office productivity application in the world. To read and write a Word document perfectly you have to use Microsoft Word (*). Using Microsoft Word binds you to a format that is not free (unpublished) and forces you to use a specific program. By using Microsoft Word you have given up on your freedom to choose a document editing program. So because the file format isn’t free (as in freedom) you are not free.

As an opposing example, consider another document file format like ODF. ODF is a published Word-like file format that is available to all and so when you edit an ODF file you may choose out of a bunch of applications that are equivalently good at editing the file.

So my choice of a non-free driver for the graphics card was pretty much like choosing Microsoft Word over a different application and file format (with the exception that it was at zero cost). The non-free driver may have given me extra effects on my computer screen but I gave up some freedoms as I made the choice. I start wondering, even though I didn’t complete the move to my new (freedom-free) Linux installation, whether this freedom is something that needs to be protected even if the software is available at no cost forever, just like we should champion privacy even when we have nothing to hide (again a link to the excellent Coding Horror blog)

For more information about free software, visit the Free Software Foundation website.

* There are other programs that read and write Word documents, but they reverse engineer the Word file format. The reverse engineering is never perfect and can be targeted specifically by the Microsoft to be nearly impossible.

Ubuntu Linux – First Impressions

Yesterday I installed Ubuntu Linux 7.10 on my new computer. The installation was as easy as an installation can be – no annoying questions, no tough and unexplainable choices. Just some simple steps (like setting the correct time zone) and it’s done. The nice thing about the Ubuntu Linux installation CD is that it’s also a Live CD, which means you can actually play around with the operating system and see that it works fine even before you decide to install it. However, this may be confusing to some people at first because when you first boot from the CD, immediately everything seems like it’s installed (even though it’s just running from the CD).

I wanted to partition the hard drive manually, however I was met with two questions that I didn’t know the answer for:

  1. Which partition should be primary and which should be logical?
  2. What does it mean to put a partition at the beginning or at the end?

So I decided to let the installation do whatever it wanted to do, and it just created one partition and put everything on it. Shouldn’t be a problem.

The installation also tried to access the Internet to get updates, which is a good thing. However, expecting a home user to be constantly connected to the Internet at installation time is not so realistic (specifically here in Israel, but I think this is the common case). After the installation failed to access the Internet it told me something like “I added commented out lines to /etc/apt/sources.list”, which is really not a very nice thing to tell a new user. Later on, when I had the Internet connection working, I uncommented the lines.

During the installation I was asked to give a user name and a password, a normal thing for every installation, be it Linux or Windows. Later on, to do some changes from the command line (like editing the /etc/apt/sources.list file), you have to switch to being root. But my user’s password didn’t work for root, so I had to go to the user manager and set a root password (luckily, I was able to do that). I don’t know if that was the right thing to do, but it worked for me.

At the end of the installation, I got a message telling me that it’s time to restart the computer, but that I had to make sure there was no CD during the next startup, or otherwise Ubuntu will start from the CD again. I ejected the CD at the point where I got the message, but apparently it was a mistake because the computer wouldn’t shut down and I had to manually reboot it. Everything worked fine after that, as the installation correctly identified my hardware and so the computer was ready to work immediately after.

Ubuntu Linux is a great distribution. One of my pet peeves about Linux distributions was always the many choices of the same thing: multiple consoles, multiple office suites, multiple everything. Ubuntu has one choice for each function, making the menus small and easy to understand. Anything else can be installed using the “Add/Remove…” applet, which is very well organized and comprehensive.

Setting up my Internet connection wasn’t easy. Having a cable modem that uses PPTP, I tried to install the PPTP client as described in the PPTP client website. After I installed it (that required going back to my Windows computer and downloading the network-manager-pptp package) I couldn’t get it to work according to the instructions in the PPTP client website. So I tried to look for specific instructions for Israel and found Carmit Levi’s PPTP GUI installer for Israel (Carmit is a manager in the Nana Linux forum). After I followed the GUI’s instructions, the script it created was still missing my password so I added it and the connection worked.

All this was very frustrating – going back and forth from the new computer to the old one to download files, burn them on a CD and try and retry. I hope both Ubuntu Linux and the Israeli service providers (in my case, NetVision) will be better at this in the future.

With the Internet connection working I updated all the packages and also installed NVIDIA’s non-free driver for my video card, and now my desktop has some bling, too :) My efforts will now concentrate on moving my Windows installation and files from the old computer the Linux computer (as I said before, I intend to run Windows in a virtual machine. Hopefully I can move the entire thing intact without a problem)

Desktop Evolution – Is This The Best We Can Do?

I was looking today at a post on Engadget called “Desktop Evolution: Windows and Mac OS Visual Comparison Through the Years” and expected to see how, over the years, the desktop became more and more beautiful and usable. But I was extremely under-impressed.

Windows Vista looks nice but nothing really exciting (also, I can’t ignore the fact that the best looking Vista both costs a lot and requires super-new hardware.) The latest OS from Apple, Mac OS X 10.5, is supposed to be innovative but also looks like a slightly-more-beautiful clone of its old self. I mean eventually when you’re on a computer, your desktop is not a destination and as nice as it looks, nothing seems to have changed.

Where are the usability benefits? Considering all the great minds working on software today, is this the best we can do with the desktop?

Social Networks And Me

Social networks are the big thing these days. Recently I joined two social networks: LinkedIn and Facebook. LinkedIn, a business-oriented social network, was fun to play with at first. I, too, joined the “add your friends” race and added as many as I could find (I didn’t just add anyone, though. Only people I actually know well enough to consider contacts). After a while, I became bored with LinkedIn. There was just nothing there for me to do. I’m not seeking a new job, I’m not looking to “network” with high-profile names. I just have nothing to do there.

Facebook, on the other hand, gives users as much stuff to tinker with as they can handle. Considered a genius move, Facebook creators opened the site by providing an application API that can be used to create “Facebook applications.” There is a huge amount of applications, from gift-giving to playlist display and whatnot. You can post images, videos, thoughts and anything you can think of on Facebook.

There’s a lot of hype around Facebook with regards to the applications. However, the applications thing can be a little annoying. Let’s say a friend posted a song that can be listened to on his profile page. To listen to that song, I have to install the application on my profile as well. Why? I have no idea. I guess either that’s an enforcement of Facebook itself, or application makers are in a race to virally spread their applications to get better numbers in the overall application installation statistics. This kind of behavior makes me not want to use the website.

Recently, Google announced OpenSocial, a way to build social networks applications in a way that is independent of a website. While the OpenSocial group includes MySpace (the biggest, yet ugliest, social network that exists today), it doesn’t include Facebook. That’s a shame for application developers, considering that Facebook is rapidly growing and appears to have a better application delivery/installation mechanism than other websites.

Assuming I have an idea for a social network application, a few questions are bothering me:

  1. What kind of a business model can you have in an application that is hosted on another website? I’m guessing there is such a model or otherwise there wouldn’t be companies investing efforts in creating such applications.
  2. Should I create the application in Facebook? As an OpenSocial application? Both? Maybe I should create an independent website and hook it up to the social networks later?

Update: After writing this post I went to see a video that discusses the possibilities of monetizing on the Facebook platform in addition to the problems that Facebook application developers face today and why they simply have no choice but to make users install their applications to get recognition by more users.

Google Announces Open Handset Alliance

There has always been speculation that Google is developing a mobile phone (a gPhone, as most articles called it), but Google always does things differently. This time announcing the Open Handset Alliance, which is a bunch of companies that develop an open, Linux-based hardware and software platform with an open API. The platform is called Android.

There’s not much to see yet (specifically, there isn’t any phone based on Android yet) but there are two nice short videos. One is Introducing Android, which shows the team that developed it (including Andy Rubin, who you can read about in this New York Times article). The second video is called If I had a magic phone where you can see cute kids telling us what they expect from a magic phone.

OOXML vs. OpenDocument

One of the latest most talked about “wars” in the software world is the office document formats war. Both formats are XML based, and both are used to describe the miscellaneous office documents like Word and Excel documents. The OpenDocument format was developed by a committee and is already an ISO standard. OOXML, on the other hand, was developed by Microsoft and isn’t yet an ISO standard. Microsoft has been pushing and lobbying OOXML (Open Office XML) very hard to become an ISO standard.

However, from a technical point of view, OOXML is barely manageable. The format contains in it the legacy of all Microsoft Office’s previous versions and is impossible to edit correctly by external tools despite the fact that it is so-called “open”. Stรฉphane Rodriguez wrote 10 technical points why OOXML is defective by design. In one of the points, Rodriguez quotes one of Bill Gates’ memos that was exposed because of a legal case:

From: Bill Gates
Sent: Saturday, December 5 1998
To: Bob Muglia, Jon DeVann, Steven Sinofsky

Subject : Office rendering

One thing we have got to change in our strategy – allowing Office documents to be rendered very well by other peoples browsers is one of
the most destructive things we could do to the company.

We have to stop putting any effort into this and make sure that Office documents very well depends on PROPRIETARY IE capabilities.

Anything else is suicide for our platform. This is a case where Office has to avoid doing something to destroy Windows.

I would be glad to explain at a greater length.

Likewise this love of DAV in Office/Exchange is a huge problem. I would also like to make sure people understand this as well.

While making Office documents work only in Internet Explorer is a legal move by Microsoft (and I’m not even sure about that), obviously it’s an anti-consumer move that locks non-IE users out of the ability to view some documents online. Therefore there’s no surprise that Microsoft tries to appear to have an open document standard while in practice creating another proprietary format that can only be correctly used in Microsoft Office.

3D Mailbox Email Client – Good Or Bad?

3D Mailbox is an email client that visualizes the emails you get as people in a 3D environment. It is very hard to describe, so you can either read this Download Squad review of 3D Mailbox or see the 1 minute trailer (I didn’t get it until I read the review, though).

Download Squad, in a nice attempt to be impartial, interviewed the creator of 3D Mailbox, Robert Savage. It’s obvious from the interview that Mr. Savage believes his product is innovative and that outside-the-box-thinkers (and gamers) will sure like it. I guess only time will tell.