RSS

The Evolution of Software Development Part Three

Episode 101

In the previous part of this article, we continued a journey through important milestones in the history of software development through the eighties and nineties, including non-obvious influences of Gamers and Hackers, Version Control, Open Source, Common Runtime Environments, Virtual Machines, Agile, DevOps, Continuous Integration, and Automated Tests.

7FQ0Rco

Image by Jose Borges

In this part, we will mostly explore what happened in the last twenty years, but as usually some of the concepts can be traced back to earlier times. As previously, we will be interested not only in pure technology but also methodologies and organizational ideas.

Extreme Programming and Software Craftsmanship

Prominent methodologies within Agile software development like Scrum or Kanban, provided some organizational guidelines over the process, which while very useful, is not very specific on the technical side. While navigating various simple and complex organizational ideas at the top, the industry was seeking a decent codification of good engineering practices at the bottom. One such approach was Read the rest of this entry »

 
Leave a comment

Posted by on September 13, 2020 in History, Technology

 

Tags: ,

The Evolution of Software Development Part Two

Episode 100

And here we are, dear reader, six years and one hundred episodes later. The idea and form of this blog did evolve a bit over the years, from being a diary of a project through a collection of book reviews, conference reports, introductions to various IT technologies and concepts, article series on Spring, AWS, and web API design. There was digging up in history, a little bit on hardware, a little bit on people, and a little bit on dragons. There is not so much Java here anymore, so in the retrospective, one might think that the blog name is not exactly adequate. We all have our roots and backgrounds though and I’m kind of a sentimental person.

sergey-vasnev-factory-28

Image by Sergey Vasnev

We are also in the middle of another journey here. In the first part of this article, we traced the early history of significant milestones in the evolution of software development, starting with early achievement in computer science and first hardware through Assembler, recognition of Software Engineering, Compilers, Unified Hardware Architectures, Object-Oriented Languages, Design Patterns, Personal Computers, IDEs and finally The Internet and WEB APIs. We assessed how all that created and shaped the IT industry through the decades. In this part, we will catch up with the timeline somewhere between the eighties and the nineties and traverse towards a new millennium. Software development as an engineering discipline has changed a lot over this time as well. Several key phenomena fuelled those changes, and we are going to explore them right now.

Gamers and Hackers

Perhaps one of the most overlooked aspects of stimulating the growth of software development is computer games. Many people are not aware, that the computer games industry nowadays is worth over twice the film and music industry combined (154B vs 41B + 19B in 2018) and is growing at a 10% yearly rate. This has several consequences. Read the rest of this entry »

 
Leave a comment

Posted by on August 5, 2020 in History, Technology

 

Tags: ,

The Evolution of Software Development Part One

Episode 99

In the previous episode, we were discovering a history of cloud computing. Today we are going to continue with a historical theme and take a closer look at how software development changed over time. The art of software development is well over 70 years old now. Comparing with classic engineering disciplines, like building bridges or roads, one could say that it is still an infancy stage. The pace and extent of changes it had undergone are astonishing though. Numerous sources are focusing on the history of computers, programming languages, and software architectures, but in this series of articles, we will focus on how the craft of creating the software itself evolved and analyze a number of ideas and breakthroughs that had left the most significant imprints on it.

hongqi-zhang-magical-forge

Image by Hongqi Zhang

Software development evolution is of course woven in computers, programming languages, and architecture evolution but it is much more. Numerous tools, techniques, movements, processes, and practices accompany it. Everything for the sake of efficiency and being able to deliver value faster and more reliable in the ever-growing complexity of modern technological stacks. The value itself evolved with growing possibilities as well.

Early Theory and Practice

Any tale related to the history of software would be incomplete without mentioning Ada Lovelace, widely recognized as the first programmer, well before any computers were physically built. She is famous for her theoretical work on general-purpose calculations on Charles Babbage Analytical engine in the 1840s. The machine itself was not constructed until Read the rest of this entry »

 
1 Comment

