RSS

Spring Core Basics

Episode 58

This week I was planning to publish introduction to Amazon Web Services, but since I’m working on preparing Spring-based web applications development course for Wrocław University of Technology students with my two colleagues, I decided to change the schedule a bit. I planned to write few articles about Spring framework anyway, but in order to fit everything before particular classes in March and April I need to start exactly now.

a1dac3474b1a296e8ec8b14647ec7798.jpg

I wrote a Spring Hello World article over two years ago actually, but today I wanted to talk a bit more about some fundamental concepts: Inversion of Control and dependency injection. Let us take a closer look at application structure, configuration, components and wiring. There will be quite a lot of code snippets. If you would like to play with complete application working out of the box, visit my GitHub project Spring Angular Intro. The application is based on the one I prepared for Angular Intro article in September 2016, but now we will focus on back-end exclusively.

Concepts

Classic approach to program structure is that we write custom, high-level code which calls lower level code.  The flow of control goes from our code to a generic framework or libraries. Inversion of control is a technique, where Read the rest of this entry »

 
Leave a comment

Posted by on February 23, 2017 in Technology

 

Tags: , , , ,

Cloud Computing Intro

Episode 57

Last week we talked about virtual machines and containers and rapidly growing popularity of the latter. Another subject that people in software development talk a lot is the cloud. Everyone wants to be in the cloud nowadays, there is a number of good reasons to do that and some reasons not to.

2322dc8bfd0a655059a0b4d0301ea218.jpg

Originally, I wanted to write an introduction to Amazon Web Services this week, since I’m into this topic recently. However, I realized that the introductory paragraph about the cloud in general is growing too fast and it requires a separate article. Let’s start with a bit of history of cloud computing. Remember: There is no cloud. There is just someone else’s computer.

Cirrus: Long Time Ago…

After the initial developments in computing technology, in sixties and seventies, it was typical, that organization had one large computer, the mainframe, and people were connecting to it over the network using terminals, just to send data and receive results. Then, there was the microcomputer revolution, and Read the rest of this entry »

 
Leave a comment

Posted by on February 16, 2017 in Technology

 

Tags: , , , ,

Virtualization and Containers Intro

Episode 56

Container revolution is one of the hottest topics nowadays in software development industry. The little blue whale, the Docker logo, can be seen on most programming conferences as well as numerous Twitter feeds of, so called, IT influencers.

676811.jpg

Today, along with containers, we will talk about their older and fatter siblings: virtual machines. It’s good to understand similarities and differences between those two and how to take advantage of that. We will talk about what containers are and what they are not. Contrary to what might have seem, containers did not render virtual machines entirely obsolete and there are reasons to use both.

Virtual Machines

Virtual machines are emulations of computer architectures and provide functionality of a physical machine using appropriate combination of software and hardware. It’s not a new concept, as first implementation dates back to systems developed in the sixties like IBM CP-40. They are commonly used to Read the rest of this entry »

 
1 Comment

Posted by on February 9, 2017 in Technology

 

Tags: , , ,

Software Gardening: Beyond Craftsmanship

Episode 55

In the past I wrote quite a lot about the nature of software developer. There was a comparison to scientist, then engineer, martial artist and finally to something based on medieval craftsman, who combines all three to an extent. However, some time ago I’ve encountered yet another metaphor for our profession that felt quite appealing.

little_gardener_by_irina_ponochevnaya-d9qc7m0

It’s the Software Gardener. The person that works not on an inanimate object, but on living, organic ecosystem that is constantly changing in unpredictable ways, and depends greatly on environmental factors. Let’s see what it’s all about.

Birds Are Chirping About the Gardener

The metaphor is not that common. I sit quite a lot on LinkedIn (probably more than typical software developer does and should) and I recall only one person that called herself that. Google finds about 5k results on “software gardener”, not much compared to 159k on “software craftsman”, 33M on “software developer” or 44M on “software engineer”. While the parallel to software craftsmanship was first drawn in 1992 by Jack Reeves, the parallel to gardening is not that young either. Read the rest of this entry »

 
Leave a comment

