The "bad interpreter" Bad Error Message

Paul Brown @ 2006-11-26T14:44:00Z

Every so often, I try to run a shell script and get the otherwise unhelpful:

: bad interpreter: No such file or directory

It always takes me a few minutes to remember that this is from MS-DOS line endings, and this is the message that there's no interpreter named /bin/bash^M. The Emacs quickie to clean out the line endings is:

C-x [ENTER] f unix

From the commandline,

cat -v file

will show the ^M, and

cat filename | tr -d '\r' > newfile

will remove them.

(comment bubbles) 0 comments

Peanut Butter, Jelly, and Effectiveness of Engineering Spend

Paul Brown @ 2006-11-26T03:30:00Z

I spent some time in the jungle, so it was interesting to read the Yahoo! "peanut butter" memo for an inside glimpse of another one of the Internet behemoths, draw a few unfounded conclusions, and make some comparisons. (The obligatory disclaimer here is that even when I did work for Amazon, I didn't speak for them, and I certainly don't do so now.)

A quick digression on peanut butter. I ate plenty of peanut butter growing up, although it was always Adam's. Jif, Skippy, and their ilk were rightfully regarded with some disdain because of the non-food substances (e.g., "fully hydrogenated vegetable oil") that they contain, but real peanut butter is generally good stuff food-wise: healthy oils, calorie-dense, high in protein.

My first observation about the letter was that reading it was a bit like a dog eating peanut butter. An SVP at an Internet major should be able to pound a diamond into dust in a few sentences. While a problem list is good fuel for an off-site or brainstorming session, information flows up the chain and direction flows down; put another way, there were a lot of nouns but not a lot of verbs in the memo.

My second observation was that I don't really think that Yahoo's doing so badly, even if the letter's factual in every respect. (See, e.g., this commentary for a "street-oriented" perspective.) I like to look at a metric that I'll call business-effectiveness of engineering ("BEE"), and it's computed as:

       1-(revenue(t)/revenue(t-Delta))
B(t) = -------------------------------
          1-(cost(t)/cost(t-Delta))

for some time range Delta, e.g., a year or other financial reporting period. Taking the numbers from SEC filings by Google, Amazon, and Yahoo:

Symbol2004
BEE
2005
BEE
3Q2006
BEE
AMZN 3.10 0.37 0.57
GOOG 0.88 0.80 0.92
YHOO 1.56 0.97 0.50

The 3Q2006 number is computed versus the 3Q2005 number. I've pulled numbers from the financial roll-ups in the 2005 10-K (AMZN, GOOG, YHOO) and 3Q2006 10-Q filings (AMZN, GOOG, YHOO). (I should add eBay to the list, but maybe later; for comparison, their BEE for 3Q2006 is 0.91. Salesforce.com has a 3Q2006 BEE of 0.82.)

The numbers suggest that Yahoo's and Amazon's core business models, vis à vis their ability to execute in terms technology and engineering, are essentially at end of life, since it costs $0.50 of engineering labor to buy $1.00 of revenue. (Yahoo is profitable and could afford to spend significantly on growth if the raw materials (i.e., smart people) are available in sufficient supply; Amazon has less fiscal wiggle room.) This shouldn't be surprising — it takes a lot of software to run a big Internet business, and there's a pretty good chance that not all of it was written by top-notch folks working under clean-room conditions... That said, Amazon is trying to leverage its core expertise in operating its server fleet (and they are very good at it) into new lines of business (S3, EC2, etc.), and all three have been rolling-up customers, partners, or players in their respective spaces: Amazon is consolidating online retail, Yahoo is consolidating social and personal software, and Google is consolidating the on-line advertising business.

The prescription for Yahoo seems simple enough:

  • Consolidate. Keep the peanuts and salt but flush any fillers that accumulated after the last bust.
  • Avoid a money fight with Google by innovating from within, strategic investing, or grabbing properties early. (Not buying YouTube was a miss; knowing that video sharing was hot and not already having or owning a hunk of a parallel property is a bigger miss.)
  • Ensure that offerings are readily identifiable and usable by regular folks. Having two photo sharing services isn't a sin, but having any difficult to use, locate, or understand services is.
  • Use social context (rather than keyword inference) to target advertising.

