Wednesday, December 24, 2008

Lenovo T400 : Random Shutdowns / Logoffs Anybody?

Here at the new job I got a Lenovo T400 laptop, and it’s been a bit of trouble.  Has a habit of randomly logging me out as if it’s going to suspend, but then never suspending.  Which means a cold boot.  That wreaks serious havoc on virtual machines, let me tell you.  Sometimes it just goes for the classic bluescreen, too.

The help desk has exhausted their “supposed to fix it” fixes, including:

* Do a blue-button system/bios update.

* Disable the fingerprint scanner (I love help desks.  Who’da thought?)

* Swap out the dock.  Swap out the AC adapters.

Best guess is that it has something to do with power management, since that’s normally when the computer would think it has the right to go ahead and shut you down – because you’ve got critical battery.  But this happens consistently on a machine that is plugged into AC with 100% battery.  I’ve mucked with the power management (including hitting combinations that basically say “never shut down no matter what the battery is” to no avail).

What’s really annoying is that this seems to be a systematic problem, as other T400 users in the company report the same problems, so it’s certainly a systematic thing and not just a random bad machine.  Sad, seems like a good box otherwise – built in webcam, 120gig drive…

Anybody run into the problem who found some other odd, “disable the fingerprint scanner” type of solution that actually worked?

Tuesday, December 23, 2008

Bad Businesses Annoy Me

Christmas shopping is a time for businesses to really step up the customer service so you build loyalty.  Then there are those who are so bad at it they make you turn and run the other way.  Some examples I’ve experienced over the past month:

* – I order two products at once, one for my child and one for my wife.  I start getting emails saying “Something in your order is delayed.”  It does not tell me WHAT, mind you.  But it does tell me “Hey, just so you know, it’s too late to cancel this.  You can always return it.”  I’m not kidding.  They literally taunt me for a month, sending about 1-2 emails a week, always saying the same thing - “Delayed, can’t cancel.”  That is until today when they finally say “Yeah, that thing for your wife?  We gave up and cancelled your order.”  So basically my choices were to go out and buy one and possibly end up with two, and then have to go through the hassle of returning something after Christmas (fun!), or wait and hope it would show up, only to find out now, too late to do anything about it, that it’s not coming at all.

* – I’m not the first to rant about their “convenience charge”, but really, there’s not enough ranting to do this one justice.  I’m already paying $88/ticket, plus a “building fee”, and then they’re going to slap a $12 fee on top of that?  For CONVENIENCE?  Newsflash, Ticketmaster – your site is anything but convenient.  Quite frankly it sucks, it’s one of the worst ticket buying options around.  Do I get to pick my tickets?  Do I get to see how much of orchestra section is available?  Or whether I could compare my seats on a Saturday afternoon versus an evening show?  Nope, none of that.  You know what is convenient?  I used to work in downtown Boston, and for tickets I once walked over to the box office at the Wang Center.  The nice lady broke out a seating chart and began showing me options.  She compared shows for me, and helped pick a good set of seats on a good day.  Charge for that?  Zero.

* T-Mobile – I’m so sad about T-Mobile.  I’ve been a customer forever.  8 years and counting, they tell me.  Since it was Voicestream, since it was Omipoint.  I’m pretty sure it’s even longer than that, it is the only cell phone I’ve ever had.  I once had to buy a phone in a hurry (on vacation my existing one fell in the ocean), and I called them up later to basically say “Yeah, I’d rather not extend my contract, but I still want the discount please.”  And got it.  When I called customer service I would hear them gasp when they looked at how long I’d been a customer, and often they’d thrown in an unsolicited “thank you for being so loyal” comment.  Well, I wanted an Android G1.  I really did.  My wife needs a new phone as well.  So I called up recently and said “Any chance I can get a G1 without the contract extension?”  Lady on the phone said no.  I said, “I’ve been a customer forever, I really don’t like having to lock myself into a contract after all these years.”  Still, no.  So I said, “If you insist on treating me like a new customer no matter how long I’ve been a customer, shouldn’t I just try my business with somebody else?”  She said, “You can do that if you want.”

That’s annoying enough.  What’s worse is that this week I got a letter from their marketing department specifically citing me as one of their top 5% loyal customers.  I realize it’s just a promotional gimmick, but still, the timing is horrendous.  Here’s one operator who basically acknowledges that in real life T-Mobile doesn’t care at all about customer loyalty, and I’m presented with a document that says “Sure we do.”  The offer itself was even more insulting, something about a free “companion airfare.”  The catch being that you had to book your travel 30 days in advance, and the travel had to happen before the middle of February.  So doing the math you basically have to live a life where you get this unexpected letter, drop everything and say “Hey honey let’s go book a trip.”  In this economy.  Yeah.

I once complained on this blog about my Dell laptop, and a Dell customer advocate found it and fixed my problem.  I’m curious if any of these companies are smart enough to keep an eye on the blogs to try and make customers happier.  I don’t really care about Ticketmaster, I think they know they’re bastards who are abusing their monopoly.  Target I expect is just too incompetent to really do anything about the problem (they refunded the money, so other than that, what can they really do?  It’s Christmas, my wife does not have the gift, thanks a lot).  But like I said, I’m upset about T-Mobile, and still wishing that I didn’t have to leave them.  I’m even eyeing the rumors of a G2 coming soon….

Wednesday, December 10, 2008

What’s Wrong With A Nice #2?

And by that I mean a pencil, you see.  I’m at the new gig and collecting office supplies. When it comes to randomly taking notes that I might actually value (as opposed to note taking for the sake of appearances), I like a pencil.  Makes me feel like I’ll be more likely to edit/correct/erase, even though that’s not the case.  And besides, as I’ve mentioned before, when you walk the halls with a sharpened pencil you feel like you could stab a coworker if you really needed to.  I never would, of course, but it’s nice to know I could :).

So I find the pencils, and of course they are unsharpened.  I ask the admin/HR lady for a pencil sharpener.  She says, “I think it’s in one of the boxes since we moved.”  She then digs into a box and pulls it out.  “You’re the first one to need it.”

At this, another coworker pops his head into the hallway and asks, “Is that a pencil sharpener?  I can’t remember the last time I saw one of those.”

I take it back to my office (why not, if I’m the only one using it?), plug it in, and sharpen some pencils.  I turn and there’s another coworker in my cube saying, “Wow, that *was* a pencil sharpener I heard!”

The funny thing, though – what’s so obsolete about a pencil?  What new bit of technology has replaced it?  Is everybody running around with mechanical pencils?  I always break those, I write too hard.  Pens?  I lose too many pens.  I told a coworker, “You can tell at a glance if your pencil will work, and you don’t have to actually scribble on your paper first to prove it.”

Thursday, December 04, 2008

Does This Gadget Exist?

As I spend more time in my office and look to optimize it for how I like to work, I've decided there's a gadget I need. I want a device that hooks up to my tv and plays movies. Here's the thing, I want it to read the media from a USB stick. That way it doesn't matter where the media came from, and I don't have to go through the trouble of burning a DVD (it helps that I don't have a DVD burner handy, ya see ;)).

Does such a device exist? I don't need it to be a fancy wireless streaming thingie, but it wouldn't hurt. It's mostly the USB thing that I'd like. I just don't want to watch on the computer monitor or on my iPod, I want it on the tv.

Wednesday, December 03, 2008

What To Do With A Tivo Box?

So when I switched to FIOS I got rid of Tivo, as I'm sure I've mentioned.  Maybe someday I'll return to them (FIOS DVR service is pretty poor, as I have also mentioned), but until then I'm sitting here wondering if there's any life left in the box.

The particular one I've got is the Humax model with the built in DVD burner.  So by default I've been using it to move my camcorder stuff to DVD, which works fairly well.

But I was thinking this morning, could I get content from any other source?  Did anybody ever decide if there was a way to read media from a USB stick, for example, and show it on the box?

What about the "Tivo At Home" option?  Do I have any "play movies and pictures on my Tivo" choices still available to me, now that I do not pay for the Tivo service?  I was under the impression that you needed a key to make that work.

Monday, December 01, 2008

Dense Words

If you code for a living, there are times you may experience dreaming in code. Or at the very least, spending those last few moments of waking consciousness thinking about code.

Well, being unemployed I'm playing lots of Wurdle on my iTouch :). As such, last night I went to bed dreaming about letters and words. And a puzzle dawned on me -- what word could I imagine that, using just the letters of that word, would allow me to form the most words? I know it's a silly thing, but hey, there are puzzle geeks out there that dig such things.

The word that occupied my brain last night was "stare". I remember finding over 20 words inside that word. Let's see how I do now that I'm awake... (*) Technically I should validate that each of these words is part of some standard dictionary, but it doesn't occupy *that* much of my attention, so forget that.

star tare tares ate
rate rates sate tar
eat eats east rat
rats ear ears tear
tears sat tase taser
art arts

22. I'm sure there are some other words in there that will pop right out to Scrabble players, but those are what I could figure out off the top of my head. Funny what our brains do when they catch on a particular problem.

Thursday, November 27, 2008

Ruby on Rails : Get Next ActiveRecord Element?

Ok, file this one under "surely there's a way to do this that I'm just missing."

You're in a typical scaffold where you've gotten your list of Widgets, and now you're on /show/ for a particular Widget, say maybe #123. What I want to say on that page, with only the single Widget#123 for context, "go on to the next element." Or the previous one. You can't do it strictly by ID, because your IDs might not be continuous (i.e. the next one from 123 might be 125).

