
Show HN: My Book, Hands-On Software Engineering with Golang - achilleasa
https://www.packtpub.com/gb/programming/hands-on-software-engineering-with-golang
======
achilleasa
Hi HN! After several months of intense writing and code debugging I have
finally published my first book: Hands-on Software Engineering with Golang
(link in title).

I tried to differentiate from other Go books out there by including things
that align with my research interests. Inside the book and its accompanying
code you can find lots of (hopefully) interesting concepts such as how to
build from scratch data pipelines and a distributed graph processing system
inspired by Pregel.

As simply discussing these concepts is not that interesting without some code,
my main focus was to write a hands-on book. To this end, the book is kinda
code-heavy and includes about 16.2k lines of Go code (52% Go code, 30% tests
and 17% auto-generated mocks/gRPC stubs according to gocloc).

You can find the full source code for the book at
[https://github.com/PacktPublishing/Hands-On-Software-
Enginee...](https://github.com/PacktPublishing/Hands-On-Software-Engineering-
with-Golang). It comes with an MIT license so feel free to tinker with it and
let me know what you think!

~~~
ifoundthetao
Thanks for writing this!

------
meling
Disappointed that dependency management seems to be based on old vendoring
technologies and not Go Modules... (caveat, I only looked at the toc and some
previews... but still)

~~~
achilleasa
To be fair, I have included a section that extols the benefits of Go modules
and hints that this is the way forward.

However, for the book source code, I opted to use dep to make sure it can be
used by folks that use older Go compiler versions that lack support for Go
modules. That being said, it should be trivial to convert the repo to use Go
modules.

~~~
e12e
> folks that use older Go compiler versions

Why? (I don't mean that as snark; with the ease of installing and upgrading
the go compiler compared to the olden days of acquiring a c compiler on a
floppy disk - why not target the latest version? I[s] cgo trailing behind?)

~~~
achilleasa
I'd say it's more of a personal preference really. I have hit some issues
trying to use Go modules in the past (although support for Go modules has
admittedly improved vastly since the last time I used them) and dep has always
worked consistently for me so it seemed like a better choice for the book.

~~~
sswezey
That seems like a myopic perspective for a book focused on software
engineering. The creators of Go see the language as a tool of software
engineering e.g. a tool of software development over time. It would be in the
best interest of your readers to align with the creators and the community.
Teaching people to use an unofficial dependency manager whose usage will only
continue to decline in lieu of the official one will do a disservice to your
readers and will not age well.

~~~
achilleasa
I totally get your point but dep was (for quite a bit) the official dependency
manager experiment before the proposal for Go modules moved forward and is
still hosted under the golang GitHub repo with no deprecation notice. As
mentioned in a reply above, the book contains a section about Go modules and
makes a case for them being the way forward.

------
zgiber
Congratulations! Just got my hands on it recently so can't give too valuable
feedback just yet. The contents promise to be a real good help with
bootstrapping and scaling a product or an engineering project. A very broad
spectrum of topics are reflected. It has a good balance of being hands-on and
holistic at the same time. Pretty much at the first chapter though :) looking
forward to read through the rest.

------
faitswulff
What was the experience like working with packt?

~~~
achilleasa
Apart than the fact that the editors were not native English speakers and I
had to spend quite a bit of time reverting several of their editing changes,
the whole process was generally smooth and distraction-free (although note I
haven't really written a book before so I can't really compare to other
publishers) with a few exceptions:

1) Depending on the editor team assigned to your book, they may introduce
arbitrary content guidelines (e.g. no code blocks over 15 lines, no figure
subtitles; had to press hard to get them restored etc.) after you have already
submitted a couple of chapters. I don't really mind the guidelines but it
would be great to know them in advance as I had to go back and revise the
content.

2) My biggest gripe was their authoring workflow. Personally, I would prefer
to write everything in Tex but unfortunately, you need to use their online
editing environment (essentially, a wordpress installation with a heavily
modified tinyMCE). As I do everything in vim nowadays, I had to setup my own
workflow (write markdown + bibtex references, pass through pandoc to convert
to html, run a sed script to inject the correct css styles and copy the result
back to their system). It's a bit more effort but it allowed me to work
offline and use git to track my changes. If anyone is interested in a similar
setup, let me know and I can push a repo on GH with the Makefile/css scripts.

Also, there doesn't seem to be a way to get an estimate of the book sales
unless you wait for their periodic royalties report. Not sure how it works yet
because the book just got released but maybe someone else can comment on this.

~~~
codeplea
I wrote for them too. My book was published last May.

I made a similar workflow to you. I wrote using vim and markdown, then used
pandoc to convert to HTML. I then wrote some scripts to mangle the HTML to
something more compatible with Packt's system (adds some class names and the
like).

Regarding sales, they send me royalty statements for each quarter about 3
months after the quarter's end. For example, my book was released in May. I
didn't get my first statement until the end of September. My last statement is
dated Dec 31st, and it covers July-September 2019.

You can also setup an Amazon author account and get Amazon sales numbers much
more quickly. Just go to
[https://authorcentral.amazon.com/](https://authorcentral.amazon.com/) and
create an account. You'll then have to verify that you're the author of your
book, but it's pretty straight forward.

~~~
achilleasa
I had already set up an author-central account on amazon.co.uk but it seems
like sales info (looks like it's US-only) is only available if you also sign
up for an author-central account on amazon.com

------
simmanian
Your Code in Action link[1] doesn't seem to work. It takes me to a youtube
playlist that shows as unavailable.

[1]
[https://www.youtube.com/playlist?list=PLeLcvrwLe1849uRCrEOlQ...](https://www.youtube.com/playlist?list=PLeLcvrwLe1849uRCrEOlQ0NCoLPxJgbFh)

~~~
achilleasa
Not sure how the code in action link is supposed to work. That is probably a
general feature offered by Packt which is not used by this particular book.

------
r4mbini
Congratulations on publishing! I'm looking at picking up some Go best
practices. What level of Go/coding experience do you feel your book is pitched
at?

~~~
achilleasa
The first chapters focus exclusively on the SOLID design principles and best
practices for testing and vendoring while the rest of the chapters get
progressively more and more technical.

I think the material should be relatively easy to follow up to chapter 11 for
anyone with a basic understanding of programming in Go. Chapter 12 is a bit
more complex as it describes the implementation of a distributed graph
processing system.

I would definitely recommend taking a look at the (heavily commented) code on
GitHub to see for yourself.

------
wgx
Hello from a fellow Packt author

 _waves_

