It’s been a year plus now that I’ve been streaming on Twitch (FOLLOW on the channel, it’s free not a paid subscription or anything). At points it has been weekly, sometimes every other week, sometimes every day of the week, or in some cases even more intermittently or frequently. The schedule, considering, has been kind of ridiculous. But that has now changed.
Category: Unknown Code Ramblings
A Really Quick Introduction to Minikube
There’s likely a million introductions to Minikube, but I wanted one of my own. Thus, here you go! Minikube is basically Kubernetes light that runs on your own machine. Albeit, it does this similarly to how Docker used to do it, via a virtual machine. Thus, you can do some things with it but if you want to get serious you’ll still need to spool up a proper cluster somewhere as it will start to bog down your machine with any heavy workloads.
1: Minikube – Installing
Linux Direct:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& sudo install minikube-linux-amd64 /usr/local/bin/minikube
Linux Debian:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& sudo install minikube-linux-amd64 /usr/local/bin/minikube
Linux Red Hat:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-1.4.0.rpm \
&& sudo rpm -ivh minikube-1.4.0.rpm
2: Starting Minikube
minikube start will start a minikube instance, pulling images, resources, kubelets, kubeadm, dashboard, and all those resources.

3: Stopping Minikube
minikube stop brings the minikube service to a stop, allowing for restart later.

4. Deleting Minikube
minikube delete will delete the minikube. This will delete any of the content or related collateral that was running in the minikube.
![]()
5. Restarting after Delete
minikube start this is the way to restart a minikube instance after you’ve stopped the instance. It’s also the way start a minikube, as shown above.

6. Starting a Named Minikube
If you want a named minikube instance, use the -p switch, with a command like minikube start -p adrons-minikube.

7. Starting & Using the Dashboard
To check out the dashboard, that pretty Google dashboard for Kubernetes, run minikube dashboard to bring that up.


8. Status!
To get a quick update on the current state of the minikube instance just run minikube status.

9. Starting Minikube sans a Virtual Machine
This is, albeit I may be mistaken, this is a Linux only feature. Run minikube start --vm-driver=none and it’ll kick off a minikube right there on your local machine.

