Tuesday, July 19, 2011

AMOLED Screens Will Change the Future of UI Design

The latest Super AMOLED Plus screen such as the one featured in the new Samsung Galaxy S II will begin having a real impact on UI design.

Why is that? you ask.

The latest generation of AMOLED screen use little to no power when displaying black pixels.  This means that on a mobile devices it is much more power efficient to use black pixels as much as possible.  I think this will mean that in the coming years mobile devices will increasingly use darker UIs in order to increase the battery life of their devices.  Android seems to have already made the decision to have black backgrounds on their UI quite a while ago and it makes me wonder whether this choice was purely aesthetic or a very far sighted engineering decision based on the likelihood that in future mobile screens would have 0 power black pixels.

Does this mean we could see a revision of the rather light iOS UI in the coming years to a more efficient and stern black based UI?  Probably not,  but it is interesting that the latest Meego builds for the N900 also use a light coloured theme by default but in the upcoming Nokia N9 running Meego with an AMOLED screen they have opted for a very black theme. See here: http://www.engadget.com/2011/06/21/nokia-n9-first-hands-on/

Anyway only time will tell but for my $0.02 I'd say that in future of UI design black is the new black.

Thursday, June 9, 2011

Enable Docky Settings in Elementary OS

I've been testing out the latest Elementary OS(Jupiter) on my Netbook. Elementary uses Docky as the default dock, it's a great app and I have used it extensively on standard Ubuntu. By default the dock does not autohide and on my 1024x768 netbook it's using way too much screen space. For some reason the Elementary team have decided to hide the dock settings by default.

To enable the Docky settings icon to appear in the dock do the following:

Open a terminal by pressing Ctrl + Alt + T or using the menus go Applications->Accessories->Terminal

Enter this at the terminal and hit enter:

gconftool-2 --set "/apps/docky-2/Docky/Items/DockyItem/ShowDockyItem" --type bool "true"

The Docky settings icon should appear on the left hand side of the dock.

It's the anchor icon on the far left

Alternatively you can do it via a GUI using gconf-editor.  To start gconf-editor open a terminal type gconf-editor and hit enter.

Select the "ShowDockyItem" option



Tuesday, June 7, 2011

Installing LAMP on Ubuntu 11.04 Natty Narwhal

This is a short guide to setting up LAMP(Linux, Apache, MySQL, PHP) on Ubuntu 11.04 Natty Narwhal.
If you are using 10.10 you can check out my LAMP setup guide here.

First step is pretty easy, open a terminal and enter the following:

sudo apt-get install lamp-server^

During the installation process you will be asked to enter you MySQL root password, after that you have a basic lamp stack set up.

The following steps are optional but recommended:

Install CURL for php.

sudo apt-get install php5-curl

Install mod rewrite for url rewriting.

sudo a2enmod rewrite

sudo gedit /etc/apache2/sites-available/default

This will open your sites config file, now find the XML block that looks like this:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

change the AllowOverride directive from "None" to "All".  The result should look like this

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

now save and close the file.



Next restart Apache for the changes to take effect.

sudo /etc/init.d/apache2 restart

And that's it, happy coding!

Installing Google Chrome in Ubuntu 11.04 Natty Narwhal

The deb package from Google Chrome download site does not currently work with Ubuntu 11.04(Natty Narwhal).  Luckily it's easy to just add the chrome PPA and install from the command line.

Open a terminal(Ctrl + Alt + T) and enter the following:

sudo -s

echo "deb http://dl.google.com/linux/deb/ stable non-free main" | tee -a /etc/apt/sources.list

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -


apt-get update

sudo apt-get install google-chrome-stable

exit

And now chrome should be installed, have fun.

Wednesday, February 16, 2011

Simple PHP oAuth example for Facebook Graph API

I needed to implement oAuth for the the Facebook graph API today and couldn't find any straight forward php examples so I thought I would post this in case any else is in a similar situation.

The basic process for the authentication is outlined here so I won't go into the details of it.  In the example below the bit you'll need to take note of is the "scope" parameter in the link, this defines the permissions you are requesting.  To see a full list of available permissions click here.

You'll also need to sign up for an API key first and register your application with Facebook, you can sign up here.

Step 1:
In your page make a link like this:

