Gaunt Face | Matthew Gaunt

The Power of “Free” Time

This is something I’ve been pondering on the last couple of weeks, it’s a little bit of a ramble but it would be great to get some experienced developers points of view.

When I say “free” time, what I’m referring to, is paid time, in work hours, to look into / research / learn a  new skill, technology or api etc. All of which a company may benefit from.

From a Software Engineers point of view, free time is great, not only does it give you time away from a project, it also gives you a level of freedom to pursue a personal interest. This means you get extra experience in something new altogether or something you’re experienced in but just learning a little more in a specific area.

As a senior android developer, I’ll most likely be expected to know about the latest android api’s, announced earlier today. Yet I’m stacked up with internal matters, project deadlines and project management that I can’t possibly spare time to learn these new things, so where should this time occur? In my own free time out of personal interest? Is that a reasonable assumption to make? Don’t get me wrong, I love developing apps, but if I don’t have a use for something, then I’m unlikely to go away and spend my spare time learning about it unless I have a real interest in the topic (which after a full day’s work of android dev’ing, more android dev’ing isn’t high on the list).

Perhaps it should be on company time.

But from a management view point, it’s a resource that is being shifted away from paid work, into something that isn’t necessarily needed and may not ever be useful. But the good should outweigh the bad, if someone has experience in a particular topic, that can lead to a client going with you because of experience. It means quoting can be achieved with a more realistic approach rather than a finger in the air approach. Staff morale is boosted from doing something they enjoy and I imagine in many cases would lead to them working faster and / or learning new skills that speed up development in a number of ways.

The real question is how to convince a management team to take this approach. And what happens when you’re a company that wishes to pride yourself of always being on the cutting edge of your field, if you can’t spare the time to staff to learn this stuff, where is it meant to happen? Smoke and mirrors? What do development companies do?

The final question, who should get this time? Does an entire development team need this time? only senior developers? lower developers? Should a specific team of dev’s be given the task of learning new technologies, creating examples and libraries for the rest of the development team to use?

This video is a little off topic but it’s an interesting talk and discusses how the work environment might be changed for the better.

Admob Android App Update

Since the release of Facebook Sync I have found that I want to keep track of my Admob Revenue and to be honest the website isn’t too bad both on the phone and on a standard browser, but what I really want is a simple widget and an app with a nice interface if I want more info, so after noticing they’ve released an API I went about writing an Admob application.

So far I’ve been quite happy with the results (especially considering how little time I’ve actually spent (a few hours here and there when ever I can), but what I’ve really been trying to do is focus in the details, the little things that may go unnoticed but make it a little bit nicer for the user.

The aim of this blog post is for me to a.) Show what I’ve done so far b.) Get some initial feedback and c.) Point out things others may overlook in app development.

The Login Screen

Exciting stuff I know, but there is just a couple of minor details to take note of.

The first thing is the customisation of the widigets, thats the EditText fields (Username and Password), Checkbox (Remember Me) and the Button (Login). Now this screen took a fairly long time to design and set up because I was setting up the Theme.xml and Style.xml so afterwards it would filter throughout the application so I didn’t have do anything in any of the layouts (really recommend devs use Themes and Styles, you’ll thank me later).

Anyway I think some people may go against me changing the default EditText field, my main issue is that the system edit text is different for every version of Android and I’m really shooting for a nice, simple, fluid UI, hence all the custom components.

I’ve also put a ‘Gaunt Face’ badge to the left of the application, the reason behind this is because I want to build up a bit of a brand for quality apps and I want to know what you guys think of this, I don’t think it’s particularly obtrusive and the key is just to get people to notice it if they download more than one of my apps (which I hope they will).

The Login Screen of the Admob andoird app (portrait)

Second point to make (this is one of those really minor things I was talking about), but look at the keyboard, notice the key left of the space bar? It’s an @ symbol – OMG Hold the press, it’s really tiny but I have used a number of app’s where the username is an e-mail and they DON’T set the keyboard like this, it’s so minor but bugs me quite a bit. Google put in the option, so use it :)

Showing the use of the at symbol in the Admob App

Like any good layout, it should work in both portrait and landscape.

Showing the Login Screen for Admob in Landscape

What I’m Referring to as, the Dashboard

Next is the dashboard or home screen or . . . the first screen you see when you log in.

The aim for this screen is to tell you what you want to know, which is how much money you’ve made today, how much you’ve earned in the past month and let you see all that is relation to what you’ve earned in the past 2 days [ it also say hi to you too :) ].

The Dashboard of the Admob application

The little things to note are, the action bar at the top with the refresh bar, when you hit refresh, the arrows turn into a loading image, which means NO dialog popping up and blocking the screen (I hate those, in fact I’m not a fan of the dialogs as a whole, as you’ll see in a bit). The hi message also has a nice little pop out animation on start up as well.

