I Think We Got All 4

Remember, a few months ago when crude oil was at it’s highest (Unleaded hit >$4 in my neighborhood) and natural gas was spiking as well?

Considering both are falling (Unleaded is currently $1.85 in my neighborhood), both are sold in US Dollars on the world market, and the US Dollar is trading at it’s highest value in 8 months, I’ve been wondering what’s been so dramatically changing the value of $1 over the course of the year.

While I’m still looking for an answer, I thought this 2 year old blog post was quite prescient.

“…let’s hope Democrats can take the White House in 2008 through good politics and good policy rather than from a crash on Wall Street and a stagnating economy.” – Mark Thoma – University of Oregon, Dept of Econ – on Monday, December 4, 2006

This is the great thing about the proliferation of blogging and good search engines. Separating relevance from timeliness.

Thoma quotes a Robert Reich posts that describes how Hank Paulson’s been playing chicken with the Chinese (via interest rates) for at least 2 years. Smells close, but not quite it.

13 Levels of Engagement: Football Edition

There are a small number of NFL games I watch each season. Sunday’s Vikings vs. Packers game always makes the list. Sitting in the comfort of my own home – just a couple miles from where this down-to-the-wire game was played – my mind wondered how engaged I was in the game.

I sketched out this scale:

  1. Reading about the game
  2. Writing about the game
  3. Listening to commentary on the game
  4. Watching the game on television
  5. Commentating on the game
  6. Changing your clothes for the game
  7. Betting on the game
  8. Watching from the stands
  9. Watching from the bench
  10. Refereeing the game
  11. Coaching the game
  12. Playing the game
  13. Being the ball

(I’m a 4. Even my son’s a 6.)

Notice the further down the scale we go, the fewer the number of people participating and the greater their participation.

Seems consistent with the 1% power law behind Wikipedia.

Financial Shock: The Bad Decisions that Got Us Here

Financial Shock A 360º Look at the Subprime Mortgage Implosion, and How to Avoid the Next Financial Crisis is an amazing read.

Amazing for 2 reasons:

  1. It was published in early 2008 and
  2. is covering – in-depth – the issues the news media is just now picking up on – e.g. the Fed nearly bailed out Bears Stearns a year ago – in 2007 – when 2 of their big hedge funds collapsed.1

Our financial institutions, like our economy, are complex and global in reach. Zandi does a fantastic job of navigating that complexity and arguing that it wasn’t a single decision, or policy change, that caused the collapse, it was many Really Bad Decisions.

I’ve been dog-ear-ing the pages containing jaw-droppingly bad decisions, easily a third of page have their corners down.

Here’s just 3:

  • CDOs
  • ARM
  • Negative Amortized Mortgages

1. Stearn’s said, ‘No thanks. We’ll handle it internally.’ Add this to the Bad Ideas List.

9 Things Cullect Taught Me About Software

  • Forcing people to create an account to use your software is a bug.
  • if you’re not scared to deploy, you’ve stopped caring.
  • Murphy is alive and well.
  • Google and a bookself of technical books can be equally useless.
  • Good software is like an iceberg.
  • if you ask for money, people will give it to you.
  • Software is as hard as you make it. Don’t.
  • Most features can be removed and no one will notice.
  • A great project will eat everything in it’s path.

In Bigger News: FCC Opens White Space & Frees iPhone

I was always baffled by Apple exclusively giving the iPhone to AT&T. It’s not in Apple’s DNA to tie the customer experience of their products to someone else. Exclusively or otherwise. Multi-year or otherwise. Apple’s built their reputation on owning and controlling the entire stack; OS, applications, hardware. Hell, Apple’s never been crazy about having a development community either.

With the FCC’s move to open up the unused television spectrum for unlicensed use (think WiFi on a nationwide scale), the Apple + AT&T partnership feels more like a hedge on Apple’s part. A way to get the product out ahead of the curve.

