Catching Elephant is a theme by Andy Taylor (slightly modified)

 

…the remaining Danger team was not professional nor did we show off the amazing stuff we had that made Danger such a great place. But the reason for that was our collective disbelief that we were working in such a screwed up place. Yes, we took long lunches and we sat in conference rooms and went on coffee breaks and the conversations always went something like this…”Can you believe that want us to do this?” Or “Did you hear that IM was cut, YouTube was cut? The App store was cut?” “Can you believe how mismanaged this place is?” “Why is this place to dysfunctional??

A Microsoft employee (and former Danger employee) on development of Microsoft KIN, in The KIN-fusing KIN-clusion to KIN, and FY11 Microsoft Layoff Rumors [via rit]

Code isn’t magically more secure when it’s written by someone who receives a government paycheck than when it’s written by someone who receives a corporate paycheck. It’s not magically less secure when it’s written by someone who speaks a foreign language, or is paid by the hour instead of by salary.

SCM choice is a shibboleth.

Jesse Vincent, on choice of source code management system

As Revenue Plunges, Stadium Boom Adds to Municipal Woes

NY Times: “From New Jersey to Ohio to Arizona, the stadiums were sold as a key to redevelopment and as the only way to retain sports franchises. But the deals that were used to persuade taxpayers to finance their construction have in many cases backfired, the result of overly optimistic revenue assumptions and the recession.” [via Streetsblog]

Aesthetics make a difference, whether it’s in a user interface, the layout of your code and comments, the choices of variable names, the arrangement of your desktop, or whatever.

Andy Hunt, Pragmatic Thinking & Learning (p 67)

The main thing I noticed about the experts I’ve encountered is they are into impressing you with their abilities. They are usually incredibly good, but their need for recognition gets in the way of mastery.

Cannot Run App in Development Due to Provisioning Profile Error

I was getting an error during development stating that I could not run my app on my iPhone because the executable “doesn’t have the provisioning profile with which the application was signed. Please add the provisioning profile via the Organizer or check the ‘Code Signing Identity’ build setting.”

I found this blog entry detailing a solution to the problem, but that did not work for me.  Fortunately, the solution described in one of the comments did work for me.  It involves editing the XCode project file in a text editor.  This is the second time I have had to edit the project file to fix a problem.

…people tend to do software risk analysis by thinking of the severe risks first, and then the more manageable risks. So the more risk analysis that’s done, the less severe the last risk imagined, and thus the greater the underestimation of the total risk.

Bruce Schneier, in Imagining Threats, referencing Magne Jørgense’s paper More Risk Analysis Can Lead to Increased Over-Optimism and Over-Confidence

Don’t negotiate on your estimates

Matt Wilson: “From a salesman’s perspective, you don’t close deals by acknowledging why the prospect doesn’t need what you’re selling. You close deals by overcoming objections. The salesman’s natural instinct is to see an obstacle and wear it down. So the key is not to feed that. Instead, stonewall them. Over time, they’ll respect you more because of it.”

…if you throw a requirement over the wall, which is what most requirements document authors pridefully do, it’s about as likely to succeed as throwing a hand grenade — people will scream and run. But if instead the requirements document is something they feel they contributed do, that it’s in part their document, they’ll run towards it, love it, and work hard to make it real.

Scott Berkun, Why requirements stink

Transparent UIWebViews

I recently needed to display a link (blue, underlined text which, when clicked, launches MobileSafari) on a “settings” screen of an iPhone app which I am working on.  It turns out that the way to do it that made the most sense was to use a UIWebView.  I ran into a problem where the background of the UIWebView was always white, so in it did not fit in with the rest of the screen’s blue-gray, lightly striped iPhone standard background.

I ran across a number of posts which noted that a UIWebView could be made to have a transparent background by programatically setting the backgroundColor to clearColor and, in the HTML, setting the background-color to transparent via CSS.  Doing this did not produce a transparent UIWebView background for me, and several posters noted that it failed for them, too, with iPhone SDK 2.2.

What did get things working for me was to make sure the UIWebView was not opaque.  This was only mentioned in one older forum post I found, so I thought it might be useful echo it here.

To summarize:

theWebView.opaque = NO;

theWebView.backgroundColor = [UIColor clearColor];

[theWebView loadHTMLString:@"<html><body style=\"background-color: transparent\">...</body></html>" baseURL:nil];

iPhone Development: Getting Proxy Objects To Work

Working on some iPhone code, it took a while for me to get Proxy Objects (aside from the standard File’s Owner) working correctly.  In hopes of helping others, here is what I needed to do.

First, I wanted put some controls in a different NIB file from the one with the objects that deal with actions the controls send.  The way to handle this is to put Proxy Objects in the new NIB that respond to the actions, rather than creating new instances of the objects by just inserting an aribtrary object in the NIB.

To get the proxy objects working on the code side of things, the documentation says to call loadNibNamed:owner:options: with an NSDictionary argument to options: which contains a key called UINibProxiedObjectsKey and, as a value, another NSDictionary with the actual objects that correspond to the proxies.  The docs say the second NSDictionary should have keys of the Proxy Objects’ assigned Names in Interface Builder and values of the actual objects.  I kept seeing EXEC_BAD_ACCESS errors when attempting this.

As this very helpful thread on the Apple developer discussion boards notes, the second NSDictionary needs keys with each Proxy Object’s assigned Identifier in Interface Builder, not the Name.  Assigning Identifiers in Interface builder which corresponded to the keys in the second NSDictionary worked for me and eliminated the errors.