.::output >> /dev/null::.

where otherwise good ideas go to waste

Back to basics

Posted by Nicholas Chen Fri, 07 Jan 2005 07:49:27 GMT

This article is important enough that it has to appear as an entry in this main blog instead of /tmp where my links will usually reside. Back to basics by Joel
Read it. Now.

Posted in , , | no comments |

The fun factor in design

Posted by Nicholas Chen Wed, 05 Jan 2005 09:29:00 GMT

Quoted verbatim from Donald Norman, Emotional Design 2004 (Page 106):

"Consider the "Te o" tea strainer, designed by Stefano Pirovano for the Italian manufacturing firm Alessi. At first glance it is cute, childish even. As such, it doesn't qualify as fun--not yet. It is a simple animate figure.... At the lunch table, I proudly display my new purchase. Sato's first response was skeptical. "Yes," he said, "it's pleasant and cute, but to what purpose?" But when I place the strainer on a cup, his eyes lit up, and he laughed [click on continue reading]."

teastrainer

teastrainer_on_cup

"At first sight, the arms and legs of the figure are simple cute but when it becomes apparent that the cuteness is also functional, then "cute" becomes transformed into "pleasure" and "fun", and this, moreover, is long-lasting...[this] unexpected transformation is the key."

Designs that invoke some sense of being fun (I avoid the term "cute" for I am uncertain when to use this term) seem to appeal to us. This tea strainer was rather surprising because viewed on its own without the teacup, it was just another childish design. However, when coupled with the teacup, it becomes functional and its hanging legs that just barely touch the table gives it a nonsensical look that we find funny.

A judicious use of fun and games can make the difference between a dull experience and a fun one that makes you keep coming back. Google would be a company that exercises fun within the right proportions. For instance, its main page logo changes every time there is a special occasion such as Halloween or Christmas. Simple things like these make it seem that Google is a fun site. And when you have a sense of humor as well as the best search technology in the world, that is an impressive combination.

I guess what I learned from reading this book (Emotional Design) is that sometimes you just have to appeal to the kid within all of us; in a non-pushy way of course (think hello kitty--that is an overkill).

Overall, Emotional Design was a nice read. It mentions a lot of things we take for granted and never had the time to pay attention to. Donald Norman does a good job of highlighting things that can make or break your day.

Some things that you might want to try out:

Posted in | no comments |

Advice for Computer Science College Students (And I guess for Computer Engineering as well?)

Posted by Nicholas Chen Tue, 04 Jan 2005 00:28:58 GMT

Joel on Software - Advice for Computer Science College Students:

  1. Learn how to write before graduating.
  2. Learn C before graduating.
  3. Learn microeconomics before graduating.
  4. Don't blow off non-CS classes just because they're boring.
  5. Take programming-intensive courses.
  6. Stop worrying about all the jobs going to India.
  7. No matter what you do, get a good summer internship.