In a couple years, the technology to use this new spectrum will be on the market and stable.

By that time, Apple’s agreement with AT&T will be expiring. Think Apple will be selling the iPhone with any carrier when nationwide spectrum is available ‘for free’?

No.

Think they’re be any difference between the iPhone and the iPod Touch at that point?

Again, no.

Also, I see this as another point confirming my prediction that the move to digital broadcast in Feb 09 will wipe out the broadcast television viewing audience.

This is as historic a moment for our country as electing the first African-American POTUS.

Not because of how it impacts something as luxurious as Apple products, but because it wipes out the need for telco carriers, opens up the municipal broadband market, and with a ‘flip of a switch’ internet-ifies rural America.

Decision 2008, and My Vote Goes to…

Attention, St. Anthony Villagers, your sample ballots are here (Hennepin | Ramsey)

My votes;

Presidential & Vice Presidential:
Barak Obama & Joe Biden

U.S. Senator:
Dean Barkley

U.S. Representative District 5:
Keith Ellison

U.S. State Representative District 54a:
Mindy Greiling

Constitutional Amendment: Clean Water, Wildlife, Cultural Heritage and Natural Area: Yes.

Overall, the decisions were easy. Either the incumbents are doing a great job, or their competitors irked and frustrated me multiple times.

TiVo Has Until Feb ’09

“But TiVo has repeatedly failed to gain traction in the marketplace even though it has been hard at work creating innovative ad solutions and coming up with ways to help advertisers and networks recoup ad dollars.” – Meghan Keane

I’d flip it around – Tivo has failed to gain traction specifically because it’s been hard at work creating innovative ad solutions.

Rather than focusing on replicating the clutter and distraction of broadcast advertising, TiVo should have been focusing on improving the experience of capturing internet-based video 1. Completely bypassing the confusion of the switch to digital broadcast and making browsing YouTube on your TV as easy as browsing YouTube not on your TV.

Maybe even go so far as offering a box without a TV tuner – internet only.

But they didn’t and like Palm, their lunch was eaten by Apple.

My broadcast TV viewing has dropped precipitously since we purchased the TiVo 3 yrs ago. It’s down to 1 or 2 programs that TiVo rarely captures in any watchable way, and TV via Netflix.

Just yesterday I received an email from TiVo offering me $100 off their HD box – bringing the price down to $200 + service. Will we upgrade when our standard TiVo turns into a doorstop?

Right now, I’d put money on us dropping broadcast TV altogether. It’s not how I see us interacting with video after Feb 2009.

1. TiVo’s Future is in Videoblogs Not in Network Television

How To Cache Highly Dynamic Data in Rails with Memcache – Part 1

There are a number of ways increase Ruby on Rails performance through caching. Caching works because things don’t change….or don’t change frequently.

In Cullect, almost everything is dynamic, even Cullect’s HTML presentation format has 3 different states depending on access privileges and there are 8 other presentation formats available.

The standard page, action, and fragment caching make less sense when the ‘heaviest’ data are also the most dynamic – the feed items.

For the feed items, I’m using a building a custom memcached name-value-pair holding 10 attributes describing the request as the key name and the items themselves as the key value.

From the ‘show’ action in my controller:

key = "
#{item_count}:
#{attribute_1}:
#{attribute_2}:
#{attribute_3}:
#{attribute_4}:
#{etc...}"

Notice the first attribute in the key is the total number of items within a specific Cullect Reading List – which will change when a feed updates or an item is hidden – automatically expiring stale caches.

Then, I check the cache for the key and pull the items from the cache if it exists.

if Cache.get(key)
@allitems = Cache.get(key)

If there’s no key in the cache, I do the query and put the retrieved items into the cache.

else
@allitems = get_items(attribute_1, attribute_2, attribute_3, attribute_4, etc)
Cache.put key, @allitems
end

While this speeds up subsequent requests, there’s still the question of speeding up the initial request. I’ll save that for part 2.