Archive for April, 2011

30 AprCustomize UIPickerView and UIDatePicker

In the very customized applications like Debty where every pixel has to be customized the problems start with standard controls. Usually we don’t have access to necessary properties to change color or size and that’s right. Watch the video “Session 116 – Model-View-Controller for iPhone OS” from WWDC2010 where you could find The 10 best MVC Tips Ever – “#3 Don’t fight with framework”.

Anyway a lot of unruly developers want to go beyond the limits set by Apple. I am convinced that the game is worth candles, but before jumping into the open ocean please learn how to keep well on the water in swimmingpool – learn the most recent Apple Mobile HIG. I believe everybody focused pragmatically on WHY it’s so instead WHAT it looks like will do great applications sooner or later.


So we fight

While Debty current update (v1.3) where we want to let users to select different currency we faced with boring standard Pickers. We have a UIDatePicker to set reminders and a common UIPickerView to show currency list. That’s how it looks without customization:

I know it looks OK, but how we can improve it? Not spending too much time it has to look more stylish according to the app’s common style. The trick is that we can draw a frame with any texture and put it up the Pickers. The central part of the frame is transparent so the frame covers only the area around the Picker’s animating area letting user to interact with a picker below. This way a picker can look as a designer wishes.

We debated within the team which option to choose. I like option #3-4 and #2, but don’t #1 because it is one more different texture on the screen. It’d be looked like a salad. But Kostia likes how option #1 looks. So, opinions diverged. Note it’s necessary to evaluate the workpiece on a real device. It is closest to the actual UI option – need to feel in the hand and try to tap then the brain will understand how it corresponds to what was intended. It’s a magic process.

A bit later it’s discovered that we can not change the transparent strip for choice of a UIDatePicker. So we want to have similar strips for both pickers. Option #3-4 has become less attractive. The option #2 was selected as the most fit into the current design.

By drawing the options and fitting sizes plus 3 lines of code we have a great customized control.

Update (31 Apr 2011): It’s just discovered that UIDatePicker changes width of animating area according to the user’s device region settings. Month titles in English and Russian cover different areas, so we can not customize so simply.

Update (06 May 2011): We decided not to include this customization to production since we can’t customize every such appearing panel. Don’t fight with framework.

PS. The header image symbolizes a long and difficult path to advanced knowledge.

21 AprTeam development – be agile or die

Harvest Time

We work hard. Sometime we work on 1 project during 3 weeks or on 3 projects during 1 week. Earlier we were surprised but understood the right way is to adapt to a customer/business circumstances instead of whining because of the imperfect of projects.

So we started to see gaps for self improvements in such circumstances. We started to experiment a lot.

What we’ve tried and what has helped:

  • AGILE and SCRUM – everything changes so be agile or die.
  • Retrospectives – sit and talk clever frankly regularly time-boxed is the only right way to find gaps and improve the team
  • XP and a few practices to improve code quality: common code style, component comments, architecture meeting, MVC, pair programming, refactoring.
  • collaboration tools: Skype, Basecamp, Pivotal Tracker, SVN, google docs. Read about our experiments with Git - now we are solving more obvious gaps but we’ll use Git more later.
  • Less skype chat, more formal email with customers. Generally more formal communication like User Stories and fixed features for sprints.

I can forget something to note but the main idea is to be always in research:

  • find and try new practices but use only those really help you.
  • optimise company processes by finding and removing trash.

Progress

So we believe we have already overcome a tangible part of the road. We saw possible ways and chose right one.
Harvest    ? harvest 2

Visualize
It’s more for fan than for formal decisions, but I used Gource to visualize the development process for a customer project.

Update.
This project guys did when I was absolutely offline for 11 days.
Crossfunctionality in action :)

Be always attentive – no chance to laziness.