<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;AkMDQn0_fSp7ImA9WxBVF0Q.&quot;"><id>tag:blogger.com,1999:blog-10963130</id><updated>2010-02-21T16:27:53.345-08:00</updated><title>Ark's Tech Blog</title><subtitle type="html">I sometimes want to link to stuff I find useful or stuff that I've written (of a geeky nature).</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.wtwf.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>ark</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/arkstechblog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="arkstechblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkMDQn0-eip7ImA9WxBVF0Q.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-3560485927088267597</id><published>2010-02-21T16:27:00.000-08:00</published><updated>2010-02-21T16:27:53.352-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-21T16:27:53.352-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="buzz" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>Google Buzz Icon</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://app.wtwf.com/static/google-buzz.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://app.wtwf.com/static/google-buzz.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;I found this Google Buzz icon somewhere, but alas, I found it AFTER I'd already made a lame Google Buzz Icon for the apple script app that launches Chrome with a fake useragent to access the &lt;a href="http://blog.wtwf.com/2010/02/getting-google-buzz-on-your-desktop.html"&gt;mobile version of Buzz&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Perhaps I'll fix up my lame icon to use this new one, otherwise you'll just have to make do with: &lt;a href="http://app.wtwf.com/static/buzz.icn"&gt;buzz.icn&lt;/a&gt;. I didn't even make a nice mask, sorry.&lt;br /&gt;
&lt;br /&gt;
To get this to show up for your app just replace&amp;nbsp;applet.icns in&amp;nbsp;Contents/Resources under your "Google Buzz.app" directory (You might need to click show bundle contents or something). Make sure you call it applet.icns. Finder is slow about updating icons, so you can quit it from activity monitor if you're impatient.&lt;br /&gt;
&lt;br /&gt;
I used Icon Composer which I guess is part of XCode under /Developer/Applications/Utilities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-3560485927088267597?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=3560485927088267597" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/3560485927088267597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/3560485927088267597?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2010/02/google-buzz-icon.html" title="Google Buzz Icon" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkYDRHs6eip7ImA9WxBVE0U.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-8642467112978945355</id><published>2010-02-16T20:08:00.000-08:00</published><updated>2010-02-16T20:16:15.512-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-16T20:16:15.512-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="rss" /><title>notes from moving to blogger custom domains</title><content type="html">&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've been moving my blogs over to blogger's custom domains since blogger will be stopping support for ftp sometime soon (now later than they announced). Here's some of the good and the bad experiences I had during the move.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1. No way to customize the 'request access to this private blog page'.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Some of my blogs are private. I used to implement this with some php wrapper in the template that set a cookie based on a really simple question. My main goal was keeping out robots not real people. With custom domains the option I chose was to have a private invite only blog. That's all cool, but the page when you go to the blog not logged in, or logged in without permission provides no way at all to request permission to read the blog, or to contact the blog author. Or any way to customize any of the text on the page to tell people how to get access to the blog.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2. No way to set the favicon&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Favicons are important to me. I have too many tabs open in Google Chrome to not &amp;nbsp;use favicons. The default favicon is the blogger favicon, this is annoying since it's the same as the blogger compose favicon too. I tried adding 'link rel="icon"' higher or lower down in the header and Chrome just ignored it.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In the end I copied some javascript that replaces the favicon. It's not perfect but it works most of the time. Webmaster Central still uses the blogger icon which is annoying.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;3. Alternative/Feed information in the header&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The Blogger feed page is super confusing. I can put my feedburner url in there but alas it never seems to show up in the source of the served page. Then people will subscribe to the blog via the blogger url which I may want to change later. The subscribe gadget/buttons do this too. plus it also puts links to rss versions of the feed in the header, which I don't have feedburner versions of. It's horrible that so many years after Google bought feedburner it's still not integrated well.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Also I have lots of subscribers who are subscribed to a url on the old site. I can't have the new custom domain replace the old site since I still need these links to work. Don't tell me about the failover site, because that doesn't work when you have a private blog!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In the end I wrote more javascript to strip out all the old feed information and replace it with my feed information. I also use my own subscribe buttons with my own urls in them.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I had to move all my blogs to custom domains which were different than the original blog urls. Now I need to wait for Google to index my public blogs even though the content didn't really change.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;4. Those annoying screwdriver/wrench icons to edit gadgets! I turned off quicklinks.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I turned off quicklinks and yet blogger still insists on showing me the quick edit tools for all my gadgets, this is especially annoying on my private blogs where I must be signed in!&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I ended up getting rid of these by hand editing the expanded template html a terrifying experience.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;5. oauth feeds have drafts&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;As I documented before I fetch the feeds to my private blogs and make restricted versions of those feeds available semi-publicly. I was surprised to find out that feeds fetched via oauth had the draft blog posts in them too! I should have made a google account with only read access and fetched the blog feed using that (then getting my oauth stored credentials would have only given you access to read the blog, not post to it too!).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;6 search gadgets for label or subscribe&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The tools to search the layout gadgets are awful. I searched for label or labels and didn't get the main google provided label gadget (or it was hard to find). same with trying to find a subscribe gadget (which ended up not working for me anyway (see my complaint about feeds).&lt;/div&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;7. Redirecting the Old Blog to the New Blog.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;O.K. enough complaining. I've listed how I fixed a few issues. Here's some other fixes I found useful:&lt;br /&gt;
for my public blogs it was easy to modify .htaccess files to redirect traffic to the new blog. Here's some rules that worked for me. note that archives used to end with .php but now end with .html It seems blogger keeps the file extensions for old posts so they still have .php at the end.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;pre class="code"&gt;RedirectMatch 301 /scripts/(2[0-9]*.*) http://blog.wtwf.com/$1
RedirectMatch 301 /scripts/labels/(.*)\.php http://blog.wtwf.com/search/label/$1
RedirectMatch 301 /scripts/archive/(.*)\.php http://blog.wtwf.com/$1.html
RedirectMatch 301 /scripts$ http://blog.wtwf.com/
RedirectMatch 301 /scripts/$ http://blog.wtwf.com/
RedirectMatch 301 /scripts/index\.php$ http://blog.wtwf.com/
&lt;/pre&gt;&lt;br /&gt;
For my private blogs I wanted to put up an alert that the blog had moved but give a way to contact me. I did it with the following php that I added to the template so it appeared on every page:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;&amp;lt;style&amp;gt;
.alert {                                                                        
  background-color: #f00;                                                       
  color: #fff;                                                                  
  padding: 50px 0px 50px 5%;                                                    
  margin: 50px 0px 50px 5%;                                                     
  border: double 3px #000;                                                      
  font-weight: bold;                                                            
  text-align: center;                                                           
}                                                                               
                                                                                
.alert a, .alert a:hover {                                                      
  color: #fff;                                                                  
}                    
&amp;lt;/style&amp;gt;
&amp;lt;div class="alert"&amp;gt;
This blog has moved!

The new location of this page is:
&amp;lt;?php echo $newloc ?&amp;gt;

If you are unable to read that page then please Email us using the Email
link on the left.
&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I added email addresses using javascript so they're not easily harvestable.&lt;br /&gt;
&lt;br /&gt;
I do like that I can add javascript to my new blogger template by adding a html/javascript gadget, that worked pretty well for me.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-8642467112978945355?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=8642467112978945355" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8642467112978945355?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8642467112978945355?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2010/02/notes-from-moving-to-blogger-custom.html" title="notes from moving to blogger custom domains" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUAFQ3gzfCp7ImA9WxBVEko.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-5379024690386755861</id><published>2010-02-15T14:32:00.000-08:00</published><updated>2010-02-15T14:41:52.684-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T14:41:52.684-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="atom" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="rss" /><category scheme="http://www.blogger.com/atom/ns#" term="privacy" /><category scheme="http://www.blogger.com/atom/ns#" term="appengine" /><title>more private feeds</title><content type="html">I've posted before about my little script to make atom feeds more private by expiring old posts by replacing the text, &lt;a href="http://wtwf.com/scripts/2008/04/feedfixer.php"&gt;here&lt;/a&gt; and &lt;a href="http://blog.wtwf.com/2007/08/my-feed-is-private-kthxbye.php"&gt;here&lt;/a&gt;. I've also posted about &lt;a href="http://blog.wtwf.com/2008/04/password-protecting-your-site.php"&gt;weak password protecting your sites&lt;/a&gt;. This was all that I did to have a blog that was private from the search engines but easy for people to read either in google reader or via email or in their browser. I did this using blogger.com's sftp support (I also ran a &lt;a href="http://blog.wtwf.com/2009/12/sftp-in-chroot-environment.php"&gt;chrooted sftp server&lt;/a&gt;). Seems that my paranoia has fueled quite a few posts here in the past, eh! Well Blogger has decided to stop supporting sftp publishing so I've had t find another solution. Unlucky for me, I like the blogger posting UI and I think I found a good solution that will allow me to keep my content out of search engines and still make it accessible to folks that I want to read it. I'm not talking about this blog by the way, I'm talking about my daughter's blog and my personal blog. I'm going to have a blog that is invite only, you need to be specifically invited to read it, otherwise you end up at a rather unhelpful 'you need access' page with no way to contact me to ask for access. To make my blog readable in google reader all I needed to do was get the feed and make it available. I thought of a few ways to do this. First plan was to subscribe to the blog and then get some kind of email to rss gateway worked out. I wish mailman supported this but it doesn't. I did manage to get a patch to do it, but never worked on it because by the time I got the patch I also found my final solution. I wrote a Google AppEngine app that stored oauth credentials and fetched the feed from blogger, trimmed it and published it for all to see. I used code from the &lt;a href="http://code.google.com/p/gdata-python-client/source/browse/#svn/trunk/samples/blogger/oauth-appengine"&gt;gdata python blogger oauth example&lt;/a&gt; and &lt;a href="http://code.google.com/p/salmon-protocol/source/browse/trunk/salmon-playground/bloggerproxy.py"&gt;salmon protocol&lt;/a&gt;&amp;nbsp;and ended up with my own 'Feed App' (Say it with a &lt;a href="http://www.abc.net.au/tv/beachedaz"&gt;New Zealand accent&lt;/a&gt;) check out the source code at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/wtwf/source/browse/#svn/trunk/feeds/feedappwtwf"&gt;http://code.google.com/p/wtwf/source/browse/#svn/trunk/feeds/feedappwtwf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I plan to extend it to implement the expandRss functionality in a server that should be more reliable than my home network connection but for now it does the job and that makes me happy. I encountered a few problems while writing it. The oauth code required you to be logged in, but I wanted some of the urls to work without being logged in. I finally tracked it down and used&amp;nbsp;users.create_login_url('/oauth/request_token') to make sure the user was logged in. The oauth.py code failed silently when the user wasn't logged in (very annoying!). I also found out that when you get the feed via oauth you end up getting all the draft blog posts too! so I had to write in a quick check to filter those out. I guess I really should make a google account that can only read the blogs then that might only get a feed with the real blog posts in it.&lt;br /&gt;
&lt;br /&gt;
Now I'm off to work out how to point all my old blog posts at the new blog that's living in a subdomain and to play with the new fancy blogger templates, whee!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-5379024690386755861?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=5379024690386755861" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5379024690386755861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5379024690386755861?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2010/02/more-private-feeds.html" title="more private feeds" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0AAQH4_eip7ImA9WxBWF0o.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-2377175226693468401</id><published>2010-02-09T19:14:00.000-08:00</published><updated>2010-02-09T19:15:41.042-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T19:15:41.042-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="buzz" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>getting google buzz on your desktop</title><content type="html">If you haven't yet got Google Buzz in your gmail, or like me you're using Google Apps For Your Domain (GAFYD) and you won't get it for a month or so there is a cunning trick you can use to get it on your desktop right now.&lt;br /&gt;
&lt;br /&gt;
All you need to do is pretend to be a mobile phone, phones going to buzz.google.com see the phone version of the UI and it's serviceable for posting updates and managing friends. There's so much missing but it's a good start. Google Chrome accepts a --user-agent flag and the user agent for the Google Nexus One phone is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Nexus One). &lt;/span&gt;That's easy to add under Windows or Linux, on the Mac it's a little harder but the&amp;nbsp;&lt;a href="http://dev.chromium.org/user-experience/user-data-directory"&gt;User Data Directory&lt;/a&gt;&amp;nbsp;page gives you instructions on how to set up a different user-data-dir which is also a good idea. Here's the string I used.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --enable-udd-profiles --user-data-dir=/Users/$USER/Library/Application\\ Support/Google/Buzz --user-agent='Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; (Nexus One)'  &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;"
&lt;/pre&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;/pre&gt;One day I'll work out a nice way to get the Buzz Icon in there, likely I'll spend days on it and finish the day before I get full featured buzz in my GAFYD mailbox!&lt;pre class="code"&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-2377175226693468401?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=2377175226693468401" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2377175226693468401?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2377175226693468401?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2010/02/getting-google-buzz-on-your-desktop.html" title="getting google buzz on your desktop" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DEAHRXg8eip7ImA9WxBREk4.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-6518342465543645337</id><published>2009-12-30T21:18:00.000-08:00</published><updated>2009-12-30T21:18:54.672-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-30T21:18:54.672-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="htpc" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="fglrx" /><title>mythtv and mythvideo</title><content type="html">A while ago my main hard drive died. Of course I had lots of backups, but nothing that I could boot so I reinstalled the OS. Since I was reinstalling I took the opportunity to install the latest ubuntu Karmic Koala. It all went well and I slowly rebuilt my machine setting things up how I like. First I got mail (postfix) and my own version of Mailman set up. Then it was on to the websites and then I took a break. These last three days I've been battling trying to get all my movies back to a viewable state. I was using XBMC before. I was hampered by some of the magic tricks I had learned in the past to get tv out working on my cheap radeon card. Here's what I learned:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;you need to dpkg --purge gdm to stop any kind of X starting when the machine boots&lt;/li&gt;
&lt;li&gt;you no longer need fglrx - don't even think of trying it, it's a red herring&lt;/li&gt;
&lt;li&gt;you need to add&amp;nbsp;vga=789 to /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT to get /dev/fb0&lt;/li&gt;
&lt;li&gt;you need to usermod -a -G audio $USER and then log out an back in to be able to use the soundcard&lt;/li&gt;
&lt;li&gt;aplay -l lists all your soundcards&lt;/li&gt;
&lt;li&gt;lspci and lsusb are really useful too&lt;/li&gt;
&lt;li&gt;ONLY gnome desktop appears to activate the TV out properly, any other window manager just seems to hang startx&lt;/li&gt;
&lt;li&gt;&amp;nbsp;/usr/bin/xrandr --output S-video --set load_detection 1 --size 800x600 is also needed after the X server has started (10 seconds)&amp;nbsp;to make TV out happen&lt;/li&gt;
&lt;li&gt;xbmc is &amp;nbsp;slow useless monkey and dead to me&lt;/li&gt;
&lt;li&gt;mythtv and mythvideo are the new hotness and my new best friend&lt;/li&gt;
&lt;li&gt;mythtv and mythvideo just work and are awesome&lt;/li&gt;
&lt;li&gt;you can run mythfrontend over X11 for setting up metadata but not play movies like that&lt;/li&gt;
&lt;li&gt;when getting metadata hit 'w' to get it&lt;/li&gt;
&lt;li&gt;if that fails enter some of the title&lt;/li&gt;
&lt;li&gt;you can easily download coverart from amazon and upload it&amp;nbsp;scp $(\ls -t | head -1) &amp;nbsp;server:/var/lib/mythtv/coverart/uploaded/&lt;/li&gt;
&lt;li&gt;I have /Movies be only directories and symlinks to the real data files living on lots of mounted volumes.&lt;/li&gt;
&lt;li&gt;If you move a symlink around all your metadata is lost. see below&lt;/li&gt;
&lt;li&gt;I am way too anal about getting all my metadata set up - at least good titles and coverart&lt;/li&gt;
&lt;li&gt;You can access the database directly and mess around with values&lt;/li&gt;
&lt;li&gt;backup your database!&lt;/li&gt;
&lt;li&gt;mysqldump --defaults-file=~/lib/mysql/.my.cnf.mythtv --opt mythconverg &amp;nbsp;&amp;gt;mtv.$(date +%F).sql&lt;/li&gt;
&lt;li&gt;I must find all my old mame roms for the myth mame plugin to play things!&lt;/li&gt;
&lt;li&gt;it works with lirc but you need a ~/.lircrc and then you symlink to that from ~/.mythtv/&lt;/li&gt;
&lt;li&gt;you can run dvdshrink under wine and it actually works!&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;So I had most of my metadata set up but my directory structure was very flat. Moving symlinks around would loose my metadata so I wrote a quick program to allow me to move links around and keep the database up to date. Of course this little script may totally bork YOUR setup, so be careful. This is super pre-alpha at this point, I might polish it up later.&lt;/div&gt;&lt;div&gt;Have a look at&amp;nbsp;&lt;a href="http://code.google.com/p/wtwf/source/browse/trunk/htpc/mythvideomv.py"&gt;mythvideomv.py&lt;span id="goog_1262235058384"&gt;&lt;/span&gt;&lt;span id="goog_1262235058385"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://draft.blogger.com/"&gt;&lt;/a&gt; you probably want to click on '&lt;a href="http://wtwf.googlecode.com/svn/trunk/htpc/mythvideomv.py"&gt;raw file&lt;/a&gt;' to get the actual file.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-6518342465543645337?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=6518342465543645337" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6518342465543645337?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6518342465543645337?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/12/mythtv-and-mythvideo.php" title="mythtv and mythvideo" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkINSHc9eip7ImA9WxBTFkg.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-393144555623316475</id><published>2009-12-05T14:25:00.000-08:00</published><updated>2009-12-12T13:49:59.962-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-12T13:49:59.962-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux blogger obsolete" /><title>sftp in a chroot environment</title><content type="html">You can ignore all the code below and just go read this page about &lt;a href="http://undeadly.org/cgi?action=article&amp;amp;sid=20080220110039"&gt;setting up a chroot sftp server with the standard openssh&lt;/a&gt;, it's built right in now and awesome!&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
I publish to my blog using sftp. Since I use blogger I had to give them a username and password. I wanted to restrict my exposure so I made a little program that would only run the sftp-server and run it in a chrooted environment, I then set this as the shell for the account. I'm not totally sure it's any more secure, but it makes me feel better.&lt;br /&gt;
&lt;br /&gt;
Getting the files I needed to run a program in a chroot environment was harder than expected, ldd didn't give me all the info I needed, but it was a good start.&lt;br /&gt;
&lt;br /&gt;
Check out the &lt;a href="http://code.google.com/p/wtwf/source/browse/#svn/trunk/sftpchroot"&gt;source code&lt;/a&gt;. with a README file and even an example of what files you'll need. At least in &amp;nbsp;Ubuntu 9.10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-393144555623316475?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=393144555623316475" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/393144555623316475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/393144555623316475?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/12/sftp-in-chroot-environment.php" title="sftp in a chroot environment" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C0EMQXc-eip7ImA9WxNbGU4.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-5379801301950612134</id><published>2009-11-22T15:10:00.001-08:00</published><updated>2009-11-22T15:14:40.952-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-22T15:14:40.952-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><title>Previous and Next links on posts</title><content type="html">I use blogger to publish this site. my goal was to have a posting ui that wasn't on the site that somebody else looked after that could publish to my own servers. Blogger does this, but it's still lacking in a lot of features and I end up doing a bunch of hacky stuff with php to get it to work how I want. Case in point: it would be nice to have previous and next links at the top or bottom of every post. but blogger doesn't support that. At least not with the 'old' templates, the only ones available if you want to publish to your own site via sftp.&lt;br /&gt;
&lt;br /&gt;
So here you go. &lt;a href="http://wtwf.googlecode.com/svn/trunk/feeds/prevnext.py"&gt;prevnext.py&lt;/a&gt; goes around your blogger directory and makes little .prevnext files for every php file it finds that there is a previous or next one for. It' a little complicated by the fact you might post more than one post a day. It also makes a calendar in your archives directory called index.html that you can use CSS to style how you want it displayed.&lt;br /&gt;
&lt;br /&gt;
Here is the css I use.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;.code {
&amp;nbsp;&amp;nbsp;overflow:auto; white-space: pre;
}

.prev {
&amp;nbsp;&amp;nbsp;float: left;
}
.next {
&amp;nbsp;float: right;
}
.prevnext {
&amp;nbsp;&amp;nbsp;clear: both;
}

.archive_calendar {}
.archive_calendar_start {}
.archive_calendar_year {
&amp;nbsp;&amp;nbsp;color: #B8A80D;
&amp;nbsp;&amp;nbsp;display: block;
}
.archive_calendar_month {
&amp;nbsp;&amp;nbsp;padding-left: 3px;
}
.archive_calendar_end {
&amp;nbsp;&amp;nbsp;display: block;
&amp;nbsp;&amp;nbsp;margin:0px 0px 14px 0px;
}
.archive_calendar_half_year {
&amp;nbsp;&amp;nbsp;display: block;
}
&lt;div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Here is how I include the .prevnext files in my templates&lt;/div&gt;&lt;br /&gt;
&lt;pre class="code"&gt;&amp;nbsp;&amp;nbsp;$pn = &amp;nbsp;str_replace('.php', '.prevnext', $_SERVER['SCRIPT_FILENAME']);
&amp;nbsp;&amp;nbsp;if (strpos( $_SERVER['SCRIPT_FILENAME'], 'index.php') === False &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;file_exists($pn)) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;include($pn);
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;}
&lt;/pre&gt;&lt;br /&gt;
and I run this from my crontab&lt;br /&gt;
&lt;pre class="code"&gt;1-59/5 * * * * cd /home/blogger/scripts; $HOME/bin/share/prevnext.py -b /scripts
&lt;/pre&gt;&lt;div&gt;works o.k. every time I try and play with templates and whatnot, I always feel like redoing the whole thing, but then decide it's a huge waste of time, I should concentrate on getting the info out there rather than prettying it up for the 3 people who might actually read this blog, and most of them read it in an rss reader anyway!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-5379801301950612134?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=5379801301950612134" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5379801301950612134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5379801301950612134?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/11/previous-and-next-links-on-posts.php" title="Previous and Next links on posts" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;CkMFR3g8eCp7ImA9WxNbF0o.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-8032461454756387571</id><published>2009-11-20T18:26:00.000-08:00</published><updated>2009-11-20T18:26:56.670-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T18:26:56.670-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>my first google chrome extension</title><content type="html">here is &lt;a href="http://wtwf.googlecode.com/svn/trunk/chrome/extensions/fix-style.crx"&gt;fix-style.crx&lt;/a&gt; tah dah. It makes the article text in Google Reader and Slashdot larger (and readable).&amp;nbsp;Here is &lt;a href="http://code.google.com/p/wtwf/source/browse/trunk/chrome/extensions/#extensions/fix-style"&gt;the source&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
Since I wrote that I've also ported over some of my other greasemonkey scripts. I still need to polish them up a lot but they're working and that's cool. I'm looking forward to playing with settings pages and auto updates and what not.&lt;br /&gt;
&lt;br /&gt;
I also made a Makefile (my first in about 7 years) to make the .crx file automatically using a python program I found on the intertubes (and modified slightly)&lt;br /&gt;
&lt;br /&gt;
I'm mostly using the dev channel Chrome on Linux and Mac and they just added extensions support, it's really nice and is now my primary browser.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-8032461454756387571?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=8032461454756387571" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8032461454756387571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8032461454756387571?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/11/my-first-google-chrome-extension.php" title="my first google chrome extension" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkYEQHk4fCp7ImA9WxNbF0o.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-585641413990595348</id><published>2009-11-20T18:21:00.000-08:00</published><updated>2009-11-20T18:21:41.734-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T18:21:41.734-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="domain" /><category scheme="http://www.blogger.com/atom/ns#" term="mailman" /><category scheme="http://www.blogger.com/atom/ns#" term="mail" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Mailman and Google Apps For Your Domain conflict</title><content type="html">&lt;div&gt;the recent addition of x-beenthere mail headers for Google Apps For Your Domain (gafyd) &amp;nbsp;groups stopped my mailman setup working. I thought I'd share it here in case anyone else is asking about it.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;I have mailman running on &lt;a href="http://server.example.com/" target="_blank"&gt;server.example.com&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;I have &lt;a href="http://example.com/" target="_blank"&gt;example.com&lt;/a&gt; set up as google apps for your domain with gmail&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I have a 'group' created to send mail from &lt;a href="mailto:list@example.com" target="_blank"&gt;list@example.com&lt;/a&gt; to &lt;a href="mailto:list@server.example.com" target="_blank"&gt;list@server.example.com&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;on my server I had &lt;a href="mailto:list@server.example.com" target="_blank"&gt;list@server.example.com&lt;/a&gt; run the mailman binary with post to list whose email address is listed as &lt;a href="mailto:list@exmaple.com" target="_blank"&gt;list@exmaple.com&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;this was working perfectly however since Sep 17th 2009 gafyd is inserting x-beenthere: &lt;a href="mailto:list@example.com" target="_blank"&gt;list@example.com&lt;/a&gt; which /var/lib/mailman/&lt;wbr&gt;&lt;/wbr&gt;Mailman/Handlers/Approve.py detects as a loop and mailman mysteriously drops the message with a log in &lt;br /&gt;
&lt;/div&gt;&lt;div&gt;/var/lib/mailman/logs/vette " (3902) Message discarded, msgid: ...."&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;the solution to me was to move the list to a non gafyd domain :(&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-585641413990595348?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=585641413990595348" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/585641413990595348?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/585641413990595348?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/11/mailman-and-google-apps-for-your-domain.php" title="Mailman and Google Apps For Your Domain conflict" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkcGQXYzeip7ImA9WxNbF0o.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-7418764422075072521</id><published>2009-11-20T18:20:00.000-08:00</published><updated>2009-11-20T18:20:20.882-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T18:20:20.882-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="greasemonkey" /><category scheme="http://www.blogger.com/atom/ns#" term="picasaweb" /><title>My last greasemonkey script: blog picasa images</title><content type="html">I got so fed up with picasaweb breaking web conventions and stealing an onMouseDown rather than an onClick. This prevented me from dragging images from a picasa album into my blogger posting window and made it a pain to add images to my blogs. I'd have to right click, copy image location, new tab, select all, copy, close tab, tab over to my bloger window and then paste (and hope I was in compose mode rather than edit html mode).&lt;br /&gt;
&lt;br /&gt;
I wrote this greasemonkey script to add a blog button at the top, clicking it made a new window with all your images in it and a link back to the original album.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://wtwf.googlecode.com/svn/trunk/picasaweb/blog_picasa_images.user.js"&gt;blog_picasa_images.user.js&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Right after I did this blogger in draft added &lt;a href="http://bloggerindraft.blogspot.com/2009/11/better-image-posting-on-blogger-in.html"&gt;better image linking&lt;/a&gt; support and it works great. So this script is kind of useless to me know. but thought I'd post incase it helps someone out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-7418764422075072521?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=7418764422075072521" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/7418764422075072521?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/7418764422075072521?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/11/my-last-greasemonkey-script-blog-picasa.php" title="My last greasemonkey script: blog picasa images" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkUMSH45fip7ImA9WxJXEkg.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-5661549198158907523</id><published>2009-06-05T18:02:00.000-07:00</published><updated>2009-06-05T18:04:49.026-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-05T18:04:49.026-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xp" /><title>How to not have Log Off in the start menu AND have a nice shutdown dialog? Help Please</title><content type="html">While setting up my windows XP machine for my Ham Radio station I suffered through the endless reboots and windows updates, then prompts and reboots etc. I even managed to configure it a bit like I wanted. One nagging thing remains and hopefully someone reading this can help.&lt;br /&gt;&lt;br /&gt;I turned off the LogOff button since it always confused me using these steps&lt;br /&gt;&lt;a href="http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/11022/" target="_blank"&gt;http://www.liutilities.com/&lt;wbr&gt;products/registrybooster/&lt;wbr&gt;tweaklibrary/tweaks/11022/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also turned off requiring a password to login by following these steps:&lt;br /&gt;&lt;a href="http://www.computerhope.com/issues/ch000536.htm" target="_blank"&gt;http://www.computerhope.com/&lt;wbr&gt;issues/ch000536.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;but now when I select shutdown instead of seeing this nice dialog like this:&lt;br /&gt;&lt;img alt="http://1.bp.blogspot.com/_VBEK0aoUfHg/SIwD6C06b0I/AAAAAAAAAUs/VkHTq2cSmNc/s320/shutdown_dialog_box_xp_84productions_blogspot_com.jpg" src="http://1.bp.blogspot.com/_VBEK0aoUfHg/SIwD6C06b0I/AAAAAAAAAUs/VkHTq2cSmNc/s320/shutdown_dialog_box_xp_84productions_blogspot_com.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I see an awful one like this:&lt;br /&gt;&lt;img alt="http://www.hotlinkfiles.com/files/1068277_nrscd/ShutdownDialogXP.jpg" src="http://www.hotlinkfiles.com/files/1068277_nrscd/ShutdownDialogXP.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Any idea how to get the old one back?&lt;br /&gt;&lt;br /&gt;Many thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-5661549198158907523?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=5661549198158907523" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5661549198158907523?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5661549198158907523?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/06/how-to-not-have-log-off-in-start-menu.php" title="How to not have Log Off in the start menu AND have a nice shutdown dialog? Help Please" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_VBEK0aoUfHg/SIwD6C06b0I/AAAAAAAAAUs/VkHTq2cSmNc/s72-c/shutdown_dialog_box_xp_84productions_blogspot_com.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUYERHg_fSp7ImA9WxJWEUQ.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-6614423495150495775</id><published>2009-06-01T20:49:00.001-07:00</published><updated>2009-06-16T17:05:05.645-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-16T17:05:05.645-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ham" /><title>I have a Ham radio blog</title><content type="html">I've not blogged about it here, even though I guess it is of a technical nature, but I've blogged a bit about it on my personal blog. There hasn't been much, but it seems to be growing a lot and I wanted to document it in the hopes that it might help or encourage someone else. That said, I realize what a dry subject it is and I don't want to blog about it too much here in the fear that I might cause someone to unsubscribe!&lt;br /&gt;&lt;br /&gt;So if you want to read about my Radio Ham Geekery let me know and I'll let you know the URL.&lt;br /&gt;&lt;br /&gt;The short summary is that I got my Technician license, got a VHF handheld, then got my General license and built a 1W transceiver from a kit and I'm playing with that right now. I've become much more interested in this than I ever imagined I might be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-6614423495150495775?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=6614423495150495775" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6614423495150495775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6614423495150495775?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/06/i-have-ham-radio-blog.php" title="I have a Ham radio blog" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DkAEQHw7eyp7ImA9WxVaEk8.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-8588446660041247906</id><published>2009-04-08T14:02:00.000-07:00</published><updated>2009-04-08T14:05:01.203-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-08T14:05:01.203-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux bash" /><title>control-w deleting word in bash</title><content type="html">It's always bothered me that control-w in bash doesn't delete a word, it deletes everything until the previous space.&lt;br /&gt;&lt;br /&gt;Add this to your ~/.inputrc to make it work:&lt;pre class="code"&gt;set bind-tty-special-chars off&lt;br /&gt;"\C-w": backward-kill-word&lt;/pre&gt;More description &lt;a href="http://www.shallowsky.com/blog/linux/bash-word-erase.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-8588446660041247906?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=8588446660041247906" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8588446660041247906?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8588446660041247906?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/04/control-w-deleting-word-in-bash.php" title="control-w deleting word in bash" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU8GQnk_fCp7ImA9WxVWE04.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-2455964868673839186</id><published>2009-02-22T12:12:00.000-08:00</published><updated>2009-02-22T12:17:03.744-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-22T12:17:03.744-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>mac: turning off sound at night</title><content type="html">I thought I'd share:&lt;br /&gt;&lt;br /&gt;My daughter sleeps in the room next to the den where my mac is. My email notifier pings when I get mail and I don't want it to wake her up. I made two cron entries that turn it off between noon and 4PM and 6PM and 7AM. I've also included the little header I have at the top of my crontab files to remind me what the hell each column means.&lt;pre class="code"&gt;#              field          allowed values&lt;br /&gt;#              -----          --------------&lt;br /&gt;#              minute         0-59&lt;br /&gt;#              hour           0-23&lt;br /&gt;#              day of month   1-31&lt;br /&gt;#              month          1-12 (or names, see below)&lt;br /&gt;#              day of week    0-7 (0 or 7 is Sun, or use names)&lt;br /&gt;# If you are feeling fancy try this... 0-59/10 every 10 minutes&lt;br /&gt;# 0,24,36,48 at these minutes past the hour&lt;br /&gt;&lt;br /&gt;# Turn off the sound at night time and nap time.&lt;br /&gt;1 12,18 * * * osascript -e "set volume 0"&lt;br /&gt;1 7,16 * * * osascript -e "set volume 10"&lt;/pre&gt;I also learned how to remove the little eject button (or anything) from the menu bar in OSX 10.5 Leopard. You just hold down the cmd key and drag it off there with your mouse and it vanishes. No news on how to get it back!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-2455964868673839186?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=2455964868673839186" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2455964868673839186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2455964868673839186?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/02/mac-turning-off-sound-at-night.php" title="mac: turning off sound at night" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkENR34yeip7ImA9WxVSF0Q.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-446020031922991028</id><published>2009-01-12T12:50:00.000-08:00</published><updated>2009-01-12T13:11:36.092-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-12T13:11:36.092-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="htpc" /><category scheme="http://www.blogger.com/atom/ns#" term="fglrx" /><category scheme="http://www.blogger.com/atom/ns#" term="lirc" /><title>battling fglrx</title><content type="html">There were new dns exploits around and when I ran apt-get dist-upgrade it had some bind and ssl packages in the list so I thought it would be important to do the upgrade. It also upgraded my kernel which I think is where the problems started.&lt;br /&gt;&lt;br /&gt;Then my xbmc started being really slow. Like 1 frame a second slow. Of course vlc was just fine. fglrxinfo reported the Mesa drivers which meant I wasn't getting hardware video acceleration like I should be. What followed was a long list of frustration and I'm going to document what's working in the hope that when this happens again I'll be able to get it working quicker. Let it be known. I barely understand what half of these commands do but in the end I got it working.&lt;br /&gt;&lt;pre class="code"&gt;$dpkg -l '*fglrx*'&lt;br /&gt;# then remove all of them&lt;br /&gt;$rmmod fglrx intel_agp agpgart &lt;br /&gt;$depmod -a&lt;br /&gt;$ls -l  /usr/lib/dri/fglrx_dri.so &lt;br /&gt;# remove it if it's there&lt;br /&gt;$apt-get install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++5 dkms linux-headers-$(uname -r) &lt;br /&gt;$apt-get install xorg-driver-fglrx-envy&lt;br /&gt;$Xorg&lt;br /&gt;$glxinfo | fgrep -i dir&lt;br /&gt;direct rendering: Yes&lt;br /&gt;$fglrxinfo &lt;br /&gt;display: :0.0  screen: 0&lt;br /&gt;OpenGL vendor string: ATI Technologies Inc.&lt;br /&gt;OpenGL renderer string: Radeon X300/X550/X1050 Series&lt;br /&gt;OpenGL version string: 2.1.7659 Release&lt;br /&gt;$glxgears &lt;br /&gt;7921 frames in 5.0 seconds = 1584.096 FPS&lt;br /&gt;7855 frames in 5.0 seconds = 1570.389 FPS&lt;br /&gt;7796 frames in 5.0 seconds = 1559.176 FPS&lt;br /&gt;$fgl_glxgears &lt;br /&gt;Using GLX_SGIX_pbuffer&lt;br /&gt;1871 frames in 5.0 seconds = 374.200 FPS&lt;br /&gt;1971 frames in 5.0 seconds = 394.200 FPS&lt;br /&gt;2018 frames in 5.0 seconds = 403.600 FPS&lt;br /&gt;2005 frames in 5.0 seconds = 401.000 FPS&lt;br /&gt;&lt;/pre&gt;I also found out that my mceusb2 lirc remote receiver can look for more than one remote at a time. I found the &lt;a href="http://lirc.sourceforge.net/remotes/tivo/TIVO_Series_1"&gt;TIVO_Series_1&lt;/a&gt; worked great and now I can move on to stage 2 of my control. I plan to have a small python script looking at the output of irw and when it detects the xbmc remote it will switch the receiver on and change inputs on the video switch. When it sees the tivo remote it'll switch everything back. I need to work out the secret url's to hit to control the destiny networks d3k (which controls the receiver and video switch) so I'll have to fire up a windows machine to do that (it's internet explorer only). If I get the lirc dongle to emit IR then I can avoid much of the d3k which will suit me just fine.&lt;br /&gt;&lt;br /&gt;I also got spdif out working so now I have dolby surround sound in the movies I watch. I was expecting trouble, but it really was as easy as connecting the cable and changing audio output to be digital. Awesome! We're really close to a pretty good working system. After all that, Mame is next on the list!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-446020031922991028?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=446020031922991028" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/446020031922991028?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/446020031922991028?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/01/battling-fglrx.php" title="battling fglrx" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkcGR307eCp7ImA9WxVSFUg.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-7207511451667268604</id><published>2009-01-06T13:38:00.000-08:00</published><updated>2009-01-09T19:27:06.300-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-09T19:27:06.300-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>Filling up a 1.5 TB hard drive</title><content type="html">My 1.5TB drive arrived and I threw it into the server. Then I had to fill it up. I have two external 750 gig drives filled with the raw video_ts files from all my DVD's that I ripped myself. It took under about 18 hours to copy all the data over, with a gap in the middle while I was sleeping and then switched over the drives. I'm pretty happy with rsync but wished I'd used the -h flag to report the sizes in a human readable form. Since I'm running some system status software I have a nice graph of the hard drive filling up:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wtwf.com/scripts/uploaded_images/diskfull-762873.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 155px;" src="http://wtwf.com/scripts/uploaded_images/diskfull-762843.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Things are going pretty well with the xbmc setup. I got my &lt;a href="http://www.amazon.com/Premium-Ultimate-Remote-Control-Mediagate/dp/B000W5GK5C/"&gt;Mediagate GP-IR02BK remote&lt;/a&gt; and that appeared to work first time with lirc and when I restarted xbmc it was controlled by the remote! One problem was that the DVD Menu button didn't appear to show the DVD Menu which is kind of critical.&lt;br /&gt;&lt;br /&gt;I've worked around it for now by adding this to ~/.xbmc/userdata/Lircmap.xml&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;hash&amp;gt;DVD&amp;lt;/hash&amp;gt;&lt;/pre&gt; and also adding this ~/.xbmc/userdata/Keymap.xml&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;keymap&amp;gt;&lt;br /&gt;&amp;lt;FullScreenVideo&amp;gt;&lt;br /&gt; &amp;lt;remote&amp;gt;&lt;br /&gt;    &amp;lt;hash&amp;gt;ShowVideoMenu&amp;lt;/hash&amp;gt;&lt;br /&gt; &amp;lt;/remote&amp;gt;&lt;br /&gt;&amp;lt;/FullScreenVideo&amp;gt;&lt;br /&gt;&amp;lt;/keymap&amp;gt;&lt;br /&gt;&lt;/pre&gt;Notice how that's Keymap.xml not keymap.xml the xbmc documentation is obviously written by windows developers who don't care about the Case of FiLeNaMEs. I'm also irked by the camel casing in entity names in their xml too and their non-consistent use of different cases for file names (like Keymap.xml and advancedsettings.xml)&lt;br /&gt;&lt;br /&gt;I also found that the log output to xbmc is in /var/tmp/$LOGNAME-xbmc.log&lt;br /&gt;&lt;br /&gt;Since I was changing config files a lot I ran xbmc like this:&lt;pre class="code"&gt;while true; do echo "Starting XBMC"; xbmc; sleep 1; done&lt;/pre&gt;This allowed me to hit control-C in the window it's launched from and it would restart.&lt;br /&gt;I couldn't find a way to get it to restart and to also tail -f the log file (since it starts a new log file every time it starts). I guess I could pkill tail but that seemed a bit drastic.&lt;br /&gt;&lt;br /&gt;Other things I learned and wouldn't mind remembering: mkfs -t ext3 /dev/sdb1&lt;br /&gt;and to remove a file that starts with a - sign: rm -r ./-Funky\ Filename&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-7207511451667268604?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=7207511451667268604" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/7207511451667268604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/7207511451667268604?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2009/01/filling-up-15-tb-hard-drive.php" title="Filling up a 1.5 TB hard drive" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUEEQ309cCp7ImA9WxVTEkk.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-3620474348407734647</id><published>2008-12-22T16:34:00.000-08:00</published><updated>2008-12-25T15:26:42.368-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-25T15:26:42.368-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>TV Out working with a cheap ATI X1050 card</title><content type="html">I got TV out working on my cheap $20 ATI X1050 PCIE graphics card under Linux. It worked first time after following these instructions. I had to modify it slightly so there was only one display (the TV). I even got it to work with x11vnc which meant I could do most of my setup remotely and not have to have the TV on.&lt;br /&gt;&lt;br /&gt;However after following some XBMC instructions I noticed I was running the Mesa GL library and not the ATI hardware one.&lt;pre class="code"&gt;DISPLAY=:0.0 glxinfo | fgrep direct&lt;/pre&gt;was reporting direct rendering: No&lt;br /&gt;&lt;pre class="code"&gt;DISPLAY=:0.0 fglrxinfo&lt;/pre&gt;was showing Mesa.&lt;br /&gt;&lt;br /&gt;Even though I was getting pretty impressive frame rate with Mesa I upgraded to the downloadable (from ATI) driver and that screwed everything up. Even though it was now reporting direct rendering the performance was sucky. I also noticed that as soon as I killed the first X Client, X windows would exit too. not too sure what that's about. I uninstalled the downloaded drivers and went back to the gflrx drivers from ubuntu and that gave me direct rendering and pretty good frame rates. Sadly x11vnc no longer works, even though I downloaded the most recent version and compiled it myself. It keeps getting ShMem errors.&lt;pre class="code"&gt;With downloaded ATI drivers&lt;br /&gt;# fgl_glxgears&lt;br /&gt;Using GLX_SGIX_pbuffer&lt;br /&gt;1423 frames in 5.0 seconds = 284.600 FPS&lt;br /&gt;1780 frames in 5.0 seconds = 356.000 FPS&lt;br /&gt;1741 frames in 5.0 seconds = 348.200 FPS&lt;br /&gt;# glxgears&lt;br /&gt;1837 frames in 5.0 seconds = 366.721 FPS&lt;br /&gt;1927 frames in 5.0 seconds = 385.396 FPS&lt;br /&gt;1904 frames in 5.0 seconds = 380.799 FPS&lt;br /&gt;&lt;br /&gt;With ubuntu fglrx drivers&lt;br /&gt;# fgl_glxgears&lt;br /&gt;Using GLX_SGIX_pbuffer&lt;br /&gt;2568 frames in 5.0 seconds = 513.600 FPS&lt;br /&gt;3032 frames in 5.0 seconds = 606.400 FPS&lt;br /&gt;3009 frames in 5.0 seconds = 601.800 FPS&lt;br /&gt;# glxgears&lt;br /&gt;12657 frames in 5.0 seconds = 2531.301 FPS&lt;br /&gt;12632 frames in 5.0 seconds = 2526.393 FPS&lt;br /&gt;12531 frames in 5.0 seconds = 2506.009 FPS&lt;/pre&gt;&lt;br /&gt;Once I had video set up Audio was a doddle, installed alsa and alsamixer and alsaplayer and immediately sound came out! I still need to spend some time to get digital optical audio out, but I'll leave that for some other day.&lt;br /&gt;&lt;br /&gt;XBMC has screen resolution and calibration tools built in. I also used [aticonfig --tv-info] and [aticonfig --tv-geometry=40x90+0+2] before I found the calibration menu and got my screen size set up.&lt;br /&gt;&lt;br /&gt;Controlling XBMC is still a problem. I'm using the web ui (turn on in settings), &lt;a href="http://synergy2.sf.net/"&gt;synergy&lt;/a&gt; from a laptop, the iPhone web ui is too limited (Couldn't find any transport controls), But the $3 iPhone App seems workable for now. I had hoped to be able to use my really old X10 MouseRemote but it appears to have died. I tried it with two different serial ports and neither got any data out of it. The little LED didn't flash when I pressed buttons. So I looked up some remotes online and ended up ordering a &lt;a href="http://www.amazon.com/Premium-Ultimate-Remote-Control-Mediagate/dp/B000W5GK5C/"&gt;Mediagate MCE Remote&lt;/a&gt; which should work just fine. I'll keep you posted on that.&lt;br /&gt;&lt;br /&gt;Lastly I fear that my current home automation controller. A Destiny Networks D3K is close to it's end of life. The company's gone bust so I don't get any updates anymore. The control software only runs under Windows and my last machine that had it installed died. I'm trying to muddle along with what I have set up right now, so to get the HTPC/XBMC you need to press VCR and there's no way to get to VCR now (unless you go in and press buttons (the horror!).&lt;br /&gt;Perhaps with this new remote I'll be able to control some stuff. Seems relays and IR emitters are expensive (at least from Global Cache, so I might have to work in some &lt;a href="http://en.wikipedia.org/wiki/Arduino"&gt;arduino&lt;/a&gt; boards or something. That's a long time in the future though.&lt;br /&gt;&lt;br /&gt;Sooner than that I'm going to get a 1.5TB drive (or two) and put more of my movies on it. And I need to work out how to Rip some of these Disney DVD's...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-3620474348407734647?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=3620474348407734647" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/3620474348407734647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/3620474348407734647?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/12/tv-out-working-with-cheap-ati-x1050.php" title="TV Out working with a cheap ATI X1050 card" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0QMQX08fip7ImA9WxRaGEw.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-6179068972329091944</id><published>2008-12-20T15:09:00.001-08:00</published><updated>2008-12-20T15:23:00.376-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-20T15:23:00.376-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>zoneminder, bt878 based video capture card and ubuntu hardy</title><content type="html">I use &lt;a href="http://www.zoneminder.com/"&gt;zoneminder&lt;/a&gt; for my security cameras and with the new server (and new OS) I had to set up zoneminder again. I have a bt878 based card which worked great in the old setup.&lt;br /&gt;&lt;br /&gt;Here's some tips to get things going:&lt;br /&gt;&lt;pre class="code"&gt;xawtv -hwscan&lt;/pre&gt;Should be able to find your hardware, if not you're not going anywhere.&lt;br /&gt;&lt;pre class="code"&gt;xawtv -device /dev/video0&lt;/pre&gt;or whatever hwscan told you, should show images, if not you need to look into that.&lt;br /&gt;&lt;br /&gt;Once you have that all working the secret sauce is to add the user that runs your apache cgi scripts to the video group, so they can access /dev/video0&lt;br /&gt;&lt;pre class="code"&gt;usermod  -a -G video www-data&lt;/pre&gt;now zoneminder should show your cameras.&lt;br /&gt;&lt;br /&gt;My cameras are 320x240 NTSC&lt;br /&gt;&lt;br /&gt;Other useful stuff:&lt;br /&gt;&lt;pre class="code"&gt;lsmod | fgrep bt&lt;br /&gt;&lt;br /&gt;bt878                  11992  0&lt;br /&gt;bttv                  176180  2 bt878&lt;br /&gt;ir_common              36100  1 bttv&lt;br /&gt;compat_ioctl32          2304  1 bttv&lt;br /&gt;i2c_algo_bit            7300  1 bttv&lt;br /&gt;videobuf_dma_sg        15108  1 bttv&lt;br /&gt;videobuf_core          18820  2 bttv,videobuf_dma_sg&lt;br /&gt;btcx_risc               5896  1 bttv&lt;br /&gt;tveeprom               16528  1 bttv&lt;br /&gt;i2c_core               24832  4 bttv,i2c_algo_bit,i2c_piix4,tveeprom&lt;br /&gt;videodev               29312  2 bttv&lt;br /&gt;v4l2_common            18304  2 bttv,videodev&lt;br /&gt;v4l1_compat            15492  2 bttv,videodev&lt;br /&gt;&lt;/pre&gt;My card was $20 from &lt;a href="http://geeks.com/"&gt;geeks.com&lt;/a&gt;, It has 4 inputs and I'm really happy with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-6179068972329091944?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=6179068972329091944" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6179068972329091944?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6179068972329091944?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/12/zoneminder-bt878-based-video-capture.php" title="zoneminder, bt878 based video capture card and ubuntu hardy" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEIMSXYyfyp7ImA9WxRaFUo.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-1240660517574514548</id><published>2008-12-09T09:59:00.000-08:00</published><updated>2008-12-17T19:56:28.897-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-17T19:56:28.897-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><title>another new server</title><content type="html">The old new server didn't work out at all. It had a weird glitch that when the memory usage went up to 100% and it started to want to try and use the swap the machine would lock up. Sometimes I could preempt this with rebooting, but other times it was stuck until I got home to hard power cycle it. Luckily I got it from someone at work and after we had tried different memory modules he took it back. It was lucky really since I'd been looking around and really wanted something a little better and was more into the idea of actually having a Home Theater PC (HTPC) in the rack. Especially since my daughter is starting to want to watch movies with us and I don't want to mess around with opening DVD's and stuff.&lt;br /&gt;&lt;br /&gt;I did a little research and with some help from the egg heads at work came up with this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wtwf.com/scripts/uploaded_images/motherboard_productimageback_ga-ma78gm-s2h_big-751389.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 112px;" src="http://wtwf.com/scripts/uploaded_images/motherboard_productimageback_ga-ma78gm-s2h_big-751383.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/gp/product/B001C47LE6" target="_blank"&gt;PHENOM(9XXX)QUAD,AM2+/AM2,&lt;wbr&gt;780G,4DDR2,ATX&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/gp/product/B000XBELLK" target="_blank"&gt;Athlon 64 X2 Dc 5200+ AM2 2.7GHZ 1MB 65NM 65W 2000MHZ Pib&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/gp/product/B000TPXULC" target="_blank"&gt;CORSAIR XMS2 4GB ( 2 X 2GB ) PC2-6400 800MHz 240-pin DDR2 CL5 Dual Channel Desktop Memory Kit - TWIN2X4096-6400C5&lt;/a&gt; &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/gp/product/B000BKBVT8" target="_blank"&gt;Coolmax 14616 V-400 ATX Power Supply&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Pretty sweet for under $200! When it arrived I started pulling apart my old 4u case to put this new stuff in and while I was halfway through, I thought, you know... I really should just smoke test this new stuff before installing it. I dismantled more stuff while that thought was still nagging in my head and finally stopped and set it up on the bench. Sure enough it didn't work! I tried lots of things and couldn't get it to work. Filed a support ticket with the board manufacturer and put my old server back together. The next day I bought a new motherboard and power supply from Frys to test some theories. When I got them home they too didn't work and I finally hit jackpot when I tried each of the memory modules separately. One was bad! I ordered a whole new set and will mail one set back once I find two that work and then took the other stuff back to Frys.&lt;br /&gt;&lt;br /&gt;Now my server was working!&lt;br /&gt;&lt;br /&gt;This motherboard had so many awesome ports I was delighted, especially with the optical audio out, external SATA and the hdmi connector. I was sad it didn't have svideo and didn't have a com port either (I have an old X10 remote that has a serial port and also a weather station I plan to hook up at some point). However graphics cards with svideo are available for $20 (ATI X1050) and you can get usb to serial port adapters for under $10 so that's not a big deal. Once I read the manual I found out there were lots of headers for more ports so I got another 4 USB, 1 firewire and more audio ports for a $15 floppy disk sized header and ordered the official com port header (I thought about making my own, but it was just too much trouble).&lt;br /&gt;&lt;br /&gt;Another thing that pleased me was that I could adjust the bios settings over the DVI port, which means I can mess with my system in the den, rather than dragging it into the bedroom where the only VGA display in the house is. This allowed me to find the second easter egg. Even though every bios ever made has allowed you to set what happens when the power comes back on, my old motherboard didn't. I was delighted I could make my server come back on automatically after a power cut with the new board. Yipee. Of course once I put the X1050 graphics card in there I couldn't access the bios at all on either DVI port, but at least once the system booted I could see the Linux console on the X1050 DVI port. Good signs I'll be able to get svideo working at some point.&lt;br /&gt;&lt;br /&gt;So now I'm setting up the new machine and I might make one or two posts about that as time goes on. I will leave you with this quick (and dirty) performance number. The old server reported just under 1,800 &lt;a href="http://en.wikipedia.org/wiki/Bogomips"&gt;BogoMips&lt;/a&gt; and the new system with 2 core's clocks in at 10,800 (that's 5,400 per core). Now to find something to do with all that power.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-1240660517574514548?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=1240660517574514548" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/1240660517574514548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/1240660517574514548?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/12/another-new-server.php" title="another new server" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;AkQHQHk5eip7ImA9WxRUFEU.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-5359247231243385604</id><published>2008-11-20T20:11:00.000-08:00</published><updated>2008-11-23T16:58:51.722-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-23T16:58:51.722-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><title>a new server</title><content type="html">I'm moving to a new server at home sometime soon, so if things go screwy, that's why. I dropping the huge 4U rack mounted beast I've &lt;a href="http://wtwf.com/scripts/2007/07/there-go-my-nines.php"&gt;posted about before&lt;/a&gt;. In its place is going to be a teeny shuttle case with one PCI slot which is really all I need for my security cam capture cards. I'm going through the stages of setting up ubuntu 8 (hardy) on it right now. I got the PC for $120 which I thought was a deal. I ordered a 1TB SATA drive ($100!) to throw in there and it'll just have one drive for now. It has room for another drive, so at some point I might add another 1.5TB or so. If I need it.&lt;br /&gt;&lt;br /&gt;Installing ubuntu was a doddle, I installed the server version since that has the longest support lifetime. To get it usable I'm listing the packages I installed incase I need to do it again:&lt;br /&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;sudo apt-get install gcc python-dns binutils-doc autoconf automake1.9 bison flex gcc-doc gcc-multilib gdb libtool make manpages-dev gcc-4.2-doc gcc-4.2-locales gcc-4.2-multilib libgcc1-dbg libgomp1-dbg libmudflap0-4.2-dev libmudflap0-dbg libc6-dev libc-dev&lt;br /&gt;apt-get install gcc python-dns binutils-doc autoconf automake1.9 bison flex gcc-doc gcc-multilib gdb libtool make manpages-dev gcc-4.2-doc gcc-4.2-locales gcc-4.2-multilib libgcc1-dbg libgomp1-dbg libmudflap0-4.2-dev libmudflap0-dbg&lt;br /&gt;sudo apt-get install mailman&lt;br /&gt;sudo apt-get install smokeping curl libauthen-radius-perl libio-socket-ssl-perl libnet-dns-perl libnet-ldap-perl libnet-telnet-perl libsocket6-perl libio-socket-inet6-perl echoping&lt;br /&gt;sudo apt-get install apache2 ssh libapache2-mod-python php5 libapache2-mod-perl2 bind9 mailman screen tkdiff xauth mailx screen  cvs python-cheetah python-mysqldb pychecker x11-apps resolvconf libapache2-mod-python-doc python-egenix-mxdatetime python-mysqldb-dbg tclreadline mesa-utils pdksh libbsd-resource-perl xterm&lt;br /&gt;&lt;br /&gt;spec's are: Celeron 420, 1 GB of DDR2 RAM, &lt;a href="http://us.shuttle.com/kpc/index.htm"&gt;Shuttle KPC K45 SFF&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-5359247231243385604?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=5359247231243385604" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5359247231243385604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/5359247231243385604?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/11/new-server.php" title="a new server" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C04NQHs5fip7ImA9WxRQGU0.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-6962135052197028914</id><published>2008-10-07T14:42:00.000-07:00</published><updated>2008-10-13T05:46:31.526-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-13T05:46:31.526-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>xterms, gnu screen and emacs and control cursor keys</title><content type="html">If you have a problem with pressing control and the cursor keys in emacs I might have the solution.&lt;br /&gt;&lt;br /&gt;After upgrading to ubuntu hardy and upgrading to OS X leopard I found that my xterms into my old web server would running dapper not honor the control arrow keys in emacs. It worked fine in bash but not emacs. Emacs would see it as two key presses which is harder to create a keybinding for, M-x describe key would show "ESC [ 1 ;" and then 5C would be added to the current buffer.&lt;br /&gt;&lt;br /&gt;The solution I found was to use emacs 22 not emacs 21. emacs-snapshot on dapper seems to be 22. That fixed it in xterms, but during a gnu screen session it was still borked. I found this was likely a termcap issue there so fixed it by ading term=xterm to my screenrc which now looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;vbell off&lt;br /&gt;defscrollback 1000&lt;br /&gt;escape ^^^^&lt;br /&gt;term xterm&lt;br /&gt;&lt;br /&gt;# enable scrolling in the xterm&lt;br /&gt;termcapinfo xterm|xterms|xs|rxvt ti@:te@&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's another blog post about &lt;a href="http://snarfed.org/space/control+arrow+keys+in+rxvt,+tcsh,+and+emacs"&gt;rxvt and stuff&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-6962135052197028914?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=6962135052197028914" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6962135052197028914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6962135052197028914?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/10/xterms-gnu-screen-and-emacs-and-control.php" title="xterms, gnu screen and emacs and control cursor keys" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;AkcHSHY9fCp7ImA9WxdUGEw.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-2272949289590751888</id><published>2008-08-02T06:33:00.001-07:00</published><updated>2008-08-03T19:47:19.864-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-03T19:47:19.864-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mp3" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="itunes" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>iPhone</title><content type="html">I finally got an iPhone. I wanted one the day they came out, but I'm allergic to waiting in line. I went for a bike ride instead. I showed up at the AT&amp;amp;T store 90 minutes after it was supposed to open, convinced apple couldn't screw up supplies as bad as they did for the 1st gen and there would be some left and I wouldn't have to wait in line. However this store was in a mall so didn't open at 8AM, they opened at 10AM and it was 9:30 and there was a line of 20 people in front. I decided to bail and after hearing about the activation issues, I'm really glad I did. When there was still a shortage a few days later I went to another AT&amp;amp;T store and put myself down for direct fulfilment, you pay, they ship it to the store. 2 weeks later I had my phone. No waiting in line, well worth it. I was a teeny bit annoyed, they said they'd email the day before and call day of, but I never got the email, then got the call when I didn't have my ID with me and wouldn't be going near that store for 2 more days, but I got it eventually.&lt;br /&gt;&lt;br /&gt;I've had it a few days now and overall I can say I'm very happy with it. It's nice to use, the screen is awesome, it's liberating to be able to get to the 'net anytime I want.&lt;br /&gt;&lt;br /&gt;However there were quite a few issues I wanted to document in hopes that they help someone else and to highlight that Apple doesn't always get it right and it doesn't always 'just work'.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;voice mail setup was a huge a pain. When my buddy Mark got his iPhone, I would call him and end up in voice mail, but I couldn't leave a message since he hadn't  'set it up'. WTF. He was previously an AT&amp;amp;T customer but he had to set it up all over again. He finally did and I could leave long ranting messages about how he sucked since he had an iPhone and I didn't. When I got mine I was eager to not make the same mistake. I tried for a long time to find out how the hell to set this up, but couldn't work it out. In the end I asked Mark and the secret is, you need to call your own number from the mobile phone and then it will go into voice mail setup menus.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Google link tabs infinite redirect. One of the very first things I did was click on Safari and click bookmarks and click on Google. A nice page shows up, I click on some tabs at the top like gmail, or reader and it goes into an infinite redirect and is completely useless. What a horrible first experience using Google on an iPhone.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Impossible to find gmail/talk/calendar for Google apps for your domain pages. After you get the gmail page to show up logging in doesn't work since it's regular gmail and I want Google apps for your domain mail sign in. It's very difficult to find the right urls for mail/talk/calendar for your domain. Your best bet is to get the Google iPhone application and use the links off that.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There's no indication on the screen that the ringer is off when you slide the little switch on the side to turn the ringer off an icon flashes on the screen to show you that you turned the ringer off, but pick it up later and there's no indicator.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;closing a safari window is difficult; you need to show all windows then click red-x on the window. Then it always seems to go join a window you didn't want to join.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I'm still disjointed about exiting applications - must hit home button. It seems only one app is running at any one time, switch between apps and the old app closes down and the new one starts up again. This makes it frustrating to go back to google talk (a web app) since it must reload.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No way to tell how far into a song you are in iPod&lt;/li&gt;&lt;li&gt;No easy way to fast forward in a song; you hold down the next song button but you can't tell how much it's fast forwarding and how much of the song you have left.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I'm still getting used to typing on the on screen keyboard, but it's much better than a 12 button t9 type text entry, I'm less filled with dread at having to type something.&lt;/li&gt;&lt;li&gt;No cell phone networking at first, reboot solved it (hold down the home button)&lt;/li&gt;&lt;li&gt;icons for gmail/calendar/reader look good, but switch to https and they don't show anymore.&lt;/li&gt;&lt;li&gt;It doesn't work with &lt;a href="http://wtwf.com/scripts/2008/05/car-audio.php"&gt;my car stereo&lt;/a&gt;! It seems my old iPod is too old and this new iPod is too new! crap!&lt;/li&gt;&lt;/ol&gt;Here's some good points I especially like:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;iPod fades between songs. My old iPod (photo 80G) didn't do this, iTunes did, my shuffle didn't. Now my iPhone does, I like it. keeps the beats flowing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;iPod rating songs very easy. This is a big use case for me so I'm delighted it's so easy. I like it a lot.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;replaces 3 devices for me (shuffle, iPod, phone). When I ride my bike into work I was having to take three things with me. My shuffle to listen to (quietly) when I rode. My phone of course and my iPod so that I could rate songs while I rode the bus back home at the end of the day. I had even made a special bike water bottle with foam padding to hold all the crap I didn't need in my pocket. Now I just slip my iPhone in my pocket and we're good to go!&lt;/li&gt;&lt;li&gt;When you get a call and you're listening to the iPod it fades out and then rings, clicking the headphone microphone thing picked up the call, an awesome experience.&lt;/li&gt;&lt;/ol&gt;I don't have any favorite apps yet, I guess the Google one helps find the right URLs but I rarely use it now. I'm looking for a good secure crypto notebook type thing, I'm trying a few.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-2272949289590751888?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=2272949289590751888" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2272949289590751888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/2272949289590751888?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/08/iphone.php" title="iPhone" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;C04DRHk6eyp7ImA9WxdWEkw.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-8180818966505412455</id><published>2008-06-29T19:21:00.000-07:00</published><updated>2008-07-04T15:52:55.713-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-04T15:52:55.713-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="rss" /><title>Moving to google code</title><content type="html">I'm slowly moving all my code over to being hosted Google Code. This will allow me to learn how to use &lt;a href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt; and also allow me to have RSS Feeds for my checkins. I can also have a wiki page per project and then let this blog be a blog about updates to each of the projects (or more likely new projects, I mean, really, who wants to maintain their old code).&lt;br /&gt;&lt;br /&gt;I've already checked in some stuff, some of it hasn't ever been released before! Go check it out at: &lt;a href="http://wtwf.googlecode.com/"&gt;http://wtwf.googlecode.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you want to follow the feed of stuff I check in the feed url is: &lt;a href="http://code.google.com/feeds/p/wtwf/svnchanges/basic"&gt;http://code.google.com&lt;span class="attribute-value"&gt;/feeds/p/wtwf/svnchanges/basic&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you use google reader, you can get a preview of what the &lt;a href="http://www.google.com/reader/view/feed%2Fhttp%3A%2F%2Fcode.google.com%2Ffeeds%2Fp%2Fwtwf%2Fsvnchanges%2Fbasic"&gt;source code changes feed  looks like in google reader&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So far I'm liking it a lot. You can't beat the price!&lt;br /&gt;&lt;br /&gt;Perhaps one day I'll even have people submit fixes (yay!), or &lt;a href="http://code.google.com/p/wtwf/issues/list"&gt;file bugs&lt;/a&gt; (boo!) using the google code interface.&lt;br /&gt;&lt;span class="attribute-value"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-8180818966505412455?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=8180818966505412455" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8180818966505412455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/8180818966505412455?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/06/moving-to-google-code.php" title="Moving to google code" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DEUHRHs8cSp7ImA9WxdSF0s.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-203562838779235178</id><published>2008-05-25T18:10:00.000-07:00</published><updated>2008-05-25T18:43:55.579-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-25T18:43:55.579-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="im" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><title>Shutup Jaiku</title><content type="html">In my &lt;a href="http://wtwf.com/scripts/2008/05/jaiku.php"&gt;last post&lt;/a&gt; I bitched about the Jaiku IM gateway and how it was too chatty and all I wanted to do was post to Jaiku but not hear all the feed noise in my chat windows. Well a quick poke around and I found it was close to trivial to write a jabber robot. I used &lt;a href="http://code.google.com/p/pygtalkrobot/"&gt;PyGtalkRobot&lt;/a&gt; which uses &lt;a href="http://xmpppy.sourceforge.net/"&gt;xmmppy&lt;/a&gt; (needed to install this from source) and &lt;a href="http://pydns.sourceforge.net/"&gt;pydns&lt;/a&gt; (the one from apt-get was fine for me).&lt;br /&gt;&lt;br /&gt;Within an hour I had something working but it needed the Jaiku API key, not your Jaiku password. Some more hacking and I had a code snippet that given a Jaiku username and password would find the Jaiku API key. Since I'd found some useful snippets on &lt;a href="http://snippets.dzone.com/"&gt;snippets.dzone.com&lt;/a&gt; I uploaded &lt;a href="http://snippets.dzone.com/posts/show/5539"&gt;my own useful snippet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Meanwhile a helpful person &lt;a href="http://jaiku.com/channel/imku/presence/35511402"&gt;suggested the ping.fm or imified bots&lt;/a&gt; but I couldn't work out what they did or didn't have a beta invite so I just kept plugging away at my thing. A little bit more time of cleanup and adding options and some minimal documentation and it was all good to go.&lt;br /&gt;&lt;br /&gt;Normally I usually just release this stuff and let you run it. But this time I've decided to run it as a service and see how it goes. However beware! you'll be giving me your Jaiku user name and password. You really shouldn't do that, but you can trust me.&lt;br /&gt;&lt;br /&gt;So just add &lt;b&gt;shutup&lt;!-- twattery --&gt;jaiku&lt;!-- junk --&gt;&amp;#064;&lt;!-- --&gt;wt&lt;!-- bum --&gt;wf.com&lt;/b&gt; as a talk contact and send it the same sign in you would to jaiku@jaiku.com&lt;pre class="code"&gt;sign in &lt;i&gt;username&lt;/i&gt; &lt;i&gt;password&lt;/i&gt;&lt;/pre&gt; and then start sending messages and they'll show up on your Jaiku page. That address is ONLY used for chat, do not send it mail no one will read it.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wtwf.com/scripts/uploaded_images/screenshot_14-714542.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://wtwf.com/scripts/uploaded_images/screenshot_14-714539.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wtwf.com/scripts/uploaded_images/screenshot_16-703382.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://wtwf.com/scripts/uploaded_images/screenshot_16-703379.png" border="0" alt="" /&gt;&lt;/a&gt;Obviously there's lots of ways this little server could go, right now it does what I need.&lt;br /&gt;&lt;br /&gt;I was delighted how easy PyGtalkRobot and the Jaiku API made everything. I was little irked there wasn't a nice way to get a Jaiku API key from a user name and password and also a few things irked me about PyGtalkRobot. Spitting out lots of output without using the logging api. Sending lines longer than 80 chars. And the crazy way you specify handlers, using the doc string to contain the regex that triggers the handler is just bizarre! Why not just register handlers like Python Httpd servers do?&lt;br /&gt;&lt;br /&gt;If you'd like to &lt;a href="http://wtwf.com/scripts/bin/shutupjaiku.py"&gt;download the source&lt;/a&gt; and run your own copy go for it! Hope you find it useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-203562838779235178?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=203562838779235178" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/203562838779235178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/203562838779235178?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/05/shutup-jaiku.php" title="Shutup Jaiku" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D08CR389eip7ImA9WxdSFko.&quot;"><id>tag:blogger.com,1999:blog-10963130.post-6186693660396415459</id><published>2008-05-24T17:25:00.000-07:00</published><updated>2008-05-24T17:37:46.162-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-24T17:37:46.162-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="im" /><category scheme="http://www.blogger.com/atom/ns#" term="rss" /><title>Jaiku</title><content type="html">I've been playing around with &lt;a href="http://jaiku.com/"&gt;Jaiku&lt;/a&gt;, Google's purchased &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; clone/competitor. I also played with Twitter at the same time (actually revived an account I made ages ago). Twitter sucks, it's way way too slow to even approach usability so I gave up on it. Jaiku is zippy fast which is likely a function of the number of users of each service, but perhaps one scales better than the other.&lt;br /&gt;&lt;br /&gt;I've had a need for something that's not quite blogging, but blogging, I try to keep my posts down, so that when they do show up they might be somewhat interesting, But I also have random blabbering, thoughts observations I'd like to note and perhaps aggregate into a post at some point. micro-blogging seemed ideal for this. But I also didn't want a high barrier to entry so Jaiku's IM robot seemed like a good idea. You just IM them a message and it shows up in your jaiku account. Perfect for easy Jaiku-ing. However the robot has an annoying habit of sending you messages about what everyone else is doing. I guess that's the point, but I find it annoying. Especially in gmail where it flashes the title when you have an unread IM, from Jaiku.&lt;br /&gt;&lt;br /&gt;Grouping together posting and reading in the same IM robot is like making my blogger post page also be my google reader. They should be two separate activities that I can merge if I like.&lt;br /&gt;&lt;br /&gt;Looks like I'm going to have to learn a Jaiku API and how to write my own jabber robot (in python!). Perhaps I'll host in on Google App Engine (I wonder if you can for things like this?).&lt;br /&gt;&lt;br /&gt;As an aside, getting the IM set up was a nightmare since my Google Apps domain wasn't exporting SRV DNS records for jabber. The DNS hosting (chosen by Google) was down for editing so I had to deal with their support department (ugh!). Here is the magic command to make sure you have it set up right (replace example.com with your domain name):&lt;pre class="code"&gt;dig srv _xmpp-server._tcp.example.com&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10963130-6186693660396415459?l=blog.wtwf.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=10963130&amp;postID=6186693660396415459" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6186693660396415459?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/10963130/posts/default/6186693660396415459?v=2" /><link rel="alternate" type="text/html" href="http://blog.wtwf.com/2008/05/jaiku.php" title="Jaiku" /><author><name>ark</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00810432192721721737" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
