Learning Golang (some rough notes) - S02E06 - Putting the Producer in a function and handling errors in a Go routine
When I set out to learn Go one of the aims I had in mind was to write a version of this little Python utility which accompanies a blog I wrote recently about understanding and diagnosing problems with Kafka advertised listeners. Having successfully got Producer, Consumer, and AdminClient API examples working, it is now time to turn to that task.
Learning Golang (some rough notes) - S02E05 - Kafka Go AdminClient
Learning Golang (some rough notes) - S02E04 - Kafka Go Consumer (Function-based)
Learning Golang (some rough notes) - S02E03 - Kafka Go Consumer (Channel-based)
Having written my first Kafka producer in Go, and even added error handling to it, the next step was to write a consumer. It follows closely the pattern of Producer code I finished up with previously, using the channel-based approach for the Consumer:
Learning Golang (some rough notes) - S02E02 - Adding error handling to the Producer
I looked last time at the very bare basics of writing a Kafka producer using Go. It worked, but only with everything lined up and pointing the right way. There was no error handling of any sorts. Let’s see about fixing this now.
Learning Golang (some rough notes) - S02E00 - Kafka and Go
With the first leg of my journey with Go done (starting from a very rudimentary base), the next step for me was to bring it into my current area of interest and work - Apache Kafka.
Learning Golang (some rough notes) - S01E10 - Concurrency (Web Crawler)
In the previous exercise I felt my absence of a formal CompSci background with the introduction of Binary Sorted Trees, and now I am concious of it again with learning about mutex. I’d heard of them before, mostly when Oracle performance folk were talking about wait types - TIL it stands for mutual exclusion
!
Why JSON isn’t the same as JSON Schema in Kafka Connect converters and ksqlDB (Viewing Kafka messages bytes as hex)
I’ve been playing around with the new SerDes (serialisers/deserialisers) that shipped with Confluent Platform 5.5 - Protobuf, and JSON Schema (these were added to the existing support for Avro). The serialisers (and associated Kafka Connect converters) take a payload and serialise it into bytes for sending to Kafka, and I was interested in what those bytes look like. For that I used my favourite Kafka swiss-army knife: kafkacat.
Learning Golang (some rough notes) - S01E09 - Concurrency (Channels, Goroutines)
A Tour of Go : Goroutines was OK but as with some previous material I headed over to Go by example for clearer explanations.
Learning Golang (some rough notes) - S01E08 - Images
This is based on the Picture generator from the Slices exercise.
Learning Golang (some rough notes) - S01E07 - Readers
I’m not intending to pick holes in the Tour…but it’s not helping itself ;-)
For an introductory text, it makes a ton of assumptions about the user. Here it introduces Readers, and the explanation is good—but the example code looks like this:
Learning Golang (some rough notes) - S01E06 - Errors
Like Interfaces, the Tour didn’t really do it for me on Errors either. Too absract, and not enough explanation of the code examples for my liking. It also doesn’t cover the errors
package which other tutorial do. I’m not clear if that’s because the errors package isn’t used much, or the Tour focusses only on teaching the raw basics.
Learning Golang (some rough notes) - S01E05 - Interfaces
This page really threw me, for several reasons:
-
The text notes that there’s an error (so why don’t they fix it?)
-
The provided code doesn’t run (presumably because of the above error)
-
It’s not clear if this is a deliberate error to illustrate a point, or just a snafu
Learning Golang (some rough notes) - S01E04 - Function Closures
So far the Tour has been 🤔 and 🧐 and even 🤨 but function closures had me 🤯 …
Each of the words on the page made sense but strung together in a sentence didn’t really make any sense to me.
Learning Golang (some rough notes) - S01E03 - Maps
Implement WordCount
This is probably bread-and-butter for any seasoned programmer, but I enjoyed the simple process and satisfaction of breaking the problem down into steps to solve using what the tutorial had just covered. Sketching out the logic in pseudo-code first, I figured that I wanted to do this:
Learning Golang (some rough notes) - S01E02 - Slices
Slices made sense, until I got to Slice length and capacity. Two bits puzzled me in this code:
Learning Golang (some rough notes) - S01E01 - Pointers
I’ve never used pointers before. Found plenty of good resources about what they are, e.g.
But why? It’s like explaining patiently to someone that 2+2 = 4, without really explaining why would we want to add two numbers together in the first place.
Learning Golang (some rough notes) - S01E00
My background is not a traditional CompSci one. I studied Music at university, and managed to wangle my way into IT through various means, ending up doing what I do now with no formal training in coding, and a grab-bag of hacky programming attempts on my CV. My weapons of choice have been BBC Basic, VBA, ASP, and more recently some very unpythonic-Python. It’s got me by, but I figured recently I’d like to learn something new, and several people pointed to Go as a good option.