Life

Sartorial crash course

Disclaimer: I’m not claiming to be an expert, or even of above average knowledge when it comes to clothing.  I have noticed, however, that I’ve acquired enough knowledge over the last couple of years to be above-average in my peer group.  Constructive feedback welcome.

I’m approaching this from a technical angle.  There are a lot of very interesting, technical, useful (and some vestigial) features in clothing, from the weave of the cloth to the cut of the garment to the orientation of buttonholes.  Here are a few jumping off points for similarly-minded guys:

Books to read.  Of the 20 or so I reviewed at bookstores or by purchase, these stood out the most for their quality and depth of content:

Best sites:

  • Men’s Flair – good information on foundation principles.  Cloth, color coordination, etc.  Just the right balance of theoretical and practical info.

  • Ask Andy About Clothes – good information on men’s fashion. Focus leans toward classic/traditional American. Has a great “for sale” section
  • Style Forum – equally good information on men’s fashion, from a different angle. Focus leans toward contemporary/trendy
  • BaseNotes – good information on fragrances
  • eBay – best place to score deals if:
    1. you’ve done your home work and know what you’re looking for, and
    2. you’re willing to buy/wear pre-owned.

Probably the single best thing you can do though is go to a high-end deparment store. If you’re in LA like me, which you probably are if you’re reading this, then in order, you should pay a visit to Neiman Marcus in Beverly Hills, Barneys New York (next to Neiman Marcus), Nordstroms (preferrably @ The Grove, or alternatively Westside Pavilion), Alandale’s in Culver City. Just go try stuff on. Plan on spending half a day experiencing a range of price/quality points. One good thing about men’s clothing I learned vs. women’s is that you tend to be paying more for quality of materials and construction than trendiness. So really, try on the high-end, well engineered garments. You might be surprised (as I was) at the range of craftsmanship — you literally feel it. Also, plan on visiting the dept. stores a few times, and try on the same garments again. You’ll get a better feel for what works for you this way.

Business
Life

Comments (1)

Permalink

Google/HTC Nexus One Unboxing

P1000457

P1000441P1000442P1000443P1000444P1000445P1000446P1000447P1000448P1000449P1000450P1000451P1000452P1000453P1000454P1000455P1000456P1000457P1000458P1000459P1000460P1000461P1000464

Computing
Fun
Life
Mobile

Comments (0)

Permalink

How to fix the meetup.com broken exported calendars.

I’m a big fan of meetup.com, but they’re so tragically unhip when it comes to mashups/integration/web 2.0.  One of my biggest gripes until about 6 months ago was that they had no facility (besides API) for exporting a calendar of meetups to my calendar app (I use Google Calendar), or any other calendar app for that matter.

They introduced an export feature recently, but it’s pretty useless.  Here’s why: they offer two calendars

  • [Calendar A] contains all upcoming items in all your meetup groups
  • [Calendar B] contains upcoming items which you have RSVP’d with “yes” or “maybe”.

That’s it.  The calendars exported don’t even contain links that allow you to RSVP from directly inside your calendar — you have click through to the meetup.com site, log in, then RSVP.  Ugh.

 

Come on, product guys.  What’s really called for is 4 separate calendars.

  • [Calendar "yes"] All groups, “yes” events
  • [Calendar "maybe"] All groups, “maybe” events
  • [Calendar "no"] All groups, “no” events
  • [Calendar "none"] All groups, events to which I have not yet submitted an RSVP.

I was finally just pissed off enough about the status quo that I fixed it for myself, and below I share the code.  You can try it out here: http://spicylogic.com/allenday/cgi-bin/mu.cgi?key=<your_api_key>&cal=<calendar> 

where <your_api_key> can be found here and <calendar> is one of “yes”, “no”, “none”, “maybe”.

Okay, here’s the code.  Install it on your own machine if possible, my ISP will appreciate it.  If you find fuckups, let me know and I’ll update the post.

#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use Date::Manip qw(ParseDate ParseDateString ParseDateDelta DateCalc UnixDate);
use Date::Parse;
use HTML::Entities;
use LWP::Simple qw(get);
use XML::DOM;
 
use constant URL_EVENTS =&gt; 'http://api.meetup.com/events?key=%s&amp;member_id=%d&amp;format=xml';
 