Anybody got the trick?

Thursday, November 20, 2008

Prototype This

Is anybody but me watching this Discovery Channel show? It's my new Mythbusters / Junkyard Wars, I absolutely love it.

The premise, set within the first 5 minutes, has a handful of engineers brainstorming a real physical world problem. Previous examples have included a "traffic busting car" that would actually rise up on stilts to drive over traffic jams, telepresence "boxing robots" for the videogame of the future, and right now I'm watching them build a robotic firefighter.

They then set about solving the problem. The engineers include a mechanical / robotics guy, an electrical engineer, a software guy, and somebody else who at the moment escapes me.

It is a fascinating look at what it means to prototype, particularly in the real world (as opposed to just a software prototype). They're trying to solve a real problem. They look at the constraints of physics, but not necessarily of cost. In other words, they focus on the variables that cannot be changed, knowing that the others can. They use whatever new technology they want. They typically have a fixed time window of 2 weeks to solve the problem, to keep them from just brainstorming it forever and never building anything.

The end result is always fascinating. It works. It's more than a cobble-together, but not the kind of thing you'd say "Oh yeah, I'll buy that." But what they do is prove a concept. They actually made a car get up on stilts (automatically), and drive over traffic. It even parked itself sideways, very impressive.

Right now I'm watching the robot firefighter episode and it's just all the more impressive. They train with firefighters to appreciate the problems, which include things like monitoring oxygen levels, finding victims in a dark room, and getting equipment up the stairs. They then go about trying to improve conditions for the fighters by creating some assistive devices, such as a heads-up display that shows oxygen levels and includes a thermal camera. If someone took half these ideas and made them real, it would make a serious improvement to a very real problem.

Tuesday, November 18, 2008

Being Unprepared Stinks

I'm having a weird week already. There's a technical conference here in town, and I registered and paid long ago. In a truly strange case of odd timing, I got laid off literally a week before the conference, while my reimbursement check is still pending in the system. Company was cool, though, and said that since it was approved by a manager while I was an employee that they would pay it.

So on the one hand, free conference. It's no longer my job, and I can skip if I want, but it is "my thing" and it's a nice excuse to get out of the house and hang with geeks. In theory it's a good networking opportunity.

But on the flip side I need a job. Staying away from my cellphone for 3 days is not exactly a great idea, either.

Long story short, I decide to go. I basically need to get there before 9am if I'm to register and get into the keynote.

I leave at 7am. Problem #1, there is a big accident on Rt93 that takes up an hour of my commute just to go three exits to the train station. I'm not kidding. Decision time -- do I take the 8:15 train, which guarantees to not get me to the conference until 9:30? Or do I assume that the traffic is now broken free, and I've got an hour to get into town? I choose to go for the drive.

Problem #2: Bad gamble. I end up driving for another hour, and literally do not get out of my car until 9:15 anyway. I have parked according to my original plan, which is to drive in and park in my former work neighborhood, where I'm familiar with the traffic patterns, planning to walk the less than 1 mile to the conference.

Problem #3: I basically end up getting to the conference at 9:45. I have completely missed breakfast, and catch the keynote sitting in a corner and trying not to draw attention to myself.

Problem #4: In my hurry to get out of the car and get going, I have forgotten my glasses. So I can't really see any of the presentations at all. Not a problem, as this is a programming conference and every single person including myself has a laptop.

Problem #5: This is my wife's laptop that I am using as backup, since I lost my old machine when I got laid off. The programming environment, that I have set up in a hurry in anticipation of exactly this moment, is not complete.

Problem #6: I cannot get on the net. My iTouch gets on just fine, so I can check email and Twitter, but I can't get the laptop connected. I believe it's because of the old wireless card in there, which is probably still doing 802.11b, and the hotel is not broadcasting B anymore.

So: I'm starving, I haven't met anybody to talk to (having missed the breakfast mingle time), I can't follow the presentations, and I can't do anything meaningful on my laptop. I ended up going home before lunch.

Tomorrow shall be different. I've updated my programming environment and put in a new wireless card. I'll make darned sure to pack a breakfast for myself, remember my glasses, and take the train instead of trying to beat the traffic. I expect it to be 100% better.

Wednesday, November 12, 2008

Oh to be unemployed, now that Christmas is here

Well, as of 9:45 this morning I'm officially unemployed.  It wasn't a complete surprise, the boss was nice enough to let me know a few weeks in advance and I was able to clean out my desk and get personal files off my computer with time to spare.  But, still, being unemployed is no fun.

Thursday, November 06, 2008

Blinking Numlock / Capslock

So I'm trying to bring the old laptop (a pre-1999 Thinkpad 600e) back to life for the kids to play with.  Having the weirdest problem.  No matter what Linux I try to apply (always booting from CD, as this bios does not allow booting from USB) hard crashes and leaves me in a state where the numlock and capslock keys are blinking.  Googling around tells me that this is a "kernel panic" crash, but what I can't figure out is what is crashing. 

I have tried Puppy, Ubuntu, Knoppix and Nimble, either installing to hard drive or just running from CD, whichever was appropriate, and every single one of them exhibits the same failure.

I have already swapped out the hard drive, but that did not fix the problem.  I have not yet run the memory test, but I'll do that next.  I suppose if that passes, and it's not the HD (I did the BIOS test of the HD and that works, so I'm presumbing that the controller works as well) I guess I'll have to chalk it up to something in the motherboard, give up and throw the whole thing away.  That'd be a shame, I've kept it this long :).

Absolutely last ditch effort would be to put the hard drive into my other, modern, working laptop.  Then use USB/CD to install Ubuntu or some other directly onto the hard drive, then put the hard drive back into the old machine and see what happens.

Monday, November 03, 2008

Hey Look, A Political Bug!

This is a new one on me.  The date widget we've been using (I don't have the exact library handy to blame), actually repeats a day the first weekend of November.  So this year for instance, Sunday and Monday both show up as Nov 2.  Every year it's always November, and it's always the first weekend.  We just found it so we haven't yet determined the cause, but guesses range from daylight savings time to leap year to rounding issues.

I like the theory that it's politically motivated, to make people think that November 4th (voting day!) is actually Wednesday.

Tuesday, October 28, 2008

Oracle ORA-3113 with XmlAgg and Order By

I've always said: if you've got a problem and you can't google the answer, then solve the problem and write a blog post about the answer :).

Many folks may not realize that Oracle's XmlAgg function has an "order by" clause available.  As a matter of fact I even found one supposed resource site that said "make sure you put an order by on the select that you'll pass to the XmlAgg", which just plain does not work.

