Ads in Apps and Resource Usage

John Gruber linked in a study from Purdue about the majority of battery life going into supporting and displaying ads.   Rather surprising really, but largely due to the fact I hadn’t considered it much on mobile devices.   I usually get paid versions of apps as I’m just not a fan of ads eating screen real estate.   That said, I use ClickToFlash to limit ads on web pages and further cull their activity with Little Snitch blocking a lot of track sites and flash serving ad sets.   I’d rather have a way to subscribe, or read inline advertising as Gruber does with Daring Fireball already.   It’s much more effective as well than the pop-over ads and interstitials I go looking for the close button on before the thing even gets rendered.

I wonder if this sort of study is going to affect purchasing decisions in people if it becomes more widespread?   And if that happens it will affect developer decisions and will actually wind up changing some of the ad industry approach in that they too will have to consider efficiency and battery life.   It won’t just be the application developer dealing with the restriction.   The ad is a supporting mechanism, so really it should use no more than say 10% of the resources the application uses itself.   Definitely not 3x the resources at any rate.

In-App Ads Consume Mucho Battery Life:

Jacob Aron, NewScientist:

Up to 75 per cent of the energy used by free versions of Android apps is spent serving up ads or tracking and uploading user data: running just one app could drain your battery in around 90 minutes.

Abhinav Pathak, a computer scientist at Purdue University, Indiana, and colleagues made the discovery after developing software to analyse apps’ energy usage. When they looked at popular apps such as Angry Birds, Free Chess and NYTimes they found that only 10 to 30 per cent of the energy was spent powering the app’s core function.


(Via Daring Fireball.)

The Apple Design Awards – Original post April 29, 2010

This is a weird one. Apple finally (and rather late really) announced the WWDC 2010 dates and such. And dropped a bit of a shocker on the long-standing Mac developer community.

The Apple Design Awards, long coveted as awards recognizing some of the best in design, performance and functionality on the Mac, and recently on the iPhone OS (including iPod) this year are only accepting iPhone OS apps and iPad apps. ADAs for apps that haven’t even been shipping a full quarter? And NONE for the Mac. You can’t nominate anything that doesn’t have an app store URL.

This really seems a callous slap in the face of Mac developers. Somebody has to make the Mac good for more than just developing iPhone apps, and these guys do it. But that seems to have been lost on Apple this year.

Looking at the session overview though, I have a theory of sorts on this and what’s coming up.

The sessions are VERY heavy on iPhone OS, mostly iPhone OS 4. There are Mac streams as well, but really mostly specialized streams. There’s also no IT stream listed this year. That’s another big break from last year.

No, I don’t think Apple is bailing on the Mac platform, and no I don’t think they are going to kill off development on it or on the server OS. What I do think is they wound up with a year of heavy focus on iPhone and the iPad, and that actually drained their engineers away a lot from the rest of the work. Let’s face it, they put a pile of effort into Snow Leopard in the guts, with OpenCL, the LLVM stack, GCD, and an acre of other bits. This year it’s iPhone OS 4 that looks like it’s really chewing up a lot of time, plus they need to get the iPad onto that release as well (I’ll bet that’s to be announced at WWDC this year).

So I’m going to predict that 10.7 is not coming on the usual release cycle. I think we’re looking at WWDC 2011 will be a resurgence on the Mac side as it will likely be an off-year for iPhone OS in many ways as they enhance 4.0 and start thinking about 5.0. WWDC 2011 will preview 10.7 that will have some of the iPhone OS showing up in the touch interface capabilities, possibly with some new hardward in the iMac line with touch screens in the fall, and 10.7 released with those. The level of quality that Apple usually churns out I think has actually stretched them on this one, and they can’t keep 3.5 product lines cranking, being the Mac, iPhone, iPad and the 0.5 of the iPod being an adjusted iPhone. So they wind up with sort of an iPhone/iPad/iPod year of WWDC with a minor Mac focus, then (hopefully) a major Mac focus with a minor mobile, or even more ideally for both groups (though expensive for those with feet in both ponds) they split to have a mobile WWDC and a Mac WWDC.

Then the ADAs could have mobile ADAs and Mac ADAs. And all would be a bit more balanced again in the universe. Maybe even the odd Universal ADA for software like OmniFocus that spans all of them. If all the platform implementations are good enough.

