Tag Archives: Business

General

Now, that’s service!

I just had another good customer service interaction. Excellent, actually.

Last night, I ordered some bookshelves online from Staples. Before I ordered, I happened to notice a $75 off coupon for any online order of $290 or more. But I forgot to add that when I placed the order.

Today, I thought, hey, why not try getting them to add the coupon after the fact? (I couldn’t modify the order directly as it was already being processed).

I found the link to a live customer service chat pretty easily, gave them my story, and they immediately credited me the $75+tax. Yay, Staples!

  • First, $75 off is a nice coupon.
  • Having a link to a live chat for customer service, and making it easy to find, is great for a guy who doesn’t like to use a phone for such things.
  • Answering the live chat connect request within 20 seconds is better than expected.
  • Immediately crediting me when it was really my fault and when the order was already being processed is just ‘wow’.

Me likey.

General

Teaching programming

Someone (I don’t really like to mention a lot of specific names on my blog) asked me today what suggestions I might have to someone who’s about to start teaching a university course in programming in MIS. I had some fun hypothesizing about it; here’s what I wrote:

[I have to preface all my remarks with: I’ve never taught anything bigger than parts of a three-day course in the architecture of a specific application, and even then I didn’t try any of the blue-sky ideas I’m about to mention. But, if I did try to teach something like a college course, I would try them.]

My first thought is that the most important thing to emphasize is that programming is about structuring thinking and activity, and not really about the structure of computer programs, so I think a project-based approach seems like a good idea.

I’m going to just go full-hypothetical here and give a transcript of the first monologue I’d give :-). Hopefully people would interrupt me…

“Contrary to what you may have been told, programming is not really that much about languages and syntax and stringing together a series of canned solutions. Well, good programming is not about that. Mediocre programming is about that, and you can get by in the commercial sphere being a mediocre programmer, so if anyone is truly satisfied with that, we can have an independent study course where I assign you a textbook and you do problem sets and tests.

However, what I’d rather we all do is learn good programming, and by the method that I think makes most sense, which is to actually build something together and enjoy building it. Good programming is about structuring thinking and activity, both on your own and with others. It’s really just a particular discipline of problem-solving and communication, both of which I assume you all know a good deal about.

The project we’ll be doing is the software for a POS system. You might think “that’s boring”, which I hope to convince you doesn’t have to be true, and you might think “that’s quite practical”, which is true but not all that relevant.

What is relevant is that it’s something big enough that it will take the whole semester. Today is the last ‘lecture’ of the class. I mean, there’ll be plenty of opportunities to take notes if that’s your thing, but what I’ll be doing is not lecturing; I’ll be participating in the discussions that come naturally from the project, and bringing in whatever I can from my years of experience when the need arises. You’ll want to take notes on what you and your classmates say more than on what I say.

If you’re thinking about grades, and it’s OK to admit that you are, I think everyone will be graded by classmates. I won’t let you be too hard or too easy on one another, but other than that, you’ll be deciding grades. Inherent in the structure of a complete software system is some sort of assurance that what you’ve built is high-quality. So, for example, there’ll be people making test systems that will test modules that other people are making. It will be clear to both of those teams how well the other team did. You’ll be giving grades at the end of the second, fourth, eighth, and sixteenth weeks.

Speaking of teams, let’s start talking about the pieces of the system and the workflow for building them. I think we can accommodate everybody’s interests and talents somewhere in here.”…

[Some pieces of work/ideas I might bring up if they didn’t come up: user interface/ease of use, network protocols, language and coding style decisions, source control (use SourceForge and get the added effect that ‘anyone in the world might see your code’), error handling, exception handling, auditing, security, existing code and libraries, storage and redundancy, issue tracking, performance, testing, data formats (i.e. floating point is not necessarily good for financial data), customization/branding, data mining, what happens if the whole thing ‘crashes’, legacy system integration, self-check systems, …]

General

PCHDTV