You invoke it like this:

       xmlagg (
         xmlelement ( "recipient",
           xmlelement ( "id", id ),
           xmlelement ( "code", code ),
           xmlelement ( "label", label )
           order by sort_order
       from data_table;

Note in particular that the order by clause simply comes at the end of the XmlAgg, after the XmlElement clauses.  No comma or anything like that.

Well, I was trying this all day long inside a stored procedure and kept running into the dreaded ORA-3113 error, which basically means something bad happened somewhere in the middle.  Strangest thing, because that's certainly the right syntax.

Know what solved it for us?  The XmlAgg has to see the variable you want to order on.  In the example above I want to sort on sort_order, but there's no associated XmlElement for it.  I looked back in the references I'd googled and sure enough it's always mentioned.  So instead, I did this:

     xmlagg (
         xmlelement ( "recipient",
           xmlelement ( "id", id ),
           xmlelement ( "code", code ),
           xmlelement ( "label", label )
           xmlelement ( "order", sort_order )
           order by sort_order

And presto!  No more ORA-3113.

Not sure if that'll work for everybody, but it's worth a shot if you're stuck.

Monday, October 27, 2008

Linux For The Kids?

So there's this old laptop that's been hanging around my house in need of both a regular battery and now a CMOS battery as well.  It's a Thinkpad 600e, for the curious.  I'm thinking, now that my oldest is in school and her sister is coming up right behind her, that it might be time to designate one of my machines as the kids' setup.

Linux is the only real option, but which one?  You can't just say "ubuntu" whenever the question is "which distro?"  Sometimes it just don't work.  Here's the constraints:

* Easy online setup (driver recognition) so they can play Flash games.

* Must be able to play Flash games. :)

* Graphics requirements not high (this thing will probably do 800x600 at the most), but I'd like them to be able to play TuxTyping, TuxMath, those sorts of games.

* Boot without login option.  There's no need for them to worry about usernames and passwords.

* Fast bootup!  Perhaps most important of all, when a 4yr old child wants to play on the computer, she does not want to wait 3 minutes for it to get started. 

Suggestions appreciated.  The system does have a hard drive, so I shouldn't have to worry about running off a USB stick.  But if somebody tells me that Puppy Linux or some other mini-distro is what I'm looking for, then I'll take it!

Wednesday, October 15, 2008

Making Changes After The Roof Is On

Today a fellow engineer bemoaned late design changes to the spec, pulling out the old architect's analogy of changes "after the roof is on."

I decided why I don't love that analogy.  In the architect's world, he typically has a meeting with the people who are going to, you know, live in the house.  Software guys almost never get that option.  The closest we come would be more analogous to the architect going up to the carpenter and saying, "Hey, what kind of windows do you think the homeowner wants?  I like 3x4 pane, myself."  And then the carpenter says, "I dunno, I have 2x2 in mine, and all the houses in my neighborhood seem to have those.  They're much easier to clean."  They then have a discussion of the relative pros and cons of each, and finally pick one that they're both happy with - which has nothing to do with what the user might have wanted.

So yeah, it's quite possible that "after the roof is on", in our situation, the homeowner shows up and says "Wow, I hate those windows."

The best part is then when the carpenter and the architect, who picked the windows through mutual agreement, go away grumbling that the homeowner doesn't know what she's talking about, because obviously their decision was the better one.

Friday, October 10, 2008

Net Stop Beep

I've posted before about the three most beautiful words in a Windows console, "net stop beep".  This simple command will kill forever the ancient and annoying Control-G beep that pops up every now and then and, if you're like me, drives you right out of your headphones.

Only it's not forever, it's only until you reboot.

Anybody know how to kill it dead forever?  Does autoexec.bat still exist, can I put it in there? :)

Battery Fail

Recently I took about an hour worth of video on my camcorder.  It's one of those digital cams that has the mini tapes in it, and I'm always stuck trying to figure out the best way to get it off there and onto some format that we can watch regularly.  (One enterprising friend said to never bother, just plug the camera back into the tv whenever you want to watch).

It just so happens that the wife's Linux laptop has a Firewire port, and after a little wrangling I found some software (Kino) that would, in fact, capture the video nicely.

I get everything wired up and it starts running.  The whole setup is on the couch next to me as I work on my own laptop.  It dawns on me that while the laptop has about 3 hours of battery life, the camcorder does not usually do a full hour, so I go plug the camcorder in to wall power.

The video is 57 minutes long, and it transfers in real time.

At 54 minutes, the laptop shut itself down, out of battery.  I'd apparently not realized that while doing the firewire/video thing, battery would be eaten at a much greater rate.  Dangit.  No idea what it did to the actual file it had been building for the last hour, as I gave up and went to bed.

Moral of the story, don't guess, just plug everything in.

Thursday, October 09, 2008

I Find This Fascinating

So the other day I notice that on the back of the men's room door at work is a new gadget.  It's situated right over the door handle, and does in fact read "Automatic Door Handle Deep Cleaning System."

I find this fascinating.  I realize that there are people that have an issue here.  You've done your thing, you've washed your hands, and what's the first thing you need to do next?  Touch the door handle.  I've seen places where they put the trash can near the door so that you can use your paper towel to avoid touching the handle, and then just throw it in the trash.

I love the idea that somebody had such a problem with this that they invented a device specifically for it.  This is not some sort of general purpose cleaner, people.  This thing's purpose in life is to clean door handles.  That's what it does.  That's all it does. 

So far everybody who I've spoken with about it is intrigued, and has no idea how it works.  Several people have suggested that perhaps it is some sort of ultraviolet thing.  I point out that it has a "refill" light on it, and it is unlikely to be filled with UV rays.

I couldn't help it, I actually googled for the thing to learn more about it (the link above).  Turns out it is situated above the door handle so that it can emit a "deep cleaning spray" down onto the handle at regularly programmed intervals.  Doesn't seem to say what exactly it's being sprayed with.

What'll they think of next? 

Monday, September 22, 2008

Oracle and XML : Random Nodes

So I solved my "scoring XML" problem from a previous post using XSL stored in Oracle.  A simple XMLTransform function later and all of my profiles now get a numeric value. Awesome.

I thought I'd push my luck.  I want to put in a hint system so, for instance, if the user has not filled out the work experience section, he might get a message saying "You can get 10 more points by telling us about jobs you've had."    I could hardwire the heck out of it, but that's no fun.  What I'd like to do is write out a bunch of "hint" elements to the result of the transform, one or more for each section that's not filled out, and then let the interface pick a random one to use.  So if my result said something like:




<Hint>Tell us about some jobs</Hint>

<Hint>Take up a hobby</Hint>

<Hint>Get some friends to sign up</Hint>



then I'm looking for a way, using Oracle's XML/XSL functions, to return one of those Hint elements.

It's apparently much harder than it looks. :(  The closest I found was something that said I could use "//Hints/Hint[random()]", but Oracle barfs on that syntax.  Doesn't like 'random'.

Everything I googled on the subject comes back with stuff about how to generate random sequences.  I need to select a random value.  One option is to emit each Hint element with some sort of random identifier, and then when it comes time to pick one, just pick a constant.  But that's a pain in the neck as well, since I need to be guaranteed I'll get one and only one result, I would have to make sure (without knowing how many Hints I'm to have) that I have adequately spanned the 1-n space just right with my random numbers.

For right now we're leaving the hints off.  But it bothers me that something that seems simple -- "Get me one of my random children", does not have an obvious solution.

Friday, September 19, 2008

"Scoring" an XML File

Ok, here's a project.  I've got, in XML format, the profile of a user.  It's a relatively fixed structure, so for any possible section I'll have at least an empty element for that section.  For instance if the user has no Interests I will have an <Interests/> block, but no <Interest>...</Interest> blocks inside.  There could be 0 or more <Interest> elements.  This is true for a number of sections.

What I want to do is assign a score to each of these sections, and then say "If the section is empty you get no points, otherwise you get X points."  Then, report the total.  If this sounds like the way LinkedIn does profiles, you're exactly right. :)

I'm trying to decide how to proceed.  In this particular case I need something fast and not very disruptive.  The XML is stored in an Oracle database, and the most awesome solution would be something that either runs directly in Oracle, or maybe an XSLT transform.  I could certainly whip something up in Ruby in the time it takes me to blog this, but that's not really an option since we have to factor it into our production environment.  It'll be a heck of a lot easier to just say "Call this stored proc to get the score" then to explain why we need to start installing Ruby on the production boxes.

Anybody got any brilliant ideas?  I'm trying to XSLT solution, directly in Oracle, but it's not going smoothly.  I'm wondering if there's enough flexibility in XSLT to do this level of math.

Thursday, September 18, 2008

IPod : Beware of Powered FM Transmitters

I've had this happen before, but never quite so severely.  So I thought I'd post a warning.

As most folks know, the iPod is smart enough that if you unplug the headphones, it pauses any music that you were playing.

But if you're in the car and using a powered FM transmitter (such as those by Griffin), they don't plug into the headphone jack, they using the docking/syncing port instead.  And you know what?  If you're playing music that way, and you unplug it, it doesn't stop playing.  This can be incredibly annoying, because unless you actually notice the little triangle in the upper right corner of the screen, there's no way you could ever know.

Unless you're like me, who has a smart playlist of "New Podcasts" tuned to erase things after they have been played once.


I woke up this morning to find my iPod almost completely out of battery, and every single one of my podcasts played (and, hence, gone).  For the curious it looks like I get about 10 hours of MP3-playing battery life :).

That's annoying.  Worse, iTunes has that self-managing "keep only unplayed podcasts" feature as well, so the act of plugging the device back in (to power it up!) also triggered a sweep of the files themselves, so they're gone from my laptop as well.  If I want to get them back now I have to selectively go through my podcasts, remember which ones had unplayed episodes, go back to iTunes Store, and re-get the ones I missed.

Tuesday, September 16, 2008

Dilbert : On The Economy

Scott Adams, creator of Dilbert, wanted to get an informed opinion on the coming political election.  Specifically on the subject of the economy - which candidate would be better for the economy?  So he set about finding out.  He's published the results of his survey of over 500 economists.  It's actually pretty cool.  Be sure to read the raw data (Powerpoint), not just the summary.  Judge for yourself.

Don't want to read it, I'll hit you with the highlights.  Economists are generally Democrat, and Democrats favor Obama, Republicans favor McCain.  Big surprise.  However, the independents prefer Obama nearly 2:1 as well (Summary of Key Findings #4, page 91).  When you add them all up, on 20 issues considered important to the economy, Obama is seen as the better choice for 16 of them, including 11 of the 12 deemed most important (by the economists, not the survey people).

Some folks still call it inconclusive because it's not imbalanced, but it's probably more unbiased data on the subject in one place than you're gonna get on the news any given day.  Worth a read.  Pick the issues that you think are important and make your own decision.

Monday, September 15, 2008

Verizon FIOS DVR : Needs Work

I never liked Comcast.  I just don't like monopolies in general, I think it gives them too much freedom to just charge whatever they can get away with.  So when FIOS came to my town I was quick to get on the list and switch over. 

I love the service.  Love the technology, love the customer support, love the whole experience.

Except the DVR.  The DVR is not quite done.  I came from years of Tivo, and begrudgingly tried Comcast when I went to HD and didn't want to get a new Tivo box.  Verizon offers some things that sound like good ideas at first, but when you look under the covers, there's a problem.

The big feature of FIOS is the "home sharing" option.  This is what they hype in commercials - that you record on one tv, and you can play back immediately on any other tv in the house.  This is true, as far as it goes, but it's true like a political commercial is true.  It's not long before you learn the real details behind the scenes.  For instance:

* When playing back a shared program, the response of the controls on the box goes through the floor.  Don't even think about fast forwarding through your commercials, because by the time you get the Play button to register you'll now have to go backwards a minute or so because it fast forwarded so far when you didn't want it to.

* You can't "downscale".  So if the box you're recording on records a HD signal, and you have a standard tv in the other room? You're out of luck.  So for all of your programs you have to decide whether you want to share them, or use HD, because you can't have both.

* Last but not least, here's the big one.  You can only have one sharing DVR in the house, because it has to be the hub.  It is NOT true that you can record on any tv and playback on any tv (note how carefully they do not say this in the commercial!)  You can record on *one* tv and playback on any tv.  So that means if it's 5 minutes before you want to go to bed and you remember something you want to record (Saturday Night Live, for example?) you've got to get up, go to whatever room has the DVR box, and set up your recording there.  Even though you can remotely play programs, you cannot remotely record them.  You can't send a signal from a standard box to a DVR box saying "Record this."

None of these things makes me want to go back to Comcast, but they were certainly disappointing.  If I get another HD tv then maybe I can stream HD content (the tech told me that can't be done, but he also told me that you can't record two programs at once, and that is not true).  But the response time thing is pretty painful, and the "Can't record from any room" is really annoying, especially to those of us that used to have a couple of Tivo boxes. 

There are other little things that are annoying - the guide, for instance, is almost unusable with so many channels moved around, and there is no graphic bar like Tivo had to tell you how far along you are in your program (nor, as far as I can tell, is there the equivalent of a "15 minute skip" when you want to jump to the end of the program).  But it's still the way to go technologically and I expect most if not all of these problems to be fixed in no time.

Monday, September 08, 2008

Why Is My Beep So $%^&*( Loud

I have googled everywhere for this but I can't find an answer.  The error beep on my machine -- the one associated with errors, typically in a shell window but not always - is so effing loud I can't stand it.  I have headphones on, listening to music at comfortable volume, and seriously, when the beep comes on it is so loud I grab for my headphones to rip them off, every time.  It's painfully loud.  In some cases it's also painfully long.

In the Control Panel / Sounds thingie, none of the Windows sounds seem to map to it.  We're talking about the Control-G beep sound, for any old timers who remember THAT.  (Try it in a DOS window, it still works :))

It's killing me :(.  Trying to write code is like some messed up Skinner experiment where everytime I make a typo I'm punished with an electric jolt.


UPDATE:  Found it!  From a shell window, "net stop beep" to make it die.  Woohoo!  It was the remembering of Control-G that led me to the solution, found here :

which is an "old fogey" discussion of how you used to go about actually writing to the hardware to make the beep, until it turns into a "How do you turn it off???" request.  Oh I am so pleased.  Turns out it is actually a service (beep.sys) that you can stop.  However it does not seem to appear in the Services menu.

Sunday, September 07, 2008

...Therefore I Am?

Today I'm wearing my Geek "mechanics" shirt, with the normal name patch over the left chest pocket reading "Geek."  At work I've always gotten amused compliments, entirely from people who obviously know me and get it.

Today I'm at the gas station filling up, and the attendant says, "Why does your shirt say Geek on it like that?" do you answer that, briefly?

I told him, "It's a computer thing."  I don't expect he cared for a longer philosophical debate.

Thursday, August 14, 2008

iTouch Time Wrong?

Unpredictably, sometimes when I sync my iTouch the time and date go wonky, and suddenly I'm 12 hours and a month in the past.  This wreaks havoc on any chance I had at using the calendar functions, and since I've recently started using a journalling app, it was time to fix it.

Turns out that it's a known bug with no current fix from Apple as of the latest firmware.  However, there's a workaround, at least one that's working for me.  The problem only happens when iTunes is running and then you plug in your device. If you close iTunes, then plug in the device (and let iTunes launch on detection), I get the right time, every time.

It's a bit of a pain to have to remember that, but not as much as being beeped by reminders of meetings that happened a month ago.

Tuesday, August 12, 2008

Upgrading to Rails 2.1

Started upgrading from Rails 1.2.6 to Rails 2.1 today.  Here's a few things we ran into:

  • Oracle adapter now known as "oracle_enhanced" rather than "oci", and can be installed via the "activerecord-oracle_enhanced-adapter" gem
  • There's a couple of config.* options that are no longer valuable and you'll be warned to delete.  They are in the specific environment file (e.g. development.rb), not environment.rb, in case you're looking for them.
  • Delete any tmp/sessions you've got lying around, and for that matter clear the session cookies in your browser as well.  Sessions are apparently different now.
  • Speaking of which, you need a key for session generation.  In your environment.rb file you'll need this:
    • config.action_controller.session = { :session_key => "_myapp_session",
              :secret=> "some random secret key of your choosing over 30 characters" }


  • gem update --system (with TWO dashes, everybody always gets a cut and paste error with that) needed to update the Gem system
  • gem update   may run into some gems that do not offer precompiled binaries (only relevant for Windows, I suppose).  I hit a wall with hpricot and ferret in particular.  So to get around the problem I uninstalled them (ignoring any dependency warnings), continued with gem update so all my other gems would update to their latest versions, then put back hpricot and ferret based on the versions I previously had.  Oh, and mongrel gave me trouble as well.
  • For some reason rake also gave me trouble because an old version was lying around with "require_gem" in it, which apparently hasn't worked for awhile.  For that I just edited rake.bat and changed it to 'gem'

Other than that, things seem to be working.  I didn't have to change my source code at all, which is a testament to the "reverse deprecation" that's been going on where in anticipation of 2.x my code has been telling me "Ok, this thing here is going away with 2.x, so stop it."  Can you imagine what the Java language would look like today if they'd taken that approach from the beginning, instead of just forever marking things deprecated and never removing them?

(I haven't touched Java in a few years, did they ever get around to removing the deprecated stuff??)

Monday, August 11, 2008

MIT DEFCON Subway Hacks

Ok, now that's pretty cool stuff.  Most of it's over my head, sure, but it's not like I was planning on using any of it to begin with.  I just think it's neat to be reminded that the generation of original "Hackers", those that find their way through the system by whatever means necessary (the first pages are all about the social aspects of just paying attention to what is around you), is still alive and well.  Recommended reading, just to appreciate the mindset that goes into that sort of hacking.

And, because there are people that won't want you to.  Acting on it should be illegal, writing and reading about it should not.

Tuesday, July 29, 2008

My IPod Touch Died

Sunday morning I'm mowing the lawn, it's working fine.  I come in and put it down on the kitchen counter, because the whole family's got an errand that needs doing.  The house is empty for the next two hours or so.

I come back, get iPod, go back outside to finish mowing the lawn.  Thing is dead.  No video, no audio, dead. 

The annoying part about touch screens at this point is that for an item that is powered off, there are very few physical ways to interact with it.  There are two buttons, basically.  So you either hold one, you hold the other, or you hold both.  And that's about all you can do.  None of those things makes my ipod come back to life.

I plug it in to the laptop, hoping that maybe it is a battery issue.  Nothing.  Doesn't even register.

I have an appointment at the Genius Bar today at 10:50.  Not sure what I expect them to do, unless they crack it open right there in front of me :(.

Startup School 08

Great videos here from Paul Graham's Startup School 08, including Paul Graham, Marc Andreesen, Jeff Bezos, Mike Arrington, and this programmer guy named David Hansson who apparently wrote something called Ruby on Rails ;)

DHH's talk is particularly fun, because he gets up and in the first two minutes says "We're not hiring and we don't want VC money." He then goes on to talk about the value of aiming to make a million rather than a billion, why the latter is darned near impossible but the former is a simple math problem.

One of the best parts comes at the end, when somebody says, "I'm at the terminal 14 hours a day.  How do you stay focused and motivated?  I find that my attention drifts to other things."

His answer flies in the face of all those caffeine-enhanced all nighters that you think are the key to getting you your billion.  And it makes you actually think that you might be able to do it, after all.

Thursday, July 17, 2008

Automatic SMS : Handling Authentication

I've been asked too many times to add SMS to our product, so rather than wait for the business spec I'm just going to go ahead and build it.  Our users are high school students who are trying to get noticed by colleges.  So an event in our system would be "Boston College noticed you."  I want that sent to the students' cell phone.

I get that I can ask the student for a phone number and a carrier, and from there create an email address which will enable me to send a message.  That's easy.

But how do you handle validation?  Say that the student enters a wrong number for one of any number of reasons (malicious, or inadvertent, or they just plain want to stop subscribing later).  Do you just take the number and start mailing it, and the only way to unsubscribe is to edit your profile on the site?  That only works if the person in question is the one who owns the phone number.  If I am sending messages to a phone number who does not want them, and that phone number does not have an account on my system, then there's no way for that person to get unsubscribed.

Is there a best practice for this sort of thing? I'm thinking that when the user first enters a number, we send a message to the cell phone with some sort of numeric key, and the user has to respond to that message.  That would be a standard email practice.  Just not sure if it's convenient on a cell phone.  It wouldn't fix the unsubscribe problem, but at least it would assure that only people who wanted the messages would be getting them, so presumably everybody getting messages would also have an account on the system and thus be able to go in and change their subscription preferences.

Wednesday, July 16, 2008

Seymour Papert

If you ever had the chance to play with LOGO as a child, or watch the Turtle robot run around the floor dragging its pen behind, then you owe that to Seymour Papert, the MIT professor who has pretty much spent his life researching how children learn (and, by association, how to make technology work for them). 

I had no idea that a motorcycle accident (he was walking, it hit him) had left him with a brain injury so severe that he couldn't walk, talk or read.  "His accident was worse than horrible for somebody whose life was the mind," said his colleague Nicholas Negroponte (lately famous for the One Laptop Per Child program).

If you're a geek, go read the article.  Without geniuses like Papert leading the way most of us would never have seen a PC in our childhood, or written our first videogames when we weren't even out of elementary school.

Why The Audiobook Industry Is Broken

All great points from Evo, whose site is trying desperately to change the face of how people get their audio content (although gets all the press :)).  In order I prefer:  podcasts, individual downloads, audiobooks, ebooks, traditional books.  My rationale goes almost entirely toward the convenience of listening.  I like to listen while driving, or on the train, or walking.  Very hard to do that with a traditional book.  If I have the time to sit and read a traditional book, chances are I have the time to do something else, too.

When I have spare book money (like a gift certificate), I always go for the audiobook.  The first thing I do is rip it, which results in about 100 MP3s or so (one small file for every segment on every CD).  I then use my MP3->Audiobook converter to produce a single audiobook file, which I can play on my iTouch on "faster" mode.  The most time consuming part of that task is not even the ripping - iTunes has got that down to a 1-click function.  It's finding the files.  Most audiobooks do not bother to put the appropriate ID3 tags in their files, so half the discs will go under the Author name, some under the Book name, a few under Compilations....and then sometimes the tracks are labelled just Track 001, or Introduction - 01... The biggest pain is in finding and sorting them all.

But it beats the heck out of carrying around 10 CDs!

Monday, July 14, 2008

iTouch App Support : Review

Yeah, yeah, yeah, we iTouch owners get screwed by having to pay an extra $10 to get what the iPhone folks get for free.  I still don't want an iPhone, I'm happy with what I've got.

So far the new application directory is awesome, very pleased with it.  I do not love the new iTunes 7.7, in particular the "I'll just go ahead and back up your iPod whenever I feel like it" feature.  If you add apps on the device, then you have to sync them over to your PC (it tells you quite clearly that if you don't, it will delete them), and when that happens, it will do a backup.  So if you're in the habit like me of syncing at the last minute before you go home from work, you might find that your 30 seconds of budgeted time really takes 5 minutes  :(.

App management in general will be interesting, as these are treated as store "purchases" even if they are free.  There is no real way to test drive apps.  You purchase them on the device, they are automatically installed.  If you don't like it and delete it, you have to delete it from your desktop as well or it will just keep getting installed again.

So far the best game I've found is called Aurora Feint.  It's Bejeweled, but with a cool sort of "get points / level up / earn power boosts" RPG thing going for it.  That'll keep me busy.

Apple Remote is as cool as everybody says it is.  You get a WiFi remote control for iTunes!  So if you're close enough to your machine to use it as a jukebox (or if you have those remote speaker thingies), but you're not close enough to control the machine, well, now you can be.  Works seamlessly.  Highly approve.

On the downside, I still don't see a simple offline file management tool and/or PDF reader.  There are a couple of "ebook readers" but each seems to be just a client for one of the online services, and that's not what I want. I want to put PDFs on the device and read them when I'm not in a Wifi zone, why is that so hard?  There's an app called FileMagnet which seems to do that sort of thing, but because of the desktop client requirement it is Mac only.  That doesn't help me.

Overall I'm having fun.  I've downloaded a bunch of games for the kids (including the Disney card games, and the Jirbo series), and a variety of productivity apps including Evernote and Zenbe Lists.  WeatherBug is better than the standard weather app, and if you want IM, there's an AOL client that's good enough (though not great, but I don't use it much).

The best thing, really, is that the App Store exists on the device.  I never touched the music store on the device, and hated the fact that you could not download TV or Movies that way.  But by being able to get apps without being at your desk, I can try them out much faster.  That means that Apple gets more of my money, too.  (Speaking of which, the average price point for many apps seems to be coming in at $10, which is too high - I would have preferred half that.  But there are still plenty in the $3 and under range, if you look for them.)

Thursday, July 03, 2008

Design By Prototype

We've just started a new thing at my company and I'm hoping it's a success, as I'm kinda sorta right in the middle of it.

When a new feature for your product comes along, be it big or small, how does engineering find out about it?  What's the actual hand off that they're given to work with? A spec?  Use cases?  Screen shots?  Personally we've found (being a small company, < 10 tech people) that the perfect document  never gets written, first of all.  Not only can no one decide on the proper amount of detail to use, it doesn't really matter what's documented because if you find out in the last week of development that you didn't put in a feature (undocumented) that the product manager wanted, you're going to be doing it anyway.

One step removed from Word documents is "design by screenshot", which is basically what we live by now.  This is when the graphic artist mocks up what the feature will look like (whether that takes 1 shot or 20 depends on the feature).  This way, in theory, every non-engineer can look at it and say "Ok, now I know what I'm going to get, I know what to expect."

Many, many problems with this approach.  The two biggest are a) what you just drew may not make any sense technologically, and b) the engineer charged with coding the feature is now going to spend almost all of his time dealing with issues like "Can you move that widget 10 pixels to the left?"

So we're trying something different.  Not just "design by prototype", but "design by prototype in Rails."  This is where a single engineer (and sometimes, such as in this case, a front end guy) work on a fully functional framework of what the feature should look like.  Depending on your skills this could either mean "start with the HTML and work backwards to add functionality", or it could mean "start with the web services and slap a front end on it."  The idea is to have a finished product that makes everybody happy:

  • Everybody can see and interact with it.
  • It has a real front-end, in code rather than Photoshop, so all the "move it 10 pixels over" issues are out of the way early.
  • The engineer who'll make the real version gets most of those potential "And what happens if I click this?" questions answered in a way that screenshots and word documents could never do.

Now, some people might say "We've been doing that for years."  Here's the catch, at least how we're doing it.  The current product is in ColdFusion, and we're moving it to .NET.  So what am I writing the prototypes in?  Simple - Ruby on Rails.

If you write your prototype in the same language as your real product, the temptation is far too great to just roll it out the door as Version 1.0.    That defeats the whole purpose, because now either your prototype takes longer to build because you know that it's going live to customers, or else you're burdened for the next year or more trying to hack and patch it and arguing about why oh why you made such and such decision back then, when now six months later you can clearly see that this was the wrong decision.

By prototyping in Rails, we halt this problem in its tracks by making it impossible to roll the prototype into production.  We don't even have a Rails production environment.  The goal of the prototype is the hand off to engineering.  It's not to have perfect code, or final look and feel, although the closer you get to both, the better.  The idea is to do the coding equivalent of a wireframe, where you say "Ok, this app essentially has half a dozen major sections.  Here they are, and here's how the customer gets from one to another."  Repeat and enhance with as much detail as you have time for.  My handoff meeting is actually in a few hours, and I will keep tweaking on it until I walk into that meeting.  (I'm on a train with no net access at the moment, you see....)

It also gets everybody playing to their strengths.  I am not a great "enterprise architecture" guy.  Sure I can say "I realize that this feature here is best served with a web service," but actually implementing that service in a meaningful way?  There are guys better suited to that.  So in my prototypes I whip up a quick service in Rails (typically REST style) with the knowledge that the enterprise guys can just drop in their replacement.  Meanwhile I know that I have one developer as "user interface engineer", and five who will only do markup on pain of death.  So the UI guy is charged with getting the prototype's markup as complete as possible, allowing the coders to come in and just replace the moving parts out from underneath.  The UI guy can do it faster, and can work with the graphic designers sooner, so they're happier that they see what the finished product will look like in week 1, instead of tweaking things 10 pixels to the left while trying to do QA in the last week before shipping.

Personally, I'm having a grand time.  This is the stuff I love.

Monday, June 23, 2008

Score Me Some Geek Cred, I Just Froze A Hard Drive

Friday afternoon my wife calls me at work to say that her computer won't boot.  I've got her running Ubuntu on an old Dell laptop of mine.  She tells me it's making a clicking noise, and even holds the phone up to the computer for me to hear.  Not good.

I'm not terribly worried about the hardware, knowing that I've got a crippled laptop sitting in the basement not doing anything and I can steal the harddrive.  But the inconvenience of a new machine, given how little she uses it, is a surprising pain.  Mostly I want her email address book, but other customizations and shortcuts would be nice, too.  I know, I know, I should backup, but really, who expects trouble from a simple little email station?  Like I said, the amount of data on it is very small.

Thus begins our adventure.  I put a new drive in her machine and put Ubuntu on it so that she can continue to get email.  That's the easy part.  Unfortunately she now has a very annoying machine because everything her old machine had been tweaked for, this one is not. 

I try putting her drive into the old machine.  No good. 

I make myself both an Ubuntu Live CD as well as a Fedora Live USB key.  Why?  I prefer Ubuntu, but even their USB instructions always seem to start with "Make yourself a live CD and then install to USB" and I didn't have any blank CDs handy that evening.  Got some the next day.  Fedora, love em or hate em, has an actual Windows executable "Live USB Creator" that does everything for you - downloads the ISO, installs and everything.  Very nice.

I'm thinking that perhaps I can boot USB style and then access her drive like that.  I try on the old laptop.  No dice.  But that machine appears to have a CMOS battery problem, so I'm not sure whether it's a good candidate for test.  I try putting the drive back into her Dell and repeating the procedure, but no good, I can boot to Fedora fine but it doesn't see the drive.    Lastly I even try gutting the drive out of my own work computer, a very new Thinkpad, but still no good.

[ Cut to a scene of me sitting on the couch on Sunday afternoon, three gutted laptops distributed around the room, small piles of tiny little screws laid out on the coffee table.  My two year old son enters to watch. 

"Broken?" he says.

"Broken," say I.

"Daddy puter broken?"

"Mommy's.  Mommy's hard drive is broken."

"Mommy hard drive broken? Fix?"

"I'm trying."

"Help?" he says, grabbing one of my screwdrivers and whacking it against the drive. 

"No help!" I say.  "Daddy do."  He then wanders off to whack his 4yr old sister with the screwdriver.

Story continues.... ]

I take it into work to see if the operations guys have any tricks up their sleeves.  One of them hands me a USB enclosure for the drive.  Good idea.  My machine gets as far as seeing that there's a drive there, even identifies it as a Toshiba, but never mounts it.  Crap.  Now I'm upset, because now it's personal.  I've put too much time and mental energy into the problem to give up on it. 

Running out of options I remember the legend of the freezing hard drive.  Some folks have reported situations just like mine - a physical dead drive, and all they need is a few minutes of life out of the thing to get the data off - where they stuck the drive in the freezer for a few hours.  The logic goes that the cold causes the metal bits to contract, and perhaps this will be enough to cause whatever's crashed your machine to subside, if only for a little while.

So I stick the drive (wrapped in a plastic bag) in the freezer for an hour or so, and then try plugging it in to my work machine via the USB enclosure again. I take it as a good sign that the clicking noise has gone away (!), but alas, no bootie.

I try a different tack.  I bring up the boot menu and try booting right from that drive, and damned if the Ubuntu splash screen doesn't come up?  Son of, wait, hangs on mounting root file system.  Hmf.  So close.

But wait!  I have a Fedora Live key!  I boot to that, and then connect the bad drive via USB.  Know what?  The sumbitch actually comes up!  I almost fell out of my chair.  I insert my other thumb drive (for file moving, since the Fedora one is basically full) and proceed to copy my wife's disk over to my keychain.

Until....crap.  The files she needs, her Thunderbird contact book, are in the .mozilla-thunderbird directory, which Fedora promptly tells me "Heyyy, you're not root, you can't see those."

"Screw you, Fedora!" I say, dropping into shell so that I can "su" my way in. 

Copy continues.

No space left on device.


As the legend goes, keep in mind, your frozen drive will eventually thaw to the point that the crashpoint comes back.  Thus, you're in a bit of a hurry trying to get your files off.  Did I not mention this?

I start combing through the wife's files, looking for things to kill.  I find a handful of 100meg files that appear to have no value (actually recognize them as something I had created, so I know they can be blown away), and kill those.

Copy complete.

I celebrate with cookies and a Diet Pepsi.

Who would have known that freezing the drive actually works?  Two geeks I spoke with today, the ops guy and another friend of mine, had never even heard of that trick.  I wonder what Mythbusters would say.

Monday, June 16, 2008

Our English Teachers Would Be So Proud

So, late Friday night the marketing guy shoots off some copy for the About page of a new site we're doing.  10 minutes before demo today I discover that the UI guy never got the message, so I forward it and he throws it in there quickly before we have to go to meeting.

During the meeting I remember that there was a split infinitive in there someplace to which I had never responded because Friday night I got the message on the train and it wasn't worth trying to reply for something so trivial.  "I think I fixed that when when I moved the text," says UI guy.

Picture a room of engineers (ok, maybe just about 4 of us) reading marketing copy, trying to find the split infinitive.  "I guess you did, I don't see it," says one.

I go back to my desk to dig up the original email.  I found it -- "This site was developed to not only inform...."  I look at the About us page.  Still there.  So I forward to the UI guy to fix.

I have to think that Ms. Cunningham, my 9th grade English teacher, would be so proud of us not only for noticing, but for actually caring :).

Thursday, June 12, 2008

The "Cuz I'm An Idiot" Bug

My least favorite bug.  I'm working on a widget to get a sample of content from our library, and I start with content of type Careers.  Works fine.  So then I rename it to a more generic getter of all things Content.

But no matter how hard I try, all it will serve up is Careers.  I flush the cache, nothing.  I disable the cache, nothing.  I feed in bad values for content_type, just to generate an error - nothing. 

I grep for hardcoded references to Careers in the code and find that I have, in fact, left one in my original widget.  Where it should say   url=".....?type=#{params[:type]}" so that it passes the type to the service, it instead says "?type=Careers".


Tuesday, June 03, 2008

IT Staffing Numbers

Anybody out there have, or know where I can get, IT staffing statistics?  Stuff like "For a company of 100 people you'd have 3 desktop support people on average".  Body count things like that.  For a server farm of X machines you'd want Y operations people.   Primarily looking for the support numbers - customer support, desktop support, operations.  And I can live without the customer support.

Thursday, May 29, 2008

Worth Repeating

I've said this before, in conversation, but don't know that I've ever blogged it.  Since it came up in an interview and the candidate acted like she'd never heard such advice before, I figure it's good fodder.  It is this:

The fact that I know CSS does not make me a UI designer, any more than knowing the English language makes me a novelist.

Something to keep in mind when you're looking for people that can code SOAP and HTML equally well. 

Tuesday, May 27, 2008

I'm The Decider

I've been helping a coworker try and figure out what he wants to do with his career.  I thought I'd share with whoever's reading the same advice I gave him:

Imagine a model of whatever it is that you work on (a web site, in our example).  I want you to be able to point to that model, and say "See X?  We do X that way because I decided that's the best way to do it."

Nobody wants to take orders for the rest of their lives.  Even the lowliest coder and some point has to decide how to write the code.  You have to use your brain.  In order to be trusted with a decision making spot you need to demonstrate expertise in that area.  You can't be expert in all areas, so you shouldn't expect to make the decisions in all areas.  If you want to decide what colors the site should use, fine - but be prepared to justify your opinion and explain why your answer is better than someone else's.    You can't have that and be a coder and a manager and so on.  Because you'll spread yourself too thin.  Maybe you can indeed contribute to nearly everything - but there's just no way you'll be able to demonstrate expertise in all those areas.  Someone else will come along who is expert in just one of them, and that decision will be taken away from you.  Rather than having that happen (it sucks when that happens), do it yourself - give up the decisions you don't want.  I may have an opinion on whether the site's colors suck, but I don't have the decision, because I know that I don't have the expertise to backup my opinion against the professional designers.  I'm cool with that. 

Another bonus to the "I decided X" exercise is that it's a great emotional bonus to be able to explain what you do for a living to people.  See that?  I did that.  People who are not in your regular working circle can better appreciate what you're trying to explain to them if they can actually see it.

Thursday, April 10, 2008


At this point in my career I can be trusted with root passwords.  I've had them before.  Most often because there's a good reason.  Hell, I used to work at a company where all the developers had root on production.  This implied that all developers were also able to troubleshoot production when needed. 

I'm now at a company where the head of operations guards passwords like they are his secret porn stash.  I am not kidding when I say that if I'm in the room and he needs to type a password, he will not accept me staring out the window, he asks me to leave the room.

Well, I have an app in production, and I know the root password to the database.  His boss gave it to me.  But of course I don't bother telling him that, since it will just be cause for a bunch of annoyance.

Yesterday we are putting out a new build. It is myself, operations guy, and database consultant on the phone because of some schema changes we needed.  I walk operations guy through some local config changes and say, "And here's where you change this to point to the production database, I figured you wouldn't want that hardcoded into the file."

He then starts flipping through his documents, looking for the password, while I examine a smudge on the window.  He cannot find the password (or perhaps because he does not want me to see where he keeps them), he takes the database consultant off speaker phone and the following conversation ensues:

"Steve?  Hey, do you have the password for the database off the top of your head?  Yeah?  Ok, hang on...." (starts typing)  "...thanks Steve."  (pause)  "Oh, DUANE should have it?  He's the one that told it to you???  Oh, really???"


Wednesday, April 09, 2008

I Do Love The Marketing Folk

Today I needed a contact database, so I went over to the marketing guy who keeps it and asked for the raw files.  A few minutes later he came back to my desk and this is the conversation:

Marketing: "I looked at the source files and, because of the history with this project, well, there's more than one file, and they're not all CSV files."

Me: "Oh?"

Mktg: "Well you see, originally we only bought a few states, and then I had those, but then we got the rest, so when they sent us that, they sent us a text file with everything but those states we already had.  So then I had to go back to them to get the files for the states we had, but those are a CSV file."

Me: "So what's the big file?"

Mktg:  "That's a text file."

Me:  "But how is it formatted?"

Mktg:  "With commas."

Me:  "Then I think I'm good."

Mktg:  "You sure?  I didn't know if that was gonna screw you up because one is a CSV file but one is a text file."

Me:  "Nope, pretty sure I'm all set."

Monday, April 07, 2008

Hardware Problem

So my dad calls me up with a computer problem.  Now, 9 times out of 10 it's something fairly generic like "Hey, the computer seems slower, what should I do?"  But this time it is, "What would cause the computer to just not come on anymore?  No lights, no fans, no nothing?"  I suggest that power supply is the likely culprit, although worst case I suppose something could have fried his motherboard.  He goes out, buys a new powersupply, successfully gets it installed and connected which is actually pretty impressive if you've never done it, and still...nothing.  So he drops it off at the house.

I try it, he's right, nothing.  I highly doubt that he's coincidentally gotten a bad power supply from the store.  Ok, first step - being a typical geek, I happen to have a random open computer lying around that I am not using.  So I connect up his old power to that computer, and it works fine.  Therefore it's almost certainly not the power supply.

Next step I unplug everything from the new power supply (the one that is in his computer), except the main motherboard connection.  Maybe something is loose?  Nope, no good.  Still nothing.

Then I notice something that doesn't....feel right.  And I mean that literally.  His computer has got the typical setup - the power supply in the back has a regular switch, but then on the front plastic casing of the computer is a big circle button that you push to engage.  I'm pushing it, and it feels like it's stuck or something.  I'm not hearing any sort of click.

So I pop off the front casing of the computer, always tricky depending on the computer maker, you don't know whether it's a pop off or it's screwed down or what.  And sure enough I see a red wire connected up to an LED (hard drive), a green wire connected up to an LED (main power), and a black wire connected up to a little switch, just kinda hanging there.  I push it.  Computer comes on.

I then see that the two little plastic legs that were holding this switch up against the main power button have weakened enough that it was no longer close enough to the button to engage.  That's annoying.  It's not like you can easily replace a part like that :-/.  So I slapped a bunch of electrical tape on it and called it a day. :)

Monday, March 31, 2008

Firefox Makes Me Happy

So I am working on a feature that requires me to load up the same page using 6 different variations of the URL params. 

  1. Make a folder on the Bookmark Toolbar.
  2. Put my 6 test cases into that folder.
  3. Right click on folder.  Choose "Open all in tabs."  Presto, there's my 6 cases.
  4. Make a change?
  5. Right click on a tab.  Choose "Reload all tabs."  Presto, there's my 6 changed cases.
  6. Repeat until done.

Wii With Your Toddler

My oldest, at almost 6, can figure out Wii pretty well.  She understands what buttons to push, and the general notion of how to point and shoot, how to time your swing in bowling, that sort of thing.

My second, at almost 4, is more of a Zen player - swing wildly while pushing random buttons, and kinda sorta figure out that some combinations do things while some do not.  Throws strikes more often than not, which really upsets her older sister who can't for the life of her figure out how to repeat the feat.

My youngest, at almost 2, has really been too young to play thus far.  He grabs a nunchuck controller while we're not using it and wiggles it around like he is playing, but he really has no idea.

While playing EA Playground this weekend, I discovered a way to get him involved in the game.  The Wii controller is perfect for turning your youngest child into a giant joystick.

Take the paper airplane game.  The idea is easy enough - wind up and hurl your airplane, and then, as if you were actually driving it, you tilt your controller left and right, up and down, avoiding obstacles and collecting treasures, trying to make it to the other side of the room and out the window in the allotted time.

Well, then.  Take 2yr old, put him in your lap.  Put controller in his hands.  Put one hand on the controller so he doesn't drop or throw it, and another tightly around his waist.  Now instead of moving the controller with your hand, keep the controller steady and use your whole body to turn.  Lean wayyyyy over to the left, then wayyyy over to the right!  Pull back!  Nose dive!  Much more fun that way.  Now he's playing, and digging it.  And visually he can start to get the idea that when he goes left, the airplane goes left. 

He seemed to like it, he wanted to play again several times.  I'll have to try that trick out on some other games.

Sunday, March 30, 2008

Help, My Wii Remote Is Backward

Ok, this is a new one.  Went to play EA Playground with the kids (a new rental, never played it before), and discovered that my P2 controller is...reversed.  As in, mirror image.  Left is right, up is down.  Oddly, when I bring up the Home Menu, even the hand icon is upside down?!  Messed up.

I resync the controllers, this time using the backward one as P1 instead of P2, to see if it is a problem with the game.  Nope - now P1 is backwards.  The problem is with the controller.  But, still, if you go out of the game and back to the main menu, the controller is fine. 

I fire up Mario Galaxy and play for awhile.  Controller works fine.  I attribute it to some weird quirk of the game (I even went down to Blockbuster and got another copy of the game to rule out a bad CD of some sort, even though the programmer in me can't imagine how that would be it). 

But then, while playing Wii Bowling with that controller, we get the same problem - everything is backwards.  Ok, now this is a problem, I can't exactly play meaningfully with one broken controller.

I call Nintendo, who admit that they've never heard of the problem.  They are intrigued, though, that even the hand icon goes upside down.  The guy gives me the "unofficial" Wiimote fix - turn it upside down and whack it a few times.

And you know what?  It worked!  My little hand icon turned rightside up before my eyes, and now it's working fine.

I know everybody's familiar with the "whack it" fix - I'm just blogging this because no amount of Googling told me anything about the "mirror image" problem, so I figure the next person that comes along looking for it will know, the whack it solution works for that, too.

Friday, March 28, 2008

People You May Know

So Facebook this week ripped off a standard LinkedIn feature where it uses your network of friends to try and guess at people you may know.  It's a fairly standard thing at this point, I suppose.  LinkedIn's is almost like magic, I have no idea how it works - one of the first people that ever showed up on their list for me was my first mortgage broker, who I hadn't used in 5 years.  Coincidence?  Spooky.

Facebook's seems to be strictly overlapping of friends.  Which, in turn, means that it's good for rounding up the stragglers.  I'll explain.  Say that there are 50 people in your company who are on Facebook.  You are friends with 30 of them.  So on average you overlap 30 friends with those other 20 who are not on your friends list, and presto, up they come in the "You may know this person" column.  So in that sense, it's completely accurate, and even borderline useful.  It works across companies as well, since there's no reason why the same logic doesn't apply to previous companies.  There are 50 people on Facebook from your last job, and you are friends with 10, ergo you overlap 10 friends with 40 other people.  The problem there is that you'll get many new people who have been hired since you were last there who no, you don't know, but Facebook can't figure that out.

I did get one hit, though, that I found fascinating.  I might know Tom, because Tom is also friends with Jeff and Brian.  Here's the catch - Jeff and Brian don't know each other, at all.  I checked.  I currently work with Jeff.  Brian I met 10 years ago and have kept in touch with (he was in my wedding), but other than online correspondence we don't really hang out. As a matter of fact he's in New York and I'm in Boston.  Interestingly, though, Jeff and I both went to WPI (even though that is not how I know him, as he went years after I did), and Jeff and Brian are both in acapella groups.

So, I email Tom and introduce myself.  Turns out that he knows Jeff because Tom's fiance knows Jeff's wife.  Tom is at WPI shooting footage for a film he is working on, apparently on the subject of acapella groups, and runs into Brian.

That's the sort of story that's interesting, but not terribly useful to me.  Does that make Tom my friend?  Not really, no.  But if Facebook uncovered more wild 6-degrees style of connections like that, I'd find it a fascinating tool indeed.

Thursday, March 27, 2008

iPhone / iTouch : Geek Parents' Best Friend

Still looking for a reason to invest in an iPhone?  If you're the geeky parent of young children, here's a whole bunch of ways your new toy would be useful.  All tested by yours truly:

10) Audiobooks.  Fine, you loaded up your whole music collection.  But honestly, you can pretty much have music on in the background no matter what the kids are doing, can't you?  How often do you get a chance to sit down and read?  Head over to and load yourself up on some free audiobooks.  Whenever there's a break in the action, like waiting in the minivan to pick them up at school, you can be listening to books on a wide variety of topics and feel like you're actually making use of that time.

9) It's your honey-do list.  Many times over the years I've told myself I'll carry an organizer, or a voice recorder, or even just a pad of paper.  Something so I can take notes when an idea hits me, or something has to go on the to-do list.  Never kept it up for very long.  Well, my iTouch is in my pocket near constantly, so now I've always got something where I can type out a quick note to myself.  Especially handy when I've been sent for a quick grocery run on the way home from work and the list gets dictated to me over the phone.

8)  Backlight.  When checking on the kids before going to bed yourself, why turn on the lights, or reach for the flashlight?  One button turns the iTouch on, shining enough light to see that the little buggers are still breathing.  Also handy when your spouse goes to bed before you and you're emptying your pocket change, setting the alarm, etc... without waking her up.

7) It's an educational toy.  My daughters like to play games in the dark before going to bed.  Sometimes I'll bust out the iTouch to play letter and number games, like asking them what 2+2 is, or how to spell their name.  To do that on a piece of paper would require you leave the lights on.

6) It plays video.  Well yeah, duh, of course it does.  But at 6am on a Sunday morning when your 2yr old won't go back to sleep, and you're downstairs watching Elmo with the sound down low so you don't wake anybody up, you may be tempted to slip in just one earbud and actually watch one of your own shows, courtesy iPhone.  After all, the little guy is entranced by Sesame Street, he doesn't even know you're in the room. 

5) It plays video for them, too.  Want to know how to keep children occupied in the waiting room at the doctor's office?  Have a selection of kids' shows loaded up on your iTouch.  Works every time, even when they've seen the same episode 20 times.  I even use mine in the car in lieu of a portable DVD player, for short trips around town.  An FM transmitter broadcasts the sound through the car radio and I position the iPod behind my seat so kids can see it.

