The time for a better Apple TV is now

June 23rd, 2009

AppleTVWhile catching up on my RSS feeds tonight I noticed a couple posts talking about a live event Boxee was planning. At the event they ended up announcing a Windows version of the software, integration with Digg, Tumblr and MLB.tv. The last item stood out the most, it’s probably the first time that decent web video content is available on a TV connected device, and a sign of things to come.

TV-connected devices seem to be few and far between, and none of them are any good. Microsoft gave it a shot with their Media Center edition of Windows. Netflix has Roku. There’s the Slingbox, and then there’s the AppleTV. I always thought of the AppleTV as an iPod for your television, but it could be so much more. In fact, it’s barely even fufilling the iPod promise. The iPod touch has far outpaced the AppleTV in terms of innovation: Browser, Games, App Store, etc. I have an AppleTV in my living room but I never use it. There’s just nothing compelling about it for me. Sure I could hook it up to my desktop and transfer some media over, but that’s not what I want. I would much rather have access to free, on-demand programs, a decent web browser, and maybe some games.

Now is the time for Apple to truly innovate on the AppleTV. Steve Jobs will soon be returning from his medical leave of absence and he needs a new project. The iPhone was arguably the primary focus of Apple’s efforts for the past couple of years, and they’ve totally wrapped up the market: Tens of millions sold in hundreds of countries, App Store with half a million apps and over a billion downloads. The iPhone project is done, not that there won’t be improvements but the most chalenging parts are far behind. Jobs could take the AppleTV and finally deliver on the promise it set forth years ago. Maybe the project needs an entire reboot with a new name that fits, like iPod TV or even iTV. Personally, I don’t think Apple will get into the TV manufacturing business, but it wouldn’t be unheard of: Apple loves making it’s own hardware even in super competitive spaces (see iPhone).

No matter Apple’s intentions, the stage is now set. Boxee is looking to innovate and hopefully dominate in a market that has been sorely underserved. Apple is the only established player who has a chance to succeed, if they’re up to the challenge. Luckily for consumers it doesn’t matter what Apple does, the market is going to grow with or without them.

Cygwin and Maven Deploy

June 3rd, 2009

CygwinA few days ago I completed some work on the Facebook Java API open source project and I wanted to create a snapshot release with the new functionality. The Maven snapshot repository is hosted by a member of the project and it uses public/private keypair authentication. This is a fairly common setup for Maven repositories. Unfortunately, I couldn’t get the Maven deploy plugin to work.

My workstation is running Windows 7 with Cygwin, and from a Cygwin terminal I was able to ssh to the repository just fine so I knew the public/private keys were correct. However, whenever I ran the Maven deploy command, the private key wasn’t found and I was prompted for password authentication.

Maven repository authentication details are stored in a settings.xml file, that, under Cygwin, lives at ~/.m2/settings.xml. I modified this file to include a server entry for the repository and added a privateKey setting with the path set to ~/.ssh/id_dsa. Still the deploy command did not work.

The issue, it turns out, is the confusion between Cygwin, Windows and Maven. If you run the Maven command from Cygwin, your settings file will not be accessed at ~/.m2/settings.xml, and the private key path specified in that file will not be accessible. The settings.xml file is accesed at your Windows home directory when you run Maven, in my case this was “C:\Users\dabdinoor\.m2\settings.xml”. The solution is to copy both your ~/.ssh and ~/.m2 directories to a more Windows-friendly location and update the private key in settings.xml. Detailed instructions follow.

Make sure you have your private key stored in ~/.ssh/ then, at a Cygwin terminal, SSH to the machine hosting the repository:

ssh mrepo@mrepo.server.com

You will be prompted to approve the host computer, it’s signature will be added to your ~/.ssh/known_hosts file. If your private key is approved you should not be prompted for a password.

In Cygwin, copy the ~/.ssh directory to your Windows home directory, this is “C:\Users\dabdinoor” in my case. Also copy the ~/.m2 directory to your Windows home directory.

Next, edit your settings.xml file. Update the private key entry for the repository server:

