Monday, October 29, 2007

San Rafael Knob Hike

Last weekend was my scout troop's annual trip to the San Rafael Swell. Usually we do a slot canyon hike with great narrows and sculpted sandstone like this:


This year we have been working on the Hiking merit badge which requires the scouts to do five 10 mile hikes in preparation for a 20-miler. Most of the slot canyon hikes are shorter than 10 miles even if you do a loop of two canyons. In order to do a 10-miler we settled on a hike in the vicinity of Devils Canyon and the San Rafael Knob.

This is more of an open country hike. It's hard to imagine how anyone ever scraped out a life in this arid high mountain desert.


Recreation in the Swell is a point of serious contention right now. The BLM recently released an updated management plan, and have closed some sensitive routes to vehicular travel. Even though I am primarily a cyclist and backpacker, I can see the allure of ATV recreation, especially in areas like the Swell. The area is crisscrossed by old ranching an mining roads. But when I see something like this, I can't help but feel that the ATV crowd deserves even more restrictions unless they can find a way to police their own.

The blatant abuse of a posted Wilderness Study Area is very offensive to me. There are literally hundreds of miles of trails and roads open in the Swell. The route closures should absolutely be honored.

Then again, some of these signs aren't the clearest route markers in the world.


The San Rafael Knob is the highest point in the swell. From where we started it would have been a 12-14 mile round trip, so this is as close as we got.

All in all, it was a nice hike. It helped that I had some of my best friends along as adult leaders.

On the way back to camp we tagged two great geocaches. If you are in the are you have to try and find Where in the Swell Am I and If you don't, Hoo Doo?. There are a lot of caches in the area, but many are much easier to find if you have an ATV to get you closer.

Monday, October 22, 2007

The Rest of the Profile

When I last left off on my background our hero was locked in his bedroom after slamming the door so hard it broke when saving a program failed.

The College Hiatus
After leaving high school I worked in retail, went on a religious mission to Brazil, and lived in Illinois just long enough to meet and marry my fantastic wife and spirit her off to Utah where I entered the University of Utah. For a while I was a performing arts major. I contemplated sociology and philosophy as majors, but finally settled on economics. I planned on completing my undergraduate degree and going on to law school.

That plan got sidetracked about 3 years in when I became a research assistant for a couple of PhD students. After years of using a computer for word processing and playing Links, I found myself introduced to QuattroPro, Excel, SAS and SPSS. I began writing VBA macros in Excel to transpose data for import into the statistics packages. And I realized that I kind of liked playing with numbers on computers.

As I neared graduation, the adviser to the PhD students referred me to a Labor Market Economist at the Utah Department of Employment Security, which was later to become the Utah Department of Workforce Services. This economist needed an intern to help run occupational wage surveys. After 9 months as an intern I was hired full-time as an economist.

The Transition
Over the next couple of years I spent a lot of time dealing with Excel data files and Access database, and writing research reports on wages and economic conditions in Utah. I also found myself in the position of mediating and translating between economists and prevailing wage specialists, and programmers hired to build occupational information systems.

In 1998 I got my 'big break'. The lead programmer on one of these projects left the state and I was allowed to take over a widely distributed Access application. Over the next several months I converted the back end to SQL Server and stored procedures and the front end to a classic ASP application. That application has been upgraded a couple of times and is about to go through a major rewrite. I was a paid professional programmer.

Over the next two years I found myself more and more integrated into a programming unit that was responsible for creating economic forecasting software, and occupational information systems. It was an amazingly good fit, and allowed me to be a programmer while still using the economics and statistics I learned in school.

Embracing the Curly Brace
As the .Net framework and VS.Net became available, I made the decision to switch to C# rather than move to VB.Net. The reasons for this decision may be a good topic for another post, but for now it's enough to know that I consider myself primarily a C# web developer of database driven web applications. I do a little SQL Server DBA work, and for the last year have been working in PL/SQL on a major web application that hits an Oracle database.

Wednesday, October 17, 2007

How to Irritate Three Women at Once

I love my spinning class. The depth of my love is largely a result of my spinning class being the only cycling I have been doing for weeks. The class is held three times a week, has a great instructor, and a group of 3-4 'regulars' who make it to most of the classes. On days when it's only me and the instructor she tends to customize the class to the things I am working on.

During yesterday's class we had completed two of the three core sections and were finishing up with a seated sprinting section. It's not so much that I like the sprinting drills, but just that I am pretty good at those drills. I can spin at a much higher cadence when seated than most of the other participants and usually have to turn the tension up a bit to keep from bouncing off the bike. After the first sprint Ali was complementing our effort and doing the typical motivational pep talk about working hard and sticking with it. I swear I heard her say, "Two more laps and then we cool it down."

We did another sprint and after returning to pace Ali said, "One minute at this pace and then we cool down." In the seconds after that comment I made the critical mistake of not staying quiet. Instead I said, "You mean we aren't doing one more?" At that moment I was subjected to the glares of Ali and the other two participants. The glares continued through the 'added' sprint...

I am going to miss class tomorrow because of another commitment. I think they may let me back in the class on Saturday, but we'll have to see.

Monday, October 15, 2007

The Early Years

True to my normal behavior, I am reading about 5 books right now. It seems I always have a work or two of fiction and two or three tech books going at once. On of the books I am reading is the classic The Pragmatic Programmer.

In that book, which I highly recommend to anyone on the programming side of the IT world, the authors talk a lot about taking pride in and responsibility for your work. On of the ways they suggest you do that is by signing your work. In that spirit, I changed my profile to reveal my name, and figured I would do a couple of 'background' posts to let all three of you who don't actually work with me or aren't my mother, know a little about where I am coming from on the tech side.