<a href="https://www.facebook.com/dialog/oauth?client_id=<?=FACEBOOK_APP_ID?>&redirect_uri=
<?=urlencode('http://yoursite.com/fb_oauth_return.php')?>
&scope=offline_access,user_checkins,friends_checkins">Connect with Facebook</a>

Step 2:
Create a page called fb_oauth_return.php which contains the following code

<?
if(!isset($_GET["error"]))
{

 if(isset($_GET["code"]))
 {
  $code = $_GET["code"];    
  $url = 'https://graph.facebook.com/oauth/access_token?client_id='.FACEBOOK_APP_ID.'&redirect_uri='.urlencode('http://yoursite.com/fb_oauth_return.php').'&client_secret='.FACEBOOK_SECRET.'&code='.$code;
  
  $curl_handle=curl_init();
  curl_setopt($curl_handle,CURLOPT_URL,$url);
  curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,6);
  curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
  $buffer = curl_exec($curl_handle);
  curl_close($curl_handle);    
  if(strpos($buffer, 'access_token=') === 0)
  {
   //if you requested offline acces save this token to db 
   //for use later   
   $token = str_replace('access_token=', '', $buffer);
      
   //this is just to demo how to use the token and 
   //retrieves the users facebook_id
   $url = 'https://graph.facebook.com/me/?access_token='.$token;
   $curl_handle=curl_init();
   curl_setopt($curl_handle,CURLOPT_URL,$url);
   curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
   curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
   $buffer = curl_exec($curl_handle);
   curl_close($curl_handle);
   $jobj = json_decode($buffer);
   $facebook_id = $jobj->id;
   
   
  }
  else
  {
   //do error stuff
  }
 }
}
else
{
 //do error stuff
}
?>

And that's it.  If you requested offline access you'll need to save the token to your database so that you can use it to make requests on the user's behalf later.

Friday, February 11, 2011

Nokia + WP7 and the fate of Meego

Big news for Nokia and WP7 fans today with the announcement of a partnership between Nokia and Micosoft to release a range of WP7 based Nokia handsets.  Hopefully for Nokia this can help increase their flagging smartphone market share.  However for me this raises some importatnt questions about the fate of Meego which I was really looking forward to seeing hit the handset market this year.  Sadly it looks like there will not be the proliferation of Meego devices I was hoping to see.  Nokia released a rather cryptic statement about future Meego development:

"MeeGo will place increased emphasis on longer-term market exploration of next-generation devices."

What this actually means remains to be seen but they have confirmed they will release one Meego handset this year.  Given that the scope of Meego is quite broad, aimed at everything from in vehicle systems to netbooks we may see it popping up on other devices soon it's clear that it will not be Nokia's focus for it's return to the smartphone market in the short term.

I hope there is still a future for Meego on handsets especially with the announcement of the Dalvik Alien VM for running Android apps on non Android devices which would combine the existing Android development ecosystem with Nokia's handsets.  Given that Meego is a partnership between Intel and Nokia I would be interested to hear Intel's thoughts on this new deal.

This is certainly sad news for fans of Maemo 5, Meego and open source operating systems generally but WP7 is a solid mobile OS and Nokia definitely need to move away from Symbian if they want to be taken seriously in the high end smartphone market.  This new gambit with WP7's success will be highly dependent on how much traction WP7 can achieve with consumers over the next year or so.  I'm also guessing that Microsoft is hoping to piggy back on Nokia's brand reputation and following in order to get the general public interested in WP7 which, while still in it's early stages, has yet to gain much of a following amongst consumers.

While Maemo 5 is a truly excellent mobile OS and Meego has tons of potential I fear that this may be the end of Meego handsets as a serious competitor to Android and iOS, at least in 2011.

Sources:
http://www.bbc.co.uk/news/business-12427680
http://www.allaboutmeego.com/news/item/12571_Alien_Dalvik_hopes_to_bring_An.php

Wednesday, February 9, 2011

Backpacking Essentials for the Geek - what to take with you

I usually write about tech but this week I thought I would try something a little different and talk about setting up the perfect backpack for the travelling geek.  If you're planning a long backpacking trip there are a few items I find make life on the road a bit more comfortable.

The essentials:

