Nexus vs iPhone

I’m what most internet trolls would call an ‘Apple fanboi’.  I have a MacBook, an iMac and an iPhone.  Apple products have typically worked well for me and have accomplished mostly what I need out of them.  That said, they’re not perfect, and over the past three or so years I’ve had some brief flirtation with Samsung’s Galaxy line of phones, most notably the S2 and the S3, and I always felt they were vastly inferior to the iPhone.

Fast forward to 2013 and iOS has begun to feel a bit stale.  I decided, after much research that if I was going to give Android a fair chance, I had to try a Google Nexus… stock Android I reasoned was the most logical step considering that I didn’t like what Samsung tacked onto Android, and because I wanted a phone that would continue to get Android updates for some time into the future.

I’ve been using the Nexus 4 for around a week now, and here are my first impressions having come from the iPhone.  Note that my comparisons here are against Android 4.2.2 and IOS 6.1.3.

  • The stock email client is horrific.  ActiveSync support is terrible.  The client is buggy, slow and lacks polish.  I definitely would have expected more.  Luckily, TouchDown for Android fills this gap quite well, but it sucks that the default client is so terrible, especially when you consider that the iOS counterpart is so good.
  • Headphone control is nonexistent.  By default, iOS integrates with most headphones and allows the control of volume and changing of tracks etc. direct from the headphone remote.  The same cannot be accomplished in stock Android.  Frustrating as hell when you’re on a run and you want/need to change music selection without pulling your phone out.  There are apps that can achieve the same thing, but I’ve not found one that manages to control both volume, changing of tracks, and answering of calls.  Not one.
  • FaceBook integration is missing from Contacts and Calendars.  Why?!  Again, maybe I’m just spoilt because it’s in iOS, but this seems like a glaring omission.
  • Managing sound profiles is more difficult than it should be.  iOS allows the user to set the phone on silent with the toggle of an external button.  Android allows the user to toggle sound profiles only after unlocking the device.
  • Lack of a ‘Do not disturb’ function.  iOS allows the phone to automatically go silent at scheduled times… great for sleep time when you don’t want mails and notifications to wake you.  Again, it can be accomplished with apps, but it’s missing in the base Android OS.
  • Screen rotation is cumbersome to turn on and off.  The quick settings widget doesn’t have a rotation setting, which means you have to drill down into Settings, then Display, then toggle it on or off.  The same can be accomplished on iOS far more easily.
  • I’ve had the launcher app crash on me.  That’s bad.  ’nuff said.
  • Apps seem less polished.  Case in point would be the horrific Facebook app… on iOS it’s crap, but at least it doesn’t crash as often.
  • The back button.  I’m not the first person to find it inconsistent as hell, and I certainly won’t be the last.

At any rate, there are some definite upsides to the Nexus too… it’s different and I definitely need to give it a bit more time… will post again in a week or two regarding my progress with it.

The PS4

So anyone with half a glimmer of interest in gaming would have been excited with the news of the PS4 launching later this year.  There’s been a lot of fanfare around the lack of an actual physical device to look at, but to be honest I couldn’t care what it’s going to look like.

I am however, interested as to what features Sony will cut from the console as it’s life progresses.  Case in point would be the PS3 which launched with some excellent functionality, such as the ability to run Linux on the device as well as backwards compatibility for PS2 games.  Sadly these features were stripped with later updates to the console both at a hardware and a software level.

And so it is with some healthy scepticism that I look at the feature list and wonder… what feature, if any will be removed first?

Best Albums of 2012

Some real surprises this year in terms of what I thought were the best albums, especially considering that I’d never heard of some of these artists prior to this year.  So, without any fluff or fanfare, here are my top 5 albums of 2012.

  1. ZZ Ward, Till the Casket Drops
  2. Missy Higgins, The ‘Ol Razzle Dazzle
  3. Pierce the Veil, Collide With the Sky
  4. Jason Mraz, Love is a Four Letter Word
  5. Celldweller, Wish Upon a Blackstar

 

iTunes South Africa

This week saw the introduction of Music and Movies to the South African iTunes store.  While it’s certainly a welcome addition, I can’t help but feel that this welcome step forward just isn’t enough.  The South African App store has always been fairly disappointing due to the fact that many apps simply never make their way to our store, and looking at the new sections it’s clear that this particular problem will persist.  While the U.S. store gets the lion’s share of content, other countries are made to suffer.

I find it hard to understand the reason for this, given the fact that the internet is a truly global network.  Music is appreciated worldwide regardless of copyright law, and the same can be said for Movies and Television series etc.

Most South Africans I know aren’t going to use the ZA store much, having found ways to obtain content from the US store already (and growing our libraries extensively over the past couple of years while significantly contributing to digital media growth) so this could be seen as a case of ‘Too Little, Too Late’.