Posted by on July 22, 2020 in Technology

 

Tags: ,

Cloud Computing History

Episode 98

We talked about cloud computing quite a lot here in the past. We started with an introduction in Episode 57 and then focused particularly on AWS cloud, starting from Episode 64  and following with a series of 13 Episodes up to a conclusion with tips on how to pass some certifications in Episode 83. Today we will look back a bit and explore milestones in the IT industry that led to the emergence of cloud computing platforms as we know it today.

thomas-chamberlain-keen-skystation

Image by Thomas Chamberlain-Keen

We will look at many factors and concepts that have played a crucial role in disrupting the industry across last six decades, including time-sharing mainframes, the birth of the Internet, virtual machines, containers, Software as a Service, Platform as a Service, Infrastructure as a Service, Read the rest of this entry »

 
2 Comments

Posted by on March 22, 2020 in Cloud, Technology

 

Tags:

Web API Design Part Eleven: Miscellaneous

Episode 97

Our API design journey was long and adventurous, but we are getting to the end of it. This is the final installment of the series and will include all the little things I had difficulty classifying to any previous chapters, or that I have forgotten about earlier as well as some closing thoughts. If you don’t know how to name a chapter or a presentation slide with a random list of tips – you can always slip away with “miscellaneous”.

concept_enviro__2_by_grosnez_d9nqd7v-fullview

Image by Grosnez

It took a bit longer than usual, I know. Last few months I had a big project called “let’s pass another cloud certificate” and I decided to focus on that. Before we continue, with our final piece of API design thoughts and ideas, let’s briefly recap what we did up to this point.

The Road So Far

Formally, it all started ‎on Tuesday, ‎22 ‎August  ‎2017, ‏‎10:57:40 AM, according to Google Drive doc creation timestamp. I’ve created the first doc with notes, preparing to do a talk on web API design on the occasion of opening a new office of my company. I repeated this talk several times later and meanwhile decided to reforge it into a series of articles. Originally it was supposed to be three of them, but as you can see, I’m not the best at estimations. The first article was Read the rest of this entry »

 
Leave a comment

Posted by on June 16, 2019 in API, Technology

 

Tags:

Web API Design Part Ten: Management

Episode 96

It’s been a while, but I’m back with the next installment of API design series. Today we will step away a bit from technicalities and jump into the business perspective. After all, API is a product and needs to be treated as such. As we discussed one year ago in the first chapter of our journey, API is for developers as a graphical user interface is to regular software users. It’s a gateway to business value. And there are quite a lot of issues going around the product to think about and to be aware of.

digital-arts1.png

Image by Cosmic Net Studios

API management is a process of creating, publishing, enforcing usage policies, taking care of subscribers, analyzing the traffic and monetizing our product. API is as successful as developers who build upon it. Much of API management effort is directed towards empowering developers that use the API and simplify their work as much as possible. Some aspects of API management are more technical than others and with the rise of API management platforms this tendency increases, as more features are delegated to the platform. We will focus on Read the rest of this entry »

 
1 Comment

Posted by on December 20, 2018 in API, Technology

 

Tags: , ,

Web API Design Part Nine: Versioning

Episode 95

Today’s episode is sponsored by the rain in Amsterdam and werewolves. It’s my second trip here within last two weeks with the initial goal of attending AWS trainings and some sightseeing, but AWS canceled one of these a day after my company bought non-refundable plane tickets and booked the hotel, so… more emphasis on sightseeing, or rather sitting in the coffee shop waiting for better weather. Why werewolves? Well, because in this installment of our long-running series on API design, we will talk about versioning and I find the werewolf a decent allegory to represent breaking (or tearing) changes in API that leads to a dilemma: which versioning strategy should be employed. And because I like fantasy themes for my articles.

aleksandr-nikonov-the-werewolf-by-niconoff-d59dlra

Image by Aleksandr Nikonov

