Software engineering articles

Looking for something else? Check the categories of Software engineering:

Programming Testing Web security

If not, below you can find all articles belonging to Software engineering.

Tips to discover internals of an Open Source framework internals - Apache Spark use case

Apache Spark is a special library for me because it helped me a lot at the beginning of my data engineering adventure to learn Scala and data-oriented concept. This "learn-from-existent-lib" approach helped me also to discover some tips & tricks about reading others code. Even though I used them mostly to discover Apache Spark, I believe that they are applicable to other JVM-based projects and will help you at least a little bit to understand other Open Source frameworks.

Continue Reading β†’

Let it crash model

Some time ago during my research about Akka I found a term describing coding philosophy using, among others, by this library. The term itself is quite intriguing and it's the reason why I've decided to deepen it.

Continue Reading β†’

Amortized and effective constant time

The basic Big O measures (O(1), O(n), O(log n)) are understandable quite easily. However they're not the single ones - especially because of Scala collections. Two variations of them, a little bit less unequivocal, exist - amortized and effective constant time.

Continue Reading β†’

Why take care of methods length ?

It's not an enviable experience to arrive to new project team and see methods violating all rules of common sense. Sometimes it's because of programmers ignorance, sometimes because of "yesterday deadline", sometimes because some people like to be irreplaceable (and by producing code maintenable with difficulty, they can achieve that in some way). This post tries to justify why short methods are better than the long ones.

Continue Reading β†’

Introduction to mutation testing

Code coverage is an useful metric tests definition. But it's not the single one metric which can be used. One alternative are mutation tests.

Continue Reading β†’

Test doubles - mocks, stubs and the others

Mocks ? Spies ? These words seem to be clear for the most test-aware developers. They're related to common concept called test doubles.

Continue Reading β†’

Theories

Pure tests in programming are not a single way to check if the code is correct. Theories are another method, introduced already some time ago.

Continue Reading β†’

Garbage collection types

Automatic garbage collection removes the overhead of allocating and deallocating memory. Even if it's not a magic solution to all problems, it's helpful. And because there are different automatic GC types, it's important to know them.

Continue Reading β†’

Advanced tests with Cucumber

The possibility to configure Cucumber test cases with @CucuomberOptions annotation is not a single one advanced feature. In Cucumber we can also go further and, for example, read Date objects directly from cases descriptions or group similar tests together thanks to tags.

Continue Reading β†’

Configuring tests with @CucumberOptions

Cucumber is very popular framework to define BDD tests. Clear division helps to write them quickly and maintain easily. In additionally, it contains some of useful configurable options, such as output formatting or file sources definition.

Continue Reading β†’

Work stealing

Does it possible that stealing has a positive meaning ? Maybe in real life no, but in programming work stealing brings more positive than negative points.

Continue Reading β†’

Introduction to behaviour-driven development

When we are young, the pleasure of delivery features are so big that we ignore testing phase. The pleasure of writing tests comes with age when we can see that they help to maintain clean code. One of the most popular acronyms promoting tests is TDD (Test-Driven Development). However, it's not the single one because it has a complementary brother called BDD.

Continue Reading β†’

Fluent interfaces

Speaking some language fluently means that we speak without pauses needed to find appropriated words for example. In programming, fluency has almost the same meaning and we'll prove that through this article.

Continue Reading β†’

Some myths about integration testing

Well decomposed application's code is testable very easily through unit tests. However, unit tests don't guarantee that these code snippets mixed together will work correctly. For this kind of check we should use integration tests. Tests which nobody likes...

Continue Reading β†’

Prefer interface over implementation

Spring Framework is only one example of "programming to interface" rule implementation. Through this article we'll cover this topic in more detailed way.

Continue Reading β†’

Prefer compositon over inheritance

When we discover object-oriented programming after passing by functional programming, inheritance seems to be revolutionary technique. However, it also can be misused, usually in the case when it should be replaced by composition.

Continue Reading β†’

Mixed content security danger

Do you think that having website under https:// is a sufficent protection for the data transmission ? Yes and no because even the smallest mistake can compromise all security measures. One of these "smallests mistakes" is a browser warning, known as mixed content.

Continue Reading β†’

Character encoding

Some years ago, a big part of web developers were asking the question : How to make work our application on international environment ? Actually the encoding issues are less present and all thanks to popularization of Unicode Transformation Format, commonly known as UTF.

Continue Reading β†’

HTTP Strict Transport Security (HSTS)

Every programmer heard about HTTPS as a security layer for HTTP protocol. But HTTPS is not the only security purpose for the most popular web protocol. Another one, known as HSTS, exists too.

Continue Reading β†’