2018/06/30
Top tips for refreshing Android skills with the Little Miracle prototype
2018/03/29
Changing teams at Google
To make things more interesting I will be starting out with an older version of Android (Nougat) and migrating my app to new versions. At the same time I will migrate the app from Java to Kotlin.
In order to make things as real as possible I will be creating an app in a very competitive space (pregnancy tracking) and launching it on the app store. As I go I will share useful resources and guides that I tried to help me.
Hello World
- Install Android Studio.
- Developing Android Apps (fundamentals) on Udacity.
- Kotlin for Android Developers on Udacity.
- Android Fundamentals on the Google developer site.
- Android Developer Fundamentals
2017/02/15
Redeploying Rediscover.Work to Save Money Part 2
Migrating to Google App Engine was more straightforward than trying to rebuild my environment and meant I had to change a few things in my setup.
- Unable to update app: Class file is Java 8 but max supported is Java 7: Don't forget Guava, only versions of guava up to 20 are supporting Java 1.7
- The app config version isn't the SDK version, it is like the AWS build version and can't contain '.' periods so version 0 it is.
- Downloading the database is a pain in a server-less environment as AWS only supports binary snapshots. But fear not, a bit of ssh / yum / security group manipulation and the download is done in about 20 minutes.
- Deploy a new SQL instance in the cloud console: Note you need to include the create database or use the advanced options to specify the database to import your SQL to.
- Then hit a brick wall "You can't have any JDBC database with Google App Engine." due to "java.lang.management.ManagementFactory is a restricted class". This is a slight misnomer, it is creating threadpool connection pool resources which is prohibited.
- In steps a non threaded connection pool: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Plain_Ol'_Java
- More security errors: setProperty.networkaddress.cache.ttl
- Moved to Google SQL driver "com.mysql.jdbc.GoogleDriver"
- ERROR: (gcloud.beta.sql.connect) HTTPError 400: Invalid value for: Invalid format: "2017-02-16T20:01:08+00:00" is malformed at "+00:00"
2017/02/12
Redeploying Rediscover.Work to Save Money Part 1
At the moment one of my side projects which I want to keep alive is Rediscover.Work. It is currently hosted in AWS using Elastic Beanstalk and RDS. This made sense at the time when I was trying to get the site up quickly. Now that the project is no longer funded though it is time to do a bit of belt tightening.
As with any project it is worth looking at different options for how it could be deployed. There were never more than there are now:
* AWS Elastic Beanstalk + RDS. Current running cost of around $96 per month. + Easy install. - Cost.
* AWS Lambda + RDS. + Simple scaling. - Migration costs are prohibitive.
* EC2 Instance: $9.52 according to the price calculator. + Already have needed tools - More admin to manage instance personally.
* Google App Engine and Cloud SQL: $8.01 according to the price calculator. + Ease of mantenance and app engine security scanning. - Migration to app engine layout.
As I already have all the tools needed to create the EC2 Instance solution and it requires the minimum investment in tooling I chose to go down that route first and see how things played out. In part 2 of this blog I will see how hard it is to migrate to app engine as this seems like a better solution for the long term.
Workflow:
- Build dependencies and update dependency versions using
mvn versions:display-dependency-updates
- Package the code into a WAR to be deployed on the new shared EC2 instance.
- Launch a new instance which will run the site and database.
- Start hacking ansible (and loose the will to live due to so many issues with config).
- Stop.
2017/02/11
Wine Tasting at Majestic Camden
2017/02/08
Living with Android 4.* on Samsung S3
2016/09/23
Discovering The Beauty of Tuscany in Italy
2016/05/31
QA for the Customer
Some time ago I had the chance to work wuth a development team which had separate QA resource. The team was working in the standard "over the wall" mentality. Developers do stuff, QA engineers pick it apart and so on.
I heard a phrase which really gave me pause:
"QA is working on behalf of the customer"
This sounds great, the QA engineers really take ownership of thinking about the customer. What does it say about the development team motives? Aren't they thinking about the customer?
In the teams I have helped shape I have always avoided dedicated QA because I suspect it creates an environment where people defer responsibility. On the other hand it might mean that a stretched development team can roll out faster as they can rely on QA to catch the issues. That might sound plausible but in the world of ever accelerating deployment can manual testing really keep up?
2016/04/19
Recruiting Full Stack Developer
I recently joined www.parktechnology.com as the CTO.One of the great pleasures of my role is to start hiring a technology team. The first role we are trying to recruit for is a 'Full Stack Developer'. We will also be hiring for Android and IOS developers too so watch this space.
UPDATE...
We were really lucky to be able to find two really strong candidates who have a wealth of experience. Exciting times!
Blog Draft Ratio: Should We Publish Everything
2016/03/13
Random Damage
One of the hardest things to rationalise are random acts. Today I found someone had pushed my motorbike over. Unfortunately there was quite a bit of damage. I still need to strip down the rear fairing which is cracked, but the damage already stands at over £350.
With insurance premiums spiralling and excess now nearly half the value of the bike, maybe it is time to let it go. You just can't keep anything nice.
2016/01/19
How to Apply Sales CRM to Job Hunting
- Attending conferences and fairs.
- Researching top companies via lists from sites like glassdoor and the guardian top graduate employers lists.
- Through my network trying to identify potential companies.
- Introduction Email.
- Initial Call.
- Send CV.
- On Site Interview(s).
- Proposal Meeting.
- Offer Review.
- Accepted.
2016/01/15
Fix Found for Foundation 5 Syntax error unrecognized expression
Uncaught Error: Syntax error, unrecognized expression: [data-'Times New Roman'-dropdown]
Then check out this solution from http://jelaniharris.com/2014/fixing-foundation-5s-unrecognized-expression-syntax-error/
2016/01/14
Installation Issues of Ubuntu 15.10 and 14.04 on Lenovo X1 Carbon
- Unable To Find A Medium Containing A Live File System
- ACPI PPC Probe failed
2015/12/31
Which is the next hot technology for full stack developers?
- React / Go / Mongo : MGR
- React / Node / Mongo: RNM
- Angular / Ruby / Mongo : MRA
- Ruby / Rails / Postgres : RRP
- Foundation
- Bootstrap
- Backbone
- Angular
- Ember
2015/12/23
Ansible Destination Not Writable
This is a quick blog post FYI in case you are searching for error messages like:
msg: Destination /etc/mysql/my.cnf not writable
2015/12/17
The Three Stages of Software Design Evolution
JFDI: Hack, Ship, Hope
Ask a Friend
- Searching the internal repos for a working solution (yes code can be re-used).
- Internal forum activity.
- Engaging a more experienced engineer. We all need coffee breaks.
- Finding the coding standard for your team and seeing what the normal design pattern usage is.
Defining Norms
The past, like the future, is indefinite and exists only as a spectrum of possibilities. - Stephen HawkingThere can at times simply be too many possible ways to solve a problem. Design patterns can help but they some times contradict each other. In order to be able to 'get things done' some times the best thing can be to have a standard way which means you can get started then discover along the way the problems you still don't know about. This idea works well with the concept of tracer code.
Defining Exceptions
2015/12/16
Sales University
In a previous post I mentioned the sales training from Rod Sloane which I attended at Google campus. My goal was to brush up on my sales skills to support a few projects I am working on at the moment.Coffees for closers
Predictable Revenue
To Be Read (Not all directly sales)
- Delivered: the no nonsense guide to email marketing
- 79 network marketing tips for fast track success
- Sell them the pen
- The little fish guide to marketing
- Bootstrap marketing: 101 tips for marketing on a budget
Other Events
2015/11/12
Web Summit 2015 with Upgrade Digital
Web summit has become famous due to Uber raising so much funding during a chat in the pub but it has perhaps gotten too large.
The first night summit was very popular and there were a lot of great conversations but what became apparent was that there were a very large number of startup companies attending.
If you go to Dublin I strongly recommend going for a whisky tasting session at the temple bar. The bar staff are very knowledgeable and extremely friendly.
Oh, and there are some great places for live music too, whether you are looking for traditional folk or more rock covers.
2015/11/01
SSL Test Certificate Bleed
Many of the people I have worked with will know of my distaste for self signed SSL certificates in test environments. Once you have built a tool to generate and distribute these 'cruft' flakes they invariably spread. The worst case scenario is if these certs end up in your production environment. The real question to ask is will developers take the path of least resistance and skip SSL validation.
I have always advocated using genuine certificates for all build environments. This approach is usually resisted with the vigor of a grad dev defending his favourite language. I don't know why. With a little planning it is easy to use a subdomain, with implementation costs typically in the double digits per year. Usually the argument has more to do with resistance to fixing something that 'works'.
The recent news of symantec accidentally releasing test certificate is a really good counter case. This is one test environment that really should use a self signed cert. The Web needs security and the certificate issuance companies could be the weakest link.


























