More Fun With Ads: Shower Mirror

As folks may recall, I started shaving more for Kim’s birthday. I like brushing my teeth in the shower, so I thought I’d like shaving in the shower, so I bought one of these shower mirrors from Linen ‘n Things (from The Sharper Image):

It screws into your shower head, and then it somehow trickles water over your razor. So, when you go to use the razor, it’s all warmed up. There’s a little flash-light that comes with it, I don’t really use it: maybe when it gets really dark in the morning.

Wastin' Time With Online Ads

I signed up for a
LinkShare account. That means I can slap up a bunch of ads on web pages, like this sweet one from the Franklin Mint:

BAAM!

I’m not going to do anything silly or anoying: I’m just passing the time. Maybe I’ll put up an ad for steaks if I get approved for the Omaha Steaks Program. Wouldn’t that be sweet? Steaks!

Blogines: Changing One Online Life at a Time

Susan explains how bloglines simplified her online reading:

I now go to one place and view all new items only. I no longer visit pages that have content I’ve already seen. I am able to consume far more information far more efficiently. I am quite simply in love with Bloglines.

In an email, she told me that she gets a panics feeling when she sees that a bloglines folder has 97 (or whatever) unread items in it…but then she realized that there’s always been those 97 unread items, it’s just that bloglines knows about them all instead of her having to hunt them down.

Re: Google Calendar

Damn, that’s a good insight. I’ve been longing for a calendar that would fit into my “digital lifestyle”: something with RSS feeds, the ability to make entries private/public/ACL controlled (at least like flickr has with me/family/friends/everyone), integration with Exchange (so I could load up all my work stuff), and sync’able to my iPod and other edge devices when they come around. Not all of those are ever together, so I haven’t really done any calendaring stuff beyond my work Exchange calendar. Even RSSCalendar doesn’t jump out at me as what I want.

All that me-blabbering aside, I like the thought of GMail w/Calendaring being a good SMB/Enterprise combo. If you put security all in it, you’d seal the deal. By “security all in it” I mean:

  • making so that email sent to other GMail people wasn’t “in the clear” like all Internet email is. This would allow you to knock out the concern that hosting all your corp. email would allow anyone who could sniff email to steal all your IP. So, if everyone in the company uses their email on GMail, you can have the same protection that an internal email server would have (where you don’t have to route emails out through the public Internet).
  • SSL up the entire connection to GMail (not just the login) so that people couldn’t sniff out your email while you were connected and reading it.

The other requirement for success would be to offer a free version (supported by TextAds, of course). Google could offer a pay one if they wanted that stripped out ads, added in domain names…whatever. The importance of having a free one is that groups within companies could skunk-works using it without having to go through the whole purchasing and IT gambits to get approval.

Once the groups started using it, everyone saw how damn cool it was, and that it had good ROI, TCO, and all around positive TLA compliance, then the wheels would be sufficiently greased to make it worth your trouble to go through the rigmarole that purchasing and internal IT departments foist on employees who want to pay for and introduce new technologies. It’s easier to officially start using something if you’re already unofficially using it.

And–BAAM!–Google would have another foot in the business-services market.

silverpants II Update

After a couple days, I have the new PowerBook more or less all setup:

  • All the major apps are installed and re-setup.
  • Matt Ray recommended some new apps that are super sweet: Desktop Manager for virtual desktops; uControl to remap the useless enter key to Fn, so I can get some sweet PgDn and PgUp action with my right hand; and iTerm for a slightly better term than Term.app.
  • Thanks to Chicken of the VNC, I can setup a VNC server on Windows boxes and run all the Windows apps I need to run at work…
  • …and with a few network drive mounts and symlinkin’ I can use the PowerBook for my day job work. Kinman‘s salivating over that. I predict he’ll get a PowerBook within the month. (You know you want it!)

Apple’s been doing some dumb-ass shit recently about rumors, but I still love their products. Hopefully the EFF will stop their shenanigans and get them back to just making bad-ass products. Too bad Apple needs their help with that.

LinkedIn

In my continuing efforts to goof off all weekend, I setup a LinkedIn.com account. I have figured out how to make my profile public (or if it’s even possible), and there doesn’t seem to be any RSS feeds for anything. The system itself seems pretty neat, primarily because people put in a lot of content — resumes pretty much — and lots of their friends/contacts tend to comment on them.

I found an old boss-of-a-boss type who’d recently changed jobs, and I found a few co-workers in there. They all put in lots of info about themselves that you’d otherwise never be able to find. So, it has plenty of interesting content, but it seems like too closed of a system, meaning I won’t be able to link it up with the rest of my on-line life, ironically enough. You can’t even put in a picture!

I’m sure it’ll be like my forays into things like Orkut.com — interesting for a week and then I’ll never touch it again — but if you’re in there, or otherwise want to get “linkedin” with me, send me an email or write a comment. It’s always interesting to scope out another feature-set, if anything else.

"What Plan B? What about Plan C"?


Today’s This American Life is a repeat, but the first segment is worth a listen. It’s about “Cuervo Man” (pictured above):

Reporter John Hodgman first encountered Cuervo Man on a press junket to Cuervo Nation, a small island owned by Jose Cuervo Tequila. Cuervo Man was wearing nothing but a Speedo, wraparound shades, and a red cape. Occasionally he’d stick a toilet plunger on his bald head. John was fascinated and eventually got to know Cuervo Man, whose real name was Ryan. Though the Cuervo act was Ryan’s Plan B, it had a special power that John couldn’t help but envy.