Big Media companies should start giving consumers what they really want.  DRM free Movies, Music, TV Series and Apps available in ANY country with unified pricing across all regions.  Start doing that, and you’ll see a digital media explosion bigger than you could possibly imagine… and probably a reduction in Piracy, because you’ll finally be giving people what they want….

Google Maps on iOS

Google finally released an official version of Google Maps on the Apple App Store today. This is great news, especially considering the state of Apple’s own map application and the fact that map support outside of the United States really isn’t very good.

Now, if Google would just release a Google Talk app for iOS….

Inbound TLS with Exim

OVERVIEW

This article briefly explains how to use Exim to ensure that inbound mail to specific domains are sent over TLS, thus ensuring secure inbound communication. This document assumes that you’ve already built Exim with TLS support and that the remote mail server will be delivering to you via TLS.

GENERATE A CSR

Certificates are a little beyond the scope of this, but essentially, you will first need to generate a CSR, which will need to be signed by someone like Entrust, Verisign etc. To do this, follow the following simple steps:

# openssl genrsa -out host.key 1024 # chmod 400 host.key # openssl req -new -nodes -key host.key -out host.csr 

You’ll be asked to enter information for your host, organisation etc. Once the CSR is generated, send it to your certificate authority and they will send you back the signed cert.

FILES

Now, copy the host.key file into your Exim config directory, and make sure that it’s readable by the user that will be running Exim. Youâll also copy the signed cert to this directory. My filename is called cert.pem, and should be world-readable, but not writeable.

EXIM CONFIGURATION

Now, let’s add four simple lines to Exim:

CONFDIR=/etc/exim tls_certificate = CONFDIR/cert.pem tls_privatekey = CONFDIR/host.key tls_advertise_hosts = * 

Essentially, this tells Exim where the certificate and private key files are stored, and which hosts it should advertise TLS to. In my case, I want to advertise TLS to all hosts that connect to us. If it’s working, you should see something like this in your log files:

2009-11-10 10:48:19 1N7mOa-000PUi-Rt <= user@partner H=obfuscate.this.com [127.0.0.3] P=esmtps X=TLSv1:RC4-SHA:128 S=45231 id=0BC88D75D3848B4B84410DB823A6F62901F819F0@EXVS135RC102.this.com

Outbound TLS with Exim

OVERVIEW

This article briefly explains how to use Exim to ensure that outbound mail to specific domains are sent over TLS, thus ensuring secure outbound communication. This document assumes that you’ve already built Exim with TLS support and that the remote mail server accepts TLS sessions.

ROUTER CONFIGURATION

Under the routers section of the Exim config file, add a new router called tls_domains that looks like this:

tls_domains: driver = dnslookup domains = securepartner.com:nextpartner.com transport = tls_smtp 

Here, we tell Exim to use the dnslookup driver to do DNS lookups to determine the MX records for the domains which we specify, and we specifically tell it to use the tls_smtp transport, which we’ll add next.

TRANSPORT CONFIGURATION

Now we’ll add a new transport in the transport section of the Exim config file, that looks something like this:

tls_smtp: driver = smtp hosts_require_tls = * 

This transport tells Exim to deliver using the smtp driver and that all hosts require TLS. If TLS is not able to negotiate, the message will not be delivered.

CHECK ROUTING

You should now be able to ask Exim how it would route mail for these domains as per the example below:

exim -bt marcs@securepartner.com marcs@securepartner.com router = tls_domains, transport = tls_smtp host mail.securepartner.com[192.168.12.1] MX=10 

LOGS

The Exim logs should show something like this now for a successful TLS mail:

1MxJip-0002v8-9v => marcs@securepartner.com R=tls_domains T=tls_smtp H=192.168.12.1 [192.168.12.1] X=TLSv1:DHE-RSA-AES256-SHA:256

Obtaining system lists using the RHN API

OVERVIEW

RedHat’s RHN offering is extremely powerful, but the web front end does not offer a way to get an export of all systems that are being managed. This article briefly explains how to get a list of systems that exist in RedHat’s RHN using the API provided by RedHat with Python.

THE SCRIPT

#!/usr/bin/python import xmlrpclib SATELLITE_URL = "https://rhn.redhat.com/rpc/api" SATELLITE_LOGIN = "youruser" SATELLITE_PASSWORD = "yourpassword" client = xmlrpclib.Server(SATELLITE_URL, verbose=0) key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD) list = client.system.listUserSystems(key) for group in list: print group.get('name') client.auth.logout(key) 

Python will connect to SATELLITE_URL using the SATELLITE_LOGIN and SATELLITE_PASSWORD to authenticate and then request listUserSystems from the system class. Then we iterate through the returned information to show a list of servers.

API INFORMATION

More information about the RHN API can be found here.