The Early Years
I was a pretty typical bored teenager in the early eighties. Little did I know the foundation was being laid for my delusions of greatness. As the Atari console and the Apple II started making inroads in my neighborhood, my parents made a great decision. Rather than by a game system, they bought a TRS-80 Color Computer and I found myself introduced to the wonderful world of BASIC.

Like many of my generation, my teenage dream was to write video games. After copying line-by-line the sample programs in the hobbyist magazines I started trying to write a Zork clone. In case you are not familiar with Zork, it was a text based 'dungeon' game with an excellent natural language processor. At the time I had no idea what NLP was, but I thought the idea of writing a choose your own adventure type game would be cool. Mine was obviously less sophisticated. Rather than typing in your actions or queries it presented a narrative and then a few options from which you could choose.

My game authoring career came to a quick end one Sunday morning. After several hours of coding I went to save the program to a cassette tape. Ten minutes later, after saving and restarting, I tried to read my program from the tape and nothing. I yanked the tape out of the recorder and threw it across our family room into my bedroom. Then I walked in there and slammed the door so hard it broke and my dad had to come down and jimmy it for me to get out.

In high school I found myself interested in the electronics courses, and did a little pc board design, built an audio amplifier and some other neat little electronic gadgets. But other than Parsec on the home computer and Tempest in the entryway of the local grocery store, my interaction with computers was pretty slim until I entered college...

Monday, October 08, 2007

On Your Left

The Jordan River Parkway is a fairly typical urban greenway with a paved shared-use trail. It gets a lot of use by walkers, runners, skaters and cyclists, especially on the weekends.

A while back I took a group of scouts 'hiking' on the parkway and before our hike we had a discussion about courtesy and behavior on the parkway. We talked about yielding the right of way, walking single file, keeping the noise to a respectful level, etc. For almost the entire 10 mile hike we had no conflicts between trail users.

Then near the end something interesting happened. We had been passed by several cyclists, most of whom slowed, and announced themselves either vocally or with a bell. Now I ride the parkway all the time, and I know how annoying it gets to be saying "On your left." every two or three minutes, especially when the pedestrians are wearing headphones and can't hear you anyway. But I still try to do it.

As we passed under a bridge, one of the scouts up ahead of me picked up a piece of rope or twine and began swinging it around. You can probably guess what happened... Shortly thereafter a cyclist on a fairly nice bike, kitted out, zoomed past me. Why do I say zoomed? Because not only was he traveling the fastest by far when compared to all the cyclists who had passed us; he was moving so fast that I could not yell the scout's name before the cyclist overtook him. The cyclist was promptly, but quite accidentally hit in the face with the swinging rope. He turned and expressed his displeasure in an understandable, but I though excessively vile manner and rode up the trail.

I told the scout that he shared the blame for the accident, and shouldn't be swinging the rope. I also told him that it wasn't entirely his fault, because the cyclist was traveling too fast while overtaking, and did not announce himself.

I had a chance to express that opinion to the cyclist as well; he came riding back the other direction a few minutes later. I told him as politely as I could that the scout was sorry, but that by simply announcing his presence, which is common courtesy if not legally required, would have saved the scout the embarrassment and him the pain. Unfortunately I think my comments fell on deaf ears.

Friday, October 05, 2007

Searching for more than my keys

I typically find myself using the Window Search all the time. It does a great job of finding files and documents by name, filtering the criteria by date or size, and I like having results in the graphical file explorer where I can sort by several attributes. If it could find my keys at 5:30 in the morning it would be the primary function on my laptop.

My recent experience with Search has been less satisfactory. I recently inherited several thousands of lines of HTML, asp, VB 6 and JavaScript code in hundreds of files that makes up a major portion of my employers web site. At the same time our database admins rolled out a new version of one of our primary databases that serves as a back end for several desktop and web applications. Unfortunately the web site wasn't checked thoroughly for dependency on the old database, nor compatibility with the new one. (That should be a topic for a whole separate stream of posts.)

Needless to say, this week has been one composed of frantic scrambling trying to figure out what was up and what was broken, and why. In a little bit of serendipity, I found that most of the applications used one particular configuration file in which was stored the connection information tagged with a label like 'ORA_CONNECT' (Nice job, previous developers.) When an application needed to connect it would call to the root config file and get the connection information by passing the label. Pretty standard stuff.

So, my first thought was to use the Windows Search to see if I could find all files that contained the string "ORA_CONNECT". So navigated to the root directory, fired up search, entered the parameters and waited with eager expectation after clicking on search. A long list of files came up, but shockingly it did not include the three files I had looked at by hand to determine what connection was being used.

Puzzled, I set up a little test. I created a directory with two subdirectories. In the root I put a text doc, and in the subdirectories I placed an HTML, ASP and MS Word file. Each file included text that contained the string ORA_CONNECT.

I ran search on that directory, and it found everything EXCEPT the use in the ASP page. I even went back and made sure that the All Files and Include Subdirectories options were enabled. Clearly Search was not reliable.

What will I FIND

I IM'd a co-worker about what I was tying to do, and he sent me a string using the FIND command. Ah Ha! Good old find! I had forgotten that since the last time I spent hours writing MS-DOS 5 batch files years ago. Oh No! Bad FIND...


As you can see from the image, access was denied to the subdirectories. FIND does not recurse. I knew I could write a batch to recurse the directories, and save the output to a file, etc, etc; but who has that kind of time?

FINDSTR /i /s ss64.com *.*

It was then that I remembered reading somewhere that there was a 'find' in windows that supported regular expressions like grep. I quick check of my links turned up the excellent site ss64.com - a command line reference site for SQL Server and Oracle, which just happens to have an XP/NT section.

The page on the FINDSTR command had just exactly what I needed:


Check out the command reference on ss64.com for other options, like printing the line and line number that match, and outputting the results to a text file.