What I need to do with this screen is figure out how to handle large values above each bar in the chart. I was considering the following:

$999.99 -> $999.99

$999,999.99 -> $999.9k

$999,999,999.99 -> $999.9m

(Anything greater I won’t show)

Not sure if I like that or not and I’m not convince that those values could be displayed on all the devices (low dpi, medium dpi and high dpi) or not, but at the moment, that’s what I’m thinking.

A quick shot of it in landscape, this is just a little bit of a shuffle about to use the space a little better.

The Android Admob Application Dashboard in Landscape

Application List

Then we have a list screen so you can see all of you’re applications, here’s both portrait and landscape. I don’t have much to say about this screen, it’s fairly simple and the only thing dev’s should consider is insuring the list view cache color hint is set to an appropriate color to avoid any nasty side effects when scrolling (and remove the dividers if you need to).

A List of a Users Admob Adverts in Android Application

The Users Advert List in Landscape

App Summary

Nearly at the end, this screen is still in very early stages, but here we go. The summary screen for an app, this covers the same content you can have access to on the website (Revenue, eCPM, Requests etc). At the moment it is only showing a line graph, but I am intending on adding more data underneath the graph in a simple linear layout (one value after the other). Each section can be accessed by scrolling the bar of buttons and clicking on your required one or by swiping the entire screen left or right, which will cause a similar behaviour to the stock News and Weather app.

I only got the graph working last night so need to check some of the data, but the idea is the portrait graph has 7 days worth of data (which is meant to be shown as below).

The Summary Screen for Admob Revenue

Then when in landscape the graph will enlarge and show 30 days worth of data (there will be a small graphic to indication to the user about this behaviour).

The Admob App's Landscape Graph

Dialog Boxes – GGGgggrrrrRRRrrrr

Lastly ……. I hate the default dialog box, I mean …… really hate it …… so I customised mine:

Admob Dialog Box in the Android App

Some may think it looks worse and if you do then let me know, if you like it let me know, I personally don’t like it and have therefore acted on it.

Fin.

That’s it for now, I’m continuing development for it, finishing off the web services (it’s not paginated yet) and finish off the summary screen, but hopefully I’ll be able to release a beta of it sometime soon.

One thing I would really like input on is the app icon, I personally don’t like the one I’ve come up with, can any suggest anything better or alteration I could make to this one?

Admob Launcher Icon for Android

If you’d like to give it a go then please fill in the form below and I’ll e-mail you when I’m ready to release a beta build, after which I’ll delete you’re details :)

Admob Beta Sign Up Form

Notes from playing with Android’s Canvas

The first thing I couldn’t find quickly in the docs was that the top left corner is (0,0) and the bottom right is the canvas size (w, h).

The measured height of the canvas doesn’t necessarily equal the canvas size, what this means is that the canvas size shouldn’t be used for calculating positions, but the getMeasuredHeight() and getMeasuredWidth() should be.

One situation I has was I wanted to fill up as much space as possible but allow the containing linearlayout determine how much space I got by setting the weight to 1 for my custom view. However the onMeasure function can be overriden but will give a much larger space than is actually available. The way around this was to override the onLayout function and in this function I call setMeasuredDimension with my required size. The advantage of using this function is that the size is given depending on what the layout actually has available.

When drawing rectangles a sure fire way to not get your rectangle drawn is to have the top lower than the bottom coordinate. This is obvious when put like that but if you consider you’re just drawing a rectangle, left and right coordinates should surfice but in terms of implementation I imagine this restriction makes things easier.

Web Development on Maverick Meerkat

A new Ubuntu, a new update to my web development environment how-to, so lets get down to business.

I do a fair bit of web development for free lance work, project work and personal sites. Each time I upgrade my Ubuntu Distro I like to do a clean installation rather than upgrade which means settings up apache on my machine, but each time I forget about how I created my set-up. This is where I’m going to dump my knowledge of doing things, mostly for me, but some of you lovely people might find it a bit useful :-)

more…

Shotwell, sooo Close to Perfect, Yet so Far

Shotwell is by far the best photo management software I’ve used on linux, it far surpasses picasa with its easy to use interface, taking a similar approach to iPhoto for Mac OS X. The polish on the application is fantastic, something many linux application lack.

Screenshot of Shotwell running on Ubuntu 10.04

It offers publishing features for Facebook, Flickr and Picasa Web Albums, but alas this is where my own personal tastes and this little program go our separate ways.

Screenshot of the publishing options for Shotwell for Linux

