<?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>PARTS Projects</title>
	<atom:link href="http://colab.portlandrobotics.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://colab.portlandrobotics.org</link>
	<description>Collaborative Space for PARTS</description>
	<lastBuildDate>Tue, 21 Feb 2012 08:13:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mouse Sensor Board Build (3/3/2012)</title>
		<link>http://colab.portlandrobotics.org/2012/02/21/mouse-sensor-board-build-332012/</link>
		<comments>http://colab.portlandrobotics.org/2012/02/21/mouse-sensor-board-build-332012/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 08:13:43 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[Group Projects]]></category>
		<category><![CDATA[board build]]></category>
		<category><![CDATA[optical mouse sensor]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=388</guid>
		<description><![CDATA[What: Build up some optical mouse sensor boards using the ADNS-2620 sensor described in this previous blog entry. This will involve some hot-plate reflow soldering using stencils and solder paste, some through-hole soldering, and testing. There are only 9 surface mount parts and 3 through-hole parts, so this is a relatively simple build. When: During [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What:</strong> Build up some optical mouse sensor boards using the ADNS-2620 sensor described in <a title="PARTS Indoor Challenge and mouse sensors" href="parts-indoor-challenge-and-mouse-sensors">this previous blog entry</a>.<br />
This will involve some hot-plate reflow soldering using stencils and solder paste, some through-hole soldering, and testing.<br />
There are only 9 surface mount parts and 3 through-hole parts, so this is a relatively simple build.</p>
<p><strong><strong></strong>When:</strong> During the normal March PARTS meeting (3/3/2012)<br />
Meeting starts at 10:30am; we&#8217;ll probably start building at 11 or 11:30am after a short presentation and show-n-tell</p>
<p><strong>Who:</strong> You!  But, we&#8217;re limited to only 12 boards + a couple extra.  First come first serve.</p>
<p><strong>Cost:</strong> $7</p>
<p><strong>Bring:</strong></p>
<ul>
<li>A small desk lamp is very helpful</li>
<li>Magnification is very helpful (the smallest parts are 0603)</li>
<li>We could use a couple more soldering iron stations, power cords, and power strips</li>
<li>An Ardunio, if you have one, for testing out your sensor.  We&#8217;ll have an Arduino or two set up for testing as well.</li>
<li>A 4-pin 0.1&#8243; jumper cable to connect the female 4-pin 0.1&#8243; spaced square-pin header on the OptiMouse board to your Arduino</li>
</ul>
<p>&nbsp;</p>
<p><strong>Details:</strong><br />
Schematic, layout and BOM here:<a title="OptiMouse v1.1 Board Build" href="http://colab.portlandrobotics.org/wp-content/uploads/2012/02/ADNX_26XX_Breakout_A_2_boardBuild.pdf"><br />
ADNX_26XX_Breakout_A_2_boardBuild</a> (PDF)</p>
<p>Eagle files:<br />
<a href="http://colab.portlandrobotics.org/wp-content/uploads/2012/02/ADNS_26XX_Breakout_A_2.zip">ADNS_26XX_Breakout_A_2</a> (zip)</p>
<p>See you there!</p>
<p>Monty</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2012/02/21/mouse-sensor-board-build-332012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geographic Center of Zipcodes</title>
		<link>http://colab.portlandrobotics.org/2011/04/16/geographic-center-of-zipcodes/</link>
		<comments>http://colab.portlandrobotics.org/2011/04/16/geographic-center-of-zipcodes/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 00:08:33 +0000</pubDate>
		<dc:creator>plskeggs</dc:creator>
				<category><![CDATA[Group Projects]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=344</guid>
		<description><![CDATA[At the last meeting I took down everyone&#8217;s zipcodes, in order to  determine the geographic center of the members present. The goal was to determine (roughly!) where a better group project meeting site would need to be located if we move away from bRainSilo. There were only 14 people present, though many regular members were [...]]]></description>
			<content:encoded><![CDATA[<p>At the last meeting I took down everyone&#8217;s zipcodes, in order to  determine the geographic center of the members present. The goal was to determine (roughly!) where a better group project meeting site would need to be located if we move away from <a href="http://www.brainsilo.org">bRainSilo</a>.</p>
<p><span id="more-344"></span></p>
<p>There were only 14 people present, though many regular members were there. I added Fred to the list, even though he was not present.  I could not easily find an online tool that would determine the  center of a set of zipcodes, so I wrote my own using a combination of a geonames.org api and a google maps api and Python.  I basically find the latitude and longitude of each address or centroid of each zipcode; average them all, ignoring spherical distortion since this is a pretty small patch of the  Earth; then convert that back into an address.</p>
<p>(Turns out the google maps api does not give the official census  bureau zipcode centroid, so I use geonames&#8217; api when all I have is a  zipcode.  If I had a full address, I used the google maps api.)</p>
<p>Anyway, the center is surprisingly central east-west but further  south than I expected. It&#8217;s within 2 miles of PCC Sylvania and also 2  miles north of the I-5 and Hwy217 interchange.</p>
<p><a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=10911+SW+61st+Ave,+Portland,+OR+97219&amp;aq=&amp;sll=45.446674,-122.73988&amp;sspn=0.006835,0.01929&amp;ie=UTF8&amp;hq=&amp;hnear=10911+SW+61st+Ave,+Portland,+Oregon+97219&amp;ll=45.446644,-122.73958&amp;spn=0.006835,0.01929&amp;z=16"></a>Also interesting is that even though google map&#8217;s idea of the  center of each zipcode is different from the official center in most cases,  the errors all seem to average out, so the address I get just using google&#8217;s api is within 0.1 miles of the more accurate one.</p>

<div class="my_syntax_box"><span class="my_syntax_selecall"><a href="javascript:;" onclick="selectCode(this); return false;">Selec All</a> </span><span class="my_syntax_Bar">Code:</span><div class="my_syntax"><table><tr><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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># center_of_zipcodes.py</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># find address corresponding to center of a set of zipcodes using google maps api</span>
<span style="color: #808080; font-style: italic;"># written by Pete Skeggs, 4/5/2011, for PARTS</span>
<span style="color: #808080; font-style: italic;"># updated 4/13/2011 to use geonames.org API to get true census bureau centroids when just given a zipcode; also, use an address when known and look that up with the google maps api</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">httplib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> json
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># define functions</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> ztoll<span style="color: black;">&#40;</span>z<span style="color: black;">&#41;</span>:
   conn <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">httplib</span>.<span style="color: black;">HTTPConnection</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;api.geonames.org&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #808080; font-style: italic;"># note: you need to replace 'demo' below with a valid username; I decided not</span>
   <span style="color: #808080; font-style: italic;"># to share mine</span>
   url <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/postalCodeLookupJSON?postalcode=%s&amp;country=US&amp;username=demo&quot;</span> % z
   conn.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;GET&quot;</span><span style="color: #66cc66;">,</span> url<span style="color: black;">&#41;</span>
   r <span style="color: #66cc66;">=</span> conn.<span style="color: black;">getresponse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
   o <span style="color: #66cc66;">=</span> json.<span style="color: black;">load</span><span style="color: black;">&#40;</span>r<span style="color: black;">&#41;</span>
   c <span style="color: #66cc66;">=</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'lat'</span> : <span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'lng'</span> : <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span>
   <span style="color: #808080; font-style: italic;"># format returned:</span>
   <span style="color: #808080; font-style: italic;">#{&quot;postalcodes&quot;:[{&quot;adminName2&quot;:&quot;Multnomah&quot;,&quot;adminCode2&quot;:&quot;051&quot;,&quot;postalcode&quot;:&quot;97210&quot;,&quot;adminCode1&quot;:&quot;OR&quot;,&quot;countryCode&quot;:&quot;US&quot;,</span>
   <span style="color: #808080; font-style: italic;"># &quot;lng&quot;:-122.703348,&quot;placeName&quot;:&quot;Portland&quot;,&quot;lat&quot;:45.530318,&quot;adminName1&quot;:&quot;Oregon&quot;}]}</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'postalcodes'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'postalcodes'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'addr'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> z
   <span style="color: #ff7700;font-weight:bold;">return</span> c
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> addrtoll<span style="color: black;">&#40;</span>addr<span style="color: black;">&#41;</span>:
   conn <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">httplib</span>.<span style="color: black;">HTTPConnection</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;maps.googleapis.com&quot;</span><span style="color: black;">&#41;</span>
   url <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/maps/api/geocode/json?address=%s&amp;sensor=false&quot;</span> % <span style="color: #dc143c;">urllib</span>.<span style="color: black;">quote_plus</span><span style="color: black;">&#40;</span>addr<span style="color: black;">&#41;</span>
   conn.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;GET&quot;</span><span style="color: #66cc66;">,</span> url<span style="color: black;">&#41;</span>
   r <span style="color: #66cc66;">=</span> conn.<span style="color: black;">getresponse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
   o <span style="color: #66cc66;">=</span> json.<span style="color: black;">load</span><span style="color: black;">&#40;</span>r<span style="color: black;">&#41;</span>
   c <span style="color: #66cc66;">=</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'lat'</span> : <span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'lng'</span> : <span style="color: #ff4500;">0</span><span style="color: black;">&#125;</span>
   <span style="color: #808080; font-style: italic;"># format returned:</span>
   <span style="color: #808080; font-style: italic;"># { &quot;status&quot;: &quot;OK&quot;, &quot;results&quot;: [{&quot;types&quot;:[&quot;postal_code&quot;],&quot;formatted_address&quot;:&quot;Portland, OR 97210, USA&quot;,</span>
   <span style="color: #808080; font-style: italic;"># &quot;address_components&quot;:[{&quot;long_name&quot;:&quot;97210&quot;,&quot;short_name&quot;:&quot;97210&quot;,&quot;types&quot;:[&quot;postal_code&quot;]},</span>
   <span style="color: #808080; font-style: italic;"># {&quot;long_name&quot;:&quot;Portland&quot;,&quot;short_name&quot;:&quot;Portland&quot;,&quot;types&quot;:[&quot;locality&quot;,&quot;political&quot;]},</span>
   <span style="color: #808080; font-style: italic;"># {&quot;long_name&quot;:&quot;Oregon&quot;,&quot;short_name&quot;:&quot;OR&quot;,&quot;types&quot;:[&quot;administrative_area_level_1&quot;,&quot;political&quot;]},</span>
   <span style="color: #808080; font-style: italic;"># {&quot;long_name&quot;:&quot;UnitedStates&quot;,&quot;short_name&quot;:&quot;US&quot;,&quot;types&quot;:[&quot;country&quot;,&quot;political&quot;]}],</span>
   <span style="color: #808080; font-style: italic;">#&quot;geometry&quot;:{&quot;location&quot;:{&quot;lat&quot;:45.5552753,&quot;lng&quot;:-122.7384041},&quot;location_type&quot;:&quot;APPROXIMATE&quot;,</span>
   <span style="color: #808080; font-style: italic;">#&quot;viewport&quot;:{&quot;southwest&quot;:{&quot;lat&quot;:45.5158719,&quot;lng&quot;:-122.7897450},&quot;northeast&quot;:{&quot;lat&quot;:45.5858230,&quot;lng&quot;:-122.6920030}},</span>
   <span style="color: #808080; font-style: italic;">#&quot;bounds&quot;:{&quot;southwest&quot;:{&quot;lat&quot;:45.5158719,&quot;lng&quot;:-122.7897450},&quot;northeast&quot;:{&quot;lat&quot;:45.5858230,&quot;lng&quot;:-122.6920030}}}}]}</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'results'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'geometry'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'location'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'results'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'geometry'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'location'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span>
   c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'addr'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'results'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'formatted_address'</span><span style="color: black;">&#93;</span>
   <span style="color: #ff7700;font-weight:bold;">return</span> c
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> lltoz<span style="color: black;">&#40;</span>lat<span style="color: #66cc66;">,</span> lng<span style="color: black;">&#41;</span>:
   conn <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">httplib</span>.<span style="color: black;">HTTPConnection</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;maps.googleapis.com&quot;</span><span style="color: black;">&#41;</span>
   url <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/maps/api/geocode/json?latlng=%f,%f&amp;sensor=false&quot;</span> % <span style="color: black;">&#40;</span>lat<span style="color: #66cc66;">,</span> lng<span style="color: black;">&#41;</span>
   conn.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;GET&quot;</span><span style="color: #66cc66;">,</span> url<span style="color: black;">&#41;</span>
   r <span style="color: #66cc66;">=</span> conn.<span style="color: black;">getresponse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
   o <span style="color: #66cc66;">=</span> json.<span style="color: black;">load</span><span style="color: black;">&#40;</span>r<span style="color: black;">&#41;</span>
   addr <span style="color: #66cc66;">=</span> o<span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'results'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>u<span style="color: #483d8b;">'formatted_address'</span><span style="color: black;">&#93;</span>
   <span style="color: #ff7700;font-weight:bold;">return</span> addr
&nbsp;
<span style="color: #808080; font-style: italic;"># define variables</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># list of zipcodes for PARTS members at April 2011 meeting</span>
addresses <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span>
<span style="color: #483d8b;">&quot;97007&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97210&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97223&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97034&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97202&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97232&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97224&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97071&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97219&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97086&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97224&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97211&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97006&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97224&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97225&quot;</span><span style="color: #66cc66;">,</span>
<span style="color: #483d8b;">&quot;97229&quot;</span><span style="color: black;">&#93;</span>
lat <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span>
lng <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span>
count <span style="color: #66cc66;">=</span> <span style="color: #ff4500;">0</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># main code</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> a <span style="color: #ff7700;font-weight:bold;">in</span> addresses:
   <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">5</span>:
      c <span style="color: #66cc66;">=</span> ztoll<span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">else</span>:
      c <span style="color: #66cc66;">=</span> addrtoll<span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%d. %s: %f, %f&quot;</span> % <span style="color: black;">&#40;</span>count+<span style="color: #ff4500;">1</span><span style="color: #66cc66;">,</span> c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'addr'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
   lat <span style="color: #66cc66;">=</span> lat + c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lat'</span><span style="color: black;">&#93;</span>
   lng <span style="color: #66cc66;">=</span> lng + c<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lng'</span><span style="color: black;">&#93;</span>
   count <span style="color: #66cc66;">=</span> count + <span style="color: #ff4500;">1</span>
&nbsp;
lat <span style="color: #66cc66;">=</span> lat / count
lng <span style="color: #66cc66;">=</span> lng / count
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;average of %d zipcodes: lat %f, lng %f&quot;</span> % <span style="color: black;">&#40;</span>count<span style="color: #66cc66;">,</span> lat<span style="color: #66cc66;">,</span> lng<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;address at center: %s&quot;</span> % lltoz<span style="color: black;">&#40;</span>lat<span style="color: #66cc66;">,</span> lng<span style="color: black;">&#41;</span></pre></td></tr></table></div></div>

<p>This yields the following output (using a valid geonames.org username &#8212; you need to register for one of your own):</p>
<pre>~$ python center_of_zipcodes.py
1. 97007: 45.450489, -122.865171
2. 97210: 45.530318, -122.703348
3. 97223: 45.447390, -122.795294
4. 97034: 45.409263, -122.684721
5. 97202: 45.484007, -122.636534
6. 97232: 45.528712, -122.636310
7. 97224: 45.409448, -122.801400
8. 97071: 45.144617, -122.858342
9. 97219: 45.457956, -122.707380
10. 97086: 45.444600, -122.537200
11. 97224: 45.409448, -122.801400
12. 97211: 45.565259, -122.644815
13. 97006: 45.520130, -122.860376
14. 97224: 45.409448, -122.801400
15. 97225: 45.498473, -122.778659
16. 97229: 45.548317, -122.827561
average of 16 zipcodes: lat 45.453617, lng -122.746244
address at center: 6655 SW Kingsview Ct, Tigard, OR 97223, USA
~$
</pre>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2011/04/16/geographic-center-of-zipcodes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BrushBot board build Monday 1/10</title>
		<link>http://colab.portlandrobotics.org/2011/01/09/brushbot-board-build-monday-110/</link>
		<comments>http://colab.portlandrobotics.org/2011/01/09/brushbot-board-build-monday-110/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 05:20:31 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[PARTS Swarm]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=322</guid>
		<description><![CDATA[There&#8217;s still a number of BrushBotComm boards that people want to build up, and at Saturday&#8217;s meeting we decided to try for a somewhat impromptu board build at this Monday&#8217;s (1/10) group project meeting.  I realize this is short notice, but at the meeting enough people expressed interest to make it worthwhile.  We can have [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s still a number of BrushBotComm boards that people want to build up, and at Saturday&#8217;s meeting we decided to try for a somewhat impromptu board build at this Monday&#8217;s (1/10) group project meeting.  I realize this is short notice, but at the meeting enough people expressed interest to make it worthwhile.  We can have another small build session later for those who can&#8217;t make it.</p>
<p>Scott&#8217;s bringing the hot-plate reflow system and I&#8217;m bringing the parts.  You bring whatever parts you might have already gotten from me, some magnifying device if needed, a soldering iron (if you have one) and some cash if you haven&#8217;t paid for parts yet.</p>
<p>We&#8217;ll be at the bRainSilo:<br />
bRainSilo.  7pm.</p>
<p>http://brainsilo.org/wiki/Location</p>
<p>See you there!</p>
<p>Monty</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2011/01/09/brushbot-board-build-monday-110/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brushbot Progress</title>
		<link>http://colab.portlandrobotics.org/2010/12/03/brushbot-progress/</link>
		<comments>http://colab.portlandrobotics.org/2010/12/03/brushbot-progress/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 00:19:48 +0000</pubDate>
		<dc:creator>plskeggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=314</guid>
		<description><![CDATA[We&#8217;ve been making slow, intermittent progress on firmware for the Brushbot.  We reached a new milestone in November, however.  We now have simultaneous IR code transmission and reception working, both between bots as well as within a single bot to use for obstacle detection. Cat uploaded a video she took of my dual brushbot avoiding [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been making slow, intermittent progress on firmware for the Brushbot.  We reached a new milestone in November, however.  We now have simultaneous IR code transmission and reception working, both between bots as well as within a single bot to use for obstacle detection.</p>
<p>Cat uploaded a video she took of my dual brushbot avoiding / attacking objects, during the November 15 group project meeting.  See the <a title="Brushbot Video" href="http://www.flickr.com/photos/cacophonous_joy/5180696689/in/pool-portlandrobotics" target="_blank">PARTS flickr pool</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/12/03/brushbot-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>November 2010 Robot Videos</title>
		<link>http://colab.portlandrobotics.org/2010/11/18/november-2010-robot-videos/</link>
		<comments>http://colab.portlandrobotics.org/2010/11/18/november-2010-robot-videos/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 00:56:26 +0000</pubDate>
		<dc:creator>plskeggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=310</guid>
		<description><![CDATA[We had a great time at the November meeting watching and discussing a number of different robot-related videos. Here are links to most of them: http://engineeringtv.com/blogs/etv/archive/2008/05/15/galileo-wheel.aspx http://www.chilloutzone.to/video/regenwurm-roboter.html http://io9.com/5637131/robot-opera-is-less-madame-butterfly-more-oops-i-dropped-a-butterfly-screw http://www-robotics.cs.umass.edu/Robots/UBot-5 http://www.techeblog.com/index.php/tech-gadget/geek-builds-functional-wall-e-robot-using-lego http://io9.com/5474788/the-diy-high+speed-camera-that-is-about-to-change-your-life http://www.dinofab.com/videos.html http://www.mikrokopter.com/ucwiki/en/MikroKopter?action=show&#38;redirect=FrontPage http://www.k2.t.u-tokyo.ac.jp/movies/index-e.html http://www.youtube.com/watch?v=6WCx8_voRzY -Pete]]></description>
			<content:encoded><![CDATA[<p>We had a great time at the November meeting watching and discussing a number of different robot-related videos.</p>
<p>Here are links to most of them:</p>
<p><a href="http://engineeringtv.com/blogs/etv/archive/2008/05/15/galileo-wheel.aspx" target="_blank">http://engineeringtv.com/blogs/etv/archive/2008/05/15/galileo-wheel.aspx</a><br />
<a href="http://www.chilloutzone.to/video/regenwurm-roboter.html" target="_blank">http://www.chilloutzone.to/video/regenwurm-roboter.html</a><br />
<a><a href="http://io9.com/5637131/robot-opera-is-less-madame-butterfly-more-oops-i-dropped-a-butterfly-screw" target="_blank"> http://io9.com/5637131/robot-opera-is-less-madame-butterfly-more-oops-i-dropped-a-butterfly-screw<br />
</a> <a href="http://www-robotics.cs.umass.edu/Robots/UBot-5" target="_blank">http://www-robotics.cs.umass.edu/Robots/UBot-5</a></a><br />
<a href="http://www.techeblog.com/index.php/tech-gadget/geek-builds-functional-wall-e-robot-using-lego" target="_blank">http://www.techeblog.com/index.php/tech-gadget/geek-builds-functional-wall-e-robot-using-lego</a><br />
<a href="http://io9.com/5474788/the-diy-high+speed-camera-that-is-about-to-change-your-life" target="_blank">http://io9.com/5474788/the-diy-high+speed-camera-that-is-about-to-change-your-life</a><br />
<a href="http://www.dinofab.com/videos.html" target="_blank">http://www.dinofab.com/videos.html</a><br />
<a href="http://www.mikrokopter.com/ucwiki/en/MikroKopter?action=show&amp;redirect=FrontPage" target="_blank">http://www.mikrokopter.com/ucwiki/en/MikroKopter?action=show&amp;redirect=FrontPage</a><br />
<a href="http://www.k2.t.u-tokyo.ac.jp/movies/index-e.html" target="_blank">http://www.k2.t.u-tokyo.ac.jp/movies/index-e.html</a><br />
<a href="http://www.youtube.com/watch?v=6WCx8_voRzY" target="_blank">http://www.youtube.com/watch?v=6WCx8_voRzY</a></p>
<p>-Pete</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/11/18/november-2010-robot-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bot Build Night Oct 18</title>
		<link>http://colab.portlandrobotics.org/2010/10/18/bot-build-night-oct-18/</link>
		<comments>http://colab.portlandrobotics.org/2010/10/18/bot-build-night-oct-18/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 08:17:10 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[Group Projects]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=307</guid>
		<description><![CDATA[A small group of us have been regularly getting together every other Monday night at the bRainSilo to work on swarm bots.  We&#8217;d love to have more people come join us &#8212; especially if you built one of the BrushBotComm boards a while back!  We&#8217;re at the point where we have bidirectional IR comm code [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>A small group of us have been regularly getting together every other Monday night at the bRainSilo to work on swarm bots.  We&#8217;d love to have more people come join us &#8212; especially if you built one of the BrushBotComm boards a while back!  We&#8217;re at the point where we have bidirectional IR comm code working and want to try it out w/ larger swarms.</p>
<p>This get together is not just about swarm bots though &#8212; rather than toiling away alone in the basement on that killer new robot, why not bring it down and work on it in the company of other robot enthusiasts?</p>
<p>7pm, bRainSilo:<a href="http://brainsilo.org/wiki/Location" target="_blank"> http://brainsilo.org/wiki/Location</a></p>
<p>Hope to see you there!</p>
<p>Monty</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/10/18/bot-build-night-oct-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIT Repository for Group Projects</title>
		<link>http://colab.portlandrobotics.org/2010/10/02/git-repository-for-group-projects/</link>
		<comments>http://colab.portlandrobotics.org/2010/10/02/git-repository-for-group-projects/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 18:55:07 +0000</pubDate>
		<dc:creator>plskeggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=305</guid>
		<description><![CDATA[The URL is: http://github.org/portlandrobotics Scott Dixon will fill in details of how to use it.  Enjoy!]]></description>
			<content:encoded><![CDATA[<p>The URL is: <a href="http://github.org/portlandrobotics">http://github.org/portlandrobotics</a></p>
<p>Scott Dixon will fill in details of how to use it.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/10/02/git-repository-for-group-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No 9/6 project meeting</title>
		<link>http://colab.portlandrobotics.org/2010/09/06/no-96-project-meeting/</link>
		<comments>http://colab.portlandrobotics.org/2010/09/06/no-96-project-meeting/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 20:32:09 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[Group Projects]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=301</guid>
		<description><![CDATA[Not enough of the regulars can make it tonight so I&#8217;m going to cancel the BrainSilo build session. Have a great Labor Day! Monty﻿]]></description>
			<content:encoded><![CDATA[<p>Not enough of the regulars can make it tonight so I&#8217;m going to cancel the BrainSilo build session.</p>
<p>Have a great Labor Day!</p>
<p>Monty﻿</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/09/06/no-96-project-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bot Build Night Aug 23</title>
		<link>http://colab.portlandrobotics.org/2010/08/23/bot-build-night-aug-23/</link>
		<comments>http://colab.portlandrobotics.org/2010/08/23/bot-build-night-aug-23/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 07:09:51 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[Group Projects]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=298</guid>
		<description><![CDATA[Ditto below! See you there, Monty]]></description>
			<content:encoded><![CDATA[<p>Ditto <a href="bot-build-night-aug-9" target="_self">below</a>!</p>
<p>See you there,</p>
<p>Monty</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/08/23/bot-build-night-aug-23/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bot Build night Aug 9</title>
		<link>http://colab.portlandrobotics.org/2010/08/09/bot-build-night-aug-9/</link>
		<comments>http://colab.portlandrobotics.org/2010/08/09/bot-build-night-aug-9/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 08:07:25 +0000</pubDate>
		<dc:creator>montyg</dc:creator>
				<category><![CDATA[Group Projects]]></category>

		<guid isPermaLink="false">http://colab.portlandrobotics.org/?p=293</guid>
		<description><![CDATA[We&#8217;ve been getting together every other Monday night at the silo to work on group projects, but really what we want to see is more robots being built, be it by individuals or groups.  So even if you&#8217;re not interested in the current swarm robot project, feel free to bring your own robot-to-be on down [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been getting together every other Monday night at the silo to work on group projects, but really what we want to see is more robots being built, be it by individuals or groups.  So even if you&#8217;re not interested in the current swarm robot project, feel free to bring your own robot-to-be on down to share in the excitement of mashing together mechanical bits, hard bits, and soft bits to do cool stuff.</p>
<p>And if you DO have brushbots, bring them down and let&#8217;s get them talking!</p>
<p>7pm, bRainSilo:<br />
<a href="http://brainsilo.org/wiki/Location" target="_blank"> http://brainsilo.org/wiki/Location</a></p>
<p>Hope to see you there!</p>
<p>Monty</p>
]]></content:encoded>
			<wfw:commentRss>http://colab.portlandrobotics.org/2010/08/09/bot-build-night-aug-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

