Sunday, May 18, 2008

are you there Mordac? it's me steve

Because the purpose of my life is to serve as a warning for others, please note the following:
  1. Don't spend the first 3 weeks after your initial "I need software X" request, lackadaisically monitoring the request's progress every 2-3 days. Expect to spend 1-3 hours per day following up on e-mails and on the phone.
  2. Don't bother trying to navigate the 'helpful' self-service website, or the dozen+ service request web apps. Go directly to the Help Line. While one-on-one interaction with actual people is scary, at least there will be someone to hear your plaintive cries.
  3. If tech-support person #1 helpfully forwards your e-mail to person #2 for clarification, don't assume that person #1 would take note of person #2's out-of-office reply that says they'll be out for the rest of the month.
  4. Don't assume #3 wouldn't happen twice. The same day.
  5. Assume every person 'helping' you is actually actively preventing you from reaching your
    goal through a clever misinformation campaign meant to drive you slowly insane.
As the owner of the action item, it does make me feel slightly better to be an obstruction to the people waiting on me to get this done. Their pitiful cries bring delight to my cruel, cruel heart.

Last week's status meeting:

Person Z asks, "Steve, any progress on ?"

I reply, "I've got it installed on the two wintel servers I had admin rights to. I can't find anyone to give me a straight answer on who owns the other two wintel servers, or the 'right' process for requesting admin access. I've entered a Unix service request on the fifth server, I assume someone may see it eventually."

The assorted people in the room nod sympathetically, apparently my struggles are par for the course.

Project Manager F asks, "Is there anything we can do to help?"

"Pray."


Mordac's latest trick, masquerading as other IT service members:
  • As persona #1, point me to intranet URL #1 telling me to use service request system A to apply for admin rights.
  • I submit request, push the approval through my management chain.
  • As persona #2, reject request. "System A is only to request admin access to your desktops. Not servers. You need to follow the set of instructions at this URL."
  • URL #2 describes in the vaguest way possible how to gain access to various intranet web applications through service request system B
  • I reply, "WAH? Person #1 told me this, and its clearly documented at URL #1. If that's wrong, it needs to be updated. I follow your instructions, but I don't see which access group I need to belong to gain access rights, can you clarify?"
  • Persona #2 forwards it along to persona #3.
  • Persona #3 says "You need to follow the instructions at URL #3, and use service request system C."
  • System C looks like its asking for the right information. I submit the request.
  • The request is rejected by Persona #4, "You can't do that for your specific user id. You have to enter your team's group name."
  • This is the first I've heard that my team has a group name.
  • No one on my team is aware we have a group name, or what it may be. Not even those who already have admin on those servers.
  • No reply from Persona #4 yet.

Monday, May 05, 2008

project A makes baby jesus cry

And so... for some reason I'd gotten it into my head to volunteer for Project A at work. Project A is a rules engine for processing ... things... Myself and another fellow newbie on the project (Hi Jeff!) are slowly coming up to speed on the crazy.

How crazy? Let me count the ways...
  • Release every month!
  • Without a project manager, development manager, or release manager. Who needs 'em? Crybabies.
  • We can't control the # or scope of change requests coming in each month. State regulations drive all the changes to the system. Some nebulous decision process allows us to occasionally drop some changes from the queue... but we don't know which until the deadline has been blown.
  • Crumbling 12+ year old code base. Not given love or documentation over the years. Occasionally tossed a bucket of fish heads. You can tell which dark corners survived from the halcyon days -- they use the hacked-in exception handling in what appears to be the correct way. While I appreciate the cleverness of adding exception handling to C (preprocessing macros around some setjump/longjump magic), I'd appreciate it more if anyone had bothered to write a brief document describing said 'right' way. An example in the .h file? Pshaw! That's for suckers! In the 3 weeks I've spent diving through the code to correct memory leaks, there's at least 4-5 different exception handling idioms. Many possibly broken sections of code, swallowing exceptions with no comment to explain whether the author did accidentally or on purpose. If there aren't comments, it's usually right... for certain values of right. If there are comments, the author clearly thinks exceptions either work like Java's or has no clue.
  • Functions are named as ambiguously as possible with regard to whether it returns a reference to a list that shouldn't be modified, or a copy of the list that's safe to modify and needs to be cleaned up by the caller.
  • It doesn't matter that developers create the builds pushed to customers, right?
  • Oh, and developers have been doing the source control labeling too.
  • Oh, and they're doing both of those tasks half-assed
  • The developers have been too lazy or too scared of the HP-UX makefile to allow it to work without manually copying all source files from their CVS checkout directory to the application directory.
  • You know what'd be a great idea? Basing the fancy new .Net-based Product B's rules engine on Project A. Wait... let's add a Java JNI wrapper around its re-packaged Project A. Awww, yeah... now that's good and f*^@#$ed up.
  • Cherry on top: some genius decides to branch to support Project B. "Branches are neat! Wait... branches are hard... oh well, we'll just branch this one directory that has the DAO stuff, that code definitely has to be different between Project A and B. That's what branching is for, right?" The branched directory also contains nearly identical files that will be slowly, and not-so-slowly , diverging to meet each project's mostly identical monthly release requirements. What? Labels on the branch/trunk to indicate merged code? Nah, that'd be too helpful. I should consider myself lucky that the branch has only existed for a year.
  • Oh yeah, we're releasing Project B mid-Summer. Sweet!
Somehow, I'm the calming influence on Jeff. Probably up to the point where he reads this rant. C'mon, we're in it together! You know, like Musketeers! But less flouncy.

I'm pretty sure I'm living in a sitcom written by The Daily WTF. The alternative is unthinkable.

This is Mark's cue to waltz through with a comment where he doesn't say a thing. Which I appreciate.

Saturday, April 19, 2008

more ponytails than should be allowed by law

Decided to go to the April UJUG meeting a couple nights ago. The presenters varied a little in quality, but were average to great. The topic was interesting, I would have enjoyed more "What went horribly wrong" war stories.

I thought it was telling that even though Maven was held up as a savior for many of the projects, everyone who spoke up mentioned their love/hate relationship with it. It sounded like the LDS church's team had embraced it the most, and a big part of their success with it appears to be because they've dedicated 2-3 engineers to supporting it full time within their organization.

Turnout was huge, 100+. I think I prefer the smaller, and less formal, UPyUG meetings. And it's not just because I think software developers with long hair look silly. So many ponytails at the UJUG meeting. And at least one beret.

Thursday, March 27, 2008

Spring, best thing since sliced bread?

I've been reading a lot about the Spring Framework lately. It's been aggravating me... realizing how much easier it could have made the last 2 years of my life, if I'd dug into it before starting on my last big project.

I'm enjoying Spring in Action. Only a few chapters into it. So far a good introductory book. I like the light tone of the examples, but the jokes are becoming grating.

I also picked up Expert One-on-One J2EE Development without EJB. I'm pretty sure it wins for the creepiest cover on a technical book ever. Kids, if he pulls up to your playground in a ice cream truck, RUN AWAY!

what? just because we don't have a customer we have to stop working?

The job switch has been... odd. Spent the first week and a half scrambling, reading non-stop to catch up with the rest of the team on the Java frameworks we'll be using.

Spent the second week and a half wondering what I'll be working on. The original project was put 'on hold' due to lack of business funding. We'll be shuffled off onto different projects for the time being, likely never to return to the original project.

It's good times.

Sunday, March 16, 2008

chastened by mother nature for act of hubris

After enjoying spring-ish weather, walking around the new neighborhood, and doing some cleanup in the yard... we decided to purchase some patio furniture for the back deck.

I feel I must apologize to everyone in the valley for resulting snow fall. We had at least 2-3 inches at our house.

Tuesday, February 26, 2008

adrift

Not sure why I feel more adrift now that I've not only made the decision to leave my current employer, I've done a bunch of job hunting, interviewed and accepted an offer.

I thought once I'd made my decision, things would have solidified in my mind. Maybe I'm realizing how much I'll miss my co-workers. Nothing like them being laid off, and conspiring with them against 'the man,' to bring you closer together. Their last day is Friday the 29th. My last day is the following Friday, and I'll start the new job the next Monday.

It was difficult to choose where to go. I could go someplace unknown, or I could go back to the ex-employer, or I could follow some friends that left current-employer last year. Doors #2 and #3 seem fairly recession proof; military work for the former, health for the latter.

All the reasons I had for picking door #2 were comfort-based -- very close to the new house, great friends, and interesting work. Door #3 is more of an unknown and a ton more responsibility, but with a safety net of other good friends. Ultimately picked door #3, the riskier job that could be huge career-wise.

Tuesday, February 19, 2008

eclipse + cdt + cygwin = hours of misery! hooray!

