<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>static/apple-touch-icon.png</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -19,11 +19,15 @@ handlers:
   static_files: static/\1/\2
   upload: static/(javascripts|stylesheets|images)/(.*\.(js|css|png|gif|jpg))
 
-# Default static content url catches those w/o versions in their names.
+# Top level icons
 - url: /favicon.ico
   static_files: static/favicon.ico
   upload: static/favicon.ico
 
+- url: /apple-touch-icon.png
+  static_files: static/apple-touch-icon.png
+  upload: static/apple-touch-icon.png
+
 # Pass everything else to the django bootstrapper.
 - url: /.*
   script: django_bootstrap.py</diff>
      <filename>app.yaml</filename>
    </modified>
    <modified>
      <diff>@@ -22,11 +22,11 @@ from models import Profile
 def index(request):
   &quot;&quot;&quot;Request / -- show all posts.&quot;&quot;&quot;
   user = users.GetCurrentUser()
-#  posts = memcache.get(&quot;latest_posts&quot;)
-#  if posts is None:
-  posts = db.GqlQuery(&quot;SELECT * FROM Post ORDER BY created DESC LIMIT 20&quot;).fetch(20)
-#  logging.info(&quot;setting memcache latest_posts&quot;)
-#    memcache.set(&quot;latest_posts&quot;,posts)
+  posts = memcache.get(&quot;latest_posts&quot;)
+  if posts is None:
+    posts = db.GqlQuery(&quot;SELECT * FROM Post ORDER BY created DESC LIMIT 20&quot;).fetch(20)
+    logging.info(&quot;setting memcache latest_posts&quot;)
+    memcache.set(&quot;latest_posts&quot;,posts)
   form = PostForm(None)
   return views.respond(request, user, 'posts/index',
                        {'posts': posts, 'form' : form})
@@ -69,8 +69,8 @@ def create(request):
   post.put()
   profile.increase_count()
   
-#  memcache.delete(&quot;latest_posts&quot;)
-#  memcache.delete(&quot;posts_from_%s&quot;%profile.nick)
+  memcache.delete(&quot;latest_posts&quot;)
+  memcache.delete(&quot;posts_from_%s&quot;%profile.nick)
   logging.info('Saved the post, %s' % post)
   return http.HttpResponseRedirect('/')
 </diff>
      <filename>controllers/posts.py</filename>
    </modified>
    <modified>
      <diff>@@ -42,13 +42,13 @@ def show(request, nick):
     post=None
   form = PostForm(post)
 
-#  posts = memcache.get(&quot;posts_from_%s&quot;%nick)
-#  if posts is None:
-  posts=profile.post_set
-  posts.order(&quot;-created&quot;)
-  posts=posts.fetch(20)
-#    logging.info(&quot;setting memcache posts_from_%s&quot;%nick)
-#    memcache.set(&quot;posts_from_%s&quot;%nick,posts)
+  posts = memcache.get(&quot;posts_from_%s&quot;%nick)
+  if posts is None:
+    posts=profile.post_set
+    posts.order(&quot;-created&quot;)
+    posts=posts.fetch(20)
+    logging.info(&quot;setting memcache posts_from_%s&quot;%nick)
+    memcache.set(&quot;posts_from_%s&quot;%nick,posts)
   
   return views.respond(request, user, 'profiles/show',
                        {'posts': posts, 'profile' : profile,'form':form})</diff>
      <filename>controllers/profiles.py</filename>
    </modified>
    <modified>
      <diff>@@ -10,14 +10,14 @@ indexes:
 # automatically uploaded to the admin console when you next deploy
 # your application using appcfg.py.
 
-# Used 9 times in query history.
+# Used 13 times in query history.
 - kind: Post
   properties:
   - name: author
   - name: created
     direction: desc
 
-# Used 195 times in query history.
+# Used 227 times in query history.
 - kind: Post
   properties:
   - name: created</diff>
      <filename>index.yaml</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,6 @@ register = template.Library()
 @register.filter
 #@stringfilter
 def atify(value):
