Wednesday, August 7, 2013

Typing Arabic vowels/diacritics on Android


If you would like to type Arabic vowels/diacritics/harakat on Android, you first need a keyboard that supports it. I've tried most of the keyboards available, and I've listed the ones that fit the bill. Most surprisingly, my keyboard of choice (Swype) doesn't support Arabic diacritics. Guess it's time to switch!

The first thing you'll need to do for all of these keyboards is install Arabic in the settings for each keyboard, which is normally accessible by going to Home --> Menu --> Settings --> Language and input. Once you've installed Arabic, you'll need to switch to Arabic language while using the keyboard.


Google Keyboard (pictured)

To type Arabic diacritics, long-press the period key near the lower-right.

Google Keyboard is free, lightweight, and probably the best out of the options I tried. In a move against Android fragmentation, Google is modularising Android by making a lot of new features available through the Play Store, meaning it matters a lot less what version of Android you're running. The Google Keyboard is one of the results of this modularisation.


SwiftKey

Long-press the apostrophe/single quote key near the lower right to access diacritics.

SwiftKey is a solid keyboard. It isn't free, but it's gone on sale periodically.


GO Keyboard

There's a button near the bottom left that has a doubled fatha symbol. Long-press it to access other diacritics.

This one's pretty good and it's free, although it does feel a little bloated and several of the options will prompt you to install additional GO-branded software.


SlideIT

Tap the button that brings up numbers and symbols. From there you should see a "1/6" button. You'll need to tap that five times until it says "6/6", and from there you'll see the diacritics.

This was probably my least favorite. The interface felt cluttered, and having to go through six keypresses just to get to the diacritics was annoying. In addition, some of the time the 1/6 button said 1/3 instead, meaning I couldn't get to the diacritic page. It seemed that happened mostly when switching between other keyboards.

Friday, August 2, 2013

Import Catch notes into Evernote


If you haven't heard, Catch Notes is shutting down at the end of the month. It was one of the nicest note taking apps for Android. There are a lot of alternatives out there. In most cases I opt for whatever Google has to offer, and in this case they have a note app of their own called Google Keep, but it only allows you to organize notes by color instead of Catch's useful spaces and tags. I don't know about you, but trying to find a note by a particular color alone is incredibly useless for anything other than eye candy.

It seems the best alternative is to finally join the masses who are using what's pretty much the king of cross-platform note-taking: Evernote. If you export your Catch notes by the end of this month, you'll be able to easily import them into Evernote. Here's how:

  1. Go to this link, log in, and download the Zip Archive File of your Catch notes:
    https://catch.com/tools/export/new

  2. Unzip the file somewhere. It will contain a folder for each Catch Notes space you had.

  3. Download the Evernote desktop app from here:
    http://evernote.com/download/

  4. Open the Evernote desktop app. Log in or create a new account if you don't have one already.

  5. Go to File --> Import --> Evernote Export Files...

  6. Browse to the location where you extracted the Catch Notes zip archive file. Open one of the folders for one of your Catch Notes spaces, and select the notes.enex file to import it.

  7. When it asks you if you want to place the notes into a synchronized notebook, click Yes.

  8. The notes will be imported into an Evernote notebook, which is essentially the same as a Catch Notes space. The notebook will be called Imported Notes. Right-click on it, click Rename, and give it the same name as the Catch Notes space you imported.

  9. Repeat the previous four steps to finish importing the rest of your Catch Notes spaces into Evernote. You can probably skip importing the All Notes notebook to avoid importing duplicates.

  10. In Evernote, your default notebook is called something like username's notebook. In Catch, the default was called Notes. If you want, move all your notes from the Notes notebook into the default Evernote notebook, or vice-versa. You can then delete one of them. If you want to change your default notebook, right-click on a notebook --> Properties --> check Make this my default notebook.

  11. At the top of the Evernote desktop application, click the Sync button to sync your new notebooks to the cloud.

  12. Install the Evernote app:
  13. Open it up, sign in, and all your notes from Catch should be there.
Farewell, Catch. We'll miss you!

Wednesday, July 31, 2013

The failed Apple experiment

The setup

I've long admired Apple products from afar. With the switch to OS X (based on Unix) and Intel processors, my interest was further piqued. The stability and security of Linux with a clean UI and consistent UX make Macs a very attractive choice. The problem: price. At two to three times the cost of equivalent PCs, Mac prices simply aren't competitive.

But I began thinking. If Mac hardware really is better (as most Apple fanatics would attest), I could buy a used Mac for about the same price as a new PC, and it should last me nearly as long. Boy, was I wrong.

Warning signs

