Tuesday 31 December 2019

Privacy Policy

Effective date: December 31, 2019
Trailer ("us", "we", or "our") operates the Trailer mobile application (hereinafter referred to as the "Service").
This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. The Privacy Policy for Trailer has been created with the help of Privacy Policy Generator.
We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, the terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.

Definitions

  • Service
    Service is the Trailer mobile application operated by Trailer
  • Personal Data
    Personal Data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession).
  • Usage Data
    Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
  • Cookies
    Cookies are small files stored on your device (computer or mobile device).

Information Collection and Use

We collect several different types of information for various purposes to provide and improve our Service to you.

Types of Data Collected

Personal Data

While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to:
  • Cookies and Usage Data

Usage Data

When you access the Service by or through a mobile device, we may collect certain information automatically, including, but not limited to, the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data ("Usage Data").

Tracking & Cookies Data

We use cookies and similar tracking technologies to track the activity on our Service and we hold certain information.
Cookies are files with a small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Other tracking technologies are also used such as beacons, tags and scripts to collect and track information and to improve and analyse our Service.
You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service.
Examples of Cookies we use:
  • Session Cookies. We use Session Cookies to operate our Service.
  • Preference Cookies. We use Preference Cookies to remember your preferences and various settings.
  • Security Cookies. We use Security Cookies for security purposes.

Use of Data

Trailer uses the collected data for various purposes:
  • To provide and maintain the Service
  • To notify you about changes to our Service
  • To allow you to participate in interactive features of our Service when you choose to do so
  • To provide customer care and support
  • To provide analysis or valuable information so that we can improve the Service
  • To monitor the usage of the Service
  • To detect, prevent and address technical issues

Transfer Of Data

Your information, including Personal Data, may be transferred to - and maintained on - computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction.
If you are located outside Australia and choose to provide information to us, please note that we transfer the data, including Personal Data, to Australia and process it there.
Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.
Trailer will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information.

Disclosure Of Data

Legal Requirements

Trailer may disclose your Personal Data in the good faith belief that such action is necessary to:
  • To comply with a legal obligation
  • To protect and defend the rights or property of Trailer
  • To prevent or investigate possible wrongdoing in connection with the Service
  • To protect the personal safety of users of the Service or the public
  • To protect against legal liability
As an European citizen, under GDPR, you have certain individual rights. You can learn more about these guides in the GDPR Guide.

Security of Data

The security of your data is important to us but remember that no method of transmission over the Internet or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.

Service Providers

We may employ third party companies and individuals to facilitate our Service ("Service Providers"), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used.
These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.

Links to Other Sites

Our Service may contain links to other sites that are not operated by us. If you click a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit.
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.

Children's Privacy

Our Service does not address anyone under the age of 18 ("Children").
We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your Child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.

Changes to This Privacy Policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.
We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

Contact Us

If you have any questions about this Privacy Policy, please contact us:
  • By email: tl.trailer.help@gmail.com

Saturday 21 July 2018

Not dead, only pining for the fjords

Although it's been a long time since I last posted here, the project isn't completely dead.  I'm still interested in it, I still don't think it's good enough to publicize to my civilian (i.e. outside the software profession) friends, but I'm still trying to get it up to that standard.

Over the time since the last post I have kept on quietly chipping away whenever free time, energy and ideas came together in the right way, and there is some progress to report, specifically:

  • The iOS app has been brought up to date with the latest XCode relatively recently, and is no longer in danger of dropping out of the App Store due to its age.
  • No specific work on the Android app, but it's still available in the Play Store.
  • The Australian Taxation Office wrote to me that they proposed to withdraw my ABN (i.e. registration as a business) due to inactivity, but accepted evidence I sent them that there was activity even if no revenue at this stage.  This is important to the project because an ABN is required to sell non-free apps in the iOS app store for an Australian-based developer like me.
  • I've decided that the Google App Engine platform isn't the future in relation to the web application for editing .tqz files consumed by the mobile apps, and have started work on a new Django-based application, some of which can be seen at http://tl-experiments.7e14.starter-us-west-2.openshiftapps.com/ (source at https://bitbucket.org/tim_littlefair/openshift-django-1, but I'm definitely going to have to do something about the current awful project name).
  • I've also done some work on using Google Places Search API at the to populate an initial set of places when a user starts on a .tqz file (source at https://bitbucket.org/tim_littlefair/trailer-google-places-recommender).
