Categories
iPhone app Software development

Why unit test?

Reading Time: 2 minutes

For the pretty reports?
About a year ago, I worked for a client for an iOS project. The developer I worked with is very enthusiastic about unit testing, test driven development. I recall he used some tool (lcov, stands for line coverage), and set up the build script such that the unit test and lcov runs frequently. I was also shown the pretty chart created by lcov. All is good. except one day, I found a utility function I wrote was broken in the iPad simulator. Turns out the developer modified the code and added test for that function (a good thing), but at the same time forgot to run the real thing to check it.

Real motivation for unit testing
I think the unit test as another perspective to verify the code works as desired, this is from my own experience. I recall we have regression test suites in the software company I first worked professionally, that was more than 10 years ago! I started with waterfall, slowly transitioned into agile, test driven development. When we found new test cases (from problem report, etc.), we added those to our regression test suites as we see fit. We ran those unit testing suites before checking in code. This does not means the product we are developing is prefect, but it does give me more confidence as we add features or do bug fixes. This is also true in the many JUnit tests I saw/added in many places I worked since then.

More recently, as I saw the “mock” concept in JUnit, while I am not expert on “mocking”. Conceptually I liked this idea, as we don’t want to repeat the same thing in the production code, we add one more perspective. I also recall the famous investor Charlie Munger (Vice chair of Berkshire Hathaway) once said, he used at least two models to value a company/investment. Check and balance.

(Update) Came across this article on the disadvantages of pair programming. Also, saw this launchCodeSTL a while ago.

Categories
Fun

Serenity’s new drawing

Reading Time: < 1 minute

photo

Yoyo, mom, daddy, and incoming baby sister (my wife is expecting)

Categories
iPhone app

iPhone 5s and iPad mini without data plan

Reading Time: 2 minutes

Recently I cancelled iPad mini $30 per month 3gb data plan from AT&T, note I also have not have phone data plan since the beginning of April of last year, at which time I returned the employer iPhone 4s when I changed job. Now I am without the data plan on 3G, I am formally without the always on data. Some of the work around I have used to get around:

1) Wifi, at work place I usually get free wifi, and I asked the Wifi password at the places I will be for a while, my daughter’s pre-school, her gym class, JCC, the Chinese restaurant I go often, my friend’s house, etc. Most places have free wifi now. The only thing is just ask: the office manager, my friend. Usually they don’t laugh at me 🙂

2) Not all wifi are equal, besides speed, and coverage and reliability is the most visible. Personally, I like the JCC wifi the best, because they are reliable. At one time, I had Nexus 4 phone, it takes a bit work to get connected (Setting, turn Wifi off and back on).

3) GPS. I found out this lately, even without data plan, I can use GPS on my iPad mini, the only thing is before I start, I need the Wifi to set up the destination and the route. After that the navigation is just the same as the dedicated GPS. A small inconvenience. And one reason I still kept my TomTom GPS.

4) Apps’ working without Wifi. I found the iOS support for apps without Wifi varies greatly. I liked the Facebook “Internet connection required” status bar. And I tried to implement something similar in my app when the connection is required.

(Update 03-07-14) Found a solution to a puzzled problem for iPhone 5s on T-mobile pre-paid plan (no data plan). There is no visual voice mail, which is fine. The annoying part is once there is a voice mail, the red dot on the phone icon won’t go away easily. I found how to fix it, basically I turned off cellular data, I turned it on, then off, the red dot will be gone. A small tip.

Categories
Software development Web

Spring MVC, Maven

Reading Time: 2 minutes

I’m back to Java world again, after about 2 years stint on Objective-C and iOS development. I’m not new to Java land, as I have done Java work between 2010 and 2011, for 2 years.

My personal learning experience:
JSF => Spring MVC (jspx is still very similar): I have done JSF, which is a component based Java web framework, we know Spring MVC is different: it’s based on REST, GET, POST, and mapping etc. Luckily I have done RESTful web services in my past work, and used those services from iOS side. Another new thing at client side is javascript, and jQuery, I recall I used Richfaces (extension of JSF) for the AJAX, they are not javascript though.

IBM web sphere/Rational application developer RAD, CVS => Spring STS, SVN, note both RAD/STS are based on Eclipse: for the application server, and development IDE, the transition is easier such they are very similar.

