Things I don’t like about iOS8

Each iOS iteration introduces new features, iOS8 is no execption and some of them I like even at the expense of privacy such as Medical ID which I hopefully won’t need anytime soon. However, it had added a few other features that I am not too fond of. Some of them are likely due to peer pressure to give more of what Android provides, but it is implemented no better than Android itself.

Here’s the list of the three things that I had turned off:

  • Predictive Text
  • Third party keyboard support
  • Transparency effects

Predictive Test

Android keyboards including the stock Google keyboard adds a bar for predictive text. I turned this feature off because of two things:

  • Reduces screen space. Since it adds a bar on top of the keyboard.
  • Introduces lag much.

Which are the reasons I have trouble with Android’s keyboards to begin with.

Third party keyboards

Android has had a long history of third party keyboards, I even bought one myself. For Android, it compensates for the abysmal default keyboard experiences that came with older versions of Android. It also adds a nifty feature of doing swipe input. I personally prefer the Swype keyboard for my android devices though I have recently dropped it for Google Keyboard as it has the least latency between Swype, Google and Samsung keyboards.

However, on Android devices it introduces a short latency which is practically non-existent on the default iOS keyboards even down to the iPhone 3GS. iOS 8 added the predictive text which adds latency now which I have summarily disabled.

Trying Swype for iOS 8 just brought back the memories of lag on the iPhone 5S. After giving it a try for a couple of days I decided to drop it. Starting up the keyboard introduces a sub second lag that distracts my train of thought.

Transparency effects

Though this was introduced in iOS 7 to make it appeal to the artsy crowd, it was still usable. iOS 8 added quite a bit more transparency effects to the point of annoyance when I see the image processing artifacts. I have since then turned it off as well.

Don’t bother copying Android

Generally I just find in the last two iOS iterations when Apple tried to copy more things from Android, their implementations are just as mediocre as Android’s. Seems like their product focus groups are not doing a good job and try to rapidly expand their markets rather than retaining and strategically expanding their existing market. This reminds me of Blackberry which is doing the right thing and dropping their focus on the mass market and focus on their strategic market. Let Samsung/Google deal with the masses, the percentage of the masses who buy cheaper devices are usually the ones that don’t buy the high value add items such as iTunes and app purchases, so why target them?

I think I spent a total of $0.99 + taxes on SwiftKey (which I eventually disabled) and that’s about it on Android. I spent significantly less than that on myself on Apple Store, but I acknowledge that I am really should not be in Apple’s target market. They should target the experience for those who are willing to pay for those high revenue items.

Share Button

Predictiability and versioning JAX-RS REST API

Over the course of time, your REST APIs will change to accommodate new client requirements. Using javax.ws.rs.core.Application and javax.ws.rs.ApplicationPath, you can enable multiple active client API versions in your WAR file.
Continue reading

Share Button

Enable Personal Hotspot on iOS 8

When I upgraded to iOS 8, I noticed that tethering on my Mac stopped working on Wind Mobile. After looking around for it, I found out how to enable it again, simply copy the values from the Cellular Data APN to the Personal Hotspot APN.
Continue reading

Share Button

Explaining Dependency Injection and Inversion of Control

In a normal programming sense, your code generally tells the system what to do and what resources such as databases or authentication system to use. In Inversion of Control reverses that idea and the system instead tells which of your code to run. Hence, inversion of control, IoC for short.

Normally when we code we tend to have dependencies on resources. When coding in an IoC fashion, these dependencies are “injected” into your codde when needed. Hence the name Dependency Injection.
Continue reading

Share Button

Screen time vs Paper Time

Screen time vs Paper Time

I think the above comic sums up my view when I hear parents limiting their kids use of screens.  Personally, setting arbitrary limits to kids creativity isn’t my cup of tea.  Most things on the iPad [that PM-1 will get when he is big enough] have a lot of  apps that promote creative expression so why hamper? Continue reading

Share Button

JET-NG

When I was doing my JPA Anntation Processor, I used JET to do my code generation because it was the only templating engine that I have seen that creates Java code that can return a String. The problem with using JET was the Maven plugin that was is available on central doesn’t have any of its sources and is no longer actively developed (as shown by the lack of source pointed by their POM). Using JET that comes from Eclipse apparently requires the entire Eclipse runtime and their direction with JET2 seems to force more Eclipse dependencies. However, JET in itself is a pretty neat standard so I decided to reduce the chance of having trouble with lack of support I decided to make my own with an associated Maven plugin. This blog post defines the requirements I had for my implementation
Continue reading

Share Button

Microbenchmarking repeated characters in Java

When doing a code generator, I found that I had to do indents which usually involve repeating characters. So I wrote some short code to do it using arrays. Of course this should be tested and Google created a microbenchmarking tool called Caliper to do this. Unfortunately, this tool has practically ended up in the ever big pile known as the Google Graveyard in that it has abandoned supporting people who may use this in Windows that are affected by this bug #215. I have decided to fork and do the deployment myself on my own namespace in central rather than waiting for a release which is who knows when.

Once I got it done I then implemented the benchmark.
Continue reading

Share Button

No iPad for my kid

At least not until he can carry it on their own.  One of the things I notice about kids and their iPads is who carries them around when they are not using them.  Sorry PM-1, I am not your pack mule. Continue reading

Share Button

JPA annotation processing

Previously I had defined how I would design domain objects with JPA. One of the things I had noted was the notion of a table model that encapsulates persistence operations. The table model is pretty much common and although some things can be done by generics, some things such as named queries cannot and require the use of strings. However, a pattern can be followed for the names combines with Java annotation processor be used to create code that would reduce the use of strings for users of the class.

This post discusses how I would build an annotation processor that takes advantage of JPA entity definitions to create support classes that avoid strings in user code.
Continue reading

Share Button

Using JET to create code in Maven

Java Emitter Templates (JET) is a templating system that takes JET template files and converts them into Java source code.  Unlike other templating systems like Velocity, the code it generates does not require additional libraries making its generated code usable without additional libraries when creating annotation processors.

This is a simple introduction to using JET with Maven using the tikal-maven-jet-plugin in Eclipse M2E.
Continue reading

Share Button