Profile

Cover photo
Dandre Allison
Works at HotelTonight
Attended Pomona College
258 followers|261,101 views
AboutPostsCollectionsPhotos+1'sReviews

Stream

Dandre Allison

Shared publicly  - 
 
 
The video of my Droidcon NYC talk is now up. In it I go through a number of examples of how and why to build meaningful motion into your apps.

Unfortunately the slides in the video are static so i'd recommend checking out the slide deck here: j.mp/animatable-slides (which also has notes in the ℹ️ field).

#AndroidDev #AndroidDesign
2 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
A back-port of transitions was quietly released with Support Lib version 24.2.0 a couple of weeks ago.
Which is pretty cool.

I wrote this article to show how you can use it.

https://medium.com/google-developers/transitions-in-the-android-support-library-8bc86a1d688e
3 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
There were a lot of great announcements at #io16 but a small gem from the Support Lib talk was the ability to create more succinct AnimatedVectorDrawables using a new XML bundle format.

Previously to create an AnimatedVectorDrawable you would need at least 3 xml files to specify it:

1. A VectorDrawable you're going to animate.
2. One or many Animators to run.
3. An animated-vector definition, essentially tying the drawable and animator(s) together.

The new bundle format lets you specify this in a single file. Here's an example:

https://gist.github.com/nickbutcher/53e5d0f8cbd9e0b5b7687c9e8cb6e8b1

Notice the aapt namespace and usage; at build time, aapt will create the separate resources for you (1 & 2 in the list above) and reference them in the animated-vector. This requires Build Tools 24+ (currently in RC) but the output is backward compatible.

#AndroidDev
3 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
We blogged about Retrofit 2.0 and talked about difference we made when switching from Volley. Sharing here if anyone found it useful.

http://engineering.hoteltonight.com/migrating-to-retrofit
When you work in a codebase that is a few years old and has plenty of code from before any of your current team members joined, you want to be conservative about the scope of changes you make in one feature—especially when that “feature” doesn't add value to your product or get noticed by your ...
2 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
Unique Identifiers: There’s a better way with Instance ID
Pro-tip by +Joanna Smith

There are plenty of reasons you’d want to track your app on a device. But unless you’re a wireless carrier, I’m willing to bet that what you really want is to track installations. Because if you’re focusing on the device, you’re doing it wrong. After all, if I factory-reset my tablet and give it to my sister as a hand-me-down, and then she also installs your app, that is a different user story.

One example of being device-focused is using MAC addresses, since they are globally unique and persist across factory resets. But they clearly aren’t great for user identification (see my super-nice sister gift above) and now you’ll find that on Android 6.0, there is no programmatic access to either Wi-Fi or Bluetooth addresses.

