Raible Designs <a href="">Matt Raible</a> is a UI Architect specializing in open source web frameworks. <a href="">Contact me</a> for rates. 2009-07-01T09:06:52-06:00 Apache Roller (incubating)> on an office in downtown Denver. It's easy to market to companies in Denver, but if I land a gig here, there's a good chance the client is going to want me in the office everyday. That leaves me wondering: what's the best way to market to companies outside of Colorado? My ideal contract is one that 1) allows me to work remotely and 2) only requires me to travel once or twice a month. <"> "Matt contributed dramatically to the engineering practice at Evite, both directly and indirectly. Directly, he lead the effort to define and prove a successful new web UI architecture for us. Indirectly, he brought senior engineering talent into the organization, and energized the existing team. We are significantly better positioned to deliver on our Product goals as a result of having worked with Matt. I'd love to work with him again someday." <span style="text-align: right; color: #666; display: block"> <em><a href="" title="View David's Profile">David Thomas</a>, VP of Technology, Evite</em> </span> </p> <p class="quote" style="color: #666"> "Matt has unique abilities in the realm of software engineering. He brings great energy, an amazing breadth of knowledge in UI technologies, along with a can-do attitude that's refreshing to interact with. He is a great leader and communicator. In addition, Matt can apply his deep understanding of the technologies in question pragmatically to the engineering problem at hand, leading his team in execution and delivery. He's an excellent technical visionary to complement any team." > and the ability to use GWT.runAsync() to reduce the size of your application's initial download. This week, I learned how to use GWT 2.0 with my GWT 1.6/Maven project. Below are instructions on how to build and use the latest GWT with Maven. <">mvn install:install-file -DgroupId=com.google.gwt \ -DartifactId=gwt-user -Dversion=2.0.0-SNAPSHOT \ -Dpackaging=jar -Dfile=build/lib/gwt-user.jar mvn install:install-file -DgroupId=com.google.gwt \ -DartifactId=gwt-servlet -Dversion=2.0.0-SNAPSHOT \ -Dpackaging=jar -Dfile=build/lib/gwt-servlet.jar mvn install:install-file -DgroupId=com.google.gwt \ -DartifactId=gwt-dev -Dversion=2.0.0-SNAPSHOT \ -Dclassifier=mac -Dpackaging=jar -Dfile=build/lib/gwt-dev-mac.jar mkdir temp tar -zxf build/dist/gwt-mac-2.0.0-SNAPSHOT.tar.gz -C temp cd temp/gwt-mac-2.0.0-SNAPSHOT zip -0 gwt-mac-2.0.0-SNAPSHOT.zip lib*.jnilib cd ../.. mvn install:install-file -DgroupId=com.google.gwt \ -DartifactId=gwt-dev -Dversion=2.0.0-SNAPSHOT \ -Dclassifier=mac-libs -Dpackaging=zip \ -Dfile=temp/gwt-mac-2.0.0-SNAPSHOT/gwt-mac-2.0.0-SNAPSHOT.zip <"> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>1.1</version> <configuration> <runTarget>org.appfuse.gwt.mvc.${entry.point}/${entry.point}.html</runTarget> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>test</goal> </goals> </execution> </executions> </plugin> </pre> </li> <li>Modify your dependencies to match the ones below. With the Codehaus plugin, dependencies are much more concise. <pre class="brush: xml"> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-servlet</artifactId> <version>${gwt.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwt.version}</version> <scope>provided</scope> </dependency> <"> To obtain a SOYC report for your application, there are two steps necessary. First, add -soyc to the compilation options that are passed to the GWT compiler. This will cause the compiler to emit raw information about the compile to XML files in an -aux directory beside the rest of the compiled output. In that directory, you will see an XML file for each permutation and a manifest.xml file that describes the contents of all the others. >java -Xmx1024m -cp /Users/mraible/.m2/repository/com/google/gwt/gwt-soyc/2.0.0-SNAPSHOT/gwt-soyc-2.0.0-SNAPSHOT.jar:/Users/mraible/.m2/repository/com/google/gwt/gwt-dev/2.0.0-SNAPSHOT/gwt-dev-2.0.0-SNAPSHOT-mac.jar com.google.gwt.soyc.SoycDashboard -resources ~/.m2/repository/com/google/gwt/gwt-soyc/2.0.0-SNAPSHOT/gwt-soyc-2.0.0-SNAPSHOT.jar -out target/soyc-report target/extra/org.appfuse.gwt.mvc.MVC/soycReport/stories0.xml.gz target/extra/org.appfuse.gwt.mvc.MVC/soycReport/dependencies0.xml.gz target/extra/org.appfuse.gwt.mvc.MVC/soycReport/splitPoints0.xml.gz<"> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <configuration> <executable>java</executable> <arguments> <argument>-cp</argument> <argument> ${settings.localRepository}/com/google/gwt/gwt-soyc/2.0.0-SNAPSHOT/gwt-soyc-2.0.0-SNAPSHOT.jar:${settings.localRepository}/com/google/gwt/gwt-dev/2.0.0-SNAPSHOT/gwt-dev-2.0.0-SNAPSHOT-${platform}.jar </argument> <argument>com.google.gwt.soyc.SoycDashboard</argument> <argument>-out</argument> <argument>target/soyc-report</argument> <argument>-resources</argument> <argument> ${settings.localRepository}/com/google/gwt/gwt-soyc/2.0.0-SNAPSHOT/gwt-soyc-2.0.0-SNAPSHOT.jar </argument> <argument>${project.build.directory}/extra/org.appfuse.gwt.mvc.MVC/soycReport/stories0.xml.gz</argument> <argument>${project.build.directory}/extra/org.appfuse.gwt.mvc.MVC/soycReport/dependencies0.xml.gz</argument> <argument>${project.build.directory}/extra/org.appfuse.gwt.mvc.MVC/soycReport/splitPoints0.xml.gz</argument> </arguments> </configuration> </plugin> <>When I generated a new SOYC report, the initial download size was reduced to 56,718 KB. Furthermore, I was able to see that my "Leftovers code" consisted of 63,175 KB. I'm sure there's better ways to split my project using GWT.runAsync(), but I'm happy to see I was able to reduce the initial download by 50%. <> to generate the SOYC report. In an ideal world, the gwt-maven-plugin can be enhanced to generate the SOYC report (rather than using the exec-maven-plugin). In the meantime, I think it's pretty cool that you can try out GWT 2.0 features while they're still being developed. JSON Parsing with JavaScript Overlay Types in GWT Matt Raible 2009-06-24T09:52:49-06:00 2009-06-24T10:00:52-06:00 A reader recently <a href="">asked</a>:</p> <p style="color: #666" class="quote">(); }-*/; } </pre> <p>This class alone allows you to easily parse JSON returned in a callback. For example, here's an example of parsing <a href="">Twitter's User Timeline</a> in my <a href="">OAuth with GWT</a> application. </p> <pre class="brush: java">.</p> <pre class="brush: java">>, Friday night was wet and Saturday wasn't much better. Our friends, Jenny and Jeff, left early Saturday morning and arrived in time for a couple hours of rain. At 3:00 on Saturday afternoon, it cleared up and was beautiful for the rest of the weekend. <> in Southern Colorado. The last time I went camping at the Sand Dunes was before Abbie was born, so I'm very much looking forward to it. It's really an amazing place that's somewhat indescribable with words. It's one of those places you have to see to believe.</p> <p style="text-align: center"> <a href="" title="The Great Sand Dunes"><img src="" width="500" height="375" alt="The Great Sand Dunes" style="border: 1px solid black" /></a> </p> <p>The funny part of this year's trip is it's already looking like we might have some good adventures. My dad was supposed to fly into Denver today at 3:00. It's a 4-hour drive to the dunes, which puts us arriving around 7:30. That's probably enough time to pitch a tent and have a beer or two. Instead, his <a href="">flight is delayed</a>. Arriving in the dark w/o a campsite seems like a bad idea, so I made a reservation at the KOA Campground in Alamosa. I'm somewhat disappointed we won't be camping at the dunes tonight, but we'll get to see the dunes first thing in the morning. <("<meta http-equiv=\"refresh\"")) { String"; <em>send()</em> method as well as utility methods to get the cookie values of the oauth tokens.</p> <pre class="brush: java"> public class ContactsRequest extends DefaultRequest { private static final Stringa message</a> to the OAuth Google Group explaining the issues I've had. </p> <p class="quote" style="color: #666">? </p> <p>I received a <a href="">response</a> with a cleaner <em>makeSignedRequest()</em>. </p> <p>To make it easier to create a robust example of GWT and OAuth, I created a gwt-oauth project you can <a href="">download</a> or <a href="">view online</a>.>. I personally worked on this feature and very much enjoyed becoming a GWT aficionado in the process. GWT's zero-turnaround feature made doing pure client-side work a lot of fun. It's definitely something I'd like to continuing doing at my next gig. </p> <p>Everyone from Evite is very happy with what we've been able to do with GWT and Grails. We have a stateless architecture and are quickly able to develop both client-side and server-side features. We've learned to scale the client by using out-of-the-box GWT components. We've scaled Grails by caching as much as possible. We serve up Ads and Analytics using the same JavaScript mechanisms that traditional server-side frameworks use. </p> <p>At the end of this month, my gig with Evite comes to an end. I'll be spending a few weeks at my family's cabin in Montana and then it's on to the next big thing. What's the next big thing? I'm not sure yet, hence the reason for writing this. If you're looking to develop a GWT application, introduce a SOFEA architecture at your company, or simply adopt some open source frameworks, I'd love to help> Unfortunately, over the past few months, we've found that both of these implementations are too heavy for our requirements, mostly because of the file size of the generated JavaScript code. For example, a feature I wrote generated a 275K *.cache.html file using GXT. After determining that was too slow to give users the initial "pop", I re-wrote it <em>without</em> GXT. After a day, we had an application with *.cache.html files of 133K. Yes, that's over a 50% reduction in size!<a href="">*</a></p> <p> Because of these findings, we are proceeding with the core GWT library from Google and adding in new components as needed. It is cool to know you can make a UI "pop" with GWT, as long as you stick to the core - close-to-the-metal - components. For those applications that can afford an initial "loading..." state, I'd definitely recommend looking at GXT and SmartGWT. <> <em>work</em>. I've never met someone who hated working for <em>The Man</em> more, yet had such a strong work ethic.</p> <p.<>. </p> <p>The thing I remember the most is his perseverance. One winter when he couldn't find work, he <a href="">built a barn</a>. From scratch, mostly by himself.</p> <p.</p> <p.<" /><. <img src="" class="smiley" alt=":-D" title=":-D" /> Optimizing a GWT Application with Multiple EntryPoints Matt Raible 2009-03-25T16:00:37-06:00 2009-03-25T16:00:52-06:00 Building a GWT application is an easy way for Java Developers to write Ajax applications. However, it can be difficult to release a GWT application to production before it's finished. One of the most important things I've learned in Software Development is to get a new application into production as soon as possible. Not only does getting it from dev → qa → prod verify your process works, it also can do a lot to test the viability of the new application. </p> <p>One of the biggest issues with GWT applications is size. The project I'm working on compiles Java to JavaScript and creates ~570K *.cache.html files (one for each modern browser). These files end up being around 180K gzipped. I believe this is an OK size for an entire application. However, if you're going to <em>release early, release often</em> with GWT, chances are you'll just want to release one feature at a time. </p> <p>When the first feature was completed on my project, the *.cache.html files were around 300K. Rather than using branches to release to QA and UAT, bug fixes and new features were developed on trunk. Unfortunately, the QA and UAT process took several weeks longer than expected so by the time the feature was ready to release, the *.cache.html files had grown to around ~570K. The reason the file had grown so much was because it included all of the other features.<>One downside to doing things this way is it's possible to create a WAR that has the same name and different features. Surely the Maven Overlords would frown upon this. Since this is just a temporary solution to release features incrementally, I'm not too worried about it. A possible workaround is to create different WAR names when a feature's profile is activated. I believe the true "Maven way" would be to make the "kitchen sink" application into a JAR and have several WAR modules with the different EntryPoints. Seems a bit complicated to>= </pre> <p>To enable history support in this application, I implemented <a href="">HistoryListener</a> in my EntryPoint (Application.java) and added the following logic to initialize: </p> <pre class="brush: java"> //(); </pre> <p>In this example, HistoryTokens is a class that contains all the URLs of the "views" in the application.</p> <pre class="brush: java"> public class HistoryTokens { public static final String); } } <>, this quickly presented a problem of how to get my laptop to/from the office. I decided to go for the "no home computer" about half the time and it was a fairly pleasant experience. It's hard to stay up late and hack away on open source when all you have is an iPh> -Xms512M -Xmx768M -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC. </> Obviously, that kind of manual would be very useful for readers who are starting their 'adventures' with web applications, as it would facilitate their choosing the best framework for their particular application. The manuscript would offer a comparison of the most popular solutions (CakePHP, Symfony, Zend Framework, TurboGears, Django, Struts, Ruby on Rails) and demonstrate the main differences between each. "> How do PHP books do these days? Of the list of frameworks (CakePHP, Symfony, Zend Framework, TurboGears, Django, Struts, Ruby on Rails), I think there's interest in Django and Rails, but not so much the others. And Struts sucks, so having that as a comparison is obviously going to make it look bad. I wouldn't buy it, but I'm a Java guy that's mostly interested in web frameworks that make developing SOFEA-based applications easier. In my mind, these are Flex and GWT. <br/><br/> The book I'd like to see would cover developing RESTful backends and SOFEA front-ends. RoR, Grails or Django could be used to develop the backend and Flex, GWT and X could be for the front-end. In reality, this is probably a tough book to write b/c things move so fast. If you decide to do it, I'd keep it short and sweet so you can get it to market and update it quickly. </> My nights at the gym have paid off. While beginning to remove the solar panels I lost my situational awareness and stepped backwards off of the dormer. I'm bruised, but not broken anywhere. I can forget about this bone spur and rotator cuff healing real soon because that's the side that hit first. <br/><br/> I have a natural ability to land on my elbows without breaking them when I fall; so, that's what took the brunt of it. When falling at 32 ft per sec. for 8 ft. I didn't have much time to think about it and prepare for a hard landing. I did notice after the side of my head hit the roof and my glasses and hat headed for the gutter that I was apparently doing the same. <br/><br/> As like the time I started to slide down a steep snow bank on Lion Creek working on the Trail Crew early one spring I was looking for an anchor. There happened to be a vent pipe sticking up that I was able to grab with the inside of my knee. <br/><br/> While I was wondering what I broke I heard a voice say from below "Are you alright?" It was my neighbor who was out on her porch kitty-corner from us having a cigarette when she noticed my fall from grace. I asked her if I bounced and she said that it looked like I hit pretty hard. Later, I considered myself lucky that I didn't impale myself on either of the vent pipes sticking out of the roof. <br/><br/> Figuring that I wouldn't be able to walk the next day I decided to finish the job. It went fairly well and I shouldn't have to go up there anymore; altho, the moss will need to be removed when we try to sell the place. Maybe my fears of early onset are grounded as I will be for the next month. I am sore; but can walk. Later this afternoon I'll see if I can carry any weight on my left side. >? </em> </p> <p>Below is his response:</p> <p class="quote" style="color: #666"> You have a SEP IRA but depending on how much they make and their savings objective they may also want an Individual 401K and/or Defined Benefit Plan. <br/><br/>. <br/><br/>. </p> <p> <p? This post was originally titled "FTE vs. Contract in this Economy", but it didn't seem to capture the essence of this entry. I wanted to write about why I think contracting is better in this down economy, but I also wanted to write about how you you might go about setting up your own company. Starting a company is relatively easy from a legal standpoint, and hopefully I can provide some resources that'll make it even easier. </p> <p> First of all, I believe that contracting is better in this economy for a very simple reason:</p> </p> <p style="margin-left: 20px"><strong>When you're a contractor, you're prepared to be let go.</strong></p> <p>There's really nothing like being laid off. It sucks. It often shocks you and makes you depressed. The good part is you usually get a good afternoon's worth of drinking out of it, but that's about it. Severance is cool, but let's face it - you'd much rather be employed.</p> <p>As a contractor, you're always looking for your next gig. You're prepared for the worst. You're more motivated to learn marketable skills. You're constantly thinking about how you can market yourself better. Writing (blogging, articles, books) is an excellent way to do this and I believe it's rare that FTE are as motivated to do these kinds of things.</p> <p><em>Being a contractor forces you to better yourself so you're more marketable.</em></p> <p>People's biggest fear of contracting is that they'll have a hard time finding their next gig. In my career, I've rarely had an issue with this. There's always contracts available, it's just a matter of how much you're going to get paid. Yes, I've had to suck-it-up and make $55/hour instead of $125/hour, but that was back in 2003 and $55/hour is still more than I would have made as a FTE. </p> <p>The other thing that makes me believe contracting is better in this economy is I believe companies are hiring more short-term contractors than employees. I don't know if this is because they consider employees liabilities and contractors expenses, but something about it seems to make the books look better. </p> <p>So you've decided to take my advice and try your hand at contracting. Should you setup your own Corporation or LLC? </p> <p><strong>Starting a Company</strong><br/> Yes, you should absolutely start your own company. As a Software Developer, chances are you're going to make enough to put you in the highest tax bracket. If you're a Sole Proprietor (no company), you will pay something like 35% of your income to taxes and you can be sued for everything you own by your clients.</p> <p>Should you create an LLC or Corporation? I started Raible Designs in May 1998. I started out as an LLC and later converted to an S Corp. For the first few years, I made $30-$55/hour and this seemed to work pretty well. I believe this was similar to having a Sole Proprietorship (because I was the only employee), except that I was protected from lawsuits. </p> <p>In 2001, I got my first high-paying gig at $90/hour and my Accountant suggested I change to an S Corp to save 10K+ on self-employment tax. I'm certainly not an expert on the different types of business entities, but this path seemed to work well for me. It was $50 to convert from an LLC to an S Corp. I'm not sure if you can go from an S Corp to an LLC. The beauty of an S Corp is the corporation typically gets taxed at 15%, so you can run a lot of things through your business and pay less taxes. Date nights can be business meetings, vacations can be Shareholders Meetings, seasons tickets can be client entertainment and you can write off your car and fuel costs. <> because I designed web sites at the time. Raible is a pretty unique name, so that's worked well having it as part of my business name. Googlability is important - don't choose a generic name that will make you difficult to find. Potential clients should be able to google your business name and find you easily.<>Once you've got all the documents setup, you'll want to create a bank account for your business. I'm currently using Wells Fargo and really like how software-friendly they are. Their online banking is clean and easy to use. They also support QuickBooks for the Mac. They have Payroll Services to allow you to pay your quarterly taxes online as well as setup direct deposit, but I'm not using them. <>Over the next few days, I'll post some additional advice I've received on retirement plans, deducting a home office, drawing up contracts and how to come up with a good rate. If you're an Independent Software Developer and have any additional advice, I'd love to hear it. </p> <strong>Update:</strong> I take back what I said about PayCycle. After having a couple of insufficient funds when re-activating my account in January (they were pulling from the wrong account), they've changed my direct deposit lead-time to 5 days for the next 6 months. This means I forget to create checks on time since their reminder gets sent 2 days before. Time to try Wells Fargo./> <a href=""></a>. </p> . </>. </p> <p. <a href="">Caja</a> might help to solve this. Dan believes that security will become more important and stricter to protect web users. </p> <p><strong>Scott Fegette</strong><br/>. </p> <p). </p> > <p><strong>Mike (TM) Smith</strong><br/>. </p> <p> <a href="">John Resig</a>. All this will make things less messy, especially with the help of browser vendors. </p> <p. </p> <p. <>. </p> <p><strong>Conclusion</strong><br/>.> Web Directions is held in Australia and Japan and now the US. A few months ago, they were a bit hesitant about doing it in Denver in the middle of winter. However, they've discovered our best-kept secret: it's beautiful and sunny all week. People are attending this conference from all around the world. <> on Thursday night. About 2 hours into the trip, one of our friends called us to warn us about the speeding tickets the other cars had gotten. In fact, one of the guys had gotten two! I handed the phone to the driver so he could find out where, but he had to cut the conversation short as the police car's lights started flashing in the rear-view mirror. If only they'd called us 5 minutes earlier!<> On Saturday morning, we woke up at 5 and drove 2 hours to Silverton Mountain. I didn't know what to expect at first. I had it in my mind that we'd be hiking for 5 hours and get one run in the entire day. I was pleasantly surprised to find you 1) ride the lift up and 2) hike to your run. We had a guide named "Ronbo" and our first hike took 1.5 hours. It was very steep and steep like a ladder in some sections.>We figured we couldn't top heli-skiing, so 3 of us called it a day around 3 o'clock. We did 3 runs all day and we were exhausted. A couple guys took a 4th run and the guys that didn't do heli-skiing got 5 runs in. A 2-hour drive back, some fireworks in Durango and a night of soaking at Pagosa Springs made us all very happy campers.</p> <p>On Sunday, we woke up and headed to Wolf Creek for a few hours. It was Local Appreciation Day and tickets were a mere $31! We did some hiking, found some powder and enjoyed some of the best skiing weather of the year. We hopped in the car around 2, kept the cruise control on 5-over-the-speed-limit and made it home in time to catch the Super Bowl (thanks to my DVR). <> and discovered it was 5.1 miles instead of 6. It also took me just under an hour (with a 10 minute cool down at the end), indicating an average of 11 minute miles. Yeah, that's slow. Since then, I've run most of the time I've been in town. Currently, I'm only running 3 times per week because I've found back-to-back days make me ridiculously tired.</p> <p>I do hope to make it up to 4-days per week and possibly even do a couple round trips. Why am I doing this? Part of me wants to get in better shape, and the other part is too stubborn to buy a new bike. Yes, I will buy a new commuter bike eventually. My current goal is to run until April 1st or until I lose 20 pounds, whichever comes first.</p> <p> <a href="" title="After the run home" rel="lightbox[commutejan2009]"><img src="" width="100" height="75" alt="After the run home" class="picture"/></a> The downside of running is it's easily the worst part of my day. It's the part I dread the most, especially on nights like tonight. When I left the office, it was dark and 6°F (-10°F with wind chill). Amazingly, I didn't get cold thanks to good layering. My face did end up with a lot of ice on it as evidenced by the photo on the right. I know the next couple months aren't going to be easy, but I always like a good challenge. <. My "almost slept in a snow cave" Adventure with Clint Foster Matt Raible 2008-12-27T11:58:54-07:00 2008-12-27T12:13:27-07:00 Yesterday began innocently as one of the best ski days of my life. I woke up early, drove to Eugene (Oregon) to pick up my good friend Clint Foster, then headed up to <a href="">Willamette Pass</a>. It was an Epic Powder Day with over 2 feet of fresh pow pow and face shots on almost every run. After lunch and some liquid courage, we stepped it up a notch and skied some <a href="">cornices</a> and awesome trees.</p> <p style="text-align: center"> <a href="" title="Getting ready for a Cornice Jump" rel="lightbox[willamettepasswithclint]"><img src="" width="100" height="75" alt="Getting ready for a Cornice Jump" style="border: 1px solid black" /></a> <a href="" title="Epic Powder Day" rel="lightbox[willamettepasswithclint]"><img src="" width="100" height="75" alt="Epic Powder Day" style="border: 1px solid black; margin-left: 10px" /></a> <a href="" title="Willamette Pass" rel="lightbox[willamettepasswithclint]"><img src="" width="100" height="75" alt="Willamette Pass" style="border: 1px solid black; margin-left: 10px"/></a> </p> <p>Around 2:30, our luck began to change. In our quest for untracked powder, Clint led us off the back side of Willamette Pass. There were no out-of-bounds signs or ropes to indicate this was a bad idea. The steep tree run we found was great, but our attitude changed quickly when we reached the bottom. </p> <p> With 2 feet of snow and no trail, we found ourselves trudging down a flat path that got us nowhere fast. For two hours, we slogged through the deep snow down a cross-country ski trail (there were blue signs with arrows). As we started to pass the 2nd lake (I believe they were called Rosary Lakes), we decided it was time to bite the bullet and turn around. We had no map or compass. If we kept going in our current direction, we didn't know when (or <em>if</em>) we'd get out. If we turned around, we knew it would take 4-5 hours, but at least we knew it would get us out. "And besides", Clint said, "the trail is already broken." The time was 4:30 and it was starting to get dark. </p> <p>Yes, the trail was broken, but it wasn't broken for hiking <em>sideways</em> up the mountain we'd skied down. We couldn't take our skis off because we'd immediately sink up to our waste in the snow. It was slow going, sometimes only a step or two at a time. If I wasn't sweating and breathing hard, I'd start to get cold and shiver. We were soaked on the outside from the snow and soaked on the inside from sweating. It was snowing pretty good too, so we knew we might lose our trail if we dug a snow cave and spent the night.</p> <p>The scariest part happened when we were about an hour from getting out. Clint started to cramp up and it seemed for moment that we were destined to spend the night in a snow cave. While it was his idea to take the trail, he was the reason I made it out last night. He broke trail for most of the hike out. I tried, but would get tired so quickly it didn't help much. So when he, the trail breaker, started to cramp up, it began to look grim. I don't know if it was the thought of sleeping in a snow cave or because we could see the top of the ridge, but Clint's cramps subsided and we were able to make it out. We ended up on a groomed run and had to hike another 45 minutes to get to the top of the mountain and ski down the front-side.</p> <p>As for Search and Rescue, they were looking for us, but had only recently started searching. The resort had night-skiing and it wasn't until 9:00 that anyone thought we might be missing. Clint's wife, Autumn, was on the ball and had contracted the authorities to inspire their search. We couldn't have asked for a better concerned relative. Autumn is a special person who has a way of making things happen. If we'd spent the night in a snow cave, there's a good chance she would've had the National Guard looking for us the next day. </p> <p>We made it back to the car just after 10 PM. We first started our run at 2:30 PM. From the point we turned around, it took about 5 hours to hike out. I've never been so tired after a day of skiing. We arrived back at Clint's place just after midnight after a 2-hour drive in the blowing snow and rain. Autumn greeted us with warm clothes, hot tea and the best hugs I've gotten in a long time.</p> <p>If you ever get a chance to meet Clint and Autumn, I'd highly recommend it. They're the ones who <a href="">got married in Costa Rica</a> recently. As far as skiing with Clint, that's fun too, but I wouldn't recommend following him out-of-bounds. <img src="" class="smiley" alt=";-)" title=";-)" />