2017 Year in Review

2017 was a very eventful year, full of ups and downs. Thankfully, it was wonderful overall, with many challenges and growth along the way. For reference, other years: 2016, 2014, 2013, 2012. Personal January and February were a whirlwind of fun. It began with surprising my wife with a trip to LA during the first weekend in January. Following that, we attended two weddings for close college friends. Major Loss And then, in late February, an email out of the blue: Read On →

How to Convert a 1 Star App Review into 5 Stars

Photo by Riccardo Annandale on Unsplash 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. Read On →

Angular: Accessing Class Variables within Custom Validators

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. Read On →