Category Archives: List

List of Favorite OS X Web Developer Apps

The following tools are either open source, shareware or freeware. For shareware, I will post freeware alternatives.DEVELOPMENT* JetBrains RubyMine (for Ruby and Rails development)

* Charles Proxy
* PHP xdebug with remote_enable = true

* SourceTree (if you use git)
* Cornerstone (if you use svn)

* iTerm2
* Zshell with Oh My Zsh
* BetterSnapTool
* Mou (Markdown Editor)
* Tabs Outliner extension for Chrome

* LittleSnitch
* Skitch
* Dropbox
* SuperDupr! or Time Machine
* RescueTime
* Solarized Theme (for shell, TextMate, etc.)

Remote repository hosting

A dedicated IDE or Editor. Pimping Your IDE will be in another post. Here are my most used editors/workflows (not in any specific order. Usually the right one for the job.)

MacVim with solarized (light) BG but I’m constantly tweaking the colorscheme. Font is one of Anonymous, Source Code Pro, Consolas, Inconsolata, all patched for powerline (optional.)

I use NeoBundle to manage my vim packages. Here are my current bundles:

" After install, exec ~/.vim/bundle/vimproc, (n,g)make -f your_machines_makefile</pre>
NeoBundle 'Shougo/vimproc'
NeoBundle 'Shougo/vimshell'
NeoBundle 'kien/ctrlp.vim.git'
NeoBundle 'honza/writer.vim'
NeoBundle 'vim-ruby/vim-ruby'
NeoBundle 'plasticboy/vim-markdown'
NeoBundle 'juvenn/mustache.vim'
NeoBundle 'tpope/vim-rails'
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'tpope/vim-unimpaired'
NeoBundle 'tpope/vim-abolish'
NeoBundle 'tpope/vim-surround'
NeoBundle 'tpope/vim-bundler'
NeoBundle 'tpope/vim-surround'
NeoBundle 'tpope/vim-characterize'
NeoBundle 'tpope/vim-haml'
NeoBundle 'tpope/vim-rake'
NeoBundle 'Lokaltog/vim-easymotion'
NeoBundle 'jeetsukumaran/vim-buffergator'
NeoBundle 'tilljoel/vim-automatic-ctags'
NeoBundle 'git://'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'vim-scripts/Vim-R-plugin'
NeoBundle 'vim-scripts/R-MacOSX'
NeoBundle 'vim-scripts/vim-mou'
NeoBundle 'vim-scripts/ShowMarks'
NeoBundle 'vim-scripts/dbext.vim'
NeoBundle 'vim-scripts/Txtfmt-The-Vim-Highlighter'
NeoBundle 'vim-scripts/mru.vim'
NeoBundle 'vim-scripts/YankRing.vim'
NeoBundle 'majutsushi/tagbar'
NeoBundle 'mileszs/ack.vim'
NeoBundle 'ervandew/screen'
NeoBundle 'L9'
NeoBundle 'Gundo'
NeoBundle 'mattn/zencoding-vim'
NeoBundle 'scrooloose/nerdtree'
NeoBundle 'scrooloose/nerdcommenter'
NeoBundle 'jistr/vim-nerdtree-tabs'
NeoBundle 'nathanaelkane/vim-indent-guides'
NeoBundle 'git://'
NeoBundle 'git://'
NeoBundle ''

Tmux + vim

Bash Tips for Power Users

Every Geek site needs an obligatory Bash Tips post

Copy Files Securely Between Two Machines

I used to always forget the syntax for this, until I realized that the syntax is exactly like the standard cp command. In fact, you can copy files like you normally would using scp, on your local machine. The following are equivalent:

$ cp file file.orig
$ scp file file.orig

Where they differ is, scp lets you copy files over a network, through SSH. Here’s an example:

$ scp contents.txt

This will copy local file contents.txt to /tmp on the remote machine, as user silver. Here are some more examples:

$ scp draft.pdf

(copy draft.pdf to my home dir on remote machine. username is implied to be the same locally and remotely.)

$ scp swine.jpg

(read: This will copy swine.jpg to local machine as a file named To make it go remote, append a : to the address, like above)

scp supports, among other things, compression (-C) and recursive copying of directories (-r).

$ scp -rC code/

Trying to copy to a directory you don’t have permission to (/usr etc) will fail.

Don’t Get Lost Jumping To and Fro Between Directories

You can use cd - to jump to the previous (NOT parent) dir. For example:

kiwi@localhost: ~ $ cd /usr/local/share
kiwi@localhost: /usr/local/share $ cd -
kiwi@localhost: ~ $ cd -
kiwi@localhost: /usr/local/share $

Another way is using pushd/popd – A Last In First Out (LIFO) stack of dirs.

kiwi@localhost: ~ $ pushd /usr/local/share/
/usr/local/share ~

pushd is like cd but keeps note of the current dir before cd’ing into a new one. The stack of dirs is listed every time you invoke pushd (the “/usr/local/share ~” output you see above.)

kiwi@localhost: /usr/local/share $ pushd /
/ /usr/local/share ~

Stack is ordered left to right, latest push first. If we pop the first dir off:

kiwi@localhost: / $ popd
/usr/local/share /tmp ~
kiwi@localhost: /usr/local/share $

We’re back in the share dir. We can keep popping until there’s nothing left (throws an error):

kiwi@localhost: /usr/local/share $ popd
/tmp ~
kiwi@localhost: /tmp $ pushd /lib
/lib /tmp ~
kiwi@localhost: /lib $ popd
/tmp ~
kiwi@localhost: /tmp $ popd
kiwi@localhost: ~ $ popd
bash: popd: directory stack empty

Working with Long Lines

No need for more Bash shortcut cheat sheets, but here are some useful ones to help you work with long lines.

You can jump to the start & end of a line using CTRL+a & CTRL+e respectively. Example (* is the cursor):

kiwi@localhost: ~ $ echo al the ducks are swimming in the w*

and you want to fix the first word. You can hop to the beginning of the line with CTRL+a:

kiwi@localhost: ~ $ *echo al the ducks are swimming in the w

and now you can jump to the end of the misspelled word “al” using CTRL+Right twice to correct it:

kiwi@localhost: ~ $ echo all*the ducks are swimming in the w

Now ctrl+e to jump to the end of line:

kiwi@localhost: ~ $ echo all the ducks are swimming in the w*

Instead of backspacing every character, use ALT+Backspace to backspace entire words. You can also delete all or part of a line using CTRL+u combo. It deletes everything before the cursor. Likewise, CTRL+k wipes out everything after the cursor. I’ve developed a habit of using CTRL+e CTRL+k to delete lines.

Bash has a lot of ALT commands that let you move and manipulate words. ALT+l and ALT+u will make a word in front of the cursor lowercase or uppercase, for example. A neat one I don’t think I ever used is ALT+\ It pulls everything after the cursor left to the first non-whitespace character. Here’s an example, * is the cursor:


$ my     spacebar is    *sticky


$ my     spacebar issticky

Avoid Retyping Commands & Arguments

ESC + . is very useful. Escape followed by a period will output the argument you sent to your last Bash command. Command calls themselves are outputted if they were invoked without any arguments (popd, ls, etc).

Example, unzipping a file and moving the archive to /tmp:

$ unzip
$ mv /tmp

In the mv command, the archive name was outputted by pressing ESC+. (full command being mv (ESC+.) /tmp) There was no need to type the long archive name twice.

The argument is taken from your bash history. You can keep invoking ESC+. to cycle back through all your recent command arguments. (history -c to clear)

Try not to forget this; You’ll naturally find plenty of uses for it.

Another way to avoid re-typing commands is CTRL+R. It will initiate a search of your command history. Begin typing, and watch Bash try to complete your command from previous ones you entered.

Command Getting Too Big? Send it to your Editor

Sometimes you begin writing what you think will be a simple command, only to realize that it has grown too complex for the command line, and you wish you were in your text editor.

First make sure your default editor is set. This is either in $EDITOR (export EDITOR=/usr/local/bin/vim) or elsewhere depending on the distro.

Use “fc” to open the last executed command in your editor:

ls -paul --sort=size
... ls output ...

Now the ls line will be open in your editor. But what if you hadn’t executed the command yet? No problem. You’re sending off an email, but quickly realize that the command line isn’t ideal for everything:

echo -e "Dear Santa, \n\n\tIt has become evident that your fat ass is contributing to Global Warming, primarily due to the large quantity of coal you distribute annually. We hereby

No matter where you are on the line, hit CTRL+x, CTRL+e to invoke your editor, which now contains what you were typing on the cmd line.

I always find myself wanting to finish a command in vim, but unwilling to type the first few lines over, especially when I’m trying to write a for loop or any ugly multiline Bash code.

IMPORTANT: Whatever you type in your editor is executed automatically after you quit the editor.
Continue reading Bash Tips for Power Users

