Home » Author Archives: Edmund Kirwan

Author Archives: Edmund Kirwan

Edmund Kirwan
Edmund is a programmer with a telecoms company in Stockholm where he is currently working on a large-scale network simulator. In his spare time he thinks far too much about program-structure.

Interface over-segregation

software-development-2-logo

Programmers easily spot bloated interfaces, and usually carry with them an assortment of, “Knives and stabbing weapons,” for just such encounters. A previous post presented an interface-efficiency equation and demonstrated an algorithm – fueled by this equation – to guide this butchery. A trickier problem to spot, however, is when the members of a family of interfaces have been cut ...

Read More »

Bugs and cracks

software-development-2-logo

Compile-time and run-time villains. Consider the software system on which you currently work. Would you release that system with 31,197 bugs? Not potential bugs, mind; actual identified bugs. If you answer yes to this then you can stop reading now. This post is not for you. Taking a ridiculously simplistic view of software, we can split software development into three ...

Read More »

Structural simplicity

software-development-2-logo

You’ve all seen Rich Hickey’s excellent Simple-made-easy presentation, in which Mr Hickey trawls the dictionary to remind us that, “Simple,” doesn’t mean ease-of-use or intellectually un-challenging but, “Not complex or compound.” The opposite of simple is not, “Hard,” but, “Composition.” If a piece of software is simple then it is not composed of other pieces of software. We all know, ...

Read More »

The structure of Apache Lucene

apache-lucene-logo

The inestimably noble Apache Software Foundation produces many of the blockbuster products (Ant, CouchDB, Hadoop, JMeter, Maven, OpenOffice, Subversion, etc.) that help build our digital universe. One perhaps less well-known gem is Lucene, which, ” … provides Java-based indexing and search technology, as well as spellchecking, hit highlighting and advanced analysis/tokenization capabilities.” Despite its shying from headlines, Lucene forms a ...

Read More »

Software engineering as … engineering.

software-development-2-logo

How do you compare the structure of two different programs? You could fire up your IDE and dive in. A week’s snorkeling will no doubt produce a valid conclusion. If, however, you have only ten seconds to decide then you need some other tool. Engineers facing similar problems in other fields regularly look to the cumulative distribution function (CDF) for ...

Read More »

Breaking Bad … interfaces.

software-development-2-logo

A question of efficiency. So, you start working on some code and a monstrous interface snarls back at you, picking from its teeth pieces of the previous programmer who dared approach. It has twenty-five methods, and you just need to add one more teeny-weeny method to it. Should you clench and add it, or should you listen to that voice ...

Read More »

Visualizing engineering fields

software-development-2-logo

Civil engineering.                         Mechanical engineering.       Electronic engineering.       Software engineering.       Summary. Seriously, software engineering? Photo credit attribution. Image Clemuel Ricketts House drawing 1 courtesy of wikimedia. Image Bequet-Ribault House Transverse Section with Details courtesy of wikimedia. Image Grand Central Terminal courtesy ...

Read More »

Bad program structure: the complectation

software-development-2-logo

Degrees of badness Many programmers consider source code dependencies either circular or non-circular, with circular dependencies representing The Greatest Imaginable Evil (which of course they do) and non-circular dependencies representing the acceptable if drab face of source code structure. This second representation is not quite true. The digital gods do not create all non-circular dependencies equal. Figure 1 shows six ...

Read More »

The most important factor in software decay

software-development-2-logo

Do you have big balls of mud? Here’s an experiment to amaze your friends. You probably listen to music on your phone via some sort of headset. The headset we shall consider here consists of two earbuds (in-ear pieces, rather than head-phones which cover the ears) connected via wires to a jack which plugs into the phone itself. Disconnect your ...

Read More »

Who’s afraid of the big bad class?

software-development-2-logo

Ferocious, guzzling black holes of the software universe, super-massive classes result from run-away positive feedback: the class grows so huge that programmers fear any attempt at refactoring and instead simply dump more functionality into it, thereby making it even more likely that the next programmer will also pale before the terrifying refactoring and jettison yet more functionality into the maw. ...

Read More »
Want to take your Java Skills to the next level?
Grab our programming books for FREE!
  • Save time by leveraging our field-tested solutions to common problems.
  • The books cover a wide range of topics, from JPA and JUnit, to JMeter and Android.
  • Each book comes as a standalone guide (with source code provided), so that you use it as reference.
Last Step ...

Where should we send the free eBooks?

Good Work!
To download the books, please verify your email address by following the instructions found on the email we just sent you.