Gruber: Microsoft’s Long, Slow Decline — and more – original post July 31, 2009

John Gruber has an interesting commentary on the recent Microsoft results and on a few comments floating around their execs these days. Have a read at ? Microsoft’s Long, Slow Decline

In my books, there’s another aspect to this. Microsoft is about cost and profitability. Every company is, but Microsoft is making that associated with their brand. Cost. Race to the bottom. Not usually a game for the faint of heart, and never for an innovator. What happened? I’ve never been a Microsoft fan, but I have had a deep grudging respect for the engineers at Redmond. They have a number of talented, driven, capable developers down there. They do put together good systems, and in the rare cases when the product design is great, you get a great product. It has been happening less often, but that’s just the sliding maturity of the Redmond Juggernaut.

Now you’re getting a rebranding to “cheaper”. Not a great connotation. “Cheaper” is not the answer to their somewhat vague “Where do you want to go today?”. It is definitely not a good connotation to the enterprise campaign of “People Powered” enterprise computing. Cheaper is, as Gruber notes and is in the consciousness of most North American consumers, Wal*Mart.

Apple has gone for “better”. More capable, secure, easier, and other adjectives, but the brand has been associated to “better” in their strategy. It’s had more expensive bolted to it, but they have queited that enough to be given a thought, and with the iPhone and iPod being copied left right and centre for features and ideas, the consumers easily find the conclusion “better” beside Apple’s name. Everybody is copying them and talking about them.

Microsoft used to be “full featured” or “powerful” or “fully integrated”. Piles of things that let you know this was serious stuff that did anything you needed. Sure, a bit of complexity, but really, you needed that complexity to do the jobs you needed done. And generally, they were right. It fit. Now, competitors, and not just Apple, have chewed into that with simpler, easier solutions that solved most of the things a lot of people needed, and did some parts better or more elegantly. But Microsoft has always been the juggernaut. It WILL be able to do it.

Now it’s just bending to “cheaper”. I’m not a fan of them, but I expect better from them. I expect some vision. I expect capability, prowess, some arrogance. John Gruber is right. They lost the geeks. They lost the consumers in a lot of cases, at least the ones that care as he points out. They aren’t messaging the users anymore. They’re messaging to CIOs, and to people that done do that much with the computer. It’s like an extra TV in the spare room now. Oh yeah, the computer for email and facebook. Yeah, I think it runs Firefox. Windows? Oh I guess so. It must be windows. Is that Firefox? I use Internet Explorer. Is that Windows?

That’s the customer they are targetting. Ouch. I’ll pay the money for the quality and keep the Mac thanks. Maybe they are missing Bill Gates a lot more than Steve Ballmer would like to admit…

(Original thread from Daring Fireball.)

SOA and COTS Orthogonality – a follow up and clarification – Original post 2007-07-08

Thanks to some very creative and insightful feedback on the original post from a few colleagues of mine, a bit of clarity and expansion on the dimensions is warranted.

For the sake of illustration in the article, I polarized the camps in the post as “SOA” and “COTS”. The intent of the SOA label was a best-of-breed, service-oriented connectivity model in an organization that is as likely as not to use a different vendor for every business core application. I believe that aspect was reasonably clear, but I blew it and mislabelled the “COTS” approach. Obviously, the label has a nod to IBM, Oracle and Microsoft in that they clearly offer integrated, custom, single-vendor stacks of software that work quite well emwithout/em needing to do very much integration. The list goes on with SAP, Sun and many more. The bias isn’t clear at this point, as an SOA organization can use these stacks quite well, and those stacks can be adopted completely and still integrate with yet other applications by SOA.

The labels really weren’t the point. They were intended to illustrate the bias in an organization towards a number of product specialists, being developers that will take a stack and be very capable at extending it and pushing it in all the required dimensions, vs. the generalists which in general don’t know the products to a great degree, but are very capable at putting very different and foreign systems together and making the integration the strength of their skill and of the enterprise, and can cobble custom code and applications together reasonably well.

Now, with a big nod to my colleagues, obviously, the vast majority of organizations have both types of developers (including ours) and most enterprises especially those of middle to large size will have experts of both types within their boundaries. It’s quite healthy indeed to have such a mix, and enables the best features of both approaches.

