Wednesday, December 27, 2006

Rails Quick Reference

I don' t know who Johnny is or what he's thinking, but blog Johnny's Thoughts has a Rails Quick Reference that just taught me several things I never knew.  A database option to the initial rails setup command?  Nice.  I can't count how many times I've just naturally gone into an editor and changed the mysql stuff to oracle or sqlite3.

Forget about bookmarking it for later, I'm printing it and taking a highlighting marker to it and sticking it on my cube wall.


Technorati tags: , , ,

Clocky Lives!

Ok, my wife would kill me if I actually bought one of these things, but check it out -- Clocky is shipping!

What's Clocky, you may ask?  Well, let me ask you, what's the biggest problem with alarm clocks today?  The snooze button.  You can keep hitting that little bugger as long as you want.  Many clocks have tried offering features to get around that, such as making the alarm louder each time, or making the snooze shorter.  What does Clocky do?  Clocky jumps off the table and runs away.  That's right, you have to go chase it to turn it off.

I love it.  I have no affiliation with it at all (it dawns on me that the above sounds like a sales pitch), but I think it's an awesome geeky idea.  If I was still a single geek I would have one in a heartbeat.


Technorati tags: , , ,

Thursday, December 21, 2006

Evil DRM : iTunes

Perfect example of why all DRM is doomed to failure.  My laptop is having a hardware problem, so I pop the hard drive from it and swap it out with another, identical machine here at work.  Put laptop in docking station, fire it up...and iTunes wakes up, tells me that this machine is not authorized to play my iTunes "purchases" (including free downloads from the iTunes store), and promptly removes them from my iPod.

Think about that.  The poor iPod was simply connected to the wrong place at the wrong time.  I didn't change iPods.  I didn't even technically change computers, since I took my harddrive, my install of iTunes, all that stuff with me.  Any library that I had on that machine was still there.  But it sensed that I had changed machines and because, and this is a direct quote, "you are not authorized to play them on this computer", it removed them from my iPod.  They are still on my computer, and I can play them if I want to authorize this machine, which I don't, because it is a loaner and it would be a waste.  But I don't see how Apple figures they had a right to delete stuff from my iPod?  Why not let me keep playing them on the iPod and simply tell me I can't play them on the computer?

All DRM is evil and bad for the consumer.  It prevents you from using products you purchased in ways that you should legitimately be allowed to use them.  Never forget that.


Technorati tags: , , ,

Friday, December 15, 2006

JXplorer/LDAP with Active Directory

Just a quick note, since it took more than a little Googling to find this one.  Trying to connect up a JXplorer (an open source Java LDAP client) to our Active Directory server, and kept getting errors like these:

Error opening connection:
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece]


Error opening connection:
[LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece]

The second message means no connection could be made, and I get that when trying "Anonymous".  So I guess my server doesn't allow anonymous access. 

If you're seeing the first one on just trying to connect, you might be doing the same silly thing I was doing.  When Level is set to User + Pass, then in the User DN section you want the whole name of the person, not just the login/username.  So you want "John Smith" in there, not "jsmith".  Once I did that, it came up just fine.

