<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2673490712248854922</id><updated>2012-01-01T18:37:56.051+01:00</updated><category term='linux'/><category term='google go'/><category term='computing problem'/><category term='hacking with go'/><category term='golang programming'/><category term='hacking with golang'/><category term='snail'/><category term='syntax highlighting'/><category term='ubuntu'/><category term='syntaxhighlighter'/><category term='golang installation'/><category term='golang'/><category term='go programming'/><title type='text'>Hacking with the Go Programming Language (GoLang)</title><subtitle type='html'>This blog is dedicated to learning the &lt;a href="http://golang.org"&gt;Go programming language (golang)&lt;/a&gt;. Most likely there'll be golang tutorials, discussions on golang idioms and golang programming techniques. We will also follow the development of golang as it matures.&lt;br&gt;
Written by &lt;a href="http://allistersanchez.com"&gt;Allister Sanchez&lt;/a&gt;.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2673490712248854922.post-3065759135878072317</id><published>2010-09-04T17:47:00.001+02:00</published><updated>2010-09-04T18:09:46.446+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snail'/><category scheme='http://www.blogger.com/atom/ns#' term='golang'/><category scheme='http://www.blogger.com/atom/ns#' term='golang programming'/><category scheme='http://www.blogger.com/atom/ns#' term='computing problem'/><title type='text'>The Snail in Golang</title><content type='html'>It's been some time since I last played with Golang so I decided to spend a bit of time getting to actually know golang by solving the classic snail problem, that is, to write a sequence of numbers in a square matrix of a given size n. Let's say we have a program called &lt;code&gt;snail&lt;/code&gt;, running it with a number argument (for the square size) should look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: shell"&gt;$ ./snail 5&lt;br /&gt; 1  2  3  4  5 &lt;br /&gt;16 17 18 19  6 &lt;br /&gt;15 24 25 20  7 &lt;br /&gt;14 23 22 21  8 &lt;br /&gt;13 12 11 10  9 &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, the solution is straightforward: do alternating row and column sweeps, from the outside going inwards, while incrementing the value to be written into a matrix element.&lt;br /&gt;&lt;br /&gt;But first, we have to be able to get the input size of the matrix. For that we'll use the &lt;code&gt;flag&lt;/code&gt; and &lt;code&gt;strconv&lt;/code&gt; packages. For the print out, we'll use the &lt;code&gt;fmt&lt;/code&gt; package. Here's what I came up with.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: go"&gt;package main&lt;br /&gt;&lt;br /&gt;import (&lt;br /&gt; "fmt"&lt;br /&gt; "flag"&lt;br /&gt; "strconv"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt; // Determine the matrix size, n.&lt;br /&gt; var n int = 1&lt;br /&gt; flag.Parse()&lt;br /&gt; if len(flag.Args()) &amp;gt; 0 {&lt;br /&gt;  n, _ = strconv.Atoi(flag.Arg(0))&lt;br /&gt; }&lt;br /&gt; if n &amp;lt; 1 {&lt;br /&gt;  n = 1&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // No need to be complicated for n=1&lt;br /&gt; if n == 1 {&lt;br /&gt;  fmt.Println(n)&lt;br /&gt;  return&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // Create the matrix&lt;br /&gt; values := make([][]int, n)&lt;br /&gt; for i := 0; i &amp;lt; n; i++ {&lt;br /&gt;  values[i] = make([]int, n)&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // Fill the matrix with values&lt;br /&gt; avalue := 0&lt;br /&gt; for ifill := 0; ifill &amp;lt; n; ifill++ {&lt;br /&gt;  fstart := ifill&lt;br /&gt;  fend := n-ifill&lt;br /&gt;  &lt;br /&gt;  // upper x forward sweep&lt;br /&gt;  for ixf := fstart; ixf &amp;lt; fend-1; ixf++ {&lt;br /&gt;   avalue++&lt;br /&gt;   values[fstart][ixf] = avalue&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  // right y forward sweep&lt;br /&gt;  for iyf := fstart; iyf &amp;lt; fend-1; iyf++ {&lt;br /&gt;   avalue++&lt;br /&gt;   values[iyf][fend-1] = avalue&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  // lower x backward sweep&lt;br /&gt;  for ixb := fend-1; ixb &amp;gt; fstart; ixb-- {&lt;br /&gt;   avalue++&lt;br /&gt;   values[fend-1][ixb] = avalue&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  // left y backward sweep&lt;br /&gt;  for iyb := fend-1; iyb &amp;gt; fstart; iyb-- {&lt;br /&gt;   avalue++&lt;br /&gt;   values[iyb][fstart] = avalue&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // Take care of the last value for odd n&lt;br /&gt; if avalue &amp;lt; n*n {&lt;br /&gt;  avalue++&lt;br /&gt;  values[n/2][n/2] = avalue&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; // Ensure the same spacing for each element&lt;br /&gt; places := int(n*n/10)&lt;br /&gt; entry_width := 1&lt;br /&gt; for places &amp;gt; 0 {&lt;br /&gt;  entry_width++&lt;br /&gt;  places /= 10&lt;br /&gt; }&lt;br /&gt; format := fmt.Sprintf("%%%dd ", entry_width)&lt;br /&gt; &lt;br /&gt; // Print out the snail&lt;br /&gt; for i := 0; i &amp;lt; n; i++ {&lt;br /&gt;  for j := 0; j &amp;lt; n ; j++ {&lt;br /&gt;   fmt.Printf(format, values[i][j])&lt;br /&gt;  }&lt;br /&gt;  fmt.Println("")&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;What about you? Have you tried solving this problem in golang? How would you do it better?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2673490712248854922-3065759135878072317?l=hackgolang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/3065759135878072317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackgolang.blogspot.com/2010/09/snail-in-golang.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3065759135878072317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3065759135878072317'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/2010/09/snail-in-golang.html' title='The Snail in Golang'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2673490712248854922.post-3971285275744341607</id><published>2010-05-04T05:00:00.001+02:00</published><updated>2010-05-02T11:26:38.105+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go programming'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlighting'/><category scheme='http://www.blogger.com/atom/ns#' term='syntaxhighlighter'/><title type='text'>Test for the Go syntax highlighter</title><content type='html'>I got some feedback from the Go Nuts mailing list, particularly from Russ Cox who pointed out that predefined identifiers like true, nil, int, and float are not reserved keywords. &amp;nbsp;So I decided to have two kinds of highlighted keywords:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;those that start a type or start a declaration, including for packages: &lt;br /&gt;&lt;pre class="brush: go"&gt;struct func interface map chan package import type const var&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;those that control the flow of the code: &lt;br /&gt;&lt;pre class="brush: go"&gt;goto break continue if else switch default case for range go select return fallthrough defer&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Then I use the code from $GOROOT/test/rename.go and rename1.go to see the effect of this color scheme:&lt;br /&gt;&lt;pre class="brush: go"&gt;// $G $D/$F.go &amp;&amp; $L $F.$A &amp;&amp; ./$A.out&lt;br /&gt;&lt;br /&gt;// Copyright 2009 The Go Authors.  All rights reserved.&lt;br /&gt;// Use of this source code is governed by a BSD-style&lt;br /&gt;// license that can be found in the LICENSE file.&lt;br /&gt;&lt;br /&gt;package main&lt;br /&gt;&lt;br /&gt;import "fmt"&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt;   n :=&lt;br /&gt;      bool +&lt;br /&gt;         byte +&lt;br /&gt;         float +&lt;br /&gt;         float32 +&lt;br /&gt;         float64 +&lt;br /&gt;         int +&lt;br /&gt;         int8 +&lt;br /&gt;         int16 +&lt;br /&gt;         int32 +&lt;br /&gt;         int64 +&lt;br /&gt;         uint +&lt;br /&gt;         uint8 +&lt;br /&gt;         uint16 +&lt;br /&gt;         uint32 +&lt;br /&gt;         uint64 +&lt;br /&gt;         uintptr +&lt;br /&gt;         true +&lt;br /&gt;         false +&lt;br /&gt;         iota +&lt;br /&gt;         nil +&lt;br /&gt;         cap +&lt;br /&gt;         len +&lt;br /&gt;         make +&lt;br /&gt;         new +&lt;br /&gt;         panic +&lt;br /&gt;         print +&lt;br /&gt;         println&lt;br /&gt;   if n != 27*28/2 {&lt;br /&gt;      fmt.Println("BUG: wrong n", n, 27*28/2)&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   var n byte       // ERROR "not a type|expected type"&lt;br /&gt;   var y = float(0) // ERROR "cannot call|expected function"&lt;br /&gt;   const (&lt;br /&gt;      a = 1 + iota // ERROR "string|incompatible types"&lt;br /&gt;   )&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;const (&lt;br /&gt;   bool    = 1&lt;br /&gt;   byte    = 2&lt;br /&gt;   float   = 3&lt;br /&gt;   float32 = 4&lt;br /&gt;   float64 = 5&lt;br /&gt;   int     = 6&lt;br /&gt;   int8    = 7&lt;br /&gt;   int16   = 8&lt;br /&gt;   int32   = 9&lt;br /&gt;   int64   = 10&lt;br /&gt;   uint    = 11&lt;br /&gt;   uint8   = 12&lt;br /&gt;   uint16  = 13&lt;br /&gt;   uint32  = 14&lt;br /&gt;   uint64  = 15&lt;br /&gt;   uintptr = 16&lt;br /&gt;   true    = 17&lt;br /&gt;   false   = 18&lt;br /&gt;   iota    = 19&lt;br /&gt;   nil     = 20&lt;br /&gt;   cap     = 21&lt;br /&gt;   len     = 22&lt;br /&gt;   make    = 23&lt;br /&gt;   new     = 24&lt;br /&gt;   panic   = 25&lt;br /&gt;   print   = 26&lt;br /&gt;   println = 27&lt;br /&gt;)&lt;/pre&gt;&lt;br /&gt;In the end, if it doesn't suit your aesthetic tastes, you could always download the script and tweak it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2673490712248854922-3971285275744341607?l=hackgolang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/3971285275744341607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackgolang.blogspot.com/2010/05/test-for-go-syntax-highlighter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3971285275744341607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3971285275744341607'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/2010/05/test-for-go-syntax-highlighter.html' title='Test for the Go syntax highlighter'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2673490712248854922.post-3685354668513579924</id><published>2010-05-03T04:02:00.004+02:00</published><updated>2010-05-02T04:14:56.391+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlighting'/><category scheme='http://www.blogger.com/atom/ns#' term='syntaxhighlighter'/><category scheme='http://www.blogger.com/atom/ns#' term='golang programming'/><title type='text'>Syntax highlighting for golang</title><content type='html'>I've been using Alex Gorbatchev's &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter&lt;/a&gt; to ease the task of presenting code on this blog.  Seeing that there's currently no "brush" for golang, I decided to create one.  I posted the code &lt;a href="http://d.allistersanchez.com/js/shBrushGo.js"&gt;here&lt;/a&gt; for anyone interested.  To use it, simply put the following line where you'd normally do it for SyntaxHighlighter brushes (usually before the &amp;lt;head&amp;gt; tag):&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;script src='http://d.allistersanchez.com/js/shBrushGo.js' type='text/javascript'/&amp;gt;&lt;/pre&gt;Then use either "go" or "golang" as alias when you insert golang code on your blog:&lt;br /&gt;&lt;pre class="brush: html"&gt;&amp;lt;pre class="brush: go"&amp;gt;package main&lt;br /&gt;import "fmt"&lt;br /&gt;func main() {&lt;br /&gt;    fmt.Printf("yoohoo!")&lt;br /&gt;}&amp;lt;/pre&amp;gt;&lt;/pre&gt;This will be rendered as:&lt;br /&gt;&lt;pre class="brush: go"&gt;package main&lt;br /&gt;import "fmt"&lt;br /&gt;func main() {&lt;br /&gt;    fmt.Printf("yoohoo!")&lt;br /&gt;}&lt;/pre&gt;I hope someone else finds it useful. Please drop a comment if you have some suggestions on how to improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2673490712248854922-3685354668513579924?l=hackgolang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/3685354668513579924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackgolang.blogspot.com/2010/05/syntax-highlighting-for-golang.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3685354668513579924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/3685354668513579924'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/2010/05/syntax-highlighting-for-golang.html' title='Syntax highlighting for golang'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2673490712248854922.post-1096239034825630332</id><published>2010-05-02T02:11:00.008+02:00</published><updated>2010-05-02T03:48:45.310+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='golang programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='golang installation'/><title type='text'>Installing golang on Ubuntu Linux</title><content type='html'>In your $HOME/.bashrc, set the necessary environment variables:&lt;br /&gt;&lt;pre class="brush: shell"&gt;export GOROOT=$HOME/go&lt;br /&gt;export GOOS=linux      # target operating system&lt;br /&gt;export GOARCH=386      # target compiling architecture&lt;/pre&gt;&lt;br /&gt;Note that with golang, you are always "cross-compiling". &amp;nbsp;So the values for $GOOS and $GOARCH are not necessarily corresponding to your Linux box.&lt;br /&gt;&lt;br /&gt;Make sure you have the tools needed to build the golang compilers from source:&lt;br /&gt;&lt;pre class="brush: shell"&gt;sudo apt-get install python-setuptools python-dev build-essential gcc mercurial&lt;/pre&gt;&lt;br /&gt;Then get the golang source code using mercurial:&lt;br /&gt;&lt;pre class="brush: shell"&gt;cd $HOME &amp;amp;&amp;amp; hg clone -r release https://go.googlecode.com/hg/ $GOROOT&lt;/pre&gt;&lt;br /&gt;Now let's build golang from the downloaded source code:&lt;br /&gt;&lt;pre class="brush: shell"&gt;cd $GOROOT/src &amp;amp;&amp;amp; ./all.bash&lt;/pre&gt;&lt;br /&gt;The golang executables will be built and placed into $HOME/bin (you can customize this by setting the environment variable $GOBIN). This will also run some tests on the build. In the end you should see something like:&lt;br /&gt;&lt;pre class="brush: shell"&gt;--- cd ../test&lt;br /&gt;N known bugs; 0 unexpected bugs&lt;/pre&gt;&lt;br /&gt;Here, N changes from version to version of golang. That's it! So now it's time for the customary "Hello, World". Open your favorite text editor and create a simple text file called hello.go:&lt;br /&gt;&lt;pre class="brush: go"&gt;package main&lt;br /&gt;&lt;br /&gt;import "fmt"&lt;br /&gt;&lt;br /&gt;func main() {&lt;br /&gt;    fmt.Printf("hello, world!\n")&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Then build our executable (note that we're compiling for linux-386):&lt;br /&gt;&lt;pre class="brush: shell"&gt;8g hello.go&lt;br /&gt;8l hello.8&lt;br /&gt;./8.out&lt;/pre&gt;&lt;br /&gt;In the end, you'll see a nice little "hello, world!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2673490712248854922-1096239034825630332?l=hackgolang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/1096239034825630332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackgolang.blogspot.com/2010/05/installing-golang-on-ubuntu-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/1096239034825630332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/1096239034825630332'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/2010/05/installing-golang-on-ubuntu-linux.html' title='Installing golang on Ubuntu Linux'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2673490712248854922.post-8103782290246468278</id><published>2010-05-02T01:35:00.000+02:00</published><updated>2010-05-02T01:59:31.126+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacking with go'/><category scheme='http://www.blogger.com/atom/ns#' term='go programming'/><category scheme='http://www.blogger.com/atom/ns#' term='google go'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking with golang'/><category scheme='http://www.blogger.com/atom/ns#' term='golang'/><category scheme='http://www.blogger.com/atom/ns#' term='golang programming'/><title type='text'>Hacking with Go</title><content type='html'>Hi everyone! I've just learned about Google's Go language and I think it'll be interesting to write software with it. I'm using this blog to record my experiences with Golang, so check it out from time to time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2673490712248854922-8103782290246468278?l=hackgolang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hackgolang.blogspot.com/feeds/8103782290246468278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hackgolang.blogspot.com/2010/05/hacking-with-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/8103782290246468278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2673490712248854922/posts/default/8103782290246468278'/><link rel='alternate' type='text/html' href='http://hackgolang.blogspot.com/2010/05/hacking-with-go.html' title='Hacking with Go'/><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg'/></author><thr:total>0</thr:total></entry></feed>