Flexibility and such multi-faceted capability matrices don’t come across very well at the higher levels of executive logic. Thus you wind up with a bit of a polarization. In one, the executive either has buzzworded themselves and you’re chasing SOA (likely with some preferred vendor), or you need to reduce and consolidate on a single vendor stack for efficiency and getting a unified set of developers and resources. (Work disclaimer, our executives are emnot/em as strongly afflicted by this condition as many, fortunately!)

That brings up the core discussion point. Is “best of breed” an approach to wander off and try to get the perfect vendor and thrash with continuous re-implementation of core business systems? Is “single stack” a simple procurement optimization that lets you have one company to pay the bills to and yell at when things go off the rails? Why does this either-or conceptualization exist?

Most often, when communicating the strategy of an IT organization, a “mission statement” of sorts is what is needed. That often grinds down into specific aspects of the implementation, and what shows up on the accounts payable. That simplification is problematic at best, for as noted earlier, the vast majority of teams is comprised of both aspects, and both types of developers. So then to the executive level, the teams are disorganized and inefficient, which is patently incorrect.

Really, good development teams need to get a job done, and they will use the tools they know, followed by the tools they are interested in, followed by the tools people they trust talk about, and finally, followed by the tools they are told to. Dire employment threats may elevate the use of the mandated tools higher in the stack, but that introduces a legislative inefficiency in the development process much as economists complain about legislative interference in the market creating inefficiencies. So the cases all boil back down to a question. What is the goal?

Getting the job done in the quickest way possible creates an inefficiency in that as changes are required, they usually require more effort than if some flexibility around that need was built into the solution in the first place. The trade was speed for flexibility. That’s most often the COTS approach. You get a “good enough” fit from pulling a pile of ready-to-rock code off the coat rack, and adding a nice shirt, tie, belt and decent shoes to go with it from your closet, and you’ll survive the presentation to the board just fine, it didn’t cost you a pile, and it can be replaced by next year’s style without too much pain. Unless the shirt and shoes start looking aged…/p

If you need the job to be done and each piece to be near the top of the game, say for competitive advantage, then you want a bit more out of the box. You want a top of the line suit, tailored to your specific needs, and not just anybody in a 42 Tall, you want it to fit your business down to the inseam. The tie is selected to go with the suit, and complement it precisely. The shirt and shoes and belt likewise. The goal is the ultimate ensemble to present to the world and take the headlines at E3. I’m stretching the metaphors again, but this gets to the central piece of the COTS vs. SOA, or specifically, COTS vs. Custom integration debate.

What’s the business advantage? If you aren’t making money off of your accounting department (and if you are, the SEC may wish a word), then your accounting system is a COTS piece with minimal integration into your other enterprise systems. If your accounting is part of an integrated ERP approach because your business is driven by operational efficiencies, and that defines at least a reasonable amount of your competitive advantage, then you want that system to fit precisely, and drive more benefits to the corporation directly. That’s the payback and that’s the decision fulcrum.

So I’m going to backtrack from my original assertion of bias on a team. It’s bias on a component, especially in the SOA world of today and tomorrow. In some cases you want your COTS/Stack integration team to ripple through and keep the overhead low on necessary but non-advantageous systems, and in others, your custom integration and customization teams will take the a product and adjust it to fit the company exactly, and bring competitive advantage and leverage to the table in a system that is critical to the nature and core business of the organization.

Just don’t do a custom job when the simple stack will suffice, and don’t settle for off-the-shelf when your core business depends on it.

SOA and COTS Orthogonality – original posting 2007-03-30

I’ve been diving much more deeply into SOA and moving an enterprise towards SOA. In that process I’ve been considering an idea that seems to have a certain truism to it.

An Enterprise strategy that relies on moving heavily to using COTS (Commercial, off-the-shelf) products is not the same enterprise strategy that would fully embrace an SOA (Service Oriented Architecture) strategy. As a great number of companies claim to embrace both in their IT organizations, let me more fully explain what I mean.

The essence is in what ability your seek to enable to the greater degree in your organization. SOA and COTS have biases and while not perhaps completely orthogonal, you certainly can’t take full advantage of both simultaneously without having a rather large conceptual dividing line in the team doing the work.