One issue I am dealing with at the moment is Google's recent move to require billing to be enabled on applications using their Maps and Places APIs.  Although they still provide very generous free quotas, I'm a bit nervous of providing them debit card details because I don't want to have to keep checking that the project isn't running up costs in excess of its projected revenue (realistically, expected revenue is zero for the foreseeable future).  For this reason, I'd prefer not to provide a payment method until I am absolutely forced to.  The Python-based -recommender code mentioned above still seems to work today despite the fact that I haven't enabled billing or provided a payment method for the credentials it uses, I'd be interested in hearing from other developers whether Google are actually backing their declared intent in this area up with action to deny service on credentials which don't have billing fully enabled.

Beyond that nothing to report except that the motto of the project is still 'whatever it gets' (see the third paragraph of the previous post from November 2013).


Saturday 2 November 2013

Version 1.3.0 of the Trailer iOS app released, more changes coming soon

I've just had confirmation from Apple that version 1.3.0 of the Trailer iOS app is now available in the app store.

This version doesn't add much new value, apart from being a rebuilt against the iOS7 environment and updating the version of the analytics library from Flurry which is in use, as the old version relies on a unique id API which Apple have removed in iOS7.

I realize there's not been much happening for a while, this has been due to work and other commitments depriving me of time to work on it.  Readers in the software industry may be familiar with the phrase 'whatever it takes' in relation to development processes in our day jobs.  The current project runs quite differently, 'whatever it gets' is a better description.

I'm afraid the web application for generating trails isn't presently working, but I am hoping that I will manage to get it working again (and in a better and more useable state) within the next few weeks.  In the mean time, if you're interested in reading back through the blog entries you are welcome, and the code-based method of creating trails should still be working fine.

I hope I'll be able to post something more interesting soon.

Monday 1 April 2013

Problems with the intent filter in the Trailer application for Android

As I wrote in my previous post, I had some trouble setting up an intent filter which worked for the Trailer Android application.  In my initial release, v1.0, I found a way of creating an intent filter which made the Trailer app handle .tqz files when sent as email attachments, but I found that this filter was too permissive, and Trailer also finished up being offered as a handler for lots of other kinds of content.

I've now released an updated version v1.0.1 which has a filter which I regard as correct (but with an important disclaimer which you will be able to a few paragraphs later in this post).

During my research on this topic on the internet, I could see that I was not the only person having problems with this particular aspect of Android development.  The Stack Overflow site contained quite a lot of material on the topic, but I didn't find any of the recipes there worked quite the way I expected, although when I finally worked out what was going wrong the material I had read on SO started to make sense.

The final filter I decided to use looked like this:
    <activity android:name=".TrailerMainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="file"/>
        <data android:scheme="content"/>
        <data android:scheme="http"/>
        <data android:host="*"/>
        <data android:mimeType="application/tl-trailer"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="file"/>
        <data android:host="*"/>
        <data android:mimeType="*/*"/>
        <data android:pathPattern=".*\\.tqz"/>
      </intent-filter>
    </activity>

This fragment has three intent filters, of which the first one is related to launching the application from its icon on the Android desktop, the second one relates to launching in a context where a MIME type is available, and the third one relates to recognition of the .tqz file extension once a file with that extension is available on the device.

I am now convinced in my own mind that the configuration above is a reasonably correct one (not necessarily the only configuration which would work). Unfortunately this configuration does not presently work in the Gmail application provided with my Android device (a Nexus 7 running Android 4.2.2), but it does work in the Email application. According to this issue in the Android Open Source Project bug database, I'm not the only person who thinks this is a bug in the Android Gmail application, but the response on the issue from the developers is to refer the poster to the Google Mobile application forum, which doesn't seem to have a publicly accessible bug reporting interface, and may mean that there is not much hope of a resolution from Google any time soon.

Anyway, please feel free to try out v1.0.1 of the application, but don't expect .tqz files received as email attachments under the Gmail app to be automatically handled by Trailer.  My recommendation is to use the separate Android Email application instead.