Holy dammit Christmas, every step along the way to debug a simple hello world app is an exercise in misery.

  • it appears to have found make/gcc/etc... but then won't actually run anything. Launching eclipse via a batch script that adds c:\cygwin\bin to the path before starting eclipse fixes this. It would have been nice if eclipse threw up more red flags about not finding the things it needed.
  • I get everything building, launch the debugger and it complains that it can't find the source file. This was answered by the FAQ... once I found the FAQ.
I hate that I didn't think to look for the FAQ as the first step. I hate that the top google search results were all 3 or more years out of date. I hate Eclipse's web site -- it's as bad as my employer's intranet site.

Monday, January 21, 2008

demotivation

After a Holiday season filled with indecision over staying at my employer, I got motivated again last week. I decided that there was interesting work to be done, and that I really like everyone I'm working with.

Then, the bombshell Wednesday. Lay offs. Because while we're profitable, we're not growing fast enough for our parent company. Why not outsource all our content production? All our competitors are doing it, so it must work! Quick, outsource everything in a month and a half!

Out of my group of 10 (including my manager), I'm one of 4 software developers left. The content production team was hit much worse, only 2 left out of over 20.

Now we're looking at an avalanche of legacy code maintenance work for at least the next few months as we train outsourced software developers to maintain our convoluted production system that has grown into a horrible mess over the last 10-15 years. There are a ton of services and applications that interact in odd and poorly documented ways. As if that wasn't bad enough, anything over 5 years old frequently isn't in source control.

We have an experienced set of users who know how to push the data through the tangle of applications. We'll lose that in a little over a month.

Fun times ahead.

Tuesday, January 08, 2008

house chaos, kitchen chaos, more lame book reviews

We've slowly been settling into the house. Hampered in large part by our decision to remodel the kitchen. So far, so good. It has stayed on schedule, and is turning out well.

A little over one more week of no kitchen sink or appliances to go, then we'll be able to stop living off of the kindness of friends and family, the mini-fridge and microwave, and waaaaaaay too many take-away and fast food dinners.

Further lame book reviews accumulated during the move and holidays. To further distill my always lame, and always blessedly brief reviews, they will be presented in list form.

First the Good:
  • Camouflage, by Joe Haldeman. Interesting alien(s).
  • They Call me Naughty Lola, edited by David Rose. A collection of personals from the London Review of Books. Bizarre and very funny.
  • Do Androids Dream of Electric Sheep (aka Bladerunner), Philip K. Dick.
  • Also decided to pick up some science fiction classics I had never read. All pretty fun. A Deepness in the Sky, by Vernor Vinge. Also, The Mote in God's Eye, and The Gripping Hand, by Larry Niven and Jerry Pournelle.
Next, the mediocre:
  • Storm Front, by Jim Butcher
  • The Summer Tree, The Wandering Fire, and The Darkest Road -- by Guy Gavriel Kay. Re-read these. I remember picking them up years ago because I'd heard such good reviews. I remembered not liking them much. I thought I'd give them another go since my tastes have changed quite a bit since then. Still found them very annoying. Stilted dialogue, and the whole college-kids transported into alternate medieval reality thing kept making me think Ren Faire.

Wednesday, December 05, 2007

the thank you that keeps on thanking

The best way to thank your friends and family for helping you move?

Food poisoning.

Including myself and the lovely wife, nine of the dozen or so people who helped us move were struck down by the Subway sandwich platter. I don't think I've ever been so sick. About 24 hours of sick, sick, sickness followed by a week of not eating solid food.

Thursday, November 08, 2007

MarkMail, sweet!

Last May, at the Mark Logic User Conference, Jason Hunter showed off MarkMail. It's finally available to the public at http://markmail.org/

Various links about it:
One part that wowed me is the ability to view attachments within the interface. Maybe I'm easily impressed. For an example, go here for email with a PDF attached. Click on the link for the attachment. Search for other attachments with a search string like 'extension:ppt' or 'extension:doc'

Tuesday, October 30, 2007

who knew?

Finally added labels to the blog posts. Who'd have guessed? Tied for the most frequent label:
  • computers
  • i am lame

so close, yet so far

The appraisal is complete and our buyers haven't complained so it must have covered the sale price. Our buyers decided to do the inspection themselves, which we found odd. It's a fairly new home, and we are paying for a home warranty, so maybe they don't think much could be wrong. But, we're baffled that they wouldn't spend a couple hundred to get a professional to look over the house to verify there aren't any non-obvious problems.

The sellers on our new home were happy to extend the closing date on our contract for another couple weeks, so everything is looking good for the closing and move in the next 2 weeks.

Our buyers came by on Sunday to do the inspection, said they needed 3 hours. We decided to head up to the new house, visit our friends across the street, and rake leaves. I'd assumed it would be about an hour's job.

15 orange bags, 6 blisters, and 4 hours later, we were done.

Did I mention we've got 7 big trees on the new lot? 2 ash trees, 3 maples, and another 2... something else ... and a couple assorted smaller trees -- peach, crab apple, birch. The ashes and had dropped all their leaves, the maples and other big trees still had the majority of their leaves. Guess what I get to look forward to doing again in a few days?

We roll back home around 8pm, and realize our buyers had left the back door out of the garage wide open. Awesome!

Soon all the contract drama will be over, and all that will be left is moving 9 years of accumulated crap. And then we can kick back on the huge back deck at the new house.

Friday, October 26, 2007

where's the suggestion box?

The employer frequently elicits employee ideas for additional revenue streams. I have decided on one that beats my previous "Nominal fees for helping minors purchase alcohol" stream.
  1. Form Hannah Montana tribute band, 'Amanda Bandana'
  2. Prey on gullible parents thinking they're purchasing Hannah Montana tickets.
  3. Profit
However, brief googling suggests 'Amanda Bandana' is already taken for a teen's myspace/livejournal/etc.

This is as disappointing a googling as when I found that 'Hell Toupee' was already taken. Back to the lame-cover-band-name drawing board.

Monday, October 22, 2007

under contract!

Lots of interest on the house -- typically 5-10 viewings a week, for the 5-6 weeks we'd been listed. No offers till about 1.5 weeks ago when we got two in one day: one good offer, one low offer.

The 'good offer' went south fast. They had acted very flaky, so we were disappointed but not surprised.
  • Our agent is told (on Wednesday): "We'll send you an offer today!"
  • No offer. Our agent calls them and is told: "Oh, they're putting an offer in on a different house"
  • 24 hours later, we get their offer. They've only offered $500 earnest money, ask for %3 in closing costs, and don't have show any money down for the loan.
  • We decide to counter-offer, asking for $1000 in earnest money, and say we'll cover $5000 in closing costs rather than %3. Send the counter-offer Friday morning.
  • Saturday: We hear from their agent, "I'll be talking to my clients this afternoon"
  • Sunday: No word
  • Monday: No word... Our agent calls, and is told "I'll be talking to my clients this afternoon"
  • Monday evening: Their agent says the deal is off. Leaves some nonsensical message for our agent saying we should have just accepted the offer and we could have closed in 3 days. I don't know why he thought he could get the inspection, appraisal, and loan stuff all worked out in that time.
In the meantime, we'd also counter-offered the other offer. And did the counter-offer thing every day last week. The buyers appeared solid financially, and were motivated to buy in our neighborhood -- their cousins had just bought up the street from some desperate sellers (they had been on the market 6 months). That house also probably screwed everyone in the subdivision on appraisals (they'd listed in May for $280 and gradually dropped to $250, accepting a $237 offer). It was nearly identical to our house -- 100 sq feet more, but hideous inside. Despite the hideousness, it was clear from the start that our buyers really, really didn't want to spend more than their cousins.

After talking them up $7k from their initial offer, we ended up accepting quite a bit less than the asking price. However, with the current market, and the fact that we'd already found our new house and were under contract on it, we decided that we couldn't wait for the perfect offer. At the price we accepted we wouldn't have any worries with appraisal and it gives us enough profit to put 20% down on the new house with a bit left over.

Our agent's co-workers are amazed she got us under contract in ~5 weeks. Some of it was us being priced right, in the right location, and our hard work keeping the house clean. But a huge part of it was how hard she worked. Lots of marketing, including at least one open house a week. She was awesome, and very funny. Best of all, unlike a lot of horror stories we'd heard about realtors, she was always available. Any time we had questions, she was very quick to respond to phone calls or e-mails.

If you're selling (or buying) or planning to, I have no reservations recommending her. Shauna Thomas at the Sugarhouse Keller Williams (599-9126). Shauna also hooked us up with a mortgage broker: Rain Wallace at Citywide Home Loans. We didn't have as much one-on-one time with Rain, but she was great -- quick to answer phone/email questions, patiently showed us our options, and helped us lock in a loan with a great rate.

Thursday, September 27, 2007

nuggets from the dumb monkey sack

We've got a new developer in the group. As he's installing all the supporting tools he'll need for the projects he'll be working on, he came to me when Ant stopped working. Odd messages about Ant core/tools version incompatibilities.