As for just how to do it, since I'm not an SVP at Yahoo, I'm not on the hook for that part...

(comment bubbles) 0 comments

Economics Lesson for eMusic

Paul Brown @ 2006-11-23T01:34:00Z

I've been a happy and active eMusic user for the past several months with a monthly subscription in their highest tier, and I bought a booster pack if I got bored mid-month and there wasn't anything really compelling on Bleep. On a per-track basis:

MONTHLY :: $19.99 / 90 tracks = $0.22 / track
BOOSTER :: $14.99 / 50 tracks = $0.32 / track

However, they recently reshaped their pricing and packaging; the new per-track prices:

MONTHLY :: $19.99 / 75 tracks = $0.27 / song
BOOSTER :: $15.99 / 30 tracks = $0.53 / track

The per-track price impact is a whopping 36% increase:

OLD :: $34.98 / 140 tracks = $0.25 / track
NEW :: $35.98 / 105 tracks = $0.34 / track

The aggregate price increase aside, the fact that the monthly subscription tracks and booster tracks are different goods (at least in that they have different prices) should have tipped eMusic that they might be shooting themselves in the foot. My new purchasing habits will be the monthly tracks only, making the pricing change a net decrease in revenue for eMusic of $14.99 — whoops. Hopefully someone there had heard of price elasticity and wasn't actually expecting to get 36% more out of me...

eMusic was doing a great job of nickel-and-diming me, but I'm not so fond of being dime-and-quartered as an encore.

(comment bubbles) 0 comments

The Empty Accent

Paul Brown @ 2006-11-19T17:53:00Z

Not to be left out, I took the quiz, and it got the right answer, i.e., I have the same accent that the people on TV have:

What American accent do you have?
Your Result: The West

Your accent is the lowest common denominator of American speech. Unless you're a SoCal surfer, no one thinks you have an accent. And really, you may not even be from the West at all, you could easily be from Florida or one of those big Southern cities like Dallas or Atlanta.

The Midland
Boston
North Central
The Inland North
Philadelphia
The South
The Northeast
What American accent do you have?
Take More Quizzes

Florida, Dallas, or Atlanta? I don't think so.

It would be easy enough to come up with an equivalent short quiz based on food and place names, e.g., "Does 'sandwich' have an 'm' in it?" or "Does 'Boston' have an 'r' in it?" or "Does 'tea' rhyme with Lee?"

(comment bubbles) 0 comments

Mathematics Education and the Lowest Common Denominator

Paul Brown @ 2006-11-18T03:26:07Z

From one of Steve Yegge's rants:

Geometry, trigonometry, differentiation, integration, conic sections, differential equations, and their multidimensional and multivariate versions — these all have important applications. It's just that you don't need to know them right this second. So it probably wasn't a great idea to make you spend years and years doing proofs and exercises with them, was it? If you're going to spend that much time studying math, it ought to be on topics that will remain relevant to you for life.

Sigh.

Unfortunately, there is no canonical ordering of the pedagogical cart and horse in mathematics. Should concepts be rigorously defined and developed at the expense of motivation, or should rigor wait until intuition has been nurtured? My own belief is that the two need to proceed in lock-step so that a student neither becomes bored nor grows careless, but that rigor must be preserved. Rigorous thinking should be the asset that a student carries away from a mathematics course, rather than any particular piece of knowledge or technique. The disclaimer is that I used to be an academic mathematician — completed a Ph.D., spoke at conferences, took an academic job, published some papers, etc. — but I make no apologies for my prejudices about teaching and learning mathematics, as they are the product of knowledge and experience rather than ignorance or malice. (I still have some results that I should write up and publish, but I have a secret plan to spend some of my golden years doing math, something like what R. M. Foster did with his semi-recreational interest in tri-valent symmetric graphs.)