(Remember also that "dc" means "domain component", so you just use as many of them as you have parts of your address:  dc=duanesbrain,dc=blogspot,dc=com.  It's not any sort of hierarchical thing.)


Tuesday, December 12, 2006

HOWTO Hire Developers

There's a million different articles out there on how to hire developers, or if you're a developer, how to get yourself hired.  I'm not going to bother with a top ten list of questions, be they technical apocrypha, logic puzzles, or what not.  When it comes right down to it the thing that I'm often making my final decision upon is a combination of the candidates comfort level, his confidence, and my respect and faith in his answers.  It's hard to explain, but it's also almost impossible to fake.

Let me try putting it another way.  When I'm interviewing someone who is supposed to be a technical person, I find that they tend to fall into four basic camps. I'm not going to number or label them, this is just an observation based on experience.

  • Someone who has no meaningful, relevant technical skill.  They've either lied on their resume, or they can't back up what they have done.  They fall apart under questioning.  Hopefully you don't have to see many of these, as properly preparing your recruiter with exactly what you're looking for can cut way back on the posers.
  • Knows the technology but "not enough."  Sometimes I'll get someone who I believe can write the code to get the job done.  But they don't show any kind of deeper understanding, they're just parroting back what they've learned.  They won't, I feel, be able to creatively move forward on their own when it's needed.  More importantly, maybe they can move forward, but maybe I'm worried that they don't have the vision for such decisions and I'll constantly have to watch over their shoulder and micromanage them to make sure that they're not getting themselves into situations where yes, the code works, but that doesn't mean it's not completely the wrong way to do it.
  • Alpha geeks.  These are the guys that have got so much experience that *they* are doing *me* a favor by even showing up for the interview.  Normally they have at least as much experience as me, if not more.  The biggest problem with these folks is can they get over the fact that they didn't build the product, and they're not being asked to rebuild it?  I used to work for a company that prided itself on only hiring this sort of superstar coder.  The in-house joke was that every new hire spent his first week trying to figure out which part of the system he could singlehandedly rewrite in order to make his mark.  No one ever successfully implemented such a thing, to my knowledge - but lots of them talked about doing it. 

    Personally I don't want to spend my time telling people why they can't rewrite large hunks of the code.  Sure, a geeky conversation over lunch or in the hallway. But if there are specific projects to get done and I've got somebody saying, "If we only took 3 months to rewrite this whole portion over here, this project that's due in 2 days would be even easier!"
  • Peers.  This is the goal.  I find one of these I can't get on the phone fast enough to the recruiter to say "Love him."  A peer is somebody that I'm not going to have to argue with, nor am I going to have to micromanage.  It's somebody who I can share the technical design with.  Sure, at the end of the day somebody has to make the final decision, and I'm the one with the seniority, but my ideal development environment is to put three people in a room with a big whiteboard and not come out until everybody is on the same page.  It is quite possible that this person does not have a spectacular pedigree of technical skills.  What's important is that they have the foundations that enable them to work with what they've got, and learn new things as needed.

    How do I know I've stumbled upon a peer?  I have a simple test that may not be perfect, but it gives me a very big clue.  I walk up to the whiteboard and I draw a problem.  Or, I encourage the candidate to go up and draw something.  Because in the real development world, you're going to be in front of a whiteboard with your fellow programmers and you have to be able to work together.  Does this candidate have the understanding of my business enough, as well as the confidence, to offer suggestions on what I'm doing?  Likewise is he confident enough in his own designs that if I ask questions about it he won't see them as an attack and go into defense mode?

I want somebody that I can collaborate with, bottom line.  Whether I'm hiring somebody on the same level as me, or someone who will report to me, I use the same test.  I want this person to be comfortable in the environment he's (or she's, I shouldn't be so politically incorrect) walking into.  It takes a little longer, and it's much harder to explain to the recruiter what I'm looking for and why a candidate doesn't have it, but it's worked very well for me in all situations I've used it.  Where I've personally been the one responsible to say "Yes, hire this person," I've almost never been disappointed.


Technorati tags: , , , , ,

Monday, December 11, 2006

Tivo Channel Changing Problem

I know I'm not the only one who has a broken Tivo.  Over the last few months there's been a problem where Tivo will fail to properly change the channel by a digit (for instance heading for 218 and ending up on 21) and basically making it useless as a recording device since to make sure you don't miss your show you have to stand and watch it.

Tivo has not acknowledged it as a problem yet, though there are plenty of people in the forums who would beg to differ.  Some are suggesting fixes, like using the Advanced Setup to switch from fast channel changing speed (A) to medium or slow (B or C).  I tried switching to B, but still had the problem.

I'm currently trying a new idea.  No matter what channel we're heading for, Tivo can be configured to send 2 digits, or 3, or even 1.  Should Tivo send just the channel number, or should it pad with zeroes?  I switched my configuration over to "send 1 digit", in other words don't send any leading zeroes.  It's important to couple this approach with the "press enter to change channel" mode, so that nothing tries to parse a single digit while you're typing it.

I just tried this tonight, and the first season pass I had went through fine . I'm curious to see tomorrow night, after a few more have kicked in, if I'll still be as pleased.

Update:  Well, it didn't completely work.  Twice last night it failed - once when changing to channel 61 it went to "6-enter" and I got channel 6.  A second time when changing to channel 12 it did "1-2" but then did not do the enter, so it stayed on the channel it was.  so I think I've improved my odds, at least, since Tivo does not have to execute 4 keystrokes every time (3 digits plus enter), so there's less opportunity for it to fail.  But unfortunately I think we've reached the point where Tivo is just unable to faithfully execute even a 3-key sequence to change the channel every time.  That's sad.  I wish they'd at least acknowledge it as a problem and tell us that a fix is in the works, because it's pretty obviously on their end at this point.  I wonder if it will fail to change to a single digit channel properly?  Can you imagine that?  Go to channel 7, please.  Nope, can't do it.  Not even gonna try.

Maybe somebody with more time on their hands can start up the class action paperwork and get all of us subscribers some money back, since really, what are we paying for if we can't sign up for shows in advance?  That is the major difference between the device and the subscription, right?  The device can do all the smart digital recording we want, but we subscribe so that we can get the guide, so that we can do season passes and wishlists.  Well, that part's failing ,so Tivo is not providing me the service that I'm paying for.



AddThis Social Bookmark Button

Technorati tags: , , ,

Tuesday, December 05, 2006

Zip Code Visualization

This is a nice little piece of coding that shows a visual representation of how zip codes break down around the US.  It's interactive, so as you type out a zip code you'll get to see it drill down.  Don't forget to press Z to turn the Zoom animation on.

This ties in very nicely to what I'm doing in my regular job (the address matching problem).  Recently I noticed that I only get about 3 digits of signifance out of my zip code matches, so I'm curious to see just how large of a physical area such situations tend to represent.

Sometimes I forget how skewed my perception is

I listen to lots of podcasts about starting your own business.  Many of them take the same form, "I have an idea but I want somebody else to do all the hard work."  Sometimes it's irritating, but often it is motivational.

The other day I was listening to a particular show out of I believe Tennessee.  And the caller actually uttered the following sentence:  "I'm plannin ta be up around Nashville next week, and was thinkin about maybe goin to the library and usin the computer."

It took me awhile to fully appreciate how different that person's world is from mine.  Right now, in my home, I have ... 6 computers. Not counting my PDA.  I've been surrounded with computers since I was about 14 years old.  I have a degree in computer programming. I can't imagine life without them.  When I need something from somebody, I'll usually email them first rather than calling.  When I need to look up a phone number I head to google, not to 411.  And I absolutely can't stand to see a trivia question go by unanswered, if Wikipedia, IMDB and Google are only a few keystrokes away.

And then there's this guy.  Not only does he not have a computer of his own, either his local library does not have a computer either, or else he doesn't even have a local library.  I'm guessing that wherever he was, Nashville was not exactly one town over.  It's not like somebody plans a trip a week in advance to be "up around Nashville" if it's just the next town over.  So here's a guy that gets exposed to computers maybe 1/1000th of the time that I do.

That'll certainly make you think about your perceptions of the technology around you.  Ironically my other college degree is in sociology, specifically majoring in the impact of technology on society.  Maybe that's what makes me notice such things.  Man, is it a wakeup call.  This is not just somebody who hasn't upgraded his own computer in a few years, something that in my neck of the woods will get you smirked at in the local Best buy.  This is a guy to whom computers are still an alien item, something for someone else to own, something that he will use under very special and unique circumstances.  I'm intrigued by this guy.

Sunday, December 03, 2006

The Address Matching Problem

I have a list of organizations in my company database.  We are working with a customer who has data on some of those organizations.  They will provide us, multiple times per week, a list of their database.  So I have to say "For any given organization in my list, is variable X true from their list?"

Do you have any idea how complex that problem is?  You see, there's no linking value betwen the tables.  No common identifier that I can rely on.  So I have to do a natural match on whatever information I do have, which is basically name, address, city, state, zip.

Stop and consider all the different ways that this information can be different - abbreviations, word choices, even just plain typos and misspellings. That happens more in such data than you'd think.  What constitutes a match?  If one list says, I dunno, "Paul Smith College" and the other says "Paul Smith College of New York", is that a match?  Do you always have to validate against every single field you have, or can you be confident enough in one of the fields to match it and move on? 

You can't match all the fields perfectly.  First throw out zip code because some entries will have zip5 and some will have zip5+4.  Experience shows that even if you just look at the first 5 you'll find that many entries are off by one digit, since people often know a common zip code for a given city and don't necessarily realize that there could be several.  So maybe you can get by with matching on 4 digits of the 5, but then you don't have an exact match.

Forget about address as well.  Entry one has "1 Main Street" listed for address line 1, and "Suite 220" for line 2.  But the other entry from the other list has "Main Office" for line 1 and "1 Main Street Suite 220" for line 2.  It's a match, but not an easy one.

Worst of all, the data is coming in at a rate of several updates a week.  So it's not even like somebody can sit and go through the list (about 5000 records) once to clean it up and move on.  Every week there could be hundreds of new entries that will exhibit all the same behaviors I've described above.

I realize that there are companies built up around this exact problem.  But when you're a single programmer whose been handed the problem and told to solve it in a week, what do you do?

Goals: Achieve a confident, 'exact' match as frequently as possible (ideally 70-80%, given what is known about the intersection between the two lists).  Ambiguity (where an entry from list 1 might match more than one entry from list 2) is allowed, to an extent, in that the customer will be asked to narrow down the selection.

At least I'm doing it in Ruby :).


Technorati tags: , , ,

Monday, November 20, 2006

Ruby : Split ignores empty fields

I was very annoyed today to discover that the split method in Ruby, which turns strings into arrays, was behaving erratically when it came to blank fields at the end of the string.  For instance:

"1,2,3" => [1,2,3]   that is correct, but

"1,2,3," => [1,2,3]   which is not, I'd expect a fourth, empty field.

Turns out that split has a "limit" parameter which controls this.  Here's the doc for it:

If the limit parameter is omitted, trailing null fields are suppressed. If limit is a positive number, at most that number of fields will be returned (if limit is 1, the entire string is returned as the only entry in an array). If negative, there is no limit to the number of fields returned, and trailing null fields are not suppressed.

In other words if I do this, "1,2,3,".split(",",-1) then I get what I wanted - [1,2,3,'']

Not sure why that rule is there, but there ya go.


Technorati tags: , ,

Tuesday, November 14, 2006

My Inspiron : Happy Ending!

I haven't posted for a bit on this story (originals here and here), so this will be a long one.  Luckily, it ends happily :).

Context : Had a Dell Inspiron 5150 laptop.  It stopped charging, and I gave up on it.  Then came notification of something called the Lundell Settlement which basically said that if you had such a machine with such a problem, you could get it fixed.  I sent it in, and on top of that a Dell customer advocate apparently found my blog on the subject and checked in to see if he could help me with anything.

Let me just say that it was great to have such a personal contact with customer support.  At first I thought that I should only use that channel for special circumstances, and was still working my way through the automated voice units until Todd just said, "Don't even go through that path, just tell me and I'll get you the info."  Gotta love that.  He even called me instead of emailing all the time.

So, back to the story.  There was a bit of a problem at first when they got the machine open.  I was told that the problem was damage from a spill, that it affected motherboard, video and keyboard, and that it was not a covered problem.  That it would be very expensive.  This was a complete surprise to me, and I ranted like a crazy person.  This had been my daily machine.  I'm the kind of geek that carries his laptop with him daily.  I used it up until the day it wouldn't charge anymore.  I did not have any memory of a spill.  So needless to say, I was upset.  I even accused them of just randomly pouring liquid onto machines on their end, just so they wouldn't have to fix them.

Todd listened quite calmly, told me all about how the system works (they have an independent group Solectron that evaluates the systems, that Solectron gets paid regardless, and so on).  He said that he would request that they re-evaluate the system.

I thought it was over at that point, and started lobbying to get the machine back.  Would I be stuck shipping it back to myself?  Would I be charged for repairs that I didn't expect?  Todd swore to me that there'd be no such costs.

And then, good news!  I get a call back to tell me that they re-evaluated the system and:

 * The only moisture damage was not evidence of a spill, and was only on the shielding, which I am not liable for.

 * The AC adapter is loose at the motherboard, so it is not charging, and that requires a motherboard replacement.  Which I am also not liable for, as this is apparently the original problem we were trying to discover (well, no kidding :)).

