Interview: Gopher Petar Maymounkov

Petar Maymounkov

Qs. Welcome and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your-self?

Petar: I started programming in Abu Dhabi, age 5, during a work trip of my father’s when my parents bought me a Sinclair ZX Spectrum. In high-school I made money breaking the sentinel-based security of CAD products for the Eastern European construction market. I was told that Harry Lewis was the deciding voice on my acceptance to Harvard. How odd. I studied Math and Computer Science in College under the influence of M. Mitzenmacher, M. Rabin and L. Valiant. I joined D. Mazieres at NYU after where we made Kademlia and Online/Rateless Coding. I worked at a hedge-fund, Tower Capital Research, which also owned Lime Wire. Coincidence? Eventually I went for PhD at MIT compelled to study Theory to resolve some puzzles from peer-to-peer systems. Following that, I worked at Tumblr where I conceived the circuit for purpose of performing fluid behavioral analysis on mountains of data. Since leaving Tumblr, my work on Circuit and Escher has been funded by a DARPA grant under the XDATA initiative.

Qs. Why and when did you decide to start working with Go?

Petar: I adopted Go the day it came out. In it, I immediately saw some problems of the prior decades regarding semantics of concurrent programming. I had had an extensive experience writing peer-to-peer software—the most concurrency demanding in a linguistic sense software—and had been aware of long standing language issues.

Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?

Petar: I was up and running in one hour after reading Effective Go. The knowledge absorbed as I chose to rewrite a then 80,000 line Scala implementation of a peer-to-peer research project Tonika into an order of magnitude shorter and more stable Go program.

Qs. What best practices are most important for a new Go programmer to learn and understand?

Petar: Two things:

This is an invitation to develop correct thinking within the fundamental framework of distributed computation.

Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?

Petar: No opinion.

Qs. Most beginners in Go would like to contribute their time, skills and expertise to a project but invariably are unaware of where and how to do so. Could you suggest some?

Petar: I would suggest computing the frequence of use of each package and then learning the source code of the top 10 most-frequently imported packages. The style of the foundational packages demonstrates a variety of new thinking and design techniques.

Qs. What has been your biggest challenge while working with Go?

Petar: I’m a happy customer. Generics are not needed. I resolve this by thinking of Go as a platform language. I.e. if one wants Go-with-generics, simply use Go-without-generics to implement a simple source-to-source transformer.

Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?

Petar: All programming languages are bridges between other languages (or semantics) that control more specific technologies. Go’s place within the “pyramid” of languages that underly desktops is embodied in the history of the adoption of software components implemented in Go and part of the industrial software stack.

This is a process that is evolving at the moment. But it seems that Go’s forte has been and will stay in the gluing of legacy technologies at the POSIX (interface to OS kernel) and lower (system) levels.

Higher-level usage of Go is its currently secondary forte, whereby Go is used to implement non-extensible technologies (like databases, file systems, specific information pipelines, and so on). I think in the near future Go will find more use as an “assembly language” for source-to-source translators.

Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?

Petar: Go Programmers will be substantially different than others. Go makes it more possible than ever to solve and close software problems, which means that Go developers will typically be busy developing entirely new concepts. They, along with Go, likely will run up and down the hierarchy of technical problems within the corporate stack.

Qs. Do you have any other suggestions for our readers?

Petar: I find that the concision and simplicity of Go enables more and more the direct implementation of algorithms and algebraic systems from the vast Computer Science and Math literature. I would advice Go enthusiast to be curious about theoretical sciences as much insight from there awaits to be directly materialized into Go programs.

Thanks Petar for sharing your views with us. I am confident that your insights would help all the would-be Go programmers. In case you have any queries and/or questions, kindly post your questions here (as comments to this blog post) and Petar would be glad to answer.


← Back to blog home
comments powered by Disqus