4 Do-It-Yourself Whiteboard Alternatives

Whiteboards are as useful as they are overpriced. I built one using tileboard (the thing they use in bathrooms), and I highly recommend making/buying one. It took me awhile to find tileboard in my area. In case anyone has the same problem, here are 4 alternatives I considered:

They are not in any specific order.

Glass or Plexiglas

Anything Expo markers can write on may be used as a board surface. This means a piece of glass, or acrylic glass (Plexiglas), placed over a bright white surface it (i.e., a wall or table). Glass actually works pretty well in terms of eligibility and clean up, but it’s heavy, has sharp edges and cannot be drilled into (easily). It’s also not cheap.

Plexiglas works well, but I heard some dry erase Expo markers have problems coming off. Research this before trying Plexiglas. Never use Acetone to clean Plexiglas (or any plastic).

Plexiglas might be a hassle to cut. Sawing at a high speed, be it power or manual, might cause the edge to melt and stick back together between each cut. It’s usually cut underwater ( don’t try putting a power saw in your bathtub).

What I did was use a regular hack saw, and had my friend shoot the area I was sawing with a water gun to cool it between each cut. A water gun.

Both glass and plexiglass have the advantage of letting you make overlays (assuming they are translucent). You can put anything behind this board, as opposed to having an all white surface. Some examples I’ve seen are adding templates like a blank calendar or checklist behind the glass.

If you put some work into it, this can be a nice, cheap setup.

Chalkboard or Chalkpaper

Chalkboards are cheaper than whiteboards, and even cheaper if you go the DIY route and make one using chalk paper. Chalk paper is basically a rough surface you can buy in rolls, which can be written on using standard chalk. Which means.. hopscotch in the office!

Chalkboards have great contrast, and chalk is dirt cheap compared to dry/wet erase markers (unless you steal those from your local college). The problem, and it’s a big one, is chalk dust. Chalk dust in a small room or office make this route unacceptable for most people. There is “anti-dust” / dust-free chalk, but dust can still be a problem if you don’t have good ventilation.
Continue reading 4 Do-It-Yourself Whiteboard Alternatives

Top 5 Linux Apps That’ll Boost Your Productivity

These are not in any specific order. Also, some might be available on other operating systems.


This is the best note taking app I’ve ever used. It sits in your taskbar, doesn’t annoy you and doesn’t hog your cpu cycles or memory. When you wanna jot down something, hit a global shortcut, type away, and then close. Notes are saved as you type, and it automatically links notes together if you use CamelCase words. It’s written in C#, and still pretty young, but I’ve never had a problem with it in regard to stability or compatibility.

If your distro’s repository doesn’t have a package for the latest version (0.12.0, I highly recommend downloading a newer binary and/or install from trunk/)

Official site:

Tilda and friends

You know those slide-down consoles in FPS games like Quake, UT, Half-Life, that you invoke by hitting tilde (~), and use to enter your leet r_picmip hacks? Tilda is a Quake style drop-down terminal that gives you the same quick access to your Linux console on any workspace. No more opening a new terminal window for every little task.

Official site:

Tilda isn’t the only app of its kind. It’s not even the first. Check out the alternatives as well:
sjterm (“works well with Compiz”): (alt page)
Yet Another Kuake (Yakuake, for KDE):
Visor (OS X):


RescueTime is a little program you download (Mac, Windows, Linux) that sits in the background and checks what windows/apps have focus, and uses this data to compile statistics about your computer habits and productivity. It creates neat graphs and shows how productive you are compared to others within a certain time frame.

The commercial versions have some great team features but the free one is enough to track your own productivity. If you’re paranoid, run it through a proxy or chew some Alprazolam or Zyprexa. It’s worth it.

An app sorta like this was an idea I had but never implemented. It was one of those wake up in the middle of the night with an epiphany, scramble to find a pen and paper to jot it down before it’s gone forever idea, that you then wake up and either find silly or just toss in the idea bin never to be thought of again. The idea stemmed from wanting to create a chart of how I spend my time and compare myself week by week. My proposed implementation was a lot simpler though. I was thinking about having it only track apps that you specify.

This differs from RT which has a gigantic db of categorized apps and lets you choose categories to tag as productive or not (i.e., rhythmbox and mplayer would go under audio/video) I like RT’s implementation.

Official Site:
Unofficial Linux client (works great):


Screen is something you find on everybody’s list of Top/Fav Linux apps. If you use the console a lot, especially remotely, screen is a must have.