We fiddle and fiddle with JAVA_HOME, with ANT_HOME, with PATH... No luck. Same messages, despite the Ant we want being right there at the start of PATH and in ANT_HOME.

Like a revelation from heaven, I realize... wait... what's in CLASSPATH? Well, there's a Documentum Jar in there... but that wouldn't have stuff to do with Ant, right?

The documentum Jar in question turned out to not have any classes in it, but it did have a giant list of other Jars in the manifest's classpath. Including Ant. More specifically, a local install of Ant 1.2 beneath the Documentum installation.

As much as I'd like to blame Sun for not providing a non-insane standard for application startup, I think its more appropriate to vent at EMC/Documentum for creating an installer that modifies the system's classpath environment variable to add their kitchen-sink Jar. For as much money as they charge, you'd think they could write an installer that doesn't screw up your system.

I'm not sure why I was surprised. Nearly every other interaction I've had with Documentum has been an exercise in agony. They must have a burlap sack full of exceptionally dumb monkeys deciding how their software gets installed and configured. Other nuggets from the monkey sack:
  • No desktop application needs to talk to more than content server, right? Well, if they do, they can manually edit this INI file in c:\windows.
  • No desktop application needs to talk to more than one version of a content server right? Well... if they do, they can uninstall/re-install to do so.
I can excuse their crappy, obfuscated APIs. Still hate them, but I can understand inflicting them on software developers. But to screw things up for all the end-users, QA, and support that need to use their crappy desktop apps, seems mind-numbingly stupid.

Wednesday, September 26, 2007

blog comment spam

I had to enable moderation on the comments due to the spam getting added. Moderating seemed like a better solution than going in and deleting the comments after-the-fact.

The first thing that clued me in to their spaminess:

These articles are fantastic; the information you show us is interesting for everybody and is really good written. It’s just great!! [more sales pitch and spammy URLs here...]

Anyone who actually read my blog would know that it has never been, and never will be any of those things.

Tuesday, September 25, 2007

hardware problems are teh suck

Why does my home PC pick the worst time to decide to stop booting? I really didn't want to spend 4 hours tonight fiddling in the XP recovery console, the BIOS settings, and running disk tests.

At first, I thought it was the height of inconvenience that I'd packed up my Windows XP install disk, had to search the basement, unpack the box, re-pack the box. Then, unpack the box again after realizing I forgot to grab the floppy disk with the SATA drivers.

However, that turned out to be minor compared to having to reboot twice every time I changed something in the XP recovery console. Once to get out of the console, and again so that the XP install disk would release itself from the CD-ROM drive. Gah!

System Rescue CD and the XP recovery console both seemed happy to read the disks, no problem getting into the partitions and looking at files. Tried fixboot, tried fixmbr, ran DFT's tests on both hard disks. No love from the boot gods.

Finally, decided to start fiddling with the BIOS. Swapped the order in which the hard disks are booted (SATA then IDE), and it came up. Not sure why I didn't notice it before. Also not sure why the BIOS implies it'll check disk #1 then disk #2 when booting, but only actually try #1 and give up.

Also not sure what would have screwed it up. I re-installed Ad-Aware, and Spybot S&D over the weekend. We also had a couple power-bumps a couple days ago.

In less annoying news, System Rescue CD is 4-6x as awesome as it was the last time I tried it a few months ago.

Friday, September 14, 2007

found it!




The pictures of our house are now on the online listing... all the paint colors and floor photographed well. And, our cat is now famous.



So far, things are looking pretty good for selling our house. Lots of interest. Open house this Sunday. Our realtor is so optimistic, she's going to have a 2 co-workers there to help her out.

Hopefully it'll all work out because we found the house to buy. The location we wanted, near my parents, near friends. Great neighborhood. We'll be going under contract on it tonight. I'm not sure if I feel relieved, or more panicky.

Best of all... the new house optionally includes 6 chickens. I know it's a bizarre and sad thing to have always wanted... but I really have liked the idea of having chickens. We're already speculating that our cat is finally going to be even more fascinated and intrigued by the outside. Maybe enough to get over her fear of the unknown.

Monday, September 10, 2007

sweet spot

After many self-imposed deadlines came and went, finally listed our house for sale this weekend.
We felt bad about letting the deadlines pass, but we wanted finish all the painting and staging of the house before we listed. Turns out that was a very good idea.

Listed it about 3pm Saturday. Around 5pm Saturday we got a from our realtor saying there was someone who wanted to look. Aaaiiiiieeee! We weren't ready. The house was a mess. Paint cans, cleaning supplies, unpacked rooms. A couple hours of last-minute cleanup got 90% of the rooms ready for viewing. They seemed to like the house, and also said that even with our mess, it was one of the top two homes they'd seen in the area.

Got a wake-up call Sunday from our realtor. Another group wanted a viewing. We didn't have to do much because of the previous day's frantic cleanup. We run a few errands while they look at the house with a realtor. Afterwards, we get back home to be accosted by a family in a mini-van asking about the house.

Late Sunday afternoon, I finally get a breather and mow the lawn. Interrupted once by a couple while mowing the front lawn. Interrupted a second time, and nearly had a heart attack, while mowing the backyard when a realtor waltzes through the gate with another couple in tow asking if they can view the house.

I guess we hit the sweet spot w/ regard to location, price, and size of home. We don't even have the pictures online yet (that should happen today). It's a big relief, seeing the amount of interest in the home. And, seeing that our work over the past 2 months was worth it.

If only our own house hunt was as successful. Still having found the right home after viewing probably 70+ homes. At least we're done with our own home now and we can focus on finding our new home.

update: Got a call from the lovely wife. Another realtor and their clients just dropped by "We were in the neighborhood...". 4 viewings in the 2.5 days it's been listed. Aiiiiieeeee. We're beginning to wonder when we'll have time to do the final cleaning for the open-house next weekend.

Monday, August 13, 2007

stressful vacation, house hunting, awesome basement

Just finished a week of vacation. 'Vacation' being code for fixing up the house -- finished laying the laminate floors, installing new baseboards, some new bathroom cabinets, and lots of painting.

Still not terribly near the end point. Plenty more painting and packing to do before we'd feel comfortable having potential buyers look at the house.

The lovely wife and I have been house hunting with our realtor. So many open houses, they're all a blur now.

The price on one with a super-awesome basement has finally dropped enough to be worth it. Those are indeed built-in sofas. The tales those cushions could tell.

But seriously, that house has a great location, great square footage, and the extra fantastic basement. And, the price has dropped enough that we should be able to update the kitchen and a couple other out-of-date rooms prior to moving in.

Of course, the basement would have to stay as-is. It's just too awesome.

Thursday, August 02, 2007

crappy neighbor water hazard


Three times over the last couple weeks, my and one of my neighbor's backyards have flooded. The picture is the view from my yard into the neighbor's. Our house isn't that effected... but the water is right against the neighbors foundation. Not good.

