tag:blogger.com,1999:blog-57242824190153354272024-03-08T02:18:08.283-08:00Bomoko and other nonsense wordsbomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-5724282419015335427.post-64567388843783951092024-01-10T09:56:00.000-08:002024-01-10T09:56:47.272-08:0012 Contributions, 12 Months<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZmqz-siSYj8zWZIFKXwVcFgNMh9A-kdhw1-mSVEOf6WEqw0LrAtA1cHX-3HxLFWyfs4N9Cp6G3h8VPNZJI0j6dkDR_I5Ws-jSc_pAgxKi9EN2d7Rb2Bab_NOW0pt4GJy78phbs40dPXMwxI2noVVGlawnYEm8ullu3DmQf6h-IOokkEc-3BljYZSbaQ/s1024/12contribs.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZmqz-siSYj8zWZIFKXwVcFgNMh9A-kdhw1-mSVEOf6WEqw0LrAtA1cHX-3HxLFWyfs4N9Cp6G3h8VPNZJI0j6dkDR_I5Ws-jSc_pAgxKi9EN2d7Rb2Bab_NOW0pt4GJy78phbs40dPXMwxI2noVVGlawnYEm8ullu3DmQf6h-IOokkEc-3BljYZSbaQ/s320/12contribs.jpeg" width="320" /></a></div><br />A few years ago, a friend of mine decided to challenge himself to do <a href="https://drupalsun.com/fran-garcia/2020/01/17/contributing-12-drupal-patches-12-months">12 patches to Drupal in 12 months</a>. <p></p><p>Since I work on an open source product, I make contributions to OSS practically daily, but this year I'd like to give back a little more - so I'm going to attempt to do 12 contributions outside of the <a href="https://github.com/uselagoon/">things I work on daily</a>.</p><h4 style="text-align: left;">But why?</h4><div style="text-align: left;">It's worth spending some time thinking and writing about the current problems with open source software. We have, by and large, a <a href="https://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-and-the-oss-community">demographics problem</a>, a problem with large corporations hoovering up the unpaid labour of contributors and profiting off it, there are various cultural issues within the free and open source communities we're still trying to address.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">And yet, I still think of Open Source software as being something of a triumph in a world where we seem to value profit over everything else. Where we seem to, almost reflexively, seek to reduce any occurring phenomenon to its dollar value.</div><div style="text-align: left;">From the first time I heard of Free and Open Source software, I was inspired by the fact that here was an instance of the kind of best instincts in humans - being creative and productive purely for the sake of creativity and productivity. Of course, the cynic will say that it's all <a href="https://en.wikipedia.org/wiki/Egoboo">egoboo</a>, but I don't buy that.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">I really should write about all this in more depth, I suppose - this isn't a particularly well thought out piece, I just wanted to gesture towards why I love (and have practically always worked in) open source.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">More practically, I'm hoping that these contributions will both be useful for others, and teach me some new things.</div>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-26409408619632471532024-01-01T17:58:00.000-08:002024-01-01T17:58:11.983-08:00JCE's Gifted and Talented Center<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvAzZSUCf4_UdtFOiPOElgc4LcpD6a9BKxeKwfcF9sRmSgqUq-gzd6tWtgozOXkD57O71zUXOnyNZAh3FSXQL-uD9L7kbgeIg6eiftaXUpYFqEX53SHI6wKYgEPGAyH5huQNzYX8scOXxq6569zjj05-gSKl6ALcJMYgt3RckjD_vJ4TP84yACHdHmUR0/s1024/giftedchild.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvAzZSUCf4_UdtFOiPOElgc4LcpD6a9BKxeKwfcF9sRmSgqUq-gzd6tWtgozOXkD57O71zUXOnyNZAh3FSXQL-uD9L7kbgeIg6eiftaXUpYFqEX53SHI6wKYgEPGAyH5huQNzYX8scOXxq6569zjj05-gSKl6ALcJMYgt3RckjD_vJ4TP84yACHdHmUR0/s320/giftedchild.jpg" width="320" /></a></div><br />Back in South Africa, in the early 90s, I was invited to take part in programmes offered at the Johannesburg College of Education's "Gifted and Talented Center".<p></p><p>I can barely remember much about it. I recall that I did courses in electronics, drama, programming, and study techniques. Further, I remember the buildings and the general <i>feeling</i> of the place (massive buildings, alcoves with chairs and windows in the long passages between primary blocks, etc.).</p><p>However, I couldn't remember very much around the nature of the programme (if, indeed, I ever knew anything about it) - who funded it, how were pupils identified, etc.</p><p>I tried searching online but to no avail, there was one hit on someone's personal blog, but that was it.</p><p>I did, however, manage to find the director of the JCE Gifted Child Enrichment Center from the time I attended and took a chance, asking him if he'd be willing to provide me with some information.</p><p>He response was both generous and massively helpful.</p><p>What I think I may do is try and dig up references I can use to corroborate the information he has provided, and put up the information on wikipedia - surely there are others out there who attended and who have the same kinds of questions I did.</p><p>Rather than paste his words verbatim, I'll paste a quick summary of the information he has provided to me, with the notion that I'll make the full correspondence (with appropriate reference to the source) available if/when required. For now I'll keep things as anonymous as possible. His full response is a <i>lot</i> more comprehensive. <br /></p><p> <br /></p><h3 style="text-align: left;">The Questions</h3><h4 style="text-align: left;"> Who was behind the programme?</h4><div style="text-align: left;">It was driven by the National Department of Education, with the JCE based programme being specifically under the (then) Transvaal Education Department.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The programme spun out of an international enthusiasm (driven initially by the US) for "Talented and Gifted" (TAG) programmes.<br /></div><h4 style="text-align: left;">How were children selected for the programme?</h4><div style="text-align: left;">The "identification and selection process was quite comprehensive" with children being identified, it seems, initially (or, primarily, I guess) through teachers, and were then evaluated by school psychologists/psychometrists or at the centers themselves.</div><div style="text-align: left;">Those children with IQ ranges in the above average or gifted ranges were then invited to the school. <br /></div><h4 style="text-align: left;">What were the overall aims of the programme?</h4><div style="text-align: left;">The aims were to encourage the participants to develop their talents and interests in order to fulfill their potential and contribute to society. Many gifted students do not realize that they have such potential, some/many underachieving or dropping out.</div><div style="text-align: left;"><br /></div><h3 style="text-align: left;">Reflections</h3><div style="text-align: left;">I remember that at one point, all the children in my year -- perhaps all the seniors in my primary school -- took some kind of general intelligence test. I genuinely can't recall the details or the question types.</div><div style="text-align: left;"> <br /></div><div style="text-align: left;">What I do know is that a little while after, my teacher called me to the front of the class, gave me some information to pass on to my parents, and then I was off to the JCE campus every Friday afternoon (I think) to do all these cool classes.</div><div style="text-align: left;"> </div><div style="text-align: left;">I do think, however, that they were somewhat wasted on me. It's hard to say, but I think it was true. The problem is that at that point, my home life wasn't particularly conducive to learning. And there wasn't really much emphasis put on doing well at school.</div><div style="text-align: left;">So, firstly, I saw no reason to really pay attention to anything. And, secondly, even when I did pay attention, I had no real idea about how to focus, what to pay attention to, etc.</div><div style="text-align: left;"> </div><div style="text-align: left;">I spent the better part of my schooling simply daydreaming.</div><div style="text-align: left;"> </div><div style="text-align: left;">Much better, for me, would have been someone who just sat with me and helped me focus - helped me learn the way that I learn. Without that preparation, I don't think it would've mattered what kinds of enrichment came my way - I was barren ground. I don't think that anything would've taken root. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">I'm sure that there were many children there who got a lot out of the programme - and while I'm genuinely, deeply grateful that the opportunity came my way - my guess would be that the ones who flourished in the programme were likely already flourishing in school.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">I can't speak with authority on any of this except in my own case -- I think that it's partly because I only realized when I started studying for my undergraduate degree that I learn better when I learn from books. Lessons, lectures, and (these days) videos just do not work for me unless I've already covered the work on my own. The so-called "<a href="https://en.wikipedia.org/wiki/Flipped_classroom">flipped classroom</a>" methodology fits my learning style perfectly. I go in prepared, having covered the work, I'm able to ask clarifying questions, I have no anxiety about missing something and being lost.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">It may sound stupid, but if someone had simply shown me how to use books - how to engage with a text, shown me I can write in margins, how some texts take longer to process, etc. -- that would've been enough. No need for gifted child programmes - simply show me how to read a book, how to work through the exercises, explain how much time is needed to do mathematics, to read philosophy.</div><div style="text-align: left;">That would've been it.<br /></div>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-29226122113885234132023-10-26T17:04:00.000-07:002023-10-26T17:04:18.097-07:00Living at the end of the world<p> Short one, but I think one that I'll revisit again and again here.</p><p><br /></p><p>There is no shortage of suffering in this world. Indeed, unless we're very lucky, almost every one of us will experience extreme suffering and loss through our lives, if only at the end where we lose everything, including our-selves (whatever that may be). Think of the latter as the extreme of personal suffering.<br /></p><p><br /></p><p>In the other direction, call it collective suffering, we are also on the precipice of, potentially, major global destabilization due to a number of things, not least climate change, which threatens to cause unimaginable suffering on a mass scale. This collective kind of unimaginable suffering is <i>always</i> almost with us, whether it be from war, weather, disease, or ideology, among a host of others.</p><p><br /></p><p>We tend to fear this kind of collective suffering more than personal suffering, but if you zoom out a little and pay attention, you'll see that the scale of personal suffering is really just a slow moving and mostly invisible, but constant, kind of mass suffering.</p><p><br /></p><p>Collective suffering itself seems to come in degrees - the collapse of industries that plunge a whole class of workers into poverty, authoritarian regimes, crushing poverty. People suffering, constantly, with no escape. These kinds of suffering, too, are often as invisible to us as the kind of personal suffering you see at the individual or familial level.<br /></p><p><br /></p><p>So what?</p><p>Well, I guess my first point about this stuff is that when we think of the end of the world, we only really consider scenarios of collective suffering. We fear these kinds of things terribly. The end of the world is coming and we're <i>all</i> going to suffer.</p><p>I think this is really only so scary for us because we realize that in that scenario there is no escape for us. If everyone suffers the end of the world, then it follows that I am going to suffer too.</p><p>The more local kinds of suffering always give us a little distance so we don't feel the full force of it.</p><p>I think that it's <a href="https://en.wikipedia.org/wiki/Terror_management_theory">entirely natural</a> for us to look away from human suffering. And I believe that end-of-the-world scenarios cause us so much grief because of this lack of escape.</p><p>But we're always already at the end of the world, aren't we?</p><p> </p><p>All these pockets of individual suffering, and local collective suffering. The bodies and the pain and the tears that accompany every moment. Death, death, and death.</p><p><br /></p><p>My question is something like, is it possible to learn to live authentically at the end of the world that already is?</p><p>I don't believe looking away is the answer. Neither can I believe that simply giving up is our only response (nihilism, depression, dejection, loss of hope, all of these are giving-up, in some way, and I believe all of them are natural, but perhaps not inevitable).</p><p><br /></p><p>So yeah, this is a big question that I'll occasionally write about, because I think about it a lot. No real answers just yet, except that I don't think that looking away is the answer.<br /></p><p><br /></p>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-64221592057884091552023-10-16T23:38:00.003-07:002023-11-11T09:44:49.392-08:00Ansible for devops without Vagrant<p><i><b>November 12, 2023, Update to add:</b> One reason to prefer Vagrant over docker is actually because of the mission involved in setting up projects running services. Since containers typically run single processes, systemd isn't necessary to coordinate these processes. </i><br /></p><p> </p><p> So I'm currently working through <a href="https://www.jeffgeerling.com/">Jeff Geerling</a>'s great book <a href="https://www.ansiblefordevops.com/">Ansible for Devops</a>.</p><p><br /></p><p>However, I wasn't so keen on installing and running vagrant when everything should be doable (I believe) using docker-compose.</p><p>At the same time, I'm going through his book so that I can better manage my few Raspberry Pis at home, and I'd like to be able to test my ansible scripts before running them on the live pis.<br /></p><p> </p><p>So what I decided to do was kill two birds with one repo and set up a docker-compose based test environment that can run my ansible scripts, but that mirrors my current ripi setup (mostly).</p><p> </p><h3 style="text-align: left;">Home network</h3><div style="text-align: left;">My current homelab is nothing special. Three pis -- coffee, xray, and pizza -- each with a static address on my private network and a dns record pointing to it.</div><div style="text-align: left;"> </div><div style="text-align: left;">So the idea was really simply to set up a <a href="https://github.com/bomoko/ansible-for-devops-composer/blob/main/docker-compose.yaml">docker-compose .yaml</a> file with three services mirroring those, and a primary service I've called "driver" that I can exec into and run ansible from.</div><div style="text-align: left;"> </div><div style="text-align: left;">If you take a look at the "driver" service you'll see I map whatever is in the "ansible" directory to the root's home directory - this should therefore contain your playbooks, inventory, etc. and it'll show up in "driver"'s home.</div><div style="text-align: left;"> </div><div style="text-align: left;">The `<a href="https://github.com/bomoko/ansible-for-devops-composer/tree/main/ansible">ansible/inventory</a>` file simply contains the name of the three services.</div><div style="text-align: left;"> </div><div style="text-align: left;"><h3 style="text-align: left;">The Dockerfile</h3></div><div style="text-align: left;"><br /></div><div style="text-align: left;">The <a href="https://github.com/bomoko/ansible-for-devops-composer/blob/main/Dockerfile">Dockerfile</a> is pretty simple, but there is some interesting stuff in it.</div><div style="text-align: left;">We install openssh-server and ansible.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">In order to make things simple, we generate an ssh-key for root in the container, and then we copy the id_rsa.pub into `authorized_keys` in order to allow any of the containers to ssh into any of the others. Since they share a network, they should just be able to access one another.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Finally, I set an <a href="https://github.com/bomoko/ansible-for-devops-composer/blob/main/sshconfig">ssh config</a> that disables strict host checking (although it may actually make sense to limit this to xray, pizza, and coffee. I might make this change).</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><h3 style="text-align: left;">Getting it to work</h3><div style="text-align: left;">Once you've cloned the repo, it's as simple as running `docker-compose up` to get the services up and running.</div><div style="text-align: left;">You can then docker-compose exec into "driver" and start running commands.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><img alt="" src="data:image/png;base64,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" /></div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-10247367777211288402023-10-02T13:23:00.001-07:002023-10-02T13:23:10.961-07:00What is this? <p>A while back, more than a decade ago (god), I had a friend who recommended blogging as a tool for thinking. Back then I was just getting started with graduate work in cognitive science (something I was new to) and was dealing with insecurity around whether I'd be able to cope etc.<br /></p><p>Life has changed, the degree got done in good time, I found I could mostly keep up with everyone around me (although, I also had the good fortune of meeting people who were way, way smarter than me - something everyone should experience as often as possible - more on this later, I'm sure) -- but I dropped the blog when I left my home country (South Africa) for my adopted one (New Zealand).</p><p>I more or less got rid of all public channels of communication at that point - all social media, my blog, stopped doing philosophy, and stopped writing fiction.</p><p><br /></p><p>There were a few reasons for it, but mostly I think I realized that I didn't want to have to deal with the (imagined) pressure of putting myself out in the world publicly.<br /></p><p><br /></p><p>I've kept to myself these last five or six years. It has been good, in some ways - but in others I feel I've lost something. I used to have greater ambitions. I could articulate them, make plans. These days I find it difficult to even give an outline to something that looks like an ambition.</p><p><br /></p><p>Maybe that's good. I think ambition for ambition's sake is probably toxic. But I don't think that I'm doing all that I could be doing, and that makes me a little disappointed.</p><p><br /></p><p>So part of resurrecting this blog (which shares its name with my old blog) is to try and set right some of the issues I'm dealing with -- try actually do something in the real world that has consequence, if only a teensy tiny bit.</p><p><br /></p><p>What does that look like, exactly?</p><p><br /></p><p>I'm not sure. But let me make a list of things that I'm kinda interested in, and we can go from there.</p><p><br /></p><ul style="text-align: left;"><li>I would like to write and submit a philosophy paper</li><ul><li>I really, really miss doing philosophy, and although I no longer have any ambition of becoming a professional philosopher and academic (something I held as my ultimate goal for a long, long time), I don't see my life as being complete without doing some kind of philosophical thinking and work.</li></ul><li>Write and submit some more fiction.</li><ul><li>I think it's about time for this. I miss writing, despite finding it one of the most challenging things I've ever done.</li></ul><li>Contribute to open source software</li><li>Read important books, report back on them</li><li>Delve deeper into contemplative practices, report back on this <br /></li></ul><p> </p><p>I suppose that the point is really to record thinking. But why out in public?</p><p>I'm not sure. It may be stupid, but what I'm doing right now isn't working. So I'm trying a different approach.</p><p>Further, actually having a record of what I've been doing or thinking might be useful, if only for me. </p><p>Blog or it never happened. <br /></p>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-50214999263261993332023-05-19T13:56:00.003-07:002023-05-19T13:56:14.600-07:00100 Go Mistakes 10-16<div style="text-align: left;">Here we go through the rest of Chapter 2</div><h4 style="text-align: left;"> 10 - Not being aware of the possible problems with type embedding</h4><div style="text-align: left;">Go allows you to not only include types as fields in structs, but also to <a href="https://gobyexample.com/struct-embedding"><i>embed</i></a> them.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Essentially this makes the fields of the embedded/base type part of the "containers" interface.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Harsanyi points out that this can lead to exposing more than you might want to, since <i>all</i> of the base type's fields and behaviors are exposed as part of the container.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">If there is reason to hide the base struct's details, rather simply include it as an unexported field and write accessors.</div><div style="text-align: left;"><br /></div><h4 style="text-align: left;">11 - Not using the functional options pattern</h4><div><br /></div><div>I'll admit that I hadn't heard about, or consciously noticed, this pattern before now, but it's quite brilliant.</div><div>An issue with positional arguments in complex functions is that having tons of arguments that are either null, or unused along certain paths, etc. is a real PITA.</div><div>My own preference, when factoring out the functionality into multiple functions is actually to pass through an options structure (like, in JS, maybe just some structured object with conventional fields).</div><div><br /></div><div>This is doable in golang, but there are a few gotchas around things like differentiating between something being unused and it just having its default value (with ints, 0 versus "I didn't set it").</div><div><br /></div><div>The functional options pattern is a quite brilliant approach that mixes anonymous functions and veriadic arguments to pretty much nail the issues we have with config.</div><div><br /></div><div>This <a href="https://www.sohamkamani.com/golang/options-pattern/">blog post by Soham Kamani</a> gives a good overview.</div><div><br /></div><div><br /></div><h4 style="text-align: left;">12 - Project misorganization</h4><div><br /></div><div>Gives a quick overview of project structure and package organization in golang projects.</div><div><br /></div><div>Suggests <a href="http://github.com/golang-standards/project-layout">github.com/golang-standards/project-layout</a> for structure.</div><div><br /></div><div>With regards to package organization</div><div><ul style="text-align: left;"><li>Golang has no notion of subpackages, so parent/child package relationships are more organizational than functional (there is no privileged access to internals of package X from package X/Y)</li><li>Avoid premature packaging, we might cause overcomplication.</li><li>Granularity is important to consider, we don't want hundreds of small packages (although an exception is made for those with highly cohesive functionality)</li><li>Name with care - we should name packages after what they <i>provide</i> rather than what they <i>contain</i>.</li><li>Export as little as possible. We can always export more later if necessary - this potentially reduces coupling.</li></ul><h4 style="text-align: left;">13 - Creating utility packages</h4></div><div>This is really just an argument against badly named, arbitrary "util" type packages. </div><div><br /></div><h4 style="text-align: left;">14 - Ignoring package name collisions</h4><div><br /></div><div>It's possible to introduce variable collisions and overriding for both package names and built-in functions. We should either rename our variables or (in the case of packages) alias the package name.</div><div><br /></div><h4 style="text-align: left;">15 - Missing code documentation</h4><div><br /></div><div>All exported elements should be documented.</div><div><br /></div><div>With structs, vars, functions, the convention is to "add comments, starting with the name of the exported element".</div><div>These comments should focus on what the function or variable does, not how it does it (the latter is irrelevant from the client's perspective - since it is implementation details).</div><div><br /></div><div>Packages are also to be commented - convention is "// package NAME" followed by comments.</div><div>This could appear anywhere in the package, but if you have many files, you could add a "docs.go" file to the package.</div><div><br /></div><h4 style="text-align: left;">16 - Not using linters</h4><div><br /></div><div>Use a linter. </div>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0tag:blogger.com,1999:blog-5724282419015335427.post-3611688456258629482023-05-13T00:57:00.001-07:002023-05-13T00:57:27.832-07:00100 Go Mistakes: 1-9So I'm pretty much looking for a place to write up notes on things I'm reading - which, right now, includes Teiva Harsanyi's "100 Go Mistakes and How to Avoid Them" (does anyone else get confused when writing title-case? Let me look up the <a href="https://en.wikipedia.org/wiki/Title_case">rules quick</a>). <div><br /></div><div> Anyway, I'm at a point where I want to write down some of what I'm learning so I can refer back to it later, so let's go.
</div><div><br /></div><h4 style="text-align: left;">1 - Unintended variable shadowing</h4><div><br /></div><div>Go's short variable declaration operator (:=) can introduce unintended effects if you're making use of it within nested blocks. Here's a <a href="https://play.golang.com/p/sLpBNOpsX28">simple example</a>.</div><div><br /></div><div>The workaround is really to explicitly assign the value to the variable declared in the outer scope, either by using temporary variables when using the declaration operator, or simply assigning directly.</div><div><br /></div><h4 style="text-align: left;">2 - Unnecessary nested code</h4><div>This provides a fairly useful heuristic with regards to code complexity. Essentially, Harsanyi wants us to try, as far as possible, to keep the "happy path left aligned", which, according to Mar Ryer, allows readers to "quickly ... scan down one column to see the expected execution flow".</div><div><br /></div><div>Practially, this means trying to eliminate unnecessary "else"s by rewriting if possible. I imagine this can also be used as a rationale for factoring some code out into subfunctions (although that's potentially contentious).</div><div><br /></div><h4 style="text-align: left;">3 - Misusing init functions</h4><div><br /></div><div>Harsanyi points out the following issues with <a href="https://go.dev/doc/effective_go#init">init functions</a> </div><div><br /></div><div><ul style="text-align: left;"><li>Because they return nothing, the only error handling available to them is to panic</li><li>Because they're always invoked for a package, they can make testing problematic</li><li>They're often associated with global variables</li></ul><div>I've used init functions in the past in the same way Cobra does, to dynamically register functionality provided in the package with some central broker.</div></div><div><br /></div><h4 style="text-align: left;">4 - Overusing getters and setters</h4><div><br /></div><div>This is really a weird one, and perhaps one of the limitations of the "mistakes" format of the book. It's more really a suggestion to keep things simple where possible - getters and setters are not necessarily required in a lot of situations, despite the advantages they present:</div><div><ul style="text-align: left;"><li>getters and setters give you a point to "encapsulate behavior" associated with the events of getting and setting a value.</li><li>hide internal structure, giving "flexibility in what we expose"</li><li>provides a "debugging interception point"</li></ul><div>Some suggestions - getter method should be the field's name (uppercase first letter for exposing), getting should be GetX (where X is the field name).</div></div><div><br /></div><h4 style="text-align: left;">5 - Interface pollution</h4><div><br /></div><div>This is one of the most interesting of the first 9 items - it presents a go centric understanding of interfaces.</div><div><br /></div><div><ul style="text-align: left;"><li>Abstractions should be discovered: We should, most of the time, begin with concrete structures and only abstract when it makes sense.</li><li>Abstractions should be as simple as possible: getting the granularity of the interfaces correct.</li><li>You should be using interfaces for:</li><ul><li>Abstracting out common behavior - if multiple types share common behavior (his example is sorting algorithms) this is a good place to make a minimal interface capturing this behavior.</li><li>Decouping: Liskov Substitition Principle</li><ul><li>Interestingly, Harsanyi goes on to point out that interfaces should actually be defined at the client code side, with us mostly preferring concrete types at the API/Provider side of the equation - something that's common with coders coming from other languages where the idiom is to define an interface and code to it (rather than discovering interfaces, as recommended).</li></ul><li>Restricting behavior: Another interesting use is to define restricted types to prevent misuse of some structure (e.g. taking something that can read/write and defining an interface that only supports the read functionality in order to disable writing - this is really easy to do with golang's interfaces).</li></ul><li>Interface pollution is really just the result of too many interfaces making the flow of the program difficult to follow. Focusing on concretizations generally makes things easier to follow (arguably).</li></ul><h4 style="text-align: left;">6 - Interface on the producer side</h4></div><div>This was mentioned above - avoid having the provider/producer define interfaces and let the consuming code define its own interfaces. The clients can discover their own abstractions, and the producer needn't be prescriptive about how it's used. </div><div>"<i>[This] relates to the concept of the Interface Segregation Principle (the I in Solid), which states that no client should be forced to depend on methods it doesn't use"</i>(26)</div><div><br /></div><h4 style="text-align: left;">7 - Returning interfaces</h4><div>More of the same about interfaces - if we return interfaces, rather than concrete structs, we unnecessarily introduce restrictions on the consumers of our return values. Let them define their own types, let them discover the abtractions that make sense for them.</div><div><br /></div><h4 style="text-align: left;">8 - any says nothing</h4><div><br /></div><div>The empty interface{} - <i>any</i> allows us to open up what we read, write, and pass around, but with the downside that we're losing all the strong typed goodness that comes with golang. It's another of the examples where we should always rather work to the concrete type rather that an abstraction.</div><div><br /></div><h4 style="text-align: left;">9 - Being confused about when to use generics</h4><div>This "mistake" begins with a good overview of how to use generics - the meat really is in the recommended uses of generics</div><div><ul style="text-align: left;"><li>Use for data structures. Obvious.</li><li>Use in functions working with slices, maps, and channels of any type</li><li>Factoring out behaviors instead of types</li></ul><div>We should not use them </div></div><div><ul style="text-align: left;"><li>When calling a method of the type argument (see book for example)</li><li>When it makes our code more complex (repeating the general takeaway from the first 35 pages).</li></ul></div>bomokohttp://www.blogger.com/profile/15957469382017329825noreply@blogger.com0