It keeps a persistent console session open, and lets you attach and detach from it anytime you want, which is great if you get disconnected while working over a network, or when you want to continue what you’re doing at home from work or while on the road. It also has neat features like split screen, tabbed consoles, etc.

When you first run it, you might not notice anything different, but you’re actually in a screen session. Press CTRL+a, followed by ‘?‘ to see a list of shortcuts. Tilda + screen = hacks.

Note: The CTRL+a keystroke is part of many of screen’s shortcuts. Unfortunately, it’s a shortcut in Bash that I frequently use (lets you jump to the beginning of the line), so this is annoying to me. There are ways around this but I’ve just gotten used to the workaround. To jump to the beginning of the line in screen, press CTRL+a, a

Official site:

You might have it installed. If not:

sudo apt-get install screen

Also check out screenie, a wrapper for screen:

sudo apt-get install screenie

Google Calendar Prism

Digital calendars are either too lean (lack features), or are too bloated to keep open. I don’t need the email features that come with some of them, and hate the fact that they’re written in Java.

I tried a number of apps before trying web apps, and now use Google Calendar. It’s secure, fast and you can see your life anywhere. One nice feature is being able to add to or edit the calendar from your PDA or using text messages. I was initially weary of putting my calendar online, but the benefits outweigh the cons (paranoia).

Going back to desktop apps. The only decent one I’ve tried was Rainlendar, but it’s broken on Linux and it’s closed source. Besides, I only liked it because it was simple but synced with Google Cal. At the time, the only alternative I considered was keeping a tab open with Google Calendar, which I wasn’t going to do because Firefox needs to be xkill’d every few days. Then it hit me; Mozilla Prism!

Prism is (basically) a stripped down web browser that is meant to help integrate web apps onto your desktop. prism-google-calendar is a packaged Mozilla Prism setup with Google Calendar out of the box.

It runs independent of your browser and can be treated as a webApp. And since it has its own memory space, it doesn’t go sluggish with Firefox and never needs to be restarted.

I keep it open fullscreen on my second monitor, and can glance at it anytime I feel lost in life.

The only thing missing is a decent alarm feature. Javascript alert()s are shit, and I don’t want annoying emails about my events. I suppose there are hacks around the problem but I learned to glance at the calendar often and don’t need reminders so much anymore.

sudo apt-get install prism-google-calendar

Top 10 Firefox Extensions that Enhance Usability

All of these extensions work on Firefox 3.x


What can I say.. Firebug is indispensable. It’s quite possibly the greatest piece of software since Firefox itself. It’s a *must* have if you do any sort of XHTML/CSS/Javascript/AJAX/er.. anything!

You can edit code on any site, live. Hate the annoying background on a specific site? Get rid of it. Ugly font? Change it. No contrast between colors? No problem. The changes aren’t permanent, of course (that’s what Greasemonkey‘s for).

There’s no better AJAX/CSS debugger. It even has a console you can use to interact with the site. Works with AJAX libraries (since they’re essentially just Javascript), and jQuery can output text to the Firebug console. No more alerts()!I won’t even go into the neat array of plugins it has.

Just get it. Tip: F12 toggles Firebug, and ctrl+F12 opens it in its own window.

Open In Browser

This should be built into Firefox.

FF Save as.. dialog

It’s still experimental, so you need to register to install it, but it’s well worth it. Sometimes when you’re viewing images or ASCII files (like source code) online, you want them viewed in the browser, but the site forces you to download them.

One example any Google Images Surfer is aware of is the fact that images hosted on Blogger cannot be viewed in the browser. Very annoying – unless you have this extension installed. It adds an option to open files in the browser to the file download dialog.

Tabs Open Relative

This should not only be built into Firefox, it should be the default behavior.

Causes new tabs to open next to the current tab, instead of launching after the last tab you have open.

Download Statusbar

What’s more annoying than tabs opening a thousand pixels away? The Firefox download dialog. It’s big and too intrusive to keep open permanently, and I get annoyed when the download is done and it suddenly vanishes. Solution? Download to the desktop and don’t use the download dialog.

Another solution? Use this extension. In mini-mode (full-mode is too bloated IMO), it displays the number of files still in progress on the bottom-right of the browser, and a single click on this opens a little “drop up” menu that displays your downloads and their status. Hovering over the filename reveals all the info you need about that download. Double clicking the file opens it and removes it from the download list.

And the ctrl+Y default download dialog is still available and functions normally (if you want to use it).