COTS strategy embraces a stack in most cases, or out-of-the-box-instant-integration. Systems are configured by default to work with each other in certain dimensions, and those dimensions are most often walled garden integration paths either not open to outside systems or not surfaced in a way that effectively enables interoperation with other stacks. The benefit and bias is one of getting up to a certain level in a very short period of time. Most people would think Microsoft with this strategy, and they are perhaps the best at enabling the integration in the stack, but Oracle, BEA, IBM, Sun and many, many other vendors to this in varying degrees, markets and technical layers.

The price most often is in the ability to swap out a piece of the stack if it doesn’t suit your business needs or if it needs to be customized beyond the ability of that integrated stack. At that point the benefit most often has to be unwound to a large degree and portions reconstructed to gain the original integrated functionality back as well as the desired extension. Tightly integrated systems in their very nature are less flexible outside of their designed purposes and capabilities. That is the trade-off in all software. Tight integration with speed and efficiency in exchange for a loss of flexibility and openness. If somebody says you can have both, check your wallet. They should be telling everyone how to change the art of the design trade-off in software engineering worldwide rather than selling you a product stack.

The other side or axis if you stick with my observation, is SOA. SOA is designed around a loose-coupling, highly flexible approach. Swapping a component out is much easier in this case, as the integration is abstracted and highly flexible in nature. The system can be tailored to bring many technology pieces together, and arrange and integrate them in many ways. The approach also seeks for the services to be somewhat granular. Discrete, and at any rate smaller than a COTS stack or large and highly capable product set. Vendors sell more of the enablers of this, and components in those COTS stacks also expose themselves and pieces as services.

The trade-off with SOA is that you don’t get a whizzy-integrated system out of the box, and it’s going to take some work and discipline to get the systems work decently well. The advantage you are taking the hit for is flexibility and agility and the ability to bring entirely new components, services and capabilities into the mix with very little pain and rework comparatively. You also, as a side-effect, are not nearly as beholden to a single vendor as you are if you wire everything into a single COTS stack, as the COTS integration points are not, as a rule, generic.

That doesn’t say why the two are orthogonal though. As I note, the COTS products can expose capabilities and features as services to be used in the stack. But by orthogonal, I was talking organizational strategy. One of the two needs to take precedence to really be able to get the proper leverage out of either solution.

The COTS solution requires the team to become expert at building and customizing that vendors products, and building on that stack. This isn’t a C# vs. Java argument, this is getting a team of developers expert with Exchange Server, Sharepoint, Commerce Server, BizTalk and other vendor systems. Expert in building solutions on top of those systems, and taking advantage of all the capabilities they create in each other. Each of these systems has a set of capabilities, and you learn to use and extend them and the stack.

The other side is a team that is expert at learning the boundaries of systems, often but not always smaller systems or sets of services, and integrating, sequencing and orchestrating them together. If the invoice system isn’t doing what the business needs, the approach looks at how to augment it with another system or replace it entirely without deconstructing the enterprise.

Where COTS would extend and customize the existing system to fix the issue, and thereby become expert in extending and partially writing/customizing the inventory system and generation process (something I would note you expressly bought the COTS piece so you would not have to do it), the SOA approach looks at getting the tool that does solve the needs for the invoicing working within the enterprise, but that process is around getting information in and out, and controlling the system. It does not get into the system itself.

The experienced ones will know full well the environment is not this cut and dry. I am not claiming that it is, but polarizing the backdrop to better see the trade-off. The trade-off is what kind of team and enterprise you want as the main driver and focus. Most decent sized enterprises will have both sets of people, as there is always a bit of COTS customization to do (it’s not that big a deficit to throw the product out) and there’s always a bit of SOA or Application Integration (The SAAS provider for CRM doesn’t talk our COTS stack) but the bias is a conscious decision that affects the team. Do you want the IT group to bring in solutions fast and cheap (COTS) by default and specialize in a specific set of vendor tools as their primary skill set, or do you want the IT group to work to put together new and legacy systems that fit your business and spend the time putting those pieces together in flexible ways, taking a bit more time and money to do so? There is a long list of advantages and disadvantages to both. I contest that you need to pick one of the two as your primary thrust (or neither if that’s your preference), but you can’t honestly pick both.

Currently playing in iTunes: On My Way by El Chupacabra