nav2

For discussion on any items in this blog, please consider using http://thekeel.com .

Wednesday
12Mar2008

Answering a liveaboard question

Every now and then we get some questions sent in through this website, and I like to answer them publicly, as to hopefully help out others. Check this one out (some identifiable information has been removed):

Message: Hey kids, wow you are really livin the dream. Awesome!. I'm originally from S.D. and am planning on moving home soon. I really want to purchase a boat and liveaboard. Honestly, I don't know the first thing about it, but the idea has been simmering for a couple of years now. OK, questions.....How big of a boat do I need to be comfortable for two people to live on. Can you tell me if 36' is manageable single handed or with two? Is a boat that size big enough for serious open ocean cruising? I was thinking about getting a slip in the south bay (for price and availability), what do you think? What am I realistically looking at for monthly expenses? Water fill ups? Emptying holding tank? Sailing lessons (I think I will need them). Any help you could offer would be greatly appreciated. Your boat is beautiful btw.....

  • "How big of a boat do I need?" This is a very personal question, and it's sort of like "how big of a home do I need"? Just like some people are happy living in small homes, others feel that massive ranch homes are essential to their happiness. But, since this is my blog, I'll give you my answer: 28-38 feet, mono hull. Again, there are a lot of people (many of whom are better sailors than I am) with smaller and larger boats, this is the number that I'd go with. Smaller boats are easier to manage, cheaper, more common, and more simplistic. As a boat gets bigger, so does your ground tackle, rigging, engine, etc.
  • "Is a boat that size big enough for serious open ocean cruising?" It's about your sailing skills, 100%. A larger vessel will offer you somewhat better protection, but at the same time, in the hands of a poor sailor, a big boat will work against them and turn into an uncontrollable machine.
  • "What am I realistically looking at for monthly expenses?" San Diego is probably the most expensive harbor in the United States, and Point Loma (where we are) is probably the most expensive of San Diego. South Bay is a bit cheaper, but it's still pretty brutal. Again, the bigger the boat (length overall, from barbecue to bowsprits), the bigger the tab. We spend about $1,100 a month for our slip, which includes our slip, a marina storage unit we share with some neighbors, and our electric bill. Beyond that, you can obviously dump as much money as you like into your boat. Expect some pain in the first few months, as you get hit with deposits, probably a new paint job, some needed repairs, immediate customizations you want, and most importantly you won't really be making the best financial decisions since you'll be a new boat owner (ex: buying everything from West Marine). A good estimate is that you'll spend about 10% of the purchase price of your boat, every year, on regular maintenance. It's a good rule of thumb. So for a $30,000 boat, you'll spend $3,000 on maintenance.
  • "Water fillups". Most slips have hoses on a pedestal, which is where your electricity, phone, and most likely TV connection is located.
  • "Holding tanks". Most marinas have pump out docks nearby, or roller kits you can borrow, so you can pump out in our slip if you so choose.
  • "Sailing lessons". J-World would be my choice, and a one week course will set you back $1000 or so. Also, you can look at some international schools, such as this one in South Africa. That might seem a bit extreme, but the wind in San Diego is usually "... wind variable, 10 knots or less...". If you go to a place that's notorious for rough weather, like San Francisco Bay, you'll get some really solid experience. Also, for free (and maybe you can even get paid a bit), you can sign up to crew on some boats. You'll get a lot of good experience, and a lot of them are fine with you not knowing anything: just ask the skipper before. If you do what you're told, are intelligent, and are good company, they'll usually be fine with someone without much knowledge, especially if it's an easy run.

Well, hopefully that helps, and I'm glad you find our boat pretty! Next week we're pulling the spar, and I'm getting ready to spend more than I'd like on maintenance and repairs. Gulp!

I would summarize by saying that owning a boat is a very consuming process. It will eat up your time, energy, and money. If you're not really into it, you'll begin to hate the boat: we see a lot of that down here. The important thing is to keep having fun, and balance the boat with your life. You're buying it to enjoy your life more, and it's important to always put your own happiness over the vessel. That happiness, again, is the reason you got the boat in the first place.

Sure, replacing the head wasn't exactly a blast, so you're going to have some times on the boat that are really gnarly, but that's just life. Just make sure that overall, you're enjoying things, and that you own the boat, and the boat doesn't own you. If you keep the equation balanced out properly, you won't go into a multi month hate-the-boat-a-thon that leaves you with a feeling of resentment.

To that end, I'd make sure you hang out with other boat people that have a good attitude. It's immeasurably valuable to be able to socialize with other people that are in your situation. Some of the most calming moments I've had during this adventure have been from talking to other people who are having the same problems that I am.

Good luck, and make sure you document your adventure. If I had to do it all over again, I absolutely would.

Wednesday
05Mar2008

I made the Vista plunge

First impression: damn Microsoft, you guys hit this one out of the park.

