Site Network: Personal | Professional | Photography

Technical Blog

This blog will contain content related to Java, Seam, Security, my sites and projects, as well as other technical subjects I am interested in.

Comments and questions are welcome!

Startup School 2008 - Friday

Monday, April 21st, 2008

I'm splitting my post about my trip to Startup School this past weekend into two posts, as there is too much to put in one post.

On Friday afternoon, my wife drove me to the airport, where I barely caught my Virgin America flight to San Francisco. This was my first flight on Virgin America, although I had flown Virgin to London a couple of times before. I had booked first class seats for the trip, as they were barely more expensive than coach. The Virgin America First Class is AMAZING. It's the nicest First Class I've been in, with the possible exception of when I flew to Australia on Quantas. The seats were huge, comfortable, and I could stick my legs out straight in front of me, and there was still 8-12 inches between my pointed toes and the seat in front of me. The chair itself is power adjusted, like my car, which is nice, and has a built-in massager. There is an overhead reading light, and a bendable LED snake-light that comes from behind the seat for more focused light.

The Virgin RED entertainment system is very impressive. There are large touch screens which fold out of the arm rest and allow you to browse an extensive list of live TV channels, on demand TV shows, on demand Movies, a large MP3 library (including some great electronic music I wasn't expecting to find there), games, and more. On the way down I listened to some of the music, and on the way back I watched an anime movie.

The food was excellent. They offer a collection of tapas-like appetizers which were very good. For my dinner I choose a grilled vegetable ravioli with pesto sauce which was absolutely restaurant quality. Service overall was great.

I arrived into SFO on-time and was met in the terminal by my driver, who whisked me down to Palo Alto to the Westin I was staying at. The hotel was nice, and my room was great. However, they didn't offer shirt pressing or emergency laundry services. Also, no ATM in the hotel, and if you want a cab you have to walk over to the next hotel, their sister hotel the Sheraton, and try to snag one there instead. I unpacked, and then grabbed a cab to head to the pre-StartupSchool meet-and-greet at Y Combinator that evening. I arrived around 8:30, and the place was PACKED. There were hundreds of people there, all talking to each other, which filled the main room with a surreal buzz.

I grabbed a bottle of water, and made myself a name-tag. I didn't know a soul there, and I'm naturally somewhat introverted at large noisy gatherings like this, so I was a little worried. However, the great thing about this event was that virtually everyone else there A) was in tech, and B) didn't know many if any other people there. When everyone has a common ground (tech), it's easy to meet new people and join conversations. "Oh these people are talking about relative strengths and weaknesses of common databases? I can totally contribute to that conversation!"

I talked with a ton of people and must have given out about 40 business cards. I eventually ran into Paul Tyma, the owner of Mailinator, another temporary e-mail service, similar to 10MinuteMail. Mailinator was around first, so I'm the knock-off:) I actually never even looked to see if any sites like that existed before I built 10MinuteMail. We considered having a knife fight to settle which site was better, but opted instead to hang out and chat for a while.

Some other people/sites I met that night include David Parkinson and his EmptySpaceAds, Tim Robertson, Travis Cross and his OfficeTone, and many many more. Everyone I met was great.

As the last CalTrain left, and the crowd had thinned out considerably, I ended up heading over to Google with Paul, who took me on a late-night tour of the Google HQ.

Google is amazing. Very cool visualization tools, great digs, kitchens and food everywhere, laundry, mailing, etc... Every aspect of the building just screamed "We take care of our employees". I know there's lots of cynicism about many of those perks being there to "keep people working longer", but frankly the whole feel is about making the employee's life easier and less stressful, not trying to grind them up. All the free stuff is great, and of course every company needs a ball pit. This tour was definitely a highlight of my trip.

I finally made it back to my hotel, and fell asleep around 1 AM.

Why I Host My Own Websites, Mail, Files, etc…

Monday, February 25th, 2008

I read several "Web Worker" blogs, tech blogs, productivity blogs, etc... Almost all of them have touted the virtues of using something like Google Enterprise, GMail, Basecamp, etc... instead of hosting your own site or your own mail or whatever it is. I agree, that if you lack the skillset to easily manage those things on your own, then you should go with someone else. However, I love having full control over my own mail server and web server. If I want to use a specific RBL to deal with spam or change a mail routing filter I can do it easily. If I want to build my web site using html for some pages, PHP for some, RoR for some, and Java for another part, I can. If I want to integrate in applications like Jira or Hudson to a site I host, it's easy to whip up some proxy rules in Apache, tweak some css, and it's done.