<server>
...
<privateKey>C:/Users/dabdinoor/.ssh/id_dsa</privateKey>
...
</server>

Then, try running the Maven deploy command again:

mvn clean install deploy

Now Maven should be able to properly access the private key and it won’t prompt you to approve the host because it was found in the known_hosts file. Deploy should then be able to succesfully upload to your repository.

Since Maven runs as a Windows process (and not under Cygwin) it is going to look for both your .m2 and .ssh directories under your Windows home directory, not your Cygwin home directory.

log4j dynamic appender configuration

May 29th, 2009

log4j logoAt HubSpot we use log4j with all of our Java projects. It’s an excellent logging tool and for the most part makes life with logs much easier. Recently I wanted to convert a bunch of projects from just logging to file to send emails when errors were logged. Luckily log4j has an email appender (SMTPAppender) that does exactly this. You just set the threshold of event (Error in my case) and the buffer size for previous events. Say you want to get emailed the last 100 lines logged before an error, just set up an appender with a threshold of Error and a buffer size of 100, sounds easy.

The interesting part (for me) was that I wanted to differentiate emails sent on my Production servers from my QA servers. Since I always deploy the exact same package to Production and QA I couldn’t change the appender definition. The answer was to use dynamic appender configuration.

Basically, any log4j configuration can read system-level variables. You can pull the hostname of the server, or even the IP address if you want, and use that value in the appender configuration. In my case I opted to use a system variable to specify the operating environment (Production or QA in my case). Here’s an example of my appender configuration:

<!-- Email Appender sends on ERROR level -->
<appender name="email" class="org.apache.log4j.net.SMTPAppender">
<param name="subject" value="[LOG] ${app.log.environment} PasswordReset” />
<param name=”to” value=”logging@server.com” />
<param name=”from” value=”noreply@server.com” />
<param name=”SMTPHost” value=”mail.server.com” />
<param name=”bufferSize” value=”512″ />
<param name=”threshold” value=”ERROR” />
<layout class=”org.apache.log4j.PatternLayout”>
<param name=”ConversionPattern” value=”%d [%t] %-5p %c - %m%n” />
</layout>
</appender>

If you are using Tomcat to run the Java application, set the system variable in the  bin/catalina.sh file. Just add or update the JAVA_OPTS variable like this:

JAVA_OPTS="-Dapp.log.environment=QA"

There turned out to be a couple of tricky bits before I was able to get this working. The first was that the use of system variables to dynamically configure Appenders doesn’t appear anywhere in the log4j documentation. I managed to figure it out with excessive Googling and putting together pieces from all the sources. The second tricky part is that the Appender threshold doesn’t really matter. In practice, the Email Appender will only fire off a message when an event of Error-level or higher (Fatal)  is logged. For instance, you can not set an Email Appender to send messages on Info or Debug level events.

Overall, log4j dynamic appender configuration is powerful and super useful, hopefully this post can help others avoid the trouble I had getting it set up.

Obscure Google Chrome tips

May 20th, 2009
Chrome's Edit search engines screen

Chrome's Edit search engines screen

I’ve been a devout Google Chrome user since the day it came out. Over the months that I’ve logged using Chrome, I have picked up a few interesting tips that I thought I think are worth sharing:

1. Chrome Channels: You can actually switch Chrome over to a Development or Beta channel in order to get the newest releases of the browser. Often the new releases are faster and have new features like Bookmark Manager (explained below).

2. Bookmark Manager: When Chrome launched many users lamented the lack of bookmark management. However, if you switch to the Beta or Developer channel you get access to a full-featured bookmark manager.

3. Switch Tabs: Press Ctrl+(a number key) to select that tab. Pressing Ctrl+5 jumps to your fifth tab. This only works for tabs 1 through 9.

4. Close Tabs: If your mouse or trackball has a middle button you can click it anywhere on a tab to close it. No need to click the X. This is pretty standard behavior in tabbed applications, but I never knew it until I got a mouse with a middle button.