I debated installing it on my Lenovo / IBM / T60, because it's my work computer (my company's property). More importantly, no one else is on Vista, and I didn't ask any permission to do so. So, if it works, I'm just being different, but if it sidelines me for a few days and I can't get my job done, then I'm being negligent and showing bad judgement.

Lucky for me, it's working like a champ. I'm having some issues performing the updates, but I think that's because I'm trying to do installs and updates at the same time. Here's some things I've noted thus far:

  • My Cisco VPN client works. 4.8 didn't, but 5.0 did. Whew.
  • Internet Explorer 7 was built for Vista, and looks like a million bucks.
  • Microsoft made Vista look and feel very nice.
  • All the grumblings about "OMG I USED TO KNOW EVERYTHING IN XP AND NOW M$ CHANGED EVERYTHING I HATE YOU SO MUCH!!!" is hogwash. If you want to make things better, or worse, it's going to change. I think Vista changed the Microsoft operating system for the better (by far), so expect to have to learn some new stuff.
  • Within 3 hours of installing, I was back to doing my job again in Visual Studio 2008.
  • It makes a copy of all your old Windows stuff (even if you do a clean install, like I did), in a folder called C:\Windows.old, so you can go and grab all your old IE favorites, my documents, and even program files. I needed to grab my Cisco VPN profile from there, as an example.
  • The gadgets on the right are absolutely awesome.
  • My CPU, memory, and network response times are all in real time now as beautiful gauges on my sidebar.

All in all, Vista is great, and the upgrade was essentially painless. Good job Microsoft.

Friday
29Feb2008

ASP.Net Server Controls, EventHandler, and class references

This one burned about four hours to far.. hopefully someone else learns from this one.

I'm building some server controls for SharePoint. It's actually not that hard to do once you get used to doing everything in C# / VB (as opposed to having html/asp.net front end help). Try it, it's easy:

  1. Make a class library.
  2. Create a new class and inherit from System.Web.UI.WebControls.WebParts.Webpart.
  3. Override Onload(), and do a base.Page.Controls.Add( myLit). Make sure you do Literal myLit = new Literal / myLit.Text = "sdf".
  4. Do a build.
  5. Make a new website, register the DLL you just created.
  6. In the new website, put <%@ Register Assembly="NameOfLibrary" Namespace="NameOfLibrary" TagPrefix="boo" %> up top.
  7. Inside the page's form, do a <boo:WhateverClassNameYouCreatedInYourLibrary runat="server"/>
  8. Walla, you should see sdf.

Now all you need to do is complicate it. But the cool thing is that you can put pretty much anything into those classes, and you can now load them into SharePoint by dropping your library (as a .dll) into the global assembly cache (there are other deployment mechanisms as well, but the GAC is the only reasonable one for me because of various security reasons, like needing to access a web service).

Anyway, make sure that if your class (that inherits from WebPart) touches any other classes in your library, that you mark those other classes as public. I had some crazy ghost errors when it wasn't the case. No errors, just ghost problems. In my case I have another class in my library that does caching for me (exposing a bunch of properties that relate to my web service; it loads them in the cache and gets them from there if possible).

Thursday
28Feb2008

The right wing email forwards

ObamaFlag.jpgMy step father is a great guy. He did three tours of duty in Vietnam as a Marine Corps pilot. He has absolutely done his duty for God and country time and time again. We don't agree on politics, and he's now one of "those guys" who forwards all the right-wing emails around, like this one.

I don't want to carve up the legitimacy of this photo; if you want to see the Washington Post's investigation into it, have a blast.

More to the point, I suppose I just want to slam the partisan aspect of these types of pictures. It's not going to (a) ask any real questions (b) build up any particular candidate or (c) start any form of constructive dialogue. Beyond that, it's just stupid.

BushBinoculars.jpgOne of my favorite examples is the infamous binocular pictures. Essentially the President gets pushed into some position, handed some binoculars, picks them up, 500 pictures are instantly taken, and then he takes the lens caps off. I'm not sure if there's a more clear example of blind partisanship, where one side is making fun of the other side, using the exact same example.

ClintonBinoculars.jpgAt the core of the whole thing, I don't think all those GOP pundits who sent the picture of Clinton (and his binocular lens caps) around in emails had a huge change of heart when they saw Bush do the same thing. I doubt there was even a momentary flash of introspection, from anyone. Because the reason you send a picture like the binoculars, or Obama looking away from the flag with no hand on his heart, is to take a sniper shot and move away.

Maybe petty (and essentially stupid) attacks worked in the past, but I'm happy that we've got a Presidential candidate in Obama that is causing these negative ads to work for him, instead of against him.

And where even four years ago drive-by stunts like the Swift Boat Vets for Truth were in full swing, I'm glad that a more mature and educated voting base is able to look past Karl Rove hat tricks.

Wednesday
27Feb2008

Our neighbor's blog

Two other couples that we're friends with are Doug & Jenn and Randall & Jessica. We had dinner with them tonight; it's really nice to bust out the grill and hang out in the marina just kicking back, having some munchies, and talking it up. Anyway, that's their blogs, in case you want to see how some other couples are dealing with living on a boat.

