<span id="mailbox-conversation"><div>I forgot what it’s like to be constrained by the tools available on a system.   I’ve been lucky to be in charge of those decisions since, well, since I started in the industry actually.   Wow, I have been lucky haven’t I?</div>
<div><br></div>
<div>I avoided Python for, um, yeah, 15 years before I saw the light.   In 2009 I had to pick a principal language for a tech team of 50 with an expectation they’d grow to 100.   As much as I enjoyed Perl when it was less than half a dozen of us,  I couldn’t convince myself it would be maintainable for such a large team.    I liked python for all sorts of reasons including that it’s easy to read, easy to hold to team to engineering standards and seemed like would give me most of what I loved from dynamic languages while also being manageable with for a large team.  That pretty much proved out to be true though eventually I saw the warts of a dynamic language — runtime exceptions and general code execution speed caused us some pain.</div>
<div><br></div>
<div>Those are some of the reasons I like Go so much.   It’s duck typing and speed of compilation give me a lot of the joy of the dynamic languages.   It’s designed for,  among other things, large code bases and large teams.   Standardizing the code style with go format (https://golang.org/pkg/go/format/) really makes it easy to read other peoples code.</div>
<div><br></div>
<div>It also has nice properties for:</div>
<div><br></div>
<div>* Code execution speed is good<br></div>
<div>* Compile speed is awesome.  I’m told it’s more amazon on large codebases. </div>
<div>* Software distribution is easy.  You end up with system binaries as someone else noted earlier.   No more hell of shipping something and then trying to do dependency management on a remote system you don’t control.</div>
<div>* It is trivial to cross compile (I do it for MacOS, x86_64, Linux arm (raspberry pi), and Windows.</div>
<div>* The compiler and strong typing helps me avoid runtime exceptions (while duck typing keeps me sane)</div>
<div>* Its standard library has great tools for quickly writing network apps.</div>
<div>* It is object oriented using composition instead of inheritance (this could be highly debated, but I like it)</div>
<div><br></div>
<div>There is also the idea that it’s build for writing concurrent programs, but I’m still, frankly, getting my head around that so I can’t say it’s (yet) a selling point for me.</div>
<div><br></div>
<div>I do have at least one frustration with it.   I have yet to find a library that lets me write GUI apps with Go.    Some have said that the GUI is where inheritance in OOP shines.   I’m not sure.    </div>
<div><br></div>
<div>Anyway, this has been fun.. I think I’ll stop now.  :-)   </div>
<div><br></div>
<div>Happy hacking, </div>
<div><br></div>
<div>-Darrell</div>
<div><br></div>
<div>p.s if any of you have a Sharp Aquos TV with a network stack, you might find one Go program I wrote useful…</div>
<div><br></div>
<div><div>https://github.com/golliher/go-sharptv</div></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div><br></div></span><div class="mailbox_signature">
<br>—<div>http://golliher.net</div>
</div>
<br><br><div class="gmail_quote"><p>On Thu, Aug 6, 2015 at 9:21 AM, leam hall <span dir="ltr">&lt;<a href="mailto:leamhall@gmail.com" target="_blank">leamhall@gmail.com</a>&gt;</span> wrote:<br></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div dir="ltr"><div class="gmail_extra">
<div class="gmail_quote">On Thu, Aug 6, 2015 at 8:08 AM, Darrell Golliher <span dir="ltr">&lt;<a href="mailto:darrell@golliher.net">darrell@golliher.net</a>&gt;</span> wro<br><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span>Leam,  you mentioned fun in your criteria.  I like that.    The most fun I’ve had programming lately has been <div>in Go.   pro-tip for googling it is is to use “golang”   <a href="https://golang.org">https://golang.org</a>     I’ve done basic, pascal, modular-2, assembly, C, C++, Perl, Python, Javascript and probably a few others I’ve forgotten.     Go rocks.</div>
<div><br></div>
<div>I don’t spend a lot of time thinking about it from a career path perspective, but there are some signs it could prove</div>
<div>marketable, maybe.    Docker is built with it for example.  Digital Ocean seems to use it a lot too.</div>
<div>
<div>Here’s a list of companies..  <a href="https://github.com/golang/go/wiki/GoUsers">https://github.com/golang/go/wiki/GoUsers</a>
</div>
<div><br></div>
<div>Maybe it’s never be more than a niche language — I can’t predict the future on that one.  I hear good things about Rust and with Apple’s Swift being open sourced it has a shot a being generally useful too.     Javascript has even gotten more interesting with the rise of the node, express and angular (aka. MEAN stack when you add mongoldb).</div>
<div><br></div>
<div>Anyway.. I digress.  I was trying to plug Go. :-)</div>
<div><br></div>
<div>cheers,</div>
<div><br></div>
<div>Darrell</div>
</div></span>
</blockquote>
<div><br></div>
<div>Hey Darrell,<br><br></div>
<div>A couple years ago I looked at Go. It's touted as a systems programming language and since I work on systems, that seemed like a good route to take. I even made something nominally useful with it (<a href="https://github.com/makhidkarun/vargr_names/blob/master/vargr_names.go">https://github.com/makhidkarun/vargr_names/blob/master/vargr_names.go</a>)<br><br></div>
<div>Some guy named Brian is supposed to be putting out a book on it the end of the year (<a href="http://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440/ref=sr_1_sc_1?ie=UTF8&amp;qid=1438866668&amp;sr=8-1-spell&amp;keywords=brian+kernigan+go">http://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440/ref=sr_1_sc_1?ie=UTF8&amp;qid=1438866668&amp;sr=8-1-spell&amp;keywords=brian+kernigan+go</a>) and I've thought about combining the O'Reilly video course with the book as a Christmas gi....errr.... winter work project.   :)<br><br></div>
<div>The main issue I'm trying to overcome with coding is getting work done at work. I've done stuff with a few languages but keep getting pulled back to shell or manual because that's what work supports. With Ruby, I can say "It's on the machines, so I can use it". Go would be a harder sell unless I can find a job at a Docker shop or some place that is producing system tools. Given my current coding skills, I see that as unlikely in the short term. <br><br></div>
<div>Some of the skills I'm learning now should translate; writing tests, making the code handle errors and exceptions. Some are only useful to OO languages. <br><br></div>
<div>Still, having fun rates high. <br><br></div>
<div>Leam<br><br></div>
</div>
<br>-- <br><div class="gmail_signature"><div><a href="http://leamhall.blogspot.com/">Mind on a Mission</a></div></div>
</div></div></div></blockquote></div><br>