Ubiquity is to Firefox what Quicksilver is to OS X, what Gnome Do is to Linux. From its Wikipedia page:

Ubiquity’s main goal is to take a disjointed web and bring everything the user needs to them. This is accomplished through a command-line-like interface which is based on natural language commands. These commands are supplied both by Mozilla and by individual users. Commands are written in Javascript and either directly typed into the command editor that comes with Ubiquity or subscribed to. Commands to which a user subscribes are automatically updated when the author updates the code.

I won’t go in-depth about this because Aza has done so already.


This extension is initially unappealing because it seems to break most sites. What it does is disable Javascript (and by default, Flash) on any new sites you visit, until you explicitly teach NoScript that they’re trustworthy.

Besides nuisance and security reasons, one huge benefit is the fact that you can block/unblock specific domains per site. So you can enable JS on a site but keep Google Analytics or some annoying JS ads being loaded remotely, disabled.

I used NoScript on and off, but finally settled on making it permanent by changing some options to make it less annoying to me. These settings work good for my own browsing habits; YMMV.

  • Stop auto-page reload – I prefer doing this manually.
  • Forbid everything except Flash and IFRAME – nspluginwrapper crashes Flash all the time anyway :P
  • Show Status bar icon (not label)
  • Place blocked-scripts message on the bottom instead of top
  • Hide message after 3 seconds – I don’t even need this. I’m aware that JS is off by default now
  • Allow local links – Good if you develop

The main turn-off people have towards NoScript is the fact that you need to get used to unblocking sites you’ve been visiting hassle-free for years, but after a few days you’ll notice that, since you only need to allow a site once (permanently), nearly every site you visit on a regular basis will be whitelisted and will work as it always had.

My whitelist has hundreds of items, and I do view new sites on a daily basis, but in the past few days the only site I recall turning JS on for was InventiveLabs’, to see the crazy js light-switch effect.


Stealther has plenty of uses, one of which is being able to quickly see what your site will look like for users with cookies disabled, but it’s not a very versatile porn-mode. A lot of sites require cookies to be enabled, including Google Images (to keep the filter option saved), but Stealther has be fine tuned.

Hiding your history can also be achieved by using ctrl+H, sorted by Last Visited, and just hitting DEL on the top few links (why can’t you ctrl/shift select?) you visited. It doesn’t remove everything, but removes enough.

Gmail Notifier

This is not the same as Google’s Gmail Notifier Toolbar.

I’ve tried a bunch of Gmail notifiers for browsers, Gnome, KDE, etc. Nothing compares to Firefox’ Gmail Notifier. First, who only has 1 email address anymore? A notifier needs to allow multiple accounts. Second, I’d like to be notified of unread messages only until I actually visit my inbox and decide whether I want to read them or not. Many notifiers will continue to bug me until I mark the emails read or explicitly tell the notifier to stop.

Adblock Plus

I like ads. Well placed ads, not the Adsense box in the middle of an article, or sites that have more ads than content, like Ads are downplayed and taken for granted, but some are brilliant, and they still work, even on us geeks. But people hate them, and so we have Adblock.

I initially couldn’t stand this extension because it kept blocking legitimate images. That was way-back-when, and I was re-introduced to adblock when I picked up Swiftweasel. Actually, I don’t know if re-introduced is the right word. I just happened to notice it was available and was too lazy to remove it.

Install it, set it on the easy-filter and forget about it. If curious, here is the difference between Adblock vs Adblock Plus.


I have a bad habit of losing track of my time when browsing the web (I’m literally addicted to the Internet). This extension helps shed light on this fact. . It keeps track of how long you’ve been using wasting your life browsing the web.

Has a useful filter option to disregard specific sites (i.e., editing your router settings, doing job related work, etc). However, in practice, I usually forget I have it installed and don’t notice it. What I really want is a timer that will alert me every N minutes I’m viewing a site. So if I’m on Wikipedia for more than 10 minutes, it’ll bring me back to Earth and make me realize that I should be working instead of holding ctrl and clicking every in-site link on the Wikipedia page.

The extension is actively being developed, and a lot of nice features are planned (see this thread).

(Honorable mention)


Vimperator is amazing. You know those crazy ideas you get sometimes that you think are brilliant in a humorous, “if only,” sarcastic, sort of way, like “Why can’t everything in life have a vim-like interface and bindings?” — yeah, that’s exactly what Vimperator does with Firefox.

Opera users may check out this page.

What Firefox extensions do you recommend?