Tag Archives: Productivity

Learning to Program on Your Own

Learning how to code is like learning anything else – You have to do it. The hardest part is figuring out where to begin, and then you need some mechanism to show you that you’re making progress. The latter is important because it motivates you to keep going.

First, have a goal. I initially wanted to make AOL “punters” (apps that kicked other users offline) and malware. I found them interesting. Do you want to program games? websites? Facebook Apps? Apps for OS X?

Once you have the goal, do research on how those apps are made, particularly on the language used, APIs/libraries used, and so on.

When starting, you will be learning a lot of concepts that you will see no use for. If-then statements, variables, etc. You might understand the basic idea of what a variable is, but might wonder – why would I ever use this instead of putting the value in directly? At this stage, it’s important that you remain persistant and just go through the examples/exercises in your book (or those provided by your tutor). I noticed that most people will struggle through the first set of concepts, and then lose interest and quit after seeing that they aren’t doing anything interesting. One day, you’ll be doing something and everything will fall into place. An A-Ha moment.

You’re learning a bunch of stuff that doesn’t really connect with each other. How does printing “Hello World” to the screen eventually become a 3D game? How do I go from a console app to a window app? How does knowing what a variable or constant is translate to a web development project?

It’s a plateau — and I want to stress that this applies to almost anything, not just programming. You begin by learning a lot of stuff, very slowly making progress, and over time you begin to see that you kinda “know” what’s happening behind the scenes of the apps you’re using. After that, learning because easier and quicker. Getting to that level requires persistance.

My Turning Point – Stop Asking “What Should I Code?”

When I first began coding, I had the mentality that I had to “learn how to program” before “making app X” – This is logical but the way I structured in my head was important in impeding my progress. I divided learning how to program and making app X into two separate goals. It was a problem because it migrated me away from the goal of “making app X.” I began asking the wrong question – what should I code to learn how to program?

Instead, I should have been asking – what should I learn next, to reach my goal of making app X? I broke down app X into individual tasks, and then began learning how to do each one. For example, let’s say my goal is to program a game.

If I ask “what should I code to learn how to program?” I will spend a lot of time learning things I might not need anytime soon (or ever), I will get nowhere near reaching my goal, and will become unmotivated and quit before getting there. Instead, I would break down the game into individual tasks (this requires research) and work on learning each one.

Let’s see, I need to figure out how to make a window/draw things on screen. That becomes my new short term goal. I dig deeper and learn that I need to learn the Windows API. I learn that the Windows API is how one draws to the screen. But the Windows API is another thing I need to learn, so that becomes the immediate short term goal. Digging deeper, I realize that the Windows API is just a bunch of functions with some conventions that I need to memorize.

Now my goal is somewhat clearer. I begin reading about the Windows API, making different small apps to make sure I understand what I’m reading. Eventually I am able to draw a window and controls. Great. I still don’t have a game. What’s next? I need to draw graphics. I dig into how it’s done and learn that the Windows API provides a set of functions graphics. I’m familiar with the Win API and so I just begin learning the graphics lib. I make a few dozen apps drawing basic circles, loading bitmap images, etc. Now my goal of making a game is starting to take shape in my head. I can mentally structure how the game will be, minus a few concepts I might not have learned yet.

Persistence.

What Firefox’s Memory Leak Feature Taught Me About Life

(draft)

I’ve been using Firefox since the first public beta, and the one thing always on my wish list was fixing the sluggishness and unbelievable memory consumption (2 GB of RAM?) that results from keeping Firefox open for too long. This is still on my wish list today (almost 2010), and I know it’s unlikely to be fixed. In fact, I’ve realized that – Zen Moment – the ‘patch’ must come from within.

The Mozilla team claim it is a feature and not a bug. Firefox stores pages you’ve been to so that you can go back to them instantly upon hitting the “Back” button. This means that FF’s memory needs grow as you browse the net, and leaving a page doesn’t necessarily mean the page’s memory has been deallocated. It makes sense, but in practice it results in Firefox becoming unresponsive. You can go into about:config and edit hundreds of settings, but I’ve never had any success with any of them in any version of Firefox on any OS. Ever.

I probably don’t use Firefox like the majority of users, and certainly not like the developers intended. For one, I don’t close it. In fact, I’ve never voluntarily closed Firefox in my life (I don’t shut down). I purposely crash it and then re-open it so that it asks me to load up all my previously open tabs. This clears out some memory and restores responsiveness making Firefox useable again.

Why don’t I just close it? Because I usually have a minimum of 50 tabs open across several FF instances, and some of those tabs are actually those “Oops, this is embarrassing…” windows that let you choose what tabs to re-open when you re-run a crashed Firefox. That means some of the tabs hold the potential to open up dozens or even hundreds of more tabs.