References:
Learning Go Episode 4 – Composite Types, Slices, Arrays, Etc.
Episode Post & Video Links: 1, 2, 3, 4 (this post), 5, 6, 7, and 8. Non-linked are in the works! Videos available now on Youtube however, so check em’ out!
If you’d like to go through this material too in book form, I highly suggest “The Go Programming Language” by Alan A.A. Donovan & Brian W. Kernighan. I use it throughout these sessions to provide a guideline. I however add a bunch of other material about IDE’s, development tips n’ tricks and other material.
8:00 Starting the core content with some notes. Composite types, arrays, slices, etc.
11:40 Announcement of my first reload – http://compositecode.blog/2019/02/11/… – second successful time blogged here) of the XPS 15 I have, which – https://youtu.be/f0z1chi4v1Q – actually ended in catastrophe the first time!
14:08 Starting the project for this session.
16:48 Setting up arrays, the things that could be confusing, and setup of our first code for the day. I work through assignment, creation, new vs. comparison, and various other characteristics of working with arrays during this time.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| fmt.Println("Hello, let's talk composite types.") | |
| basketOfStuff := [3]string{"The first string","second","This string."} | |
| var zeeValues [2]int | |
| for i, v := range basketOfStuff { | |
| fmt.Printf("Value %d: %s\n", i, v) | |
| } | |
| fmt.Println(zeeValues) | |
| if zeeValues[0] == zeeValues[1] { | |
| fmt.Println("The values are the same, this doesn't instantiate like the `new` keyword.") | |
| } else { | |
| fmt.Println("The way go appears to instantiate unset variable values, such as in this array is like the `new` keyword instantiation.") | |
| } | |
| zeeValues[0] = 1 + 52 * 3 | |
| zeeValues[1] = 9 | |
| fmt.Println(zeeValues[len(zeeValues) – 1]) |
29:36 Creation of a type, called Currency, of type int, setting up constants, and using this kind of like an enumerator to work with code that reads cleaner. Plus of course, all the various things that you might want to, or need for a setup of types, ints, and related composite types like this.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| type Currency int | |
| const ( | |
| USD Currency = iota | |
| CAN | |
| EUR | |
| GBP | |
| JPY | |
| NOK | |
| SEK | |
| DKK | |
| ) | |
| symbol := […]string{USD: "$", CAN: "$", EUR: "€", GBP: "£", JPY:"¥", NOK:"kr", SEK:"kr",DKK:"kr"} | |
| fmt.Println(EUR, symbol[EUR]) | |
| fmt.Println(JPY, symbol[JPY]) | |
| r := […]int{99: -1} | |
| r[36] = 425 | |
| r[42] = 42 | |
| fmt.Println(r[36] + r[42]) | |
| fmt.Println(strconv.Itoa(r[36])) |
43:48 Creating an example directly from the aforementioned book enumerating the months of the year. This is a great example I just had to work through it a bit for an example.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| months := […]string{1: "January", 2:"February", 3: "March", 4:"April", 12:"December"} | |
| for _, s := range months { | |
| fmt.Printf("The month: %s\n", s) | |
| } | |
| var runes []rune | |
| for _, r := range "Language: 走" { | |
| runes = append(runes, r) | |
| } | |
| fmt.Printf("%q \n", runes) | |
| var x, y []int | |
| for i := 0; i < 10; i++ { | |
| y = appendInt(x, i) | |
| fmt.Printf("%d cap=%d\t%v\n", i, cap(y), y) | |
| x = y | |
| } |
52:40 Here I start showing, and in the process, doing some learning of my own about runes. I wasn’t really familiar with them before digging in just now!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| … the rest of the main.go file is here… | |
| var runes []rune | |
| for _, r := range "Language: 走" { | |
| runes = append(runes, r) | |
| } | |
| fmt.Printf("%q \n", runes) | |
| var x, y []int | |
| for i := 0; i < 10; i++ { | |
| y = appendInt(x, i) | |
| fmt.Printf("%d cap=%d\t%v\n", i, cap(y), y) | |
| x = y | |
| } | |
| } | |
| func appendInt(x []int, i int) []int { | |
| var z []int | |
| zlen := len(x) + 1 | |
| if zlen <= cap(x) { | |
| z = x[:zlen] | |
| } else { | |
| zcap := zlen | |
| if zcap < 2* len(x) { | |
| zcap = 2 * len(x) | |
| } | |
| z = make([]int, zlen, zcap) | |
| copy(z, x) | |
| } | |
| return z | |
| } |
1:09:40 Here I break things down and start a new branch for some additional examples. I also derail off into some other things about meetups and such for a short bit. Skip to the next code bits at the next time point.
1:23:58 From here on to the remainder of the video I work through a few examples of how to setup maps, how make works, and related coding around how to retrieve, set, and otherwise manipulate the maps one you’ve got them.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import "fmt" | |
| func main() { | |
| ages := map[string]int{ | |
| "Peterson": 52, | |
| "Sally": 22, | |
| "Javovia": 15, | |
| "Ben": 42, | |
| } | |
| jobAssociation := make(map[string]string) | |
| jobAssociation["Peterson"] = "Engineer" | |
| jobAssociation["Sally"] = "CEO" | |
| jobAssociation["Jovovia"] = "Gamer" | |
| jobAssociation["Ben"] = "Programmer" | |
| printAges(ages) | |
| printJobAssociations(jobAssociation) | |
| fmt.Println(ages) | |
| fmt.Println(jobAssociation) | |
| fmt.Println(jobAssociation["Jovovia"]) | |
| fmt.Println(jobAssociation["Frank"]) // Blank! 😮 | |
| fmt.Println(ages["Sally"]) | |
| delete(ages, "Sally") | |
| fmt.Println(ages) | |
| fmt.Println(ages["Sally"]) | |
| delete(jobAssociation, "Jovovia") | |
| fmt.Println(jobAssociation) | |
| fmt.Println(jobAssociation["Jovovia"]) // Blank. | |
| ages2 := map[string]int{ | |
| "Frank": 52, | |
| "Johnson": 22, | |
| "Smith": 15, | |
| "Jezebelle": 42, | |
| } | |
| ages3 := map[string]int{ | |
| "Frank": 52, | |
| "Johnson": 22, | |
| "Smith": 15, | |
| "Jezebelle": 42, | |
| } | |
| if equal(ages, ages2) { | |
| fmt.Println("Naw, not really equal.") | |
| } else { | |
| fmt.Println("This is correct, not equal.") | |
| } | |
| if equal(ages2, ages3) { | |
| fmt.Println("True, these are effectively the same map values and keys.") | |
| } | |
| } | |
| func printJobAssociations(associations map[string]string) { | |
| for name, job := range associations { | |
| fmt.Printf("%s\t%s\n", name, job) | |
| } | |
| } | |
| func printAges(ages map[string]int) { | |
| for name, age := range ages { | |
| fmt.Printf("%s\t%d\n", name, age) | |
| } | |
| } | |
| func equal(x, y map[string]int) bool { | |
| if len(x) != len(y) { | |
| return false | |
| } | |
| for k, xv := range x { | |
| if yv, ok := y[k]; !ok || yv != xv { | |
| return false | |
| } | |
| } | |
| return true | |
| } |
That’s it for this synopsis. Until next episode, happy code thrashing and go coding!
Thrashing Metal Monday for Week of the 13th of May.
A new band I just learned about this last week is Bloody Hammers. Listen to those vocals, traditional dark prodding rhythms and melody. It’s eerie in the best of ways and provides that melancholy horror movie feel so well! Beautiful!
You can check out their website which has good details and information, but their material is of course out there on Bandcamp too so check that out and pick up some tunes!
Not new for regular readers of Composite Code or viewers of Thrashing Code listening sessions, but I felt another Spoil Engine tune showing some of their range would be a good kick to Monday. May it light your mind up for the week!
To wrap up the trigonous edges of metal for today, part one of the new Amon Amarth saga!
It’s Monday, So Here’s Your Metal Dose
A quick list, devoid of details, cuz I’m already into the thick of it today. A mix of new, a mix of old, some Japanese lyrics, and a few English ones.
If you’re up for some listening sessions and getting introduced to even more metal and various musical variety, check out these two past listening sessions on my Thrashing Code Channel!
Listening Sessions Episode 1 – Bands List
Listening Sessions Episode 2
You must be logged in to post a comment.