I had the machine back within days. No charge to me (shipping or otherwise), and I'm happy to report that I have my computer back!  I'm pleased.  This machine is destined for my family room for games and email.  And yes, it will run Linux.  I'm thinking Ubuntu.

Thanks Dell!  Nice service.  Was Todd scanning specifically for mention of the Lundell case?  I don't know.  Did my machine only get serviced like that because I had an advocate on my side?  Again, who knows.  But I'll tell you, if you've got an Inspiron 5150 that stopped charging on you, you're gonna want to go check that out.



Thursday, November 02, 2006

.NET : A Potentially Dangerous Request.Cookie (HttpRequestValidationException)

Had an interesting problem today.  While working on an ASP.NET web service that worked fine the other day, I suddenly start getting this error, immediately upon hitting my code, about "A potentially dangerous Request.Cookie".  Just this past week I installed our main product on my laptop and hit it via localhost, therefore dropping a cookie.  In other words, a cookie that we're dropping is considered "potentially dangerous" by .Net.   It's annoying, since I can't really ignore it (you can't try/catch it, because all attempts to access the Request object throw it), and I can't go and change the product at the drop of a hat, either.  I know that it's not a malicious cookie.

Turns out there's a simple solution.  To your @Page directive, add ValidateRequest="false".


The more I think about this, it's an interesting error.  If my .Net code can only read cookies from my own domain, does that imply that it thinks I'm sending malicious cookies to myself?  Or that somebody is actually going into their own cookie file and modifying the cookie before sending it back?  Not really sure what this is protecting against, since it runs on the server, not the client.  That implies that the client is trying to be malicious toward the server, rather than the other way around.  That's a new one on me.


Technorati tags: , , ,

Wow - Dell Customer Support Comes Through!

Ok, check this out.  A couple weeks ago I blogged about the possibility of bringing my Dell Inspiron 5150 laptop back from the dead.  Seems that my problem, where it fails to powerup anymore due to motherboard problems, was a problem for many people indeed.  In something called the Lundell Settlement, Dell agreed to basically fix them all.  So I figured what the heck, I never through the thing away, I might as well send it in.

After a few emails back and forth, they confirmed that this would be a motherboard fix and then sent me a box in which to pack the machine.  I DHL'd it back and have been waiting to hear back on its status.  This was just over the last few days, so I'm sure it's still being processed.

But!  Imagine my surprise when, completely unsolicited, a "customer advocate" from Dell contacts me and says "Hey, I saw your blog and wanted to make sure that you were getting all the help you needed.  Anything I can do for you?"  I wrote back to him with an update (thinking the whole time that this could turn out to be the weirdest phishing scam ever :)) and not only have we been having an ongoing conversation, but he (Todd, by the way) responds in very short time indeed.  It's not like it takes 2 business days to get a response.  It's like I've got my very own contact person at Dell.  Someone, I might add, who is NOT offshore outsourced, nor going through a script and saying things so generic they border on offensive like "Ok I understand that you are calling to ask about a motherboard problem, I can help you with that, for security purposes can I please ask your mother's maiden name?"

So, I'm very impressed that Dell did that.  I don't know if they're always out there ego surfing the blogs, or if there was something about this particular settlement that's got them anxious to please.  Either way, if my machine manages to get fixed, I will be a happy customer indeed.

Thanks Todd!


Technorati tags: , , , , ,

Tuesday, October 31, 2006

Ruby on Rails with Oracle Express

My company uses Oracle.  I'm the only guy that uses Rails, building my prototypes first "the right way" and then whipping something up in .Net once I have the idea what I want.  Recently I put Oracle Express (10g) onto my machine, which works with our regular environment, but I needed it to work with Rails as well.