Here are my views on each sentence (they are not statements for they may not be true, I believe):

  1. Learn how to write before graduating.
    Indeed this is something that I believe it true. In fact all the general education classes here in this university mandates some form of written assignments. Written assignments are good because they force you to think of things in a more complex manner that reflects your thoughts and not just recitation of the information from the book. Writing is not something that you can just do at the spur of the moment. Well, sometimes spontaneous writings do convey your feelings more vividly but most of the time it just reads like it was written by some kid. I know a few people who try to avoid taking classes that require writing, preferring classes that have more exams instead. I find this a bit disturbing because in an exam, especially an MCQ one, you do not have the choice of bringing in your own reasoning--your choices are limited. This, to me, does not lead to any form of creative thinking.
    Anyway, Joel also mentions that being a good writer means that you are able to convey the message across to as many people as possible. He is not the first person to tell me this. My Physics 111 teaching assistant has also convey this fact, as has my Physics 114 teaching assistant. So has my ECE 390 professor for whom I was a teaching assistant for the class. Smart "enlightened" people agree that writing properly is important. I try to write most of the things on this weblog using non-technical nomenclature so that in the rare event that some person stumbles by, he or she need not be a CS major to understand. Just as it is important to be able to write, it is also important to me to write with simple sentences especially when the subject being discussed is complex enough. Older textbooks suffer from this mistake as do modern ones when they generalize: "... thus it is simple to see how this can applied to the converse." For a person reading the textbook for the first time as the primary source of learning it is not simple. Maybe when you finally get it and refer back to this book then it is simple, but never before that.
    The motivating news is that Joel encourages people to write so that it becomes almost secondary. And he suggests doing so through a weblog. One more thing: If you write it down, you would not lose it!
    Writing also requires reading I presume so these two activities must go together.
  2. Learn C before graduating.
    Been there done that? I do know C; at least enough of it to write fairly large programs and to understand a fairly complex ones. In fact I learned C on my own before learning C++. I doubt that any class here uses it exclusively. Nevertheless, I agree that learning C would be beneficial since Tanenbaum (Modern Operating Systems) claims that all real operating systems are written in C. And C will remain one of the most powerful languages in the world. It may let you shoot yourself in the foot but it is still able to do a lot of things that Java or Python cannot do. And it is the closest that you can get to the hardware level without actually using assembly (I program in x86 assembly).
  3. Learn microeconomics before graduating.
    I have no comments for this since I have no understanding of what microeconomics is. Hence it shall be one of my projects to actually find out what it is.
  4. Don't blow off non-CS classes just because they're boring.
    I guess for me it should read: Don't blow of ECE classes just because they're boring. Point taken. Maintaining a good CGPA shows that you are able to commit to your studies no matter how boring it is. So unless you think you are going to be Bill Gates and drop out of college (a fact that he kind of laments now) you might as well make the best of it.
    In other words, spend as much time as necessary on those classes as you would on a technical class. Most of those classes (the general education ones, not the ECE ones) do give you a broader perspective of life as mentioned in my semester-end reflections. And as my girlfriend keeps telling me, there is more to life than just bits and bytes.
  5. Take programming-intensive courses.
    The same advice was given to me by the Apple programmer who came to interview me for an internship. If you really like programming then you would enjoy a class that has a lot of programming assignments. Especially if you get to build a real application and not some command-line thing. My Software Engineering class has been enjoyable because of that.
    Theory classes are important but hands-on programming is still more fun. And theory is something that you can refer to from the book but applying those theories in a effective manner takes perseverance and lots of practice.
    Leave the theory to the mathematicians--they do a very good job at it. When you are seeking a job, programming skills matter more. As long as you have some background in mathematics (which I believe I do since the Computer Engineering curriculum mandates at least 6 math classes) you should be able to read and understand the math should the theory arise. Getting bogged down with the details of how a hashtable works and not actually being able to use it is bad.
  6. Stop worrying about all the jobs going to India
    I don't. Only cheap companies outsource all the jobs to India because of the cheap labor. There are of course good Indian programmers but trying to send more projects over to India just because it is cheap is not the smartest move.
    Cheap does not imply efficiency. And when you have a good programmer you can expect your project to at least stay on track. But when you have a bad programmer, you can expect to see negative growth. If I recall correctly, it was mentioned in my Software Engineering class.
    For a better discussion of this matter head over to Wired Magazine: The New Face of the Silicon Age.
  7. No matter what you do, get a good summer internship
    Will work on this since I am an international student and they are not too keen on hiring us.
  8. Joel: unless you're gullible enough to do all that stuff just because I tell you to, in which case add: 8. Seek professional help for that self-esteem thing

  9. Do not follow all advice given to you.

Posted in , , | no comments |

2005: An experiment in being productive (with a bit of GTD thrown in)

Posted by Nicholas Chen Sun, 02 Jan 2005 07:55:53 GMT

I have decided to make 2005 the year that I try the most software/ techniques to stay productive. Being productive is a subjective term, so I had better define what it means to me. I just want to ensure that I have all my information where I want it and when I want it. In a nutshell, productivity is efficient information management. Only with efficient information management can I be prepared to take on all the tasks and projects that 2005 holds.

I have been reading a lot from 43 Folders. Merlin, who maintains the site calls it the art of Getting Things Done (GTD) after being inspired by this book from David Allen Getting Things Done: The Art of Stress-Free Productivity. I finally went to order it today from Amazon.com together with another book I have been planning to read: Mind Hacks (more on that in another future post). Since the book takes about 5 days to get to me, I decided that even before reading the book I will outline what I plan to do and then compare it to what David Allen says. Of course, what I plan to do has been slightly influence by GTD since I have read some of the things on the web about it.

I have invested in a moleskine pocket-sized notebook which I intend to carry around with me whenever I am out. I have a Palm Tungsten but I decided that it will be more convenient to carry a notebook around. Why? By using the Palm I am limited to taking notes using Graffiti; though I can write pretty fast with Graffiti, it still does not seem natural to me. Moreover, I feel that a notebook will allow me to jot things down as quickly as possible. I will be using this notebook to primarily jot down notes that come to mind and also include sketches (something that is limited in a Palm even when using the Notes application). Since I will be carrying my iPod with me most of the time, I can easily access my address book and schedule. Whatever needs jotting down will be quickly recorded down with pen and paper before it is forgotten: Document it or it is lost! or The faintest ink is better than the mightiest memory!

