Auto-play CDs and DVDs on Lubuntu 13.10


My multimedia player of choice is VLC.  One of my favorite features is that it supports CD-TEXT.  For some reason, though, when I inserted my CD and Lubuntu prompted me for the application to run and I selected VLC it would play the CD but without the CD text (and it would also be sluggish and jerky for the first couple seconds as it loaded the metadata manually).  Interestingly, if I loaded VLC and then used the Media > Open Disc... option, the CD would load quickly with the CD text.  After a lot of trial and error, this was the workaround that worked well for me:

1.  Open File Manager (PCManFM)

2.  From the PCManFM menu, select: Edit > Preferences > Volume Management

3.  Uncheck "Show available options for removable media when they are inserted"

4.  Click the "Close" button

5.  Open a terminal and type:
sudo apt-get install vlc
sudo add-apt-repository ppa:mati75/spacefm
sudo apt-get update
sudo apt-get install spacefm
echo '@spacefm -d' >> ~/.config/lxsession/Lubuntu/autostart

6.  From the SpaceFM menu, select: Devices > Settings > Auto Run > On Mount

7.  Enter and save: pcmanfm %m

8.  From the SpaceFM menu, select: Devices > Settings > Auto Run > On Audio CD

9.  Enter and save: vlc -vvv cdda://

10.  From the SpaceFM menu, select: Devices > Settings > Auto Run > On Video DVD

11. Enter and save: vlc -vvv --fullscreen dvd://

See this screencast for more info on SpaceFM.

Lubuntu monitor issue (not displaying at high resolution)


I had a weird issue with my monitor the other day.  It was working fine at 1440 x 900 but then I plugged it into a friend's headless server briefly to perform some work and then plugged it back into my computer.  When I did, Lubuntu would only display my desktop in 1024 x 768 resolution or lower.  After a bunch of digging around, I finally found a workaround.

Tseng Kwong Chi


There's something very personal about art and the way it speaks to each person individually.  One of my favorite's is Tseng Kwong Chi

Audio stream recorder


Tip: Audio Recorder is a useful tool for recording streaming audio from a flash video or some other source (browser, desktop, etc).

Creating a gapless (disc-at-once) audio CD in Linux


1.  If you've created a mix in Audacity, follow these instructions for labeling and then exporting the tracks in WAV format

2.  Once you have the WAV tracks, run this script to prepare the Table of Contents:

echo "CD_DA" >> toc && for file in *.wav ; do echo "TRACK AUDIO" >> toc; echo "FILE \"$file\" 0" >> toc; done
3.  Once the toc file is ready, burn it (at a slower speed for higher quality):
cdrdao write --speed 4 toc

P.S. If you need to create a non-stop gapless CD with a data track, use these instructions.

P.P.S. If you need to create CD-TEXt, use these instructions.

Download BrightCove videos (tutorial)


Update:  The download method described in my original post no longer works.  It looks like they've updated their delivery system to incorporate additional security measures.  Fortunately, there's an easier rtmpdump method that still works:

0.  if you don't already have it, install the rtmpdump suite:

sudo apt-get install rtmpdump
1. open a terminal and become root:
sudo su - root
2. create a firewall rule to temporarily redirect TCP traffic to a custom port:
iptables -t nat -A OUTPUT -p tcp --dport 1935 -m owner \! --uid-owner root -j REDIRECT
3. run a (cleverly named) companion program in the rtmpdump package that sniffs traffic for streaming video
4. minimize the root terminal window and then open (or refresh) the video page in your browser and play the video

5. bring up the root terminal window and when it says "Closing connection... done!" (or the video finishes playing) press Ctrl+C to stop rtmpsuck

