Archive for the ‘Design’ Category

The Apple bites back

Wednesday, March 30th, 2005

The webosphere is all about design and aesthetics these days, which is of course, just what the doctor ordered and mainly thanks to Google and Apple (yes, I know you were waiting for me to say that).

And when Paul Graham says we are now witnessing the return of the Mac, people sit up and take notice (my iPod agrees with me too).

I especially liked this part:

So what, the business world may say. Who cares if hackers like Apple again? How big is the hacker market, after all?

Quite small, but important out of proportion to its size. When it comes to computers, what hackers are doing now, everyone will be doing in ten years. Almost all technology, from Unix to bitmapped displays to the Web, became popular first within CS departments and research labs, and gradually spread to the rest of the world.

That reminds me of the Shufflephones hack that my friend Jim has made. Now, that is something really designer-ish but very usable at the same time:

Shufflephones

He even has a whole blog dedicated to shuffle hacks.

I try to always keep in mind that ‘Usability and Simplicity’ are the two most important factors for anything to succeed. It almost feels like Apple invented that concept.

This also means that I’m getting a Powerbook soon. I can’t wait.

iPod!

Monday, March 21st, 2005

My manager went to our Sunnyvale office recently and came back today. I had asked him to get an iPod Mini for me… when he gave it to me in the morning, I was grinning away to glory. I am not much of a gadget guy, but I was craving for an iPod being such a music buff. I forced myself not to open up the package in the morning (otherwise I wouldn’t get any work done). So, when I came back home in the evening, I tore open the package and went total gaga over it.

Packaging of My iPod! Packaging of My iPod!

First of all, it is so compact, I wonder how Apple managed to squeeze so much into something so small… this is the 4 GB version, so I can store approximately 1000 songs on this baby! Oh, and I can use it as a huge floppy drive as well ;)

Coming to life!

The first song I copied to it and listened was the instrumental version of the title track of Roja. For me, there is simply no other song that is as good as that one…

Listening to Roja See how really cute it is!

Just compare the sizes of the iPod Mini and my watch in the last snap above… :)

Now, I just have to find enough good songs to fill it….

P.S. The reason I had to get it ‘imported’ was that it costs $200 == 9 grand rupees that way whereas it costs 18 grand rupees in the Apple store in Forum, Koramangala, Bangalore.

GCC and the ABI

Friday, March 18th, 2005

From the Autopackage Developer Quickstart:

Important note to C++ developers

If your software uses Qt/kdelibs, or just rely on many (large) C++ libraries, then you must be careful. This is because of C++ ABI (Application Binary Interface) issues: GCC 3.4 broke C++ ABI (again), so software compiled with GCC 3.4 can mysteriously crash on GCC 3.2/3.3 systems, and vice versa. Because of this, we cannot guarantee that your software will run on all (or even most) systems. At the time of writing, most distributions still use GCC 3.2, but GCC 3.4 distributions are coming and GCC 3.2 distributions are not going to disappear any time soon.

Can we have ever have a write-once compile-once run-anywhere system on Linux/BSD?

I guess that’s a stupid question.

Sidebar:

  • Autopackage 1.0 final to be (hopefully) released within a month. Yay!

  • Autopackage basically makes software installation on Linux easier. For more details, read the FAQ.

  • The Autopackage website is very well designed. I’m impressed.

Bazaar-NG

Monday, March 14th, 2005

Canonical, the guys behind Ubuntu Linux, seem to be creating a “next-generation distributed version control system” called Bazaar-NG. It’s written in Python and is primarily tested on Ubuntu. I haven’t played with it but it seems it is already self-hosting, that demonstrates a bit of its capabilities. They have excellent documentation already. Although, I am wondering how they are going to handle the ‘distributed’ part.

(via creosote)

Update : The lead guy on Bazaar-NG is also the person who wrote DistCC. So, I guess he knows what he’s doing ;)

Walk the tree

Saturday, March 12th, 2005

In the second round of Google India Code Jam 2005, there were 3 problems to be solved in 1 hour. The first question was easy. The second question was also kind of easy, but I mucked up due to bad handling of corner cases, however I finally managed to get all the 5 examples working. I didn’t have enough time to solve the third problem.