Trailer application for Android updated

I've just released an updated version of the Trailer application for Android&trade;.

The purpose of this new application is to introduce a change to a part of the Android application configuration called the 'intent filter'.  Android applications have a configuration file called 'AndroidManifest.xml' which, among other things, controls the conditions under which applications are launched when attachments they can handle are received over the web, email etc.

When working on the original application version, I had a lot of trouble setting up an intent filter which worked as I wanted, e.g. when an email contains an attachment which has a filename ending in '.tqz', the Android operating system should provide the Trailer application as one of those which are offered
to handle the file.  In the end, I found a combination which worked, but after release of v1.0 I discovered that the filter was a bit too permissive, and the Trailer application was being offered to handle a wider range of things than was intended (including all emails).

Anyway, the new release is intended to fix this, please contact me if you are having problems with it.

I suspect that the problem I was having may not just affect me, so I plan to write up a technical description of the fix I have come up with in case it is useful to other people.

Sunday 17 March 2013

Differences between the Android and iOS versions of Trailer

The Android version of the Trailer mobile application is designed to display user-created annotated maps defined in the same .tqz format as is used in the iOS version. An example of this format has previously been provided in this post.

The Android application allows the user to do the same things on the map as the iOS application, but provides a user interface which fits in with the Android way of doing things.  One difference is that if a map includes a message (not a URL) associated with a zone, on iOS this will be displayed in a new page, whereas in the Android version the message is displayed in the info window which pops up when the zone is clicked.

The Android application has been developed and tested on a Nexus 7 tablet, and the parts of the iOS behaviour associated with providing background notifications when zones in the current trail are entered have not yet been implemented.  I welcome comments from users in relation to whether this feature is considered useful: from my point of view, I find background notifications linke this make a lot of sense from a phone, but less sense from a tablet.  Of course the application is available for use on Android phones as well as tablets, so I do provide to add this behaviour eventually, but it will probably not become a priority unless I get a sense of a significant number of users of the application who feel that the feature is worth having.

One other difference, which also relates to the automated detection of movements across zone boundaries, is that the Android application does not automatically zoom to fill the screen with a zone when a movement into that zone is detected.  Instead, zooming in on zones is achieved by clicking on the zone (which also brings up the info window with the zone details).  Clicking a second time on a zone which has already been zoomed in will result in the map zooming out to cover the entire trail. Again, comments from users are very welcome, but my present opinion is that the automatic zooming behaviour presently implemented in the iOS application is potentially annoying, and I am considering removing this behaviour in the next iOS application release in favour of allowing the user to request zooming in or out by a click, as the Android application does now.


Saturday 16 March 2013

Trailer application for Android released

I've just released an initial version of the Trailer application for Android™ mobile devices.
The Google Play™ link is https://play.google.com/store/apps/details?id=com.blogspot.tltrailer.androidapp.

The Android app accepts the same .tqz file format as the iOS application, and is similar in spirit but has some differences in behaviour.

I'll write more about how the two apps compare in the next few days or weeks.

Android and Google Play are trademarks of Google Inc.


Sunday 24 February 2013

Version 1.2.1 of the Trailer app for iOS available