6. the video will have been saved in the root user's home directory; move it to tmp (note: if the source video is flv, swf, etc. you will need to change the extension in the command below)
mv ~/*.mp4 /tmp
7. delete the temporary firewall rule
iptables -t nat -D OUTPUT -p tcp --dport 1935 -m owner \! --uid-owner root -j REDIRECT
8. close the root terminal window and enjoy your video!

P.S. This works for other video sites as well, such as News and Sports broadcasts.


Legacy (non-working) instructions for reference:

KeepVid makes it super easy to download videos from Youtube, Dailymotion, Metacafe, and iFilm, but it doesn't support BrightCove.

Most BrightCove flash-based videos have an HTML5 (iPad/iPhone) alternate so the process is a little technical but relatively easy to do.  But what if you follow those instructions and no HTML5 video appears?  Well, that means there is no HTML5 alternate.  In that case, the process gets a little harder but not impossible:

1.  Install rtmpdump: sudo apt-get install rtmpdump
2.  In Chrome, press F12 to open the browser developer tools and click on the Network tab
3.  Start playing the video and look for entries in the Network list that start with 9.gif?a=
4.  Click on one and view the Headers and it should look something like this (color-coded to highlight important info):;%20Linux%20x86_64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Ubuntu%20Chromium/30.0.1599.114%20Chrome/30.0.1599.114%20Safari/537.36~aj=11,2,202,310~ak=Flash_PlugIn~am=D~an=309~ao=607~ap=916~ar=0~at=Chrome%2030~au=1425*469~aw=rtmp://,0,0,0~fh=0,0,0,0~fi=8317000:0:5169::1~fj=8317000:5169~fl=42990573000:5169

5. Stop the video playing in the browser
6.  Open a command prompt and craft a rtmpdump command like:

rtmpdump -r "rtmp://" -y "mp4:66852713001/66852713001_2008369076001_2007-04-004-the-district-2-episode-1-8000k-eng.mp4" -a "ondemand?auth=daEbuc0awbycaa1bTbaaxcucucxdqcdavbh-bsJdpa-bWG-knzAtqvy_yDyr_umE_AEvA_GsD&aifp=bcosldsuds&slist=66852713001/" -o my_downloaded_video.mp4

That should connect to the video server and begin downloading the file!

Once done, feel free to create a DVD

Useful tools for selecting a Platform as a Service (PaaS) provider

0 comments current favorite is Jelastic

Lubuntu 13.10 xscreensaver


Lubuntu 13.10 removed xscreensaver for some reason.  I kind of like it and wanted it back, so:

sudo apt-get install xscreensaver-gl-extra

echo "@xscreensaver -no-splash" >> ~/.config/lxsession/Lubuntu/autostart

Custom Drupal 7 site user registration form


With CAS, it's easy to automatically create Drupal accounts when users access the site for the first time.  Furthermore, Drupal 7 now makes it very easy to add custom form fields to the user account page.

But, what if you want to just show those custom fields and none others?  Well, there's a module for that: Edit profile

Okay, that's great but what if you want users to be able to edit those custom fields but not the default Drupal user account fields, such as email, username, password, etc.?  Well, there's another module for that: Edit own user account permission

Good so far.  Unfortunately, hidden custom fields (i.e. fields on admin/config/people/accounts/fields that are set to "hidden" on the Manage Display tab) are still visible on the Edit Profile tab exposed by the module indicated above.  To hide those fields, an easy fix is to add a display:none CSS property to the theme for those hidden fields.  Note, however, that the user account page uses the administrator theme and not the site theme so in most cases you'll likely need to edit the seven Drupal theme.  I personally like to copy the core seven theme (or whatever administrator theme you have selected for your site) into the site-specific theme folder so my edits don't get overridden during future Drupal core upgrades.  For example:


Great!  So we now have a custom user form displaying only the custom fields we want.  Now, how do we redirect users to that form when they login to the site for the very first time?  Ideally, we'd want to remember their original destination so we can redirect them to it after they fill out our custom user form.  To accomplish all that, we need to create a custom module.  Here's my solution with a custom module called onetime:


Due to the ever-changing intricacies of Drupal's API, this solution took quite awhile to solve (every single line has an important significance).  Hopefully this helps someone else along the way.

P.S. This solution will only apply to new users, not existing users, so you'll need to delete and recreate them manually.

Halloween treat


Here's a spooky 4-minute clip that's perfect for a pirate or ghost ship theme:

Linux DVD rip options


There are many options for ripping a DVD with Linux.  Personally, for DVDs with no encryption, I just use:

dd if=/dev/sr0 of=~/my_filename.iso

or (depending on which ROM drive it's in)

dd if=/dev/sr1 of=~/my_filename.iso

git info


Do you miss the svn info command?  Or svn status -u?  Would you like to know why git revert doesn't undo your modified file or how to rollback your last commit safely?  For these and many other situations, check out this useful presentation:

Load Atheros GbE (AR8161) LAN drivers on CentOS 6.4


Atheros GbE (AR8161) LAN is still not supported on the major Linux distributions which makes it really annoying to fix since most solutions require installing kernel-dev, gcc, perl, and many other dependencies.  After a lot of trial and error, I finally found this simple procedure for getting ethernet to work on CentOS 6.4:

1. Download kmod-alx and save it to a thumb drive

2. Insert thumbdrive into CentOS computer, double-click the thumb drive icon on the desktop to mount it, and then open a terminal (Applications > System Tools > Terminal)

3. cd /tmp

4. cp /media/THUMBDRIVE/kmod-alx-0.0-7.el6.elrepo.x86_64.rpm .

5. sudo rpm -i kmod-alx-0.0-7.el6.elrepo.x86_64.rpm

6. sudo modprobe alx

7. Open Firefox browser and verify you have internet connectivity

That cloud thing (HP parody)


Source: Gizmodo / The Onion

Finally, a legal way to preview and develop on Windows for free


Free Windows VirtualBox VMs for preview/development use:


Useful PHP force-download script


It seems there are a million force-download scripts out there for PHP.  Most people will agree that mod_xsendfile is the way to go, but if your web host won't support it (for example, it may conflict with NFS), check out

P.S. If you use the second script and need to download Mac dmg files, I recommend you first wrap the dmg file into a zip file and have users download the zip file instead of the dmg file directly since the force download script may add a small amount of of binary data to large files and alter the md5 fingerprint.  

Update: this turned out to be an issue with Drupal interjecting error messages into the binary download stream.  Make sure to turn OFF error messaging if using Drupal (see

Update #2: the in-memory chunking method described above is still prone to failed downloads, especially on large multi-gigabyte files, when using a slow Internet connection or when there is heavy network congestion.  The best approach is a variation of (I recommend using the at command to delete the symbolic link a couple minutes after creating it rather than a cron job that deletes it a day later).  




JavaScript Framework Popularity Trends


Google Trends

Yeoman Insight - most popular generator usage (Past 3 months)

Powered by: OOcharts

GitHub Trends

Powered by:

Ender's Game


Hall of Fame


It's beginning to look a lot like Christmas...


What's so special about Polymer?


Desktop visual coding tools (like Visual Basic), Server-side Content Management Systems (like Drupal), and package managers (like Node's NPM) have enjoyed the concept of modules and features for years, but due to the limitations of the current version of JavaScript, browser differences, and security restrictions, the possibility of a pure client-side equivalent has been elusive.

Although proprietary attempts were made (such as Flash components), Dojo was one of the first major open JavaScript attempts at bridging that gap.  By encapsulating logic in separate JavaScript files that were injected dynamically with dependency handling, it was now possible to develop complex, maintainable modular applications.  Unfortunately, Dojo was ahead of its time and the face-off between declarative and imperative finished with jQuery as the clear winner.

Recently, though, AngularJS has resurrected the declarative appeal by adding useful power boosters such as automatic two-way data-binding, filters, and feature encapsulation via directives.  Unfortunately, to perform this magic it creates under the hood a proprietary parallel universe called Angular execution context that implements a potentially expensive brute-force dirty-checking technique and a fairly steep learning curve.  That said, the library is gaining strong momentum and popularity so as the saying goes 'where the community drives, the specs will follow'.

To that end, the W3C and TC39 gurus have been working diligently at forging a bright future (full of Object.observe, Shadow DOM, and template awesomeness, among others).  ....All we have to do is wait 20 years for the browsers to catch up, right?

Well, there's hope that Polymer will not only polyfill / prollyfill our way across the void but provide just the right balance of opinionated guidance and a thin layer of sugar (pre-built web components, Mozilla X-Tag/Brick support, etc.) to point us towards success.

New?  No.  Unique?  Not particularly.  Helpful?  Yes.

Things I dislike about AngularJS


Update: I was watching the development of AngularJS 2.0 with interest due to its modern ES6 approach, but the lack of backward-compatibility irked a lot of die-hard 1.x fans and caused a mini-exodus, including Rob Eisenberg.  Rob went on to create a JavaScript platform/framework called Aurelia that looks as promising as Polymer so I've updated my recommendation below accordingly. 


Preface: I like Google and the goals of AngularJS and my intention is not to start a flame war, but it seems there are a lot of drink-the-Kool-Aid! posts about how awesome AngularJS is and I wanted to provide some counter points of caution (based on my experience) of what I dislike about the current state of AngularJS:

Documentation is spotty and the API is so complex you can't code without constantly referencing it (i.e. non-intuitive)

Too many service types with overlapping functionality and poor guidance on proper use cases

Non-intuitive terms, such as transclude, which refer to non-intuitive concepts, such as:
"transclusion refers to compiling the content of the element and making the source available to the directive. The transcluded function is pre-bound to the calling scope, so it has access to the current calling scope."  — source

Directives are prone to memory leaks

Custom $digest loop and $watch dirty-checking aren't designed to scale well for slow mobile devices, heavy processing, or 50+ fps

No namespace enforcement or best practices can lead to naming collisions

$ variable prefix is confusing when mixing code with jQuery (also confusing to use $scope in controllers but scope in the link function)

Auto camel-to-snake-to-camel casing is confusing to programmers new to Angular, muddles code tracing, and is easy to forget to transpose in the correct context

Too much secret decoder ring enigma code:
restrict: 'EA',
require: '^?ngModel',
scope: {
  ngModel: '=',
  foo: '&',
  bar: '@'
Allowing directives to be defined as CSS classes is confusing for code maintainers (e.g. "Is this a CSS class or a directive?")
  • Yes, I know I don't have to define directives as a CSS class, but it's the principle that I can that bothers me.  If I inherit code that uses AngularJS, I am now no longer certain if class="foo" refers to a CSS class, an Angular directive, or both.  It also makes code refactoring much harder.

Explosion of widely available, loosely moderated directive code may result in difficult maintenance and security protection (e.g. "Where did this directive come from?  What version is this directive?  Is there a newer version?  Are there known security vulnerabilities with this directive?  Is there a more robust or popular directive out there for this functionality? ...")


For the moment, I'm putting my money on Polymer (check out their elements catalog) or Aurelia (see comparison to Angular 2.0 here and here).  Others seem to like Closure.  Another one to keep an eye on is Riot / RiotControl.

What ever happened to 10 seconds?


In the good ol' days of...
  • 1997, most people would wait 10 seconds for a web page to load
  • 1999, most people would wait 8 seconds for a web page to load
  • 2006, most people would wait 4 seconds for a web page to load
  • 2009, most people would wait 2 seconds for a web page to load
  • 2012, most people would wait between 0.1 and 1.2 seconds for a web page to load
  • 2013, with expectations set at 60 frames-per-second, we have 0.008 seconds on a mobile device to complete everything — JavaScript, layout, image decoding and resizing, painting, compositing — everything!

Genealogy - fun for everyone


15 best programming fonts


There are fewer things closer to a programmer's heart than his/her font.  It's what they stare at for 8-20 hours a day.  Before you embark on your programming career, make sure to select your favorite.

For example:

code, pre {
font-family: DejaVu Sans Mono, monospace
} no-likey AngularJS


Update (3/26/14):
"[] can be integrated with modern MVCs including Angular.js, Ember.js, and Backbone.js.  We work with Meteor.js and we work very well with Firebase. We can work directly with jQuery as long as you don’t do any DOM manipulation in it.

"It should be noted that while I've publicly said I don't prefer Angular's techniques (which I don't), it is important that everyone know that I believe my personal viewpoints on this matter must be trumped by the bigger need to integrate with things that other people do like. 

"At, we have a culture of being empathetic to developers and I intend to abide by this culture regardless of my personal opinions.

"My opinion of Angular is also flexible. I also want everyone to know that I think there are ways to improve Angular because it has many concepts that I think are brilliant."
- Source: FAQ  (see also FAQ Part 2)

In regards to JavaScript library compatibility and support with, Steve Newcomb (co-founder) said:
"Angular - no way, Backbone - we hope, Meteor - we really hope"

Link to specific time in presentation (53:00) relevant to the quote above:

Full presentation:

Flash of unstyled content - AngularJS demo


Here are a few AngularJS options for dealing with a flash of unstyled content:

The * first pillars of application development


When creating an application, you need to do first things first.  But...what are the "first" things?  Architecturally speaking, which are the "load bearing beams" that must absolutely be taken into account upfront and, conversely, which are the flexible items that you can safely incur technical debt in order to meet deadlines, management expectations, cost constraints, etc.?  If you are truly serious about building a robust, practical, maintainable, and praiseworthy enterprise-grade product, I argue the following are critical pillars of success that must be designed into the solution first:

Epic comment war about semicolons in JavaScript


What happens when geeks go to war:

Cross-platform mobile testing framework


I know what I want for Christmas...  Xamarin Test Cloud

Favorite text editor: SciTE


Everyone has their favorite text editor.  Mine is SciTE.  Although their homepage could use a serious makeover, the editor is incredibly robust and FAST (especially for large text files such as database dumps and large lines such as Base64).  It works on Linux, Windows, and Macs.  It's also very configurable.  Here's my preferred setup (after you download, install and run it):

From the menu select Options > Open Global Options File and add this to the bottom:


Loom game engine


I must be the only person on earth who has more functional/business applications on my smartphone than games.  That said, gamification and game monetization is a reality so if you're going to have to embrace it you may want to check out a promising new game engine called Loom.

Beware the Ford Escape Hybrid (2005-2009 models)


I'm a big fan of hybrid technology.  I'm a big fan of supporting American products.  I'm a big fan of taking family vacations.  I'm NOT a big fan of having my American-made hybrid SUV suddenly SHUT OFF WITH NO WARNING WHILE DOING 75 MPH ON THE HIGHWAY!  My family and I could have been killed while the Ford Motor Company refuses to recall or warranty an obviously defective hybrid component.  If anyone is considering buying the 2005-2009 Ford Escape Hybrid SUV, read this and seriously think twice before buying!

Update: Ford finally issued a safety recall for this issue: 14S19.  Take your hybrid to your nearest Ford dealership and they'll replace the defective Motor Electronics Coolant Pump (MECP) for free (or possibly reimburse you for a previous repair).

LinkedIn going the way of the Dark Side...


The dangling carrot of selling user's private data was too tempting for LinkedIn so they subtly updated their privacy policy and then turned on a whole slew of spy-on-you settings by default.  Ughh.  Everyone, go into your LinkedIn privacy settings and click through EVERY VERTICAL TAB and EVERY LINK on that vertical tab to undo all of their nefarious mucking (or better yet, ditch them altogether if you can).

Quick calendar template


Ever need to quickly print out a blank calendar month template for a planning meeting or to organize your thoughts?  Well, I have and was amazed to discover how many useless websites you have to wade through to get anything remotely useful.  I still haven't found a perfect fit, but this site is good enough for now.

My favorite bash shell format


Everyone has their own opinion of their favorite bash shell formatting -- here's mine:

PS1="\[\e]2;\u@\h:\w\a\]\[\e[32m\]\u\[\e[37m\]@\[\e[36m\]\h\[\e[37m\]:\[\e[33m\]\w \[\e[37m\]\$ "

Setup instructions

Terminal auto-copy to clipboard for Lubuntu


Update: the parcellite solution described below is a little too aggressive (mangles keepassx auto-type and displays passwords in log) so I recommend NOT using that method and instead use a simpler solution -- highlight text in lxterminal and then use the middle mouse button to paste the highlighted text.


Original post (kept for documentation purposes):

One of the things I love most about PuTTY is that it automatically copies whatever is selected in the terminal window to the clipboard.  You wouldn't think this is all that big of a deal but trust me, it's a huge time saver and you quickly lose patience without it.

Unfortunately, the terminal in Lubuntu (and nearly every other Linux distro) does not come with this feature.  After this annoyed me one too many times, I finally did a Google search and discovered to my joy that there is a fix:

sudo apt-get install parcellite
Start > Accessories > Parcellite
Right click the icon in the system tray, select Preferences, check "use primary" and "synchronize clipboards", and then click OK.
It works!

P.S. To auto-start it on login, open a terminal and type:  echo '@parcellite' >> ~/.config/lxsession/Lubuntu/autostart

Actual, true, honest-to-goodness FREE Carfax report for any VIN


Okay, you're trying to buy a vehicle and you want to know the vehicle history, right?  Everyone online says "use Carfax", which is good advice since they have the largest database of vehicle records and their site is clean and easy to use.  Many good, honest dealerships have a Carfax account and publish their car info for free so check that option first.  But, let's say you're looking at a car on Craigslist and it only has a VIN number and no mileage or service history.  If you go to and paste the VIN from the Craigslist ad, the site says something like "Yay, we found the vehicle in our database and it contains lots of awesome information and detailed goodies, but... you need to pay us $40 first."


So you're wondering to yourself, "Can I get at least some of that info for free (legally)".  Well, you can.  And it's pretty simple.  Instead of going to their main homepage, browse to  You'll see a big "Free! Sign Up" area on the homepage.  Use a temporary email and create a random one-time password to create your account.  Once logged in, it will ask you to set up your "garage".  Instead of putting the VIN numbers of the cars in your actual garage at home, put in the VIN of the vehicle you're interested in buying.  It will ask you a few questions about the vehicle (like year, make, and model which you get from the Craigslist ad) ...and Presto! a basic report of the vehicle with mileage, service records, and maintenance history.  You still don't get accident reports or all the data in the $40 report but it may help some of you out there...

P.S. If you still need a complete report, you might try one of the services recommended by the National Vehicle Services government agency.

Rotate videos


I needed to rotate some Razr M videos.  Here's the command:

avconv -i INPUT.mp4 -map 0 -c:v libx264 -c:a copy -vf "transpose=1" -s svga OUTPUT.mp4

The transpose options are and the scale options are

To flip an upside-down video, use -vf "vflip, hflip"

To clip, use -ss <start-time> -t <duration>  in hh:mm:ss format (or just an integer for seconds) – make sure to list this before the -i argument

Connect Motorola Razr M (JellyBean Android) to PC for file transfer


When I connected my new Motorola Razr M smartphone to my Lubuntu PC for the first time, it detected the device as a CD-ROM:

When I clicked OK to open, it simply contained a Windows installer program:

After some detective work, I found the solution to be simple:

  1. Slide your finger from the top of smartphone screen downward to reveal status messages.
  2. In the list you will find "Connected as a media device".  Tap on that option and you will notice it is connected by default as "Media device (MTP)"
  3. Instead, you need to tap on the (non-intuitive) "Camera (PTP)" option
Lubuntu will now detect the smartphone as a storage device:

Click OK (ignoring any "initializing camera" errors).  You will then have your SD card and smartphone internal storage listed as "XT907" in File Manager:

My biggest tech pet peeve


The script quality of the movie Armageddon aside, this pet peeve is as ubiquitous in tech shows as "very unique" is to the American lexicon:

My favorite photgrapher


The University of Arizona's Center for Creative Photography recently updated their website and I was very pleased to discover they are highlighting my favorite photographer, Tseng Kwong Chi:



Lubuntu 12.10 post-install configuration


After Lubuntu 12.10 was successfully installed, there were still some tweaks I needed to make to be fully satisfied.  Feel free to use or ignore as you see fit:

1. Run system update via Start > System Tools > Software Updater

2. Remove unneeded programs:
sudo apt-get remove pidgin sylpheed xpad abiword gnumeric ace-of-penguins gpicview gnome-mplayer scrot mtpaint chromium-browser

3. Remove the orphaned Gnumeric menu option
sudo mv /usr/share/applications/gnumeric.desktop /tmp

4. Install additional desired programs:

sudo apt-get install thunderbird libreoffice libreoffice-gnome filezilla keepassx icedtea-7-plugin audacity virtualbox build-essential git meld xscreensaver-gl-extra scite shutter sound-juicer gpick eog parcellite gnome-themes-standard lubuntu-restricted-extras vlc easymp3gain-gtk libav-tools exfat-utils exfat-fuse p7zip-full
sudo apt-get autoremove 

5. Setup DVD playback

6. Change the clock appearance from military to a.m./p.m. format
Right-click time in bottom-right corner > Select Digital Clock Settings > Change clock format from %R to %l:%M %p

7. Change the screen saver:
Start > Preferences > Screensaver > Indicate only one screensaver to be shown and choose Flurry (or another screensaver of your choice).
In the screen saver settings, Blank After 9 minutes, Cycle After 0 minutes, check the box for Lock Screen After and set to 1 minute.

8. Change the default view:
Open file manager > Edit > Preferences > General tab > set Default View to Detailed List View

9. Change the launch bar:
Right-click the File Manager icon in bottom left corner > Select Application Launch Bar settings > add Google Chrome, Thunderbird, Leafpad, and LXTerminal (and remove Chromium Web Browser, if present)

10. Change the desktop wallpaper:
Search for a desired wallpaper and save it to your hard drive.  Right-click desktop and select Desktop Preferences > Appearance tab > Click button next to current Wallpaper image and browse for your new wallpaper.

11. Set Thunderbird to reply to messages above quoted text:
Open Thunderbird > Edit > Preferences > Advanced tab > General tab > Config Editor... button > search for default.reply_on_top and set the value to 1

12. Add printer via Start > System Tools > Printers

13. Open Chromium browser and install desired extensions:
In your browser toolbar, click the Stylish "S" logo and choose "Manage installed styles".  Then click Edit on "startpage clean & minimal" and do a search and replace of the code:
#254B6A !important   -->   #609
#3B7AB0!important   -->   #1a0dab
#00B121!important   -->  #006621
and add this code to the bottom of the file:
div.result h3 a {
  font-size: 18px !important
.normaltext2 {
  display: none;
14. Edit keyboard shortcuts:  sudo leafpad ~/.config/openbox/lubuntu-rc.xml 

  • after the <!-- Keybindings for desktop switching -->  line add:

<keybind key="C-l">
     <action name="Execute">
           <command>xscreensaver-command -lock</command>

  • then, replace:

   <!-- Take a screenshot of the current window with scrot when Alt+Print are pressed -->
    <keybind key="A-Print">
      <action name="Execute">
        <command>scrot -u -b</command>

  • with:

  <!-- Take a screenshot of the current window with shutter when Alt+Print are pressed -->
    <keybind key="A-Print">
      <action name="Execute">
        <command>shutter -a -e</command>

  • then, replace:

  <!-- Launch scrot when Print is pressed -->
    <keybind key="Print">
      <action name="Execute">

  • with:

  <!-- Launch shutter when Print is pressed -->
    <keybind key="Print">
      <action name="Execute">
        <command>shutter -f -e</command>

  • ...then save and close the XML file

15. Configure shutter:
  • create a folder called screenshots in your home directory
  • open Start > Accessories > Shutter
  • from the menu, select Edit > Preferences
    • Main side-tab:
      • Filename: %Y%m%d-%NN
      • Directory: screenshots
    • Actions side-tab:
      • Open with: place checkmark next to Built-in Editor
    • Behavior side-tab:
      • uncheck Display pop-up notification after taking a screenshot
  • click the Close button and main shutter window to save the changes
16. Logout and log back in to test your changes (Window+L will lock your screen, Print Screen will bring up the entire screen in shutter, and <Alt>+Print Screen will bring up the active window in shutter)

note: due to a shutter bug, you can't save an edited screenshot to the clipboard so you'll need to save or export first.

17. Set up terminal auto-copy

18. Start > Preferences > Default applications for LXSession -->  set default Webbrowser to "Google Chrome" and default Email to "Thunderbird Mail"

Dual-boot Lubuntu 12.10 and Windows XP with RAID 1


I recently purchased the GA-78LMT-S2P motherboard with (FakeRAID) AMD SB710 software RAID support.  Here are my notes for getting it to dual-boot Windows XP and Lubuntu with RAID 1 (mirror):

1. Install two hard drives of same size on SATA2 connectors 0 and 1 (DVD-ROM drives installed on SATA2 connectors 4 and 5)

2. In BIOS, set "OnChip SATA Type" to "RAID" and follow the motherboard manual instructions in "Chapter 4 Appendix"

3. Create slipstreamed XP Pro 32-bit install disc with RAID drivers using nLite

4. Install Windows XP (create a partition with half the available disk space for install)

5. Install drivers (chipset, video, lan, etc)

6. Verify Internet connection works and download files mentioned here to a usb key or burn to a cd (note: for convenience, I've bundled all the files into a single archive).  You'll use these files later for the Linux setup.

7. Restart and boot from Lubuntu 64-bit PC alternate install disc (make sure it's the alternate version and not the LiveCD Desktop version)

8. Select "Install Lubuntu"

9. Select your language > location > no to detect keyboard > English (US) keyboard > English (US)

10. It will warn you that no network interface is detected.  This is expected since the Atheros GbE (AR8161) LAN chip drivers are not yet included by default with Ubuntu 12.10.  We'll fix this in a later step.  For now, select Continue.

11. Set hostname > full name > username > password > choose whether to encrypt home directory > set time zone

12. Lubuntu will detect the RAID configuration.  Select Yes to activate the RAID devices

13. Select "Guided - use the largest continuous free space"

14. Review the settings and then select Yes to write the changes to disk

15. Leave proxy blank and select Continue

16. When prompted, remove CD and reboot

17. The grub bootloader should now show Lubuntu and Windows XP.  Select Lubuntu and login.

18. Copy all *.deb files from step #6 above to /tmp

19. Open a commandline terminal and run: cd /tmp && sudo dpkg -i *.deb

20. After installations complete, reboot and verify Lubuntu can now connect to the Internet

21. If necessary, update the GRUB boot order and timeout:

Best temporary email services


The best temporary email service is dispostable.  If that doesn't work, you can all try 10minutemail.