I had a little difficulty.  If I just set the database to "XE", the default, which carries with it in the tnsnames.ora file enough information to figure out what machine it is running on, I would get an error ORA-12560: TNS protocol adapter error.

However, if I added "host: localhost" explicitly, the error would change to ORA-12514: TNS listener does not currently know of service requested in connect descriptor.

It's worth noting that I can connect Ruby/Rails to the regular Oracle instance from this machine, so I know that whatever issue I'm having, it's an Express-specific one.

Turns out to be something I would not have expected.  Instead of specifying database and assuming that host will be calculable from it, specify the host in a way that you also specify what database you want.  Try   "host: localhost/xe".  Leave the database line out.  Works for me!


Technorati tags: , , ,

Wednesday, October 11, 2006

My Dell Inspiron 5150 : Back from the Dead?

About 3+ years ago my primary machine was a Dell Inspiron 5150.  As my previous employer constantly reminded me, this was "my" machine and thus they would not buy me toys for it :).

About a year ago it started having issues with staying powered on.  I would leave it plugged in all night only to wake up the next morning to a dead battery.  I discovered that I needed to wiggle the cord a bit sometimes to get it to stay charging.  I figured that was just because I was beating on the power cord a bit too much shoving it into my travel bag.  Eventually it became a bad problem as I realized the wiggly connection was at the motherboard, and pretty soon no amount of wiggling would fix it.  Power ran down and I could no longer boot, nor could I keep a direct AC current going long enough to meaningfully use the machine.

Long out of warranty with Dell, I contacted some external sources to try fixing it.  At least one said simply that while he knew of the problem, it wasn't worth his time to fix it because it's too much of a pain to take the thing apart. 

So there the machine sits in my office, collecting dust.  I hate to get rid of it, since being a Linux geek I realize the potential power of any old laptop for kids' use, or email client, and so on.

Imagine my surprise yesterday when I get one of those "blah blah class action lawsuit to which you may be entitled...." form letters in the mail.  For owners of the Dell 5150 Inspiron.  With power problems.  Really?  Nice.  Seems I'm not the only one with the problem.  If I'm reading it right, then all owners of this particular model (i.e. no matter when I bought it) who have certain qualifying problems are entitled to get their machines repaired for free.  I'm not guaranteed that my particular problem is one of the qualifying ones, but I definitely see the words "power cord" and "motherboard" in there, so you know I'm giving it a shot.   How cool would that be?   I'm excited.  Already got a spot picked out in the family room for it where the wife can check her email and the kids can play games.

Cross fingers!


Technorati tags: , , , ,

Wednesday, September 20, 2006 - Funny Office Slang - Funny Office Slang

Some of these are old old old (alpha geek, beepilepsy, crapplet....). I mean, come on, who still downloads Java applets? :) But most of them I've never heard before. I like to "ohnosecond", that brief amount of time between doing something and realizing that it was a very wrong thing to do.

In a meeting I once suggested the art of network operations through "prairie dogging." We needed to shut down one of our main development servers and did not have a plan for how to make sure people were off of it. "Just turn it off," I said, "And watch the cube farm to see which heads pop up." The head of operations was not amused.

Thursday, September 14, 2006

Ruby : Rails App as a Single EXE File

This is too cool not to link. With two very simple scripts you can package and deploy your Rails app as a single EXE file. Tar2RubyScript converts your application into one big ruby file, and RubyScript2Exe converts it into an executable.
Outstanding for situations where you want to run your app someplace but you don't want the overhead of making sure that Ruby is there waiting for you.


Tuesday, September 05, 2006

iTunes Playlist Management

I just learned a new trick -- you can nest smart playlists in iTunes. Within a single playlist you can do an AND ('match all rules') or an OR ('match any rules'), but you can't do both. So for example I can say get me all songs where genre is podcast and playcount = 0, but I cannot say get me podcasts where the name is A or B or C and the playcount is 0.

Yes you can.

1) Create yourself a smart playlist for the parenthetical part. In the above, create playlist ABC, say "match any", and then say "name is A" ,"name is B", "name is C".

2) Then create a new list, "Unplayed ABC", "match all rules", then select "Playlist is ABC". Then add rule "playcount is 0."

3) Done!

I'm very pleased by that. I have a selection of podcasts, by name, that I listen to at work. Since they share nothing I can categorize (for example, I would not want all genre=podcast ones), this allows me to define the list first, and then also add the rule about only showing me the newest unplayed ones. Cool!

Technorati Tags: , , , ,

Thursday, August 24, 2006

Motorola v360: HOWTO Use Your Own MP3 Ringtones

I'm excited, I figured out how to do what I want and use my own free MP3s as a ringtone on my new Motorola v360 cell phone. I do NOT have to use the Mobile Phone Tools software (which they charge $30 for), nor do I have to convert it or otherwise shrink it. My test case was actually a 3minute long file that was 2.7meg in size. I did, however, make use of the stored memory card. So make sure you have that in there. My phone came with one, so I'm assuming that it's standard to have at least some capacity. So the whole process is free free free. I much prefer that.

Here's how I did it!

  • You don't need to buy special software.
  • You don't need a special cable.
  • You don't need to convert anything.
  • Save money - Never pay for ringtones again!


BONUS! Now includes details on how to manage images and video on your v360 as well. Get images off your phone and onto your PC as easy as you do with your digital camera (without emailing them to yourself and paying those SMS charges)! Use your V360 as an image wallet - carry your favorite images, not just those you took with your cameraphone!

MORE : Free MP3 Starter Kit!Not sure how you're going to take advantage of your new found features? Included with your purchase is a library over over 150 MP3 sound effects (3meg worth of files) including screams, laughs, sneezes ... you name it. Popular blog recently recommended setting up just such an "innocuous" ringtone for times when you don't want to turn your ringer off. But if you want to go with "bloodcurdling scream" instead of "sneeze", well, that's up to you :). Have fun!

Technorati Tags: , , ,

Monday, July 31, 2006

C#: Why does XmlElement need to know the XmlDocument up front?

When I build up XML object trees I like to start small and assemble them. So, for example, if I've got a Record which contains a Summary, a Person, and a bunch of Transaction objects, then maybe I'll go off to the Person class and set up a way for it to generate itself as an XML Element. Do the same with all of them, and then the Record just becomes a bunch of nested calls to Person.toXML(), and so on.

