# Bruce Eckel - Computing Thoughts

Recent content on Computing Thoughts

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Trying Substack as a Simpler Blogging Platform

DevFeed: [Trying Substack as a Simpler Blogging Platform](<https://devfeed.tech/articles/trying-substack-32237.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2023/07/06/trying-substack/>)

Author: Bruce Eckel

Published: 2023-07-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Publishing](<https://devfeed.tech/topics/publishing.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [blogging](<https://devfeed.tech/tags/blogging.md>), [simplicity](<https://devfeed.tech/tags/simplicity.md>), [subscriptions](<https://devfeed.tech/tags/subscriptions.md>)

### AI overview

Bruce Eckel explains why the ceremony of creating blog posts can discourage him from writing and describes trying Substack as a simpler publishing platform. He likes its clean writing workflow, live preview, email delivery, and subscription-based business model, while noting that he is still adjusting to some limitations.

### Source excerpt

TLDR: BruceEckel.substack.com I've noticed that I haven't been writing here that much lately, and I began to suspect it is because of the necessary ceremony of creating a blog post. Which, really, isn't that much but I've started to see that even the smallest amount can be an impediment. When I began trying to paint, I discovered these impediments, and they're different for each person. In my case, the stretched canvas was "too important" and I resisted putting paint on it (both parents grew up in the depression, so I am overly careful about wasting things, which makes experimentation hard).

## Why Are There Functions?

DevFeed: [Why Are There Functions?](<https://devfeed.tech/articles/why-are-there-functions-32236.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2022/09/29/why-are-there-functions/>)

Author: Bruce Eckel

Published: 2022-09-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [function](<https://devfeed.tech/topics/function.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [C](<https://devfeed.tech/topics/c.md>), [reusable code](<https://devfeed.tech/topics/reusable-code.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [programming](<https://devfeed.tech/tags/programming.md>), [reusable-code](<https://devfeed.tech/tags/reusable-code.md>)

### AI overview

The article examines why programmers write functions, drawing on the author's experience with assembly language for embedded systems. It argues that functions reduce repeated code, memory use, duplicate debugging effort, and reliability risks, while enabling reusable code; C automates much of the calling work required in assembly language.

### Source excerpt

Returning from giving my Polymorphism Unbound presentation at StrangeLoop (not yet available on YouTube, but all the examples and presentation slides are on Github), I found myself dissatisfied. Part of this was certainly my failure to cram a 2-hour presentation into 40 minutes (after cutting it down from a day-long, workshop-length size). The bigger issue was my inability to answer the essential question at the end of the presentation: why are we writing polymorphic functions?

## Misunderstanding Python Class Attributes

DevFeed: [Misunderstanding Python Class Attributes](<https://devfeed.tech/articles/misunderstanding-python-class-attributes-32235.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2022/05/11/misunderstanding-python-class-attributes/>)

Author: Bruce Eckel

Published: 2022-05-11T00:00:00Z

Content type: article

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Code](<https://devfeed.tech/topics/code.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This article explains a common misunderstanding about Python class attributes. It shows that assigning to an attribute through an instance creates or updates instance-specific storage, while class attributes provide shared class-level storage and can serve as defaults when accessed through an instance.

### Source excerpt

I was attempting to assist on an open-source project when I was stopped short by this (names have been changed): class DataPoint: measurement1 = None measurement2 = None measurement3 = None DataPoint was later used like this: d = DataPoint() d.measurement1 = 100 d.measurement2 = 200 d.measurement3 = 300 Why give names and initialization values to class attributes, then when you make an object, immediately create and initialize instance variables with the same names as the class attributes?

## Java Object Equivalence

DevFeed: [Java Object Equivalence](<https://devfeed.tech/articles/java-object-equivalence-32234.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2021/02/04/java-object-equivalence/>)

Author: Bruce Eckel

Published: 2021-02-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Java 9](<https://devfeed.tech/topics/java-9.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [java](<https://devfeed.tech/tags/java.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [java-9](<https://devfeed.tech/tags/java-9.md>), [object](<https://devfeed.tech/tags/object.md>), [testing](<https://devfeed.tech/tags/testing.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

An update to the "Testing Object Equivalence" subsection in On Java 8 explains how Java's == and != operators compare object references, why boxed integer comparisons can vary by value range and object creation method, and why equals() should be used for object value comparisons. It also discusses related issues with floating-point comparisons and notes the deprecation of Integer(int) in Java 9 and later.

### Source excerpt

This is an update to the subsection "Testing Object Equivalence" in the "Operators" chapter of On Java 8. This will appear in the book in its next update. The relational operators == and != work with all objects, but their results can be confusing: // operators/Equivalence.java public class Equivalence { static void show(String desc, Integer n1, Integer n2) { System.out.println(desc + ":"); System.out.printf( "%d==%d %b %b%n", n1, n2, n1 == n2, n1.

## The Problem with Gradle

DevFeed: [The Problem with Gradle](<https://devfeed.tech/articles/the-problem-with-gradle-32233.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2021/01/02/the-problem-with-gradle/>)

Author: Bruce Eckel

Published: 2021-01-02T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [make](<https://devfeed.tech/topics/make.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [make](<https://devfeed.tech/tags/make.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author explains why Gradle has been difficult to understand after using simpler, dedicated build tools such as make and Ant. They describe Gradle's configuration and mental-model challenges, including the transition from Groovy to Kotlin, and their reliance on others to manage Gradle build files.

### Source excerpt

Or: How to Remain Sane when Approaching Gradle (with apologies to Hans Dockter). (James Ward and I go into more detail about this article in the Happy Path Programming Podcast). I started using make in the 80's. When I wrote Thinking in C++, I created a tool I called makebuilder which analyzed the examples extracted from the book and generated an appropriate makefile. make is a dedicated tool that only cares about dependencies and actions, so it is reasonably approachable.

## Exploring Rust During a Developer Retreat

DevFeed: [Exploring Rust During a Developer Retreat](<https://devfeed.tech/articles/python-extensions-with-rust-and-go-32232.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2020/11/22/rust-retreat/>)

Author: Bruce Eckel

Published: 2020-11-22T00:00:00Z

Content type: article

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [programming](<https://devfeed.tech/tags/programming.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article describes exploring Rust during a developer retreat. It discusses Rust's ownership model, its lack of a garbage collector, and the language and compiler support intended to help prevent memory mismanagement.

### Source excerpt

The goal of a developer retreat is to stop what you are doing for awhile and explore something new. This usually requires a shift in mindset, and the biggest shift is to suspend the focus around productivity and urgency. It's important to give up the idea that "we must accomplish something in an amount of time." Only with the sigh of relief that comes from liberating yourself from goals is your brain allowed to float to the most interesting places.

## We Haven't Invented Zero Yet

DevFeed: [We Haven't Invented Zero Yet](<https://devfeed.tech/articles/we-haven-t-invented-zero-yet-32231.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2020/07/30/we-havent-invented-zero-yet/>)

Author: Bruce Eckel

Published: 2020-07-30T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Containers](<https://devfeed.tech/topics/containers.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [containers](<https://devfeed.tech/tags/containers.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The article reflects on the conceptual difference between zero and the absence of any value, arguing that computer science lacks a typed equivalent of zero. It discusses how this distinction creates difficulties in C, C++, Kotlin, and generic containers.

### Source excerpt

I am the author, with Svetlana Isakova, of Atomic Kotlin. I suspect most people currently alive were introduced to the concept of zero quite early in their development--early enough that they internalized it as a foundational principle and don't ask questions about it. In addition, many people probably know that zero was invented after the original number systems. The ancient Greeks didn't have a zero, and it puzzled them: "How can nothing be something?

## Value-Based Pricing and TDD

DevFeed: [Value-Based Pricing and TDD](<https://devfeed.tech/articles/value-based-pricing-and-tdd-32239.md>)

Original publisher: [Read original article](<https://bruceeckel.com/blog/2020-02-09-value-based-pricing-and-tdd/>)

Author: Bruce Eckel

Published: 2020-02-09T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [pricing](<https://devfeed.tech/tags/pricing.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [value](<https://devfeed.tech/tags/value.md>)

### AI overview

The article examines value-based pricing and its relationship to Test-Driven Development. It argues that financial incentives can encourage clever thinking, while also emphasizing non-financial motivations such as reducing tedium, improving quality, and quality of life.

### Source excerpt

I first heard about value-based pricing from an accountant who was creating a startup based on the idea. He tells a story about consulting for a family who inherited an estate. Because of the accountant's extensive knowledge, he was able to give advice that saved the family a million or more. However, he only charged for his time, a couple of hours. To save that amount, the story goes, the family would have been happy to pay more, an amount based on the value of the work rather than the time it took.

## Unspoken Assumptions Underlying OO Design Maxims

DevFeed: [Unspoken Assumptions Underlying OO Design Maxims](<https://devfeed.tech/articles/unspoken-assumptions-underlying-oo-design-maxims-32238.md>)

Original publisher: [Read original article](<https://bruceeckel.com/blog/2019-12-24-unspoken-assumptions-underlying-oo-design-maxims/>)

Author: Bruce Eckel

Published: 2019-12-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [approach](<https://devfeed.tech/tags/approach.md>), [change](<https://devfeed.tech/tags/change.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>)

### AI overview

The article argues that many object-oriented design maxims implicitly assume developers can predict how a system will change. It questions whether adding complexity to support uncertain future changes is justified, using the open-closed principle and polymorphism as examples.

### Source excerpt

For Atomic Kotlin, I've been struggling with an "atom" (very small chapter) during the last couple of months. It's on object-oriented design, and it brought up a lot of feelings I've had for quite awhile about some of the various maxims and design guidelines that have appeared in recent decades, since OO became mainstream. I couldn't quite put my finger on what bothered me about these design ideas. Then @codingunicorn did it for me by writing a post called Flexible code considered harmful.

## Podcast on Atomic Kotlin and Teal Organizations

DevFeed: [Podcast on Atomic Kotlin and Teal Organizations](<https://devfeed.tech/articles/podcast-on-atomic-kotlin-and-teal-organizations-32230.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2019/10/14/podcast-interview-ak-teal/>)

Author: Bruce Eckel

Published: 2019-10-14T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [kotlin](<https://devfeed.tech/tags/kotlin.md>), [organizations](<https://devfeed.tech/tags/organizations.md>), [podcast](<https://devfeed.tech/tags/podcast.md>)

### AI overview

The author discusses a Six Figure Developer podcast interview, their appreciation of Kotlin while writing Atomic Kotlin, and an experiment with creating a Teal software consulting firm.

### Source excerpt

A recent interview with The Six Figure Developer podcast. I talk about how much I'm enjoying the design of Kotlin while writing Atomic Kotlin and also my experiment with creating a "Teal" software consulting firm.

## Developer Retreats Keep Getting Better

DevFeed: [Developer Retreats Keep Getting Better](<https://devfeed.tech/articles/developer-retreats-keep-getting-better-32229.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2019/08/30/developer-retreats-keep-getting-better/>)

Author: Bruce Eckel

Published: 2019-08-30T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Slack](<https://devfeed.tech/topics/slack.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [developer](<https://devfeed.tech/tags/developer.md>), [event](<https://devfeed.tech/tags/event.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [python](<https://devfeed.tech/tags/python.md>), [slack](<https://devfeed.tech/tags/slack.md>), [workshop](<https://devfeed.tech/tags/workshop.md>)

### AI overview

The article reflects on a developer retreat organized around Luciano Ramalho's visit and describes how removing productivity pressures created a relaxed setting that still supported learning. It highlights conversations about Python coroutines, Kotlin research, concurrency, and informal communication through Slack.

### Source excerpt

The recent developer retreat took place August 20-26th. We arranged it because my friend Luciano Ramalho (Thoughtworker and author of the best-selling Fluent Python) was doing a multi-stop trip to the US (from his native Brazil) and had a gap in his schedule, so he wanted to come to Crested Butte and have a retreat. This seems to have become a pattern: someone I know would like to come here, and we end up organizing a retreat around their trip.

## JSON Encoding Python Dataclasses

DevFeed: [JSON Encoding Python Dataclasses](<https://devfeed.tech/articles/json-encoding-python-dataclasses-32227.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2018/09/16/json-encoding-python-dataclasses/>)

Author: Bruce Eckel

Published: 2018-09-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [JSON](<https://devfeed.tech/topics/json.md>), [data](<https://devfeed.tech/topics/data.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-static-site-generator](<https://devfeed.tech/tags/hugo-static-site-generator.md>), [json](<https://devfeed.tech/tags/json.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This tutorial demonstrates using Python dataclasses to model data and extend JSON encoding for dataclass instances. It also describes using generated JSON data with Hugo templates for a static-site build.

### Source excerpt

The Hugo static-site generator can work with data files in the form of JSON, yaml or toml. If you place these in the data directory you can access them within Hugo templates (including Hugo shortcodes, which are called directly from a Markdown file) by saying .Site.Data.<filename>, and then use the contents as part of your static-site build. This feature came in handy for the AtomicKotlin.com site, because the ebook deployment service I'm using (Stepik.

## The Evolution of the Developer Retreat

DevFeed: [The Evolution of the Developer Retreat](<https://devfeed.tech/articles/the-evolution-of-the-developer-retreat-32226.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2018/09/06/the-evolution-of-the-developer-retreat/>)

Author: Bruce Eckel

Published: 2018-09-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [developer](<https://devfeed.tech/tags/developer.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [events](<https://devfeed.tech/tags/events.md>), [evolution](<https://devfeed.tech/tags/evolution.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [self-organizing](<https://devfeed.tech/tags/self-organizing.md>)

### AI overview

The author reflects on a developer retreat that used no central theme or fixed structure. Participants worked independently, shared discussions, and explored Kotlin, Elixir, Erlang, and Flutter, among other topics.

### Source excerpt

I've been experimenting with different forms of events for many years now. Mostly this has been in the form of self-organizing conferences, but in recent years I've tried going further, to even less structure. I've held a number of "developer retreats" where we had a theme that everyone focused on, and those have been quite interesting and valuable. To be honest, what I really wanted to try with the developer retreats is zero structure.

## A Possible Solution To The Open Source Funding Problem

DevFeed: [A Possible Solution To The Open Source Funding Problem](<https://devfeed.tech/articles/a-possible-solution-to-the-open-source-funding-problem-32225.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/09/11/a-possible-solution-to-the-open-source-problem/>)

Author: Bruce Eckel

Published: 2017-09-11T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [bounty](<https://devfeed.tech/tags/bounty.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [projects](<https://devfeed.tech/tags/projects.md>), [strategies](<https://devfeed.tech/tags/strategies.md>)

### AI overview

The article discusses the open-source funding problem and considers bounty-based approaches as a possible partial solution. It argues that enabling people to get paid for developing open-source software is important to the future of the field.

### Source excerpt

William Gross has posted Give Away Your Code, But Never Your Time, a potential and/or partial solution to the problem of funding open source projects, which I offered a solution for here. I've since heard from people pointing out projects that have actually used the "bounty" approach - I was unintentionally describing something that already exists. We've been solving all these other problems around open source, but not the essential one: how can people get paid for developing open-source software.

## Gophercon And The Concurrent Python Developer Retreat

DevFeed: [Gophercon And The Concurrent Python Developer Retreat](<https://devfeed.tech/articles/gophercon-and-the-concurrent-python-developer-retreat-32224.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/07/19/gophercon-and-the-concurrent-python-developer-retreat/>)

Author: Bruce Eckel

Published: 2017-07-19T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Python](<https://devfeed.tech/topics/python.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [event](<https://devfeed.tech/tags/event.md>), [go](<https://devfeed.tech/tags/go.md>), [go-language](<https://devfeed.tech/tags/go-language.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

The author reflects on attending Gophercon, finding value in the event while criticizing its commercial structure, limited activity choices, crowded talks, and weak support for attendee interaction. The article contrasts it with PyCon and describes an informal "Pythonistas who love Go" open-space gathering.

### Source excerpt

I found Gophercon to be valuable and it restarted my interest in the Go language. I'm currently working my way through The Go Programming Language Phrasebook and plan to explore ways to call Go from Python (described later in this post). If I hadn't been attending with my friend Luciano Ramalho it would have been a different experience. The conference is clearly commercial and I had a strong sense of having my experience decided for me.

## On Java 8 And The Concurrent Python Developer Retreat

DevFeed: [On Java 8 And The Concurrent Python Developer Retreat](<https://devfeed.tech/articles/on-java-8-and-the-concurrent-python-developer-retreat-32223.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/06/27/on-java-8-and-the-concurrent-python-developer-retreat/>)

Author: Bruce Eckel

Published: 2017-06-27T00:00:00Z

Content type: release

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>)

Tags: [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [java](<https://devfeed.tech/tags/java.md>)

### AI overview

The article announces the official release of an eBook about Java 8, highlighting lambdas and functional programming as major changes. It also discusses the eBook format and its distribution through Google Play Books.

### Source excerpt

For many years I've been getting requests for some kind of sequel to Thinking in Java, 4th Edition. Over two years ago, I finally decided to "pull together something quickly." After all, how much time have I spent writing about the language? I should be getting pretty fast by now. Self-delusion knows no bounds. No matter how many books I write, every one seems to take longer than the previous ones, not shorter.

## Pycon 2017

DevFeed: [Pycon 2017](<https://devfeed.tech/articles/pycon-2017-32222.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/05/30/pycon-2017/>)

Author: Bruce Eckel

Published: 2017-05-30T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [App](<https://devfeed.tech/topics/app.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [beginner](<https://devfeed.tech/tags/beginner.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [developer](<https://devfeed.tech/tags/developer.md>), [education](<https://devfeed.tech/tags/education.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A personal account of PyCon 2017 covering volunteering, conference dinner groups, plans for a dinner-planning app, and the development of a free self-guided programming class for beginners.

### Source excerpt

This year I repeated my strategy of "Don't go to any recorded sessions," and also did more volunteering (one of these was at the green room, and again one of the session chairs failed to show up so you'll see me introducing three of the talks). Dinners In the past I've kind of stumbled into dinner groups, but not always. This time I made more of an effort and was rewarded with dinner friends every night.

## PyCaribbean Keynote On Youtube

DevFeed: [PyCaribbean Keynote On Youtube](<https://devfeed.tech/articles/pycaribbean-keynote-on-youtube-32221.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/04/19/pycaribbean-keynote-on-youtube/>)

Author: Bruce Eckel

Published: 2017-04-19T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [conference](<https://devfeed.tech/tags/conference.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

A reflection on the closing keynote "Science is What Works," delivered at PyCaribbean. The presentation discusses science as the creation and testing of models that fit data, emphasizing doubt, falsifiability, and the possibility that machine-learning algorithms could enable scientific breakthroughs.

### Source excerpt

I gave the closing keynote at PyCaribbean, the Python conference held in Puerto Rico. It's called Science is What Works, and you can see it on YouTube. The slides are available here. I think a closing keynote should provide perspective and look at things from a higher point of view. By then, the audience is full of technical information and, I believe, looking for relief rather than more code. Even though I was a physics major as an undergraduate, I've begun to realize over the last ten years or so that I didn't understand what science was, and that's probably why I was only a mediocre physics student, at best.

## Constructors Are Not Thread-Safe

DevFeed: [Constructors Are Not Thread-Safe](<https://devfeed.tech/articles/constructors-are-not-thread-safe-32220.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/01/13/constructors-are-not-thread-safe/>)

Author: Bruce Eckel

Published: 2017-01-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Java](<https://devfeed.tech/topics/java.md>), [Java Language](<https://devfeed.tech/topics/java-language.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [locking](<https://devfeed.tech/tags/locking.md>), [object](<https://devfeed.tech/tags/object.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

This Java article explains why object construction is not automatically thread-safe. It examines shared mutable state, concurrent object creation, constructor arguments, synchronization, and factory methods as ways to avoid collisions and ensure safe construction.

### Source excerpt

When you imagine the construction process, it can be easy to think that it's thread-safe. After all, no one can even see the new object before it finishes initialization, so how could there be contention over that object? Indeed, the Java Language Specification (JLS) confidently states: "There is no practical need for a constructor to be synchronized, because it would lock the object under construction, which is normally not made available to other threads until all constructors for the object have completed their work.

## A Canonical equals() For Java

DevFeed: [A Canonical equals() For Java](<https://devfeed.tech/articles/a-canonical-equals-for-java-32219.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/01/07/a-canonical-equals-for-java/>)

Author: Bruce Eckel

Published: 2017-01-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [equals](<https://devfeed.tech/tags/equals.md>), [fields](<https://devfeed.tech/tags/fields.md>), [interface](<https://devfeed.tech/tags/interface.md>), [java](<https://devfeed.tech/tags/java.md>), [object](<https://devfeed.tech/tags/object.md>), [override](<https://devfeed.tech/tags/override.md>), [subclass](<https://devfeed.tech/tags/subclass.md>), [subtype](<https://devfeed.tech/tags/subtype.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This Java tutorial explains how to implement a concise equals() method using Java 7's Objects.equals(). It covers the equals contract, identity and type checks, selected-field comparisons, and tests using example classes and a factory method.

### Source excerpt

Even with the help of Java 7's Objects.equals(), the equals() method is often written in a verbose and messy fashion. This article shows how you can write a succinct equals() in a format that allows easy checking with visual inspection. When you create a new class, it automatically inherits class Object. If you don't override equals(), you'll get Objects equals() method. By default this compares addresses, so only if you are comparing the exact same objects will you get true.

## Dining Philosophers in Java 8

DevFeed: [Dining Philosophers in Java 8](<https://devfeed.tech/articles/dining-philosophers-in-java-8-32218.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/12/29/dining-philosophers-in-java-8/>)

Author: Bruce Eckel

Published: 2016-12-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Java](<https://devfeed.tech/topics/java.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [java](<https://devfeed.tech/tags/java.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [thread](<https://devfeed.tech/tags/thread.md>)

### AI overview

This tutorial explains deadlock in concurrent programs through the Dining Philosophers problem and presents a Java 8 example using shared chopsticks and blocking queues.

### Source excerpt

Because tasks can become blocked, it's possible for one task to get stuck waiting for another task, which in turn waits for another task, and so on, until the chain leads back to a task waiting on the first one. You get a continuous loop of tasks waiting on each other, and no one can move. This is called deadlock.1 If you try running a program and it deadlocks right away, you can immediately track down the bug.

## Notes from The Elm Developer Retreat

DevFeed: [Notes from The Elm Developer Retreat](<https://devfeed.tech/articles/notes-from-the-elm-developer-retreat-32217.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/10/09/the-elm-developer-retreat/>)

Author: Bruce Eckel

Published: 2016-10-09T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [Google](<https://devfeed.tech/topics/google.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [developer](<https://devfeed.tech/tags/developer.md>), [elm](<https://devfeed.tech/tags/elm.md>), [google](<https://devfeed.tech/tags/google.md>), [learning](<https://devfeed.tech/tags/learning.md>), [notes](<https://devfeed.tech/tags/notes.md>), [repository](<https://devfeed.tech/tags/repository.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

Notes from a 2016 Elm developer retreat covering the event format, collaborative learning, updating example code for Elm 0.17, support through Elm Slack, learning resources, and tools for group work.

### Source excerpt

This Developer Retreat was held Oct 6-9, 2016. So far the consensus seems to be that Thursday-Sunday is best, because Monday is often a big meeting day at companies (and taking two days at the end of the week is within tolerability). At peak, we had six attendees including myself; on the weekend we had two students from Colorado Mesa University in Grand Junction. There will be another retreat directly following the Winter Tech Forum.

## The Elm Developer Retreat

DevFeed: [The Elm Developer Retreat](<https://devfeed.tech/articles/the-elm-developer-retreat-32216.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/09/12/the-elm-developer-retreat/>)

Author: Bruce Eckel

Published: 2016-09-12T00:00:00Z

Content type: article

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [developer](<https://devfeed.tech/tags/developer.md>), [elm](<https://devfeed.tech/tags/elm.md>), [events](<https://devfeed.tech/tags/events.md>), [exploration](<https://devfeed.tech/tags/exploration.md>), [language](<https://devfeed.tech/tags/language.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This announcement describes a developer retreat scheduled for October 6-9 in Crested Butte, Colorado. Participants will study the Elm programming language and begin building the Open-Spaces Board UI. The event has no fee yet, but attendees must arrange travel and lodging and pay for meals.

### Source excerpt

Developer Retreats are the most relaxed and low-ceremony events you can imagine, and I've been very satisfied with the first two. October 6-9 in Crested Butte CO, we are going to tackle the Elm programming language and make a start on building the Open-Spaces Board UI. You can find full details here. Some of us have been studying Elm a bit already but this will be a group exploration so if you haven't had any experience with the language yet you're in good company (although any pre-retreat studying you do will help).

## A Model To Fund Open-Source Projects

DevFeed: [A Model To Fund Open-Source Projects](<https://devfeed.tech/articles/a-model-to-fund-open-source-projects-32215.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/06/20/a-model-to-fund-open-source-projects/>)

Author: Bruce Eckel

Published: 2016-06-20T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [bounty](<https://devfeed.tech/tags/bounty.md>), [business](<https://devfeed.tech/tags/business.md>), [funding](<https://devfeed.tech/tags/funding.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

The article proposes funding open-source projects through release bounties: users who need the newest release pay toward a set bounty, while previous releases remain free. Once the bounty is met, the new release becomes free.

### Source excerpt

Synopsis Place a bounty on the next release of an open-source project. Until the bounty is met, those who need/want the newest release must pay an amount in order to get it. Previous releases remain free. Once the bounty is met, the new release becomes free. The Problem of Funding I think open-source is one of the most important cultural and business innovations produced (so far) by the computing and network revolution.

[Next page](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md?cursor=WyIyMDE2LTA2LTIwVDAwOjAwOjAwKzAwOjAwIiwgIjVlNGZhMzU1LWNiNzMtNDcwMS1hNzUwLTE4YWZkYjU0MDc5MSJd>)