Charles and I ran into one of these party cataylist/marketing icons in Ann Arbor several years ago, The St Pauli’s girl. We didn’t get free beers, jut some sweet fotes.

Taking the Podcasting Download Sync to Other Edge Devices

I was looking through Ester Dyson’s photos, and thought, “I wonder if she uses a camera phone for all that?” So, I clicked on the camera info link for her latest photo, which says that it’s an HP Photosmart R707 (that camera info feature is bad-ass, huh?). I found a review that included this:

HP Instant Share makes sharing, printing and saving digital photos easy. Users simply take a photo and select its destination right on the back of the camera – up to 34 destinations, including e-mail addresses, online albums, printers and more – by simply pushing a button. When the digital camera is later connected to a computer or the optional camera dock, the selected photos are automatically printed and/or e-mailed without burdening friends with large file attachments. E-mail recipients see thumbnails of the images right in the body of their e-mail message, as well as a link to the web page where they can very easily view, print and save the photos, upload them to online albums and more.

I really like that idea: you have this little edge device (a camera here) that you create content in. On the device, you determine how to publish is (email). Then, when you plug it into to your computer, the software automatically publishes the info. I really like that kind of non-realtime publishing.

(In the case of HP Instant Share, I’d like it to send the entire photo instead of just a thumbnail. Then, I could hook it up to flickr. I’d take photos while I’m out, then whenever I hooked up the camera, it’d email off all the photos to flickr.)

With all the edge devices we have now-a-days (iPod, camera, phone, etc.), this type of syncing thing would really simplify things. The whole middle step to publishing content from these devices often takes more time than creating the content itself.

Indeed, I’ve been going through a big uptick in trying to connect together and sync up all my devices:

  • AudioScrobbler is finally picking up on the iPod music I listen to. So, I can hook up my iPod to silverpants, and in a few seconds, my AudioScrobbler page lists all the music I’ve been listening to. I understand there’s some social-networking/recommendation thing that kicks in once you’ve uploaded enough stats. And, there’s an RSS feed, of course.
  • I figured out how to get pages from my iopen (I have
    the old one
    , not
    the sleek, new, black one
    ) to automatically open an email so I can email them to flickr. The problem is I still have to click “Send” on the email. I guess that gives me the chance to enter a description, but I’d rather it just shoot them up there. The only problem is that the iopen software only works with Windows, so I’m stuck using it at work. Here’s en example of the output.
  • I got an iTalk the other day, and I’m excited about using the recordings I can make with it for something. I don’t really have anything to talk about, but that sounds like a familiar
    beginning to the consumer->publisher cycle
    .

Now, why do all this? Honestly, I don’t really know for sure. One thing I have learned over the years, however, is that the more content about me that I put online, the more people get to know me, and the better my life gets re: friends, meeting new people, and even just figuring out more about myself, usually by going through the process of writing things up or just looking over all that self-reflective info.

And, I’m also just one of those people who likes publishing things, esp. online. I think I’m one of the legions of people in my generation and others who have a computer/net affinity/addiction: we just like spending time on our computers and the net. It’s s very calming and relaxing, like zoning out in front of the TV. Many people do both together.

…yeah, anyhow, the larger point was: I sure am having fun getting all my edge devices, net-spaced, and laptop to talk and share with each other. I hope it just gets easier in the future.

Podcast Recommendations

Back in the old days of podcasting (two or three months ago), I tried listening to non-ITConversations podcasts, like Adam Curry and Dave W. I didn’t like it at all: it was too self-referential.

After exausting my ITConversations downloads this morning, and finding PodCastAlley, I thought I try out some podcasts again. Here’s two I listened to while walking the dogs that I liked:

  • The Dawn and Drew Show – this is one of the alpha-podcasts as I understand it. I didn’t think I’d like people just sitting around talking, but Dawn and Drew and entertaining and funny. I never liked Howard Stern because it always seemed to be about 3 subjects (1.) the FCC hates me, (2.) check out those tits, (3.) listen to this guy fart a Foo Fighter’s song. That gets old for me in about 3 seconds. I can’t really tell you what Dawn and Drew talked about (there’s a funny skit at the end), but I laughed to myself several times. If anything, it was nice to hear (what seemed like) a functional couple having fun just talking about letters and sodas, chewing the fat with each other.
  • Infonomicon – on the other hand, these dudes are pure-out assholes. It’s got the level of shit-talk, ass-fucking, and making fun of everyone that you’d expect from two techie-males talking. It’s the kind of show where you wouldn’t be suprised to hear “dirty sanchez” or “chaco taco.” But, on the other hand, it’s entertaining, and I laughed out loud plenty of times. They don’t lay out the poop and pussy jokes exclusivly, it’s just the background chatter between other topics, mostly of about tech stuff.

So, if you’re one of the pod-people, I’d recommend those two. (Not Infonomicon if you’re one of those “easily offended” people.)

Technorati Tags

Like other folks I’ve been trying to figure out how to do something with Technorati’s new Tags feature. My blogging software — blogger — doesn’t seem to innovate anymore, so I probably won’t see an integration with Tags anytime soon in my blogging software.