4) e-Book Reader.  It's not a great one, but the Safari browser that comes with the device has a sufficient PDF reader.   Many nights I've had a child falling asleep on one shoulder, holding him up with one hand while the other hand holds my iTouch where I can get some reading done.  Personally I find that turning the device sideways gets the best font size, although it means more pages to scroll through.  (Also good for reading email and RSS feeds). 

3) Clock.   Is it 2am or closer to 3?  Have you been in here rubbing the baby's back for 5 minutes or 20?  If you're already holding your backlit device where you can read books from it, you can see what time it is right in front of you.  Can also be used as a stopwatch/timer when it's time for timeouts.

2) No 911 (iTouch only).  No matter how many random buttons my son pushes on my iTouch, I know he's not going to call my friends (or the police) accidentally.  I can't say that about my cell phone.  So he can happily play with it while he is bored. I'm hoping the new SDK allows somebody to make a fingerpainting program.

1) Never say "I don't know" again.  Ever have the kids ask you a question where you don't know the answer, and you say "We should look that up on the computer'?  But right that moment you're not at the computer, so you'll do it later?  Well now you're holding an Internet-enabled device in your pocket.  Pull it out, right then and there, and answer the question. 

Wednesday, March 26, 2008

What to use for the front end?

Here's an interesting technology question that's come up.  Right now we have our main product built in ColdFusion.  We hate it, primarily for performance and stability reasons - finding it difficult to scale it and keep it running consistently.  Is that because of operational issues, or just bad codebase?  Dunno.

