Thursday, July 3, 2014

Switch Between Android L and your Daily Driver ROM


I'm a pretty active Android beta tester, so I took it upon myself to install Android L and test it out on the apps I use daily. It really could be considered a daily driver as far as stability goes, however apps that work fine on 4.4.4 may not work on L due to various compatibility reasons.

In many cases, I sent emails off to developers alerting them to compatibility issues with their games and Android L so they could begin correcting issues early before the official release later in the year.

Because of compatibility issues with key apps that I use daily to play games, I had to remove Android L and flash back to CleanROM 3.5 (which is a great pure AOSP ROM) so I could get functionality back.


The problem I face now is developers are coming back to me asking me to test out functionality they fixed. And I can't because I uninstalled Android L.

So from today, I'll be using Team Win Recovery Project (TWRP) to maintain current nandroid backups of both Android L and CleanROM 3.5, so I can restore between ROMS.

Warnings and Caveats

I'm choosing nandroid over .zip flash because no one has created a flashable ZIP for Android L yet. I'm sure I could if I stuffed around, but I truly believe flashing the ROM using fastboot is easier as a one-time thing.

There are also different bootloader versions between CleanROM 3.5 and Android L, so I would need to flash these each time I switched between ROMs.

When you install Android L, the flash-all script will wipe your user data to ensure maximum compatibility with the new OS. I've since found this step is absolutely required otherwise your sdcard data is unreadable by the OS.

The reason for this is that the installation script wipes then re-formats each partition. I suggest that the reformat to Android L is a different partition layout to Android 4.4.4. TWRP can see the data, but it is not loaded in a user-visible way in Android L, because the OS is expecting a specific partitioning structure. I tried everything to restore visibility but the only way to fix it was to roll back to the CleanROM nandroid and install Android L fresh.


The steps described here require a medium level of technical ability.. 

The process was completed on fedora 20 (Linux). You need to have the android-tools package (available through YUM) installed to get access to fastboot.

TWRP can save nandroid backups to an external Flash Drive, to save space on your device. Partition 1 is the only partition TWRP will honor. It must be formatted to FAT. Consider using this method if space on your device is limited, or if you don't want to use your PC to manage your back-up files.

If you can't mount your USB drive to your tablet with the OS booted, install the StickMount app from Google Play. You may require Root to fully utilize the features of StickMount.

Preparing to Flash Android L

  1. Use TiBu to create a flashable zip of your apps (not system data), and transfer this from your device to the USB Drive.
    Verify you can open the ZIP to confirm it is not corrupted. Do this before switching between ROMs!
  2. Download and install the latest version of TWRP for your device.
    IMPORTANT The fastboot command on TWRP pages requires root privileges to run correctly.
  3. Create a nandroid backup of your current ROM to the USB OTG drive.
    Include the following partitions:
    • Boot
    • System
    • Data
  4. Reboot to the Android Bootloader.

Warning About the Android L Installer and User Data

When you install Android L, the flash-all script included in the binary download will wipe your user data by default to ensure maximum compatibility with the new OS. You can remove the -w flag from the script to attempt to preserve existing user data, but be warned that doing this was not successful for me. See the Warnings and Caveats section.

Keeping previous OS data will most likely introduce instability into Android L. You definitely must let Android L factory reset your device initially, otherwise you will lose core navigation controls, and potentially the ability for the OS to see your user data.

Flash Android L

All Nexus devices have received Android L images, however you will need to roll your own to install them. Nexus 5 and Nexus 7 2013 devices have pre-built flashable images.
  1. Download the flashable factory image for your device here.
  2. Unzip the file to a working directory on your PC.
  3. Verify your device has USB Debug Mode enabled.
  4. Connect your device to your computer via USB cable.
  5. Open up a terminal, and move to the working directory.
  6. Run adb reboot bootloader to access your device’s bootloader.
  7. Navigate to the folder containing the factory image.
  8. Enter $ sudo ./ to run the installation script.
Android L will install, and the new boot animation will start. Be patient: it may take up to five minutes for Android L to initially run and configure itself before you see any device set-up screen. Your device has not stopped responding, and you are not in a boot loop.