Being frugal, I thought I'd save as much money as possible by buying a late-model first generation Macbook Pro. I quickly realized this wasn't a good idea when I discovered there was a design flaw that caused the graphics to fail. Apple covered the issue for four years beyond the date of purchase, but most of these were more than four years old by this point.

So I opted for an early-model second generation Macbook Pro instead. It was nearly--but not quite--four years old, but the laptop I was replacing it with was an HP that was over seven years old. So the Macbook was a step up in every way: it was newer, faster, and better quality. If I got seven years out of an HP, sureley I could get five more years out of the Mac. I was abruptly awakened from this dream.

The first few weeks it was incredible. The build quality was astounding, and I immediately fell in love with OS X. It worked flawlessly, and being a Linux fan I loved that BSD was running under the hood and I could do much of my work in the terminal without too many adjustments.

The first straw

One day I powered it on and realized my wifi wasn't working. I clicked on the wifi icon at the top of the screen only to be greeted by:

WiFi: No Hardware Installed
That's odd; I was pretty sure I had wifi hardware the previous day. I tried a few things and it started working again, but the problem came back with more and more frequency. Then the entire laptop would completely freeze. I googled the issue, and finding tens of thousands of results, I combed through them and tried everything in the book. After a while it became apparent it was a hardware flaw. The only resolution I was able to find was to disable the wifi hardware, and buy a USB wifi adapter, which wasn't a good solution considering it only has two USB ports.

The second straw

Not too long after that I turned the Macbook on and it took a very long time to boot, nearly 15 minutes. It showed a progress bar on the screen during this time. I found out this indicates an issue with the hard drive. To make matters worse, I opened the cover to the compartment that houses the battery and the hard drive, and the hard drive was less than two years old, meaning it had already been replaced once. Great--broken wifi and a failing hard drive. My impression of Mac hardware was quickly worsening.

The last straw

As if it couldn't get any worse, I was using the laptop on battery power one day when all of a sudden it turned off. It didn't shut down; it completely lost power. I turned it on again, and the battery still had most of its charge left. I was originally impressed that I was getting 2-3 hours of use out of a nearly four-year-old battery in between charges. But now, the laptop would completely lose power even when the battery had plenty of charge. It could happen at 50% battery capacity, or 90%. The battery still has less than 100 cycles on it (Apple says it should last for 300), but it's now effectively worthless. Yet another apparent hardware flaw. Unfortunately Apple replacement parts are just as overpriced as Apple products; they want $130 for a new battery.

The last resort

The computer was way out of warranty, but I thought if I reached out to Apple they might fix the two issues that were evident hardware design flaws (the wifi and the battery) and not a result of normal wear and tear. First I tried chatting with their support, but they want $20 just to chat with them regarding a computer that's out of warranty. I called; same thing. Finally I took it to an Apple store, where they did a free diagnostic. But after the diagnostic the only thing they offered was to fix it for a price that's higher than the computer's worth.

Lesson learned

So I'm left with a laptop that I can only use if it's plugged in, I only have one available USB port, and the hard drive might be on it's way out. It's evident my Apple experiment was a failure. Oh well. At least I learned my lesson. It's the first and last Apple product I will ever own. I can get a brand new Thinkpad for less than I paid for a used Macbook Pro, and I'll stick with Linux. Dear Apple: let me know when you start selling OS X for PCs. Until then, goodbye.

Thursday, July 25, 2013

Xubuntu vs Lubuntu (Xfce vs LXDE)


While looking around for alternatives to Ubuntu, I stumbled upon two lightweight derivatives of Ubuntu: Xubuntu and Lubuntu. They're both derivatives of Ubuntu, which means they get the same great up-to-date packages, community support, and can benefit from PPAs. Plus they're both lightweight enough to be run on older computers, which is a nice change of pace from regular Ubuntu, whose Unity interface is too bloated to run well on older machines.

Lubuntu is a little more lightweight than Xubuntu, but on closer inspection it's clear that Lubuntu's advantages end there.

Here are some reasons why Xubuntu is the better choice:

  • Xubuntu is more mature; it's been around since 2006, whereas Lubuntu was introduced in 2010.
  • Related to the previous point, Xfce (the desktop environment which Xubuntu is based on) is more mature and has been around much longer than LXDE (which Lubuntu is based on).
  • LXDE is largely developed by one person, whereas Xfce has a large and robust development team.
  • Every two years Ubuntu releases an LTS (Long Term Support) version. Xubuntu follows Ubuntu in providing LTS releases, but Lubuntu doesn't.
  • Xubuntu has an integrated settings manager, but Lubuntu doesn't.
  • Lubuntu is a little too bare bones and requires more work to configure and customise (Sources: 1 2 3)
  • This is mostly a matter of opinion, but Xubuntu/Xfce looks better (and I'm not the only one that thinks so). It also looks more like GNOME 2.
Of course you are free to use whatever desktop environment you like. My goal is just to help you make an informed decision.

Oh, and the screenshot at the top is Xubuntu :)

