# class

In object-oriented programming, a class is a blueprint or template that defines an object's properties and methods and from which instances are created.

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

## Item 29: Minimize elements' visibility

DevFeed: [Item 29: Minimize elements' visibility](<https://devfeed.tech/articles/item-29-minimize-elements-visibility-39277.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-element-visibility>)

Published: 2024-05-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [interface](<https://devfeed.tech/topics/interface.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [class](<https://devfeed.tech/topics/class.md>), [properties](<https://devfeed.tech/topics/properties.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [properties](<https://devfeed.tech/tags/properties.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The article explains why APIs should minimize visible elements: smaller interfaces are easier to learn, maintain, test, and change. It also shows how restricting visibility in Kotlin helps protect class invariants by encapsulating internal state, including making property setters private.

### Source excerpt

Why we should minimize elements' visibility and how to do it.

## Kotlin Reflection: Type references

DevFeed: [Kotlin Reflection: Type references](<https://devfeed.tech/articles/kotlin-reflection-type-references-39216.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-reflection-type>)

Published: 2023-10-30T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [class](<https://devfeed.tech/topics/class.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [example](<https://devfeed.tech/tags/example.md>), [generator](<https://devfeed.tech/tags/generator.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [practical](<https://devfeed.tech/tags/practical.md>), [type-argument](<https://devfeed.tech/tags/type-argument.md>), [type-parameter](<https://devfeed.tech/tags/type-parameter.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Kotlin reflection type references. It explains how types differ from classes, how type references expose nullability, type arguments, and classifiers, and how to use them in a random-value generator.

### Source excerpt

Using type references, with practical example of random value generator.

## Kotlin Reflection: Class references

DevFeed: [Kotlin Reflection: Class references](<https://devfeed.tech/articles/kotlin-reflection-class-references-39215.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-reflection-class>)

Published: 2023-10-23T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

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

Tags: [class](<https://devfeed.tech/tags/class.md>), [example](<https://devfeed.tech/tags/example.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [object](<https://devfeed.tech/tags/object.md>), [practical](<https://devfeed.tech/tags/practical.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Kotlin class references, covering class names, type characteristics, visibility, members, and declared members, with a practical object serialization example.

### Source excerpt

All the essential aspects of class references, and a practical object serialization example.

## Extensions in Kotlin

DevFeed: [Extensions in Kotlin](<https://devfeed.tech/articles/extensions-in-kotlin-39331.md>)

Original publisher: [Read original article](<https://kt.academy/article/kfde-extensions>)

Published: 2023-10-09T00:01:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Extension](<https://devfeed.tech/topics/extension.md>), [class](<https://devfeed.tech/topics/class.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [bytecode](<https://devfeed.tech/tags/bytecode.md>), [extension](<https://devfeed.tech/tags/extension.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [static](<https://devfeed.tech/tags/static.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin extension functions and properties, including how they are defined, called on receiver instances, and used with types from external APIs. It also examines their JVM implementation, where an extension receiver becomes a regular parameter in a static function.

### Source excerpt

What are extensions in Kotlin and how do we use them.

## Objects in Kotlin

DevFeed: [Objects in Kotlin](<https://devfeed.tech/articles/objects-in-kotlin-39337.md>)

Original publisher: [Read original article](<https://kt.academy/article/kfde-objects>)

Published: 2023-07-17T00:01:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [object](<https://devfeed.tech/topics/object.md>), [class](<https://devfeed.tech/topics/class.md>), [constructor](<https://devfeed.tech/topics/constructor.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [object](<https://devfeed.tech/tags/object.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This Kotlin tutorial explains how to create objects with object expressions and object declarations. It covers anonymous objects, inheritance and interface implementation, object scope, singleton behavior, and practical uses such as listeners and synchronization locks.

### Source excerpt

What is object expression, object declaration and companion objects, and how we use them.

## Bean Machine Retrospective, part 9

DevFeed: [Bean Machine Retrospective, part 9](<https://devfeed.tech/articles/bean-machine-retrospective-part-9-38667.md>)

Original publisher: [Read original article](<https://ericlippert.com/2023/03/21/bean-machine-retrospective-part-9/>)

Author: ericlippert

Published: 2023-03-21T18:34:38Z

Content type: opinion

Language: en

Sources: [Eric Lippert](<https://devfeed.tech/sources/eric-lippert.md>)

Topics: [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>), [Python](<https://devfeed.tech/topics/python.md>), [function](<https://devfeed.tech/topics/function.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [class](<https://devfeed.tech/topics/class.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [F#](<https://devfeed.tech/topics/fsharp.md>), [Scala](<https://devfeed.tech/topics/scala.md>)

Tags: [debugging](<https://devfeed.tech/tags/debugging.md>), [function](<https://devfeed.tech/tags/function.md>), [object](<https://devfeed.tech/tags/object.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [python](<https://devfeed.tech/tags/python.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This retrospective describes implementing concise pattern matching in Python, where patterns are represented as predicates and can return structured failure information for debugging. It also develops a type discipline and combinators for matching values, types, lists, and object attributes.

### Source excerpt

I wanted to implement concise "pattern matching" in Python, a language which unlike C#, F#, Scala, and so on, does not have any pattern matching built in. Logically a pattern is just a predicate: a function which takes a value ... Continue reading ->

## Operator overloading in Kotlin

DevFeed: [Operator overloading in Kotlin](<https://devfeed.tech/articles/operator-overloading-in-kotlin-39338.md>)

Original publisher: [Read original article](<https://kt.academy/article/kfde-operators>)

Published: 2023-01-23T00:01:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [class](<https://devfeed.tech/topics/class.md>), [function](<https://devfeed.tech/topics/function.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [arithmetic](<https://devfeed.tech/tags/arithmetic.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [complex-numbers](<https://devfeed.tech/tags/complex-numbers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [function](<https://devfeed.tech/tags/function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [number](<https://devfeed.tech/tags/number.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [operations](<https://devfeed.tech/tags/operations.md>), [operator-overloading](<https://devfeed.tech/tags/operator-overloading.md>), [physics](<https://devfeed.tech/tags/physics.md>), [type](<https://devfeed.tech/tags/type.md>), [types](<https://devfeed.tech/tags/types.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A tutorial on Kotlin operator overloading. It explains Kotlin's predefined operators, how operator methods are declared for custom classes, and how arithmetic and range operators are handled, using complex numbers as an example.

### Source excerpt

How are operators defined for types in Kotlin, and how can we define our own operators.

## Type modelling in Kotlin

DevFeed: [Type modelling in Kotlin](<https://devfeed.tech/articles/type-modelling-in-kotlin-39389.md>)

Original publisher: [Read original article](<https://kt.academy/article/type-modelling-kotlin>)

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

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Software](<https://devfeed.tech/topics/software.md>), [Code](<https://devfeed.tech/topics/code.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [exception](<https://devfeed.tech/tags/exception.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [software](<https://devfeed.tech/tags/software.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This Kotlin tutorial explains how modelling domain concepts with types, including value classes and explicit unit types, can make APIs clearer and prevent incompatible units from compiling together. It also discusses Kotlin's unchecked exceptions and introduces a type-based approach to error handling.

### Source excerpt

Type safety is undervalued in most software projects and causes enormous financial losses throughout the world. Changing a few bad habits can lead to more reliable software.

## Effective Kotlin Item 52: Consider using inline value classes

DevFeed: [Effective Kotlin Item 52: Consider using inline value classes](<https://devfeed.tech/articles/effective-kotlin-item-52-consider-using-inline-value-classes-39295.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-value-classes>)

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

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

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

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [using](<https://devfeed.tech/tags/using.md>), [value](<https://devfeed.tech/tags/value.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin inline value classes, including how they can wrap a single value with little or no performance overhead. It covers using them to represent units of measure, prevent value misuse through types, and optimize memory usage.

### Source excerpt

What value classes are, how to use and inline them.

## Applied Threat Modeling at BlackHat 2021

DevFeed: [Applied Threat Modeling at BlackHat 2021](<https://devfeed.tech/articles/applied-threat-modeling-at-blackhat-2021-36673.md>)

Original publisher: [Read original article](<https://shostack.org/blog/applied-tm-at-blackhat21/>)

Author: Adam

Published: 2021-06-28T00:00:00Z

Content type: article

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [blackhat](<https://devfeed.tech/tags/blackhat.md>), [exercise](<https://devfeed.tech/tags/exercise.md>), [interactive](<https://devfeed.tech/tags/interactive.md>), [skills](<https://devfeed.tech/tags/skills.md>), [students](<https://devfeed.tech/tags/students.md>), [teaching](<https://devfeed.tech/tags/teaching.md>)

### AI overview

An announcement for a hands-on Applied Threat Modeling class at Black Hat USA 2021. The class will teach threat modeling through interactive exercises covering four core questions and an end-to-end exercise.

### Source excerpt

At Blackhat USA, I'll be teaching Applied Threat Modeling.

## RPC 漫谈：序列化问题

DevFeed: [RPC 漫谈：序列化问题](<https://devfeed.tech/articles/rpc-40977.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/deep-into-rpc-serialization/>)

Author: Joway

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

Content type: tutorial

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Code](<https://devfeed.tech/topics/code.md>), [interface](<https://devfeed.tech/topics/interface.md>), [class](<https://devfeed.tech/topics/class.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [client](<https://devfeed.tech/tags/client.md>), [code](<https://devfeed.tech/tags/code.md>), [interface](<https://devfeed.tech/tags/interface.md>), [java](<https://devfeed.tech/tags/java.md>), [protobuf](<https://devfeed.tech/tags/protobuf.md>), [remote-procedure-calls](<https://devfeed.tech/tags/remote-procedure-calls.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [service-mesh](<https://devfeed.tech/tags/service-mesh.md>), [tech](<https://devfeed.tech/tags/tech.md>)

### AI overview

This article explains RPC serialization and deserialization, including IDL definitions, generated Stub code, reflection, and encoding techniques such as Varint and ZigZag. It discusses trade-offs between generated code size, convenience, performance, and network payload size.

### Source excerpt

何为序列 对于计算机而言，一切数据皆为二进制序列。但编程人员为了以人类可读可控的形式处理这些二进制数据，于是发明了数据类型和结构的概念，数据类型用以标注一段二进制数据的解析方式，数据结构用以标注多段(连续/不连续)二进制数据的组织方式。 例如以下程序结构体：

## Compiler-generated classes, methods and fields in Java

DevFeed: [Compiler-generated classes, methods and fields in Java](<https://devfeed.tech/articles/compiler-generated-classes-methods-and-fields-in-java-38632.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_03_19_compiler_generated_classes_methods_and_fields_in_java/>)

Published: 2020-03-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

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

Tags: [bytecode](<https://devfeed.tech/tags/bytecode.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [fields](<https://devfeed.tech/tags/fields.md>), [java](<https://devfeed.tech/tags/java.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

This tutorial explains how the Java compiler generates classes, methods, and fields that do not appear in source code. It covers synthetic members, bridge and access flags, nested classes, generated bytecode, and inspection with javap.

### Source excerpt

Source Introduction When we write program in Java we create some classes, methods, fields and put all of this into our source code -- .java files. After these files are compiled with javac (Java Compiler) into .class files we got a bunch of Java bytecode. It turns out that not only we create classes, methods and fields in our source code, but also compiler by itself can create them when needed. In this article we'll try to get into the compiler-generated topic, will find out what are synthetic and bridge, access flags, learn some new things from official documentation and maybe more. Let's dive in.

## Decoding Handler and Looper in Android

DevFeed: [Decoding Handler and Looper in Android](<https://devfeed.tech/articles/decoding-handler-and-looper-in-android-38621.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2019_12_24_decoding_handler_and_looper_in_android/>)

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

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [class](<https://devfeed.tech/topics/class.md>), [callback](<https://devfeed.tech/topics/callback.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [android](<https://devfeed.tech/tags/android.md>), [callback](<https://devfeed.tech/tags/callback.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [interface](<https://devfeed.tech/tags/interface.md>), [object](<https://devfeed.tech/tags/object.md>), [parcelable](<https://devfeed.tech/tags/parcelable.md>), [payload](<https://devfeed.tech/tags/payload.md>), [thread](<https://devfeed.tech/tags/thread.md>)

### AI overview

This tutorial explains Android's Handler and Looper, describing Looper as an event-loop abstraction that drains a MessageQueue and Handler as an abstraction for posting, removing, and handling queued events. It also covers their relationships and the structure of Message objects.

### Source excerpt

Introduction Handler and Looper are one of the main low-level Android OS things, which almost nobody uses directly (at least nowadays). But they are at the core, so many other high-level solutions are based on them. Therefore one should know what Handler and Looper are, what and how they are doing. In this article we'll try to understand Handler and Looper in Android. What, how and why we might need them. We'll start from some basic knowledge on classes and what they are doing, continue with relations between them. Then we'll look at each class separately trying to dive deep into details. And will finish with some canonical examples on where they can be used.

## Kotlin-android-synthetics performance analysis (with ButterKnife)

DevFeed: [Kotlin-android-synthetics performance analysis (with ButterKnife)](<https://devfeed.tech/articles/kotlin-android-synthetics-performance-analysis-with-butterknife-38609.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2019_02_18_kotlin_android_synthetics_performance_analysis_with_butterknife/>)

Published: 2019-02-18T00:00:00Z

Content type: article

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Android](<https://devfeed.tech/topics/android.md>), [R8](<https://devfeed.tech/topics/r8.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [proguard](<https://devfeed.tech/tags/proguard.md>), [r8](<https://devfeed.tech/tags/r8.md>)

### AI overview

An analysis of Kotlin Android synthetics examines generated Java and bytecode, comparing the approach with vanilla findViewById and ButterKnife. It discusses generated cache code, lateinit null checks, HashMap boxing overhead, and how ProGuard or R8 can remove or optimize unused code in release builds.

### Source excerpt

Introduction After comment that synthetic is no longer recommended practice and some arguments I decided to go deeper into issue with performance of kotlin-android-synthetics by analyzing generated Java and byte code and comparing to other approaches (such as vanilla-*findViewById *and ButterKnife). Vanilla-findViewById This is sample Activity we'll work with throughout the article. Approach with *findViewById *will be our baseline. Sample consists of: *Activity *class One *TextView *property inside *Activity *with *lateinit *modifier

## Zero-Knowledge: Definitions and Theory

DevFeed: [Zero-Knowledge: Definitions and Theory](<https://devfeed.tech/articles/zero-knowledge-definitions-and-theory-40403.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2016/09/19/zero-knowledge-definitions-and-theory/>)

Published: 2016-09-19T09:00:00Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Zero-knowledge proof](<https://devfeed.tech/topics/zkp.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [graph-isomorphism](<https://devfeed.tech/tags/graph-isomorphism.md>), [np](<https://devfeed.tech/tags/np.md>), [permutation](<https://devfeed.tech/tags/permutation.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [theory](<https://devfeed.tech/tags/theory.md>), [zero-knowledge](<https://devfeed.tech/tags/zero-knowledge.md>)

### AI overview

This article explains definitions and theory behind zero-knowledge proofs. It contrasts graph isomorphism and 3-coloring protocols, focusing on their interaction between prover and verifier, cryptographic assumptions, transcript distributions, and simulation.

### Source excerpt

The next Monday, when the fathers were all back at work, we kids were playing in a field. One kid says to me, "See that bird? What kind of bird is that?" I said, "I haven't the slightest idea what kind of a bird it is." He says, "It's a brown-throated thrush. Your father doesn't teach you anything!" But it was the opposite. He had already taught me: "See that bird?

## Things that make me dislike Java

DevFeed: [Things that make me dislike Java](<https://devfeed.tech/articles/things-that-make-me-dislike-java-37860.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/things-that-make-me-dislike-java/>)

Author: Carlos Alexandro Becker

Published: 2012-12-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [class](<https://devfeed.tech/topics/class.md>), [generics](<https://devfeed.tech/topics/generics.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>)

Tags: [generics](<https://devfeed.tech/tags/generics.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [java](<https://devfeed.tech/tags/java.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>)

### AI overview

An opinion piece discussing aspects of Java that the author dislikes, especially its object-oriented model, primitive types, wrapper classes, generics, autoboxing, and null behavior. The author also acknowledges Java's community, specifications, and libraries.

### Source excerpt

So, I just compiled a little list of things that, I believe, make me dislike Java everyday a little more.

## The UML Class Diagram

DevFeed: [The UML Class Diagram](<https://devfeed.tech/articles/the-uml-class-diagram-40756.md>)

Original publisher: [Read original article](<https://radek.io/posts/uml-class-diagram/>)

Published: 2011-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [class](<https://devfeed.tech/topics/class.md>), [classes](<https://devfeed.tech/topics/classes.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [aggregation](<https://devfeed.tech/tags/aggregation.md>), [cheat-sheet](<https://devfeed.tech/tags/cheat-sheet.md>), [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [relationships](<https://devfeed.tech/tags/relationships.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This article explains UML class diagrams, including how to represent classes, methods, attributes, inheritance, interfaces, associations, aggregation, and composition. It also describes the distinctions among these relationships and their graphical notation.

### Source excerpt

One of the most useful UML diagrams explained.

## Single Responsibility Principle

DevFeed: [Single Responsibility Principle](<https://devfeed.tech/articles/single-responsibility-principle-40739.md>)

Original publisher: [Read original article](<https://radek.io/posts/single-responsibility-principle/>)

Published: 2011-08-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [object](<https://devfeed.tech/topics/object.md>), [class](<https://devfeed.tech/topics/class.md>), [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [design](<https://devfeed.tech/tags/design.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [solid](<https://devfeed.tech/tags/solid.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

The article explains the Single Responsibility Principle (SRP), a SOLID guideline for object-oriented design. It defines a responsibility as a reason for a class to change and uses a MySQL connection and query-handling example to show why separate responsibilities should be split.

### Source excerpt

SOLID Object-Oriented Design

## Design Patterns: Abstract Factory

DevFeed: [Design Patterns: Abstract Factory](<https://devfeed.tech/articles/design-patterns-abstract-factory-40670.md>)

Original publisher: [Read original article](<https://radek.io/posts/design-patterns-abstract-factory/>)

Published: 2011-07-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [abstract class](<https://devfeed.tech/topics/abstract-class.md>), [Software](<https://devfeed.tech/topics/software.md>), [class](<https://devfeed.tech/topics/class.md>), [classes](<https://devfeed.tech/topics/classes.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Qt](<https://devfeed.tech/topics/qt.md>), [GTK](<https://devfeed.tech/topics/gtk.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [abstract-class](<https://devfeed.tech/tags/abstract-class.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [design](<https://devfeed.tech/tags/design.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [example](<https://devfeed.tech/tags/example.md>), [gnome](<https://devfeed.tech/tags/gnome.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interface-design](<https://devfeed.tech/tags/interface-design.md>), [kde](<https://devfeed.tech/tags/kde.md>), [linux](<https://devfeed.tech/tags/linux.md>), [object](<https://devfeed.tech/tags/object.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [platform](<https://devfeed.tech/tags/platform.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-components](<https://devfeed.tech/tags/ui-components.md>), [user-interface](<https://devfeed.tech/tags/user-interface.md>)

### AI overview

This tutorial explains the Abstract Factory design pattern, which encapsulates the creation of related families of objects without specifying their concrete classes. It uses a cross-platform user-interface example in which separate factories create components for KDE/Qt and GNOME/Gtk environments.

### Source excerpt

Software design patterns by example

## Private, protected and public in Python

DevFeed: [Private, protected and public in Python](<https://devfeed.tech/articles/private-protected-and-public-in-python-40732.md>)

Original publisher: [Read original article](<https://radek.io/posts/private-protected-and-public-in-python/>)

Published: 2011-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [class](<https://devfeed.tech/topics/class.md>), [subclass](<https://devfeed.tech/topics/subclass.md>), [object](<https://devfeed.tech/topics/object.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [object](<https://devfeed.tech/tags/object.md>), [programming](<https://devfeed.tech/tags/programming.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [python](<https://devfeed.tech/tags/python.md>), [subclass](<https://devfeed.tech/tags/subclass.md>)

### AI overview

This tutorial explains how Python handles public, protected, and private members through defaults, naming conventions, and name mangling rather than strict access modifiers. It also discusses how these conventions apply to subclasses and code reviews.

### Source excerpt

How does encapsulation (not) work in Python.

## Design Patterns: Singleton

DevFeed: [Design Patterns: Singleton](<https://devfeed.tech/articles/design-patterns-singleton-40676.md>)

Original publisher: [Read original article](<https://radek.io/posts/design-patterns-singleton/>)

Published: 2011-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Python](<https://devfeed.tech/topics/python.md>), [Software](<https://devfeed.tech/topics/software.md>), [class](<https://devfeed.tech/topics/class.md>), [constructor](<https://devfeed.tech/topics/constructor.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [design](<https://devfeed.tech/tags/design.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This tutorial explains the Singleton design pattern, which provides one globally accessible instance of a class. It outlines the required static storage, access method, and constructor restrictions, then discusses implementations in C++ and Python.

### Source excerpt

Software design patterns by example

## Static variables and methods in Python

DevFeed: [Static variables and methods in Python](<https://devfeed.tech/articles/static-variables-and-methods-in-python-40743.md>)

Original publisher: [Read original article](<https://radek.io/posts/static-variables-and-methods-in-python/>)

Published: 2011-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [class](<https://devfeed.tech/topics/class.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [python](<https://devfeed.tech/tags/python.md>), [static](<https://devfeed.tech/tags/static.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

A tutorial explaining how Python class variables, static methods, and class methods work. It compares the @staticmethod and @classmethod decorators, including their access to class variables and behavior with inheritance.

### Source excerpt

Bringing a bit of C++ into Python.

## Satirical announcement about modifying access modifiers in open-source Java projects

DevFeed: [Satirical announcement about modifying access modifiers in open-source Java projects](<https://devfeed.tech/articles/wikileaks-to-leak-5000-open-source-java-projects-with-all-that-private-final-bullshit-removed-38773.md>)

Original publisher: [Read original article](<https://steve-yegge.blogspot.com/2010/07/wikileaks-to-leak-5000-open-source-java.html>)

Author: Steve Yegge (noreply@blogger.com)

Published: 2010-07-28T20:40:00Z

Content type: opinion

Language: en

Sources: [Steve Yegge](<https://devfeed.tech/sources/steve-yegge.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Code](<https://devfeed.tech/topics/code.md>), [Java Language](<https://devfeed.tech/topics/java-language.md>), [class](<https://devfeed.tech/topics/class.md>), [constructor](<https://devfeed.tech/topics/constructor.md>), [deprecated](<https://devfeed.tech/topics/deprecated.md>), [Perl](<https://devfeed.tech/topics/perl.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [java](<https://devfeed.tech/tags/java.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [perl](<https://devfeed.tech/tags/perl.md>), [projects](<https://devfeed.tech/tags/projects.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

This satirical article describes a purported Wikileaks announcement to re-release open-source Java projects after changing access modifiers, removing most final and deprecated declarations, adding public constructors, and exposing fields.

### Source excerpt

EYJAFJÖLL, ICELAND -- Java programmers around the globe are in a panic today over a Wikileaks press release issued at 8:15am GMT. Wikileaks announced that they will re-release the source code for thousands of Open Source Java projects, making all access modifiers 'public' and all classes and members non-'final'. Agile Java Developer Johnnie Garza of Irvine, CA condemns the move. "They have no right to do this. Open Source does not mean the source is somehow 'open'. That's my code, not theirs. If I make something private, it means that no matter how desperately you need to call it, I should be able to prevent you from doing so, even long after I've gone to the grave." According to the Wikileaks press release, millions of Java source files have been run through a Perl script that removes all 'final' keywords except those required for hacking around the 15-year-old Java language's "fucking embarrassing lack of closures." Moreover, the Perl script gives every Java class at least one public constructor, and turns all fields without getters/setters into public fields. "The script yanks out all that @deprecated shit, too," claims the controversial announcement. Longtime Java programmer Ronnie Lloyd of Austin, TX is offended by the thought of people instantiating his private classes. "It's just common sense," said Lloyd, who is 37. "If I buy you a house and put the title in your name, but I mark some of the doors 'Employees Only', then you're not allowed to open those doors, even though it's your house. Because it's really my house, even though I gave it to you to live in." Pacing and frowning thoughtfully, Lloyd continued: "Even if I go away forever and you live there for 20 years and you know exactly what's behind the doors -- heck, even if it's a matter of life and death -- plain old common sense still dictates that you're never, ever allowed to open them for any reason." "It's for your own protection," Lloyd added. Wesley Doyle, a Java web developer in Toronto, Canada is m

## The Universal Design Pattern

DevFeed: [The Universal Design Pattern](<https://devfeed.tech/articles/the-universal-design-pattern-38765.md>)

Original publisher: [Read original article](<https://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html>)

Author: Steve Yegge (noreply@blogger.com)

Published: 2008-10-20T10:06:00Z

Content type: article

Language: en

Sources: [Steve Yegge](<https://devfeed.tech/sources/steve-yegge.md>)

Topics: [properties](<https://devfeed.tech/topics/properties.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [class](<https://devfeed.tech/topics/class.md>), [object](<https://devfeed.tech/topics/object.md>), [XML](<https://devfeed.tech/topics/xml.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [properties](<https://devfeed.tech/tags/properties.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [technical](<https://devfeed.tech/tags/technical.md>), [technical-article](<https://devfeed.tech/tags/technical-article.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This technical article presents the Properties Pattern, also known in its fullest form as the Prototype Pattern. It explains the pattern as a flexible approach to modeling problems across programming languages and as a general-purpose persistence strategy, while comparing it with class-based object-oriented, relational, and XML modeling.

### Source excerpt

This idea that there is generality in the specific is of far-reaching importance. -- Douglas Hofstadter, Gödel, Escher, Bach Note: Today's entry is a technical article: it isn't funny. At least not intentionally. Update, Oct 20th 2008: I've added an Updates section, where I'll try to track significant responses, at least for a week or so. There are three entries so far. Contents Introduction Three Great Schools of Software Modeling Class Modeling Relational Modeling XML Modeling Other schools Finding the sweet spot Property Modeling Brains and Thoughts Who uses the Properties Pattern? Eclipse JavaScript Pushing it even further The pattern takes shape... Wyvern Lisp XML revisited Bigtable Properties Pattern high-level overview Representations Keys Quoting Missing keys Data structures Inheritance The deletion problem Read/write asymmetry Read-only plists Performance Interning strings Perfect hashing Copy-on-read caching Refactoring to fields Refrigerator REDACTED Rolling your own Transient properties The deletion problem (remix) Persistence Query strategies Backfills Type systems Toolkits Problems Further reading New Updates Final thoughts Introduction Today I thought I'd talk about a neat design pattern that doesn't seem to get much love: the Properties Pattern. In its fullest form it's also sometimes called the Prototype Pattern. People use this pattern all over the place, and I'll give you a nice set of real-life examples in a little bit. It's a design pattern that's useful in every programming language, and as we'll see shortly, it's also pretty darn useful as a general-purpose persistence strategy. But even though this pattern is near-universal, people don't talk about it very often. I think this is because while it's remarkably flexible and adaptable, the Properties Pattern has a reputation for not being "real" design or "real" modeling. In fact it's often viewed as a something of a shameful cheat, particularly by overly-zealous proponents of object-oriented desi