Normally I do this in Java. I'm particularly fond of creating a functional-esque BuilderElement class which keeps returning itself so that I can easily do things like BuilderElement.create("Student").addElement("Name").addElement("First").addText("Duane") because I'm lazy like that. You can't easily nest too deep, because you'll lose references to your middle objects (for instance, it would be hard to go back and add "Middle" name unless I established a pointer to the Name element. But I much prefer it for quick situations where I'm more deep than wide. That is, most elements have only one child, not a bunch.

A new project requires that I learn C#, so I'm digging in to the System.Xml ... thing. Package. Namespace. Whatever they're called. And what I'm learning is that in order to create an XmlElement, I need to have an XmlDocument already created. Either I call xmldoc.CreateElement(...) or else I have to pass it in as a parameter, ala new XmlElement(..., xmldoc). Don't know why that is. But I don't love it.

No real revelations here, just throwing it out there. Curious if anybody knows why you'd need to have your XmlDocument created before your XmlElement. I mean, I understand the logic that an XmlElement isn't really useful unless nested in an XmlDocument, but what's the actual reason why it is mandated like that?

Technorati Tags:

Tuesday, June 27, 2006

Motorola v360 : The Quest for Answers

Just got a new phone. Used to have a Samsung E105, which is probably the smallest flip phone I've ever seen. It's very nice for exactly that feature. But it's not very modern -- no camera, no MP3, no Bluetooth. As a matter of fact no graphics at all, so it's not even like my wife can send me pictures of the kids and things.

So I went with the Motorola v360, which gets excellent reviews. It tends to be compared directly to the RAZR, and wins for the most part on "doesn't feel like it'll break when you drop it" factor.

But man, the interface sucks. I can't find any information on the thing. The user's manual is painfully bad. (Here's a hint on how bad -- the word "ringtone" does not appear in the manual.) So I'm looking for answers. One of the first things that I want to do is create an MP3 ringtone from my own sources. All my googling has shown is people either saying that they too want to do it, or saying "Yes, the v360 can play MP3 ringtones", but no specifics on how to do it.

I did hear one rumor that certain service providers can lock out that feature so that you have to buy only premium content. I called up T-Mobile to ask about that and the rep I spoke to said nope, never heard of such a thing. But she couldn't explain to me how to do it.

I've got an MP3 on the phone (specifically, on the memory card). I heard one possibility that you a) have to have the MP3 on the phone itself, and b) it has to be less than 15 seconds in length. I find it hard to believe that once I complete those constraints some new menu items will magically appear, but it's worth a shot. I'll keep posting here with updates. Until then, if anybody has a v360 and knows how to play your own MP3 files as ringtones, let me know!

Technorati Tags: , , ,

Monday, June 12, 2006

Ruby on Rails : start_form_tag with onsubmit javascript event hook

[Continuing to follow my rule of "If I spend a few hours googling for it and can't find the answer, when I do find the answer, post about it."]

I wanted to add an onSubmit="getComment()" handler to a form that is managed by Rails:

<%= start_form_tag :action=>'update', :id=>@alert %>

I tried a whole variety of combinations of sticking my option on the end - calling it onsubmit, onSubmit, on_submit, wrapping it in option=>{..}, html_option=>{...}, wrapping the whole thing, and so on. In most cases all it did was take whatever I added and stick it onto the end of my action url so I'd have things like "/update/18onsubmitgetcomment".

Turns out you need to batch up all of the options that are meaningful to Rails together (using {...}), and then you can put in your own option which becomes an HTML option (i.e. just passed through to the page):

<%= start_form_tag({:action=>'update', :id=>@alert}, :onsubmit=>'getComment()') %>

Note that the action and id tags are within the curly braces, and my onsubmit tag is not.

I'm sure that this is the kind of thing where, now that I know it, I could easily spot something in the documentation that says exactly what I just said. But obviously something didn't click until I had an actual use for it, and only having tested things that fail, and found something that works, can I make the leap backward and say "Aha, now I get it."

Technorati Tags: ,

Friday, May 26, 2006

Ruby on Rails : Has_One versus Belongs_To

There's a question that comes up when learning Rails associations: when do you use has_one, and when do you use belongs_to? Sometimes it's not as obvious as you might think. Even the wiki page isn't very helpful, saying in general Foo belongs to Bar if table foo has a bar_id column. That's not very helpful when I'm creating my model from scratch and wondering why, not how. I can put the index wherever it makes sense.

Imagine you've got a small library of ContentTemplate objects. You're going to have instances of a Content object, and each of those pieces of Content will have a pointer to one ContentTemplate object. I suppose you'd call this a one-way many-to-one relationship. Many Content objects point to one ContentTemplate, but that one ContentTemplate does not need to know about its many Content objects. According to the traditional rules of composition you might think that Content has_one ContentTemplate, or even that ContentTemplate belongs_to Content. Both are incorrect. Let's look at why.

The second one first. If ContentTemplate belongs_to Content, then ContentTemplate will need to contain a key that says what single Content it belongs to. But ContentTemplates are used by many Content objects. So unless we want to get into a "has_and_belongs_to_many" relationship, this is not the answer. That's also wrong, since the Content object only needs to know about one ContentTemplate. It's not many to many. Also for this example our ContentTemplate does not need to know about the Content objects that use it.

So then the first is right - Content has_one ContentTemplate, yes? Nope. It appears from my experience that has_one implies a one:one relationship between the objects. That is, it assumes that when you create a new Content object, you're also going to create a new ContentTemplate object. Because the ContentTemplate object has to contain a content_id that points back to its parent. I found this concept articulated nicely at the very bottom of the wiki ForumExample: "With belongs_to, the table accepts responsibility for the foreign key. With has_one, the table expect the other table to hold it." So if Content has_one ContentTemplate, then ContentTemplate has to have the key. But as we already said, ContentTemplates are used by multiple Content objects. I don't want multiple instances of them, each pointing to its parent.

The answer turns out to be the combination of the two that might be counter-intuitive when you see it -- Content belongs_to ContentTemplate. Go back and look at how I described the problem, and you'll see that it works. With belongs_to, the table accepts responsibility for the foreign key. So Content has a content_template_id. And ContentTemplate doesn't need anything. I can point to it at will. Done.

Another way to think about this is to ask whether you're talking about creating objects or linking to pre-existing ones. If A has_one B, then when you create a new A you're probably going to be creating a new B as well. But if A belongs_to B, then you can point to a pre-existing B and hang yourself off of it. Say you've got a Person object that has_one Address. When you create a new Person, you're going to create a new Address to go with it. However, if you wanted to come back later and add another address (or change the current one) then you have to have something for that Address to belong to.

I have no idea if that made it easier to understand or not :). But I've just spent a hunk of the last 2 days trying to figure it out, and this seems to be the answer in this case, so I wanted to document it in case anybody else out there is having the same problem.

AddThis Social Bookmark Button

Technorati Tags: ,

Monday, May 01, 2006

Smart Headphones

I think it's neat that my powerbook recognizes when the headphones are plugged in. I don't really do anything with this information, but still, it's kinda cool. Opens up new areas of feedback that you might not have traditionally thought about.

This weekend I switched from earbuds over to a fuller pair of headphones, complete with that cushiony bit that attempts to cancel out the surrounding noise. My earbuds keep breaking, probably because i let them dangle and end up running over them with my chair.

I have an idea I'd love to see implemented. When I take off my headphones, I want iTunes to pause itself. Makes perfect sense to me. If there's headphones connected, then chances are that any music playing is going through those headphones. Thus, if I take them off, you can assume that I'm not listening anymore. While it might be allowable to let the sound continue -- for instance, if you're just listening to generic background music -- it's much more obvious to assume that you should stop the music. I've certainly been in situations where a coworker leaves his music playing through headphones, but it is so loud that it can be heard (in that tinny, scratchy way) over the cube wall.

So, how would you do it? I figure there are two problems to solve -- how to figure out when the headphones are on/off, and how to transmit that information to the computer. The second is probably the harder, especially if you're talking about just a generic RCA line-out plug. This would probably only work over Bluetooth or something. For the former, detecting when they are on/off, maybe there could be a switch in the springy portion of the band that keeps the headphones together, so it can tell when it is at rest, and when it is clamped down over somebody's head? A friend suggests maybe attempting to measure the heat coming off the listener's body, but I'm wondering how dynamically that would change when you take them off.

If somebody could make such a thing, I'd be happy with a button on the headphones that I could press as I'm taking them off. Grabbing the mouse, switching to iTunes and pressing Pause is just too many steps.

Thursday, April 20, 2006

iPod Video Food: Richard Feynman, Fathers and Engineers

If you're any sort of a geek you probably know who Richard Feynman is. If you mention Einstein or Hawking, the name Feynman had better not be far behind.

But have you actually had the chance to see and hear the man? Google Video has a 49 minute documentary with the man that is just awe inspiring. Of particular fascination to me is not his stories of Los Alamos, or his Nobel Prize. I'm fascinated by his stories about his father. If Feynman is one of this century's great geniuses, how briliant must his father have been? I believe (it's not listed in the Wikipedia entry) that his father sold suits for a living. He was not a scientist. But yet the absolute love and adoration with which Feynman speaks of him will make any engineer with children wish that they could be such a person. One of the shortest but most illustrative stories comes when Feynman is a young boy and notices that a ball carried in his wagon moves to the back of the wagon while it is being pulled, but moves forward when the wagon stops, and asks his father why. His father replies, "No one knows." At first I (me, not Feynman) thought he was joking. Then the father goes on to explain that while the phenomenon is *called* "inertia", that doesn't mean that scientists understand it.

I will soon have three kids. I'm a lifelong geek. While I don't need my kids to be geeks, I can only hope that I do a sufficient job in teaching them whatever they want to learn. And, most importantly, instilling the kinds of thoughts in them that Feynman's dad instilled in him. You don't just give answers and expect mindless repetition and memorization. You want them to question everything, and to find new answers. You want them to change the world.

Technorati Tags: , , ,

Thursday, April 13, 2006

Coupons by RSS : It's Happening

TechCrunch has the story about Zixxo, who offers coupons via RSS. "A great service," says Arrington, adding that he asked for it last year. Well, so did I. He probably beat me to it, but I didn't know anything about it. And he's got the bigger audience. :-/

Technorati Tags: , , , ,

Monday, April 03, 2006

Mac App Goodness : MacZOT brings us AppZapper

If there's one downside to the killer simple installer that most Mac apps come with, it's uninstalling them once you're done playing. Not as easy as you might think, since you didn't get to see where all the files ended up. Fear no longer! AppZapper is the best solution out there for getting rid of apps you no longer want or need (although many folks admit to deleting important apps just to hear the satisfying plonky/zappy noises it makes) :). And now, MacZOT is giving everybody a chance to drive the price down to FREE by generating some links. Keep an eye on this one -- as the number of links goes up, the price goes down. So go get it!

Tuesday, March 21, 2006

Achieve-IT!: Fun and Easy How to Guide to Binding Your Own Paperback Books At Home...FAST

Achieve-IT!: Fun and Easy How to Guide to Binding Your Own Paperback Books At Home...FAST:

I love this idea and am putting it up here so I can find it later when I need it. I'm a huge fan of printing ebooks, and usually go with the "heavy duty spring-slip" approach. That works well for maybe 40-100 pages, but if you get much beyond that, it's no good.

Then again, if I ever get off my butt and start putting together an ebook (or several) maybe I'll be taking the author up on his suggestion to go into the self-publishing business?

Monday, March 20, 2006

Regularly Scheduled Self-Kick

I have an idea for a business that revolves around generating materials for school teachers to cut back on the expense of textbooks. I spoke to a school teacher in person about this over the weekend. I confirmed a few things:

* Textbooks are very expensive -- double what I originally thought. Although they also have a much longer lifetime, sometimes upwards of 15 years or more.

* Most of the text gets skipped anyway, as the teacher customizes their lesson plans based on experience and their own individual classes.

* No matter how many cool interactive games and exercises are available on the net, there will always be a place for traditional books that can be carried to class, scribbled in, referenced back to, etc..

...and learned a few things:

* The typical textbook publisher offers many downloadable lesson plans, quizzes, activities, etc... already. I thought teachers were on their own to go hunt this stuff down, but it appears to be regular practice now that they get to pick and choose from a wide selection.

* Kids, in general, have access to a computer even if they have to go to the local library. So the concept of making a file available and telling them to go download and print it is not out of the question. I'd been thinking that this would be too much of a burden and the teacher would be responsible for printing and handing them out.

* Teachers already have too much work to do, even with a standard lesson plan. The idea of custom tailoring quizzes and reading material to suit individual students is scary because of the amount of work that it would involve. Plus, those students would end up hurting in the long run, since without a standard, it would be very hard to progress through several years of a subject without having a foundation to build on from year to year. (I pointed out that I'm talking about "Start with a big standard thing and customize it" and not "Build up your own textbook from scratch out of little pieces", and she seemed happier with that.)

In general, nothing too insurmountable. Basically she said, "This is a good idea that would have value to teachers." So why am I not coding my brains out right now?

Technorati Tags: , ,

Friday, March 17, 2006 : I Use Freeware

Having come from a Linux world, I'm all about the open source. It's one thing for a full blown application that has direct business uses, like an office suite or something, but what about all those little utilities that you never really thought of until somebody showed you their existence and you say, "Hey, that's pretty cool, I want that"? If you had to pay $20 for each one of them, you'd shrug and say "Nah."

But that's not the way it is. There's freeware, and I'm pleased to see after switching to the Mac that there's free Mac ware, too. Here's just a few of the apps I've found specifically from their site that are running on my powerbook right now:

  • Delibar - Puts all your bookmarks into a dropdown on your taskbar, organized by category/tag. Very handy. (I wish it allowed me to create bookmarks that way, too...)
  • Spirited away - Love this app. After you've left a window inactive for a given period of time (customizable), this app hides it. Doesn't close it, just takes it off the desktop. You can get it back easy enough by tabbing into it. But it gets out of your way. Nice, clean desktop.
  • Tinkertool is for the geeky crowd who don't mind mucking with hidden / advanced options of their operating system. But I mean, come on, the ability to quite out of the Finder alone is worth getting this one.
  • TextWrangler - As a Linux geek, I still loves my Emacs. But that's a shell application, and you can't easily launch Emacs when double clicking a text file download, for instance. (I do not love Aquamacs, which is an attempt at a native Mac port). TextWrangler is probably the best of the free text editors out there.
  • Adium - When I got the Powerbook, one of the first things I did was to go hunting for an Instant Messenger client. One coworker, already a convert, looked at another and says, "Is there anything better than Adium?" "Nope," says the other. So off I went to find Adium. They were right.

Technorati Tags: , ,

UNIX : Cat every nth (third, fourth, fifth ...) line of a text file using AWK

I was surprised to discover that there's no standard utility in Unix to get every N-th line of a file. Or, rather, I was surprised to fail to find it, if there is such a thing. Many people don't realize that "tac" is the way to list out a file in reverse ("cat" spelled backwards, get it?) but it's there.

I have a very large file, upwards of millions of lines. I need to sample it, which means that depending on the size of the file (which might also be tens of thousands of lines), the N will change - I might take every 10th, or every 100th.

Awk handles this quite nicely, actually:

awk '{if (count++%3==0) print $0;}' filename

Does the trick! Where '3' is your N, of course. If you dropped this into a shell script or something you could get creative and pass it in as a parameter. But it's short enough for my purposes that I don't mind writing it out.

Technorati Tags: , ,

Wednesday, March 15, 2006

Startup Names (Paul Graham)

Startup Names (Paul Graham): Paul Graham makes a good case for why it's the new cool thing to give your startup a funky name. Domain name squatters, he argues, have taken so many names that if you do end up with a name that was obviously bought back from one of them, it gives the impression that you have more money than brains. Not a good way for a startup to appear. Nothing could be less cool, at this point, than calling a startup "" A company with a name like that could not have arisen organically. "" smells of a media conglomerate trying to create a web spinoff.

He provides a rough list of the sort of names to look for, in rough order:

  • Cool words that refer to what the company does, ala Writely.
  • Just plain cool words.
  • Mediocre but not actively repulsive, because if you make something good, its name will start to seem pleasing. He gives Reddit as an example because you can say, "I read it on reddit."
  • Can be used as a verb. Textpayme being a good example.

He likes Infogami, from which the article comes, but does not like Wufoo (although he likes the idea and the founders, just not the name). Since both of these seem to fit the "just plain cool words" rule, there's obviously room for personal interpretation.

Technorati Tags: , ,

Tuesday, March 14, 2006

How to Save the World

How to Save the World: Ten Reasons Young People Are Afraid to Start Their Own Business

This article gets a link because it's from a source I'd never seen before speaking about entrepreneurship. The Natural Enterprise concept is a bit of a new spin beyond all the typical Web2.0 hype that I tend to see in my regular readings, which lean mostly toward "software startup".

I am disappointed, though, that "Can't take the risk" or something similar is not on there. The closest is "Couldn't handle the failure" but the logic is "I'd be crushed, and feel like a failure in life." Eh? I never really thought of it like that at all. I tend to think, "If I do this, and fail, then I will have a problem paying the bills and might lose the house." I care about the mortgage lots more than I care about whether my idea didn't fly in the business world.

My biggest anti-motivator is thinking myself out of the idea, rather than not having ideas. I've done it again, just last night. I've had an idea rolling around in my head for months now about a software product that doesn't exist. I've found a market, and I've laid out the design and the basic features in my head. Gotten my research together for how it will all work. Then last night I thought of a feature that I think would be crucial, and my design does not support it. So I'm on the verge of throwing the whole idea away unless I can figure out how to reconcile the situation. :-/

Technorati Tags: , , ,

Sunday, March 12, 2006

Zooomr : Flickr on Steroids

I go back and forth between loving and hating stories like this one about Kristopher Tate. Kristopher has built "Flickr on Steroids", according to Mike Arrington.
That's cool. That's exactly what the Web2.0 world is all about. Take ideas, mash them up, make them better. (I don't love that it has three o's in the name because I will always forget and write only 2, but perhaps there was a good reason for that.)o

Kris is also 17, and only worked on the project part time, for 3 months.

Dang, that makes me feel so old and lazy I can't see straight. :-/ Here's where I use the "he's 17" excuse to say "Ah, yes - he doesn't have 2 kids that take up all of his time, energy and attention! That must be it!"

Ahhhhhh, now I feel better.


Technorati Tags: , , ,

Saturday, March 11, 2006

The Five Buck Idea

Random Noise Blog brings us the Five Buck Idea which reads like a garage startup howto guide.

Don’t have a business plan. Don’t figure out how to make money. Don’t care about your competitors. Just give your users the simplest, purest, uncut, and unfiltered version of your five buck idea. And give it to them now. You want users. You want a community. You want to make it hard for people to not use it. This will not happen overnight.

The post is much, much longer. And definitely worth reading. It takes the firm "idea/technology over business" approach, which probably flies in the face of somebody like a Guy Kawasaki, but hey, whatever works. There seem to be two widely different schools of thought:

1) Got an idea? Make a business plan. Shop it around to get financing, and then you're in business.

2) Got an idea? Build something. Then keep making it better until you get noticed. The money will come.

