Sunday, November 5, 2017

'You Cast' Working Again

Our app 'you cast' experienced a crippling issue earlier this year whereby it just started playing the sound but no picture. This was caused by a chromecast firmware update that didn't seem to play nice with our method of casting videos.

As the 1 star reviews started piling up I spent a lot of time trying to get around this issue. I tried two main main methods:
1. Analysing LAN traffic with wireshark created by android apps which use the official chromecast API.
2. Scouring the web for various open source projects which claim to allow users to cast using the latest chromecast protocol but without using the official API. Most of these were node.js projects on git hub which never seemed to actually cast anything. The closest I got was with this one which connected to my chomecast but then crashed when I actually tried to cast a video.

After quite a few roadblocks other priorities got in the way and I basically gave up. The little bit of advertising revenue we'd been making didn't exactly seem worth the hassle.

However recently I noticed my chromecast device received a firmware update. I tried 'you cast' out and sure enough it is now working again. Last week I made a minor fix to the app and published it to the store just so that users are aware its working again.

Oh well, glad its fixed, and at least I'm an expert in node.js now.

Saturday, December 3, 2016

Our new app 'You Cast' is out

This month we released our latest app 'You Cast'.  This was one app I basically built for myself.  I almost exclusively watch TV through my Chromecast device these days.  Mostly I do this through my android phone or tablet or via a laptop.  However sometimes my wife's 640 XL running Windows Phone 8.1 is the only thing handy.  Unfortunately google have not provided any official chromecast api support for windows phone 8.1 and Windows 10 apps. 

Frustrated by the inability to cast videos from this device I set about creating an app that would fill this void. 

This involved quite a bit of research, wire-shark network traffic analysis and trial and error but after few weeks of effort I was able to produce an app that allows you tube videos to be cast from windows phones. 

So far the response has been pretty positive.  It took a few weeks before it showed up in the store but as of last week the acquisitions grew from basically none to over 1000. 

I have included a banner ad at the top of the app.  So far the ad impressions seem pretty steady. I use pub center as my paid network and ad duplex for affiliate advertising,  See ad duplex graph below.

Anyway regardless of whether it makes any money this app has served its purpose by giving me another device to cast videos with.  If you have any feedback or feature request leave a comment or send us an email/tweet.

Thursday, July 7, 2016


There has been a lot of hype around microservices over the last couple of years.  I've been doing a fair bit of research and experimentation with this architecture and in my opinion the jury is still out. 

I believe that for the right project they can be well worth it.  Having independently deploy-able, language agnostic services that can be tested in isolation definitely has the potential to scale well.  This will also add much needed flexibility that is lacking in many complex systems. 

However for many projects this architecture will introduce significant real world challenges including:

Code Reuse: When I started looking into Microservices the following question kept coming up "Where should I draw the line between having shared class libraries vs moving common code into a new shared services?"

Shared class libraries are frowned upon by many purists because it goes against the independence paradigm of microservices and will thus reduce some of the benefits of having services that are truly decoupled .  However not having a shared class library is likely to result in significant refactoring of code when logic that should of been shared is moved from one service to another.  This has the potential to be expensive and may result in many other interdependent services being affected. Obviously this kind of problem exists with non-microservice architectures however changing a class library, compiling and then fixing every compilation error as well as using built in refactoring functionality in IDE's such as Visual Studio is likely to be easier than refactoring services across a varied technology stack and having to rely on excellent unit test coverage to ensure everything is picked up.

 As is often the cases with tight deadlines and limited budgets there will be cases where moving common code into a new service becomes too costly and/or risky and developers will end up redundantly replicating code which breaks the DRY design principle and will reduce the overall maintainability of the system.

Debugging: It is likely to add complexity to debugging when a developer needs to step through code across independent, queued, services calls through logic that is implemented in a variety of technologies.

Language Agnostic: One of the commonly spruiked advantages of microservices is that they are language agnostic. However without careful consideration this can lead to the creation of a very complex technology stack.  This may make maintainability an issue because software currency upgrades and patches will become more complex and because finding experts who have experience with a varied technology stack become more difficult to find.

Version and Deployment Control: This one is pretty obvious.  It can be difficult enough trying enforce consistent and understandable version numbering accross an n-tiered application.  Try having hundreds of services and multiple persistence repositories and this can get very confusing and difficult to control.

Refactoring: Undoubtedly deciding when to create a new service, merge two or more services, or split existing services into multiple services will be a relatively common occurrence.  This will have a cost because merging or splitting services could result in hundreds of services and potentially thousands of test cases being significantly affected.

So in summary, microservices architecture certainly has some advantages but it will work best when some very careful guidelines and standards are put in place across a project team to address some of the issues I've detailed above. 

Thursday, May 5, 2016

Location services shortcut

We've recently released a new android app 'location services shortcut'.

It allows users to quickly navigate to the location services setting on their android device simply by opening the app.  As location services is often a major battery drain, and because of privacy concerns   many users may want to turn off this setting except when they specifically need it for navigation purposes.

This app is mostly targeting older android versions as well as certain ROMs and OEM versions where location services is not available as a shortcut in status/notification bar.

You can download 'location services shortcut' for free from the Google play store by clicking here.

Tuesday, August 4, 2015

Saturday, April 4, 2015

New versions of 'Cricket Updates', 'TimeZone Converter' and 'Convert My Units' Released

Over the Easter long weekend we've taken it upon ourselves to catch up on a few outstanding updates.  They are as follows:

Cricket Updates v1.1
I fixed a "loading screen of death bug" that was occurring sometimes when the live scores web service we use was having issues.  From now on; if any of the web requests fail this is detected more quickly, the progress bar is hidden and a nice error message is shown in the appropriate section of the app.

TimeZone Converter v1.4
The 2 major complaints I see in the comments about this app are:

1. Why can't the app just remember the 'from' timezone that I inputted last?  When I created and was alpha testing this app I was travelling a lot and found it annoying that the 'from' timezone always remembered my last choice.  I instead thought it would be much nicer if the 'from' timezone was automatically selected based on the phones location.  However judging by the comments and emails I've received; our users seem to disagree.  Therefore I have just updated the app to always remember the 'From' and 'To' timezones.  Note: In a future update I might make both options configurable.

2. Why do I have to look for cities with the timezone I want, I just want a list of generic timezones?  As some windows phone and windows RT devs may know the full .net timezone functionality is not included in the cutdown API we have to work with for mobile devices.  To get around this limitation we have downloaded the zoneinfo api and converted it for the compact framework.  For more info about how we did that check out this post from 2012.  Unfortunately all the generic timezones seemed to be wrong when I used this API.  At the time instead of fixing the problem I decided to just remove them from the app as I was on a tight schedule. This decisions has led to so many complaints from users who complain that their city is not in the list and they just want to select a generic timezone.  So finally yesterday I decided to start investigating the issue.  I was able to find a pattern in the problem and managed to write an adapter class that identified erroneous records and overrode them.  However on further inspection I discovered that the problem was not in the API but was related to some bad data in the etcetera.dat file that is included with the zoneinfo api.  After seeing that I just fixed the data up and threw my adapter class away.  So now we have a new section with the heading 'etc' which includes a list of generic timezones (see screenshot below).

I'm sure the Americans will still complain that I haven't included specific rows for Pacific Time, Central Time, and Mountain Time etc; but unfortunately those values are not 'out of the box' entries in the tz database.  At least this should be a step in the right direction and I plan on adding that functionality in my next update.

Convert My Units v1.3
As this unit converter also converts timezone in the same way as TimeZone Converter I have applied the above fix ( detailed in issue 2) to this app as well.