Anything that I read will also be jotted down now for permanence. This can involve writing it down in my moleskine or just writing things down within the pages of the book. Important quotes will be transferred to the computer so that I can search for them quickly. I will continue to maintain my text file of interesting fortune messages. Here is an excerpt:

A is for awk, which runs like a snail, and
B is for biff, which reads all your mail.
C is for cc, as hackers recall, while
D is for dd, the command that does all.
E is for emacs, which rebinds your keys, and

When I am on my computer, I will be storing whatever websites that I am interested in using bookmarks. And if I find a particularly interesting article, I will store it inside StickyBrain. Too often have I encountered the frustration of not being able to locate that bloody article when I need it even though I can remember what website it is from. Because certain articles may seem important but then lose its importance over time, I will be keeping them inside one main folder in StickyBrain first. And then I will look at them two weeks from now and see whether they should be moved into their own folders. Else that article would be gone for good. This is of course a dangerous situation but it is also another of my methods for GTD: if the article has not been touched within 3 months, it is probable that you will not use it and it will be obsolete when you need to use it.

Using the two methods above, I hope to be able to quickly store what I need and retrieve it easily in the future. When I am not near a computer I will be using my moleskine and when I am near one I will be using StickyBrain. And when I am on a computer that is not my own, then I will be using plain text files that I will send to my gMail account or just sftp them over to my computer. This combination seems to be the best. Writing something down gives it a sense of permanence and having it on my computer whenever possible will allow me to quickly search for the article. And the best (or worst) news is that any article that I have a comment for will quickly be posted to this blog using the MarsEdit bookmarklet. I will be expecting a lot of new posts to this blog.

For my classes, I will be using the large-lined notebook that I have been using. I will continue to meticulously record the date I took the note on the top right corner. And I will jot down class notes using a pencil (since it is easily erasable). When I next review them I will be using a pen to jot down future thoughts. Homework assignments will now be done using separate pieces of paper and not by tearing them from my class notebook. This helps the pages from finishing too quickly and hopefully it does not leave me with more than one notebook for each class I am taking. I particularly dislike this because then I have to use two notebook while revising. I will probably not be using PowerPoint files to jot down my notes anymore since I can still write and illustrate faster than I type. So, I will make it a point to try to print out all the lecture materials for that lecture beforehand. In the event that I do take notes for a class, maybe one that has extensive online materials or I am reading from an article, I will be using OmniOutliner.

Moreover I will be storing all the articles I come across on the web in the respective class folders which I will create. They will either be organized by date, lecture, or subtopic, whichever is more convenient. This files will be backup and should be available on some shared folder which should be easily accessible.

Those steps should take care of information management. I am still looking for some method that will allow me to quickly access all my information and synchronize them over multiple computers. Right now, .Mac seems to be one way but it is limited to macintosh machines. Tasks seems to be a good program to try out but I find its user interface leaves much to be desired. And it does not synchronize with the tools that I am currently using. And I am glad that MovableType supports posting from an external browser using its web interface. So I am still able to quickly recored my thoughts on some site before I forget.

Another thing that I will be doing would be using more "tasks" in my to-do lists. It seems that having a phrase like "complete mp1" is direct and understandable. However, completing mp1 is not a task, it is a project! Tasks are things that can be completed within an hour or so. Breaking "complete mp1" into tasks would of course mean more typing but it makes the current task that needs to be done more tangible. So I am going to try that out.

My iCal and AddressBook will now be as updated as possible so that all data will be synchronized across all my machines. I hope that Mac OS X 10.4 Tiger will bring about better .Mac synchronization.

My desktop shall remain as clutter free as possible. It will only hold files and folders that should not need to remain there for more than a week. If they do, it probably means that I should store them in some folder. I know that Google Desktop search would be able to find everything, but that will not be how I use it. I will be using Spotlight/ Google Desktop search to quickly locate pieces of text that I need. Not locate files that I misplace in the first place.

All in all, this might seem like there is going to be a lot of information to store. And I agree. Nevertheless, the way I have described it seems to be logical to my own mind. I will of course change it if it fails in some way or complicate matters.

This post was written quickly in the spur of the moment so that I can document all the ideas I have got for GTD. So it might be a little choppy.

Updated: Of interest would be this article on the New York Times that compares and contrasts the "fast" productive side and the "slow" but successful side. Resolved: To Do More. Or Less. Or Something

Posted in , , | 1 comment |

Visceral, Behavioral and Reflective

Posted by Nicholas Chen Wed, 29 Dec 2004 09:56:23 GMT

