RSS FeedLaunchy, Keylink and other slick things
Windows 7 includes a much smoother program launch start bar, compared to its predecessors. Just click the Win key on the keyboard and start typing, and the program or the document that you are thinking of shows up. Very slick.
Very slick, but obviously not slick enough, when I still continue to use Launchy – the keystroke launcher program, and when many of my friends continue to use SlickRun and Keylink. (This post isn’t about comparing these launchers, it is just to show their value compared to solutions inbuilt in OS. My informal comparison of these 3 has been added as a comment.) Launchers used to be absolutely critical with the previous versions of Windows, and although 7 has a great start bar, there are some ways in which custom launchers still hold the edge. Since launching a program or a document is an activity that you do hundreds of times a day, even a half a second of saving in that is sufficient to consider a specialized program. So, what are Launchy’s advantages compared to Windows 7 inbuilt launcher?
Primarily, it is the speed. Launchy is just the launch bar, minus the start menu. So, it shows up faster. Also, it looks for only the programs (although you can add other things to its search catalog), so the search speed is faster.
Then, there is the issue of command line arguments. In many launchers, you can start typing “Firefox” or “Google” and then type the search phrase, and that will launch the browser, and search for the given phrase. This would save you more than half a second compared to a native solution, but this is also a slightly lesser used scenario, since most of us have a browser open most of the time.
Then there is this small matter: Launchy’s box comes up in the center of the screen. Windows Start menu’s start box is at the bottom left corner at the bottom of a large (and distracting) search menu. As the screens are becoming larger, this is a slightly larger issue. When we want to launch a program, the launch process should be as small an interruption as possible.
[One slight modification I make to Launchy right after installing it: I change the hot key to Ctrl Alt Space, instead of Alt Space, since I frequently use Alt Space C to close programs.]
Log Viewers, Tails, Chainsaws and 97 Other Reasons Developers Fight with Managers
When I worked with IBM for a navy project, my boss introduced me to the beauty of Chainsaw – a log viewer that ships with log4j. In so many words “It is called Chainsaw, because it cuts logs to size”, he said with a smirk. Tech managers have bad sense of humor, but anyway I didn’t want to tell him that I didn’t know what log4j meant as that would have made me sound dumb. So, I picked up using log4j, and right from get go, really liked it. Coupled with log4j, chainsaw is a big productivity booster, although you can also use chainsaw with JDK logging.
Logging and log viewers can have a significant impact on developers’ productivity, so the item #7 that I usually cover in the Top 10 Activities that Affect our Productivity is usually about log viewers. There are of course, a few alternatives to chainsaw, but tail+grep isn’t one of them. Tail+grep combination is used so frequently simply because developers don’t like being told they something can’t be done using grep. Developers are, generally speaking, gritty people. They are there because they like challenges, are knowledgeable and may be opinionated. Best way of bonding with them is by ranting off against evil companies. It is sometimes difficult to teach them something new, because hey, they have this really cool other software that not only does what you want it to do, it also makes great foam while playing chess during its spare cycles. And not onl
y that, you can actually do anything with it.
The problem isn’t really with developers - it is broader; developers get caught in this solely due to bloggers blogging about developers. At a more basic level, this problem exists in any form of marketing and is succinctly known as the advertising rule of 7. Whether the empirical number 7 is correct or incorrect, the notion that sales happens after multiple touch points is hardly debatable.
So, if you have never heard about chainsaw before, you can start counting this as the first touch point. 6 more to go, and I think you will start using it.
[Update: See Scott's comment below and checkout the awesome new version out.]
Word is now almost 70% of LaTeX
Way back in 1997, my independent study assignment for Prof. S K Gupta at IITD was going hopelessly fast. I had 3 months of graph theory experience (and was still struggling with chromatic polynomial while having clear intentions of solving Ulam’s reconstruction conjecture before the end of the year), and being a compsci junior, I had not yet studied two advanced classes in theoretical computer science. But that was all fine. The troubling part was – I didn’t know LaTeX. My typesetting skills were limited to a the “cutting edge” tool – Microsoft Word, from Office 97 (where Clippy makes an appearance). Prof. Gupta suggested we make a journal article out of the work, and that involved LaTeX. So, not creative output or graph theoretic discoveries, but it was LaTeX that was the bridge that I had to cross to get to the “published” side?
Of course LaTeX is not WYSIWYG. You type in a text editor, and the output is highly polished professional typeset document (for example, in PDF). How TeX does that is really magic, and that magic is the reason TeX is still the mainstay of scientific publishing. That said, the gap between Word and LaTeX is narrowing, to the point that I am ready to claim that Word 2007 is an almost 70% feature set of LaTeX. The single biggest gap that still remains is that LaTeX handles floats (pictures/tables) beautifully. Word does not. In Word, you put a picture where you need it, but in LaTeX you put a picture “somewhere here”. The “somewhere here” is pretty powerful, because as your article goes through versions, it continues to move the picture somewhere close by to adjust. This is a big deal breaker for an article that is more than 3 pages long. People do use word for long articles, but a majority of them do so because they have no choice, and no time to learn LaTeX.
There were two other deal breakers with previous versions of Word – the references and the citations.
Let us talk about references. Your document has sections with headings, like Section 1. Introduction, Section 2. Problem Statement, etc. (You know how to get headings to have automatic numbering, right?) Suppose you are saying in the conclusions – “As we discussed in Section 3.1, ….”, the “3.1″ is a reference. You don’t want to actually type in 3.1, as that number may become 4.1 or 3.2 if you add another section or subsection before that. The solution is to use references, by adding a reference (using References -> Captions -> Cross-Reference from the ribbon), and then adding a reference to heading number. This adds a logical reference to that section, much like using a \ref and \label combination does in LaTeX. Alt-INR is a handy keyboard shortcut, which is from Word 2003, but works in Word 2007 as well.
This however is only part of the story. Suppose, you added a logical reference, and now as chance would have it, you did end up adding another section in the beginning. You quickly navigate back to the conclusions to see if it says “Section 4.1″, just like magic. But there is no magic – it still says “Section 3.1″. What an otter wastage of time!
So what went wrong? Well, for one, you didn’t say abra ca dabra. Secondly, whether in LaTex or in Word, you do need to tell the typesetter to “prepare” once in a while. In LaTeX you do so by “compiling” the document. In Word, you do this by using short-cut key F9 (refresh) on that field. For a long document, you can just select everything (Ctrl-A) and then press F9. So, in other words Ctrl-A F9 is the Word’s equivalent of LaTeX’s compilation. The combination of these two things – firstly adding logical references instead of hard coded references and then using Ctrl-A F9 makes us much more efficient typesetters and authors.
The citation management in Word 2007 has improved, but there are still gaps and some tips and tricks, let us talk about them another time, ok?
AdWords Program facing “technical difficulties”?
As I cover in the Organizational Efficiency seminar, we must value both the idea and its implementation. Google owes its success to at-the-time-innovative idea (pagerank and crowd sourcing of relevance etc) as much as it does to the engineering marvels of its later years when it was the only search engine that was able to keep up with the publishing speed of the world. At the end of the day (read 2002), it wasn’t its innovative algorithm, but the engineering that stops other starts ups from building search engines. The idea provided the spark, and the engineering/implementation provided the ongoing fuel.
So, how is it possible that Google is letting its prized possession (97% of revenue) go through having “technical difficulties”? This is the 3rd time this month (we are only 8 days into it) that as I try to navigate from one tab to another, AdWords just barfs and gives me this “down for maintenance” junk. (And by the way, don’t you think this fake “performing maintenance” at 10 AM EST, actually sounds worse than the truthful “technical difficulties” message?)
Anyhoo, technical difficulties are what they are. But I am a computer scientist damn it, and I am sure I can figure out what did I do to make AdWords suddenly go into the maintenance mode.
So, this is what I did:
I clicked on Billing, and tried to enter my credit card. That is it! I tried that one more time, and thankfully, Adwords was back from its maintenance and allowed me to enter the card information, but when I click “Save”, it gives this message: “Authorization failed: Invalid credit card details”. Hmm, something is not right. The card works at Micro Center bricks and mortar store. It works at microcenter.com. It works at Amazon.com. But, Google, wouldn’t take it. What could it be? This “help article” may have a clue: http://adwords.google.com/support/aw/bin/topic.py?hl=en&topic=29244. So, is it true that Google just doesn’t take credit cards? Seems a bit ludicrous, I am sure there is more to the story than meets the eye. In either case, it would be a major faux pas for Google in case it doesn’t really accept credit cards, but allows the users to try to enter them anyway.
As my good friend Bob would put it – there is something fishy in here. (Image courtesy – Bob’s friend cbhuster.)
Why do we study algorithms?
As I get ready to teach another session of CS 6212 (Design and Analysis of Algorithms – Graduate – earlier used to be known as CS 212) at GWU, question arises one more time – why do we study algorithms at all?
Here are some problems that arise all the time, and hopefully you can see an analogy between these problems and similar ones you have seen elsewhere.
- You have an address book consisting of 5 million records. Let us assume structure is very simple – first name, last name, phone number and company name. You can search on any of these fields, and can search partially using “begins with” syntax. For example, you can search for – first name is like “Ron…”. Another search can be – phone number like “202…”. You want the search to be super super fast, and cannot afford to make any database calls. (Btw, the telephone number is a string, not a number, right?) To test the effectiveness of your program, I will give it about 200 searches (some on first name, some on last name, some on telephone number, some on company name), and take the average response time.
- You have a network topology (setup of nodes and interconnecting edges), and would like to know if deletion of a single node is going to leave the topology disconnected.
- Looking for a text pattern in a big file. Say you have a text file that is about 10 M. You can be looking for a text “designed to efficiently support unlimited number of subscribers” or text “flexible error correction results in more efficient use of spectrum”, or something else. How can we make this search super efficient?
- Your customers are scattered across 100 cities, and you know demand from each of the 100 cities and distances between cities. You would like to open 3 warehouses (distribution centers). Where do you locate the warehouses?
- There is a competition for the best “Go” program. The first prize is $5000. You need the money.
- You are designing your company’s marketing strategy, as defined here.
If you already know the algorithms and the techniques for these problems that is a very good start. Otherwise, you should consider taking some formal classes in a school convenient to you. Or, continue your informal learning in the school of life. I will be posting some more hints and pointers in the comments section later.
[If you would like to follow the CS6212 related tweets, you can follow using twitter hashtag #cs6212gwu]
Apps