5. Custom Search Engines in Omnibar: You can easily edit or add Omnibar search engines. To add a new one, just right click on the Omnibar and select “Edit search engines.” Then look at the list, you might already have an entry for the website you want. If not, click “Add” and provide a Name, Keyword and URL. The Name is just a label, it doesn’t matter. Keyword is how you want to access this engine, if you choose keyword of “alpha” then anytime you type “alpha” and a space in the Omnibar it will start a search on that engine. The URL is just the action of the search engine, with “%s” substituted for the search term. For example, this is the search URL for Wolfram Alpha: “http://www.wolframalpha.com/input/?i=%s”. When you open a blank tab you’ll see a “Searches” section on the right side of the page, it will contain quick access to the search engines you frequently use.

6. Keyword Bookmarks: This is similar to adding custom search engines, but doesn’t require the “%s”. If you want to access a website quickly by only typing a few character shortcut, you can specify a keyword. For example, you can create a shortcut to Twitter by typing just “tw” in the Omnibar. To add a new shortcut, right-click on the Omnibar and select ”Edit search engines” and add a new entry with your chosen Keyword and URL.

Some things I am looking forward to revisited

May 19th, 2009

Almost exactly a year ago I wrote a post covering a handful of items that I was looking forward to. With a year’s worth of new perspective I figured I would revisit each item and update my thoughts. My original comments from last year are provided in block quotes below.

Windows 7 (Sometime in 2009)

I hate Windows Vista. Barely a day goes by that it doesn’t make my technologogy-saturated life more difficult. So I’m really looking forward to the next major version of Windows. I hope that they took time to address all the issues from Vista. Of course this is Microsoft, so that’s probably hoping for too much.

Who could have predicted that Microsoft would actually get a Windows 7 release candidate finished on schedule? Well they did and boy am I glad. I have been running Windows 7 RC on my primary work computer for a few weeks now and I’ve been really pleased. W7 is everything that Vista should have been: It’s fast, intuitive, stable and has some remarkable productivity enhancements. For the first time in years I am not a disgruntled Windows user.

iPhone version 2.0 (June, 2008)

Although I don’t own an iPhone, I absolutely adore them. I would have bought one the day it was released (June 29th, 2007) if the AT&T network weren’t part of the deal. So I am very excited to see what happens with version 2. Will it have 3G, a new design, come in black and white? Probably all of those will happen, but as with most Apple product announcements I love being blindsided by some great features that nobody has dumped on a mac rumor site.

Version 2.0 of the iPhone was not much of a surprise. It was announced at the end of June exactly as expected and the feature set was nearly everything that was predicted. I still love the iPhone yet I won’t buy one because of the network. There’s just too little incentive to move to AT&T when I have Verizon. Hopefully I’ll be able to get a Verizon iPhone in 2010 when the AT&T exclusivity deal expires.

Facebook profile redesign (June, 2008)

I’m excited to see such a major social application unwind the clutter and put good design ahead of customization. I hate MySpace more than anyone, mostly because of the unruly profile pages. Facebook is making a preemptive strike against clutter and moving all the disruptive junk into separate pages or tabs. The timeframe on this one is a little speculative, but the screenshots have been available for some time and release is imminent.

As it turned out, I got to see two major Facebook redesigns in the last year. The first was exactly what I expected, a clean-up of sorts for profile pages. It killed the clutter and I thank them for that. In 2009 we’ve seen a major revamp of the home page with introduction of the Stream, bringing Facebook into spitting-distance of Twitter and FriendFeed.

24 season 7 (January, 2009)

I’ve been on the 24 bandwagon since the first episode, and I miss how entertaining the first seasons were. I think the show was a victim of it’s own success for a few seasons but I’m expecting a return to form with season 7. The writers strike, combined with a major re-working of the plot caused the 2008 season to be scrapped. With all the extra time the writers have had, I think season 7 could be one of the best yet.

I was looking forward to 24, but as part of my 2009 new years resolutions I wanted to watch less TV and 24 didn’t make the cut. I missed the pre-season event “Redemption” and then missed the Sunday night premier of the new season. Since I was so far behind I never even tried to catch up. The season just wrapped up last night and from what I’ve read the finale was a dissapointment. I might watch the season on DVD next year but probably not.

