<story><title>Golang: channels are not enough</title><url>https://gist.github.com/kachayev/21e7fe149bc5ae0bd878</url></story><parent_chain></parent_chain><comment><author>tshadwell</author><text>&amp;gt; How to make it reusable? `&amp;lt;-chan interface{}`? Welcome to the land of types casting and runtime panics. If you want to implement high level fan-in (merge) you’re losing type safety. The same (unfortunately) goes for all other patterns.&lt;p&gt;I can understand arguments for generics, but they&amp;#x27;re complaining about trying to warm a whole pizza with a toaster. You need to put individual slices in, it doesn&amp;#x27;t work like an oven. Cook it with an oven if you want, but don&amp;#x27;t try to make it out like the toaster is offensive and useless.&lt;p&gt;Yes, you might need to re-implement these patterns each time with separate types (slice up the pizza), but it&amp;#x27;s not really a lot of work for the extra speed and crunchy pizza it gives you.&lt;p&gt;I&amp;#x27;m pretty tired of the frequency of these articles where someone takes a concept from a language, tries to force it into a different language with little care for its idioms and then complains that it doesn&amp;#x27;t work.&lt;p&gt;Maybe I like digging holes with a trowel, maybe I like the precision it gives me, maybe I&amp;#x27;ve worked out a way to with a little extra effort accomplish the same work. If you work with a spade and a bucket all the time don&amp;#x27;t complain that you can&amp;#x27;t throw a trowel around like a spade.</text></comment>
<story><title>Golang: channels are not enough</title><url>https://gist.github.com/kachayev/21e7fe149bc5ae0bd878</url></story><parent_chain></parent_chain><comment><author>avitzurel</author><text>Beyond Go and channels, this article&amp;#x2F;post touches on a subject that is personally a real pain to me.&lt;p&gt;&amp;gt; It’s so cool to find yourself writing tutorial for beginners! And it&amp;#x27;s a bit painful when you are trying to implement big and sophisticated system(s). Channels are primitives. They are low-level building blocks and I highly doubt you want to work with them on daily basis.&lt;p&gt;Posts&amp;#x2F;talks that relate to beginners.&lt;p&gt;You know the drill, you only have a limited time to talk about something in a conference and you only have limited time to write a blog post. It&amp;#x27;s easy and tempting to cover the basics without diving in too much into the details.&lt;p&gt;What you are left with as a professional is very thin data on how to accomplish complex stuff.&lt;p&gt;If you look at Docker and all the talks&amp;#x2F;posts around docker, they cover the absolute basic. Where&amp;#x27;s deployment to production? where&amp;#x27;s alerting&amp;#x2F;monitoring?&lt;p&gt;One of the few people I see solve this problem is: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;patshaughnessy.net&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;patshaughnessy.net&amp;#x2F;&lt;/a&gt;.&lt;p&gt;I&amp;#x27;ve been trying myself to do more in depth posts that cover more than just the basics, it&amp;#x27;s really hard work.</text></comment>