Peder M Rice

An IT blog from Husker country

AT&T CEO: Carriers Can't Afford Big Subsidies for Devices Any Longer - MacRumors Forums

The world is complaining today about AT&T’s plan to cut back on phone subsidies

Go ahead and stop giving me a subsidy. I’ll go to Verizon or Sprint.

Wow, backlash in 3……..2………1………

I’m not going to shell out $700 for a new phone every few years. Are they crazy?

However, I think these complaints come from uneducated consumers that have been overpaying for their phone contracts.

Phone subsidies have become nothing more than expensive loans to purchase a phone. The proof is in the value comparison of prepaid vs contract plans. Look at the following scenarios of an iPhone 5S purchase off-contract vs on, assuming 2 GB of high-speed data per month.


Phone cost: $199
2-Year Plan Cost: $2,280
Total: $2,479

Straight Talk

Phone cost: $649
2-Year Plan Cost: $1,080
Total: $1,729

AT&T comes out $750 ahead for a phone that only costs $649. If you think of this as a phone loan, you’re basically paying a 50% interest rate.

You’re far better off getting out of the contract game, saving up for a month or two, and paying for a phone upfront.

Sneeze Tracker

This allergy season, I have created a simple Google Docs spreadsheet to track my sneezes, a Sneeze Tracker®. You know, for, um, science.

I want to eventually tie this data back to pollen, ragweed, etc. levels so that I can eventually develop Sneeze Analytics® and predict when, and with what count, I will sneeze.

My results for today:

9:32, living room, 3 sneezes

10:24, living room, 3 sneezes

11:25, living room, 3 sneezes

I’m basically the Old Faithful of sneezing. I will set my watch for 12:25 or so, and I will prepare for a sneeze onslaught.

Web DynPro for Java

I am working on a problem with a Web DynPro for Java application. As is often the case in an enterprise applications developer role, we are expected to support applications and technology about which we have little or even no experience, and that’s generally all well and good when working with a community-supported technology.

However, Web DynPro for Java has one of the saddest developer communities I’ve ever seen. While there are quite a few threads over at the SAP Community Network, many of the threads do not have replies. If they do, they are often in broken English and often don’t even answer the question; they often ask, “Why would you want to do that?” Tremendously unhelpful.

Furthermore, so many posts are from 2005 or 2008, it seems, presumably when there were software updates that caused bugs to pop up everywhere for developers. With posts that old, it’s difficult to even know if anything is still relevant.

Which brings me to the why: SAP has a support model where any of its customers can relatively simply open a support ticket that gets answered within a few days. This is great! No matter what problem you’re having, generally speaking, an SAP support person can help you out.

But this gets to, I believe, the heart of why SAP has such a small web community: the knowledge from these support tickets never makes its way to the forums. Since everyone can just create support tickets to get answers, there is no incentive to ask a message board. In the long run, I think this dooms your technology to the garbage heap, as the community is the source of a ton of “wouldn’t it be cool if” type of posts that encourage innovation and that keep a platform fresh.

This is my short word of caution about enterprises buying development solutions from folks like SAP rather than using widely available technologies like .NET, Java, Ruby, Python, etc. I think that a support model where a single entity has all the answers is a model for a different era, and I think that forums and sites like StackOverflow are better suited for developers.

If I were an SAP Development Evangelist, I would be working hard to change the culture of SAP Developers, to encourage forum posting, and I would task my support folks with answering SAP questions on StackOverflow.

Bypassing Omaha World-Herald’s Article Limit in Google Chrome

I wrote some really simple CSS rules for the Omaha World-Heralds article limit. Presently, the OWH restricts you to 20 articles per month before a really annoying <div /> appears over the screen and tells you that you need to subscribe to view any more articles.

AdBlock doesn’t do a thing with the popup, but with the Google Chrome extension Stylebot, we can simply hide the elements that comprise the popup.

First, go to the Google Chrome Web Store and install the Stylebot extension.

Second, visit and click on the “CSS” button that now exists in your address bar.

That will bring up the Stylebot editor for Click on “Edit CSS” to manually enter specific styles.

Paste in the following and hit “Save”

#gregbox-outer, #gregbox-outer + div, #gregbox-signInTab, img[src=""] { display: none; }

The annoying OWH article limit should now be gone!

Google Reader Replacement

I know this is all over the internet, but we need to unite around a single RSS reader to replace Google Reader now that Google has given it the axe. We can finally bring back the social features that we all used to enjoy with Google, back in the days before they stupidly pursued Google Plus!