I feel relieved when Firefox is unable to restore my tabs. Life starts anew.

I keep tabs open that I intend to go through (never!), and I keep different sets of windows/tabs open depending on what I’m doing. i.e., cooking tabs in one window, work tabs in another, research tabs in another, etc. But this isn’t restricted to Firefox. On my Linux desktop I have 2 displays and 8 virtual desktops, making that 16 workspaces, and they’re usually always full. Since I have the RAM/power to run this setup, it’s smooth… except for Firefox and most other browsers (not Chrome).

On this desktop I worked around the Firefox memory problem by creating multiple profiles and using different profiles for different tasks (one for work, one for multimedia, etc). This also allowed me to crash one without affecting the others. It’s a temporary and crude solution until Firefox natively supports multiple processes like Chrome (see Electrolysis.)

But while there are some workarounds, fixing the technical issue isn’t going to increase productivity much. Having more sites open will probably make things worse. The habit of putting things off for later is inherently the problem. Having many sites/apps open is normal only amongst abnormal people. There’s nothing ‘wrong’ with it, but I don’t feel it’s very efficient, even if it may seem so at the time.

I’m generally disorganized and severely ADD-ed, and so this issue doesn’t only exist digitally. My desk is just as messy as Firefox. I have pieces of paper, napkins and anything else I jotted down notes on. I have unopened snail mail, opened but unchecked mail, and mail that has been checked and separated into 2 piles, those that require a reply and those that are to be trashed. There’s books I’m reading (multiple), and always unsorted pages of ideas/diagrams/blueprints of things I’ll probably never get to.

I’m obviously spreading my attention span thin. Going back to Firefox, if there’s an important piece of news on a page buried beneath other sites, I subconsciously still have “must read that article” somewhere deep in my head. It probably doesn’t result in any noticeable effect on its own, but when multiplied by 100x, the decline in calmness becomes significant enough to kill productivity. It produces a weak feeling of anxiety or overwhelmingness.

Small Vim Shortcut for PHP Tags

The short tags in PHP have been deprecated as of 5.3.0. Short tags provided a shorter alternative to the annoying-to-type <?php and <?php echo. Instead, you could use <? and <?= respectively. This was great but it caused problems when working with XML files, and the short_tags option was disabled in the PHP config by default on some implementations.

To make life easier, I created this vim mapping that will expand <? to <?php and <?? to <?php echo. You may change the abbreviation as you see fit. Simply place this in your .vimrc

inoremap <??    <?php echo  ?><Left><Left><Left>
inoremap <?     <?php  ?><Left><Left><Left>

Re-open vim or type use :source ~/.vimrc to reload the config. Now just type <? or <?? in insert mode.

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 silver@ssh.domain.com:/tmp

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

$ scp draft.pdf ssh.domain.com:

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

$ scp swine.jpg rex@ssh.domain.com

(read: This will copy swine.jpg to local machine as a file named rex@ssh.domain.com. 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/ ssh.domain.com:/archive/code_02032009

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 -
/home/kiwi
kiwi@localhost: ~ $ cd -
/usr/local/share
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:

BEFORE:

$ my     spacebar is    *sticky

AFTER (ALT+\):

$ 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 archive-with-a-long-ambiguous-name-03092009-5960-1.2.5.zip
$ mv archive-with-a-long-ambiguous-name-03092009-5960-1.2.5.zip /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 ...
fc

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

post_it_note_wall
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

Multiple Monitors vs One Big Screen

dualscreen
Most people I know who’ve never used dual screen ask me why I don’t invest in one big monitor instead. There’s a big difference between having multiple monitors and having just one, no matter the size. Though which is better really depends on what you’re using the computer for, what OS/window manager you’re using, and how you use your particular setup.

For programming, and the way I use my desktop (gnome+compiz), having multiple screens is much more productive than one big screen because I hate minimizing and dragging windows. If I’m coding in rails for example, I can have my editor maximized in one screen, and a reference window or a `tail -f file.log` maximized in the other screen. With a big monitor I would need to manually resize each window or depend on my window managers cascade feature, which requires some manual resizing as well.

For coding or writing, a killer setup would be having two or three widescreen displays setup vertically side-by-side. I noticed I only look at 3/4th of the screen real estate when I’m coding, and when I hack or write, Continue reading Multiple Monitors vs One Big Screen

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.

Tomboy

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: http://www.gnome.org/projects/tomboy/
Subversion: http://svn.gnome.org/viewvc/tomboy/trunk/


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: http://sourceforge.net/projects/tilda/

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”): https://gna.org/projects/stjerm/ (alt page)
Yet Another Kuake (Yakuake, for KDE): http://yakuake.uv.ro/
Kuake: http://www.nemohackers.org/kuake.php
Visor (OS X): http://docs.blacktree.com/visor/visor