A new version of the Trailer iOS application is now available in the iOS App Store.  The link for the application (using Apple's new URL scheme for iOS applications) is http://appstore.com/tltrailer.

This version is a bugfix release to v1.2 (which was not announced here because of the bugs
which were discovered shortly after release and are fixed in v1.2.1).

The main changes in v1.2 were largely as a result of user feedback:
  • The application user interface has been rearranged so that the user starts in the list of trails instead of starting in the welcome/help web page.  The web page is still available from the 'About' button at the top right of the trail list page, and was rewritten.
  • Changes have been made to the way background location tracking works to address reported problems with the application draining the battery.   The application is now very aggressive about only using background location tracking periodically for long enough to get a good fix, then turning location tracking off for a variable period which is calculated using the nearest notifiable zone border and a presumed walking speed.
The application also has a settings page which allows following configuration parameters to be set:
  • Parameter 'background location tracking time limit' allows the user to control the maximum length of time for background location tracking to be kept on if no new zone border is reached.  By default this is set to  30 minutes.
  • Parameter 'Diagnostic logging enabled' controls whether the application sends diagnostic events via the Flurry analytics library which relate to the operation of background location tracking and include exact location fix details.  This option is set to 'Disabled' by default, in this state the application still sends some analytics events, but none which include GPS-level location data. 
I am very happy to receive user feedback.  The offer I made some month ago to send an App Store redemption code to allow a free copy of the app anyone who sends me an email request still stands.


Thursday 14 February 2013

Google code scripts for creating .tqz files now also generate .gpx files

A short while ago I checked in a change to the google code project which provides example Python code for building files in the .tqz file format required by the Trailer iOS program.

This change enhances the example code so that as well as generating the .tqz (as used by the Trailer iOS application), it generates a .gpx file, which which can be used during Xcode debugging sessions to provide a feed of synthetic location events which simulate moving between the zones covered in the generated .tqz file at a speed which can be adjusted in the source code.

In theory, these scripts could be used or adapted for generation of .gpx files for use in development/debugging/testing of other iOS apps.

I'd welcome comments on whether anyone would be interested in having a similar feature added to the tl-trailer web application.

Sunday 27 January 2013

The .tqz file format example

The .tqz file format used by the trailer program is a form of XML.  Recommended encoding is UTF-8.
The following text is a shortened version of the file which is used to define the trail for Barcelona which is one of the four built in to the application:

<?xml version="1.0" encoding="utf-8"?>
<tw1>
    <tw1_plaintext description="Places of interest (mostly related to Gaudi and other architects and artists)." locality="Barcelona, Spain" mode="1" version="1">
        <zone address="PARC MONTJUÏC" name="MNAC">
            <coordinates latitude="41.3676819" longitude="2.1540772" radius_metres="250"/>
        </zone>
        <zone address="08038" name="Fundacio Joan Miro" url="http://fundaciomiro-bcn.org/">
            <coordinates latitude="41.3681130" longitude="2.1600900" radius_metres="250"/>
        </zone>
        <zone address="08038" name="Pavello Mies Van der Rohe">
            <coordinates latitude="41.3705850" longitude="2.1499300" radius_metres="250"/>
        </zone>
        <zone address="Provenca 261-265" name="Casa Mila" url="http://www.lapedrera.com">
            <coordinates latitude="41.3952913" longitude="2.1620618" radius_metres="250"/>
        </zone>
        <zone address="Pg Gracia" name="Casa Batllo">
            <coordinates latitude="41.3930617" longitude="2.1637884" radius_metres="250"/>
        </zone>
        <zone address="Portal de la Pau" message="Monument to Christopher Columbus" name="Mirador de Colon">
            <coordinates latitude="41.3761141" longitude="2.1777053" radius_metres="250"/>
        </zone>
        <zone address="C/ Montcada" name="Museu Picasso">
            <coordinates latitude="41.3851630" longitude="2.1807439" radius_metres="250"/>
        </zone>
        <zone address="C/ Joan d'Àustria" name="Parc de Ciutadella">
            <coordinates latitude="41.3957639" longitude="2.1879312" radius_metres="250"/>
        </zone>
        <zone address="Carrer Nou de la Rambla" name="Palau Guell">
            <coordinates latitude="41.3791929" longitude="2.1744567" radius_metres="250"/>
        </zone>
        <zone address="C/ Mallorca" name="La Sagrada Familia">
            <coordinates latitude="41.4033729" longitude="2.1739170" radius_metres="250"/>
        </zone>
        <zone address="Carrer d'Olot" name="Park Guell" url="http://www.barcelona-tourist-guide.com/en/gaudi/park-guell.html">
            <coordinates latitude="41.4134000" longitude="2.1530000" radius_metres="250"/>
        </zone>
        <zone address="Av Marquès de l Argentera" name="Barcelona Franca Station">
            <coordinates latitude="41.3844859" longitude="2.1850869" radius_metres="250"/>
        </zone>
        <zone address="08014" name="Barcelona Sants Bus Station">
            <coordinates latitude="41.3795172" longitude="2.1386865" radius_metres="250"/>
        </zone>
    </tw1_plaintext>
</tw1>