My second solution failed in the system testing. I was kind of irritated about that but was too lazy to find out where it went wrong. One of my colleagues did a post-mortem for me and told me that in one of the loops, I had i < 10 instead of i <= 10 … Arrrggggh….

Anyway, the third problem was kind of baffling for me: “Given a sequence, figure out the minimum number of moves required to convert it into an arithmetic progression” (this is a simplification of the longer original problem).

I first thought of using differences between consecutive numbers and so on, but quickly realized that wasn’t the solution. Then, I thought this problem must have something to do with dynamic programming or some sort of tree-walking to compute the proper sequences. However, I was too lazy to try it myself and got caught up in work anyway. So, I sent the problem to few of my colleagues and got them to scratch their heads.

When I bumped into Avinash in the evening, I told him about this problem, he immediately said that this has got to do with game theory and all you have to do is tree walking. I didn’t understand his solution at first. So, he said “I’ll write it in Python and send it to you in half an hour”, and he did! Next thing I know, Gopal and Avinash are optimizing it - the time taken came down from 1 min 15 seconds to about 7.8 seconds! Avinash explains it in more detail in his writeup about it. As expected, after seeing his solution, I have that ‘Duh’ kind of feeling…

Interface it

Friday, February 4th, 2005

Interfaces are now available in C++ … I really wonder - Do we need this? I am a beginner to the big bad world of C++ code but I don’t see what an interface would do in C++ that an abstract class can’t do… I guess its one of the those things that only Bruce Eckel or Lippman could understand/explain.

Aspect Oriented Programming and TreeCC

Wednesday, February 2nd, 2005

Programmers are always on a never-ending quest for proper design of software. One of the buzzwords in this area is aspect oriented programming. I have heard of AspectJ and other stuff before but never cared/understood enough to take a look at it.

Recently, I came across the TreeCC program used in DotGNU and was amazed by its simplicity. Rhys Weatherley has written a neat and simple essay on TreeCC - it was an eye-opener for me on how proper object oriented design doesn’t always mean proper inheritance hierarchy or proper method overriding - it simply means a clean separation of concerns and concepts. This essay is a must-read for any programmer interested in good design, especially in compiler writing.

Future of Programming is Functional Programming ?

Friday, January 14th, 2005

I was reading this interesting article on ACM Queue called Extensible Programming for the 21st Century - the author talks about the current state of languages, compilers and libraries and then he proposes a solution to solve most of the problems - write programs in XML format!

Before I pour my thinking on that, one particular paragraph did catch my attention:

Programming languages often grow by formalizing and generalizing the best practices of their day. Well-nested goto statements become structured programming’s conditionals and loops; records that are accessed only through companion functions become objects; functions that are identical except for data types become generics, and so on.

Insightful.

Ok, believe me, I took quite a while to digest what that guy’s saying about ‘extensible programming’ but its my understanding that it boils down to this - your program is always in a tree structure, you can imagine flowcharts to visualize this. So why not formalize it in the form of XML? Experienced guys will balk at this and say Lisp has been doing this for years! Yes, it has. So, why use XML? Because "S-expressions might have deserved to win, but XML has."

Its kind of really hard to imagine writing programs in XML, somehow I imagine I would never use such a language. I’m having a tough time just writing in DocBook XML! …. but still let me not jump to conclusions - the tutorial for the O:XML language looks interesting. You can program in O:XML like this:

[xml] never! always! [/xml]

Hmmm.

I think I should really learn a functional language before making any judgements on this. I’ll probably take a look at Scheme or Haskell in future. Any ideas on which is the best FP (Functional Programming) language to start off with?

Just yesterday, Avinash was explaining to me about doing FP kind of programming in Python and how it is one of the reasons that Python is here to stay.

All this has got me interested in exploring the FP part of Python - rest assured, I’ll write about them in my book as well.

By the way, a good read is Paul Graham’s essay "Beating the Averages". He explains why Lisp was an advantage to him when building ViaWeb (which was later sold to Yahoo!).

Please do leave comments on your experiences with FP. I would be interested to hear about it.

Design process of Thunderbird Logo

Sunday, September 19th, 2004

How the Thunderbird logo was designed - this is such an eye candy page for sure. And the website design is also soooo cool.

The Future of PC ?

Sunday, July 18th, 2004

This is mind-blowing - is this the future of pc? -> Athens PC