And now, I’d like to direct your attention to the Instance ID (https://goo.gl/GheDzP), which provides a unique identifier for each instance of your app, enabling you to identify and track your app instances around the world. Which solves the problem of all those super-nice sisters out there.

But the Instance ID API can also generate security tokens that can authorize third parties to access server-side resources, like sending messages with Google Cloud Messaging. With the help of the Instance ID service (https://goo.gl/LyLlYp), it can verify the authenticity of apps distributed through Google Play, so that your server can trust this Android client. And the Instance ID service can even tell you if the app device is active, which will help your app make decisions about whether to re-engage with users. If the device hasn’t been used in a month, maybe you don’t want to bother with that push message.

If you prefer to manage your unique identifiers in your own way, might I recommend a GUID (globally unique ID)? They are simple to make, if you use the UUID Android API (http://goo.gl/jeEaWy) and call randomUUID(). You’ll need to store it yourself, in internal storage, to protect the GUID across applications.

One of these two options will probably solve the majority of your needs, but there are a few special cases. So I have more recommendations for you!
+For user profiling and ads, use Advertising ID (https://goo.gl/Z1pmhY).
+For content protection, check out the Widevine/DRM Plugin (https://goo.gl/cvT0W2).
+For abuse prevention, go with the SafetyNet API (https://goo.gl/SxxRyG).
+And if you are actually trying to do telephony, then do not let me get in the way of your IMEI. You do you.

#BuildBetterApps
12 comments on original post
1
Add a comment...
 
Looking at the Call.cancel() method, and I'm observing that the way it kills the socket causes other consequences. For example, it causes the Callback.onFailure() to trigger in a manner that looks like there was a connection error. This triggers connection failure messages to display to the user.

Call.cancel() also seems to be causes requests of the same endpoint to fail (an example is we have a query field that searches as user types in input, type "que" -> request "que" -> type "quer" -> cancel request for "que" -> start request for "quer". It seems that canceling the "que" request was causing problems for the "quer" request as well. 

What cancel seems useful for is to stop a request that is no longer needed, so the downstream app should no longer be waiting for callback from it.
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
Use a Nexus or Artifactory instance at your company for hosting/proxying dependencies? I wrote a script which synchronizes all of the artifacts from your local Android SDK to a remote repo of your choice.
sdk-artifact-sync - A script which synchronizes all of the artifacts in your local Android SDK to a remote Maven artifact host.
9 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
A powerful, yet controversial part of Android development.

In this talk from +360|AnDev, take a journey through the fundamentals of Fragments, and learn how to leverage them with David Hope.
Take a journey through the fundamentals of Fragments, and learn how to leverage them in your Android apps.
3 comments on original post
1
Add a comment...

Dandre Allison

Shared publicly  - 
 
Dandre Allison originally shared:
 
Example RemoteConfig configuration. Looking at it as a replacement for a configuration API we have
3
Add a comment...
 
We're finding a few issues migrating from beta2 Retrofit 2.0 to the release version. The first thing we found is that the Callback interface no longer gets a Retrofit reference, which was needed to parse Error response bodies. That change means that now, our calling code needs to get the API interface and the Retrofit object to make API calls. Wondering why that was changed.

Second, BaseUrl was was dropped, but we were using it to delay resolving the URL, so we can change it dynamically. Wondering how to handle that in its absence.
2
Add a comment...
 
We blogged about Retrofit 2.0 and talked about difference we made when switching from Volley. Sharing here if anyone found it useful.

http://engineering.hoteltonight.com/migrating-to-retrofit
When you work in a codebase that is a few years old and has plenty of code from before any of your current team members joined, you want to be conservative about the scope of changes you make in one feature—especially when that “feature” doesn't add value to your product or get noticed by your ...
8
10
Aleksander Piotrowski's profile photoRian Yulianto W's profile photo
2 comments
 
why retrofit not add retry features like this as default.... -_-
Add a comment...

Dandre Allison

Shared publicly  - 
 
 
New in Android Samples: Authenticating to remote servers using the Fingerprint API

Nobody likes typing in passwords, especially on mobile phones. But we’ve got the cure for the password blues in this week’s Android samples release.

Join us as we take a deep dive into Android 6.0’s new support for fingerprint sensors (like Nexus Imprint). We’ll show you how the Fingerprint API interacts with the system’s hardware keystore and how you can add secure fingerprint authentication to your app’s client- or server-side code.

#Marshmallow

http://goo.gl/vGVIVX
5 comments on original post
1
Add a comment...
Dandre's Collections
Education
  • Pomona College
    Computer Science, 2007 - 2011
Links
Contributor to
Work
Occupation
Android Developer at HotelTonight
Employment
  • HotelTonight
    Android Developer, 2014 - present
  • Keep and Share
    Android Consultant, 2011 - 2014
    Design, implementation, and research.
Basic Information
Gender
Male
Dandre Allison's +1's are the things they like, agree with, or want to recommend.
Hotel Tonight - Android Apps on Google Play
market.android.com

Hotel Tonight - Last Minute DealsHotelTonight helps you find & book hand-selected hotels at great prices.*We are the night out with friends

MaxDPS.com - WoD 6.0.3 Arms Warrior DPS Gear Rankings
maxdps.com

Rankings are based on the following priorities: 1) Rend if not up 2) Ravager when Colossus Smash debuff up 3) Colossus Smash 4) Mortal Strik

Gradle, please
gradleplease.appspot.com

Gradle, please. dependencies { // Google Play Services compile 'com.google.android.gms:play-services:4.0.30' // Support Libraries compile 'c

Google I/O 2012
market.android.com

The official Google I/O 2012 conference companion app supports devices running Android 2.2+, and is optimized for phones and tablets of all

xkcd: Perl Problems
xkcd.com

< Prev · Random · Next > · >|. Permanent link to this comic: http://xkcd.com/1171/ Image URL (for hotlinking/embedding): http://imgs.xkcd.co

Rise of the Guardians - Official Trailer
www.youtube.com

They go by many names and take many forms. Join your beloved childhood legends as they join forces to protect the children of the world in D

xkcd: Communication
xkcd.com

... Perry Bible Fellowship, Questionable Content, Buttercup Festival. Warning: this comic occasionally contains strong language (whic

Hack Design
hackdesign.org

An easy to follow design course for hackers who do amazing things, curated by real design professionals.

Native RTL support in Android 4.2 | Android Developers Blog
android-developers.blogspot.com

Posted by Fabrice Di Meglio, Android Frameworks Team. Android 4.1 (Jelly Bean) introduced limited support for bidirectional text in TextView

xkcd: Old-Timers
xkcd.com

XKCD updates every Monday, Wednesday, and Friday. You can get prints, posters, and t-shirts in the store. Old-Timers. |< · < Prev · Ra

xkcd: Kerning
xkcd.com

Dinosaur Comics, A Softer World, Perry Bible Fellowship, Copper, Questionable Content, Achewood, Wondermark, Indexed, Buttercup Festival. Wa

DashClock Widget
market.android.com

DashClock is a replacement lock screen clock widget for Android 4.2+. It also exposes additional status items called extensions. The widget

Steve Aoki ft. Wynter Gordon - Ladi Dadi (Part II) (Promo)
www.youtube.com

Buy the single here: Steve Aoki ft. Wynter Gordon - Ladi Dadi (Part II) (Promo) from Ultra Music. Ultra Music http://www.ultramusic.com

Boltzmann machine - Scholarpedia
www.scholarpedia.org

A Boltzmann machine is a network of symmetrically connected, neuron-like units that make stochastic decisions about whether to be on or off.

Echo state network - Scholarpedia
www.scholarpedia.org

In the ESN approach, this task is solved by the following steps. Step 1: Provide a random RNN. (i) Create a random dynamical reservoir RNN,

The Best New Fonts of 2012 (So Far) - DesignFestival » For Web Design Tr...
designfestival.com

I love fonts! Hands down, scrolling through gobs of new fonts is one of my biggest time-killers (2nd only to Facebook). From a creative stan

SAFE Trailer - In Theaters April 27, 2012
www.youtube.com

A second-rate cage fighter on the mixed martial arts circuit, Luke Wright lives a numbing life of routine beatings and chump change...until

xkcd: Constraints
xkcd.com

XKCD updates every Monday, Wednesday, and Friday. You can get prints, posters, and t-shirts in the store. Constraints. |< · < Prev · R

Unagi is too good here
Public - 3 weeks ago
reviewed 3 weeks ago
Public - a month ago
reviewed a month ago
Public - a month ago
reviewed a month ago
Public - a month ago
reviewed a month ago
9 reviews
Map
Map
Map
Public - a month ago
reviewed a month ago
Public - 3 years ago
reviewed 3 years ago