After Android L boots:
  • Provide basic Setup Wizard info.
  • Let the OS Boot to the home screen.
  • Let it restore your apps automatically. 

Reflash TWRP and SuperSU

You will not have TWRP or SuperSU, which is to be expected.
Flashing the new Bootloader removes the custom recovery. Flashing Android L removes the superuser binary from system, because Android L is not a pre-rooted ROM like many XDA developer ROMs are.
  1. Shut the device down and reboot to the recovery menu (hold POWER + VOL DOWN).
  2. Re-flash the latest version of TWRP to your device, according to the instructions on the TWRP download page for your device.
    REMEMBER The fastboot command requires root to run correctly on Linux ;)
  3. Reboot into TWRP and the custom recovery should detect there is no superuser binary and prompt you to install it when you Reboot.
  4. Reboot the device.
  5. Test root access. If root is not present, 
    1. Load and download the latest 2.0 binary. 
    2. Flash binary using TWRP. 
  6. Reboot into Android L and let it load to the home screen.

Create Android L Nandroid

  1. Use TWRP to reinstate the TiBu you created from your original ROMs installed Applications.
    If you get an error with reinstating the, ensure that TWRP is mounting the /data partition (it doesn't by default).
  2. Prepare your ROM for Snapshot.
    • Update all apps to their latest versions.
    • Configure any system settings that weren't reinstated from the flashable zip.
    • Test out the apps you use and log bugs with the developers (being respectful that you are logging bugs as a consumer against an Android developer-only build).
    • Log bugs (after searching, of course) with the OS at
  3. Only when you are satisfied that your ROM is configured to your liking, boot into TWRP and make a nandroid of Android L to the USB OTG drive.
    Include the following partitions: 
    • Boot
    • System
    • Data
  4. Once the nandroid is created, reboot back into Android L and verify the original ROM and the Android L backup folders are present on the USB Drive.
  5. Use TiBu to create a flashable zip of your Android L apps, and transfer this from your device to the USB Drive.
    Verify you can open the ZIP to confirm it is not corrupted. Do this before switching between ROMs!

Switching Between ROMs

With the two backups created, you can now switch between Android L for your daily dose of shiny, and to test out developer builds for apps you reported.

When you actually need to use the apps that have not yet been patched for Android L, nandroid restore your daily driver ROM and you should be no worse off than when you started.

Keeping your nandroid backups on an external drive removes the issue of accidentally wiping your /data partition and losing your nandroid backups. But remember, this flash drive is your only way to restore data. Consider creating a secondary backup on your PC of the nandroid images. You can never be too careful.

Be sure to create fresh backups before switching back and forward between ROM versions. Only create nandroid restore points for ROMs that are working to your requirements. 

Wednesday, May 7, 2014

Record screen demos on fedora using the command-line (ffmpeg)


The ffmpeg command is broken down into the following primary parts:
  • input
  • output (encode)
  • output container (filename).
To record your desktop, you require two input sources to be configured:
  • Audio from your laptop mic, USB headset, or 3.5 minijack microphone/headset
  • Video from the desktop of your computer.

Usage Example

Before running this example, meet the Prerequisites. It is also recommended to review the parameter descriptions so you understand why you are setting the parameters as specified.

ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0+0,0 -f alsa -i plughw:1,0 -acodec libmp3lame -ar 48000 -ab 320k -vcodec libx264 Desktop_Recording.mp4

This captures the left screen at 1920x1080 resolution, and uses the USB Headset connected to the PC. The framerate is 30 fps. The audio is encoded in MP3 format at 48000 khz @ 320kbps. The file saved is Desktop_Recording.mp4, and is saved in the same directory you executed this command in.

To stop the recording, press Ctrl+C. in the terminal.

Alias Command

Add the following alias to your ~/.bashrc file, and you have a way of easily recording from the command line with pre-set settings. All you need to do is specify the target file name as [filename].mp4, after typing the command.

alias Record_Desktop="ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0+0,0 -f alsa -ac 1 -i plughw:1,0 -acodec libmp3lame -ar 48000 -ab 320k -vcodec libx264 "

Note: The space is important at the end of the alias. It lets you specify a file name after the alias.


Set Default Monitor

  1. Open gnome-display-properties in Gnome 3 (Activities > Displays)
  2. Drag the screen you want to capture to be on the left.
  3. Click the left monitor in the dialog.
  4. Write down the resolution displayed. This is required in the command line procedure.
  5. Ensure the black title bar is dragged over to the screen you want to capture.
This sets the record target display as 0.0, or DEFAULT.

Get Packages

Install Codecs from RPM Fusion Non-free repo
  • Install the @rpmfusion-nonfree repo
  • sudo yum install ffmpeg lame lame-devel
Install Codecs from RPM Fusion Free repo
  • sudo yum install h264enc x264 x264-devel


Audio Input Parameters

  • -f alsa 
    • Specify an input format of ALSA audio
  • -i plughw:[card],[device] 
    • Specify the card and device number of the microphone you want to record from.
    • If you are using a USB headset or mic, plug in the device and run one of the following commands:
      • cat /proc/asound/cards
      • arecord -l
    • You will get a listing of available sound cards.
    • change “plughw:0,0, to plughw:[n],0. Where [n] corresponds to the device ID of the headset or mic you just plugged in.

Video Input Parameters

  • -f x11grab 
    • Specifies an input format of X11 Screen Capture.
  • -video_size 1920x1080
    • Specify screen’s resolution. Alter this to the current display resolution of your device as reported in the Prerequisites.
    • Note there are NO SPACES in resolution
  • -framerate 30  
    • Specify a frame rate of 30 fps. 
    • This setting does produce large file sizes, but the visual quality is perfect.
  • -i :0.0+0,0 
    • The setting as specified captures the left screen.
    • (0.0 specifies the $DEFAULT (system default) monitor display. 
    • The second set of numbers after the + specify the offset value from the left-hand display. 
    • For example, if you want to capture the second screen, and the L/H monitor runs 1920x1080, the offset value is 1920,0).

CRUCIAL: -videosize and -framerate *must* appear first in the command. 

You are passing the frame rate and screen resolution *to* the display and capture area. Place it after -i and you are specifying these values for the *next* input format.


ffmpeg output properties are set using codecs and their specific settings. You need settings for both Audio and Video.

Specify the Output (encode) properties in the order you specified the input types:

Audio Output Parameters

  • -acodec libmp3lame 
    • Specifies that you will encode using mp3 libraries. 
    • These libraries encode fine when pushed to services such as Vimeo.
  • -ar 48000 
    • Specifies the audio frequency is 48000 khz.
    • This frequency is "CD Quality".
  • -ab 320k 
    • Specifies the audio bitrate is 320kbps.
    • This is the highest you can go with MP3 audio.

Video Output Parameters

The only parameter you need to provide is the following one. 
  • -vcodec libx264 
    • Specifies the h.264 codec, otherwise known as MP4 video.

Output Container

Finally, the output file name, which is added as the last command line argument. Ensure it has the .mp4 container extension in the name.

Tuesday, January 7, 2014

Avant Window Navigator Does Not Work on Fedora 20: why I'll look like I'm ignoring you on IRC.

Ever since Fedora 15, I've been using Avant Window Navigator (AWN) as a dock, to work-around GNOME's insistence that this functionality isn't required on a modern desktop environment.

This dock had the unique feature that if you receive an IRC Direct Message (DM) or name mention, it will make the dock icon for your IRC client (in my case, Pidgin) bounce and catch you attention. Considering how primitive the GNOME 3 notifications system is, this was the only truly reliable (an unobtrusive) way of working out whether someone was trying to talk to you. For me, the GNOME native notifications are intrusive and generally not that helpful. It is either "notifiy for all the things" or "nothing". Perhaps if you are using Empathy (the GNOME IRC client), things would be different.

I've been deliberately upgrading my fedora instance since Fedora 17, because I knew that AWN was no longer being developed. But sadly, a botched Fedora 20 "fedup" installation required me to start from scratch. :(

I knew there was a way to get AWN and its dependencies added back onto my system, because +Lucas Costi managed to get AWN onto his system when he joined Red Hat. So, off to the internet I went. I found a tutorial on YouTube that clearly explains what packages (last build of which was for Fedora 17) are required to make AWN function.

But, alas, changes in GNOME 3.10 renders the packages, and ultimately the solution described in the video redundant. The libdesktop-agnostic packages required here have a bug that renders them useless. Someone on Arch managed to patch it, but I'm not sure if it ever made it back upstream.

After following the process in the video, if you run avant-window-navigator from the command line, you'll see the following errors:

** (avant-window-navigator:2646): CRITICAL **: desktop_agnostic_config_schema_get_metadata_option: assertion 'self != NULL' failed
** (avant-window-navigator:2646): CRITICAL **: desktop_agnostic_config_schema_get_metadata_option: assertion 'self != NULL' failedSegmentation fault (core dumped)

Some searching on ArchLinux forums suggests there is something wrong with the *-agnostic packages. Someone on Arch managed to patch it, but I'm not sure if it ever made it back upstream.

I've come to the conclusion that the world is trying to ween me off AWN, so I'm "seeing other people".

I've been trying Docky and Cairo Dock but these two just don't have the level of notification prowess that AWN had. If I had to choose between the two, I would say Cairo Dock is the better of the two. 

What I'm missing the most is Cairo Dock bouncing the Pidgin icon for IRC mentions and DMs (both Cairo and Docky have poor functionality for DMs and I'm constantly missing them). It currently spins the icon as a cube, and I can't find a way to change the behavior of the icon. And it will only spin when I get a DM, not a mention.  There is a Pidgin extension for Cairo Dock, but from my experience it does nothing. There is no way in the preferences interface to control what happens when there is activity inside an app. This is what AWN did so well, because when the app triggered an internal notification call, AWN would interpret this as an activity and make the icon bounce. 