And while running things myself, on a single server, does mean that I occasionally have issues or outages, it also means that I pretty much always can identify the cause of the issue and fix it.

Ironically one of these blogs has been throwing a Google 502 error page about 1/2 the time. I assume it's hosted on the Blogger platform, but I'm not certain. Some pages load up fine, other's generate the 502 with the image below, and sometimes they load up fine if I hit reload a few times. I'm sure Google will fix it at some point, but until then the blog author is stuck with a 1/2 broken blog, and no idea what the cause is, and no ability to fix it.

It may be a little more work and a little higher cost, but the piece of mind of being able to customize things to any degree I want combined with being able to diagnose and fix issues myself is well worth it.

picture-1.jpg

Search Engine Optimization

Friday, February 1st, 2008

Optimizing sites for Google rankings isn't a focus of mine, but is an inevitable factor that must be addressed when building any site. I'm no SEO expert, then again, neither are half of those who claim to be.

The best thing you can do is to have your site be real, be useful, be focused on a specific topic or niche, and make sure links to it show up on other relevant sites.

A simple way to get those links is to make your site's URL part of your signature, and post HELPFUL posts on relevant forums, blogs, etc... Be engaged in other communities who serve a demographic similar to your site's ideal demographic. Become a contributing and trusted member. Your posts will drive the best type of traffic to your site.

As someone who uses Google to find content 1,000 times more than I use Google to get traffic to my site, I am firmly against gaming the system, link farming, spam, google bombs, or anything that drives down the signal-to-noise of search results. But there are steps you should take to ensure your site shows up as good signal where it should.

1. Provide free information. Even if you're an e-commerce site, provide free product information, reviews, specifications, research, forums, etc... People tend to research online before they buy. If they do their research at your site, they're more likely to buy from you because by providing helpful, ideally unbiased, information free of charge, your site will be more trusted. You will also end up with more external sites linking to your helpful free information, than would have linked to your Buy Me Now page. Useful information is valuable, and is referenced far more often than a commerce only page.

2. Ensure the information is visible to the Search Engines. Content in images, Flash, Ajax loaded data, sometimes iframes, etc... is not visible to search engines. If you must present information that way, ensure the same information is available via plain html. You can use javascript to load Flash over html for instance. Test your site using a text-based web browsers such as lynx or links. Make sure your site is structured well, has all your content available, and "works".

3. The Title tag: should be the first tag within the head tag. Should be about 9 words. Keywords should be toward the beginning. Do not repeat words. It should be readable to a person and make sense. It should be unique for each page.

4. The Description tag: should be the second tag within the head tag. Should be about 16-20 words. It should be made up of complete sentences, with keywords toward the beginning. It should be readable to a person and make sense. It should be unique for each page.

5. The Keywords tag: should be the third tag within the head tag. Should be 30-50 words (assuming they're all relevant). Should be in short phrase form, separated by commas. Capitalize all words. It should be unique for each page.

6. Heading content ( tags): should contain keyword phrases, but should not repeat identical phrases. Should be 2-4 words. Should structure your document just like an outline for a paper or presentation.

7. Image alt tags: every image should have an alt tag. The alt tag should be no more than 12 words long. It must be descriptive to a person and describe the image or it's purpose in the page clearly. Again, test with a text-based web browser to see the alt tags in context.

8. Links: use keywords in the URL (more on this later). The link text should contain keywords. The surrounding text should also be keyword rich, using keywords which are relevant for the target page.

9. Main Content: Minimum of 300 words. Make the first 150-200 words keyword rich. Think of it like an executive summary. Words used in your title, description, and keyword head tags should appear at least twice each within the main text. CSS and JS should be externalized so as to not obscure the focus on the text.

10. URLs should be made up of useful words, separated by hyphens. Bad: "blog2" Good: "tech-blog". Bad: "/prod.jsp?id=1342342" Good: "/mp3-players/apple/ipod/ipod-nano.jsp". Many blogging tools and e-commerce tools will create category based faux directory structures for your pages.

Try to keep these guidelines in mind while building your site and templates. In general most of these tips not only help search engines understand your site best, but also help with accessibility, graceful degradation of browsers, and general readability for your users.

I'd welcome any other tips in the comments. Or any ideas around specific products (ATG, Seam, etc...).