Monday, July 15, 2013

Running Android Jelly Bean (4.1) on a Galaxy S Advance


The Samsung Galaxy S Advance (I9070) is a nice phone.  It's one of the very few Android phones that has a reasonable screen size (just 4 inches--the same as the iPhone 5) but's also fairly powerful with a dual core processor.  The only problem is that it only has 768 MB of RAM, which should be enough for Android JB (Jelly Bean 4.1), but Samsung's build of JB is pretty poor, and performance suffers.

One solution is to keep the phone on (or downgrade it to) Android Gingerbread (2.3), but who wants to run a 2+ year old OS?  So here's how to have your cake (or Jelly Bean, as it were), and eat it too:

  1. Back up your phone
    This process is going to wipe everything on your phone, so I'd recommend backing up anything you'd like to keep. I won't go into detail on this, but I generally recommend rooting and using Titanium Backup.

  2. Upgrade to Jelly Bean
    The easiest way to do this is through Samsung's own Kies software. If you get a message saying Kies is unable to update the firmware on the device, it can still be done, but will take a little bit of work. I recommend the instructions here: Galaxy S Advance Receives I9070XXLQG Android 4.1.2 Jelly Bean Update [Manually Install]

  3. Clear the cache
    This is something I like to do to ensure a clean install after an upgrade:
    1. Power off the phone
    2. Boot the phone into recovery mode by pressing and holding volume up, home, and power buttons together (you can let go once you see the I9070 screen)
    3. Select wipe data/factory reset
    4. Select wipe cache partition
    5. Select reboot system now

  4. Root the phone
    This has also been thoroughly documented elsewhere, so I won't reinvent the wheel: How to root Galaxy S Advance on I9070XXLQG Android 4.1.2 Jelly Bean [Tutorial]

  5. Install Cocore kernel
    This helps mitigate some of the slowness you'll notice when upgrading to Jelly Bean.  This takes a couple of steps, but overall is pretty easy:
    1. Download the temporary ClockworkMod (CWM) recovery to the SD card from here: [Recovery] CWM 6.0.2.8 [JB Compatible]
    2. Download the latest CWM Cocore kernel from here: CoCore-E-Refresh
    3. Reboot into recovery mode using the steps given above
    4. Select apply update from external storage, browse to the temporary CWM file, and install it. When it's finished it will automatically load the temporary CWM.
    5. From the temporary CWM, select install zip from sdcard, browse to the Cocore kernel, and install it
    6. Select reboot system now to reboot

  6. Disable/uninstall bloatware
    Another reason Samsung's build is so slow is that it comes with tons of junk, which uses up the majority of the phone's RAM. Getting rid of it is a huge help:
    1. From the home screen, go to Menu --> Settings --> Application manager, then swipe right until you get to the All tab
    2. Open each of these apps, and click the Disable button, or you can optionally skip this step and go to the next step and use Titanium Backup to completely uninstall these apps:
      • ChatON, ChocoEUKor, Clock (digital), Clock (funky), Clock (modern), CoolEUKor, Dual Clock (analogue), Dual Clock (digital), Helv Neue S, Memo, Microbes, Mini Diary, My Files, Polaris Viewer 4.1, RoseEUKor, S Note Provider, S Planner, Samsung account, Samsung Apps, Samsung Backup, Samsung Backup Provider, Samsung Browser SyncAdapter, Samsung Calendar SyncAdapter, Samsung Cloud Data Relay, Samsung Contact SyncAdapter, Samsung Push Service, SNS (with the facebook icon), Weather Widget, Weather Widget Main, Yahoo! Finance, Yahoo! News
    3. If you wish to further disable bloatware, install Titanium Backup, and uninstall the following apps (or you can freeze/disable them using Titanium Backup Pro):
      • AllShare Service, com.samsung.app.playreadyui, Memo, Mobile print, Music Player, OmaDrmPopup, SamsungAppsUNA2

  7. Install calendar and file manager
    We removed Samsung's crummy calendar and file manager apps, so install Google Calendar and the file manager app of your choice (I like OI File Manager since it's lightweight and open source)
Well, it takes a bit of work, but you should now have a smooth-running Jelly Bean on your Galaxy S Advance.  Enjoy!

Monday, July 8, 2013

An open letter to Android smartphone manufacturers














Dear Android smartphone manufacturers,