As a workaround, I've enabled guifications in Pidgin to display a message in the top right of the screen. It isn't a perfect solution as the message doesn't stay there until you open the IRC client. This is the best solution I've been able to come up with, in the 1.5 days I've invested trying to work out how to fix this problem.

So if you work with me, and are reading this, you now know why I'm not responding to your IRC messages. Seriously, if you need to get my attention about something, you will be better off pinging me on Hangouts. At least I'll get those notifications.  I'd even consider using my Nexus 7 2013 as my IRC client: the notifications are that bad on GNOME 3.10. But that would require me to connect the tablet to VPN so I can be on the work private network.

If you're reading this, and you have found a solution to getting AWN working in Fedora 20, I'd love to hear it.

Friday, October 11, 2013

RecordMyDesktop on Fedora: Configure Your Hardware and Session for Success!

I have started to do some recording of quick screencasts for a system I use at work, and I'm documenting my findings here so I can refer back to them when I need to do this work again.

I did create a screencast about a year ago about configuring Handbrake and RCD for Vimeo, but it is slightly out of date and I was not using a USB headset when describing processes in that video.

RecordMyDesktop (or RCD as it is commonly referred to) is great for capturing your screen and audio voice-over when you do app demos on fedora.

I've found that for reliability, short videos less than five minutes in duration are best. Longer videos can encounter issues with post-processing after your recording is finished. That is, your 30-minute screencast can be lost forever because the encoding fails!