Ant (build.xml) => Maven (pom.xml): this is a big change, actually. Maven has some learning curve, also with the Nexus repository. My only past experience using Maven: use Netbeans to open the project (pom.xml file). I found the following two tutorials helpful.

Tutorial on Maven:
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

http://maven.apache.org/guides/getting-started/

Spring MVC: using the Get Started Guide from the dashboard, or the link here.

Obviously, learn as much as possible from the work itself, from coworkers etc. The good thing is my current work place is one of the most collaborative places I’ve ever worked. This makes my life a bit easier 🙂

Repository, Nexus (Sonatype), JFrog Artifactory

JFrog intro: quick youtube video

Comparison between Nexus and JFrog

Sonatype Nexus

Josh Long A Bootiful Podcast : Hi, Spring fans! In this installment Josh Long (@starbuxman) talks about ten years on the Spring team, reactive support, and RSocket support in Spring Integration, his upcoming appearances at SpringOne and his upcoming YOW! workshop on Cloud Native Java, and then talks to JFrog’s Baruch Sadogursky (@jbaruch) about continuous delivery, DevOps, Java artifact management Artifactory, and more.

General questions about JFrog artifactory

Categories
iPhone app

Status of iOS app development II : app store

Reading Time: < 1 minuteThe golden era is over. Some readers/developers will argue it was over a while ago. I know I know. But this problem was confirmed as I read this article on BusinessInsider: it takes 107 swipes to get to the hottest app in app store.

Don’t get me wrong, Apple is still evolving and innovating on this space, with the new iPhone 5s, motion sensor (FitBit app), iBeacon (for retailers), the only thing is the momentum is definitely slowing. All these changes even Siri is not that impressive in my opinion. I do like Facetime, though, esp. I noticed an article talking about Facetime audio which essentially allow one to call other phone over Wifi fore free. Btw, I noticed the article over Zite.

For me personally, I have created 3 apps, and one (myNestEgg) of the 3 still have decent downloads. The problem there is two folds: 1) I did not spend enough time to work on some features to make the user happy; 2) Not many paying customers. I think I will still put some effort on it in the future, but I won’t put a lot hope there. Need to find something more interesting or scalable. It’s too hard to stand out from a million apps. Or even out of 50 and 100 apps in the category.

Competition
Another sign the iOS app developers has to expand their horizon, noticed the No. 1 iOS tutorial website (ebook producer) is doing the Android tutorial? Actually it’s not the first Android tutorial at RayWenderlich.com, I noticed this very first one here. So technically the new one is second series, but it actually helps confirming the popularity of Android platform.

Categories
iPhone app

Status of iOS app I : custom development

Reading Time: < 1 minuteIt has been almost 6 years since iOS SDK first came out (early 2008, source: wikipedia), and the industry is entering a consolidation stage. From my own experience, last year, iOS developers are widely sought after for enterprise app development, and among digital/marketing agencies. But it has a few caveats:

1) Many new developers, some with web development background, have gained experience on app store, and started working for consulting agencies. This trend drives down the hourly rate for iOS developers;

2) From development point of view, some customers realized it’s too costly to develop and maintain native app, and in some cases native apps are not needed. On the other hand, javascript/html5 apps gained some more momentum with the introduction of new frameworks such as AngularJS.

3) The consolidation of iOS/android/mobile custom development firms. Latest example: MartianCraft: its co-founder Jeff Larmache is one of the first iPhone author/developer (his blog here).

In the next series, I will talk about the app store. Got this idea from my own experience and this BI article.

Categories
advice and tips Fun

Signs we do too much googling

Reading Time: < 1 minuteThis morning, Serenity asked me to show her draw a pig. I said I don’t know how. She said google it, as mommy always did. So I googled how to draw a pig, and it comes up some results. I showed her the wikihow step by step animations. Now she is into wolf 🙂

(Update 02-19-14) This reminds me similar phenomenon in software development area, the popularity of sites like stackoverflow.com, coupled with some of the flaws in technology books/documentations, make me search much more and read much less. As a matter of fact, one of the iPad book author, Kurby Turner, mentioned this phenomenon in his learning iPad programming book.

Categories
Software development

Bug fixing vs. new development

