[
{
"title" : "Serving React apps from Spring Boot",
"link" : "https://blog.indrek.io/articles/serving-react-apps-from-spring-boot/",
"excerpt" : "You've decided to build a wep app with React and want to use Spring Boot for the back end. This post will show you how to serve a React app from Spring Boot."
}
,{
"title" : "Structuring packages in Java web applications",
"link" : "https://blog.indrek.io/articles/structuring-packages-in-java-web-applications/",
"excerpt" : "Often times in Java web applications we see that the package structure indicates that a layered architecture is used. In this post we're going to explore the ideas around what would happen if layers were not the topmost level of organization in an application architecture."
}
,{
"title" : "Improvements to Optional in Java 9",
"link" : "https://blog.indrek.io/articles/improvements-to-optional-in-java-9/",
"excerpt" : "Java 9 introduced three new methods to the Optional class. This post covers what they do and how to use them."
}
,{
"title" : "Using environment variables with Spring Boot",
"link" : "https://blog.indrek.io/articles/using-environment-variables-with-spring-boot/",
"excerpt" : "This post will cover how you can use OS environment variables to pass configuration values to a Spring Boot application."
}
,{
"title" : "How to write a good commit message",
"link" : "https://blog.indrek.io/articles/how-to-write-a-good-commit-message/",
"excerpt" : "Version control systems play a vital role in tracking the history of changes in a codebase. Knowing how to write good commit messages is an essential skill if you wish to have your project's history well documented."
}
,{
"title" : "takeWhile and dropWhile in Java 9 Streams",
"link" : "https://blog.indrek.io/articles/whats-new-in-java-9-streams/",
"excerpt" : "Arguably one of the most noteworthy new features introduced in Java 8 was the Streams API. Java 9 offers two new stream operations—takeWhile and dropWhile."
}
,{
"title" : "To field inject, or not to field inject in Spring?",
"link" : "https://blog.indrek.io/articles/to-field-inject-or-not-to/",
"excerpt" : "Nearly all Spring projects that I have worked with make heavy use of field injection. This must be a popular approach because it is concise and reads well. But have you ever considered the downsides of field injection?"
}
,{
"title" : "Java's While and Do-While Loops in Five Minutes",
"link" : "https://blog.indrek.io/articles/javas-while-and-do-while-loops-in-five-minutes/",
"excerpt" : "A while loop is a control flow statement that runs a piece of code multiple times. It consists of a loop condition and body. Java also has a do while loop."
}
,{
"title" : "Java’s Ternary Operator in Three Minutes",
"link" : "https://blog.indrek.io/articles/javas-ternary-operator-in-three-minutes/",
"excerpt" : "The ternary operator is a form of syntactic sugar for if-then-else statements. It is also known as the conditional operator, which is perhaps a more meaningful name because it evaluates conditions like if does."
}
,{
"title" : "Java’s If Statement in Five Minutes",
"link" : "https://blog.indrek.io/articles/javas-if-statement-in-five-minutes/",
"excerpt" : "The if statement is the most basic conditional statement. It checks a condition, which is any boolean expression, and runs a block of code if it is true."
}
,{
"title" : "Unit testing classes that depend on time",
"link" : "https://blog.indrek.io/articles/unit-testing-classes-that-depend-on-time/",
"excerpt" : "Dependency inversion principle states that we should depend upon abstractions. Taking that into account, time should also be considered as a dependency."
}
,{
"title" : "Type-safe configuration in Spring Boot",
"link" : "https://blog.indrek.io/articles/type-safe-configuration-in-spring-boot/",
"excerpt" : "Spring Boot provides a type-safe way to handle configuration by allowing you to create a bean and populating it with property values from your configuration file."
}
,{
"title" : "Externalized configuration in Spring Boot",
"link" : "https://blog.indrek.io/articles/externalized-configuration-in-spring-boot/",
"excerpt" : "Externalized configuration is essential if you wish to deploy the same deployable unit to different environments without modifying the source code. Spring Boot provides several easy methods of doing that."
}
,{
"title" : "Getting started with Dropwizard - CRUD operations",
"link" : "https://blog.indrek.io/articles/getting-started-with-dropwizard-crud-operations/",
"excerpt" : "Dropwizard is a framework for building RESTful web services in Java. This tutorial shows how to create, retrieve, update, and delete resources."
}
,{
"title" : "5 ways to create a Stream in Java 8",
"link" : "https://blog.indrek.io/articles/5-ways-to-create-a-stream-in-java-8/",
"excerpt" : "Java 8 introduced the Streams API which allows developers to declaratively manipulate collections. Here are five ways to create a Stream in Java 8."
}
,{
"title" : "Running a Dropwizard application in IntelliJ IDEA, Eclipse and NetBeans",
"link" : "https://blog.indrek.io/articles/running-a-dropwizard-application-in-intellij-eclipse-and-netbeans/",
"excerpt" : "In addition to executing a Dropwizard application from the command line, you can increase your productivity by configuring your IDE to do that for you. This post is going to be looking at how to run a Dropwizard application in IntelliJ IDEA, Eclipse and NetBeans."
}
,{
"title" : "Getting started with Dropwizard",
"link" : "https://blog.indrek.io/articles/getting-started-with-dropwizard/",
"excerpt" : "Dropwizard is a framework for building RESTful web services in Java. In this tutorial we're going to have a look at how to get started with developing a Dropwizard application by building a new service from scratch."
}
,{
"title" : "Practice programming with code katas",
"link" : "https://blog.indrek.io/articles/practice-programming-with-code-katas/",
"excerpt" : "Kata is an exercise where the novice repeatedly tries to emulate a master. In karate, these kata are a sequence of basic moves, strung together in a way that makes sense. PragDave proposes the idea of doing the same with programming."
}
,{
"title" : "ERR_EMPTY_RESPONSE and SSH not working",
"link" : "https://blog.indrek.io/articles/err-empty-response-and-ssh-not-working/",
"excerpt" : "Chrome is returning ERR_EMPTY_RESPONSE, Git and SSH connection hangs at expecting SSH2_MSG_KEX_ECDH_REPLY. Seems to be an MTU/fragmentation problem."
}
,{
"title" : "Java, Unicode, and the Mysterious Compiler Error",
"link" : "https://blog.indrek.io/articles/java-unicode-and-the-mysterious-compiler-error/",
"excerpt" : "This post covers how the Java compiler handles Unicode escapes and how they can cause mysterious compiler errors."
}
,{
"title" : "Java 8 Puzzlers: Streams",
"link" : "https://blog.indrek.io/articles/java-8-puzzlers-streams/",
"excerpt" : "In the spirit of the book Java Puzzlers by Joshua Bloch and Neal Gafter, this post discusses a Puzzler that can be found in Java 8 Streams."
}
,{
"title" : "How to control an RC car over WiFi with ESP8266",
"link" : "https://blog.indrek.io/articles/how-to-control-an-rc-car-over-wifi-with-esp8266/",
"excerpt" : "ESP8266 is a low-cost WiFi chip with a full TCP/IP stack and a microcontroller capability. Here is how I used it to control an RC car."
}
,{
"title" : "Design patterns: Specialization of the classic observer pattern",
"link" : "https://blog.indrek.io/articles/design-patterns-specialization-of-the-classic-observer-pattern/",
"excerpt" : "In the typical case, the observer is responsible of getting the updated state from the subject. This means that the observer has to hold a reference to the subject (also the subject holds a reference to the observer, meaning we have created a circular reference)."
}
,{
"title" : "Design patterns: Observer pattern implementation in Java",
"link" : "https://blog.indrek.io/articles/design-patterns-observer-pattern-implementation-in-java/",
"excerpt" : "Observer pattern is a design pattern with an intent to define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically."
}
,{
"title" : "Ansible force remote user with Vagrant 1.8",
"link" : "https://blog.indrek.io/articles/ansible-force-remote-user-with-vagrant-1-dot-8/",
"excerpt" : "My Ansible playbook stopped working when using Vagrant 1.8 or above. The problem seems to be with changes made in Vagrant."
}
,{
"title" : "Ansible skipping localhost when using Vagrant",
"link" : "https://blog.indrek.io/articles/ansible-skipping-localhost-when-using-vagrant/",
"excerpt" : "Vagrant Ansible provisioner skips plays that are meant to be run on localhost. There's a simple workaround for that."
}
,{
"title" : "Java 8: CompletableFuture",
"link" : "https://blog.indrek.io/articles/java-8-completablefuture/",
"excerpt" : "CompletableFuture is an implementation of the Future interface but with a modern twist. It takes advantage of functional operations to promote asynchronous/event-driven programming model."
}
,{
"title" : "Using Ansible to manage SugarCRM 7 environments and deployments",
"link" : "https://blog.indrek.io/articles/using-ansible-with-sugarcrm-7/",
"excerpt" : "I've decided to use Ansible to manage SugarCRM environments and deployments. Here's an overview of Ansible playbooks I've created."
}
,{
"title" : "Chaining Optionals in Java 8",
"link" : "https://blog.indrek.io/articles/chaining-optionals-in-java-8/",
"excerpt" : "Optionals in Java can help you to write a program without null checks. Chaining Optionals in a Stream enables to pick the first Optional which has a value and return it."
}
,{
"title" : "Using a serial monitor with SparkFun ESP8266 Thing on Linux",
"link" : "https://blog.indrek.io/articles/using-a-serial-monitor-with-sparkfun-esp8266-thing/",
"excerpt" : "Using Arduino IDE's serial monitor with SparkFun ESP8266 Thing does not work. In this post you'll see how to use a serial terminal with the SparkFun ESP8266 Thing on Linux."
}
,{
"title" : "Optionals in Java 8",
"link" : "https://blog.indrek.io/articles/optionals-in-java-8/",
"excerpt" : "If you have had any experience with Java, then you most likely have seen the NullPointerException. Optional in Java 8 are a way to fight them."
}
,{
"title" : "The fork/join framework in Java",
"link" : "https://blog.indrek.io/articles/the-fork-slash-join-framework-in-java/",
"excerpt" : "Introduced in Java 7, the fork/join framework is used to divide a parallelizable task into smaller ones and afterwards combine the intermediate results to get the end result."
}
,{
"title" : "Controlling an RC car with an Arduino",
"link" : "https://blog.indrek.io/articles/controlling-an-rc-car-with-arduino/",
"excerpt" : "Looking for an easy hardware project? Controlling an RC car with an Arduino board is relatively simple. I'll share my experience."
}
,{
"title" : "Version control and deployment practices for SugarCRM",
"link" : "https://blog.indrek.io/articles/version-control-and-deployment-practices-for-sugarcrm/",
"excerpt" : "This post will give you ideas on how to do version control with SugarCRM and how to manage multiple environments and deployments."
}
,{
"title" : "Creating a custom collector in Java 8",
"link" : "https://blog.indrek.io/articles/creating-a-collector-in-java-8/",
"excerpt" : "A collector is a recipe for how to build a summary of the elements in a Stream. In this post you'll see how to create a custom collector in Java 8."
}
,{
"title" : "Service won't start when using the service utility",
"link" : "https://blog.indrek.io/articles/service-wont-start-when-using-the-service-utility/",
"excerpt" : "I debugged a service which didn't start when using the service utility but was working fine when calling the init script directly."
}
,{
"title" : "Four types of method references in Java 8",
"link" : "https://blog.indrek.io/articles/four-types-of-method-references-in-java-8/",
"excerpt" : "Method references let you reuse existing method definitions and pass them just like lambdas. They can be useful in making the code more readable."
}
,{
"title" : "Blogging with Jekyll and Github",
"link" : "https://blog.indrek.io/articles/blogging-with-jekyll-and-github/",
"excerpt" : "It is possible to host your blog at Github and version control your blog posts with Git. Here's how."
}
,{
"title" : "Java 8: Lambda expressions",
"link" : "https://blog.indrek.io/articles/java-8-lambda-expressions/",
"excerpt" : "In computer programming, an anonymous function (also function literal or lambda abstraction) is a function definition that is not bound to an identifier."
}
,{
"title" : "Java 8: Behavior parameterization",
"link" : "https://blog.indrek.io/articles/java-8-behavior-parameterization/",
"excerpt" : "Behavior parameterization is essentially taking a block of code and making it available without executing it. Here's how to do it with Java."
}
,{
"title" : "The importance of taking a break",
"link" : "https://blog.indrek.io/articles/the-importance-of-taking-a-break/",
"excerpt" : "If you're going to dedicate the best years of your life to work, make sure you're doing it for the right reasons."
}
,{
"title" : "Setting up a reverse SSH tunnel with a Raspberry Pi part 2",
"link" : "https://blog.indrek.io/articles/setting-up-a-reverse-ssh-tunnel-with-a-raspberry-pi-part-2/",
"excerpt" : "In part 2 I promised to show an example use case on how to connect to a Windows Server over RDP via a reverse SSH tunnel."
}
,{
"title" : "Setting up a reverse SSH tunnel with a Raspberry Pi part 1",
"link" : "https://blog.indrek.io/articles/setting-up-a-reverse-ssh-tunnel-with-a-raspberry-pi/",
"excerpt" : "You need to access your work computer or network from your home. Maybe a Raspberry Pi can help you."
}
,{
"title" : "Using Joda-Time in unit tests",
"link" : "https://blog.indrek.io/articles/using-joda-time-in-unit-tests/",
"excerpt" : "Joda-Time is a Java library which provides a quality replacement for the Java date and time classes."
}
,{
"title" : "Fixing wireless on Macbook Pro with Ubuntu 13.10",
"link" : "https://blog.indrek.io/articles/fixing-wireless-on-macbook-pro-with-ubuntu-13-dot-10/",
"excerpt" : "Downgrading Broadcom's proprietary driver and making sure no updates are applied to it."
}
,{
"title" : "NTLM authentication fails on Linux when accessing QlikView Access Point",
"link" : "https://blog.indrek.io/articles/ntlm-authentication-fails-on-linux-when-accessing-qlikview-access-point/",
"excerpt" : "I was unable to connect to QlikView Access Point from a Linux machine. My browser presented me with a username/password prompt and after entering the correct credentials, it seemed like no authentication was made."
}
,{
"title" : "Error when exporting to Excel in QlikView AccessPoint",
"link" : "https://blog.indrek.io/articles/error-when-exporting-to-excel-in-qlikview-accesspoint/",
"excerpt" : "A client of mine was unable to export data from QlikView Access Point to Excel."
}
,{
"title" : "5 steps to improve SSH security",
"link" : "https://blog.indrek.io/articles/5-steps-to-improve-ssh-security/",
"excerpt" : "SSH is something we (developers, sysadmins) use daily to connect to remote servers. Here are a few tips to keep your SSH connection secure."
}
,{
"title" : "Batch file in Windows Task Scheduler does not run",
"link" : "https://blog.indrek.io/articles/batch-file-in-windows-task-scheduler-does-not-run/",
"excerpt" : "Creating a scheduled task in Windows Task Scheduler to run a batch file is relatively straight forward, or so I thought."
}
,{
"title" : "Remmina: cannot connect to Windows server over RDP",
"link" : "https://blog.indrek.io/articles/remmina-cannot-connect-to-rdp-server/",
"excerpt" : "What to do when suddenly you're unable to connecto to a Windows server with Remmina over RDP"
}
,{
"title" : "Sharing a local folder during a remote desktop session with RDesktop",
"link" : "https://blog.indrek.io/articles/sharing-a-local-folder-during-a-remote-desktop-session-with-rdesktop/",
"excerpt" : "Rdesktop is an open source client for Windows Remote Desktop Services, capable of natively speaking Remote Desktop Protocol (RDP) in order to present the user's Windows desktop"
}
,{
"title" : "SEVERE: Error listenerStart - debugging Tomcat applications",
"link" : "https://blog.indrek.io/articles/severe-error-listenerstart-debugging-tomcat-applications/",
"excerpt" : "How to debug the dreaded 'Error listenerStart' error message"
}
,{
"title" : "Getting started with Mockito - a tutorial for beginners",
"link" : "https://blog.indrek.io/articles/getting-started-with-mockito/",
"excerpt" : "A tutorial for getting your feet of the ground with Mockito"
}
,{
"title" : "Solving MySql JDBC CommunicationsException",
"link" : "https://blog.indrek.io/articles/solving-com.mysql.jdbc.exceptions.jdbc4.CommunicationsException/",
"excerpt" : "I faced a com.mysql.jdbc.exceptions.jdbc4.CommunicationsException and this is how I solved it."
}
,{
"title" : "Character set problem when uploading a file",
"link" : "https://blog.indrek.io/articles/character-set-problem-when-uploading-a-file-with-apache-commons-and-spring/",
"excerpt" : "Non-ASCII characters in file name get garbled when uploading a file with Apache Commons and Spring CommonsMultipartResolver."
}
,{
"title" : "How to configure VirtualBox VM with 2 network adapters",
"link" : "https://blog.indrek.io/articles/how-to-configure-virtualbox-vm-with-2-network-adapters/",
"excerpt" : "This post describes how to create a VM which has a connection to the internet and also to other VMs in the virtual network."
}
,{
"title" : "Setting up Redis replication",
"link" : "https://blog.indrek.io/articles/setting-up-redis-replication/",
"excerpt" : "The goal of this post is to install Redis on both of them and set up a master-slave replication configuration"
}
,{
"title" : "Autoloading Yii application classes in external scripts",
"link" : "https://blog.indrek.io/articles/autoloading-yii-application-classes-in-external-scripts/",
"excerpt" : "Sometimes I want to have access to all of my classes in a Yii application externally."
}
,{
"title" : "Background jobs with PHP part 2",
"link" : "https://blog.indrek.io/articles/background-jobs-with-php-part-2/",
"excerpt" : "In this post, as promised, we're going to implement a queue of jobs with Resque and Redis"
}
,{
"title" : "PHP Fatal error: Cannot redeclare class with Yii",
"link" : "https://blog.indrek.io/articles/php-fatal-error-cannot-redeclare-class-with-yii/",
"excerpt" : "I am fairly new to PHP and Yii. Lately i struggled with a 'cannot redeclare class' error."
}
,{
"title" : "Background jobs with PHP part 1",
"link" : "https://blog.indrek.io/articles/background-jobs-with-php-part-1/",
"excerpt" : "A background job is a task that is executed 'behind the scenes' and without user intervention."
}
,{
"title" : "Configuring Tomcat to accept Estonian ID card",
"link" : "https://blog.indrek.io/articles/configuring-tomcat-to-accept-estonian-id-card/",
"excerpt" : "In order to accept Estonian ID card, Tomcat needs to be configured to accept client side certificates."
}
,{
"title" : "Setting up SSL on Apache",
"link" : "https://blog.indrek.io/articles/setting-up-ssl-on-apache/",
"excerpt" : "This article explains how to create an SSL certificate, get it signed and configure Apache web server"
}
,{
"title" : "Configure SSL on Apache Tomcat",
"link" : "https://blog.indrek.io/articles/configure-ssl-on-apache-tomcat/",
"excerpt" : "Here we are going to have a look at how to set up SSL on Apache Tomcat 7.0."
}
,{
"title" : "How to enable SSL listen port in Weblogic",
"link" : "https://blog.indrek.io/articles/how-to-enable-ssl-listen-port-in-weblogic/",
"excerpt" : "Where to find the option in Weblogic console to enable SSL?"
}
,{
"title" : "Programming tips and tricks #1",
"link" : "https://blog.indrek.io/articles/programming-tips-and-tricks-1/",
"excerpt" : "These are not necessarily related to the technical aspects of programming."
}
,{
"title" : "How to access phpmyadmin after installation?",
"link" : "https://blog.indrek.io/articles/how-to-access-phpmyadmin-after-installation/",
"excerpt" : "You've just installed phpmyadmin from your package manager. Here's what you need to do in order to access it"
}
,{
"title" : "XsltException caused by JRebel",
"link" : "https://blog.indrek.io/articles/xsltexception-caused-by-jrebel/",
"excerpt" : "XsltException caused by a seemingly missing stylesheet. Turns out JRebel was the culprit."
}
,{
"title" : "Wrong version of Ant in path",
"link" : "https://blog.indrek.io/articles/wrong-version-of-ant-in-path/",
"excerpt" : "Recently, working on a Windows box, I had a problem where my ANT_HOME and ant -version result did not match."
}
,{
"title" : "Articles",
"link" : "https://blog.indrek.io/articles/",
"excerpt" : ""
}
,{
"title" : "Post Archive",
"link" : "https://blog.indrek.io/posts/",
"excerpt" : ""
}
,{
"title" : "Search",
"link" : "https://blog.indrek.io/search/",
"excerpt" : ""
}
,{
"title" : "Tag Archive",
"link" : "https://blog.indrek.io/tags/",
"excerpt" : ""
}
]