There are two things that you need to learn to be successful in creating software. The first one is usually a language, a programming language, the second one design. 👀 No, I am not talking about graphics design. I am talking about engineering design.

Your goal when creating software is to tell the computer what to do. Thus, knowing a progamming language makes an excellent first need. By learning a programming language, you become a coder or a programmer. That is just the first step. Any kid who finishes elementary school can write, but that does not mean that any…

Deep Learning for Java is a library that provides support for many of the algorithms associated with deep learning including neural networks 🙂. Let us review the basic tasks for creating, training, and running a neural network using DeepLearning4J.


Let us work with an example that we reviewed before: a neural network to recognize the XOR operator. In a previous story, we implemented this from scratch. Now, let us use DeepLearning4J. As shown in Figure 1, this neural network has two inputs, a hidden layer with three neurons, and an output layer with one neuron. …

One of the most powerful and widely used artificial-intelligence approaches is called neural networks. But, What exactly are they? and How they work? Let me explain it in plain English.

What is a Neural Network?

A neural network is a collection of connected nodes called neurons.

What is a Neuron?

A neuron is a node that has one or more inputs and a single output, as shown in Figure 1. Three important actions take place inside of a neuron:

  • A weight is associated with each input to amplify or de-amplify it.
  • To calculate the output, all weighted inputs are summed.
  • The result of the sum is used as an…

Let us talk about structural design patterns. Patterns help us to connect classes and objects in order to form larger structures. Decorator is one pattern in the structural category.


The Decorator pattern allows extending (decorating) the functionality of an object. It is an alternative to inheritance. Decorator provides new functionality in run-time to a specific instance, while inheritance adds functionality at compilation time and the change affects all instances of the new class.

For example, from a class Person, we can extend a class Student which adds functionality to Person, and then we can choose to create instances of Person…

Affective Computing is all about computers understanding human emotions. By computer I mean a robot, your car, your laptop, or even your phone. And, you could be thinking: Why we want computers to be able to do that? How computers could be able to do it? Two very important questions. Let’s elaborate on them.


Because emotions signal what matters to us and what we care about; further it has been argue that emotions impacts our rational decision-making and action selection. Think about your decision-making when buying a new phone, a new laptop, a car, or selecting a Univerity, a new…

A recurrent question that my students ask is about the difference, if any, between a Factory and a Builder, in terms of the software design patterns with these names. Moreover, they ask about the difference, if any, between the builder as described in the GoF patterns and the so-called Fluent-builder, commonly used in the Java Stream API when calling methods in the pipeline.

They are creational patterns, templates for object creation mechanisms suitable to a specific situation. The basic form of object creation (the new operator calling constructors) everywhere result in design problems and add complexity.

Remember, programming in the…

Creational design patterns provide options for object creation (instantiation of a class ) because sometimes, the basic form of object creation could result in design problems or in added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation. They are composed of two dominant ideas: the first one is encapsulating knowledge about which concrete classes the system uses; and the second one is hiding how instances of these concrete classes are created and combined. The Singleton Pattern is one of the most used design patterns. …

Starting with Java 8, we are able to enhance our Java code solutions with functional approaches. But. what exactly does Java provides? Let’s take a look.

What is functional programming?

Functional programming is a programming paradigm where the focus is on “what to solve” in contrast to a procedural paradigm where the main focus is “how to solve”. In other words, functional programming is a declarative paradigm. The core of Functional Programming is to solve computational problems as evaluation of mathematical functions. Yes, functions, these relationships that associate elements of a set X (inputs), to a single element of a set Y (output). In…

A Websocket allows to create a communication channel between a client and a server. In particular, a communication channel that uses the websocket protocol as a communication protocol. The websocket protocol is compatible with the HTTP protocol (yes, the one used to connect web browsers and web servers). However, it has very special improvements: (1) lower overhead than HTTP and (2) bi-directional web communication.

Javier Gonzalez

Software Engineer, Computer Science Educator, Faculty at @ASUEngineering, and ACM distinguished speaker

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store