-  m=re.compile('(@(\w+))')
+  m=re.compile('(@([\w\.-]+))')
   return m.sub(r'&lt;a href=&quot;/profiles/\2&quot; class=&quot;profile&quot; rel=&quot;friend&quot;&gt;\1&lt;/a&gt;',value)
 atify.is_safe = True</diff>
      <filename>my_filters/templatetags/talk_filters.py</filename>
    </modified>
    <modified>
      <diff>@@ -23,18 +23,20 @@ a { outline: none; }
 
 /* Base Layout */
 #page {
-	margin-left:150px;
+	margin:0 auto;
 	padding: 1em;
 	width:800px;
+	position: relative;
 	background: white;
 }
 #logo {
   position:absolute;
-  top:3.5em;
-  left:850px;
+  top: 1.5em;
+  right:0;
 }
 #header {
   margin-bottom:1em;
+  font-size: 1.2em;
 }
 
 </diff>
      <filename>static/stylesheets/style.css</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}body{line-height:1.5;background:white;margin:1.5em 0;}table{border-collapse:collapse;border-spacing:0;}caption,th,td{text-align:left;font-weight:400;}blockquote:before,blockquote:after,q:before,q:after{content:&quot;&quot;;}blockquote,q{quotes:&quot;&quot; &quot;&quot;;}a img{border:none;}input,textarea{margin:0;}a{outline:none;}.wrapper{display:inline-block;}.wrapper:after{content:&quot;.&quot;;display:block;height:0;clear:both;visibility:hidden;}* html .wrapper{height:1%;}.wrapper{display:block;}#page{margin-left:150px;padding:1em;width:800px;background:white;}#logo{position:absolute;top:3.5em;left:850px;}#header{margin-bottom:1em;}body{font-size:75%;}body,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,input,textarea{font-family:Helvetica,Arial,sans-serif;}h1,h2,h3,h4,h5,h6{font-weight:bold;}h1{font-size:3em;line-height:1;margin-bottom:.5em;}h2{font-size:2em;margin-bottom:.75em;}h3{font-size:1.5em;line-height:1;margin-bottom:1em;}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}h5{font-size:1em;margin-bottom:1.5em;}h6{font-size:1em;}p{margin:0 0 1.5em;}ul,ol{margin:0 1.5em 1.5em 1.5em;}ul{list-style-type:circle;}ol{list-style-type:decimal;}dl{margin:0 0 1.5em 0;}dl dt{font-weight:bold;}dl dd{margin-left:1.5em;}abbr,acronym{border-bottom:1px dotted #000;}address{margin-top:1.5em;font-style:italic;}del{color:#000;}a{color:#009;text-decoration:none;}a:hover{text-decoration:underline;}blockquote{margin:1.5em;}strong{font-weight:bold;}em,dfn{font-style:italic;}dfn{font-weight:bold;}pre,code{margin:1.5em 0;white-space:pre;}pre,code,tt{font:1em monospace;line-height:1.5;}tt{display:block;margin:1.5em 0;line-height:1.5;}table{margin-bottom:1.4em;}th{border-bottom:2px solid #ddd;font-weight:bold;}td{border-bottom:1px solid #ddd;}th,td{padding:4px 10px 4px 0;}tfoot{font-style:italic;}caption{background:#ffc;}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}.quiet{color:#999;}.hide{display:none;}.highlight{background:#ffc;}.top{margin-top:0;padding-top:0;}.bottom{margin-bottom:0;padding-bottom:0;}label{font-weight:bold;}fieldset{padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ddd;}legend{padding:0 .4em;font-weight:bold;font-size:1.2em;}textarea{margin:.5em .5em 0 0;}textarea{padding:.4em;}form.hform p{margin:0 0 .5em;}form.hform p label{float:left;width:100px;}form.hform p input{width:200px;}form.hform p select{width:200px;}form.hform p input.button{width:auto;}form.hform p input.checkbox{width:auto;}form.hform p input.radio{width:auto;}form.hform p.checkbox{margin-left:100px;}form.hform p.checkbox label{float:none;}form.hform p.checkbox input{width:auto;}form.vform p{margin:0 0 .5em;}form.vform p label{display:block;}form.vform p.checkbox label{display:inline;}ul.tabs{margin:0;padding:0;}ul.tabs li{float:left;list-style:none;margin:0;padding:0;padding-right:1em;}ul.tabs li a{float:left;display:block;}ul.tabs{display:inline-block;}ul.tabs:after{content:&quot;.&quot;;display:block;height:0;clear:both;visibility:hidden;}* html ul.tabs{height:1%;}ul.tabs{display:block;}#posts{font-size:2em;}#posts form{margin-bottom:1em;padding:1em;background:#4B8;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#posts form input{font-size:1em;padding:1em;}#posts form input[type=text]{border:none;padding:1em;width:700px;-moz-border-radius:1em;-webkit-border-radius:1em;color:white;background:#062;}#posts .post{margin-bottom:1em;padding:1em;color:white;background:#084;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#posts .post a{color:#DD0;}#posts .post a.profile{color:#FF0;}#posts .post .author{color:#8FB;font-weight:bold;}#posts .post .author a{color:#8FB;}#posts .post .timestamp{color:#4B8;}#posts .post a.action{color:#8FB;font-size:.6em;}#posts form.vform p label[for=id_body]{display:none;}#users{font-size:2em;margin-bottom:1em;padding:1em;color:white;background:#048;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#users a{color:#8BF;}#users .post_count{color:white;}#users .timestamp{color:#48B;}