Restaurant Review: Oleana

April 29th, 2009

OleanaLast Friday I was lucky enough to have dinner with a friend at Oleana in Cambridge. Oleana has a great reputation and a beautiful outdoor patio that was the perfect place to enjoy a meal in the early Spring weather.

Oleana has been on my list of restaurants to check out ever since I found out they had a vegetarian tasting menu. I’m not a vegetarian but my friend is, also I’m a much more adventurous eater when it comes to vegetables. We both ordered the tasting menu. The normal tasting menu is five courses plus desert, but since we both ordered it, each course came with two different dishes instead of two of the same. I’m not sure if this is the standard practice at Oleana or unique to my experience.

All of the dishes were delicious, but the thing that really impressed me was not just the individual composition (which was excellent) but the progression of all the dishes. They built ever so carefully from light and fresh to deep and developed flavors. Since I was trying to enjoy myself I did not keep detailed notes on each of the dishes, but I did jot down a rough description after dinner, here it is:

  1. Whipped feta with red pepper and aleppo peppers; Warm buttered hummus; Spicy carrot puree & dukkah; Warm nicoise olives; Bread basket
  2. First of spring salad with garlic cream; Mason jar layered with green grapes, cucumber and yogurt, topped with shaved ice
  3. A leafy salad and a lentil salad, each with different artisanal cheeses and crispy cracker-like bread with herbs and Parmesan, one had a citrus dressing and the other a garlicky-yogurt dressing
  4. Grilled asparagus with oyster mushrooms, topped with Parmesan; Cooked barley topped with roasted tomato jam
  5. Ricotta and bread dumplings with red wine, porcini and kale; Vermicelli concoction with crazy assortment of vegetables and spices
  6. Fragrant (rose water?) nougat glace with pistachio and rhubarb; Vanilla ice cream with brittle, ganache wrapped in apricot leather

Oleana was one of the best dining experiences I’ve had in recent memory. The waitstaff was attentive without being overbearing and very knowledgeable about both the food and wine list. I was unsure of what to drink with the tasting menu so our waiter suggested a French Gamay ( Domaine Diochen, Moulin-ã-Vent, Beaujolais) which was a great accompaniment. It started out light and fruity but stood up well as the dishes got heavier. The runner explained each dish in detail when it was delivered, and we were given plenty of time to enjoy each course before the next.

Overall, it was a fantastic meal full of adventurous flavors and I would certainly reccomend it to friends and family. I will probably be going back again later this year to try the tasting menu with a different season of produce.

Busy Sunday

April 27th, 2009

Ultimate FrisbeeYesterday was a beautiful day in Boston and jam-packed with activities and fun.

Sunday morning I met up with a bunch of HubSpotters for dim sum at Hei La Moon in Chinatown. I’ve been to dim sum before, but not at this venue. The place was absolutely massive: Two floors with tons of tables. We had a big round table downstairs and it was plenty large for our group and all the food. Luckily we had our dim sum experts Yoav, Jordyne and Jonah there to explain each of the dishes. Most were very tasty, a few were approaching strange but I didn’t have anything that I didn’t like.

After dim sum, a group of us headed over to Boston Common for Ultimate Frisbee. We warmed up by tossing the disc around casually for an hour or so while people arrived. There was a really good turnout, around 30 people. We broke into groups and played games on three separate fields. It was my first time playing Ultimate and I had a lot of fun, it’s a serious workout, too.

I left Ultimate around 2pm and headed back to Cambridge to change clothes and grab my golf clubs, then it was off to Red Tail Golf Club in Devens for a late-afternoon round. I played with my co-worker Kyle, and Jared (husband of another HubSpotter). We teed off at 5pm and managed to play 11 holes before it got too dark. I played fairly well for my first outing of the year, and even managed to make par on my last hole.

After golf we all headed back to Jared and Karen’s in Somerville where Karen fed us amazing turkey burgers with her famous home made BBQ sauce and two tasty summer salads. It was the perfect end to a perfect day and hopefully just the first of many this Spring and Summer.

