A9.com and Sogudi
I have tried using A9.com in the past but because it was not integrated into Safari's search toolbar, I found it more convenient to use its default google search engine instead.
However, after downloading Sogudi and adding a default_search shortcut into its preferences, I was able to change the default search engine for Safari's toolbar to A9.com. Just create a field called default_search and set its attributes to http://www.a9.com/@@@.
The advantages you gain by using A9.com when you have an account are having your search history available to you and also the list of sites that you have accessed through A9.com. This can be useful if you are browsing from another computer and you want to recall what topic you searched for and what pages you visited.
A tip to speed up searching would be to turn of images, references, etc on A9.com.
If you prefer to be able to log and index everything that you have searched for on your local computer, then you might want to try Dowser.
Firefox users have the choice of using the A9.com toolbar or just installing a search plug-in. The A9.com toolbar seems to have more features including bookmarks and a diary.
Posted in software, web pages | no comments |
Big Improvements in a Great Outliner
Big Improvements in a Great Outliner: "I do wish that the new utility drawer would open on whatever side of the window has room as Mail's does. Currently it's a minor annoyance to have it always open on the left – at least it moves the window for you. The one real problem I encountered was a regression from the previous version – 3.0 took around 75 times as long to open the same OPML file as 2.2.6 did. Assuming that is fixed, OmniOutliner 3 is an improvement in every way"
I have to say something about this. I seriously do not like the way the utility drawer opens in Apple Mail. Nor do I like the way it does it in BBEdit. The utility drawer should stay on one side of the window--the side that you decided upon! It is annoying when the utility drawer decides to pop up on the other side that you are not used to. I am glad that OmniOutliner does this right just as OmniWeb does it right. Just my 2 cents!
On another side of things: one slight bug that I discover in OmniOutliner Pro is the fact that if you assign your named styles quick keys using CTRL, it does not seem to work. But if you stick with the function keys, it works. I have no idea why. But I have left it to the function keys. Dragging and dropping that small icon to the text that you want to stylize does not seem very efficient to me.
Posted in paradigm, software, web pages | no comments |
GTD: StickyBrain for Palm and iPod synchronization
I am into the second section of David Allen's Getting Things Done book. He was mentioning about organizing and how you can choose to use an electric organizer or a paper and pen organizer. Then I stumbled across this article on 43folders: How does a nerd hack GTD?. Merlin was using BBEdit to show all his @action lists in one window. And using Quicksilver he can quickly append a new entry to the text file using the Append to.. command.
However, as much as I like using Quicksilver to quickly add a new entry to my action lists, it does not allow for easy synchronization with my Palm and iPod. StickyBrain filled that niche. By adding a new note that belongs to both the Palm and iPod folder in StickBrain, I am able to keep both lists synchronized. And I can always take them with me wherever I go. This is good because I can never modify notes on iPod so I do not need to worry about versioning and merging. And since if I do modify anything on the Palm it would reflect that it is my latest version and StickyBrain should just replace the whole file and vice versa. There is no concept of merging; this can be a bad thing because if I made some changes on the Palm and forget to synchronize, and then make some changes in StickyBrain, the next time I sync, only the changes in StickBrain will be reflected.
However, using StickyBrain does not solve all the issues that I have:
- The size limit for the note on the palm is 32K. This should not be a problem but there is no guarantee on what happens when it exceeds the 32K limit. The same thing should apply to the iPod because the iPod cannot store notes larger than 4K. However, StickyBrain is smart enough to link the chunks together (good!)
- There is no way to sync with .Mac. And I just realized the other day that to install the iDisk component for Windows, it require administrative rights. Therefore, the only folder that you can access on .Mac is the public folder. Even then, it is pretty hard to make changes. I do not think that I can use the default WebFolders program on Windows to run .Mac. So if I forget my iPod or Palm, I have no access to my lists!
- Furthermore, StickyBrain does not store its notes in .txt format. It stores it using some XML format. So I cannot just access those notes by using SSH from a campus machine into my own machine. The only solution I can think of now would be using VNC. Hopefully, a VNC client can be installed on a Windows machine without administrative rights.
Since my current setup already settles the issue of synchronizing with my computer, iPod and Palm, I am going to continue using StickyBrain. However, I want to be able to export my files using a single click to .Mac. I was thinking of using Applescript to take those files out of StickyBrain but, alas, StickyBrain does not offer AppleScript support. Dead end (for now).
Updated: Webmin saves the day, somewhat. Now I am not dependent on any platform specific tools to have access to my computer. Using the hints over at macosxhints.com I am able to configure Webmin over SSL and use it to access files from my computer. The only thing that is needed is a browser that supports java.
And since I am so keen on being able to access things from my computer, why not run VNC on it too? Indeed, that is what I am doing. This is good because I can use the nice Aqua interface from a windows machine; almost like remote desktop. Three resources for this:
- Server for OSX: OSXVnc
- Client for OSX: Chicken of the VNC
- Client for Windows: VNCviewer
Posted in readings, web pages | no comments |
The answer to ubiquitous computing: Glue
anti-mega: glue:
"physical to digital glue ('inputs'):
CD ripper
DVD rippers
digital cameras
webcams
digital to physical glue ('outputs'):
Airport Express
PVRs
video senders
digital to digital glue:
web servers
APIs
UNIX-style pipes
wifi
3g"
This is a new way of thinking of ubiquitous computing. The author, Chris thinks that we do have enough devices to accomplish ubiquitous computing. We have all our cellphones, iPods, PDAs, etc. For a person such as myself who is living within the campus, finding computers is even easier: just go into any building and log in with your student account. But, even with all the computing power in the world right now, there is a lack of coherence. It is almost impossible to get a PC to sync with my powerbook. Sure .Mac synchronization means that I have access to all my bookmarks, contacts and schedule. But that is about there is to it. What if I need to access other things? What if I need some file to do some presentation? Am I able to access all my notes? The chances of ever needing those files are not too probable, but they are real. And when you really need those files what can you do to get them?
What if you made some changes to the data from one source? How would you resolve potential conflicts? Since you should be the only one accessing the information, you might be able to avoid this problem if you have an always-available repository. But what if you have devices like a Palm? Changes made to it are not reflected until you perform a sync. And if you were to modify the dates on the computer before synching with the palm, currently you can only accept changes from the computer or the palm (an exclusive or); there is no merge functions yet. Would subversion (or CVS) be the answer? But how would you get the masses to understand concepts such as commit, revert, merge, ignore (even I have problems resolving conflicts within CVS)?
If you think that is hard, what about trying to glue physical to digital? What if you write something with pen and paper (contrary to popular belief, the most ubiquitous form of recording information would still have to be the pen and paper)? How would you digitize that information? And if you have digitized it, then would you render your pen and paper version obsolete and throw it away? I do not think there is a way to resolve physical to digital conflicts. Ubiquitous computing can only happen between digital products.
Probably the most powerful computing equipment that you own would be you own PC. And it lies in your house. What level of computing power would you need when you are on the road? How much is too little, and what level would you define to be overkill? Why not just bring around a little device that can access your PC at home? Use some form of wireless connection to retrieve files that you need on the fly. If we do that, then how much information should the device be capable of displaying? Will it be able to support pictures, sound, movies? Who decides what it needs to support? And once someone determines what files it will support can you, as the user, ever change it according to the your needs? Must the user carry around his iPod to listen to music, his Palm for writing data, his notebook PC for programming tasks, his cellphone for communication?
Chris says: "There's an important lesson, in that monolithic solutions aren't that useful any more. Products need to be extensible and open at the edges to be useful". Again how extensible? More importantly, I believe since products will become more capable (but not necessarily better), the issues of migrating and upgrading should not be taken lightly. Migrating your files from an old machine to a new one can be more complicated than you think. What if you just found a better program? How are you going to migrate all your files in the old format over? Or how can you share existing files that have been written in non-standard schemes? Will we forever be limited to storing unicode text?
The main thing I am trying to emphasize here is that for me, there are so many more issues with ubiquitous computing. Would it be possible to implement some protocol that satisfies everyone? How many people do you have to be able to pleased before that product is marketable? I do not have the answers. We will have to see what this year holds for ubiquitous computing.
The glue might be becoming more of a reality. As The Tao of Mac puts it, SyncML is a realistic standard that should be adopted. This .pdf file does a fairly good job of providing an overview of what it is. In the end, standards are just standards and nothing prevents some company from inserting something into the XML schema that will break everything.
For some of the available toolkits please check out SyncML toolkits. For a more elaborate description of SyncML, these two links are very readable:
This essay just highlights all the problems that I think might deter the progress of ubiquitous computing. I have not researched too thoroughly on this so some of the questions I brought up might already have been resolved by the time you read thisPosted in paradigm, readings, web pages | no comments |
Back to basics
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 paradigm, readings, web pages | no comments |
Advice for Computer Science College Students (And I guess for Computer Engineering as well?)
Joel on Software - Advice for Computer Science College Students:
- Learn how to write before graduating.
- Learn C before graduating.
- Learn microeconomics before graduating.
- Don't blow off non-CS classes just because they're boring.
- Take programming-intensive courses.
- Stop worrying about all the jobs going to India.
- 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):
- 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. - 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). - 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. - 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. - 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. - 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. - 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. - 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
Do not follow all advice given to you.
Posted in paradigm, readings, web pages | no comments |