Obviously #1 is not a bad system, as it's pretty much how things were done up until, oh, 2003 or so. #2 is pretty recent, except for a few exceptions. Even most of the dotcoms were really little more than shell companies shopping around their business plans with no real product, hoping to land some bigtime VC money.

The downside to #1 is you have to put lots of research time up front to be taken seriously. Who are your competitors? How much money can you expect to make, and when? I find those two incredibly hard questions to ask of a software feature where you might not even know what it does until you build the stupid thing. There's no freedom of creativity in this plan, you can't get a brainstorm halfway through and try new things. Well, you can, as long as you do those in addition to what you promise the investors you'd do.

The downside to #2, though, is that you never know if the money will come. Every day you'll face that "How much work should I put into this before I expect it to make me a profit?" question. "Profit" means different things, though -- sometimes the experience is a big deal. And the writer of the Five Buck Idea even says not to discount the fact that you'll have left your mark on the Internet landscape.

I think I like #2 better, because it's actually more conservative. It doesn't cost you as much. If people don't use your idea, fine, it's a $5 idea. Chuck it and wait for the next one to come. With #1 it's almost like you're betting the farm on your ability to predict your own success. If an investor comes along and gives you money based on your belief that you can make a million dollars in 10 years, then I dunno about you, but that would sure be hanging over my head every waking moment.