My internet from A to Z

April 21st, 2009

I read Ellie’s post of this same subject and it was such a great idea that I had to try it myself.

In most modern browsers when you start typing an address there are suggestions offered. Here are the top suggestions from Google Chrome (my browser) for each letter of the alphabet. It’s a meme in the making!

A. abdinoor.com
B. blog.hubspot.com
C. cornerhub.com (this is my local development environment a.k.a. localhost)
D. digg.com
E. etrade.com
F. facebook.com
G. google.com/analytics
H. hubspot.com
I. is.gd
J. jira.atlassian.com
K. kyle-james.com
L. login.salesforce.com
M. maps.google.com
N. netflix.com
O. order.beautys-pizza.com
P. [none]
Q. [none]
R. riseclub.us/boards
S. search.twitter.com
T. twitter.grader.com
U. usaa.com
V. video.google.com
W. websitegrader.com
X. [none]
Y. youtube.com
Z.  zipcar.com

Biz in Boston Tweetup

April 20th, 2009
Karen, Biz, Me

Karen, Biz, Me

Last Wednesday Rebecca Corliss came by my desk at work and asked “Did you know Biz Stone is coming to Boston?” This question was the start of a hectic couple of days (for Rebecca, not me) to organize a Biz In Boston Tweetup. Luckily, Rebecca is awesome at this sort of thing and she pulled it off beautifully.  However, going into Friday, the day of the Tweetup, we had no idea if Biz would even be attending. Luckily we found out about 20 minutes ahead of time that he would actually be coming by for a short while.

Around 3pm the Tweetup kicked off with beer and local burger chain B.Good brought a ton of tasty sliders.  Biz was there early and chatted with everyone for a while. It was very cool to meet Biz; just the prior week I had seen his interview on The Colbert Report, so to be having a beer with him the next week was kind of surreal.  We even managed to snag him for a quick interview for HubSpot TV (embedded below).

Thanks to the Tweeple of Boston for coming out to the Tweetup, thanks to Rebecca for getting it organized and thanks to Biz for being the guest of honor.

F1 Boston Go-Karts

April 9th, 2009

F1 BostonAt around 7pm tonight I was working at my desk  when one of the HubSpot sales managers, Heidi, came over and asked “Do you want to go to F1 go-karts tonight?” Obviously, I jumped at the offer. So a group of 8 HubSpotters headed out to Braintree and F1 Boston for a little fun and competition.

The F1 facility was surprisingly cool. I figured it would be some sort of warehouse with a track, but it was much more. There’s a huge entrance area with actual race cars and a collection of tricked-out go-karts on display. There are also a billiards room, a bar, and a few function rooms.  Since HubSpot booked a corporate outing, we had our own function room along with a buffet of pub grub. After eating and filling out waivers, we got a little presentation about F1. Our speaker, Tom, walked us through the whole process and explained the flags and track signals. He was totally hilarious and mentioned that he’d been doing this for 9 years, he really had the presentation down to a science, if he ever wants to join sales at HubSpot, he’s hired.

After the presentation we got suited up: racing suit, head-sock, helmet and neck support. We were on the track and in our karts a few minutes later.  There are a total of four races, three 10-lap races to qualify and a final 15 lap championship race. Each race starts with a full caution lap and then the green flag comes out and you start racing. The karts are quick, they can get up to 40mph. I managed to clock the fastest lap of the night in 21.166 seconds at a top speed of 39.12 MPH. The track record is 19.780 seconds, so I still have a long way to go. The HubSpot team is rather competitive so there was a lot of bumping on the track but, as they say in Days of Thunder, “rubbin’ is racin’.” Unfortunately, I got penalized in the championship race for bumping another kart in a turn and lost my lead: I finished 5th overall. I didn’t feel so bad since there were a LOT of penalties handed out to our group. Katie Farrar won the championship race and is now the reigning HubSpot karting champion.

Overall, it was a great time: The karts are fast, the course is fun, and, if you bring the right group, it’s a serious battle. I will definitely be going back again soon.