For a handful of random projects we've used Ruby on Rails.  Most notably this includes our Facebook application.

We've already decided to make the move toward a more service oriented architecture, with .NET being the backend.

The question came up today, "Does that mean we have to use .NET as the front end, too?  Why?"

Good question.  Technically no, I suppose you don't.  If you're doing proper services on the backend then you can use a variety of client technologies.  But then the question is, which one?

.NET is the logical choice purely out of convenience.  You're going to have a team of developers in VisualStudio all day, so why make them have two entirely different development environments?  That seems like the way Microsoft took over the world back in the 90's -- yeah, our product X isn't really that good, but you're already using product Y, and they work nice together, so why not just go with it?

Rails would be a bold choice, since this would mean putting the company's main revenue source onto the technology instead of just the occasional side project.  It's one thing for one guy to bang out Ruby code as needed, it's another for an entire team to develop a product in it.

What about ColdFusion?  If relegated to just the front end, would it be a viable option?  Would the scalability and stability problems go away if we took 90% of the code out of it and started over?

Would you bring PHP into the mix, where it currently does not exist?  What about Java?  The product's not technically in Java now, but ColdFusion runs on a Java app server and most of the coders here are proficient in it.  So that, too, is an option.

Without a better case for something else, right now .NET is going to win.  It'd be nice if it didn't, though.