Technorati Tags: , , , , , , , ,

Friday, March 10, 2006

What's Your EQ (entrepreneurial quotient)?

Bona tempora volvantur--by Guy Kawasaki: What's Your EQ (entrepreneurial quotient)?:

Guy Kawasaki has an "entrpreneurial quotient" test up. I love taking stuff like this, if for nothing else than the time killer. I'm pleased that I got a "70-89%" which I guess makes me average or maybe a little better? Still, there's a huge gap between knowing the correct answers and being willing to step off the cliff and take the risk!

Technorati Tags: , ,

Thursday, March 09, 2006

How to Motivate Yourself Right Out of the Game

Whenever I go to the supermarket, I swing by the magazine rack and check out Home Office Magazine and Entrepreneur and others. "Research," I tell myself, picking them up when they look like something might be of interest. Every morning and every night I read my RSS feeds. I'd say a good 25% of them are all about entrepreneurship, startup companies, running a business, and generally advice and motivation.

I also have to kids, another on the way, and maybe if I'm lucky I have about 10 hours a week to myself where I could actually turn my ideas into products. Every minute I spend reading is a minute spent not producing anything.

There's a time to do research, and there's a time to admit that all you're really doing is stalling because you don't want to tackle the hard stuff.

Even by writing this post, all I'm really doing is stalling. What is it they say, the first step is admitting the problem? :) Maybe the next time you see me I'll have a prototype working.