Posted by on February 2, 2017 in Misc

 

Tags: ,

The Charisma Myth

Episode 54

It’s time for another book review! Since, it’s still January, the month of recaps, let’s recap what I’ve reviewed so far. There were four books:

  • Episode 40: Building Microservices
  • Episode 25: Software Craftsman: Professionalism, Pragmatism, Pride
  • Episode 23: Software Craftsmanship: The New Imperative
  • Episode 17: Secrets of the Rock Star Programmers

What they all have in common? Well, they are about software development. Today, we are going to do something seemingly different. I will present you a book written by Olivia Fox Cabane, a person who has pretty much nothing to do with our industry. The book is called The Charisma Myth: How Anyone Can Master the Art and Science of Personal Magnetism. It’s a good book. And damn useful in software development.

What if charisma can be taught?

the-charisma-mythThere are people with magnetic presence, who are influential, inspiring, persuasive, charming and able to harvest the undivided attention of crowds. The common understanding is, that it’s a gift, a talent or an innate ability. You just either have it or not.

The common understanding is wrong. In the book, Olivia explains that charisma is simply a skill. Of course, different people have different degrees of talents toward learning particular skills, but nevertheless – it can be trained. Perhaps not everyone can be a master, but hey, being an expert or even decent at it can make great deal of difference in your life, both private and professional. Maybe you are not a politician, show host or CEO, but you usually deal with people to some degree (please get out of the cave…). And when being development team member or leader, scrum master, manager, product owner, administrator or whoever in IT, you benefit from charisma. If you help new people around, conduct a programming training, give a speech on tech conference or go talk with your boss about pay rise, you benefit from charisma. Let’s see how Read the rest of this entry »

 
Leave a comment

Posted by on January 26, 2017 in Books

 

Tags: , , ,

The Story So Far and The Road Ahead

Episode 53

It’s time to do some summary of my writing up to now and lay down plans for 2017. Usually people write such articles at the end of December or beginning of January, but my article about the Hobbits journey through layers of abstraction grew a bit longer than I’ve initially anticipated and I didn’t want to interrupt the series. So here it is, in the second half of January: The story behind How To Train Your Java, some numbers, summary and further ideas.

Timeline

Every story has to begin somewhere. Let’s list some milestones the blog went through from the very beginning. One day I’ve decided, that I want  a blog. With a dragon, because why not.

ws_Magical_Forest_Path_1920x1080.jpg

2014

  • August: It all started here. My initial idea was to write an enterprise application with all development infrastructure, tools, elements and all fancy stuff. I wrote twelve articles this month, mostly concerned with researching what to use for my project.
  • September: I started to drift away from the initial concept, did some categorization, two articles on Java optimization and retrospectives. The pace of one article a week was established.
  • October: There was a first book review, and three articles about conferences in Antwerp and London I’ve attended.
  • November: Hello World’s month. Besides another book review, I wrote about basics of Spring, GWT and Vaadin.
  • December: One article. That’s the moment where my motivation vanished. I lost interest in my project, and writing went down alongside.

Read the rest of this entry »

 
Leave a comment

Posted by on January 19, 2017 in News

 

Tags: , ,

From Java Source to Bare Metal, Part Four: The Battle of Eight Cores

Episode 52

This is the fourth and final episode of our little Hobbit’s journey through layers of abstraction of web application and all its foundations down to hardware. Starting in episode 49, we traveled all the way from Java code, web framework, web server, Java virtual machine, container, operating system through Internet Protocol Suite. It’s time to meet the Bare Metal.

smaug-the-hobbit-dragon.png.jpg

The Hobbit paced across maze of corridors and shafts inside the mountain to finally emerge through the main gate and run down the valley to breathe a fresh air. A moment later he froze, turned around, looked up and realized his grievous mistake. The Physical Dragon was not above the Lake City anymore. He was lurking at the mountain side, just above the gate, piercing terrified Hobbit with his gaze.  

Fire and Water: The Bare Metal