\ No newline at end of file
+html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}body{line-height:1.5;background:white;margin:1.5em 0;}table{border-collapse:collapse;border-spacing:0;}caption,th,td{text-align:left;font-weight:400;}blockquote:before,blockquote:after,q:before,q:after{content:&quot;&quot;;}blockquote,q{quotes:&quot;&quot; &quot;&quot;;}a img{border:none;}input,textarea{margin:0;}a{outline:none;}.wrapper{display:inline-block;}.wrapper:after{content:&quot;.&quot;;display:block;height:0;clear:both;visibility:hidden;}* html .wrapper{height:1%;}.wrapper{display:block;}#page{margin:0 auto;padding:1em;width:800px;position:relative;background:white;}#logo{position:absolute;top:1.5em;right:0;}#header{margin-bottom:1em;font-size:1.2em;}body{font-size:75%;}body,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,input,textarea{font-family:Helvetica,Arial,sans-serif;}h1,h2,h3,h4,h5,h6{font-weight:bold;}h1{font-size:3em;line-height:1;margin-bottom:.5em;}h2{font-size:2em;margin-bottom:.75em;}h3{font-size:1.5em;line-height:1;margin-bottom:1em;}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}h5{font-size:1em;margin-bottom:1.5em;}h6{font-size:1em;}p{margin:0 0 1.5em;}ul,ol{margin:0 1.5em 1.5em 1.5em;}ul{list-style-type:circle;}ol{list-style-type:decimal;}dl{margin:0 0 1.5em 0;}dl dt{font-weight:bold;}dl dd{margin-left:1.5em;}abbr,acronym{border-bottom:1px dotted #000;}address{margin-top:1.5em;font-style:italic;}del{color:#000;}a{color:#009;text-decoration:none;}a:hover{text-decoration:underline;}blockquote{margin:1.5em;}strong{font-weight:bold;}em,dfn{font-style:italic;}dfn{font-weight:bold;}pre,code{margin:1.5em 0;white-space:pre;}pre,code,tt{font:1em monospace;line-height:1.5;}tt{display:block;margin:1.5em 0;line-height:1.5;}table{margin-bottom:1.4em;}th{border-bottom:2px solid #ddd;font-weight:bold;}td{border-bottom:1px solid #ddd;}th,td{padding:4px 10px 4px 0;}tfoot{font-style:italic;}caption{background:#ffc;}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}.quiet{color:#999;}.hide{display:none;}.highlight{background:#ffc;}.top{margin-top:0;padding-top:0;}.bottom{margin-bottom:0;padding-bottom:0;}label{font-weight:bold;}fieldset{padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ddd;}legend{padding:0 .4em;font-weight:bold;font-size:1.2em;}textarea{margin:.5em .5em 0 0;}textarea{padding:.4em;}form.hform p{margin:0 0 .5em;}form.hform p label{float:left;width:100px;}form.hform p input{width:200px;}form.hform p select{width:200px;}form.hform p input.button{width:auto;}form.hform p input.checkbox{width:auto;}form.hform p input.radio{width:auto;}form.hform p.checkbox{margin-left:100px;}form.hform p.checkbox label{float:none;}form.hform p.checkbox input{width:auto;}form.vform p{margin:0 0 .5em;}form.vform p label{display:block;}form.vform p.checkbox label{display:inline;}ul.tabs{margin:0;padding:0;}ul.tabs li{float:left;list-style:none;margin:0;padding:0;padding-right:1em;}ul.tabs li a{float:left;display:block;}ul.tabs{display:inline-block;}ul.tabs:after{content:&quot;.&quot;;display:block;height:0;clear:both;visibility:hidden;}* html ul.tabs{height:1%;}ul.tabs{display:block;}#posts{font-size:2em;}#posts form{margin-bottom:1em;padding:1em;background:#4B8;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#posts form input{font-size:1em;padding:1em;}#posts form input[type=text]{border:none;padding:1em;width:700px;-moz-border-radius:1em;-webkit-border-radius:1em;color:white;background:#062;}#posts .post{margin-bottom:1em;padding:1em;color:white;background:#084;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#posts .post a{color:#DD0;}#posts .post a.profile{color:#FF0;}#posts .post .author{color:#8FB;font-weight:bold;}#posts .post .author a{color:#8FB;}#posts .post .timestamp{color:#4B8;}#posts .post a.action{color:#8FB;font-size:.6em;}#posts form.vform p label[for=id_body]{display:none;}#users{font-size:2em;margin-bottom:1em;padding:1em;color:white;background:#048;-moz-border-radius:1em;-webkit-border-radius:1em;-webkit-box-shadow:.1em 0 .3em #888;}#users a{color:#8BF;}#users .post_count{color:white;}#users .timestamp{color:#48B;}
\ No newline at end of file</diff>
      <filename>static/stylesheets/talk_compiled.css</filename>
    </modified>
    <modified>
      <diff>@@ -8,10 +8,11 @@
     &lt;link rel=&quot;stylesheet&quot; href=&quot;/stylesheets/talk_compiled.{{ CURRENT_VERSION_ID }}.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; charset=&quot;utf-8&quot;/&gt;
     {% endifequal %}
 	  &lt;!--[if lte IE 6]&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;/stylesheets/lib/ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; charset=&quot;utf-8&quot;&gt;&lt;![endif]--&gt;