Wednesday
27Feb2008

Out with the old, and in with the new ( Microsoft 2008 Suite )

Server2008.jpgFeeling like you have no idea what's in Visual Studio 2008, Windows Server 2008, or SQL Server 2008? Don't worry. No one else knows either. SQL Server 2008 isn't even supposed to be out until 2009, and who exactly is going to be running anything on production with Server 2008 just yet? Still, it's a good time to start developing with it, so you're not behind the power curve.

Here's the stuff I'm interested in:

I'd like to slam LINQ one more time, just in case you missed it. The performance of in memory querying is miserable compared to a foreach, and stacked against NHibernate when it comes to ORM abilities, LINQ-To-SQL is a joke. I'm not a Java guy, but only because Microsoft does a lot of stuff to make my life as a developer easier. That doesn't mean everything that they do makes my life better however; only some of it actually works.

Microsoft has really done a slam dunk job on certain software development tasks, like its IDE Visual Studio, and making SQL Server an amazing combination of easy and powerful. Also, the flexibility of Windows Server is amazing. I'll be upgrading to the new 2008 products because there are absolutely some advantages. But just in case you're seeing a lot of new technology that you can't quite figure out how useful it will be for you, you're not alone.

Monday
25Feb2008

NHibernate Video Tutorial

basklamp1.jpg

The video quality isn't that good, but I decided to make a little walk through on how to use NHibernate with C# / Visual Studio 2005. The same basic rules apply for VB, J#, and Visual Studio 2008. Here's what you'll need:

  • About an hour of free time, to get the whole thing setup, and let you wrap your mind around it.
  • The NHibernate reference guide, so you can go beyond this, and understand a lot of things I'm just glossing over.
  • My 70MB low quality 20 minute video, where I show you a couple of projects (download them here).
  • You'll need to download NHibernate 1.2.0 if you haven't already. Drop NHibernate.dll into a handy folder (I use C:\CompileOut for all my development libraries), and make sure you add it as a reference in your WidgetCore project.

There's a readme file in there; basically you need to generate WidgetCore.dll, and reference it in your WidgetTest project (don't forget to register NHibernate.dll in your WidgetCore library). You'll need to run the database scripts on whatever MS SQL Server database you pick, and you'll need to change the connection string to whatever it should be (i.e., not my laptop).

If anyone has any questions, please put them below as comments, and I'll respond / clean up my files as necessary. Good luck! It will take some work to get good at Hibernate, but I promise that once you do you'll be shocked at how limited your object oriented programming was before, and how much time you spent writing glue. Hibernate doesn't just allow you to not write ORM glue over and over again, it greatly enhances your potential and really uncorks object models.

Friday
22Feb2008

Flight of the Conchords

Some of my colleagues have been telling me that I needed to see these guys, so I spent some time this morning watching these while building and running a database maintenance script. It took me a few videos to get into it, but I think they're pretty funny. Especially the Jenny one.

Thursday
21Feb2008

recursion and the joys of debugging

I googled around and didn't find much on this one. Recursion is a way of iterating over a hierarchal relationship, amongst other things. It's handy when you want to do something like "go through every Human's child, and for each child, go through its children too." Or, another example might be with an employee's corporate ladder. If I wanted to find out if you work for me, I would need to go through Eric.Staff (let's say Staff is List<Employee>, and Eric is an Employee). But, for each Employee in my staff, I need to check to see if you're in their staff. And for each person in their staffs' staff, I need to check them to, etc. Because it's possible that you work for me, under numerous layers of essential middle management.

Rory and Brian were helping me through this crazy problem; I think we spent an hour or two staring at my monitor. So the nutty thing is that with recursion, if you do a "return", it doesn't actually quit the method. Well, it does, but it only quits that instance of the method that it's in. So, you can actually watch your debugger go to your "return" statement, then jump somewhere else in the method, not actually out of it. It actually did jump out of it, but again, if it's recursed in, it only terminates the one it's in.

Tuesday
19Feb2008

Guys: do the dishes; chicks dig it.

When I was younger, my mother owned a hot dog cart. Yes, a hot dog cart. We worked in Long Beach for a while, and I would sit there with her selling hot dogs and sodas. On the plus side, there were a lot of sodas in the house. On the down side, I did a hell of a lot of dishes. Big stainless steel trays, pots, and pans. Every night, those things had to sparkle, because the health inspector could (and did) come by. Beyond the regulatory aspect, it's kind of important to have sanitary conditions when you're making food.

In the Navy, I also did dishes. When you first report onboard your submarine, you "crank", which means you are the lowest of the low, working grueling hours in the galley, doing the most disgusting and low-on-the-respect-meter type of work. In boot camp, I spent a good portion of my "service week" in the galley, working in the deep sink. Hell on earth.

But apparently it all paid off because chicks really dig guys who do dishes. I even remember doing dishes at Charlotte's place when I went over there on one of our early dates; maybe it helped!