1. A Netbook
Netbooks are a blessing for the modern backpacker and provide several advantages over lugging around a laptop.  Most 9-inch netbooks weigh less than a kilogram but provide you with a fully functional computer that you can take anywhere.  They are also crazy cheap($300 - $400) so losing/getting wet/stolen is not the huge financial blow it would be with an expensive laptop.  Your netbook will let you do all your skype calling, emailing, photo uploading as well as watching episodes and movies in bed on your downtime nights.  Also given that most hotels and hostels have wifi you can get internet access pretty much anywhere and you can now avoid using the painfully slow, virus laden public access computers in your hostel.  Personally I use an Asus T91 running Ubuntu, it's only 9" and weighs around 900 grams so you barely notice you are carrying it.

Asus Eee PC T91SA-VU1X-BK 8.9-Inch Intel Atom Netbook Computer (Black)
Asus eee Netbook, 9" and 900 grams awesome for your backpack


2. A carrier unlocked Smartphone
In most countries getting a pre-paid SIM card takes about ten minutes and is super cheap so having an unlocked phone will end up saving you a ton of money and hassle in the long run.  If you're like me and you're not willing to take an awesome expensive camera around with you I find my HTC Hero and HTC Desire have great cameras and replace the need to take a point and click with me.  It's also an Mp3 player and GPS so that's two less things to carry.



3.  Spare Rechargeable Batteries
I always carry rechargeable batteries with generic plugs for recharging my phone, Nintendo DS and kindle when I don't have access to mains power as well as a spare phone battery.  Having your mp3 player running out of power 5 hours into a 30 hour train ride is no fun so make sure you always have backup power.

New Trent Dual-port Pack IMP50D 5000mAh External Battery pack for Apple iPad, iPhone 4G 4, iPhone 3G 3GS, iPod Touch (1G 2G 3G), Motorola Droid phones, HTC Android Phones , Blackberry (curve, tour, bold, storm) Black
Something like this portable battery pack


4. Headphones and Adapters
A good pair of bud earphones is essential, you can take over the ear style ones but you always need to be precious with them so they don't get crushed and ultimately I don't think the added sound quality is worth the effort.  The ear plug style buds are best for this as they blog out more external sound which you will really appreciate when you are on a bus with blaring Hindi pop music.  Also take a headphone splitter so that you can share what you are watching/listening to with the person next to you.  I also recommend picking up an adapter for the headphone jacks they use on airplanes so you can use your own headphones with the in flight entertainment.

Sennheiser CX300-B In-Ear Stereo Headphone
These do a great job of blocking out external sound


5. Cables, Adapters and Chargers
The possibilities here are endless but these are what I always take:
- A short length of cat 5
- Mini USB to USB
- Micro USB to USB
- 3.5mm jack to stereo RCA
- 3.5mm to 3.5mm stereo cord
- VGA Cable
- DVI to VGA Adapter
- Headphone Splitter
- AC Power adapters for various countries
- AC power to USB
- A multi-card reader

6. Data Storage (The Cloud is your friend)
You'll want somewhere to store your data while you are on the road and if you want to bring episodes and movies with you then you'll need some storage.  There are a few options here either and external drive, usb sticks and memory cards.  The external drive will give you the most bang for your buck but after having two of them die on me while travelling I decided to buy a bunch of large memory sticks and memory cards instead, a little pricier but worth it.  Make sure you back up your photos to the cloud using something like DropBox or Ubuntu One as often as possible, backing up photos to your memory stick won't do you any good if you lose your backpack.


7. A torch + spare batteries
This one is a no brainer and you'll be surprised how often you use it.  I use a mini maglite which does a great job.

MAGLITE M2A016 AA Mini Flashlight, Black
Definitely worth the space in your pack
8. Passport Photos and a Pen
Most countries still require filling out visa applications and entry cards so having a pen means you can fill everything out and get through customs as fast as possible.  Also most countries will require a passport photo attached to the visa application and not needing to get photos at the only photo booth in the airport will save some serious hassle and cash.  Just remember not to put the photos in with your check-in luggage!

Nice to have:
1. A Nintendo DS
Amazing battery life, tons of games and r4 cards plus wifi multiplayer, why wouldn't you want to.

2. A Kindle
Awesome for reading on the go.  Great battery life, small and light plus the global 3g coverage if you go for the more expensive model means you can shop for books online almost anywhere.

3. A hip flask
Really great to have on a long train trip or a long day of hiking or trekking where space and weight are at a premium.

4. Travel speakers
If you can get some good travel speakers they really come in handy.