RSS

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 »

 
5 Comments

Posted by on December 22, 2016 in Spring, Technology

 

Tags: , , , , ,

Software Talks Rzeszów Dec 2016 and banking apps security

Episode 48

Software Talks is a recurring event organized by PGS Software, consisting of tech talks, beer, pizza and a lot of fun. Some time ago I wrote about the two September editions in Wrocław and Gdańsk, in which I took part as a speaker. On December 8th there was another event, this time in Rzeszów, a city located in south-eastern Poland. I was a speaker for the third time in a row, but for the first time with my colleague Tomasz Zieliński, who recently made a lot of noise in Polish banking environment, preparing a report, which exposed several critical security issues and other major problems in their mobile banking applications. If you read my article about working for different types of companies, you might have noticed that I’m not a big fan of banks’ approach to software development, so I’m going to elaborate on Tomasz findings without mercy.

Background

Last time on Software Talks I spoke with Piotr Konieczny, Polish security expert. This time there was an idea to focus more on Java / software development topics, so I was on a mission to find a second Java speaker. I found one, but at the last moment some issues appeared and he couldn’t make it, so his place was taken by Tomasz, who is actually our Android expert.

15192729_1352447311446640_7009143606265597268_n

It was kind of a busy week for me, as I was three days in Berlin with our client, arrived in Wrocław on Wednesday evening, and an hour later I was in a car with Read the rest of this entry »

 
Leave a comment

Posted by on December 15, 2016 in News, Technology

 

Tags: , , ,

API management tools

Episode 47

Long time ago, the Internet was full of proud and secluded applications, that relied on themselves to provide service. However, services were becoming more and more complicated, also technologies and protocols for connecting with other applications became more standardized. It became obvious that collaboration and specialization is required to survive. Applications thus started to be more specialized, talk to each other much more, and the level of digital interconnection skyrocketed. Along with that, did the market of solutions for managing web APIs.

Do I need API?

Most likely you do. Imagine a big corporation that is building HR system. They want the module related to business travel for planning and reporting. Is there a point in writing everything from scratch? If you plan travel, let’s ask someone who is already good at it. If you want to buy a ticket from A to B, there are companies that provide travel meta search service, both via website and API.

internet-of-things_high_res.jpg

Those companies need data, so they ask someone who possess it – bus and train operators, airlines, car rentals and perhaps other travel meta search companies. Maybe, when planning travel, especially the end points, we might want to specify an address. How do we know that address is correct? We should ask someone who Read the rest of this entry »

 
2 Comments

Posted by on December 8, 2016 in Technology

 

Tags: , , , ,

FutureDevDay Gliwice 2016

Episode 46

On November 25th I attended a small conference organized by Future Processing in Gliwice. We get there, me and my two friends, in less than two hours of driving from Wrocław. The conference was held in a really lovely building within a complex of Upper Silesian Agency for Entrepreneurship and Development. Few hundred developers gathered for a single track composed of 11 talks 25 minutes each and finally a special guest talking for an hour.

fdd

At the end, there was an after party in a nearby bar (called “progress bar”, how cute!) with three discussion panels, food and beer.

Talks

Talks were grouped thematically into categories composed of two or three each. First were architectural ones, then frontend, cloud and finally big data. I decided to write more about few sessions I liked the most and to take liberty at titles translation, if required. Let’s start with Read the rest of this entry »

 
Leave a comment

Posted by on December 1, 2016 in News, Technology

 

Tags: ,

Craftsmanship, Science, Engineering and Art

Episode 45

As you might have noticed, if you read my blog for some time, I like the parallel between modern software development and medieval craftsmanship. I used it recently when talking about seniority in programming along with other measures. I did reviews of two books on the topic some time ago here and there, but now I would like to devote entire article just to that. To be more specific, I would like to talk about the essence of modern software development and why it’s important to understand this.

6mzd3u4

It will be a bit of a historic tour, we will start from formal beginnings of computer science, and its relation to early programmers. Then we will take a look at spectacular rise and fall of a new engineering discipline. Next comes the art, both as creative endeavor and as philosophy, especially in traditional martial arts. Finally we will arrive at craftsmanship, and Read the rest of this entry »

 
Leave a comment

Posted by on November 24, 2016 in Technology

 

Tags: , , , ,

Seniority in Programming: Part Two

Episode 44

Last week, in part one of this article, I was pondering about levels of competence in general and in software development. I looked at mainstream naming schemas, recalled metaphor to medieval craftsmanship, described ranks in Japanese martial arts, presented SFIA skill framework and finally ability’s dots in role-playing game system. Now, let’s try to do something with it. How much levels do we actually want? Well, let’s have four.

junior.jpgApprentice

  • HR would call it junior developer
  • Sensei would call it 5th to 4rd kyu
  • SFIA would call it level 2 to 3, the one who assists and applies
  • VtM handbook would call it 2 dots, the practitioner

We all have to start somewhere. I’m assuming that this is how we should call a person that begins professional career in software development, and has knowledge usually associated with at least bachelor degree in computer science or closely related field. Apprentice has some theoretical grasp and academic experience, but not much, if any, with commercial projects. Why skip 1st level of SFIA and 1st dot in VtM handbook? Because to be employed as junior developer, you have to know quite a lot. It’s not like random person from the street can get the job and do well after some on-site training. It’s not a damn factory. One need to understand some basics of computer science, and be able to code something. I’m not saying academic degree is a must, because many prominent programmers don’t have one, but some knowledge in the field is a Read the rest of this entry »

 
2 Comments

Posted by on November 17, 2016 in Misc, Recruitment

 

Tags: , , , ,