<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mental Masturbation, Musings, and Methods &#187; Twitter</title>
	<atom:link href="http://blog.alexbeutel.com/category/twitter/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alexbeutel.com</link>
	<description>The Mind of Alex Beutel</description>
	<lastBuildDate>Mon, 02 Aug 2010 06:20:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ubiquity Scripts</title>
		<link>http://blog.alexbeutel.com/233/ubiquity-scripts/</link>
		<comments>http://blog.alexbeutel.com/233/ubiquity-scripts/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 07:17:58 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.ambmediadesign.com/?p=233</guid>
		<description><![CDATA[After playing with the Jetpack API and having an increasing desire to procrastinate my Spanish homework, I decided to give the Ubiquity API a shot too and make a few small scripts just to make my life easier.  The first extension I made was a script to do look ups of IP addresses and get [...]]]></description>
			<content:encoded><![CDATA[<p>After playing with the Jetpack API and having an increasing desire to procrastinate my Spanish homework, I decided to give the Ubiquity API a shot too and make a few small scripts just to make my life easier.  The first extension I made was a script to do look ups of IP addresses and get more information about them.  This is useful mainly if you are looking at raw logs from a web server.  After realizing how easy it was to make these scripts, I made two more for bit.ly links which I frequently come across on Twitter.  The first can get more info and stats about a link (the number of clicks) and easily send you to the bit.ly info page for that link.  The second script can be used to quickly expand the links from their compressed bit.ly form to their original form.  I know there are other scripts that can do this across an entire page, but felt I&#8217;d rather keep short links with a quick and easy way to find out what the link contains.  If any of these sound interesting/useful or if you just want to see some simple examples of how to code Ubiquity extensions, you can check the scripts out <a href='http://ambmediadesign.com/scripts/ubiquity.html' target='_blank'>here</a>.  I have also included screenshots for each of these scripts below.</p>
<div style='padding: 7px;'><img src='http://ambmediadesign.com/scripts/iptrace2.png' /></div>
<div style='padding: 7px;'><img src='http://ambmediadesign.com/scripts/bitly-info.png' /></div>
<div style='padding: 7px;'><img src='http://ambmediadesign.com/scripts/bitly-expand.png' /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexbeutel.com/233/ubiquity-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Following Chromium Progress</title>
		<link>http://blog.alexbeutel.com/65/following-chromium-progress/</link>
		<comments>http://blog.alexbeutel.com/65/following-chromium-progress/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 20:52:13 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Chromium]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.ambmediadesign.com/?p=65</guid>
		<description><![CDATA[For the past few months I have been following the progress of Chromium for Mac and watching it develop and it has definitely made a lot of progress in that time. In the past few month it has received increasing press, with people asking why it is taking so long. One of the lead developers [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few months I have been following the progress of Chromium for Mac and watching it develop and it has definitely made a lot of progress in that time.  In the past few month it has received increasing press, with people asking why it is taking so long.  One of the lead developers on the project <a href="http://weblogs.mozillazine.org/pinkerton/archives/020035.html" target="_blank">responded </a>that people need to chill out and that building a browser takes time.  So, in part to show myself and others the progress, I decided to make a little application to show this progress.  Throughout the day builds and updates of Chromium are posted to <a href="http://build.chromium.org/buildbot/snapshots/sub-rel-mac/" target="_blank">http://build.chromium.org/buildbot/snapshots/sub-rel-mac/</a> but to read each changelog was a pain.  So, to give myself more exposure to new Python libraries and give the Twitter API a swing, I created a script to check for changes to the builds, pull log entries on the changes and post them all to a <a href="http://twitter.com/chromiumUpdates" target="_blank">Twitter stream</a> so there is a single source you can view updates.  The script is far from perfect, as it has to be running to catch the updates and doesn&#8217;t go back and look for ones it missed.  And currently I just have it running on one of Duke&#8217;s servers so it goes down occasionally.  But it generally works and provides plenty of updates so you can see what is actually be worked on and updated.  Check out the <a href="http://ambmediadesign.com/chromium.py">source code</a> below (twitter username and password cut out).</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://blog.alexbeutel.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=65&amp;download=chromium.py">chromium.py</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p652"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</pre></td><td class="code" id="p65code2"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># encoding: utf-8</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">base64</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">dom</span> <span style="color: #ff7700;font-weight:bold;">import</span> minidom
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> twitter<span style="color: black;">&#40;</span>twitter_username, twitter_password, message<span style="color: black;">&#41;</span>:
	request = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">Request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://twitter.com/statuses/update.json'</span><span style="color: black;">&#41;</span>
	request.<span style="color: black;">headers</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'Authorization'</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">'Basic %s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span> <span style="color: #dc143c;">base64</span>.<span style="color: black;">b64encode</span><span style="color: black;">&#40;</span>twitter_username + <span style="color: #483d8b;">':'</span> + twitter_password<span style="color: black;">&#41;</span>,<span style="color: black;">&#41;</span>
	request.<span style="color: black;">data</span> = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'status'</span>: message<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">try</span>:
		response = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># The Response</span>
	<span style="color: #ff7700;font-weight:bold;">except</span> HTTPError, e:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error posting to twitter&quot;</span>
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;HTTP Error code: &quot;</span>, e.<span style="color: #dc143c;">code</span>
	<span style="color: #ff7700;font-weight:bold;">except</span> URLError, e:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error posting to twitter&quot;</span>
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;URLError reason: &quot;</span>, e.<span style="color: black;">reason</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	message = <span style="color: #483d8b;">&quot;&quot;</span>
	last_update = <span style="color: #483d8b;">&quot;17514&quot;</span><span style="color: #66cc66;">;</span>
	chromium_url = <span style="color: #483d8b;">&quot;http://build.chromium.org/buildbot/snapshots/sub-rel-mac/&quot;</span>
	<span style="color: #ff7700;font-weight:bold;">while</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">try</span>:
			response = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>chromium_url + <span style="color: #483d8b;">&quot;LATEST&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">except</span> HTTPError, e:
			<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;HTTP Error code: &quot;</span>, e.<span style="color: #dc143c;">code</span>
		<span style="color: #ff7700;font-weight:bold;">except</span> URLError, e:
			<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;URLError reason: &quot;</span>, e.<span style="color: black;">reason</span>
		<span style="color: #ff7700;font-weight:bold;">else</span>:
			latest = response.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
			<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;latest: &quot;</span>, latest
			<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#40;</span>latest <span style="color: #66cc66;">!</span>= last_update<span style="color: black;">&#41;</span>:
				<span style="color: #ff7700;font-weight:bold;">try</span>:
					response2 = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>chromium_url + latest + <span style="color: #483d8b;">&quot;/changelog.xml&quot;</span><span style="color: black;">&#41;</span>
				<span style="color: #ff7700;font-weight:bold;">except</span> HTTPError, e:
					<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;HTTP Error code: &quot;</span>, e.<span style="color: #dc143c;">code</span>
				<span style="color: #ff7700;font-weight:bold;">except</span> URLError, e:
					<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;URLError reason: &quot;</span>, e.<span style="color: black;">reason</span>
				<span style="color: #ff7700;font-weight:bold;">else</span>:
					html = response2.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
					<span style="color: #808080; font-style: italic;"># print html</span>
					dom = minidom.<span style="color: black;">parseString</span><span style="color: black;">&#40;</span>html<span style="color: black;">&#41;</span>
					entries = dom.<span style="color: black;">getElementsByTagName</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;logentry&quot;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#[0].childNodes</span>
					<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;entries: &quot;</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>entries<span style="color: black;">&#41;</span>
					<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>entries<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
						link = chromium_url + latest + <span style="color: #483d8b;">&quot;/ &quot;</span>
						msg = entries<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">getElementsByTagName</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;msg&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: black;">firstChild</span>.<span style="color: black;">nodeValue</span>
						num = entries<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">getAttribute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;revision&quot;</span><span style="color: black;">&#41;</span>
						<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Revision: &quot;</span>, num
						twitter<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;USERNAME&quot;</span>, <span style="color: #483d8b;">&quot;PASSWORD&quot;</span>, <span style="color: #483d8b;">&quot;Chromium Revision &quot;</span> + num + <span style="color: #483d8b;">&quot;: &quot;</span> + msg<span style="color: black;">&#41;</span>
					last_update = latest
			<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">60</span><span style="color: #66cc66;">*</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
	main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Play with the code or follow the twitter.  Also, I decided to try a new WordPress plugin for code so let me know what you think.  Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexbeutel.com/65/following-chromium-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
