Massage

During my stint in Baltimore, I took a (free) massage class… Actually, it was 8 classes at the Loyola student health club and I ended up being the only guy in them… this had two major bonuses.  The first is obvious, all of my partners were good looking girls.  The second advantage was that because I could take my shirt off, the instructor always demonstrated on me.  So I always got double massages per night. 

The method that I learned was Swedish massage.  The massage strokes are generally pretty gentile and most of the time, they flow in the direction of the heart.  The core strokes are effleurage, petrissage, friction, tapotement, compression and vibrations.  We also experimented with oils too.  Overall, I have to say that the experience was great.  I would do it again anytime, if given the opportunity.  But as always, I prefer to receive them over giving them.

MSI property formatting options

We have to write an install for our product, so I’m rediscovering the spotty MSI documentation again.  I just wanted to link to this page for formatting options for properties.

For example, if you want to get the directory that the component “web_core” got installed to, you can use [$web_core].

If you would like to get the path to a specific file, you would use something like [#fileid].

There are more formatting options available, but I tend to use these the most.

The Deck – A nice marketing strategy

A List Apart, 37signals, Daring Fireball,
and Coudal Partners are implementing a very interesting ad campaign.  They are selling ad space on all of the sites and calling the service the Deck.  There is limited space for ads (6 ads per month) and each ad gets rotated across all of the sites.  Now the way I see this, is that it is a benefit to all involved.  The Deck provides specific advertising of products/services that the owners of the 4 sites pre-screen and deem useful.  This will maintain a high quality for the ads.  The ads will be very targeted to the people who are visiting the sites.  This opposes Google’s ad method that targets each specific page differently across a website, rather than targeting the type of people who visit that site.

Now, along with giving the four sites an immediate monetary bonus, an ad campaign like this should also draw more visitors to each site.  I know it that it worked for me.  I hadn’t heard of Daring Fireball or Coudal Partners, but because I respect both A List Apart and 37signals, I will probably start visiting the other two sites.  Actually, I’ll subscribe to their feeds and determine if they’re worth reading after a trial period.

Another interesting note about this method is that it does not guarantee the number of clicks per ad.  In fact, their method is to not charge by how many clicks you’ll get.  Rather, they’re basing the success of the ad program off of the number of page views that the four sites bring in.  From the statistics that they claim alone, you can be sure that your ad will be seen by the people that crowd that you want.

Anyway, this seems like a great example of taking advertising into your own hands.  I’m sure this will be much more successful for each company, than revenue from a mass advertisement system like Google ads.  Plus people are more likely to respect ads put on a site like this.  I’m curious how long it will take them to integrate some sort of ads to the feeds…

Using AJAX to prefetch large files

I have been thinking of how to increase perceived performance for web
apps lately and came up with a nice (and simple) optimization for large files.  I’ll
use an image gallery as a conceptual way to get my point across.  I’m
not currently aware of any image galleries that do this, but I think it
would improve the user experience.  Most (if not all) image galleries
have a main interface involving multiple pages of images.  For this
example, we’ll consider that the user is currently viewing page 1.  The
basic premise is that by using AJAX, we’ll load the images for page 2
into a hidden div on the page.  The main reason for using ajax is so
that we can do all of the prefetching after the page has finished
loading.  That way, we don’t hurt the performance of the visible page
in any way.  The browser will cache the images and when the user
decides to view page 2, the images will not have to be re-downloaded.

For this example, I will use the prototype javascript library to handle
some of the details of the AJAX request, etc.  If you prefer to use
your own library to accomplish the same thing, you wont hurt my
feelings 🙂  Also, keep in mind that this is just a proof of concept and could be modified for much more complex use cases. 

In order to allow the current page to be downloaded and processed as
normal, I hook the load event for the current window.  This gets fired
after the page has finished loading, so the user will be able to view
and interact with the page before we make the AJAX request to get the
next group of pictures.  The result is that downloading the pictures for the next page in the gallery is transparent and doesn’t affect the user experience.

    <script language=”javascript” type=”text/javascript”>

        function PreLoadImages()
        {
            new Ajax.Updater(‘LoadImagesHolder’, ‘/GetImagesService.aspx?PageId=2’,  {asynchronous:true});
        }

        Event.observe(window, ‘load’, function() { PreLoadImages()});
    </script>

The html that gets returned from GetImageService.aspx is essentially just <img> tags.  The previous code block inserts the returned html into a div with an ID of LoadImagesHolder:

    <div id=”LoadImagesHolder” name=”LoadImagesHolder” style=”display:none;” > </div>

So putting it all together, the main page would look like the following.  For sake of space, I omitted the main html representing the image gallery.

<html>
<head>
    <script src=”prototype.js” type=”text/javascript”></script>

    <script language=”javascript” type=”text/javascript”>

        function PreLoadImages()
        {
            new Ajax.Updater(‘LoadImagesHolder’, ‘/GetImagesService.aspx?PageId=2’,  {asynchronous:true});
        }

        Event.observe(window, ‘load’, function() { PreLoadImages()});
    </script>
</head>
<body>

<!—  *****************
      ** The main image gallery html would go here
      ***************** —>

    <div id=”LoadImagesHolder” name=”LoadImagesHolder” style=”display:none;” > </div>
</body>
</html>

The other hidden bonus to this method is that it works with all browsers that support AJAX. 
I have tested and verified it with Firefox 1.x and IE 6.x.  So anyway, I hope this helps someone make the web seem faster.

My dotcom predictions for 2006

Fun… According to this, these are my 2006 predictions:

Last year I made several predictions that now seem ridiculously round.
But a few ideas were pretty close. I’ve got a feeling that 2006 will be
a big year, and here are some of the reasons why:

  1. A Mt View startup is going to open our eyes to some new ways that
    XUL can influence culture. Make will pick up on this and run several
    cover stories on the founders.
  2. martin fowler will be in the spotlight for his decision to
    support xml. This will upset Riding Rails, and the blogosphere will
    react funkily. The noise will quiet before the end of the year and it
    will all be forgotten soon after the shock.
  3. ebay will see their stock skyrocket after their online
    auction business starts taking off. We’ve seen it coming for a while
    now, but 2006 will be the year it really kicks into gear.
  4. Either google or yahoo will seek to expand their paid online
    advertising business by acquiring 37signals. FM Media will be
    overlooked in the process, and they will see a management shakeout
    later in the year.
  5. One of the big leaders in the pencil manufacturing industry
    will wake up to the opportunity in the Internet and the Web 2.0 trends.
    After months of speculation, they will make a key acquisition that will
    shake up the landscape for years to come.

Setting up a LLC in Wisconsin

I setup a LLC this past year and after seeing this article for Illinois, I figured it would be worth describing the steps for how to set up a Limited Liability Company in Wisconsin.  I am not a lawyer and I’m just providing this as information.  Please consult a lawyer and or a CPA before following these steps.

  1. For a good starting point, it’s worth looking through the docs on this site.
  2. File an Articles of Organization (Chapter 183) with the Wisconsin Department of Financial Institutions.  I did mine using an online form and it only cost $130.
  3. After that has been processed, it was determined that I should get an Employer ID Number (aka. EIN or Tax ID #).  Among other things, this is so that I could open a bank account in the name of the business.  Again, I used an online form (SS-4) to get my EIN.
  4. There are several options for the entity type with common options including sole proprietorship, disregarded entity, or partnership.  Again, it’s worth asking your CPA or lawyer for their advice on that.
  5. Now I opened my bank account for the business.  In general, banks require the Articles of Organization and EIN in order to open up an account.

That about sums it up.  After all of that is taken care of, it’s time to work on generating some income 🙂