Reading Time: 2 minutesIn my 13+ years of software development career, I have done both. So which one do I prefer? This is a bit like asking my daughter: who do you like more, mommy or daddy? (I will reveal my daughter’s answer at the end.)

I think both are interesting work, and both could be challenging. If you ask me pick one, I will probably pick the new development, as most developers like to work on new things: from new technologies to new features, new project/product. But from time to time, I have worked on some bug fixing work that is not only interesting, but also challenging and rewarding (mentally not financially, as I worked for companies all these years). I recall 6, 7 years ago, when I was working for CAD software company, we had two bugs to fix, the first one is actually not too bad, essentially it’s a tolerance problem. In other words, I just need to make sure when it checks whether the X, Y, Z axis is orthogonal to each other, I gave some tolerance. I did cross products of vectors, borrowing from similar experience I learned at work.

The second one, is a bit daunting, to say the least. Essentially we have about 2 weeks to fix a nasty problem in a CAD translator, and we don’t have any clue why the results is wrong. By working with 3rd party, and looking carefully at the problem, some teamwork, I was able to solve the mystery when I was working remotely at Shanghai. I recall I could not fall asleep that night, as I knew that’s a tough problem and will help the sales team greatly to sell into a top Europe car maker.

I had similar experience most recently, although it’s a totally different problem, and we as developers also work in much different world: with stackoverflow.com, and google search (blogs).

So back to my daughter’s answer to my silly question: most of times she will say mommy and daddy; sometimes she will say “don’t ask silly questions”.

PS: in some places bug fixing is also called as maintenance. Just like the car maintenance, software also needs regular check-up and fix 🙂

Categories
iPhone app IPO

Facebook Paper app, Twitter

Reading Time: 2 minutesTwo social media companies are in news today, Facebook released the new Paper app on iPhone, and Twitter announced the user growth is not as fast as the Wall Street liked. Maybe the 3rd, LinkedIn announced not so spectacular quarter after market today.

I tried Facebook Paper app. To be honest I have been Facebook user for about 5 years, not heavy user in terms of posting news feed or pictures. But I did use Facebook to communicate with a few friends, and did post some of my daughters’ pictures: fewer and fewer as time goes. The main reason for “fewer” is two folds: 1) Fear of privacy, I saw this “tag” feature there and never liked it; 2) Baby grew up. Btw, as I talked about the picture, by now most of us knew about the Facebook “yearbook” feature which automatically puts together some of the uploaded picture, and I saw Google+ was doing the same thing recently.

Back to Facebook Paper app, “slick” is the first word I would describe it. It tries explain things when I first installed it. I am a Zite user, and I only used Flipboard briefly. In terms of the news feature in Paper app, I think they are similar. And I heard one commentator on Bloomberg saying the “twitter of news” feature. But the commentator likes it too. It may have some impact on the competing news media curating services/apps.

About Twitter, personally I always liked Twitter better. I have 3 Twitter accounts (out of 250 million Twitter users). I used it because when I started using Twitter, I found it’s popular among geeks and iOS developers, the hash tag thing. I feel this quarter or near term is just a bump of the road, Twitter basically does a lot news service now. I recall refreshing twitter feed when important events fold. In terms of their business, I liked their integration with Amex (AmericanExpress card).

I will talk about LinkedIn sometime later.

(Update 02-07-2014) Used Facebook Paper couple days now, one annoying feature appears to be the fast flicking of the news feed for each news section. For now I am using google news and Zite for news and geek stuff.

Categories
advice and tips

Serenity got sick

Reading Time: < 1 minuteShe got some fever, and cough. Not too bad, but a nice two days break from her school. Reflecting on this “kids got sick/fever” topic, I recall a few instances when she was much younger, and we were really worried sometimes. I recall in one winter evening, she couldn’t stop coughing, I walked to nearby Walgreens in blizzard condition, the road is totally covered, and after I got there, I found out the cough syrup is really not for young babies. Even now she is 4, as the doctor told us today, honey might be do much better compared to cough syrup.

Recall in one summer, she got fever, was sleeping on bed, I can tell her short breeze, or difficulty to breeze. Of course before she turns to 2, we already worried more when her temperature hits 102 F. This is a bit loosen as she gets bigger, and today I picked up a “20 myths about kids fever” print out at doctor office, and I agree with some of the things talked about there.