While NewsBlur is down, I’m taking a look at The Old Reader, which appears to be a spot-on copy of Google Reader before Google decided to strip it of its social features.

Can’t wait to have the old sidebar back!

Another Horrible Online Shopping Experience

I posted a while back about how terrible searching for products can be on,, etc. I have another example: buying a Christmas tree.

My girlfriend and I have vaulted ceiling in our living room, so we’d like to get a taller tree. Specifically, we’d like to look for 9’ trees instead of 7.5’ trees. Shouldn’t be a problem, right? Wrong.

Well, this is stupid. Nearly every single tree in the store is either 7.5’ or 9’, but they lump them together. Thanks Target, that’ll really help me find what I’m looking for.

Additionally, there’s no way to filter out pre-lit or bare trees. I basically have to filter through 139 trees to find maybe the two or three that they even sell that fit my needs.

Which brings me to the biggest requirement we have: the tree can’t be very wide! We’re fitting it in a space next to our fire place, and we really can’t have a tree wider than 46”. There isn’t a single way to filter on that! I have to click into each tree’s detailed specifications to find out if it will work for our space.

Buying online isn’t like buying in the store. Online shopping should be built around metadata and filtering. How much work could it possibly be for the marketing team to add a bit of additional data to each tree?

Customizing TFS2012: TF400000 Exception: Fixed!

In my previous post, I tried to figure out how to customize the default iteration names in a TFS2012 Process Template.

Reading the exception text at all more closely led me down the path of investigating the “Groups and Permissions" tab of the Process Template editor.

The “@defaultTeam” was set to Iterations 1, 2, and 3 instead of my FY13 Q1, Q2, Q3 iterations. I’m not sure what @defaultTeam is—I’ll have to read up on that—but I simply pointed it to my new iterations, I was able to upload the Process Template.

Customizing TFS2012: TF400000 Exception

I’m attempting to modify the default iterations in my process template from Iteration 1, 2, 3, etc. to Iteration FY13 Q1, FY13 Q2, etc. However, that immediately trips this error when I attempt to upload my template:

Time: 2012-10-16T13:53:07

Module: Engine

Event Description: TF30162: Task “GroupCreation1” from Group “Groups” failed

Exception Type: Microsoft.TeamFoundation.Client.PcwException

Exception Message: TF400000: The following area or iteration path is not defined: Iteration\Iteration 1.  This path must be defined in the classification section of the process template.

Stack Trace:

   at Microsoft.VisualStudio.TeamFoundation.PCW.GssStructureCreator.CheckPathExists(ProjectCreationContext context, String path, List`1 publishedNodes)

   at Microsoft.VisualStudio.TeamFoundation.PCW.GssStructureCreator.CheckTeamProperties(ProjectCreationContext context, XmlNode teamNode)

   at Microsoft.VisualStudio.TeamFoundation.PCW.GssStructureCreator.ValidateGroupsAndPermissions(ProjectCreationContext context, XmlNodeList groupXmlNodeList)

   at Microsoft.VisualStudio.TeamFoundation.PCW.GssStructureCreator.Validate(ProjectCreationContext context, XmlNode taskXml)

   at Microsoft.VisualStudio.TeamFoundation.PCW.ProjectCreationEngine.TaskValidator.PerformTask(IProjectComponentCreator componentCreator, ProjectCreationContext context, XmlNode taskXml)

   at Microsoft.VisualStudio.TeamFoundation.PCW.ProjectCreationEngine.RunTask(Object taskObj)

—- end Exception entry —-

Of course, Google is no help. Too few people customizing the process templates in TFS.

Given that other templates don’t use the naming convention Iteration 1, 2, 3 (some use Sprint 1, 2, 3), this error must imply that I have a reference to “Iteration 1” somewhere in my process template.

After looking in my work item type definitions, the Agile and Common Process Settings, and just clicking around everywhere, I still can’t find it.

Any thoughts?

Botched PDF viewer on iPhone makes it seem like there would be on-field ticket sales for the Nighthawks 2012 season
Typical worthless filters on a furniture online store.
Why is it so difficult to get decent filtering on online stores?  The single most important filter: how much space do you have? It&#8217;s impossible to find furniture by specifying how much room you have available.
Simple width and depth. Is that so hard?

Typical worthless filters on a furniture online store.

Why is it so difficult to get decent filtering on online stores?  The single most important filter: how much space do you have? It’s impossible to find furniture by specifying how much room you have available.

Simple width and depth. Is that so hard?