Git
Comments

I made a commit to a git repos and broke the build.

(I should be punished to clean the toilet for a week for accidents like this)

But what happened was unexpected, because I added a framework (Crashlytics), and I thought the library will be pushed fine to the repos.

What I didn’t expect was that my GLOBAL gitignore has an entry for Crashlytics framework.

For developers who didn’t know, other than the project gitignore file, there is also a global file for your machine.

It is at ~/.gitignore_global.

Comments

In the previous post, I discussed about how to Google Play manage compatibility between your app and devices.

The key is to make use-feature optional.

Recently, I have encountered another problem which I want to share.

I have this in my manifest file:

1
2
3
4
<uses-feature android:name="android.hardware.TELEPHONY" android:required="false" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

On first look, it seems ok. Making TELEPHONY optional will make the app compatible with tablet (a common solution).

However, the above is WRONG! Because it should be android.hardware.telephony (lower case)!

I made a mistake.

But I also blame Android, because for permission, it is upper case! android.permission.INTERNET is correct.

Weirdedness of Android..

iOS
Comments

Apple has long announced uniqueIdentifier UDIDs would be deprecated. From 1st May 2013, Apple will reject apps that use the deprecated identifier.

So what you have do?

DoubleEncore has writtern a good article on the other ways to generate UDID. It is up to you and your use case.

For me, OpenUDID is the nearest replacement. The only difference is that it cannot persist the identifier if there is a system reset.

Comments

It has been nearly 3 years since I stopped Android development.

A lot has changed since the days of version 1.6. Now it is 4.x!

Trying to do a little bit of compiling and setting up stuff these days, and I had some hiccups. This is a refresher guide on some topics.

Continue reading →
AWS
Comments

If you use s3cmd and encountered [Errno 32] Broken pipe as you try to put an object in a bucket, understand that this is a very very bad error message.

Jeremy blogged about this and attributed the error to a typo in the bucket name.

Others attributed it to no permission, file too big, etc..

I attributed it to incorrect permission policy.

Continue reading →