One of the main problems I have, is the actual use of the publishing feature, it opens in a separate window (which is good) however while it’s uploading your photos, it prevents you from being able to do anything else. Simply put, they need to thread this as a user I can look through my photos while waiting for them to upload.

Secondly, there is no way to manage your uploaded photos within the Shotwell application, now I admit this is a pretty tall order as it requires a great deal of work to get this sort of integration, so I won’t argue over this too much.

But those two things aside, Shotwell is awesome and you should all be using, because nothing else compares to it,

Bossy Bear Turtle with the Brizzle License Plate

How-To: Get GTX460 Graphics Card Working on Ubuntu (10.04)

I’ve just upgraded my computer and with this came the multiple decisions of what to buy, followed by the nightmare of installing Windows 7 and then to be dragged into the problems Ubuntu is likely to face with up-to-date hardware.

A little part of me was hoping that Ubuntu would be able to handle it, but alas, there was a graphics card issue. However credit to Ubuntu for making everything else work out of the box (apart from the minor issue of SATA 3.0).

Anyway, to get to the point, this is how I got my GTX 460 (Gigabyte 1GB card) working under ubuntu:

1. To start off with I needed to install the x-update ppa, which can be done by going to System > Administration > Synaptic Package Manager then from the drop down menus go to Settings > Repositories > Other Software, click ‘Add’ and then paste in:

ppa:ubuntu-x-swat/x-updates

2. Close the repositories window and click reload, press mark all upgrades, and then do a search for ‘nvidia-current’, select this package and click apply.

3. After this is done reboot your computer (Note: perhaps bookmark this page before you do :-P ).

4. Now go to Applications > Accesories > Terminal and run:

sudo nvidia-xconfig

This will set up and x-org conifg file for you, do one last reboot to make sure everything sticks.

5. Run the nvidia settings program by going to Accessories > Terminal and typing:

sudo nvidia-settings

Screenshot of the NVIDIA X Server Settings Panel for Linux

Done, happy compizing.

Hacky Quantum Hack

My Slashdot RSS feed came up with the story of how an institution had hacked a Quantum cryptography system.

My first thought was, well that is pretty reasonable, you can read a quantum state without any real issue, the problem is Alice and Bob will be aware that you’re reading their conversation. But then this story went on to claim that the hack enabled them read the conversation without the other parties becoming aware. This goes against the entire reason why Quantum cryptography is considered to be perfectly secure, the minute a third party ‘Eve’ measures a Quantum state, the Quantum state becomes destroyed.

How did they do it? Well . . . . they didn’t.

The hack didn’t exploit a flaw in Quantum theory, but rather exploited a flaw in the systems making using of cryptographic technique. It’s an interesting read over at www.nature.com and I was surprised that this type of security was in use today (I believed it was still in its infancy, not ready for prime time quite yet).

Either way, Quantum states, in their weird quirky way, seem to be the way forward for security.

Lucid Lynx Web Development

I’ve been upgrading ALOT of my computers and virtualised machines to Ubuntu Lucid Lynx and the web development for them is pretty much the same.

The only difference is the default php error message setting, which know treats your install as a production install rather than a development install – Good for some, bad for others so here’s the simple fix.

Open a terminal and type in the command:

sudo gedit /etc/php5/apache2/php.ini

*Find the file with command: find / -name php.ini

In this file have a little hunt around for ‘display_errors’:

Then change:
display_errors = Off

to

display_errors = On

Save and close gedit. Done.

It’s been a while…

I haven’t been on the internet over the past week or 2 and this is purely because of:

  1. Finishing Thesis
  2. Celebrating the finishing of the Thesis
  3. Sorting out new flat
  4. Preparing for a presentation on the contents of my thesis

But the end of my student life is near, as of Wednesday evening I will be  finished with uni. But this is the start of some rather fun stuff.

I will start work with Mubaloo (The best smart phone development team anywhere!). I will also be able to fix some bugs in Facebook Sync and get started in furthering my knowledge of Android, helping out with Ubuntu One’s Android application with Mike, Start development of the Shot of Jaq app and some other projects I have been thinking about.

But I’m also hoping to get the Ubuntu power user’s community set-up, which at the moment I’ve stepped out of the lime light just to avoid temptation.

Along all of this, I hope to start re-designing my website, which needs a load of work to bring it up to web 2.0 standards, customise it for smart-phones and maybe even the iPad (Just to see what the best process is :-P ). This redesign will also include re-typing and setting up a number of tutorials for Android and Ubuntu. The main culprit is the Android Proximity Alerts which a number of people are having problems with.

Anyway, I’m still alive, I am still working hard and a number of new awesome things are about to start, I canny wait!!!

p.s. Be nice to your app developers

Change is just around the corner . . .

The new page design for Gaunt Face