+		&lt;meta name=&quot;viewport&quot; content=&quot;width = 800&quot; /&gt; 
   &lt;/head&gt;
 	&lt;body&gt;
-		&lt;div id=&quot;logo&quot;&gt;&lt;a href=&quot;/&quot;&gt;&lt;img src=&quot;/images/logo.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;
 		&lt;div id=&quot;page&quot;&gt;
+			&lt;div id=&quot;logo&quot;&gt;&lt;a href=&quot;/&quot;&gt;&lt;img src=&quot;/images/logo.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;
 		  &lt;div id=&quot;header&quot;&gt;
 		    &lt;ul class=&quot;tabs&quot;&gt;
 			    {%if user %}</diff>
      <filename>templates/base.html</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7561c96a6cb1403f9c8d93ea6a86ee803ba44d56</id>
    </parent>
  </parents>
  <author>
    <name>Pelle Braendgaard</name>
    <email>pelleb@gmail.com</email>
  </author>
  <url>http://github.com/pelle/talk.org/commit/6211e4d855574846f0edd0270ee4c10881b5ffdc</url>
  <id>6211e4d855574846f0edd0270ee4c10881b5ffdc</id>
  <committed-date>2008-06-08T23:49:03-07:00</committed-date>
  <authored-date>2008-06-08T23:49:03-07:00</authored-date>
  <message>Added caching</message>
  <tree>171ad39a92a6bd50ef7daa17ac90f18e871530be</tree>
  <committer>
    <name>Pelle Braendgaard</name>
    <email>pelleb@gmail.com</email>
  </committer>
</commit>