Thursday, March 06, 2008

What You Can Do vs What ONLY You Can Do

Had a bit of a revelation earlier today when speaking to my boss.  We were discussing workload management, and trying to get people to focus on the important tasks while delegating the less important ones.  After all, it's hard for many engineers who are still in that phase where every creation is an artistic endeavor, every program a labor of love, and the last thing they want to do is cut a corner or give it over to someone else who is going to wreck it.  Often it's difficult to even make a decision about what to do, because you know that you could solve a problem in 12 ways, so to pick one immediately makes them ask, "But what about these other ones?"  You could play that game all day.

Here's the exercise for you all: 

First, think about what you are capable of doing, as an engineer.  There's probably a lot on that list, everything from architecture to debugging and QA, from documentation to desktop support if you really had to.  Chances are very good that in any office environment there's someone who doesn't know how to install Microsoft Office, but if you're a competent engineer, you probably do.  But would you want to?  You probably hate it, and personify the word "begrudgingly" as you drop your shoulders and shuffle your way over to her cube while trying very hard not to make sarcastic and patronizing comments that she not only won't get, but will probably find offensive.

Ok, next, think about the things that *only* you can do.  Or, if you're a pessimist who says "everyone is replaceable", think about it as the things you do best.  You've probably been hired for your design skills, or your coding or debugging skills.  True?  Chances are also very good that the stuff you are best at is also the stuff that you enjoy the most.  That's one of the perks of the work that we do, we're good at it because we love it and vice versa.