I am currently reading Donald Norman's book entitled Emotional Design. I read another of his books a couple of weeks back--it was called The Design of Everyday Things. The Design of Everyday Things deals with the behavioral nature of design: function. However in this book, Norman seems to agree that good design depends also on its beauty and inner appeals.

Norman says that there are three categories to good design: visceral, behavioral and reflective. I feel that it would be appropriate to illustrate these three terms using the Apple computer.

  • Visceral
    Visceral deals with appearance. The more honest of us will agree that few if any of the other computer hardware in the market today have the physical appeal that an Apple machine exerts. Dell definitely has to undergo some serious design issues; their latest machines seem to be some clone of previous macintosh models. The only other computers out there that have some form of physical appeal would be those in the Sony VAIO line. For instance, my powerbook G4 is still better looking than any other of my peers' computers. It has a certain appeal: its almost symmetrical keyboard layout, the large track-pad in the center, the color coordination, and its thinness. Its titanium body also exerts a certain tactile feel to it that is not perceivable on black plastic. It feels almost sexy.
    Furthermore, visceral deals with our first impression of the machine. It by-passes all of our logical thinking. It is the "i-want-it" factor. It leads you to believe that titanium on a notebook is cool even though it might scratch easily. It tricks your brain from realizing that a slot-loading CD-drive will not be able to accept those awful mini-CDs that some companies love giving out. And it lets you forget about how some of you misinformed friend would make fun of the single mouse button. In short, its physical beauty hides all other of its possible flaws; the greater the visceral quality of the product the more likely it will be the influential factor when deciding to buy or not to buy.
    Though Norman does not mention this in his book, I believe that OS X's user interface itself is appealing. In a computer world, most of the everyday tasks involve moving the mouse around the screen; there is very little that you can touch and feel besides the keyboard and the track-pad. Thus the GUI designers have at least made the interface appealing with the Aqua interface and all those beautify buttons and icons. Some command-line users might argue that all those beautifications are useless but to a first time user, it has a certain appeal. And even to a user who stares at the computer almost 90% of his day, those simple colorful buttons still have a certain appeal to them even if you do see them everyday. Their colors and design are neither too gaudy nor too austere.
  • Behavioral
    The term behavioral deals with the pleasure that one derives from the usage of the product. I can attest to the fact that using my powerbook and OS X has given me no less pleasure today than it had when I first powered it on. Everyday I am able to use my computer and be productive when I want to get some work done. I can also enjoy my music and games when I feel like it. Also, nothing prevents me from trying on new programs without the hassle of trying to get rid of program residue. Even Windows runs better in a controlled virtual PC environment.
    It is the behavioral factor that determines whether you will be able to use this product daily. It measures how long you are able to bear using this product without cursing or attempting to dismantle it. And when the product in question is a notebook that will be serving you for most of the day, it had better be usable.
    How do you get a product that is going to appeal to almost everyone? Well you cannot. During a talk by Guy Kawasaki, one of the early Apple evangelists, he suggests that you do not try to convert someone who does not wish to be converted. Therefore, Apple is wise in the sense that it still maintains control over most of the OS and machine. Apple is not going to even try to appeal to everyone; not everyone is going to like its iLife suite. Some would even prefer to install some Linux distro instead of using OS X. But that is not the point. OS X is designed in such a way that there is at least some features that will appeal to different groups of people. For example, some users will never need to use the command line so OS X does not mandate the use of the command line to do anything. Some people will not need to use XCode for developing so it does not come installed by default. In short, though Apple exercises some form of control over its machines, it does leave the more intrepid user with freedom to do what he or she wants.
  • Reflective
    I am proud to be among the few in my ECE department who use a macintosh. I like being different from the rest. Whenever everyone brings out their black notebooks I am there with the only computer that is gray and has the glowing Apple logo. I feel good whenever I see another user with a macintosh.
    Few products can have such an effect on people. And when they do, you know that they have achieve some form of brand power. Their consumers will proudly become walking billboards for them. That is why Nike is able to get away with the rather prominent swoosh logo on their products. And why Dell's logo will forever be those simple 4 letters with the slanted E as a failed attempt at being creative. Most people will treasure the Apple stickers that come with the purchase of a new machine. That is why Apple throws a couple of them in and no other company does this (i think).
    A successful product will have the users talking about it. And also forming close knit groups that discuss about the product they are using. It is the final factor that will probably determine whether you will be using this product for a long time to come. It measures how much that product has become part of your lives so much so that you are willing to tout that product to everyone else.

I think that Apple has succeeded in creating products that fulfill all three categories. In the book The Culf of the Mac, we can see devoted Apple fanatics clinging on their Newtons, modding their macs to be more personal and so on. Few others in the PC world would do something like that.

Posted in | no comments |