Main Screen

Use Select Window to select the Web Browser window you want to capture (in the case of a Web App).

This automatically selects the full window, without having to mess around with trying to drag-select the window.

Performance Tab

Setting Frames Per Second to 10 is usually fine for most screencasts.

Encode on the Fly can sometimes be unstable.

Zero Compression makes for crisp videos.

Quick Subsampling should be left blank.

Full shots at every frame is a good choice for GNOME or other 3D compositing window managers. It does create a performance impact on slow PCs. Having said that most modern PCs can handle it fine.

Sound Tab

What most users have difficulty with is getting RCD to use USB Microphones (like those on USB Headsets) correctly.

Unless you have some fancy stereo mic setup, leave Channels as 1

Frequency for stereo is 44100khz, so for mono or one channel 22050 is the correct default.

Device should be set according to the HW address of your USB Headset/Mic

On fedora 20, the default sound server is ALSA. Therefore, to get a list of recording inputs, you plug in any USB mic/headsets and run:

arecord -l

which should give you output like this:

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: LX3000 [Microsoft LifeChat LX-3000], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

In this case, the card 1 translates into hw:1,0 (that's hw:[card number],[device ID]).

Setting Up A Session

Open a new browser instance you'll use just for the screencast session. Remember that folks don't want to see your 30 tabbed browser window with all your YouTube and Soc Net accounts open. They are here for a professional demonstration. Therefore

Keep your screencasts to under five minutes. Three to five minutes is a perfect amount of time for someone to spend looking at a new feature. If you need to demo more than you can fit into five minutes, you need to consider dividing your demo into more digestible pieces. Ask yourself "Would I want to commit to watching a 30 minute soup-to-nuts demo on a product instead of a five-minute dessert".

Doing this also allows you to stitch sessions together into one huge presentation if you like. If you make a mistake, it is much easier to re-record a five minute chunk than starting from scratch. This also works around any recording bugs you might encounter. For example, encoding screws up and you lose your recording (it's happened to me...)

Use a good-quality Mic. You'll eliminate much of the popping and other audio artifacts if you invest in a decent USB Headset or Mic. It is worth the investment if you are doing more than three screencasts.

Think about what you're going to say before you say it. The hallmark of a great screencast is a bit of pre-planning. Remember the PPPPP rule: Proper Planning Prevents Poor Performance.

30 takes is probably a bit excessive. Remember people want to hear the information you have to share, and don't really mind that much if you throw in a few ums and ahhs. Don't strive for perfection, because there will always be something you want to change about the screencast.

Wednesday, August 28, 2013

Upgrading the eMMC in a Transformer TF300T to dramatically improve responsiveness


The TF300T is suffering terribly from poor responsiveness when downloading or updating apps from google play, and loading large web pages. 


The on-board Embedded Multi-media Card (eMMC) on the Transformer range (affects the TF700 as well as the TF300T) is, well, a bit cheap and nasty. +ASUS decided to put an eMMC that suffers from bottlenecking when multiple read-write cycles are underway. This causes sluggishness when doing things such as updating apps and viewing huge web pages.


While you can't physically remove your eMMC from the tablet (it is soldered onto the main board), you can implement a clever modification that uses a fast SDHC card (Class 10 UHS-1) as a replacement to the eMMC. 

That's right. You can now effectively improve the smooth operation of your tablet *and* upgrade the capacity to 64GB. 

Awesome, right?


These instructions will help you get through the overarching steps required. Links to XDA forum posts are provided to assist you. You must read the links, then read them again so you understand what to do.

You will invalidate your factory warranty by following this procedure, but it is worth it IMHO.
  1. Unlock the bootloader, and install Team Win Recovery Project 2.5
  2. Purchase a *very* fast SDHC card (Class 10 UHS-1 is the minimum).
    Important Notes
    • This card will become your HDD inside your tablet. 
    • Everything on your eMMC card will also be on this card. 
    • Be sure you purchase a card suitable for your storage needs. 
    • You can choose to "upgrade" from the standard 32GB internal storage of the eMMC to 64GB internal storage at this point by purchasing a 64GB SDHC card (they are expensive).
  3. Follow the Data2SD configuration instructions to partition the SDHC card using a disk partitioning tool.
    This is easy on Linux with the program gparted, and is recommend in the tutorial.
  4. Download a ROM that offers a Data2SD Kernel, and Cache2SD.
    At the time of writing, I was using the Cromi-X 5.0 RC2 ROM, which  packages the Hunds Kernel with Data2SD support baked in. I can say with conviction that this is an excellent ROM for the TF300T.
    The full version of 5.0 should be out soon, but I can say the RC2 version is very stable.
  5. Install the ROM, and make the following selection from the AROMA installer:
    • Ensure you select the Data2SD Hunds kernel when selecting which kernel you want to install.
    • Enable Cache2SD for added performance when browsing.
  6. Restart the ROM, and check whether the SDHC card mirrors the files in the eMMC. If this is the case, Data2SD is working.

Wednesday, July 24, 2013 Moga Pro Controllers, and International drop-shipping using Virgin Intergalactic

I say Virgin Intergalactic, because PowerA must (MUST) be using distribution by spacecraft to expect customers to pay $64 in shipping for a $49 controller.

What, you say?

Yep, that is the quote for shipping I received today in my inbox. I will be honest and say I nearly spat out my coffee in fits of laughter, until I realised this company actually thinks that it's OK to charge customers that.

Just so you don't think I'm pulling your leg, here is the email (click to enlarge).

Naturally, I took it upon myself to suggest that this charge is a little bit ludicrous (click to enlarge):

As I said in my email, I'll be darkening EB Games' doorstep to place a pre-order for the Moga Pro for A$59. At $5.00 cheaper than the shipping alone from PowerA, you don't have to be a genius to choose local in this instance.

Tuesday, July 23, 2013 vs, and duplicated calendar notifications.

I have been receiving two identical calendar notifications on my TF300T. One with "quick response" features such as Snooze, and one without.

The duplication is caused by me installing the new Google Calendar app( (blue and white app icon) alongside the Android Calendar app (green and white app icon) shipped with the TF300T firmware. Both have notifications turned on, so both ping me when a meeting is due.

To fix this, disable notifications in the Android Calendar application.

  1. Open Settings on your device.
  2. Tap Apps > Calendar (green and white one).
  3. Uncheck Show notifications.

You can also disable the app if your Android OS has not embedded this app as a key system app. Safer to just prevent notifications from showing in the short term.

Monday, June 3, 2013

Get off the device-centric music storage fence, and into the cloud storage pasture (or why Google Play Music rocks)

I've long been "that guy" that purchased mobile devices with external memory slots and huge internal drives so I could manually transfer as much of my extensive music collection onto my primary listening device. When I first started out in the Android world, that device was a Galaxy S2. I had to be selective about what music I transferred to the device (using +AirDroid for the most part, because the MTP restrictions sucked hard on Android). Then I had to be aware of ID3 tag issues, and album art, and access to the HTPC where all the music was stored. In short, it was a mission to transfer music onto the device, and the music I eventually transferred stayed on there for a long time, while other albums sat dormant in the PC's music drive.

Since purchasing an ASUS TF300T tablet about a year ago, I moved all my music over from the SGS2 to the tablet, and it became my music and entertainment hub. Admittedly, it wasn't that convenient if I wanted to go out for a walk and have some music with me, because who is going to lug a 10.1" tablet around with them (I'd look like Flava Flav, right). The SGS2 has switched from my primary device for everything, to just a phone. It now only has Wi-Fi activated when I want to sync some photos taken on it up to the +Google+ Photo Backup service or update some apps.

When Google Play Music was made available in Australia recently, I thought I should at least give the service a go based on the positive reviews I read about the service. Uploading 20,000 songs to the service seemed like a good start for my collection, but little did I know that my entire music collection was only 7000 songs small. I quickly realised that the offering was not 20,000 Mb, but 20,000 actual songs (regardless of how they were encoded).

After installing the Play Music Service on my Windows and Linux PCs (Apple has support as well) and uploading my music to the Google Servers, I have access to my entire 7000 song music library on my Phone, Tablet, and Computers.

I can purchase albums directly from Google Play and they are synchronized across all devices almost instantaneously.

If I purchase an album outside the Play Store on a service such as BandCamp, I can dump the album into the watched folder on any PC and it is available on all my devices in less than 10 minutes (or less time if my upload speed is fast).

The Play Music client on Android was pretty basic to start with, however with a recent update to the app on Android, the player had all the features implemented I was missing from +Poweramp Dev .

"Great" you say. "Why am I reading this blog post about a service that has been out for ages in the US and has had plenty of coverage in press already".

Well, if you are on the fence about the Google Play Music service, or cloud music services in general, these use-cases may encourage you to jump down from the pickets and into the cloud music pasture. These use-cases are a few I could think of based on problems I've directly experienced, or solutions to problems I've heard about from other people.

Use Case 1 - Use all the devices

Over the weekend, I had to rebuild the Windows PC. I wanted to use my tablet for entertainment while I hand-held the upgrade process, but also wanted to have access to music while doing this boring task. I didn't want to be wired to the speaker system with my tablet, as the headphone jack wasn't long enough to reach the couch.

Solution: Plug my SGS2 mobile phone into the speaker system and launch the Play Music app on that device. Sit back on the couch and enjoy G+, and Pinball Arcade from the comfort of the couch on the tablet.

Use Case 2 - Where there's a computer, there's your music

I'm sitting in a public space that doesn't have a Wi-Fi access point, or good 3G coverage and forgot to pin music (download for off-line play) to my device from Play Music. There's a PC that has internet access and a speaker system attached in the public space.

Solution: Log into the PC using your Google account. Boom! Instant access to your entire music library. Start enjoying music over the PC speakers instantly. 

Use Case 3 - Physical media is so 2005

I want a new CD album, but never get a chance to go to a music store and search through racks of CDs. And then I get the CD home and immediately chuck it in a storage crate after converting it to MP3s. What a waste of space.

Solution: Purchase your music directly from Google Play, and it is available instantly across all your devices. No CD rack required. If you are a little concerned about Google holding your "only copy" of the album, then fear not because you can download an album up to two times from the service (so you can add it to your physical storage at home). 

Use Case 4 - Keeping up with artist releases, and finding similar artists.

I want to keep up-to-date with my favourite artists but don't have the time to rummage through CD bins at my local music store.

Solution: A quick search of your favourite artist reveals all the albums they have for sale on Play Music, including the albums you have purchased or uploaded. You can instantly see gaps in your collection, and fill them instantly with an online album purchase. Legally. And with the preview track feature on the albums, you can always have a listen to the track to see if more recent albums by your favourite artist haven't gone all avant-garde and hipster and no longer interest you.

If you use Google Plus, you can also listen to albums in full when your G+ contacts share an album purchase in their stream. This is an interesting way of exposing yourself to new music.

Wednesday, May 15, 2013

Fedora 17 x86_64 Google Play Music Client Options Menu Not Opening


The Google Play Music client option menu does not open. 


When you click on the Google Play Music Manager icon in the notifications tray of Fedora 17 (GNOME 3), the Options screen does not open.


This issue seems to be caused by issues with the client when you first launched it on your PC. There seems to be some issues with database files stored in ~/.config/google-musicmanager


  1. Delete the ~/.config/google-musicmanager folder
  2. Remove the Google Music Manager program
    sudo yum remove google-musicmanager-beta
  3. Re-install the Google Music Manager program.
    Visit and download the correct version for your system architecture and operating system.
  4. Once installed, start the service by opening Activities > Google Music Manager
  5. You should be prompted to enter your Google ID. This verifies that the service has been started correctly the first time.
  6. Complete the setup wizard.
  7. Test to ensure music is uploading to the service by single-clicking on the Google Music Manager icon in the notifications tray, and see if there is a x of xx notification at the top of the context menu.

Additional Info

When I first installed this program on Fedora 17, it *did not* prompt me for account details. This is a tell-tale symptom that there are issues with the files in .config.

This solution was provided by the Google Support team, but is not well documented on their support site. I'm hoping this helps you out when/if you encounter the same issue.

Tuesday, April 23, 2013

Making a Standing Desk using a Shelving Rail System


You can make a standing desk out of shelving rails and brackets, and some MDF board. It really doesn't have to be expensive or difficult. I built mine for about $150, but that cost also included paint, and some tools I didn't have. See Basic Costs and Ancilliary Costs for further details.

Standing desk made out of shelving rail system, with a normal desk underneath it for those times you need a break. The 600mm deep shelf is used as the keyboard shelf, and the two 300mm deep shelves are used as the Monitor stands and an extra junk shelf.

Lessons learned

  • Measure twice, corroborate your measurements, drill once.
  • The internet can show you how to correctly mount shelves. 
    • Read procedures, even if you think you know how to erect shelving.
    • Don't be too proud to get all the facts before proceeding.
  • Wall studs are your friend. 
    • Measure these first. Your studs will determine how wide your shelves can be in some scenarios.
    • Don't even think about using heavy-duty plasterboard screws for this task. They really aren't strong enough.
    • This shelving is holding all your precious IT gear, not your collection of Lego models.
    • Studs or nothing.
  • Don't cheap out on tools. 
    • Get what you need and don't compromise
    • Beg, Borrow, (but don't steal - because stealing is bad m'kay).
  • Get your wood cut at your local big hardware shop. They usually do it for free, and unless you have a circular saw and a keen eye, you will get much better results having it done on a cutting station.

Basic Costs

  • Double-slot Upright Shelving Rail White 100cm x 2 = $14.50
  • Double-slot Bracket 320mm White x 6 = $29.40
    • Brackets of this size should have holes in the bottom to screw through. Ensure yours do.
  • MDF Standard 16mm 900 x 600mm Sheet x 2 = $18.00
    • One of these boards gets cut in half, so you get two 300mm shelves.
  • Box of 50 10g 50mm Wood Screws (you only need 8) = $9.90
Basic costs total $79.00 if you have the following Anciliary items: 
  • Stud detector
  • Decent spirit level, at least 60cm long
  • some undercoat and gloss paint
  • sample pot paint roller.
  • Nuts, bolts, and screws that can go through the shelf brackets to anchor the shelves into place.

Ancillary Costs

  • 60cm Aluminium Spirit Level - $15.00
  • 300g Hole Filler (hopefully *you* won't need this) - $4.50
  • Zinsser Bullseye 1-2-3 Primer Sealer Undercoat 1 litre (you only need about 500mls) - $21.90
    • Really, any cheap undercoat will do. This brand was the smallest and cheapest at the time.
  • 1L Pascal Trim W/based Gloss White Enamel (hard-wearing for desks) - $27.95
    • Any Enamel Gloss paint will be great. 
    • Gloss is easy to clean, and won't be susceptible to greasy finger marks.
  • Sample Pot Paint Roller with extra roller - $2.00(seriously worth it).
  • Drill, with a selection of drill bits
    • I had one of these. 
    • Borrow any tools in the ancillary list to save a bucket-load on the raw build cost.
Total for all these ancillaries total about $72.00

Vital Statistics

  • Shelving rails are spaced 450mm apart. 
    • For me, this was the distance between studs (the vertical strips of timber that hold a plasterboard wall in place). 
    • You will need to measure your stud distance before continuing. Don't stuff this up, otherwise that Hole Filler on the Ancillaries list will be in your hardware cart.
  • Shelves are 900mm long. 
    • This was the closest pre-cut MDF sheet I could find at Masters North Lakes.
  • If you want to convert your standing desk back to a seated desk, ensure you put the bottom of the shelving rails at a height that is equal to your current seated desk. You can see that in my picture.
  • I used thin nuts and bolts to secure the shelf bracket to the MDF. 
    • You can use wood screws if you like for the 300mm shelves.
    • I didn't want to risk it for the 600mm shelf, which can be subjected to some load if you lean on the table. There is 300mm of overhang resting on the shelf brackets. Bolts will ensure it doesn't go anywhere.
  • The original desk can be used for any number of things:
    • Put your drinks on there and keep them away from your IT gear.
    • Put admin stuff like filing trays, game figures, your collection of Start Wars Lego.
    • Use the original desk as a break desk when having a phone meeting, or +Google+ Hangouts 

Complimentary Benefits

Because I'm a tight arse, and didn't have enough money to purchase some tools, the cool people where I worked loaned me most tools I needed.

I took this one step further, and made a forum where staff can record what tools they are willing to loan to other staff members. So far, it seems to have had a slow response, but as time goes by I can see it as a great way to have an unofficial tool co-op for everyone to benefit from.

Could your office use a Tool Co-Op?