Seems another neighbor can't figure out their inflatable above-ground pool.

  • The first time, I think they forgot to turn on the filter and decided to the drain the funky water
  • The second time, they started refilling the pool and left for the day.
  • The third time (two days after flood #2), they hadn't tightened a coupling and didn't notice the leak.
On the plus side... I've talked to my fellow-floodee neighbor more in the last week than I have in the ~2 years they've been in their house.

On the minus side. The flooder neighbor seems more annoyed that we're upset, rather than apologetic. I understand that once the water is out there isn't much they can do about it. But, it'd be nice if they seemed slightly concerned about things they do that effect their neighbors.

Saturday, July 14, 2007

mmm... pie!

A friend helped us move our furniture around for the work we're doing on the house. Last time, he and his girlfriend raved about Left Fork Grill (68 W. 3900 South, 266-4322). We had him over again this weekend to move furniture back into the finished room, and as a reward for helping us we stopped there for breakfast.

I had a breakfast sandwich (sausage and egg), the lovely wife french toast, and our friend had a fried egg sandwich. Everything was delicious. And, they made hash browns correctly -- the right ratio of crisp to tender, and not greasy.

To top it all off, they have the best pie ever. The lovely wife had banana cream, I had raspberry-rhubarb. Excellent crust, freshly made fillings. Both were great. Many others think so too.

It's shot right up to top of our list of breakfast spots -- great food, reasonable prices.

A shame that it's only open for breakfast and lunch. Pie for breakfast may become a family tradition.

Monday, July 09, 2007

finally, a chance to wear a toolbelt



We've been thinking of moving for a couple years now. But, we'd wanted to get a few things fixed up with the house. I needed to get the yard and flower beds into better shape, and we wanted to replace some of our carpet.

A few months ago, we'd bought some glueless laminate flooring at Costco while it was on sale (ended up saving around $150 because of the sale). Finally got around to starting the project last weekend. Finally realized the extent to which one of our cats ruined the carpet. Ugh.

The flooring went down quick. Not as easy as the instructions make it seem. But, it looks nice, and gave me my once-every-two-years excuse to wear a toolbelt.









And, in odd things I've stuck in my pie-hole news:
  • The 'Hog Burger' at Britton's (964 East Union Square in Sandy). A burger with grilled onions nestled between a grilled-cheese sandwich with bacon, and a second grilled-cheese sandwich with tomato. The first half was good. The second half was 'what have I gotten myself into?'

Monday, June 25, 2007

impatient book review

I couldn't be bothered to wait the year(s?) for the U.S. release of Steven Erikson's newest Malazan book, Reaper's Gale.

After comparing the Canada/UK prices on the respective Amazon sites, and plugging in the conversion rate, it was cheaper to order from the UK and have it shipped across the Atlantic. Odd.

It was very good. Heartbreaking (and other not-so-heartbreaking) deaths of main characters. Resolution of plot lines. Very enjoyable.

I also picked up Night of Knives, by Ian Cameron Esslemont. Also set in the Malazan universe. It was pretty good, but not great. It could have used another round of editing -- typos and a couple confusing sections. But, it was fast-paced and fun.

Sunday, June 24, 2007

roller derby -- violence, short skirts, beer -- what's not to like?

The lovely wife and I went to the roller derby last night. Lots of fun. Lots of violence. Lots of hot chicks in short skirts zooming around the track and knocking each other down. And beer! Mmm... Beer.

It was an All Star match between the local league and their opponents from Idaho.

Salt Lake Software Symposium, day #2

Last day. Still pretty good, but didn't rock as much as the first.

Attended a couple more of Jared Richardson's sessions: "Agile Testing Strategies", and "Software Development Techniques". Lots of good real-world examples, and lots of inspiration for changing our processes. Definitely thinking of picking up Ship It!

Neal Ford's "Pragmatic Extreme Programming" was good. But, I think it'll be easier to work in lessons from Jared's sessions (on days 1 and 2) into our existing process.

I wasn't going to attend Brian Sam-Bodden's "Complex Builds with Ant" session. From the slides, it appeared like I'd already knew the major tips on my own. But, I was wiped out by the last session. Decided it was worth going to a topic I was familiar with in order to pick an expert's brain. Only three attendees, so the session went fast and I was able to ask a lot of questions.

More sour-grapes today over all the Ruby rah-rah-rah. Again, Neal Ford declared Ruby the winner in the dynamic language race on the JVM. Neal is a very smart guy, a great presenter, and also great to talk to one-on-one. I don't have any issue with him advocating Ruby. Any language that makes developers more productive is a good thing. But, it seems disingenuous to declare a victor in a wide open race to a room full of people who have little to no experience with dynamic languages.

Personally, I prefer Python over Ruby. Others can and should disagree. Here's a fair, but slightly biased (since the author is familiar with Python), comparison of Python vs. Ruby.

I'm not sure who to blame for lack of Python excitement in the Java world (or at least at this conference). Maybe with the recent revitalization of the Jython project, it will get more Java developer's attention.

Microsoft's CLR (and the new DLR and Silverlight) seems very exciting. See here and here and here. The second link is a screencast showing interoperation between Ruby, JavaScript, Python, and VB.

All in all, the conference was very good. I'll definitely plan on going next year.

Friday, June 22, 2007

Salt Lake Software Symposium, day #1

Since this blog is all about (pick one):
  • lame book reviews
  • lame software conference anecdotes
  • odd things I've put in my mouth
Here's more software conference anecdotes.

Spent today at the Salt Lake Software Symposium (aka No Fluff Just Stuff). So far, the conference is very good. Attended presentations by Neal Ford, Jared Richardson, and Brian Sletten. All great presenters, showing off great technology.

A friend has tried 2-3 times to explain Aspect Oriented Programming to me. It sounded... like more trouble than it was worth. Brian Sletten's AOP presentation was very useful in cluing me in. Seeing the AspectJ/Eclipse tools in action got me all excited to try it out. The immediate use-case I have would to remove a bunch of cut-n-paste concurrent locking boilerplate in my pipeline application. If I understood it correctly (always a questionable assumption), I can replace all that code scattered throughout my class with an aspect that'll do the

writeLock();
try {
// .... do stuff....
} finally {
releaseWriteLock();
}

logic all from a single place for all the setters methods in my class. And a similar readLock() aspect for my getters.

Brian also presented NetKernel. Also awesome. Still trying to get a handle on how exactly we can leverage it for our needs. His Mashup/SemanticWeb/RDF presentation was also good.

Jared Richardson's presentation Shippers Unite was very good. The best part, calling sales people 'Sales Critters'. He had lots of great advice, and great best-practice type information.

Neal Ford's SOA presentation, and his keynote after dinner were also very good. His keynote, "Polyglot Programming" was very interesting. Contrasted the increasing cruft, and complexity (and irrelevancy) of the Java language against the awesomeness of the Java platform. Described the increasing place Dynamic Languages will have within the software industry. In particular their place inside managed runtime environments (either JVM or CLR).

The only major disappointment I experienced was the (apparent) disdain the conference presenters seemed to show for Python/Jython. Lots of Groovy/Ruby/JRuby/Grails rah-rah-rah. I know Rails is the new poster child, and Ruby folks should be proud. But, to give Python/Jython/IronPython hardly a mention. And, the one time the word Python appeared on a slide, to explicitly declare Ruby the winner over Python... seems premature.

Yeah, yeah. Sour grapes. Maybe I should try Ruby before deciding I don't like it... but the Perl-like $ and @ syntax rubs me the wrong way. And, maybe I should just be happy about the rising tide of dynamically typed languages that'll lift all boats.

Wednesday, June 06, 2007

discrimination!

Someone brought a delicious looking treat in to work today.

The sign next to it:

APRICOT CAKE
____________

(no nuts)


And, in other lame joke news, my new favorite joke (the bottom panels) . I'm just that classy.

Thursday, May 31, 2007

mmm... pie.

It's turns of phrase like this that keep me going back to Worse Than Failure :

Of course, upon his return to work, fate crapped on his hope and served him up a big, steaming slice of shattered dream pie. The familiar stench of hot computers and death descended on him while he tried to shut out the familiar fear of dying in the room and having the network absorb nutrients from his decaying body.

Thursday, May 17, 2007

san francisco -- day #4 -- "You like extreme?"

Final conference sessions today. OK, but nothing fantastic.

Great lunch at House of Nanking. The waiter arrived, said "Your first time here?" When we said yes, he took our menus. No idea what the dishes were, but they were all super-excellent.

Then got a taxi to the airport. After a few minutes of silence, the driver asks, "You like extreme?"

I'm not sure I hear him right. He asks again, "You like extreme?"

Yep. I had heard him right.

Pause....... I'm not sure if I'm going to get invited to a cock fight, or what. I guess that maybe he's asking if it's OK to play his favorite thrash metal CD. "Uhhh.... extreme music?" I ask.

He explains, "No! Extreme! Like X! .... Games! Extreme. Sports."

I respond, "umm. A little?"

The rest of the ride was enclosed in blissful silence.

Wednesday, May 16, 2007

san francisco -- day #3

Noisey street. Some sleepy sessions. A couple awesome ones -- displaying debugging and profiling support for XQuery.

Then the final session of the day. At first, I'm thinking... blah, a mailing list archive viewer? Oh, how wrong I was. Sweet zombie Jesus, it was cool. Or maybe Jason Hunter is an great speaker. Or maybe both?

It was also very applicable to the work we're doing -- transforming and enhancing XML and non-XML assets into an normalized XML form and storing the results in MarkLogic.

Tuesday, May 15, 2007

san francisco -- day #2

Noisey street + hotel room close to street = no sleep.

As the opening session begins, I realize I can't focus. Then I notice the strobing migraine precursor.... Today is going to be awesome!

Interesting sessions. One of the sessions on the technical track of the conference seemed like a waste of time, but most of the others were interesting. And an added plus, presentations by the vendor and one of our competitors seem to validate our current architectural approach.

Monday, May 14, 2007

san francisco -- day #1

Flew to San Francisco for a technical conference. Flight uneventful, and in a teeny CRJ200. Only 12 and a half rows of seats.

Googled up restaurants near the hotel. I've been craving Vietnamese all the time lately, so I decided on a hole-in-the-wall place with good reviews -- Golden Flower Vietnamese. Just a couple minutes walk from the hotel.

Pretty good, but not the best I've had. The imperial rolls were greasy, and more mystery-meaty than I'd have preferred. The bun with grilled pork and shrimp was tasty.

In order of worst to first:
Pho Cali
-> Golden Flower Vietnamese -> Pho Hoa -> Shanghai Cafe -> The deeee-licious versions Dien made for us over at Mark's house. Mmmmm.

Also, it's less fun to travel without coworkers. Wandering aimlessly is less fun to do on your own... it feels more like getting lost than having an adventure.

Thursday, May 10, 2007

additional lame book reviews

Yes, more reviews. Why the wait? Because I finally read some books again during a few days of vacation.

Day Watch by Sergei Lukyaneko -- pretty similar to the first book, Night Watch. As good as the first, and sometimes as infuriating (wah? where'd that plot twist come from?). But pretty fun. Hopefully the new movie will be good as well.

Storm Front by Jim Butcher -- the lovely wife and I are enjoying the Dresden Files on SciFi, so I thought I'd pick up the first book in the series it was based on. Pretty good. On the fence on whether I'll pick up more.

Fiends of the Eastern Front by David Bishop -- What'll that crazy Hitler do next? Hire vampires to help win WWII, that's what. I liked the premise. I liked some scenes. But, ultimately very lame.

Did I mention it was lame? And full of typos? I usually blissfully skip right past most typos, not this time. That must mean they were 2-3x more that I missed.

Sample paraphrased ending scene of each book (in the 3-book omnibus):

books #1 and #2:
Lord Constanta (main baddie) : "Yes. You tried to kill me. Did I mention I'm completely (and lamely) invulnerable? It's because my Sire is so super bad-ass. I'll let you live to the next book, but let me tell you about my ludicrous world domination plans first...."

book #3: Yes. I'm spoiling the ending.

(further expository villains explaining their ludicrous world domination plan ... : "Yes, our plan is to darken the skies over Europe so we don't have to worry about our sunlight imposed curfew. Then we can drink blooooooooood all the time! Muauahahahhaa. No, I don't see the complication that that'll kill all life other than us... C'mon, man. We're gonna teach the stupid sun a lesson.")

And, the horrible, horrible, horrible ending:

The Sire (basically a big vampire bat you might expect to see in a Godzilla flick) : Bwaaaaah! Watch me fly outta this lake of blood. Oh nos! The day-walker hero is doing his homage to Slim Pickens in Dr. Strangelove by riding a silver-tipped V1 rocket into me. I esplode. When I gave Lord Constanta his resurrection powers, I forgot to give them to my self. Curse my strict FIFO ordering of completing my TODO list.

I was willing to give the books a little credit until the ultra-lame ending. Christ on a pogo stick, that was awful.

Friday, April 27, 2007

change the world?

I've been getting more and more excited by the OLPC project. Not only is it exciting technically, it seems like it has huge potential to change the world.

It'll take a few years before the educational goals bear fruit, but it'll have a huge technical impact much sooner. A lot of the cool technology could make its way out to non-OLPC hardware -- displays, power management, networking, security, exciting Python changes... lots of great stuff.

The Daily Python-URL pointed me here. A great introduction to the project, its goals, and the technology.

Tuesday, April 17, 2007

finally learned my lesson

I clearly remember thinking a year ago: "I've had incredible luck with my computer hardware. No disk, motherboard, power-supply, or other problems with any of the computers I've owned."

Since then, I've replaced the power-supply on my newest computer. TWICE. Both times, the hardware was still under warranty, so financially it hasn't been an issue. But the inconvenience of losing access to the files has been annoying.

After hearing good things about Mozy, I decided to give it a shot. So far, so good... Of course, it's only been an hour. Fingers-crossed for more hardware problems! Woo-hoo!

And, in somewhat related news, I'm finally taking the time to encrypt my sensitive files -- tax returns, contact info, schematics for man-eating robots, muffin recipes, etc. I'm giving TrueCrypt a shot. Because I'm cheap. Also, having a cross-platform encryption solution was a big plus. So far, easy to setup and use.

Friday, April 06, 2007

lesson of the day: just assume Co-Worker #1 is correct

I've been reading Java 2 Performance and Idiom Guide, it's quite good. But, I think I'm too interested in experimenting with the tweaks it suggests.

As I mentioned in my last post I'm working on a data-processing pipeline, and have spent the last couple days investigating why the performance (records/second) of a particular pipeline stage drops off like it does.

The software we're working on analyzes bibliographic records and creates a representative sample. Our users create mappings between one XML schema and another. They have to go through much fewer iterations if they've got a good sample to work with. And iterations are much shorter if they can test their mapping against a sample that's <500 records, rather than 16+ million records.

The oddly performing pipeline stage normalizes XML entities by replacing them with a numeric reference to their Unicode equivalent. Yeah, the DTD should do that... but it doesn't help when the data provider escapes the entities. Or when their DTD replaces the entity... with the entity... argh.

The graph below shows the records/second performance of three stages of a pipeline (y-axis). The x-axis is time. The yellow nodes are each file's entity-replacement performance. The blue nodes are the files getting split into 5000-record chunks and inserted into a Marklogic database. The pink nodes are each 5000-record chunk being analyzed. The first 500 or so files all have 30,000 records; the rest of the files are daily updates that vary in size -- that's why the tail end of each gets a little kooky.The initial steep drop-off for the first few files was understandable. It's one of the first stages of the pipeline, and the threads doing entity-replacement don't have to compete for I/O with other pipeline stages until the following stages have entity-replaced-output to work on. But the continued decline made me worry that there was a problem in the code.

Reviewed the code. Each file is getting processed by its own thread. Each thread should create SAX handling objects that aren't shared between threads. No static fields or other stuff to interact between threads...

But! I notice that the SAX handler uses a StringBuffer to accumulate a records-worth of text as it replaces entities. When endElement is reached it calls sbuf.setLength(0), which my fancy new book learnin' suggested could cause memory/performance problems.

And I set off on my non-adventure....
There are four series on the graph above.
  1. Dark blue is the original run.
  2. Pink is the result of replacing sbuf.setLength(0) with sbuf = new StringBuffer(). No fabulous improvement. Stupid book learnin'.
  3. I decide that 'new StringBuffer()' meant that memory is getting re-allocated from initial the default StringBuffer size, which isn't as efficient as it could be. Yellow is the result replacing sbuf = new StringBuffer(INIT_LENGTH). INIT_LENGTH is a couple thousand bytes. Still no major improvement.
  4. Re-review the code. Realize that the FileInputStream/FileOutputStream objects aren't wrapped with BufferedInputStream/BufferedOutputStream. The light blue nodes are the result of changing that... Still no major improvement. I assume this was because these input files are in Zip files, and output to GZIP files -- so were already buffered (I did increase their buffer sizes along with adding the buffering to the uncompressed-file handling).
Then I remember the comment from Co-Worker #1 when I showed the graph to her before I began my journey to nowhere: "Maybe its just file-size"

I fiddle with my statistics exporting code to include the file-size in the exported spreadsheet.
*@&#$*&!

And the KB/second graph looks like:Moral of the story: Get the most complete picture of a performance problem you can, and don't be swayed by the kooky little performance trivia you read.

Wednesday, March 21, 2007

a programming post, odd.

At work, I've been working on a data processing pipeline. The meta-data for the pipeline (e.g. status of pipeline phases, data locations, etc) at runtime is held in a LRU cache and flushed to persistent storage. Prior to a couple weeks ago, the storage was just a bunch of files on the filesystem. It worked, but it was pretty slow to collect aggregate information out of it -- e.g. if you wanted a global view of all status within the pipeline, you had to traverse the meta-data graph loading each individual file as the traversal progressed.

I'm allergic to relational databases, and we're already using Marklogic/XQuery to store and transform our data, so we decided to try a new implemenation of the LRU cache with the storage in Marklogic. Performance wasn't impacted much (maybe an extra couple minutes for a 1500+ file pipeline that takes 10+ hours), and now status reports take a couple seconds rather than a few minutes. Hooray!

Since that was less painful, I decided I'd also try getting some performance statistics out of the meta-data in the database. There are a few helper functions to do sum/count/average, but I wanted to avoid iterating over the list multiple times. I found some psuedocode here, and implemented an XQuery version:

(:
This is an XQuery implementation of the variance algorithm on this page:
http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance

credited to Donald Knuth, The Art of Computer Programming, vol 2: Seminumerical Algorithms, 3rd edn., p. 232 Boston: Addison-Wesley.

It relies on Marklogic's extensions to XQuery, so it probably won't
work on other XQuery implementations.
:)
define function putil:getSumMeanVariance($srcvals as xs:double*) as node()* {
let $n := 0
let $mean := 0
let $S := 0
let $sum := 0

let $throwAway :=
for $x in $srcvals
let $delta := $x - $mean
return (
xdmp:set($n,$n + 1),
xdmp:set($mean,$mean + ( $delta div $n ) ),
xdmp:set($S, $S + $delta * ( $x - $mean )),
xdmp:set($sum, $sum + $x )
)
let $variance :=
if ($n gt 1) then
$S div ($n - 1)
else 0
return (
<count>{$n}</count>,
<sum>{$sum}</sum>,
<mean>{$mean}</mean>,
<variance>{$variance} </variance>,
<stdev>{math:sqrt($variance)}</stdev>
)
}


let $elapsedTimes :=
for $pnode in collection($collName)[ .... uninteresting XPath predicate stuff here .... ]
return $pnode/stats/time/end - $pnode/stats/time/start
return <stats>{getSumMeanVariance($elapsedTimes)}</stats>

Friday, March 09, 2007

lame book reviews: the revenge

While the lovely wife recovers from her surgery[1], I've been reading Carl Zimmer's fascinating blog: The Loom I've always been interested in evolution and biology. Once I started, I can't stop digging through his archive of posts. Great Stuff! I read a couple of his books a year or two ago. "Parasite Rex"-- creepy, disgusting, fascinating. and "Fish with Fingers, Whales with Legs", also very good.

Fiction-wise:
  • Scott Smith, "The Ruins" -- meh. It had good bits, but I couldn't suspend my disbelief w/ regard to the villain. Definitely not a book to read while vacationing in Central America.
  • Cormac McCarthy, "The Road" -- A man and his son wander across a post-apocalyptic wasteland. Heartbreaking. Good.
  • Dan Simmons, "The Terror" -- 19th century Arctic explorers stuck for years in the ice while a monster slowly picks them off. Awesome.
[1] Since my brother-in-law reads this, I'd better explain. She had a lipoma removed. It was an outpatient procedure, everything went well, and she's recovering at home. Today is probably her worst birthday ever, but she's doing OK.

Monday, February 19, 2007

end of job hunt

After 2 interviews and one offer the job hunt is over. I decided to stay at the current employer.

On the same day I received the offer our CTO came to talk to us. He said pretty much everything I wanted to hear: my project isn't dead, he's signed the purchase order for the new hardware we've been waiting for, and our office will have an active role in the next major upgrade to our customer-facing system. That, combined with the fact that I really like the people I'm working with, made me decide to stick it out.

The offer was tempting. It was from the company that bought my ex-employer. I know the work is exciting, and the people are great. But, in the end I decided that I'd have much more control over my future at my current employer. I have more say in which projects I'll work on, as well as having a major hand in all the parts of their development cycles. And, the much shorter product lifetimes will keep my technical skills fresher.

Hopefully it'll turn out for the best.

Monday, January 22, 2007

favorite post ever

While reading the rec.arts.sf.written thread spawned by the news that HBO has bought the rights to produce a TV series based on George R. R. Martin's "Song of Ice and Fire", came across perhaps the most beautiful thing ever uttered on USENET. The thread is mostly a discussion, comparing Good vs. Evil as characterized in Martin versus JRR Tolkien.

> If killer ice zombies aren't evil, then the word has no meaning.

Thursday, January 18, 2007

return of the lame book reviews

Enough job whining. Time for more lame book reviews. Hooray!
  • A Dirty Job, by Christopher Moore -- Man discovers he is Death. Or, at least, one of Death's little helpers. Very funny. Very sad. Very good.
  • Old Man's War, by John Scalzi -- Earth's Colonial Defense Force only accepts recruits that are over 75 years old. Very good
  • The Android's Dream, by John Scalzi -- Best. First. Paragraph. Ever. "Dirk Moeller didn't know if he could fart his way into a major diplomatic incident. But he was ready to find out." Very funny. Very good.
  • The Algebraist, by Iain M. Banks -- I didn't like it as much as his Culture novels, but still good.

Tuesday, January 09, 2007

job hunting

Well, I've decided to jump ship... Or, at the very least, test the waters very seriously. I've even updated my resume.

The job market is very good at the moment, with a number of cool sounding jobs. The ex-employer even has good jobs -- and even appears to be making money. Even better, I still have friends there. But... haven't decided if I want to get back into the C++, real-time, simulation world. But, the hardware/software at ex-employer is so, so cool.

Monday, January 01, 2007

worst new years gift, ever

Found out on Saturday the employer sent a wonderfully vague re-organization announcement on early-AM Friday.

I could have a job. I could be laid off. I could be asked to move to Manhatten to join that team.

Or, it might just reflect the management structure of the software development work at the company. Which would also suck, because my (immediate) boss is great.

Thank goodness we exercised some restraint this Christmas in terms of gifts for ourselves and family. We also transferred our credit card debt onto a 0% APR card a couple months ago... we were planning on paying it off over the next year, but now it might just get minimum payments until the job thing settles.

I'm not too worried. There are a ton of jobs in the Salt Lake area (according to monster and dice), and the company that bought my old employer's simulation business is doing very well and has positions. There are also a ton of cool sounding start-ups down in Utah county... the wife has put the kibosh on moving down there, but Draper/Bluffdale might be doable.

I'm mostly frustrated. I hadn't planned on staying at [employer's name withheld] for more than another year... but it would have been nice to leave on my terms rather than theirs. It would have also been nice if they'd done the layoff at a time when more than 5 people were actually in the office, and sending such an vague-but-ominous e-mail announcement.

Update: The job is safe. The vague e-mail implied the development positions would be cut/moved, but in fact none of the development positions at our location was involved. Our software architect was laid off, however... probably due to butting heads with the new CTO. The rest of the layoffs were spread across the groups.

Thursday, December 28, 2006

Thursday, November 30, 2006

more lame books reviews!

I made a second pass through Steven Erikson's 6 Malazan books (~4000 pages). Definitely held up on the re-read. Found lots of foreshadowing I'd missed the first time. Reading them one after the other also allowed me to catch some references I'd missed the first time. Lots of fun. Sometimes gory. Sometimes very funny. Highly recommended.

Just finished S.M. Stirling's Dies the Fire. I love good post-apocalyptic fiction. It was pretty good, but the premise made me want to throw the book across the room a few times. I can see all electronic devices being knocked out at once... But gunpowder? And steam engines? It seemed like the author just wanted an excuse to get people into chain mail whacking each other with swords as soon as possible. The way the skilled characters found each other seemed way too easy (blacksmiths, horse trainers, ex-soldiers).

It was a good read. But I found myself bored or frustrated every-other-chapter when the author would focus on the Wiccan/ex-SCA characters. I don't think its just that they're Wiccan -- I'd be just as annoyed at a book with Christian characters that constantly hit me over the head with their faith.

Tuesday, November 07, 2006

dangerous denver animals

We took a fun road-trip to Denver and back. My wife's best friend was getting married, and I had a friend we hadn't seen in a few years... Off to Denver! For touristy stuff!

Saw the Botanical Gardens. The Aquarium. The Zoo. The Natural History museum. Lots of fun.

But, beware the sneaky zebras at the zoo:
I think he was setting me up for the following shark attack at the Aquarium. Thanks to my wife's quick thinking, blinding it with the flash, I was able to escape.
Doesn't seem safe to me. I'm so writing a letter.

Monday, October 09, 2006

more notes on things I've read and/or put in my mouth

"World War Z: An Oral History of the Zombie War" by Max Brooks - Awesome. Very fun, what-if zombie apocalypse story told through a bunch of first-person narratives of the survivors.

And, the soft-tofu soup at Myung-Ga Tofu House & Korean BBQ is tastey. And comes out BOILING in a stone pot. BOILING! Did I mention it is BOILING! And you crack a raw egg into it? The only thing that could make it better is if it was on fire and/or exploded.

In other news, the lovely wife turned into Betty Crocker last week. Made around 2-5 dozen of 6 varieties of cookies. She said it was to try out recipies for the holidays. I'm thinking it was just to mess with me. But, co-workers and friends enjoyed the plates of cookies we delivered.

Monday, September 04, 2006

snot, books, movies

Finally getting over the cold I've had for the past week... And after days of bad TV, finally received the stuff I'd ordered from Amazon.

My brother-in-law got me hooked on Tim Powers. Finished On Stranger Tides, and Three Days to Never this weekend. On Stranger Tides had pirates and voodoo. Awesome. But, I think I liked his latest, Three Days to Never, even more. Very suspenseful and kept me guessing about what was going on (in a good way... with enough bread-crumbs to make guessing fun rather than annoying). Still trying to decide if I liked how it ended or not.

Finishing the last book now. Nightwatch, by Sergei Lukyanenko. Lots of fun too. Trying to decide if I'll pick up the DVD too.

Also in the package, one of my favoriate movies: Safe Men. A couple of untalented lounge-singers mistaken for safe-crackers by a low-level mobster 'Veal Chop' (Paul Giamatti) with the Rhode Island Jewish Mafia. Great cast: Sam Rockwell, Steve Zahn, Harvey Fierstein, Peter Dinklage, Mark Ruffalo... Fake asses. Exploding pants. Awesome.

Tuesday, August 22, 2006

"Ah, slurry seal, my old nemesis..."

This morning I received further evidence I am a spaz.

The city is slurry-sealing a couple streets in our neighborhood today, including the one our house is on. Our house is at about the mid-point of the section of roads they're doing.

I get the bright idea to park across the street from my house, thinking "Well, they'll start at one end of the work area and make their way to the other... If I leave at 8am, I shouldn't have any trouble."

I walk out the door and see that they do the sealer end-to-end in stripes the entire length of the road. If I don't want to get my shiney-shoes all tarry (our CEO is visiting today), I'm going to have to walk to the end of the road and around the block to get to my car that's across the street from my house.

I get about halfway around.

I realize, "I don't have my car keys."

I walk home. I realize, "I don't have my house keys."

The lovely wife is in the shower, she can't hear the doorbell or me calling from my phone.

Stuck on the porch for 15 minutes. Feeling like an idiot is a great way to start the day.

Tuesday, August 01, 2006

SCIENCE! WHAT HAST THOU WROUGHT?!

Cancer Therapy with Radioactive Scorpion Venom

It seems obvious that this will increase the rate at which supervillians are generated.

Wednesday, July 19, 2006

more IronPython + MarkLogic experimenting

I've been playing more with IronPython. Specifically, experimenting with using it along with the MarkLogic's XCC API.

Pretty ugly, but working re-implementation of the sample code to run queries.

# Re-implementation of SimpleQueryRunner.cs XCC example
# using IronPython

import clr
clr.AddReferenceToFile("MarklogicXcc.dll")

import Marklogic.Xcc
import System
import os
import sys

def execute(session,query):
"""Generator that yields result strings from
execution of the query"""

req = session.NewAdhocQuery(query)
for res in session.SubmitRequest(req).AsStrings():
yield res
return

def main():
if len(sys.argv) != 3:
print usage()
sys.exit(2)

query = "'Hello world'"
try:
f = open(sys.argv[2])
query = f.read()
f.close()

cs = Marklogic.Xcc.ContentSourceFactory.NewContentSource(
System.Uri(sys.argv[1]))
session = cs.NewSession()

for result in execute(session,query):
print result

except EnvironmentError,e:
sys.stderr.write("*** Error: %s\n"%e)
sys.exit(1)
except Exception,e:
#ugh, looks like exceptions from XCC are Exception
sys.stderr.write("*** Error: %s\n"%e)
sys.exit(1)

def usage():
return "usage: \n SimpleQueryRunner.py xcc://USER:PASSWORD@HOST:PORT/MLDATABASE <queryfile>"

if __name__ == "__main__":
main()

Figuring out more ways I might infiltrate my workplace with Python makes me happy happy. Beer also makes me happy. Mmm... Murphy's Stout.

Monday, July 17, 2006

MarkLogic XCC + IronPython = Sweet!

At work we're using MarkLogic to store and transform our XML content. You use XQuery to access the data, which has been pretty fun to learn. While looking at the release notes for MarkLogic 3.1-2, I saw that they've released the .NET version of their new XCC API for connecting with the server.

I've meant to start playing with IronPython for a while. And I've also meant to start learning C#/.NET stuff. So, I thought I'd try running the MarkLogic XCC.Net examples via IronPthon.

And, it works! Woohoo! Not that it does much yet...

import clr
clr.AddReferenceToFile("MarklogicXcc.dll")

import Marklogic.Xcc

import System

import os

doc = 'hamlet.xml'

#replace connection info and marklogic db name
contentSource = 'xcc://USER:PASSWORD@HOST:PORT/MLDBNAME'

print "Loading document ..."
Marklogic.Xcc.Examples.ContentLoader.Main(
System.Array[System.String](
[contentSource ,doc]
)
)

print "Fetching document ..."
Marklogic.Xcc.Examples.ContentFetcher.Main(
System.Array[System.String](
[contentSource,os.path.abspath(doc).replace('\\','/'),'-o','hamlet_fetched.xml']
)
)
print "Done."

Our collection of XSLT/XQuery/Java applications is a pain to deploy and do quick interactive testing against. Hopefully being able to script it with IronPython -- and maybe provide a nice interface with Windows Forms -- will allow quicker turnaround times.

Monday, July 10, 2006

SCons presentation

Will be giving a presentation on SCons to the Utah Python Users Group later this week.

Here's a link to the presentation. And examples. Many of the examples are from the unit tests or User's Guide.

Update:
Update 2006/07/14:

Saturday, July 08, 2006

'prince of nothing', meh

Over vacation, I read the Prince of Nothing trilogy by R. Scott Bakker. Meh. It was OK, but didn't knock my socks off.

As is evident from my other lame book reviews, I'm a very shallow reader. I pay attention to the dialogue and plot, but most literary subtext sails right over my head. One of the main characters is sort of kung-fu jesus, and manipulates the others by his philosophical ramblings. I don't have the patience to read and re-read his dialogue to parse the ultimate meaning.

If I want Kung Fu Jesus, I'll re-read Lamb by Christopher Moore.

Wednesday, July 05, 2006

*&@!#&$! dish network

We took a week off for my wife's family reunion, and expected TiVo to continue making us its obedient servants. Oh, how we adore the TiVo.

The TiVo controls one of our Dish Network receivers via IR. Sometimes (1-2 times a month), the message gets garbled and the channel is switched to the wrong channel. Annoying, but usually not too bad. But, if the channel is accidentally switched to a channel to which we don't subscribe, the Dish Network receiver pops up an error message that you must leave via pressing the up/down channel button. TiVo sees a signal coming through and happily records it.

Guess who had ~20 hours of the same damn error message recorded when they got back from vacation? Craptastic!

Sunday, June 11, 2006

will never become a taste sensation

Gin + Fufu Berry Jones Soda

Blech.

Thursday, June 08, 2006

band names, squid news

Band names I annoy my wife by proposing:
  • Stick -- One-man Styx tribute band
  • Ventricle -- One-man Heart tribute band.
Also, last night I discovered that while I like watching both octopus and squid swim... move... squirt... whatever... in the ocean, I prefer eating squid

Friday, May 26, 2006

will I learn my lesson?

Once again, it's release time. And, again I'm in the middle of it all. And, everyone is taking vacation. Time to post nonsensical ramblings, incomplete thoughts, and bad grammar. I'm feeling very burnt out.

Why don't I realize that work will never be finished? And, that it's OK to leave work after putting in _only_ a 8 hour day... particularly when we are supposed to work 7.5 hour days.

I hate leaving in the middle of something. I thought my speedy internet connection would mean I'd be able to work more from home... but it's still hard to interrupt myself when I'm focused on something. But, it is good at making geeks jealous.

Liz has been working a lot of late shifts, so I feel less urgency than usual to go home at a decent time.
Last couple weeks have all been ~60 hours. Co-Worker #1 has been out on vacation or traveling, so there's no one to pester me to go home.

Wednesday, May 17, 2006

important net neutrality news

Ninjas endorse net neautrality:


No net neutrality could prevent the search for Spock!

Tuesday, May 02, 2006

Utopia article in IEEE spectrum. Squid. Book.

To make certain people jealous, here's a cool article in IEEE Spectrum about Utopia.

I've been remiss updating my boring list of things I've put in my mouth and un-insightful book reviews. I know that's what my vast readership has come to expect.

Best thing I've put in my mouth: Seaweed and Smoked Squid Salad at Go Sushi. Mmm, translucent crunchiness.

Lastest book read: 'The Bonehunters' by Steven Erickson. Because I'm waaaaaay to impatient, I ordered it from Canada. It was very good.

Wednesday, April 05, 2006

Mmmmm.... 15 Mbps

I love you, Utopia. Mmmm... broadband.

Now... if only I can navigate the many websites describing Wi-Fi on Linux, and which versions of which cards of which brands of wi-fi cards work consistently... Ugh. Maybe I'll just string a cat5 cable into the other room.

Tuesday, April 04, 2006

good 'n bad 'n plenty

Good stuff:
  • Haagen Dazs Mayan Chocolate Ice Cream
  • Subversion
  • The 15 Mbps internet connection due to be installed tomorrow. Think of all the pr0n, and pirated music, and ... I'm sure there are other things on the internet. Pirated software? Pirated movies? Pirates? Pilates?
  • She Wants Revenge. Creepy stalker music is the best music.
Bad stuff:
  • Being the merge/build monkey at work. Some of it is good... I have a good view of the whole project. But, then crunch time comes around, and I'm the guy at the end of the line that has to integrate all the changes before passing things along to CM. Contractors are late with their delivery. Partly because of last-minute requirements updates; partly because of them thinking testing on a virtual Windows host under VMWare is adequate for a system that'll be deployed across 4 Solaris servers. I can't do anything but wait and watch as things come screeching to a halt. Right when things get to me. And I'm taking tomorrow off. And I'm wasting time writing this.

Monday, March 13, 2006

new york city, day 7

Forgot to mention about Day 5:
  • While we ate at the vietnamese place near NYU, a man walked around the corner.
  • This was no ordinary man.
  • This man had a cat perched on his head.
  • Definitely one of the highlights of the trip.
Day 7:
  • We had some great weather for the majority of the trip... That changed Sunday. Rain, rain, rain.
  • I loved walking around the city previously... Today, not so much. This could also be because I'd already packed and checked-out of the Hotel, so I was stuck in soggy shoes for the rest of the day.
  • Walked over to the Hell's Kitchen Flea Market with co-worker #1. We were very early, so there weren't many booths set up yet. And, because of the rain, most people had tarps covering their wares.
  • Decide to try to wait out the rain at the Cupcake Cafe on 9th Ave and 39th street. The sweet potato glazed donuts were very good. The rain did not want to be waited out, so we decided to go over to times square to finally settle on a birthday gift for Liz.
  • There's a shop near Times Square... American Craftsman... or something like that, that sells these intricate wood boxes (among many other cool things). Bought Liz a cool little box with many compartments.
  • Co-worker #1 suggested we find stuff to put in all the compartments. So, we thought we'd stop at places along the way home to find little trinkets or something.
  • Near the cash register, they also had a bunch of cute little miniature animals made of glass, we picked up a few to put in the different compartments of the box. Hooray! Now we don't have to search the city in the rain.
  • Wander back to hotel and have lunch at Brendan's Bar & Grill, across the street from the hotel. The interior was cool and art deco-ey (yes, that's a word). Met up with Chevan again to say goodbye and thank him for showing us around.
  • Home!

Liz ended up loving the purse, and the box of many prizes. NYC was a lot of fun, and it was great to see Chevan again since we haven't really taken the time to talk for a decade or so.

Co-worker #1 gets to stay another week for the advanced training course. I'm a little jealous. Mostly because now I don't have an excuse to not do the work that piled up in my absence.

Saturday, March 11, 2006

new york city, day 4-6

Day 4:
  • More training.
  • More food. Italian this time. Arno's. From the swarm of waiters to seat us and take our orders, I guessed that meant good service... But, they forgot about us once they cleared away our plates. Weird. "Yes, we'd like to see the desert cart." Then nothing. For what seemed like an eternity.
  • Walked up to Times Square. Lights! Crowds! Applebees!
Day 5 :
  • More training.
  • Buy the purse for Liz. Just as fabulous... And, it comes in three styles.
  • Met up with Chevan after work. He took us on the subway down to the World Trade Center site. Then back on the subway to find something to eat.
  • Found a vietnamese place near NYU. Very good. Butterfly Grill. They'd mounted butterflies in glass cases all over the walls. Was very cool.
  • The calamari appetizer was very good. Much better than the usual batter coated crunchy chew rings.
  • For the main course, got the 'spicey frogs legs'. Good. But not spicey. Chevan and I act like an old married couple, "Oooh, that looks good. Can I have a bite?"
  • For desert, the red bean ice cream. When it arrived, I got a prize. A piece of cardboard in the ice cream. I was stunned (and a little drunk), so Chevan came to my rescue and asked for a new bowl. And, we did our old married couple routine again.
  • Took the co-workers back to the hotel, then went out for drinks with Chevan. It was good to have a chance to catch up and gossip about old friends. Haven't had a chance to talk with him one-on-one in a long time.
Day 6:
  • Sleep in.
  • Realize my voice is really hoarse after yelling back and forth with Chevan to be heard over the music in the lounge. Iron shirts. Hope I don't lose voice.
  • Grandpa & Grandma (mom's side) have seats to the Metropolitan Opera, arranged to meet with them before the trip. Unfortunately, Grandma wasn't feeling well, so I just met Grandpa. Had a fantastic lunch at the Met and saw La Forza del Destino.
  • Accusations of innocence deflowered! Accidental shootings! Explosions! Cross-dressing! Betrayal! Murder! With subtitles (via screens installed on the backs of the seats)!
  • Back to the hotel to meet up with co-worker #1 and her cousin. They're in her room, watching 'Tall, Dark, and DEADLY!'. I go up to her room to harrass her, in time to see self-defense manslaughter delivered via boat to the face. ON LAND! I can see why they were riveted.
  • Call up Chevan to see if he's free for dinner again.
  • Walk up 9th Ave, try to decide which of the many places look tastey.
  • There was a cluster of 4-5 Thai places. It must have been a sign from Jeebus. Decide on Breeze. The menus are presented in CD jewel cases. Odd.
  • Once again, decide to go with the the kookiest sounding thing on the menu. It was a panang curry with squid, scallops and shrimp. Served in a banana leaf. It was very good. And it came in a banana leaf, so it was clearly the winner.
  • Also once again, Chevan and I do our old married couple routine.
  • As if it's not bad enough that we're eating off each other's plates... Find out that Chevan watched Project Runway too. He pointed out the places where they filmed on our way up to dinner. Parsons, Atlas, Toys R Us, Red Lobster. And Nick was his favorite too. And, Chevan also demonstrated his Santino-as-Tim-Gunn impersonation, as we walked by Parsons' and saw the infamous Red Lobster.
  • Back to the hotel. Call Liz.

Wednesday, March 08, 2006

new york city, day 3

Forgot to mention about day #1:
  • My room has a safe in the closet. Before I left to look around the neighborhood with co-worker #1, I made sure to set the combination and put my laptop and digital camera in the safe.
  • When I got back to the room. I discovered the safe door was open.
  • Oh no! I've been burglarized!
  • Wait... Everything is still there.
  • Oh no! I'm an idiot who forgot to shut the damn safe door.
Forgot to mention about day #2:
  • The shower in my room is tremendously hot. I have to turn the temperature knob all the way to cold for it to be slightly bearable. I assume the cold-water thingamajig in the shower hooziwhatsit is busted. The hot water coming in the sink is very hot... but the cold is very cold.
  • Had dinner with co-workers #1 and #2. #1's cousin lives in Manhatten, and came out to dinner with us. She was very funny.
Day #3 (I can tell my vast army of 2 readers is on the edge of their seats now that I've skillfully whet their appetite with more details of the previous day's happenings):
  • Got up
  • Went to training
  • Back to hotel
  • Dinner! Heartland Brewery & Rotisserie
  • Sampler tray full of tiny beers! Hooray Tiny Beer!
  • Wander around Macy's, concentrate on walking in straight line.
  • In Macy's, the higher we went, the older the escalators. I've never seen an escalator with wooden treads before. Sweet.
  • Back to Hotel.
  • Check e-mail. Realize the networking change that IT is doing just broke something they set up for me a couple months ago... My downloader application is barfing error e-mails around the company, complaining that it can't connect through the special NAT-ed address to the remote office. Hooray e-mail!
  • 11pm! Hooray garbage trucks!
  • Watch VW commercials friend posts to his blog. Hooray creepy VW guy!
  • 11:13pm. Car alarm starts going off.
  • Sweet zombie jesus, NYC is noisy. Remember tray full of tiny beers! Hooray tiny beers!

Tuesday, March 07, 2006

new york city, day 2

  • Garbage trucks outside from 11-midnight
  • Discover the refridgerator in my room makes a odd, short buzzing/clicking sound every 15-30 minutes... All night.
  • Up at 2am. For some reason. Back to sleep.
  • Up at 4am. For some reason. Back to sleep.
  • Up at 6am . Get ready. Wonder why I kept waking up every 2 hours... Obviously, Zombie Hitler and Orville Redenbacher are involved somehow. And, don't get me started on Ladybird Johnson.
  • Mmmmm... contintental breakfast.
  • Training class from 9am-5pm
  • Conference call back to SLC 5:30-6:30
  • Run back to hotel to catch up w/ co-workers.
  • Go to very tastey restaurant, with horrible service... But, the food was fantastic. Ida Mae Kitchen-n-Lounge

Monday, March 06, 2006

new york city, day 1

Because my co-worker forgot her journal, I will post this here for all posterity:

  • At dinner tonight, our waiter sounded like Fenster from the Usual Suspects
  • At dinner tonight, the soup special was a sun-dried tomato bisque with roast garlic and sweet pee puree. No, that's not a typo... Well, it's their typo not mine. And, yes, we ate it. You could really taste the pee.
  • I found a lovely purse at the 99cent store down the street (a black purse with a embroidered blond lady sitting in a animal-print lounge chair). I think my wife will get a kick out of it... So, I must purchase it to prove I'm not the world's worst husband for travelling (for work) over her birthday. Well, I'll probably get something else too.
  • The Chinese restaurant down the street from the hotel had some truely nasty looking garbage cans waiting for pick up... Picture 4-5 large cans, filled with meat/fish off cuts. Thank god the weather is still fairly cold.
  • When we got to JFK, who was there by the gate looking fabulous? Nick Verreos, Liz's 2nd favorite designer from this season of Project Runway. Now that the chance has slipped by, I'm kicking myself for not getting Liz his autograph and/or a picture.