<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I don’t really like tumblr much, but all my friends seem to use it so I’m kinda stuck. I miss the era of LiveJournal.</description><title>harryh</title><generator>Tumblr (3.0; @harryh)</generator><link>http://blog.harryh.org/</link><item><title>Lift 2.0!</title><description>&lt;p&gt;Big congrats to &lt;a title="David Pollak" href="http://blog.lostlake.org/"&gt;David Pollak&lt;/a&gt; and the rest of the &lt;a title="Lift" href="http://liftweb.net"&gt;Lift&lt;/a&gt; team on getting the 2.0 &lt;a title="release" href="http://lift.la/announcing-lift-20-0"&gt;release&lt;/a&gt; out the door.&lt;/p&gt;
&lt;p&gt;I first started diving into Lift back in April of 2009 when I was doing some deep thinking about what platform to rewrite &lt;a title="foursquare" href="http://foursquare.com"&gt;foursquare&lt;/a&gt; on.  I was already moderately familiar with, and very enthusiastic about Scala.  The prospect of a Java like language running on the JVM but with a much less verbose syntax and support for functional programming paradigms was very very appealing.  However, I didn’t want to have to write a web framework from scratch, so I was seriously considering using something like Wicket or Rails (even though I’m not the biggest fan of languages that aren’t strongly typed).&lt;/p&gt;
&lt;p&gt;Eventually though, not even sure how, I stumbled across Lift and was immediately very impressed.  The BIG IDEA that ajax operations should be simple closures is very compelling to me (even with the tradeoff of stateful servers.  An issue which a scares some but we haven’t found to be too much of a problem).  It allows us to extremely rapidly, and securely develop complex ajax web pages with very little code.&lt;/p&gt;
&lt;p&gt;Soon after, I ported foursquare to the platform (which took about 90 days, which isn’t too bad) and it’s been terrific ever since.  We’ve scaled up to close to 2M users, and 1M checkins/day. Traffic currently peaks at close to 1000 requests/second (distributed to about a dozen app servers).  We’ve gotten tremendous help from the lift community, from a very responsive &lt;a title="google group" href="http://groups.google.com/group/liftweb"&gt;google group&lt;/a&gt;, to David taking tons of time out of his busy schedule for personal attention.  Whatever few bugs we’ve run into have been fixed extremely rapidly (often in &lt; 24 hours).&lt;/p&gt;
&lt;p&gt;In addition the use of scala has turned out to be a great recruiting tool.  It’s a new and exciting language, and strong developers are interested in learning more about it and using it in a professional context.  We’ve hired up a an awesome &lt;a title="team" href="http://twitter.com/foursquare/team"&gt;team&lt;/a&gt;, several of whom are here due to our use of scala.  If you’re thinking about using scala (and lift!) don’t let recruiting worries get in the way.&lt;/p&gt;
&lt;p&gt;Over the next year or two we hope to scale up foursquare in every possible way: team, users, requests, checkins, features, and I’m sure that being on the Lift platform will help us reach these goals.&lt;/p&gt;
&lt;p&gt;For those interested in additional information, I’ve given a couple of presentations on Lift and Foursquare’s use thereof that can be found &lt;a title="here" href="http://docs.google.com/present/view?id=dcbpz3ck_24f3v83ggz&amp;revision=_latest&amp;start=0&amp;theme=blank&amp;cwj=true"&gt;here&lt;/a&gt; and &lt;a title="here" href="http://docs.google.com/present/view?id=dcbpz3ck_25czcns2c2&amp;revision=_latest&amp;start=0&amp;theme=blank&amp;cwj=true"&gt;here&lt;/a&gt;. If you are considering using Lift in a professional fashion somewhere I’d be happy to talk to you about my experience with it. I’m easily found on twitter as @&lt;a title="harryh" href="http://twitter.com/harryh"&gt;harryh&lt;/a&gt;.  There are also numerous scala meetups around the country all with very knowledgable participants.&lt;/p&gt;</description><link>http://blog.harryh.org/post/755020120</link><guid>http://blog.harryh.org/post/755020120</guid><pubDate>Wed, 30 Jun 2010 17:13:00 -0400</pubDate></item><item><title>Since I have a pretty short e-mail address, I get a lot...</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_l418o2FkzN1qz6kuoo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Since I have a pretty short e-mail address, I get a lot of misaddressed e-mail.  Sometimes I can’t resist having a little fun.&lt;/p&gt;</description><link>http://blog.harryh.org/post/699354883</link><guid>http://blog.harryh.org/post/699354883</guid><pubDate>Mon, 14 Jun 2010 21:40:49 -0400</pubDate></item><item><title>marsbot:

‘We’re huge in Japan’
</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_l2bkx9XLwd1qz6jczo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://marsbot.tumblr.com/post/592998825/were-huge-in-japan"&gt;marsbot&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;‘We’re huge in Japan’&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.harryh.org/post/593036203</link><guid>http://blog.harryh.org/post/593036203</guid><pubDate>Wed, 12 May 2010 14:55:31 -0400</pubDate></item><item><title>mikehudack:

andres:

soupsoup:

bijan:

Pow!


BOOM.


Because...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_l1at5v68EO1qz4j35o1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://mhudack.com/post/541842958/andres-soupsoup-bijan-pow-boom"&gt;mikehudack&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://andres.tumblr.com/post/541518194/soupsoup-bijan-pow-boom"&gt;andres&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://soupsoup.tumblr.com/post/541502290/bijan-pow"&gt;soupsoup&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://bijansabet.com/post/541489446/pow"&gt;bijan&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pow!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;BOOM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Because his privacy requirements are different than the median Facebook user.  This is, quite obviously, the answer and Anil is smart enough to know this.  It’s not even a particularly embarrassing question.  Are there really a lot of people out there that think otherwise?  I really don’t get the POWing and the BOOMing.&lt;/p&gt;</description><link>http://blog.harryh.org/post/542210270</link><guid>http://blog.harryh.org/post/542210270</guid><pubDate>Thu, 22 Apr 2010 23:35:47 -0400</pubDate></item><item><title>allthecoolkids:

Ha! I just found out an article I wrote is up...</title><description>&lt;img src="http://29.media.tumblr.com/tumblr_l0w1ulmgzO1qz9s9ho1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://allthecoolkids.tumblr.com/post/521762993/ha-i-just-found-out-an-article-i-wrote-is-up-on"&gt;allthecoolkids&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ha! I just found out &lt;a href="http://econsultancy.com/blog/5640-at-aol-the-google-culture-clash-is-going-to-be-a-big-hurdle"&gt;an article I wrote&lt;/a&gt; is up on &lt;a href="http://www.businessinsider.com/at-aol-the-google-culture-clash-is-going-to-be-a-big-hurdle-2010-3"&gt;Silicon Alley Insider&lt;/a&gt;. Question: Who is this woman ilustrating the post?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://corp.aol.com/content/maureen-sullivan"&gt;&lt;a href="http://corp.aol.com/content/maureen-sullivan"&gt;http://corp.aol.com/content/maureen-sullivan&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.harryh.org/post/521769324</link><guid>http://blog.harryh.org/post/521769324</guid><pubDate>Wed, 14 Apr 2010 18:47:55 -0400</pubDate></item><item><title>trival backgrounding with scala actors</title><description>&lt;p&gt;A simple backgrounding object:&lt;/p&gt;
&lt;pre&gt;object BackgroundOperation {
   def apply(f: =&gt; Unit) = {
     BackgroundActor ! BackgroundJob(() =&gt; f)
   }

   case class BackgroundJob(f: () =&gt; Unit)
   
   object BackgroundActor extends LiftActor {
     protected def messageHandler = {
       case BackgroundJob(f) =&gt; f()
     }
  }
}
&lt;/pre&gt;
&lt;p&gt;Then you can do this whenever you want:&lt;/p&gt;
&lt;pre&gt;BackgroundOperation {
  // some complicated thing
}
&lt;/pre&gt;</description><link>http://blog.harryh.org/post/409616001</link><guid>http://blog.harryh.org/post/409616001</guid><pubDate>Wed, 24 Feb 2010 15:55:00 -0500</pubDate></item><item><title>"Why does Buzz even exist? Is it because Google wants to make my life better in some way? No. Buzz..."</title><description>“Why does Buzz even exist? Is it because Google wants to make my life better in some way? No. Buzz exists because Google feels threatened by Twitter and Facebook and wants to kill them. Google has become what Microsoft used to be—the Borg, the company that gobbles up ideas from smaller rivals and cranks out lame imitations in an attempt to put the little guys out of business.  ”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;- Daniel Lyons from Newsweek&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.newsweek.com/blogs/techtonicshifts/archive/2010/02/10/google-buzz-more-like-buzz-kill.aspx"&gt;&lt;a href="http://blog.newsweek.com/blogs/techtonicshifts/archive/2010/02/10/google-buzz-more-like-buzz-kill.aspx"&gt;http://blog.newsweek.com/blogs/techtonicshifts/archive/2010/02/10/google-buzz-more-like-buzz-kill.aspx&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(via &lt;a href="http://dpstyles.tumblr.com/"&gt;dpstyles&lt;/a&gt;)&lt;/p&gt;&lt;/em&gt;</description><link>http://blog.harryh.org/post/383055234</link><guid>http://blog.harryh.org/post/383055234</guid><pubDate>Wed, 10 Feb 2010 23:05:04 -0500</pubDate></item><item><title>Scala Puzzler of the day</title><description>&lt;p&gt;Many different database objects in foursquare have a foreign key to User.  So I wrote something like so:&lt;/p&gt;
&lt;pre&gt;object User {
  trait FK[T &lt;: FK[T]] extends LongKeyedMapper[T] {
    self: T=&gt;
    object userid extends MappedLongForeignKey(this, User)
    def hasUser_? = userid.defined_?
  }

  class FKList[A &lt;: FK[A]](list: List[A]) {    
    def primeUsers: List[A] = {
      if (!list.isEmpty) {
        val uids = list.filter(_.hasUser_?).map(_.userid.is)
        val users = findAll(ByList(User.id, uids))
        list.foreach(item =&gt; {
          item.userid.primeObj(users.find(_.id.is == item.userid.is))
        })
      }
      list
    }
  }
}
&lt;/pre&gt;
&lt;p&gt;So that things can extend User.FK[Foo] and get automatic extra functionality for dealing with their User parents.  But you’ll notice that the field name is hard coded in the above.  Some things have two user parents.  For example Venues have creators and mayors.  Is there some way to enhance the code above so that a single model can extend User.FK twice with different field names?  Pondering what might be a good way to do this.&lt;/p&gt;</description><link>http://blog.harryh.org/post/358066264</link><guid>http://blog.harryh.org/post/358066264</guid><pubDate>Thu, 28 Jan 2010 11:26:07 -0500</pubDate></item><item><title>"As a general rule, if nothing bad will happen to you if you free ride, it’s smart to free ride...."</title><description>“As a general rule, if nothing bad will happen to you if you free ride, it’s smart to free ride. Worrying that other countries are pulling ahead is like worrying that the other oarsman in your boat will beat you to the destination if you’re lazy. You’re in the same boat! The smart thing is to goad everyone else into going as fast and hard as they can. For a good while now, America has been a dim kid with ape strength happy to carry half the world as long as he gets to fist-pump, flex his pecs, and chant U.S.A.! U.S.A.! in the mirror each night. It’s a darn good deal for the rest of the world. America’s just too dumb to feel exploited. And too idiotically vain to enjoy a free ride.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;Will Wilkinson on technology investment&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.willwilkinson.net/flybottle/2009/12/09/some-game-theory-of-innovation"&gt;http://www.willwilkinson.net/flybottle/2009/12/09/some-game-theory-of-innovation&lt;/a&gt;&lt;/p&gt;&lt;/em&gt;</description><link>http://blog.harryh.org/post/277688072</link><guid>http://blog.harryh.org/post/277688072</guid><pubDate>Thu, 10 Dec 2009 11:43:15 -0500</pubDate></item><item><title>NFL Suicide League</title><description>&lt;p&gt;I’m 12 weeks into my NFL Suicide Leage.  So far I have used up: Baltimore, Washington, Dallas, Chicago, Pittsburgh, Green Bay, New England, San Diego, Seattle, Minnesota, Jacksonville, and Cincinnati.  Looking ahead to the remaining 5 weeks I see these two as the best options:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;OPTION 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Indianapolis over Tennessee&lt;br/&gt;NY Jets over Tampa Bay&lt;br/&gt;Arizona over Detroit&lt;br/&gt;New Orleans over Tampa Bay&lt;br/&gt;Denver over Kansas City&lt;/p&gt;
&lt;p&gt;&lt;b&gt;OPTION 2:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;New Orleans over Washington&lt;br/&gt;NY Jets over Tampa Bay&lt;br/&gt;Denver over Oakland&lt;br/&gt;Arizona over St Louis&lt;br/&gt;Indianapolis over Buffalo&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;</description><link>http://blog.harryh.org/post/265454243</link><guid>http://blog.harryh.org/post/265454243</guid><pubDate>Tue, 01 Dec 2009 18:49:48 -0500</pubDate></item><item><title>rickwebb:
via www.atpfestival.com
Ordered. Not sold out as of...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ktld8a2RF01qz7908o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://rickwebb.tumblr.com/post/255062024/via-www-atpfestival-com-ordered-not-sold-out-as"&gt;rickwebb&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;via &lt;a href="http://www.atpfestival.com"&gt;&lt;a href="http://www.atpfestival.com"&gt;www.atpfestival.com&lt;/a&gt;&lt;/a&gt;
&lt;p&gt;Ordered. Not sold out as of 9:20 PM EST. Get it now, there are only 1,000 of them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whoa, I almost forgot. Thx for the reminder. DONE BEEN ORDERED!&lt;/p&gt;</description><link>http://blog.harryh.org/post/255233458</link><guid>http://blog.harryh.org/post/255233458</guid><pubDate>Mon, 23 Nov 2009 23:52:46 -0500</pubDate></item><item><title>functional programming ftw</title><description>&lt;p&gt;Simple, but fun:&lt;/p&gt;
&lt;pre&gt;def partition[T](items: List[T], p: (T, T) =&gt; Boolean): List[List[T]] = {
  items.foldRight[List[List[T]]](Nil)((item: T, items: List[List[T]]) =&gt; items match {
    case (first :: rest) :: last if p (first, item) =&gt;
      (List(item)) :: (first :: rest) :: last
    case (first :: rest) :: last =&gt;
      (item :: first :: rest) :: last
    case _ =&gt; List(List(item))
  })
}&lt;/pre&gt;
&lt;p&gt;If you understand what this does, or know someone who does, I’m hiring.  Send me an e-mail.&lt;/p&gt;</description><link>http://blog.harryh.org/post/167384715</link><guid>http://blog.harryh.org/post/167384715</guid><pubDate>Thu, 20 Aug 2009 11:34:00 -0400</pubDate></item><item><title>Party Reminder</title><description>&lt;p&gt;Karaoke tonight for my birthday and &lt;a href="http://alicetiara.tumblr.com/"&gt;Alice&lt;/a&gt;’s return to NYC. &lt;a href="http://playfoursquare.com/venue/18181"&gt;2nd on 2nd&lt;/a&gt; @ 10pm. Pre party @ &lt;a href="http://playfoursquare.com/venue/2307"&gt;Tom &amp; Jerry’s&lt;/a&gt;. Facebook invite is &lt;a href="http://www.facebook.com/event.php?eid=105556093569"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See all y’all tonight!&lt;/p&gt;</description><link>http://blog.harryh.org/post/157220496</link><guid>http://blog.harryh.org/post/157220496</guid><pubDate>Thu, 06 Aug 2009 11:44:16 -0400</pubDate></item><item><title>"Take a look at how Apple would be able to quickly build a large search engine business: 
#1 The..."</title><description>“Take a look at how Apple would be able to quickly build a large search engine business: &lt;br/&gt;
#1 The Apple fanboy market would leave Google in a heartbeat. No question. That’s about 5 per cent of the computer market, and that’s not counting the iPod, iPhone users.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;&lt;a href="http://www.siliconvalleywatcher.com/mt/archives/2009/08/schmidt_resigna.php"&gt;Schmidt Resignation: Is Apple Building Apple Search Service? - SiliconValleyWatcher&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Apple doesn’t have the technical expertise to build a quality search engine.  It isn’t even close.&lt;/p&gt;&lt;/em&gt;</description><link>http://blog.harryh.org/post/155343964</link><guid>http://blog.harryh.org/post/155343964</guid><pubDate>Mon, 03 Aug 2009 23:09:06 -0400</pubDate></item><item><title>Danita’s Dessert Burger (seen today in the google...</title><description>&lt;img src="http://25.media.tumblr.com/cs2MkzlqJqhvxst57DQq6KsEo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Danita’s Dessert Burger (seen today in the google cafeteria)&lt;/p&gt;</description><link>http://blog.harryh.org/post/151699843</link><guid>http://blog.harryh.org/post/151699843</guid><pubDate>Wed, 29 Jul 2009 13:37:51 -0400</pubDate></item><item><title>Last night, in honor of Mark Buehrle’s perfect game, I...</title><description>&lt;img src="http://30.media.tumblr.com/cs2MkzlqJqaoqchecGLur7SZo1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Last night, in honor of Mark Buehrle’s &lt;a href="http://www.nytimes.com/2009/07/24/sports/baseball/24perfect.html"&gt;perfect game&lt;/a&gt;, I watched Kevin Costner’s third best baseball movie. It’s not very good really, but I enjoyed it nonetheless.&lt;/p&gt;</description><link>http://blog.harryh.org/post/148334148</link><guid>http://blog.harryh.org/post/148334148</guid><pubDate>Fri, 24 Jul 2009 12:42:21 -0400</pubDate></item><item><title>fuck the police</title><description>&lt;a href="http://www.policeone.com/investigations/articles/1857461-Store-video-catches-Philly-cop-confronting-woman/"&gt;fuck the police&lt;/a&gt;: &lt;p&gt;The money quote:&lt;/p&gt;
&lt;p&gt;“The District Attorney’s Office reviewed the case and declined to prosecute Officer Lopez in December. Eight days later, he was reissued his weapon and returned to full duty.”&lt;/p&gt;</description><link>http://blog.harryh.org/post/147629241</link><guid>http://blog.harryh.org/post/147629241</guid><pubDate>Thu, 23 Jul 2009 12:50:39 -0400</pubDate></item><item><title>Hello lover!</title><description>&lt;img src="http://25.media.tumblr.com/cs2MkzlqJq5eab09LOVNM8cZo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Hello lover!&lt;/p&gt;</description><link>http://blog.harryh.org/post/145668409</link><guid>http://blog.harryh.org/post/145668409</guid><pubDate>Mon, 20 Jul 2009 19:50:23 -0400</pubDate></item><item><title>Most annoying hit song of the 0's</title><description>&lt;p&gt;&lt;a href="http://peterfeld.tumblr.com/post/142852665/most-annoying-hit-song-of-the-0s"&gt;peterfeld&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;Lots of competition (“Soak Up The Sun,” holla!), and there are still five months to go, but I’m pretty sure by now it’s safe to give the award to Avril Lavigne for “&lt;a target="_self" href="http://www.youtube.com/watch?v=cQ25-glGRzI"&gt;Girlfriend&lt;/a&gt;.”&lt;/blockquote&gt;
&lt;p&gt;Disagree!&lt;/p&gt;
&lt;p&gt;I nominate the Black Eyed Peas for “&lt;a href="http://www.youtube.com/watch?v=CXKxs8Ge_9g"&gt;My Humps&lt;/a&gt;.”&lt;/p&gt;</description><link>http://blog.harryh.org/post/142863135</link><guid>http://blog.harryh.org/post/142863135</guid><pubDate>Thu, 16 Jul 2009 11:57:00 -0400</pubDate></item><item><title>harryh v3.1</title><description>&lt;p&gt;I’m turning 31 so I’m having a karaoke birthday party.  The invite is &lt;a href="http://www.facebook.com/home.php#/event.php?eid=105556093569"&gt;here&lt;/a&gt;.  If you aren’t already invited it’s either because A) we aren’t facebook friends (in which case lets get that fixed) or B) I screwed up somehow. All are welcome.&lt;/p&gt;</description><link>http://blog.harryh.org/post/142287785</link><guid>http://blog.harryh.org/post/142287785</guid><pubDate>Wed, 15 Jul 2009 15:25:00 -0400</pubDate></item></channel></rss>