The role of mathematics as queen and servant of science complicates the basic economics of teaching mathematics in a university setting. The various non-honors flavors of calculus are often referred to as "service courses" in that those courses are taught by the mathematics department as a service to other departments. Enrollment drives staffing, be that full-time faculty, adjunct faculty, or graduate students, so it behooves a mathematics department to hang onto calculus courses in order to preserve headcount. This creates tension with other departments who'd like to have the lowest possible barrier to entry and spend time on the smallest body of material. For example, I was on the faculty of the mathematics department at UIC and thus privy to the sort of politics that only people with job security can engage in, and the economics department stirred up a hornet's nest by attempting to hijack calculus for their own marginal gain. The presence of Math 160 "Finite Mathematics for Poets^H^H^H^H^HBusiness" and Math 165 "Calculus for Poets^H^H^H^H^HBusiness" on the list of courses makes me think that the mathematicians lost the battle and won(?) the war in that the watered-down curriculum is present but being taught in the math department.

Watered-down, reduced-rigor service courses are also hard on mathematicians. It's like asking Alain Ducasse to serve Pillsbury "croissants" and convince diners to like it. (Do not poke Alain Ducasse or a mathematician in the belly; they probably will not laugh and might even pop-n-fresh you right in the nose.)

Back to the subject at hand, i.e., the bland preparation of Calculus that's served in schools across the country and obviously left an absence of taste in Steve's mouth. In spite of the fact that the word literally means a method of computing, the meaning and relevance of calculus are not bound-up in the rules and mechanical tricks needed to work contrived physics problems. Calculus is about developing an intuition for functions, about being able to reason clearly about behavior given higher-order observations (e.g., rates of change), about approximation, and about when an estimate is an approximation or not. To further extend the food metaphor, high school (and many college) instructors aren't to blame for the Hamburger Helper ("just add graphing calculator") calculus curriculum, since there's a very high probability that they don't know that Salisbury "steak" isn't really any contiguous part of any one cow — it's the same way they were taught.

More on this later.

(comment bubbles) 2 comments

Value to You versus Value to Them

Paul Brown @ 2006-11-16T02:04:36Z

Pricing is a black art, especially when it comes to things like a company, a highly specialized piece of software, or a business relationship with intangible benefits. The rookie mistake is to set the price according to the cost or even to use the cost as an anchor in explaining the price. The value to you in whatever units (dollars, years, number of bowls of Top Ramen eaten, broken marriages, quatloos, whatever...) is irrelevant to the purchaser, while the value to them is some proportion more than you can expect a rational actor to be willing to pay.

Putting the cost on the table in front of the potential purchaser can only weaken your position. Instead, keep the discussion focused on the value and how to ensure that the purchaser realizes it. If they try to low ball you, just say "no"; there's no need to justify it or explain your reasoning.

(comment bubbles) 0 comments

A Few Good Meals in Seattle

Paul Brown @ 2006-11-15T16:02:00Z

The wife and I try to put on the dog and get out for a good meal once a month, leaving the kid home with a babysitter. In my case, "dog" means a shirt with buttons and a pair of shoes that aren't Birkenstocks, but the scene in Seattle is decidedly casual, anyway. We've got a preference for tasting menus and local ingredients, and Seattle restaurants have been good to us so far.

The places that we'd go back to, with links and comments:

  • Rover's. Northwest cuisine with a French accent and inspired wine pairings (e.g., a white burgundy with lobster and beets). We went for one of the pre-set dégustations, but Rover's is the only restaurant I've seen that lets people mix-and-match off of tasting menus. Like lots of restaurants in Seattle, no valet parking.
  • Canlis. Impeccable service (they do a no-claim-check valet service where your car is waiting for you when you walk out) and solid if a bit traditional menu. We inadvertently ordered too much food because the portions were larger than we expected.
  • Le Gourmand. More seasonal Northwest cuisine with a French edge. We happened to go during morel season, and a big, saucy plateful with some venison as a garnish was part of the meal. If his reputation holds, the morels were probably gathered by the chef himself.
  • Sitka & Spruce. Creative small plates, local seasonal ingredients, and a chalkboard menu on the wall in a tiny space. Here's a nice review with pictures in a local "metroblog".
  • Elemental. Small plates with a fun "skip the menu and just bring me some food and wine" guessing game dégustation. The only negative with the meal was that the pairings included full glasses of wine, so we left both stuffed and stupefied. Like Sitka & Spruce, Elemental is tiny (~20 seats), and fills the tables for a first seating promptly at 5:30PM. (We got turned away once by arriving at 5:35...)

The Herb Farm for a game-centric menu is up next.

(comment bubbles) 0 comments

All Posts contains 399 items in 57 pages of 7 items each:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57