Technorati Tags: , , ,

Simon Willison's A (Re)-Introduction to JavaScript slideshow on Flickr

I really need to get back into the Javascript game. It's where all the cool development is happening now as people begin to push more for higher quality client-side interface development. It's actually in a funny spot right now that gives you a clue about how the market works -- if you advertise for a programmer and say that you want somebody with Javascript experience, the software engineers will think "Eh, probably all GUI front end webmastery stuff. Not for me." But if you advertise for someone with Ajax experience, then all the bleeding edge web2.0 geek wannabes will come out of the woodwork. (Don't get me wrong -- I want to be one of those web2.0 bleeding edge geeks, too. I'm just observing that if I saw a job offer that focused Javascript experience required I'd probably pass right by it.)

Simon Willison's A (Re)-Introduction to JavaScript slideshow on Flickr

Technorati Tags: , , ,

Wednesday, March 01, 2006

Alan Kay lecture

Alan Kay is one of the demigods of computer science (and the "demi" is debatable). I won't even begin to iterate over his accomplishments - go check out Wikipedia for more. One of the best things about listening to the man speak is that he works at such a different level than all the trivialities we deal in every day. He's one of the ones that's interested in changing the world with ideas, and not necessarily fighting about whether it has the right name, or who got the right credit for it. The $100 laptop from MIT is big right now, and this guy basically had the plan for it 50 years ago.

So whenever I find an Alan Kay lecture, I'm linking to it. Stop reading me and go read it.

Technorati Tags: , ,

The Future Of Web Apps Podcasts

I'm very happy to have found Ajaxian, which in turn pointed me to Carson Workshops and their Future of Web Apps summit. You can download good sized (40minutes on average) talks by some of the big players in the Web2.0 space, including Flickr, Google, Yahoo, Mint, Delicious, and 37 Signals.

They say the links are to podcasts but I only find individual MP3s, which is a bit of a pain - I'd rather subscribe once, preferably with one-click, then go to 20 links and do "Right click, save as" then go to iTunes and have to import them and identify them as podcasts so they show up in my smart playlist.

Technorati Tags: , , , ,

Friday, January 27, 2006

The Cubicle Escape Pod : Must your idea always solve a problem?

The guys over at The Cubicle Escape Pod have been pondering this question for awhile now. They came up with a technology - modcasting (which I find highly cool) - and when they went to pitch it around to people were met with the brick wall of, "What problem does this solve?" And they've been philosophizing on the subject ever since. Does your business idea have to solve a problem? Does your new innovation illustrate a problem that people never realized they had? It's some good stuff.

Here's my spin on the subject. A friend of mine is a lifelong salesman. No computer geek blood in him at all, just business and sales. And I always throw ideas at him. Here's what he said to me once: "If it takes me 4 hours to do something, and you tell me that with your idea I can do that in 2 hours, then I'll always be able to sell that."

That's stuck with me as a foundation for how to look at problem solving. Time is a crucial component to most problems, because time = productivity (how many things can I do/produce in a fixed amount of time) and productivity = money (how much do I make for every widget?) Thus there is a straight line from time to money. Maybe you make money by cranking out more product in a fixed amount of time. Or maybe it goes the other way, maybe by making your employees twice as productive you end up having half the payroll. Either way, what he said continues to be true.

In my job right now that is equally true. I'm charged with overhauling my company's internal support tools, something that has not been touched in years. I talk to the support people and watch them fly over all the assorted speedbumps created by the lousy user interface, skipping over the things they do 100 times a day and getting to the edge cases that they cannot support, asking if the tool can be extended to handle those cases. And meanwhile I'm thinking, "That interface is horrid, wouldn't you like me to redesign it for you?" They say no, they're happy with their productivity. But meanwhile I'm thinking 'You process 100 requests a day...but you might be able to do 500, you'd never know.' And then it'd definitely be a case of "You made my support people 5x more productive, therefore I only need 1/5th as many of them."

Even when time is not directly related to money you can still make the case. I have an hour long commute to work in the morning. Therefore I have an hour's worth of podcast listening. I have to be relatively choosy. An hour-long podcast simply does not get played. I love the ones that are between 5-20 minutes, because not only can I fit a number of them into my time window, but because each is small enough that if I don't like it within the first 30 seconds, I'll just move on. I don't feel like 30 seconds is enough to judge the hour long ones, so they sit at the bottom of my queue, not erased but not listened to.

So what if you have a 45 minute podcast? Well hey, maybe there's 15-20 minutes inside that podcast that I, personally, do not really care about. And it would be great if I could get that podcast the way I want it. Maybe some people like the 45 minute version. Super, more power to them. But I don't. So if somebody told me that I could pick and choose the segments I want to listen to, thus putting the length of the podcast into my control, I'd be all over it. It used to take me X time to get your ideas, now it takes me X/2 time, meaning I can get that much more content into my commute time.

And that, by the way, is exactly what modcasting is all about. If you haven't checked it out, go do so.

Technorati Tags: , , , ,