At this point, isn't the problem obvious?  The more time you spend on #1 equals the less time you spend on #2.  Just because you *can* do something does not mean that you are the best person for that job.  Your goal, then, is to take as much of the #1 stuff as you can and either automate it, or else get somebody else to do it.

Trust me.  You will be a happier person.  You will also get more, higher quality work done.  Everybody wins.

Sunday, March 02, 2008

Survive The Layoff

Read this doc on Scribd: Survive The Layoff


I got laid off once, back in 2002.  During that time (I was out like 6 months or something) I worked up this e-book on the subject.  It's been sitting on a shelf ever since.  I tried passing it through a couple of publishers, both of which flopped out of the gate.  So, now that layoff time seems to be coming around again I'm trying it differently.  I've put it up on Scribd for anybody to download who wants it.  At least this way I can track if it gets any hits. Maybe if there's really a market for such things I can continue to enhance it.

UPDATE : Steveo brings to my attention the fact that there's no "download" link on the embedded player . That's just silly, who wants to read the whole thing inline?  Download as PDF  (actually you can download in a few different formats if you like).


Wednesday, February 27, 2008

Geek Guitar Hero

So I'm playing Guitar Hero III last night on the Wii, and my wife (who tried once and gave up on it) asks how I can manage to follow all those circles coming down the screen so fast.