So, I was trying to think of a way I could easily insert Technorati tags into posts without having to type them up each time. My first idea was to create a bookmarklet that would work like the following:

  • I type up my blog entry in blogger’s textarea/editor.
  • At the end of the post, I enter in the tags I want to apply as a space separated list of tokens, e.g., (without the quotes, on it’s own line), “ideas blogging tags technorati”.
  • I highlight the tags I typed in, and click the “TagItUp!” bookmarklet.
  • The TagItUp! bookmarklet takes the highlighted text, and transforms each into a Tecnorati Tag, and overwrites the highlighted text with this new HTML.
  • So, now, in the blogger editor window, I have my post up top, and at the bottom I have a chunk of tag HTML along the lines of:
    <p class="tags">Tags:
    <a href="http://technorati.com/tag/ideas" rel="tag">ideas</a>,
    <a href="http://technorati.com/tag/blogging" rel="tag">blogging</a>,
    <a href="http://technorati.com/tag/tags" rel="tag">tags</a>,
    <a href="http://technorati.com/tag/technorati" rel="tag">technorati</a>.</p>
    
  • See the bottom of this post for how it’d look.

(The <p> makes sure it’s offset at the bottom, and also allows you to apply a CSS style (tags) to it so that you can go into your CSS and make it smaller, hidden, or however you want it rendered.)

I don’t know JavaScript well enough for the time I want to spent developing that bookmarlet. I timeboxed myself at 1/2 an hour and just got frustrated with how slow the code/build cycle was.

Are there and JavaScript wizards out there who can whip the above out?

Update: of course, I should have figured someone else would have already coded up something like this.
The bookmarklet doesn’t behave exactly like I outlined above (it uses alert windows instead of highlighted text, and you have to cut-n-paste the HTML it renderes), but I tell you what, it’s good enough! I’d still like the highlighting then inserting functionality: it’d cut out the two steps of filling out the tags in the popup and then pasting them into my post.

Tags:
,
,
,
.

Malcolm Gladwell's Blink Shipping

Just in case you didn’t know, Blink is shipping now. I ordered up my copy this morning.

My reading habits is to read about 10 books at once, with about 6-8 of those taking a long, long time to read, and 2-4 of those being “rapid turnover” books that I finish in a couple days. I’ve only recently gotten to feel good with stopping reading a book to add another one to that pile, so the turn-over’s been improving recently.

…anyhow, enough about my reading habits. I’m hoping Blink will be one of the books I read quick.

I’m also a little worried that the book will just be a longer version of his Pop!Tech talk, but, what the hell, that’d probably be good too.

Usually, when I like a book, I like to read a whole cluster of similar books. With that in mind — and to get FREE Super! Shipping! on Amazon — I ordered his first book, The Tipping Point and Crossing the Chasm. I’m a few years behind in my biz-book of the moment reading.

Don't Need Too Much Info

Martha has an interesting post about people sending you huge
chunks of info (documents), instead of being a sort of editor/filter
and summarizing the point you need to know:

Now, instead of digesting the vast amounts of information at their
disposal and actually formulating a strategy, account execs forward
bytes and bytes of documents. Click! Just attach the PDF, and you feel
like you’ve done your job!!! But you haven’t. It’s like getting all
the source material for a big college paper, but no thesis statement
or cogent argument.

Worse, many times the people providing the info (the client and the
account folks) either don’t want to or don’t have time to process the
information at all, so the writer ends up being the only person who’s
really thinking about the project and how to construct the message. I
can do that, sure, but what ever happened to two heads being better
than one? It worries me, because a lot of times I’m guessing about
stuff, and nobody’s got my back to be sure I’m right. That makes me
feel a bit queasy, as I’m playing with people’s livelihoods.

This certainly happens a lot in the software world, esp. on large
projects where there’s lot of sub-projects that depend on each other.
Instead of just telling someone that they need to use the
such-and-such service from a framework, and how to use it, you just
send them the docs for the entire framework with a little note
that says, “use the such-and-such framework…it’s in, like, section
12.3.23.5.1.45.2 or something.”

Mix-ins and Closures in Java, or Lack Thereof