RescueTime

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: http://rescuetime.com/
Unofficial Linux client (works great): https://launchpad.net/rescuetime-linux-uploader


Screen


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: http://www.gnu.org/software/screen/

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

Firebug


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

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.




NoScript

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

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 About.com. 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.


TimeTracker

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

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?


A free, self-hosted, and open source alternative to Basecamp

In my search for a Basecamp alternative – because it’s not free, and I’d prefer something I can host on my own server – I have come across an excellent piece of software called ProjectPier. This is a branch from ActiveCollab — an open source project that later became a commercial product. ProjectPier is simple, speedy, and it works!

What I like about ProjectPier:

  • Free/open source
  • Self-hosted
  • Comes with a bunch of nice themes out of the box
  • It’s fast (well, depending on your server)
  • Easy to install
  • Easy to use
  • Easy to navigate
  • … see reasons on the official site

Features & Requirements: http://www.projectpier.org/manual/tour/features

Screenshots: http://www.projectpier.org/manual/tour/screenshots/ (Default theme)

Download: http://www.projectpier.org/project/projectpier


What project/team management software do you use and/or recommend?


Simple and Effective Productivity Tip When Working on the Computer

This falls under “Why Didn’t I Think of This Before?

Not being able to remain focused and get things done while working on a computer is common. There’s a countless number of things to do even offline. You can, and probably do:

  • Organize folders/desktop/etc
  • Finally get around to actually opening up an ebook you’ve downloaded
  • Customize your desktop (and then hours later, frustrated, revert it back to how it was originally)
  • Edit apps/recompile your kernel
  • hell, even making selection squares on your desktop using the cursor is a blast when you’re trying to avoid work.

One thing I’ve always thought of but never really pursued was to write some ADHD scripts. Blocking certain sites or having them only enabled for a fixed period of time each day, being able to hide distracting windows/icons/shortcuts while working, something that would sound very annoying alarms and spam me with pop-ups to ruin my illusions of grandeur, timers, etc.. Well, none of that happened, and I’d probably find ways to hack around any methods I implement anyway.

Satori

A few weeks ago, out of the blue, I had a sudden insight. Creating a new user account! It’s obvious.. too obvious, but I’ve never met anybody that does it. Not only was my regular account unorganized and loaded with distractions, but I normally keep Swiftweasel/Firefox open forever (almost literally) and can’t stand the memory-leak feature.

If it gets bad enough, I revert to “xkill” (kill -9) the browser and relaunch it. It helps, but I hate waiting for a few dozen (literally) tabs to load. Off-topic, but in my experience, there is no real workaround for this issue. None of the cache/memory settings do anything significant, and not keeping the browser open isn’t an option. Though I’m using Prism for some things now.

There are extensions to save your tabs and stuff, but.. meh… I’ll just suffer.

My work account:

  • Doesn’t have my fun desktop shortcuts, nor my Swiftweasel bookmarks and extensions.
  • Has the Gnome “typing break” option enabled (System->Preferences->Keyboard). This locks the keyboard for as long as you want, at any interval you want. It reminds you to take breaks and helps reduce the risk of Repetitive Strain Injury (a serious problem).I have enabled it on my regular now too. Since I type a lot when working, my work account setting for this feature is to halt the keyboard for 3 mins every 20 mins. On my regular account I halt for 10 minutes every 60 minutes + have the option to postpone a break enabled.
  • Has a high contrast/big font theme with a plain background. Actually, I now use the default Ubuntu background on all my accounts. It’s aesthetically appealing without affecting usability.
  • Different compiz-fusion settings. Despite the increased RAM usage (which isn’t a lot), Compiz-fusion can increase productivity significantly. Zoom, ADHD plugin, the window switchers and live previews, among others, are helpful, depending on what you’re working on.
  • Different widgets (see above). I use screenlets.
  • Less memory usage because I don’t need to keep my browser running and there aren’t many tabs open at once. Switching user accounts also gives me back the memory my browser hogs on my regular account, and I can restart the session when I switch back.
  • Different startup options, auto-join IRC channels and Pidgin settings, Bash aliases, shortcuts, default editors, file associations, IDE and editor settings, drives mounted (it’s good to have different partitions for different things), etc. It’s true that most editors and apps let you save profiles, but I only use that for backup or to ‘branch’ settings.

Making a new account is surprisingly tedious, but well worth it. Be sure to keep things in sync between each account if you need to.

Example to create name and password, and give the new account sudo rights:

$ sudo useradd -m -G users,video,cdrom,fuse -c "Zug Zug?" peon
$ sudo passwd peon
$ visudo

If the above is overkill, an excellent solution is to just manage multiple browser profiles. This page explains how you can manage profiles in Firefox.

Besides working less, and taking breaks, how do you stay focused on task, especially in regards to programming and computers?