Everything we talked about up to this point was basically software. Now it’s time to look into our Hobbit whereabouts from the physical machine point of view. We started with an assumption, that we have a reference to the Hobbit object in our Java code. The object lives on Read the rest of this entry »

 
Leave a comment

Posted by on January 12, 2017 in Technology

 

Tags: , , , , , , ,

From Java Source to Bare Metal, Part Three: The Networked Mountain

Episode 51

Hello traveler. Today we are continuing our journey through abstraction layers in a web application with all its foundations. Two episodes ago we started from Java code written by hand, followed by the web framework. One episode ago we went down into web servers, traveled through Java virtual machine to finally meet the container engine. Finally? Oh no, there is still long way before us.

Laketown.png

The cruise on the back of giant blue whale is over, and the Lonely Mountain is closer than ever. The Hobbit jumps out of the barrel and lands on solid ground somewhere in the city harbor. Meanwhile, the whale drifts away, unnoticed by busy workers. The hobbit leaves the dock and treads towards the building that dwarfs nearby ones with its size. The city hall.

On the Doorstep: The Operating system

In terms of the operating system, we are now crossing the border between the application and the kernel. We can say, that both sides were mediated by the container engine, which presents virtual kernel API to the application inside the container and maps all calls to the actual kernel API on which it resides. Java virtual machine and everything that’s sits on top of it, is now just another Read the rest of this entry »

 
1 Comment

Posted by on January 5, 2017 in Technology

 

Tags: , , , ,

From Java Source to Bare Metal, Part Two: The Desolation of Bytecode

Episode 50

In the previous episode, we started a journey through layers of abstraction of modern back-end web application. As a response to unexpected request, a Hobbit object is going to an adventure, and must travel safely across the technology stack. We seek an answer to the question what happens between Java code and the physical machine. Perhaps, even further.

Our Hobbit leaves the, yet familiar, plain of web framework and goes deep down under the Misty Server Mountains.

Riddles in the Dark: The Server

The code sits atop of web framework, and web framework sits atop of web server. That was mostly true until recently. Now, with Spring Boot, it is common that instead of deploying packed application to the server, there is a fat jar that contains embedded server inside an application. No configuration, no deployment, just running a single jar. Simple solution for simple problems, but of course it’s no silver bullet and might not fit everywhere. How does the server and the application fit together?

bilbo_in_gollums_cave

There are different tiers of servers, as I wrote some time ago. The largest that we care about are application servers, like Read the rest of this entry »

 
3 Comments

Posted by on December 29, 2016 in Technology

 

Tags: , , , ,

From Java Source to Bare Metal, Part One: An Unexpected Request

Episode 49

Imagine you are developing a web application based on a typical modern technology stack. In essence, the goal is to create something that receives requests from the network, processes them, and responds to them with some kind of structured data. It can be a fancy HTML webpage to be displayed in client’s web browser or it can be a raw text object to be consumed by another application web API. Have you ever wondered what exactly is going on behind the scenes? What is happening between the moment when the code you wrote is executed and the moment when electrical impulses jumps the network cable sticking out of that metal box in the data center? Let me take you on the journey along numerous layers of abstraction in modern software stack that must be bypassed to make things happen.

There and Back Again: Abstractions

Programming is all about abstractions. We endlessly put one layer above the other in order to deal with tremendous complexity of software and hardware. Often, we ignore most of the layers to focus on solving the actual problem at hand. In principle, sending a JSON object over the network might seem like an easy task with modern tools and frameworks. You generate the project, tweak just a little bit here and there, write one method with few annotations and there you go, it works. But the engineering problem of making this possible in an easy, fast, secure, reliable, scalable and manageable way is gargantuan. Looking at the big picture, it’s probably an effort of hundreds of thousands of software developers, architects, electronic and electrical engineers, computer scientist and mathematicians, spanned over several decades of work. All that, to let you do the job in a single pomodoro.

248900

Of course, to develop decent software, you don’t necessary have to understand exactly how all this works, it’s probably not even possible for a single human being to grasp all that in every detail. I believe however Read the rest of this entry »

 
4 Comments

Posted by on December 22, 2016 in Technology

 

Tags: , , , , ,