"Well, I don't," I say, not really taking my eyes off the screen.  "It's like typing.  When I know the next five words or so that I want to type, I don't really sit and think about every letter of every word, I just sort of batch up those groups of letters and then send them off to my fingers, which do the typing subconsciously."

I turn my head and realize she's giving me a look like I'm an alien.

"Doesn't everybody type like that?" I ask.

Apparently not.


I have been thinking, ever since I got this game, how it is really about pattern matching.  It's not like, particularly in the tricky bits, you're sitting there saying to yourself "Green green red, red red yellow, yellow yellow blue, Green green red, red red yellow, yellow yellow blue..."  You spot the pattern immediately -  Ax2 B, Bx2 C, Cx2 D, repeat.  And then once you've got that locked into your fingers, all your eyes are really doing is looking for the break in the pattern.

I'm no expert on the thing by a long shot - I've beaten it on medium, that's about it.  But I think that at some point it switches over to being more about the dexterity of moving your hand around, than anything else.  I like medium level because your fingers each get assigned a color and you never move them.  On the songs I practice I tend to run up streaks over 400 notes and get like 99% accuracy, usually failing either right at the beginning before I've picked up the pattern, or in the middle of a long repetitive pattern because I got lazy with the timing.  And I've only really clocked maybe 10 hours with the thing.

But then you switch to hard mode, where there's more buttons than fingers and you do have to keep taking your fingers off their assigned buttons, I suck.  Really bad.  Like, I can't get past the first level without getting booed off the stage.  I think it's neat that the difference is so drastic. It's because it didn't just get incrementally harder, it became about an entirely different skill set. You can ease from easy (3 buttons) into medium (4 buttons) because the general "my finger is assigned to this button" rule still applies.  But going from medium to hard (5 buttons) completely messes that up.

Wednesday, February 13, 2008

Quote Of The Day

Via AIM:

(11:07:04 AM) e: My entire team is WFH today
(11:07:06 AM) e: so I dont feel toooo bad.
(11:07:46 AM) d: funny, my entire team is WTF today



(* WFH is Working From Home, just in case that's not obvious.  If I have to explain WTF it's not funny anymore.)

Monday, February 11, 2008

An Interrogative Statement, times 4

So I'm building a URL and the base comes from a config file where I don't know whether it's coming in with parameters.  I want to add some parameters, so I need to know if my separator should be ? or &.  I'm not doing anything fancy, just a quick string concat.  Here's how the statement came out, I thought it was funny:


separator = base.include?("?") ? "&" : "?"


Thursday, February 07, 2008


Want to have some fun?  It's pretty much offseason for sports now, unless you're a basketball fan, but baseball's not too far away.

Here's what you do.  When there's some live sports on tv, invite friends over who do not have Tivo or some other DVR service.  Then, in the middle of the game? Pause it.

Listen for the screams.

Without fail I've found that sports fans who are not also Tivo fans hate it when you mess with the broadcast.  We geeks who live by our Tivo can't imagine watching tv any other way.  Missed a play? Want your own replay in super slowmo? You've got it.  No worries.  And you can skip timeouts and commercials.

But man, there's nothing quite like the helpless begging of a sports fan during a big game who says every thirty seconds "Are we live yet?  So, we don't know what the real score is?  Can we fast forward?"  I don't quite know what it is.  They should be able to take a deep breath and realize that not only are they not missing anything, but if I fast forward like they ask, they WILL.  So what's their problem?  I can't quite figure it out.  It's not like in the 15 minute window between my Tivo'd copy and the live stream, somebody is going to call us on the phone and say "DID YOU SEE THAT PASS?  HE CAUGHT IT AGAINST HIS HELMET!"

Actually I take that back, that has happened, so the rule in my house is not to answer the phone while watching a buffered game :).

Friday, January 25, 2008

iPhone Not Recognized

I have an iPod Touch / iTouch, not an iPhone.  I recently ugraded to v1.1.3 of the firmware, v7.whatever of iTunes, and added the $20 set of apps.

Ever since, I regularly get a dialog box on connecting my device that says "iPhone not recognized, disconnect and try again."

How frickin annoying.  It almost certainly has to do with bugs in the new downloads, as it never happened before I upgraded.

Anyway, here's the best I've been able to figure out re: making it go away:

1) Make sure the device is awake.  That also means don't let it suspend/sleep while waiting for a sync.

2) Make sure the device is on the main menu, i.e. not doing anything else.

3) Close iTunes.

4) Now, connect. 

When these 3 conditions are met, I think thus far it's worked 100% of the time.  There seems to be a large delay, and I think that might be the problem - if there's other things running, then perhaps the long delay tips over the "timeout" line and you get the message. Just a thought.  For my previous ipods, the minute you connected the device it would be recognized, at least by Windows, even though it might take a little while for iTunes to come up.  But with this one you plug it in and you can sit and watch while you wait for it to switch to "Syncing..." mode.

Hope that helps!