I was pondering new business ideas, and came up with a great new convergence device. I really need some help with it, so I’m posting a plea to the wide world. However, I don’t want to give away too much information about my design (patent pending, patent pending, patent pending!).

So, I’ll just say this: if you have experience relevant to designing lubrication systems for machines that feed card stock at 7700 mph or faster, please contact me for a great partnership opportunity.

General

Burning down libraries remotely

Seeing this article over at Wired (Public Libraries, Private DRM) reminded me of a cool thing you can do to help accelerate the downfall of civilization:

  • Invent a DRM scheme with revocation (naturally, most of the ones coming out, such as AACS, have this).
  • Get useful content recorded with your scheme, then into libraries, through the force of the marketplace.
  • Let people go on thinking that libraries are a way to preserve cultural content beyond its life in the market and outside of the hands of future censors.
  • Revoke, revoke, revoke! The content magically disappears off library shelves (given that devices can no longer read the content, ever again).
  • Instead of revoking explicitly, you can also go out of business, release a new and incompatible version of your DRM scheme, have a bug in your DRM, let your servers go down, etc. The possibilities are wide open.
General

Good business model

This is kinda cute. The One Laptop Per Child project is talking about selling the laptops to the public with a “buy 2, get 1” model. I’ll probably buy one, though more for the design/geek factor than for philanthropic reasons.

General

Bad math again?

I wonder who’s really, really bad at math: me or George Gilder and the Wired editors:

“To handle the current load of 100 million queries a day, its collective input-output bandwidth must be in the neighborhood of 3 petabits per second.”

(From page 2 of a Wired story).

I’m willing to concede that there are things I don’t know about Google and/or Gilder’s calculation (not to mention his penchant for big numbers), but according to my calculation, that’s off by a factor of about 20 million. What a big number _that_ is! I’m impressed! I can’t think of any junk I could add to my calculation to get anywhere near that.

For your reference, since you care enough to read to the end of this article, my calculation was thus: I did a Google query and added the 5kB page to the two 5kB images (which are usually cached for me, but we’ll assume they never are) plus 1kB up for the request, to get 16kB per query.

16kB * 8b/B * 100e6/day / 24hr/day / 3600s/hr = 148Mb/s

3e15b/s / 148Mb/s = 20e6

General

“Price Tag for Lost Productivity”

Ya know, I was going to construct a list of all the ways in which this sort of study is wrongheaded, but then I thought, you have to get it to get it, and if you don’t, my arguments won’t help… So, I guess there’s no point to this post, but still:

Price Tag for Lost Productivity: $544 Billion

General

DVD mystique

It’s interesting to me that when I buy a DVD of episodes of a TV show, they’re quite a bit better than they were on TV. There are a number of possible explanations for this, and no doubt they add up, but I think the biggest difference is that there are no commercial interruptions. Not only does this let the content flow properly, but I’m also more likely to allow myself to invest my attention when I know that nobody is going to try to hijack it to hawk garbage.

General

Work space

Hmmm, might have to finally go read some of this guy’s stuff, just because he’s a lot like me in this way: Malcom Gladwell/My Work Space

General

Specs, waterfalls, terminal completeness

I’m working on a project in which some of the deliverables are specifications. I haven’t written many documents that would properly be termed ‘specs’ before, so I’m learning a good deal from the experience.

One thing I was just pondering is that if one works for the goal of making a ‘complete’ spec, one is assuming a waterfall model of development (Wikipedia: Waterfall model, Why people still believe in the waterfall model), which is bad. In real life, a spec is a sort of snapshot of a continuing process, which is therefore not ‘complete’ (unless your philosophical orientation says that a thing is always complete in itself by its own definition).

This does remind me, though, of one of the complaints one often sees about consultants. One way to relieve the tension between completeness and a continuous process is to construct a shiny veneer of completeness, then take the money and run before the process comes back around to show the holes in the veneer.

Of course, it’s necessary to choose some point at which to exchange artifacts for money and call it “done enough for now”, so maybe it’s all in the attitude.