Sep 10, 2017 · Comments
StartupsCustomer Service

Photo by [Riccardo Annandale](https://unsplash.com/photos/7e2pe9wjL9M?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
It’s been written about for ages: customers generally only leave reviews for extremely positive experiences or extremely negative ones. Negative reviews are inevitable, but there are proactive and reactive measures you can take to mitigate and prevent them. The following are strategies I’ve used to successfully convert poor app reviews into great ones.
Reactive Approaches: From 1 to 5 stars
Every company receives bad reviews from time to time. Are you prepared to address them?
Read On →
Aug 31, 2017 · Comments
AngularReactiveForms
Angular’s built-in validators are great (Required, MinLength, MaxLength, etc.), but you’ll often find yourself needing to test unique UI control use cases. Enter custom validators, a powerful way to accomplish this:
validUsernames: AllowedUsername[];
constructor(private fb: FormBuilder,
private apiService: ApiService) { }
ngOnInit() {
this.form = this.fb.group({
// Attach a custom validator to the userName control
"userName": [this.userName, this.usernameValidator]
}
);
}
private usernameValidator(c: AbstractControl): { [key: string]: boolean } {
// check a property of c, the Control this validator is attached to
if (c.value === "bad value") {
// if a bad username is detected, return an error
return { 'badValueFound': true };
}
}
return null;
}
This works just fine if you only need to test using the properties of the AbstractControl - how about testing for valid usernames via a local array object or by making an HTTP API call?
Read On →
Aug 15, 2017 · Comments
PhoneGapCordova
I’m happy to share that I’ve written another guest post for the PhoneGap team’s blog:
Hybrid Apps are Overtaking Native
In the post, I cover the most popular concerns about hybrid app development from a fresh 2017 perspective: performance, design, frameworks, and tooling. Bottom line: if you last tried PhoneGap/Cordova several years ago, it’s time for another look!
I’m really proud of how this article turned out: over 16,000 views and tons of comment replies as of late August. Check it out on the PhoneGap blog.
Read On →