print header(q(text/calendar));
 
my $parser = new XML::DOM::Parser ();
 
my $mode = param( 'cal' );
my $key  = param( 'key' );
my $user = param( 'user' );
 
if ( ! $mode || ! $key || ! $user ) {
  die
}
 
my $events_url = sprintf( URL_EVENTS, $key, $user );
#warn $events_url;
my $events_txt = get( $events_url );
#warn $events_txt;
my $events_dom = $parser-&gt;parse( $events_txt );
#warn $events_dom;
 
print qq(BEGIN:VCALENDAR\nPRODID:-//Meetup Inc//RemoteApi//EN\nVERSION:2.0\nMETHOD:PUBLISH\nCALSCALE:GREGORIAN\nX-ORIGINAL-URL:http://www.meetup.com/\nX-WR-CALNAME:mu $mode\n);
 
my $events = $events_dom-&gt;getElementsByTagName( 'item' );
for ( my $i = 0 ; $i &lt; $events-&gt;getLength() ; $i++ ) {
  my $event = $events-&gt;item( $i );
  my $n_id    = $event-&gt;getElementsByTagName( 'id'             )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_rsvp  = $event-&gt;getElementsByTagName( 'myrsvp'         )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr0 = $event-&gt;getElementsByTagName( 'venue_name'     )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr1 = $event-&gt;getElementsByTagName( 'venue_address1' )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr2 = $event-&gt;getElementsByTagName( 'venue_address2' )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr3 = $event-&gt;getElementsByTagName( 'venue_address3' )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr4 = $event-&gt;getElementsByTagName( 'venue_city'     )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr5 = $event-&gt;getElementsByTagName( 'venue_state'    )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_addr6 = $event-&gt;getElementsByTagName( 'venue_zip'      )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_desc  = $event-&gt;getElementsByTagName( 'description'    )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_link  = $event-&gt;getElementsByTagName( 'event_url'      )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_name  = $event-&gt;getElementsByTagName( 'name'           )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_lat   = $event-&gt;getElementsByTagName( 'venue_lat'      )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_lon   = $event-&gt;getElementsByTagName( 'venue_lon'      )-&gt;item( 0 )-&gt;getFirstChild();
  my $n_start_time  = $event-&gt;getElementsByTagName( 'time'           )-&gt;item( 0 )-&gt;getFirstChild();
 
  my $start_time;
  my $end_time;
 
  #my $dummy_time = "20000101T000000Z";
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
  my $dummy_time = sprintf( q(%04d%02d%02dT%02d%02d%02dZ), $year + 1900, $mon + 1, $mday, $hour, $min, $sec );
 
  if ( $n_start_time ) {
    my ($ss,$mm,$hh,$day,$month,$year,$zone);
 
    ($ss,$mm,$hh,$day,$month,$year,$zone) = strptime( $n_start_time-&gt;toString() );
    $start_time = sprintf( q(%04d%02d%02dT%02d%02d%02dZ), $year + 1900, $month + 1, $day, $hh, $mm, $ss );
 
    my $eday = $day;
    if ( $hh == 23 ) {
      $eday = $day + 1;
    }
    my $ehh = ($hh + 1) % 24;
    $end_time   = sprintf( q(%04d%02d%02dT%02d%02d%02dZ), $year + 1900, $month + 1, $eday, $ehh, $mm, $ss );
  }
  else {
    $start_time = '';
    $end_time = '';
  }
 
  if ( $mode eq $n_rsvp-&gt;toString() ) {
    my $id   = $n_id-&gt;toString();
    my $name = $n_name ? $n_name-&gt;toString() : "";
    my $desc = $n_desc ? $n_desc-&gt;toString() : "";
    my $addr = ( $n_addr0 ? $n_addr0-&gt;toString().', ' : "" )
             . ( $n_addr1 ? $n_addr1-&gt;toString().', ' : "" )
             . ( $n_addr2 ? $n_addr2-&gt;toString().', ' : "" )
             . ( $n_addr3 ? $n_addr3-&gt;toString().', ' : "" )
             . ( $n_addr4 ? $n_addr4-&gt;toString().', ' : "" )
             . ( $n_addr5 ? $n_addr5-&gt;toString().', ' : "" )
             . ( $n_addr6 ? $n_addr6-&gt;toString() : "" );
    #$desc =~ s/(.)/(ord($1) &gt; 127) ? "" : $1/egs;
 
    $name = HTML::Entities::decode_entities( $name );
    $desc = HTML::Entities::decode_entities( $desc );
    $addr = HTML::Entities::decode_entities( $addr );
    $name =~ s/,/\\,/g;
    $desc =~ s/,/\\,/g;
    $addr =~ s/,/\\,/g;
 
    $desc =~ s#
#\\n#gs;
    $desc .= "\\n\\n\\nGoing?\\n\\n";
    foreach my $response ( qw( yes no maybe ) ) {
      $desc .= uc($response).qq(: http://api.meetup.com/rsvp?event_id=$id&amp;key=$key&amp;rsvp=$response\\n);
    }
 
    my $geo = $n_lat &amp;&amp; $n_lon ? "GEO:" . $n_lat-&gt;toString() . ";" . $n_lon-&gt;toString() . "\n" : undef;
 
    #print sprintf( qq(BEGIN:VEVENT\nSUMMARY:%s\nDESCRIPTION:%s\nLAST-MODIFIED:%s\nUID:%s\nCLASS:%s\nCREATED:%s\nDTSTAMP:%s\nDTSTART:%s\nDTEND:%s\nLOCATION:%s\n\nURL:%s\nEND:VEVENT\n),
    print sprintf( qq(BEGIN:VEVENT\nSUMMARY:%s\nDESCRIPTION:%s\nLAST-MODIFIED:%s\nUID:%s\nCLASS:%s\nCREATED:%s\nDTSTAMP:%s\nDTSTART:%s\nDTEND:%s\n%sLOCATION:%s\nURL:%s\nEND:VEVENT\n),
      $name,
      $desc,
      $start_time,
      "event_$id\@meetup.com",
      "PUBLIC",
      $dummy_time,
      $dummy_time,
      $start_time,
      $end_time,
      $geo,
      $addr,
      $n_link ? $n_link-&gt;toString() : "",
    );
  }
}
 
print qq(END:VCALENDAR\n);

Administration
Life
Networking
Perl
Software

Comments (1)

Permalink

a small world / celebrity encounter

1. Noticed a new Tesla Motors showroom in Los Angeles at Sepulveda/405 on Santa Monica Blvd last night on my drive to my guitar lesson. Made a mental note to stop by and check it out, looks like they have some museum-style exhibits –fuel cell cutaways, etc of the car.

2. Was talking it up to some friends/coworkers earlier today.

3. Was planning to go to the Hadoop Meetup tonight at Mahalo, but skipped it and worked late.

4. Saw an orange Lotus pass me on the way home… but wait… it has a TESLA logo! I pursued, thinking it was kind of late for a test drive.

5. Pulled up at a red light to listen to the silence / congratulate the driver on his nice ride. Honked my horn.

6. Driver rolls down the window and turns to me, and it’s none other than the CEO of Mahalo, Jason Calacanis!

Life
Networking
Random musings

Comments (0)

Permalink

Building a men’s wardrobe from scratch, part 2

In part 1, I described my experience with trying various designers for fit, and assessing what type of wardrobe items I should buy to begin. I also described where I’ve been considering picking up some items, and how I might go about doing that.

In evaluating the possible strategies for building the wardrobe, I’m considering the following factors:

  • time units to acquire a garment
  • effort per unit time to acquire a garment
  • garment price, as a fraction of retail
  • garment quality

These are not necessarily conflicting factors, but there are definitely some inverse relationships. For instance, if I want to minimize time and effort, price will certainly go up. So I can wait; I’m not in a rush. I’m also not much of an active shopper and I don’t want to spend lots of time running around town or shopping online, so I want to reduce effort. I also don’t want to compromise on quality, and I’m willing to pay more to get what I want. I’m also willing to wait longer to get a lower price.

Here’s what I’m doing:

  1. Subscribe to department store mailing lists. Here are some deep links to sign up for:

    This way I’ll be sure to be notified of clearances like the Barneys Barker Hangar warehouse sale. My impression so far is that Barneys sends out a ton of spam — like 1-2 per day! Yuck! I haven’t received any mail from the other two yet in the ~5 days I’ve been on-list.

  2. Subscribe to eBay watch lists. You can set up a watch. It’s like a brokerage trade trigger and emails if new items are listed that match your search terms/categories/sizes.
    • For example, I’m subscribed to a search for Kiton 42L sportcoat.
    • I’m also subscribed to the word couture along with some other terms like so. You see this word appear in the higher-end lines for many designers, or sartorially-oriented sellers on eBay will use it in their titles/product descriptions. Along the same lines, you could subscribe to Purple Label to get alerts on high-end Ralph Lauren items if you like those.
  3. Subscribe to the AskAndyAboutClothes sale forum. It appears to be a very active sale forum. The sellers are frequently announcing sales in there and linking to their eBay profiles. I’m using this as a form of vetting of the sellers on eBay as the AAAC forum seems reputable. This subscription doesn’t allow filtering of items by size, etc. The very low prices more than make up for the effort of checking the forum regularly.

Business
Life
Random musings

Comments (0)

Permalink

Building a men’s wardrobe from scratch, part 1

swatches

I’ve been looking into building a wardrobe for a few months now. I’m going to summarize what I’ve learned in this post. Mainly through hyperlinks. I’m writing at novice level of knowledge at best, so caveat emptor with all of this.

Motivation for this post: I’ve been finding that with greater frequency I’m not able to attend social events because I don’t own formal (or even semi-formal) clothing. That’s right, I only own jeans, short sleeve buttoned- and t-shirts, jeans, flip flops, and sneakers. Goose thief on the AskAndyAboutClothes forum put it really well, so I’ll quote from his thread:

I am new to this forum, but have been lurking for a few months. I would humbly like to consult the collective wisdom of this community for assistance.

I am a 31 year old writer and have recently moved to Los Angeles. Like many in my field, I kick it casual in t-shirts and jeans with a pair of sneakers to round out the slacker uniform.

Recently I suited up for a meeting to accept a new job. The suit was OTR, but fit well and I splurged on a MTM shirt.

As far as shirts go, there is no going back. A garment made to fit my measurements not only makes sense, but paying a craftsman is a rewarding experience. The difference in comfort was also incredible.

What surprised me most however was how differently people treated me. Not that they are rude to me when I am not dressed up, but by me doing so, it actually seemed to brighten the mood of those I walked by.

Which led me to ask the question. If I feel more comfortable, look better, and have greater power to please – why am I still dressing like a man child?

Nice. Sounds a lot like me. Even lives in LA.

Anyway, first thing I did a couple months back was go to several department stores in Los Angeles. First stop was Bloomingdale’s in Century City, followed by Alandales in Culver City, and finally in Beverly Hills I went to Barney’s NY, Neiman Marcus, and Saks Fifth Avenue. I did this over the space of 2 days, and tried on every designer label I could find so I could calibrate quickly and compare everything while I was in the mode of comparing what to me seemed like very similar items.

I was surpised to find there is actually quite a bit of variety, and found there were generally two types of coats, those I liked and those I didn’t :) . Seriously though, there are some coats which are Neapolitan-style, and others that are Roman. They differ in the amount of structure built into the garment. A salesman at Barney’s described the Roman style as being more like a suit of armor. It definitely felt like that, and I definitely preferred the Neapolitan style.

I also noticed that the amount of handwork that goes into each garment really does make a huge difference in my perceived quality of the fit and appearance of the garment. On the appearance it’s possible that the fabrics just looked nicer, but I got to the point that I could tell the mass-produced coats from the handmade coats even without looking at the label. They’re that different. Noticeably more comfortable. Visual detail is also noticeable. For instance, the garments with more handwork have little things like pique/contrast stitching on the lapels and working buttonholes on the sleeves. Of course, the price of the garment goes up along with the number of hours of human labor used to make them. I found that I particularly liked the garments from Kiton****, Isaia, Zegna. Dolce & Gabbana and Theory were also nice.

Now, I’m just starting to build out a wardrobe, so I’m looking for a few basic key pieces from which I can get the most value. A sportcoat fits the bill here. As I learned, a sportcoat is a specific type of coat that generally has the pockets sewn on the outside with flaps at the top. It’s meant to be worn with jeans or pants. A blazer is a subclass of sportcoat that is made of solid fabric, typically navy, charcoal, or black. All other sportcoats are made of patterned fabric.

Again, not looking to spend a lot of money. It seems there are several ways to stretch the dollars.

  1. Sale shop. Last-call clearance items are typically 50-80% off. I’m now on several dept. store mailing lists for a few months. The best sale is around the beginning of the year because it’s where you can get garments that can be worn year-round, as opposed to the lighter weight garments that would be available in a summer or fall clearance sale.
  2. Outlet malls. Maybe Palm Springs or Las Vegas for those also in SoCal. This might not work for me, as I’m a 42L which is a slightly unusual size.
  3. Barneys has a warehouse clearance sale twice a year at the Barker Hangar in Santa Monica, approximately in August and February.
  4. Ebay. I can occassionally find a Kiton 42L on Ebay, but it’s hard. I’ve bid on a few items, but I don’t really know yet what a good deal is. I’m also a little freaked out about the prevalance of counterfeit garments on Ebay. I’ll keep looking and post on this again later. It looks promising.
  5. Thrift stores. Apparently you can get good stuff at Goodwill, etc. Maybe not in this economy though, it could be well picked over. I also don’t know which Goodwill stores have the good stuff. Beverly Hills maybe? Need to do more research here.
  6. Student deals. I’m not a student anymore, but for those readers who are… some of the manufacturers give steep discounts for grad students. Brooks Brothers is apparently having a 40% discount for grad students right now. Check it out.

I looked into other guides on how to build a wardrobe. I found some good stuff here:

  • askandyaboutclothes.com – amazing article on pattern matching on an amazing site. I’ve been doing a lot of reading here for the last couple of days. Wow.
  • Wikihow has an article on building a basic men’s wardrobe. Seems like reasonable advice. AskAndy… also has some great threads/advice on this topic, like this one and this one.

I really liked the sales staff in Alandales. Stan was the salesman helping me, and he gave me a lot of attention and answered a lot of questions. These guys are working w/o commission, and it showed. I didn’t feel pressured/ignored like I did in the dept. stores (exception: Barneys was also great), and the staff seemed knowledgeable.

I’m going to take the advice of the Wikihow article and get a few made-to-measure (MTM) shirts from Alandales. They take measurements and send off to a tailor that makes shirts for them. Seems like an inexpensive way to get the process going, and I’ll need a few shirts no matter what other items I buy anyway. I might also buy an off-the-rack (OTR) high-end designer shirt from Ebay to see if its worth spending any money here.

To be continued…

Business
Life
Random musings

Comments (0)

Permalink

Hiromi’s Sonic Bloom @ the Jazz Bakery

I saw Hiromi Uehara’s Sonicbloom at the Jazz Bakery Saturday. Wow! I’m now a fan.

Check out this bootleg of Hiromi’s covering Gershwin on YT. She played this one last night.

Fun
Life

Comments (0)

Permalink

Some Kickass Wordpress Plugins

I was looking for a plugin to count unique views per post and found Lester Chan’s bunch of Wordpress plugins. I’ll be adding some of these shortly.

One of the most viewed posts on this blog is one of my first: A review of Costco stainless steel cookware. Would you have guessed that? I wonder if it’s highly rated… we’ll find out.

I’m still surprised it’s my #1 post. Perhaps it’s more evidence that I should be posting more non-technical stuff, and some kind of argument against making a super-niche blog.

Life
PHP
Random musings

Comments (0)

Permalink

Life beyond tech

IMG_0413

I noticed my blog has been really technically heavy lately. This probably has a lot to do with the fact that I took a position as a “Computer Scientist” at BiggerBoat recently, and I’m on a very steep learning curve of new technologies (Hadoop, HBase, Nutch, Mahout to name a few).

I’m beginning to see this blog as really being about documenting/recording what I’ve been doing so I can remember later. Who knows, maybe even some friends/family are reading! Technical HOWTOs and pasted scripts fit the blog manifest nicely, but so do some other things like:

Check out some of Ling’s and Sing’s recent photos on Flickr. I haven’t been running with them too much (working), but they’ve been having a good time.

Some photos from the Getty Villa in Malibu:
Ling LeeSing LeeChih Fen Lee

Family
Fun
Life

Comments (0)

Permalink