Android's got a bad rap, and it's your fault.  You have built some really amazing phones, but you've also built a ton of really crummy ones, and quite frankly, we don't want to buy them.  Your focus is all wrong.  But I have some suggestions:
  1. Battery life
    If we have to charge our phones more than once a day, we're going to be dissatisfied, period.  This doesn't mean it should be able to play HD video for 24 hours, but a modern smartphone should be able to handle moderate use without having to be charged more than once a day.

  2. Stock Android
    When is the last time you heard someone say how much they love HTC Sense (HTC's customized version of Android), or Samsung's TouchWiz?  Don't even get me started on Motorola's Motoblur.  The answer is never.

  3. Smaller screen sizes
    We want phones we can use with one hand.  I think the ideal phone screen size is somewhere between 4 inches (iPhone 5) and 4.3 inches (Galaxy S2).  I have the latter, and it's big enough that I can't reach the opposite top corner of the screen without shifting the phone in my hand.  I definitely wouldn't want anything bigger.  And guess what?  Smaller screens use less battery!  It's win-win.

  4. Fewer models
    Don't build 100 different phones.  The real competition is Apple, which builds just one phone a year.  No need to go that extreme, but make just 2 or 3 models, and don't bother building a "low-end" phone; the profit margins are going to be too low and it will just muddy your brand.  Also, only release new phones once a year.  Releasing a new phone every month only devalues the high-end phone that you just released.  Plus it frees up resources to make sure your phones are stable, and so you can actually push out the latest versions of Android to your customers, which is a huge complaint among Android owners.

  5. No gimmicks
    Why would you dare add some completely unnecessary feature to a phone if we never asked for it, it's going to make the phone cost more, and/or it's going to decrease battery life?  Here are just a few gimmicks we don't care about, off the top of my head:
  6. Durability
    If you want to throw in features, give us a feature that will benefit us, like a phone that's water resistant or isn't going to completely shatter when dropped from a short height.

  7. Less bloatware
    No, I don't want Slacker Radio, UNO, a crippled GPS navigator, or some trial office suite.  I know a lot of this is dictated by the carriers, but I feel like the manufacturers don't try very hard either.
Want to differentiate yourself?  Build a solid phone, with no gimmicks, and stock Android.  That'll be enough differentiation.  If you really want to shake things up, build some cool apps.  S Health, for instance, has been a huge hit with Samsung users.

Wednesday, March 13, 2013

Spotify Linux woes

spotify

I recently (okay, almost 2 months ago) updated Spotify on my Ubuntu Linux machine, and the new version is having lots of problems:
  • Dragging from search results into a playlist crashes spotify

  • Dragging items to the top or bottom of a playlist crashes Spotify

  • Artist radio isn't working (or it's taking so long to load that I gave up waiting)

  • Searching doesn't display instant search results like it used to
My solution: downgrade spotify. Here goes:
(Note: I'm running Ubuntu 12.04 64-bit. If you're using 32-bit Ubuntu replace "amd64" in steps 3 and 6 with "i386". If you're using a different version of Ubuntu or a different flavor of Linux, you're on your own.)

  1. First, completely quit spotify. Make sure you click on the icon and click Exit if it's in the system tray

  2. Run this command in a terminal to make sure you've got the problematic version of Spotify:
    dpkg -l spotify-client
    The output should include this line:
    ii spotify-client 1:0.8.8.323.gd Spotify desktop client

  3. Download the previous version of spotify by running this command in a terminal:
    wget http://packages.bodhilinux.com/bodhi/pool/stable/s/spotify/spotify-client_0.8.4.103.g9cb177b.260-1_amd64.deb

  4. Uninstall the current version:
    sudo dpkg -r spotify-client

  5. Move the cache folder out of the way:
    sudo mv ~/.cache/spotify/ /tmp

    Note: if you don't do this, you might get this error when running spotify:
    Missing Dependencies
    Framework compatible with bridge-desktop (version 0.7.0) does not exist.

  6. Install the previous version:
    sudo dpkg -i spotify-client_0.8.4.103.g9cb177b.260-1_amd64.deb

    If you get this error:
    dpkg: error processing spotify-client (--install):
    dependency problems - leaving unconfigured

    run this command to fix it by installing any missing dependencies:
    sudo apt-get -f install

  7. To keep spotify from being upgraded again to the broken version, run this command:
    grep -r repository.spotify.com /etc/apt/sources.list* | egrep -v "\.(save|distUpgrade):deb" | cut -f 1 -d :

  8. The previous step should output one or more files. Edit them and put a pound sign (#) in front of any occurrences of this line:
    deb http://repository.spotify.com stable non-free

    Like so:
    #deb http://repository.spotify.com stable non-free
Now spotify should work, at least as well as it did before ;)