(Christopher Baus paid me a nice
compliment by linking
and commenting
on my recent post about
inheritance
and then recommending my blog. I’d say the same about
his: he has high quality posts. So thanks to for the nice words ;&gt

(He got me thinking about other OO stuff I’ve been kicking around
recently. I was writing up a comment along those lines to his post that turned
into this long post, as so often happens…)

I’m pretty much a 100% Java developer, so two OO I’ve been thinking
about a lot recently, due to their lack in Java, both functionally and
conceptually in the minds of Java coders, are mix-ins and
closures.

Mix-ins

With single inheritance, mix-ins are pretty much out. Composition,
of course, helps solve that, but it’s so much drudgery to type in that
code. Maybe annotations would help it out: you just annotate that you
want to “compose in” some methods or state-holding code, and the
compiler takes care of it.

Really, I think all I want is some sort of syntactic sugar that my
IDE would pick up on. I could declare with an annotation (or
whatever), that I was mixing in some code, and the IDE would do
auto-completes with that knowledge, not generate little red flags when
I reference the mixed in code, etc.

Closures

I’ve been having a sort of golden-hammer affair with closures over
the past year or so. I haven’t let myself actually use this hammer too
much, but I can’t help but speculate how I might use them for almost
all the coding problems I encounter. The code I work with day-to-day
has lots of tree structures in it, so the chance for closures (in a
sort of visitor/walker pattern) comes up a lot.

To me closures seem like a behavioral version of IoC. IoC as it’s
done currently for the most part is very state-ish: it’s for
config’ing and setting up things. You know, factories. The spring JDBC
stuff is closer to what I’m talking about, where it wraps transactions
around your blocks of code and makes sure to close everything.

I think Java coders aren’t used to dealing with lists and trees of
things that they need to process (where closures naturally emerge),
and they’re just now warming up the design idea that you can give up
control in your code to a controller instead of controlling the
execution of your code yourself.

A Simplistic Example

As an extremely simplistic example, not giving control would
look like (I haven’t checked the syntax of any of this, so excuse
errors):

// Change the status of all Items that match
// a filter to close.
String filter = "PO.*";
List items = getItems();
for (Iterator itr = items.iterator(); itr.hasNext();)
{
  Item i = (Item)itr.next();
  if (i.getName().matches(filter))
  {
  item.changeStatus(Status.CLOSE);
  }
}

While giving up control would look like:

final String filter = "PO.*";
List items = getItems();

ClosureUtils.visit(items, new FilterClosure()
  {
    public boolean filter(Object obj)
    {
    Item i = (Item)obj;
    return i.getName().matches(filter);
    };

   public void process(Object obj)
   {
   Item i = (Item)obj;
   i.setStatus(Status.CLOSE);
   }

  });

Now, obviously the second is way too much code. But, that’s just
an effect of Java being so strongly typed. Ideally, as you would in
python or other duck/looser-typed languages you’d have something
like:

final String filter = "PO.*";
List items = getItems();

ClosureUtils.visit(items,
    (Object obj)
    {
      Item i = (Item)obj;
      return i.getName().matches(filter);
    },
    (Object obj)
    {
      Item i = (Item)obj;
      i.setStatus(Status.CLOSE);
    }
  );

Here, we’re passing in “anonymous” chunks of code, which makes
typing in all of this much nicer…maybe not more readable.

You could go a more Perl route, and knock off the anonymous code
parameter blocks in favor of implicit variable, and get something
like:

final String filter = "PO.*";
List items = getItems();

ClosureUtils.visit(items,
    {
      Item i = (Item)args[0];
      return i.getName().matches(filter);
    },
    {
      Item i = (Item)args[0];
      i.setStatus(Status.CLOSE);
    }
  );

And if you didn’t have to cast, it’d be even tighter.

Closures in the Real World

That example is simplistic, but as I said, in my day-coding, I deal
with a lot of complex tree structures: objects that aggregate many
types of other objects, which aggregate other types, which can contain
types of their parents. Really weird structures that take a lot of
getting used to and that are easy to get lost in.

A good example in “public” are DOM trees in JavaScript, or event
DOM trees in Java code. Those trees are whacky, and filled with all
sorts of ill-adviced class hierarchies, causing the need for simpler
XML tree handling API’s like JDom,
dom4j, or
XOM. I mean, if you’re
using the whole org.w3c.dom.Node and
org.w3c.dom.Document hierarchy directly, you’re just crazy:
it’s way too convoluted and complicated.

But, if you’re stuck with crazy-tree-code like that, using closures
to visit all the nodes in that tree can be a huge time saver and easy
way to clean up your design. For example, you could write up a
walker/visitor pair that will allow you say “for every node in the XML
tree that matches this XPath, run this piece of code”:

Document xml = getUglyXMLObject();
String xpath = "employee[@name='Michael Cote']/salary";
XmlClosureUtils.visit(xpath, new XmlScript()
  {
    public void visit(Node node)
    {
    int originalPay = Integer.valueOf(node.getNodeValue()).intValue();
    node.setNodeValue(originalPay * 3);
    }
  }
 );

…which would match the salary of any employee named Michael Cote,
and triple his pay. I’m not even going to attempt to code up what
that’d look like if taking a more “I’ll control everything” approach
and “manually” foreach’ed through the tree searching for each
employee.

Indeed, I think the above is a better example re: selling the value
of closures to Java coders.

Identity Management in the Grand Scheme of Things

A lot of people I listen to and read mention identity management
more than I’d expect. I hadn’t really figured out why. James
Governor (of RedMonk)
has an interesting explanation of why
identity management will become/is becoming important:

What is the Future of Software Development? Building
with Open Services and open intellectual property models.

The
final underpinning service I want to mention that will underpin all
these niches is identity. What hat are we wearing at a given time?
what niche are we in? Anonymous? Locked down identity? Am I web
searching as a flower enthusiast or to buy a new car? [there is a
great blog out there about a guy who came up with this idea and posted
it before visiting Microsoft’s research search shindig but i cant find
the darned thing]. The point is that the drive to nail down a single
canonical identity is somewhat of a chimera. Identities are only
useful in as much as they have a context. To paraphrase Wittgenstein –
[the meaning of a word is its use in the language] – The Identity of a
thing is its use in the system. We don’t fewer stronger identities we
need more ad hoc ones…

So, the idea is, that if everything is a service — and they’re all
disparate, non-centralized ones — you’ll need another service
(or data standard?) to manage the identity of all those service’s
users. Otherwise, you have the 1-off identity management that we have
on the web now-a-days. 1-off systems makes more difficult and annoying
to use a lot of collaborative features those services could have.

If each service can’t know and use the identity of a user across
all the systems it’s interacting with, the user will have difficult
time getting a “unified experience,” that is, using a bunch of
different services as a composite service, and not needing to worry
about signing in to each service as they use it.

Changing "is-a" to "has-a"


Howard Ship says
:

Anyway, back to the moral: if you can subdivide an object into smaller pieces … do it! Any time you can change an “is-a” relationship to a “has-a” relationship, you are going to find advantages in coding, testing, the works!

In my coding recently, I’ve been noticing that doing things by composition — “has-a” — results in much better code. As Howard notes, it does result in more classes, but, in my thinking, the result is much cleaner, easier to understand, extensible, and testable.

Testability

Testability has gotten more and more important to me of late as we’ve been approaching the end of our release cycle at work. We do more bug-fixes at this point in the code, and it’s important to make sure that the changes you make to fix bugs don’t screw up the rest of the code. That is, we don’t want to screw up all the work we’ve done in the past year or so with the code-fixes we apply now.

Breaking out code into different classes, of course, means you can get your test coverage up by writing tests for each of those classes. Without breaking up the code the things you want to test are often locked away as big blobs in method bodies or private fields and methods on mega-objects.

Using composition does require more upfront thinking to figure out how to break out all the different responsibilities into different classes. If the team is operating in “code-silos” (where team members are not aware of the code each other is writing with a mind towards re-use and improvement), and without a regular review of the state of the code to consolidate and learn from the code, you’ll get the same obtuse, spaghetti code as you always do if people aren’t using common sense.

“Inheritance is Broken”

You encounter the idea that “inheritance is broken” from time-to-time, but I’d say the idea hasn’t reached a wide audience yet. It either hasn’t reached the tipping point, or, if you prefer cyclical thinking, it’s currently in ebb. I wouldn’t go so far as to say all of it’s broken, but I would say that it’s over-used.

Put another way, better methods are not used enough: I’m sure a little code-spelunking in most code bases would reveal that 1-off’s are used too many times when inheritance should be, but, in those same code based, there’s probably very little use of composition. Instead, you’ll probably find those big balls of code with everything locked up in private fields and methods, or simply inlined in big methods.

Changing “is-a” to “has-a”

One possible path to fixing those big balls that I’ve applied is to:

  1. If an object is state-less, try to make it state-ful instead.
  2. Apply extract method as much as possible.
  3. See if you can create data/value objects out of the object state.
  4. [A step I haven’t done enough] Write the unit tests you wish you had to test the code, creating new objects as it makes sense.
  5. Try to group together object state you created in step 1 with methods you created in steps 2 and 3. If the state is used by some methods, those two might go together. Make classes for each of these groups.
  6. Write tests for the above, and test them out.

A general guideline, which I haven’t empirically proved yet, is that if you can easily create mock objects and/or unit test your code, you’ve probably applied composition successfully.

Inversion of Control

The granddaddy (or grandchild, if you flip it around) of this type of thinking is IoC. Using composition instead of inheritance is one of primary beneficial side-effects of following an IoC pattern. I don’t use IoC as much as I’d like to, but when I do it has a very clean and efficient feel to it. Again, it took a some up-front thinking to figure out what it all meant and how to code in that model, but after that, it was smooth sailing.

(Link to
Ship’s post
via Carlos’s bookmarks.)

From Test Driven Development: By Example

The goal is clean code that works (thanks to Ron Jeffries for this pithy summary). Clean code that works is out of the reach of even the best programmers some of the time, and out of the reach of most programmers (like me) most of the time. Divide and conquer, baby. First we’ll solve the “that works” part of the problem. Then we’ll solve the “clean code” part. This is the opposite of architecture-driven development, where you solve “clean code” first, then scramble around trying to integrate into the design the things you learn as you solve the “that works” problem.

Converted RSS Feed

My Feedburner.com feed seems to be behaving correctly (not putting in repeat posts), at least in bloglines for the past month or so. So, I’ve converted my old RSS feed over to the new one, http://feeds.feedburner.com/cote. I setup a redirect, so you shouldn’t need to change any of your subscriptions: you can still use the old URL.

I like the Feedburner feed better because it splices together this weblog, my bookmarks, and my photos. Recently, I’ve been using the bookmarks as a sort of link blog: it’s easier to post quick links with del.icio.us rather than blogger.com. Consequently, I don’t post on this weblog as much as I used to. So, with the spliced feed, I’d hope, you can get more frequent content from me.

I also like the Feedburner feed because it has quick and easy stats reporting like the below (click to enlarge):


Feedburner.com Stats Screenshot

As you can see, it’s smart enough to figure out that the one request from bloglines represents 57 readers. It also tracks click throughs (when people click from their aggregater to go to the actual drunkandretired.com website). Since I publish full posts in my feed, this stat isn’t too interesting: I don’t think most people click through, I know I don’t.

If you have any problems, just leave a comment below and we’ll figure something out.

Cell Phone Recommendations?

After almost two years of going without a cellphone, I’m thinking of getting one again. I have no idea what the rate plans are, what’s up with handsets, or anything that’d help me pick a plan and a phone.

So, maybe some of you, dear readers, could help me out. Here are my requirements as I understand them:

  • The phone must have a vibrate option so I can turn off the ringer.
  • I’d really like it to take reasonably good pictures. At least 320×240, if not 640×480.
  • Email those pictures, hopefully an unlimited amount for small rate if any. My motivation here is to be able to moblog things to my Flickr account.
  • Synchronize with my Powerbook so I can edit my address book, etc. on my laptop instead of the phone and use all the Sync’ing features. I’m pretty sure this means I need a Bluetooth enabled phone.
  • Synchronize the phone’s calendar with at least my work’s Outlook calendar, if not also any iCal thing I might setup in the near future.
  • Possibly be able to develop Java apps for the phone. It’d be a nice feature, but not a big deal.
  • Possibly use the phone the for internet access when I’m out and about with my laptop.

And, of course, I’d like it to be as cheap as possible. I ran into The Valanju over New Years, and he said he gets 1,000 minutes (with some amount rolling over) and free weekends and evenings for $40/month. That seems like a good baseline for me.

So, any suggestions?

Bourbon Drinkers vs. Brandy Drinkers

Check out this demographic’ing wizardry used “to cherry-pick prospective Republicans who lived in majority Democratic neighborhoods”:

Republican firms, including TargetPoint Consultants and National Media Inc., delved into commercial databases that pinpointed consumer buying patterns and television-watching habits to unearth such information as Coors beer and bourbon drinkers skewing Republican, brandy and cognac drinkers tilting Democratic; college football TV viewers were more Republican than those who watch professional football; viewers of Fox News were overwhelmingly committed to vote for Bush; homes with telephone caller ID tended to be Republican; people interested in gambling, fashion and theater tended to be Democratic.

Surveys of people on these consumer data lists were then used to determine “anger points” (late-term abortion, trial lawyer fees, estate taxes) that coincided with the Bush agenda for as many as 32 categories of voters, each identifiable by income, magazine subscriptions, favorite television shows and other “flags.” Merging this data, in turn, enabled those running direct mail, precinct walking and phone bank programs to target each voter with a tailored message.

Falling Victim to Your Own Success

Here’s an interesting idea I haven’t encountered before:

An interesting risk comes near the end of a project, at the moment the
“consumer bit” flips. By this we mean that the users go from believing that
nothing will ever be delivered to believing that the team might actually
pull it off. The good news is that the external perception of the project has
shifted: whereas on Monday the users would have been happy if anything
were delivered on Tuesday, they become concerned that not everything
will be delivered. This is the bad news. Somewhere between the first and
second beta, you find yourself inundated with requests for features that
people want to be sure are included in the first release. Suddenly, these
become major issues. The project manager goes from worrying about
delivering minimal acceptable functionality to a situation in which every
last requirement is now “essential” to the first delivery. It is almost as
though, when this bit flips, all outstanding items get elevated to an “A”
priority status. The reality is that there is still the same number of things
to do, and the same amount of time in which to do them. While external
perceptions may have changed, prioritization is still very, very important.

If, at this crucial moment, the project manager loses his nerve and starts
to cave in to all requests, he actually puts the project in schedule danger
again! It is at this point that he or she must continue to be ruthless and
not succumb to new requests. Even trading off something new for
something taken out may increase risk at this point. Without vigilance,
one can snatch defeat from the jaws of success.


“From Waterfall to Iterative Development” [PDF]

Symantec-Veritas: Systems Management Bachelors, Easier Integration

It’s hard to Monday morning quarterback bigco software mergers. There’s always more going on than rational biz-thinking where two companies are trying to find the perfect fit. There are, after all, humans and big-cash involved. Those two are a combination that can effortlessly lead to making the reason for the merger to do the merger rather than anything else. I mean, look at AOL/Time Warner.

That aside, here’s some backseat driving from systemsmanagementpipeline.com:

Other observers, however, were left scratching their heads over the Symantec-Veritas deal. Richard Ptak, principal of consulting firm Ptak, Noel & Associates, said he wondered why Symantec chose to merge with Veritas rather than CA–or, better yet, BMC Software–to gain a broader-based infrastructure management solution.

“This would have given Symantec a solid position as a major player in systems management,” Ptak said. “Symantec quite clearly left the door open for further acquisitions in this space, but after they have completed this merger. Given the current trend in market consolidation, it is an open question about which firm will be available when Symantec is ready to move. But we would bet they will acquire again.”

The most insightful comment about the Symantec-Veritas merger I’ve come across so far — in several stories — is that there’s very little overlap between the two companies technologies. Symantec does security, Veritas does data. As such, they won’t go into the relationship figuring out what duplicate technology to axe. Usually, with software companies, getting rid of technology is the same as getting rid of the people who work on the technology: the folks who decide who’s heads will roll out the door typically don’t separate the two. And, of course, you can piss off key people by throwing out one of their “babies.” You know, it’s like when you move in with your sweetie, and one of you says to the other, “look, I know I you love that couch, but it’s gotta go. That couch is so college. It’s not going to be in our house.” RIP couch: I knew ye well.

More importantly, they won’t have to do too much consolidation of architectures, domains, or any of the other nasty things you have to do when you’re trying to integrate/merge together similar systems. Most of this type of integration and merging is slowed down by people hurdles — folks don’t want their architecture morphed into something else, they want the something else merged into their architectures — which are harder to jump over than the “simple” technological hurdles.

Anyhow, larger point being that when it comes to merging software companies, the underlying task of integrating and consolidating the software is always tricky. It’s difficult to integrate software together, and it’s almost impossible to integrate software people together. In the enterprise software world of today, you figure out those two problems, and you got yourself success.

Rumsfeldian Epistemology, Part 2

Check out
this great quote
:

“I don’t know what the facts are but somebody’s certainly going to sit down with him and find out what he knows that they may not know, and make sure he knows what they know that he may not know, and that’s a good thing. I think it’s a very constructive exchange,” Rumsfeld said of the questioner.

You may remember Part 1 of Rumsfeldian Epistemology, put into poem form by Slate:

The Unknown
“As we know,
There are known knowns.
There are things we know we know.
We also know
There are known unknowns.
That is to say
We know there are some things
We do not know.
But there are also unknown unknowns,
The ones we don’t know
We don’t know.

As a proud holder of a degree in philosophy, I admire the conciseness and exactitude of those quotes, esp. since they were probably made off-the-cuff. I tend to, as Zane said the other day, “over-contextualize” statements I make as well. The two statements above actually make a lot of sense if you can, as Rumsfeld might say, “parse them out.” I understand that other folks, though, could easily find them to be a bunch of jibber-jabber.

Anyhow, hopefully we’ll get some more “poetry” out of him.

"Mess-ware"

This week’s Gillmor Gang has a lot of high-level software/computer topics I’ve been interested in recently:

  • Mess-ware. Instead of buying one “platform” like Lotus Notes, people are tending to cherry pick the applications they use: IM, email, weblogs, wikis, etc. The unified, one-stop enterprise application is harder to pull off now-a-days.
  • Edge Computing and the IT Nazi model. PC’s came in through the back door in the early 80’s (thanks to software like VisiCalc). Now, they’re enterprise wide, and locked down by the IT department. But, people are starting to use things like cellphones, iPods, laptops, and home PCs for work, all of which are not controlled by IT.
  • Consumers driving innovation and software. Used to be Academia/Military, then company, and now end users/consumers. iPod, RSS, IM.
  • Software development history for that weird period after the 80’s, but before the web got big, like, 1990-1995.
  • User activity centered design. Figuring out the core things users do in their daily-work, and writing software to help out with that.
  • Collaborative Working in companies instead of command-and-control working.

I’d give it a listen if you’re interested in futuristic jabber about our industry. It’s good stuff.

Globalism, IBM-Lenovo, and Just In Time Manufacturing

If you read Barnett’s weblog, you know one of his reoccurring themes is the sudden rise of China and India (to a lesser extent) as global economic forces to rival the US. Most of the stories I’ve read about the IBM-Lenovo deal focus on just the numbers and org-chart changes, along with bemoaning the good ol’ days.

The NY Times has an article with a couple of paragraphs on the more economic “big picture” things Barnett mentions in his talk about China:

American companies, in one industry after another, are scrambling to take advantage of the vast potential of the Chinese market. Chinese companies like Lenovo, meanwhile, are increasingly seeking to tap into overseas markets, management expertise and technological skills.

“This is an encouraging sign of the increasingly sophisticated trans-Pacific ties between the United States and China,” said Timothy F. Bresnahan, an economist at Stanford University. “Seeing the Chinese seeking these kinds of economic links can only be a good thing.”

The complex transaction is meant to serve as a bridge between very different companies from different cultures, by seeking to ensure that I.B.M. has a stake in the Chinese company’s success. Whether in the United States, in China or anywhere else in the world, such a stake would be in I.B.M.’s self-interest; a messy exit from the personal computer industry could rankle corporate customers, hurting I.B.M.’s other businesses, and tarnish its stellar brand name.

My dad’s an IBM refuge. His unit was sold off to Multek in the late 80’s (I think), where he worked until he got a good job at Polycom, where he seems to be doing very well. I mention that because I think IBM, in the collective techie-mind, is synonymous with the pattern of selling off units, and the people in them, to other companies. The companies then, tend, to be very concerned with cutting costs, like people. That is, if IBM sells off your unit, time to look for a new job. Hell, it’s even mentioned in the part of our cannon, Microserfs.

So, when I heard about the PC unit being sold off, my first thought was, “who’s next?” The server unit? Software? From what I read, it seems like the money for IBM is in consulting: coming up with what IT to buy, and then integrating it all together for customers. If that’s true, then they could sell off all of the “manufacturing” (servers, software, etc.) units, and just do consulting. It’s kind of like a Just In Time model for IT companies.

Here’s the analogy. Dell doesn’t manufacture all of the components in their final product, an assembled computer. Instead, their JIT supply chain delegates that to other companies. IBM’s consulting folks “final product” is a running, integrated IT system, “assembled” from the components of software, servers, PC’s, and anything those connect to and use. Each of those “components,” then, could be moved to a JIT model where IBM doesn’t actually “manufacture” them, but acquires them from outside, but closely affiliated companies.

I don’t think any of that would happen anytime soon, but it’s an interesting thought. As always in the computer-biz, if you’re not a rock-star consultant (or group of them like IBM positions itself as), good luck when it comes to job security.

Re: Vodka

Lunt asks what brands of Vodka I like. I’m not huge sampler of vodka, but here’s some I’ve tasted:

Grey Goose. This is what I typically drink when out (WITH LIME!), but I don’t buy it for home too much anymore. That’s not because I don’t like it, but it’s because I prefer to get a different brand of vodka each time I buy a bottle.

Tito's Handmade Vodka

Tito’s. You’ve got the best all around vodka here: it’s made in Austin, so it’s cheap (like $14-16), and it’s extremely smooth. I’d give Tito’s a big recommendation.

Stoli. I don’t really like it, but I’ll drink it. It just tastes cheap, despite being so high-fa-lutin. The flavored ones are all right, e.g., vanilla Stoli and soda. Anything candy-flavored (Malabu) with soda and crushed ice is a-OK with me.

Gilby’s 100 proof. My dad swears by this one: it’s cheap and it’s potent. He mixes it with stuff (juice or cola), so it might require some cutting. I’ve had it on occasion, and it’s fine for a cheap vodka, esp. with one of Dad’s Mixers.

Ketel One. I get this when I’m out at times. Tastes just fine. Still, I’d prefer Grey Goose or Hangar 1.

Absolut

Absolut. Nope, I don’t really like this one either. It feels too much like plastic bottle booze: it’s got that crackly taste to it, like your drinking cool, liquid metal.

Vodka Monopollowa

Vodka Monopolowa, from Vienna, Austria. This is the only potato vodka I remember trying. It’s pretty smooth, but it has a slightly funny taste. Probably the potatoes. I’d recommend it just to make sure you try a potato vodka and ’cause it has a wicked cool USSR-1930’s-style label.

Hangar 1

Hangar 1. So far, this is the best Vodka I’ve ever had. It tastes totally unique, kind of herby-fruity-natural, and has an almost spring water feel to it. I’ve been having a little drink of it most every night since I bought a bottle last week. Despite my initial fears that’d it be way expensive, it wasn’t more than I’m used to paying for fancy-pants booze: about $35. Hell, that’s nuthin’: there’s bourbons and Scotches that’ll blow your wallet-brain if you’re worried about spending that little on the fire-water.


Like I said in a past post, I tend to drink my booze straight, or “neat.” So, with a few exceptions, I don’t know how these taste mixed. However, when I have had bad vodka in mixed drinks, it always seems to taste kind of nasty, compared to better vodkas.

Back to Work, USB Lamp

The old 2+ week vacation is over as of tomorrow morning. I’ll be back on vacation in a couple weeks, for the entire week after Christmas.

My internal clock is still on “stay up ’till 3AM” mode, so I’ll just have to go through the slight pain of vacation-lag and suck it up tomorrow on a few hours sleep.

In the meantime, I’m getting some good use out of a new gizmo, a USB light:

With USB Light
With USB Light in the dark

My “office,” as it were, is pretty much the bed. Being the mind-insomniac I am (on more nights that not I can’t keep my mind from running in idle about this and that), I’m often in the “office” several hours after Kim‘s gone to bed, in the dark. So, I thought it’d be helpful to get a little lamp.

Kim gave me a kind of “is that really useful?” look when I bought it last night…and she’s pretty much right: the screen from the laptop provides just enough light to see the keyboard when I need to hunt for some weird character, like some function F9, or F6 to turn Num Lock off after Yertle walks over, or just sits on, the keyboard for the 500th time. On the other hand, it is pretty cool to have a little lamp. I used it last night when I was reading
Generation Kill
, and it worked out pretty well.

Aside from being a solution to a small problem, the USB lamp suffers from the same problem as many USB devices, and the power cord, on the laptop: the ports are all on the left side of the laptop, so the USB connections stick out, making it hard to rest the laptop in your, uh, lap. Man, am I beset with problems in this life, or what?

Here’s some Amazon Review Poetry (as always, unintentional, I’m sure) about the USB light model I have:

I like it very much. It is very good to work in bed, not to disturb my wife while she is sleeping. It works using the USB port from Toshiba notebook. I recommend

Indeed. It is very good. I say STRONG BUY for the USB Light due to increasing size of “not to disturb my wife while she is sleeping” market.

Generation Kill

Iraq with Nasiriyah highlighted

I finally started reading Generation Kill (on loan from Chip). My favorite quote so far is from, of course, Cpl. Person, who seems to be an endless source of one-liners to end chapters with. While they’re waiting to go through of Nasiriyah, he says:

“You know that feeling before a debate when you gotta piss and you’ve got that weird feeling in your stomach, then you go in and kick ass?” he says. “I don’t have that feeling now.”

A machine gun rattles up on the riverbank.

“Stand by for shit to get stupid,” Person says, sounding merely annoyed.

SafariBoxes and Google Referrals

Is there a way to create SafariBoxes based on the search words for Google referrals?

For example, if this code existed, when somebody was searching for information about Oracle error handling, and they find one my pages, they SafariBox would be preloaded with “oracle error handling,” displaying relevent books in Safari and (my thinking goes), increase the chance they’ll click on the link and make a little bit of money for me.

Nauru on This American Life

This week’s This American Life is a repeat (which means you can listen to real audio for it right now instead of having to wait). Anyway, the first half of it is about Nauru, the smallest island republic. Nauru sounds like one of those tiny islands in the middle of nowhere that zombie movies happen on. It’s one of those curious stories that you’re always waiting to hear on This American Life. (I’m not sure what’s American about it, but, whatever).

The second half is that MCI-horror story.