Our thoughts in real time
« April 2009 | Main | June 2009 »
May 2009
May 25, 2009
Feel My Pain: NSXMLParser Problems Upgrading to the iPhone 3.0 SDK
I set out a couple of weeks ago to port the Killer Deals application from the iPhone 2.2.1 SDK to 3.0. “No problem”, I thought; the application doesn’t veer far from the standard APIs and controls, and it is a relatively straightforward application, implementation-wise.
As I was making my updates (some minor method and property name changes here and there), I stumbled upon a show stopper: The NSXMLParser was no longer parsing my XML data. After scratching my head for a few hours, I finally figured out the problem.
It seems Apple has removed support for Windows-1252 character encoding in the latest iteration of the NSXMLParser. I used this encoding to prevent the appearance of those funny characters you occasionally see on a web page. Those funny characters are caused by a character-encoding mismatch between a text renderer and the document. Some Microsoft tools use the Windows-1252 character encoding for documents by default. Unfortunately, some of the Killer Deals data is only available in this encoding.
While the previous version would give a NSXMLParserUnknownEncodingError and continue to parse, the new version simply stops parsing after the error (although strangely, the parserDidStartDocument() method is still called after the error).
At this point, I was going to force the encoding to UTF-8 on the server, and put a hack in the code to convert the ‘invalid’ characters to the proper UTF-8 equivalents. That ended up in an invalid character error via the parser.
It
seems Apple has degraded the parser and offers less tolerance for ‘unsupported’
formats. Does this have anything to do with bad blood between Apple and
Microsoft? Hmmm…
Posted at 10:54 AM in iPhone | Permalink | Comments (1) | TrackBack (0)
May 12, 2009
Scrum is like 20th Century Politics (Part 2 of 3)
Having toiled for years under the yoke of a brutal waterfallocracy, one bitter developer learns of management's decision to adopt scrum and sees...a revolution.
Born is the Marxist, leader and friend to the common bit farmer.
The revolutionary swoons at scrum's commitment to the "self-organizing team". He visualizes an enervated bourgeois middle management, an empowered development base that directs company affairs, and an opportunity to play video games at work.
Of course corporations are a little different than governments in that the workers cannot throw out their bosses and forcibly wrest control of the organization. However, under the guise of scrum doctrine, the proletariat can confuse and befuddle the established order in an organization to the point where they feebly hand him the reins of power.
How is this done?
Guerrilla warfare is waged through deception and surprise. The revolutionary arms himself and his comrades with all manner of scrum books and training documents. Prepped with a preponderance of process techniques, the team can then confront management's every proposal with a counter proposal of their own that is "more scrumlike according to so and so".
If management wants estimates in hours, the team will stubbornly insist on Fibonacci numbers. If one week sprint cycles are proposed, the team will produce evidence suggesting that three weeks have been used effectively elsewhere. Ultimately, the goal is to take advantage of management's unfamiliarity with scrum. If the stakeholders and upper management can be convinced that the team actually knows what they are talking about, the revolution has been a success. With luck, the team will be granted control to run the process. The people have won!
But as is the case with most revolutions, the new establishment must take steps to ensure that they do not lose the power that they were so recently awarded.
The process changes that the team originally dreamed up to wage their revolution are calcified into a rigid, inflexible doctrine. Non-conformity is met with oppression (sarcasm), and team members who question the power structure are sent to the Gulag (ignored). Productivity decreases as creativity is squelched, and the lack of actual work being done results in frequent kitchen raids and food lines, which in turn lead to shortages and empty shelves. Work days become cold, bleak, and hard. Members of the collective are encouraged to spy on their comrades and report deviances such as frequent trips to the bathroom. There is little laughter.
In the end, the developer population loses power so that a few can maintain it.
There is a balance between the top down and bottom up forms of control described in Part 1 and Part 2 of this series. This is called responsible elected representation, which we will visit this in Part 3.
Posted at 01:11 PM in Agile, Current Affairs | Permalink | Comments (2) | TrackBack (0)