There are many approaches to versioning with pros and cons and it’s difficult to definitively choose one or the other. We will explore possibilities of how to version and,  where to actually put the version information, including URI, parameters, content negotiation, custom headers, or… nowhere at all. We are going to talk about breaking and non-breaking changes and various considerations and hints relevant to helping clients of your API deal with the evolution of our system in a bearable way.

Shapeshifting

Before we start to multiply API version, we should consider whether we really need it. Backward compatible, or non-breaking changes should not Read the rest of this entry »

 
2 Comments

Posted by on September 30, 2018 in API, Technology

 

Tags: , , ,

Join JDD 2018

Episode 94

A little break from API design series, to share some news. I was again invited to be a media partner of JDD – a Java conference that will take place at Nowohuckie Centrum Kultury in Cracow, on October 8-9th. As a result, I will have for all of you not only a 15% discount code but also one entirely free invite. If you are curious about last year’s details, have a look at what was going on day one and day two.

image1

What new at JDD this year?

One of the JDD 2018 goals is consistent and rich in content program, which was prepared by CFP ideas and JDD Program Committee suggestions. The schedule includes  Spring, Serverless, Reactive Streams, GraphQL, REST API, Reactive Programming and Java, Java 8, Java 9 i Java 10, of course! “Meat and practice” – live coding, case studies – this is what you can expect from JDD this year. Furthermore Read the rest of this entry »

 
Leave a comment

Posted by on September 5, 2018 in Events, News, Technology

 

Tags: , ,

Web API Design Part Eight: HATEOAS

Episode 93

Temperatures around are deeply disturbing when I’m writing this post, so I decided to banish myself to a place with air conditioning and cold brew coffee. Time from the last post is a bit longer than expected, but as an excuse, I wrote (almost) two different articles meanwhile on the subject of microservices, that will be hosted on other blogs. I will link them here later. Digression aside, today we are going to talk about Hypermedia as the Engine of Application State, also known under a lovely acronym HATEOAS.

diablo_ii_fanart_by_alswns3421-d99299k.jpg

The previous article, about security, has a brief reference to a soundtrack of a classic game Diablo II, and so has the art I used on the slide about HATEOAS on my API design presentation. Remember the boss of act III, Mephisto? Apparently, any serious demon needs an appropriate title, in that case, it was: Lord of Hate. Hate, HATEOAS, you know, it worked well together. Okay, I’m over with digressions, I promise. Let’s get down to Dungeons of Hate… I meant, let’s get down to business.

The Overlord

I meant: The overview… HATEOAS is a part of REST architectural style. It might be considered a high-level part according to Richardson maturity model, as Read the rest of this entry »

 
2 Comments

Posted by on August 8, 2018 in API, Technology

 

Tags: , , ,

Web API Design Part Seven: Security

Episode 92

Short digression first. I’m currently sitting in a lovely and almost on-time train from Wrocław to Kraków in order to get to Devoxx PL conference and rant again about, guess what, web API. I was assessing which part of the design should I write about today, put on the headphones and kicked my usual collection of writing music mainly composed of video games soundtracks. The first track that pops up randomly is “Diablo II – The Wilderness”. It’s dangerous out there, I thought, API security it is then.

Welcome to the next chapter of our journey through the vast realms of web API. We have wandered far away from home now, and the wilderness is getting scary and dangerous. Let’s see what we can do to stay safe here.

ee5972e76e3e7b0be1925b6a334dc58a-d5hzy0x

It’s not the first security focused article here, but probably the most technology agnostic. In episode 63 we tackled some hands-on examples of security aspects in Spring framework. In episode 77 we looked at details of AWS IAM – Identity and Access Management while following in episode 78 with other AWS services related to security.

Today we will talk about authentication and authorization ways in web APIs, keys, JWT, OAuth, TSL, throttling, threats and attacks and explore some general tips on Read the rest of this entry »

 
1 Comment

Posted by on June 27, 2018 in API, Technology

 

Tags: , , , , ,