Endocode proud to sponsor Free Software Foundation Europe

Endocode has recently become a sponsor of the Free Software Foundation Europe. We proudly do this because free/libre/open source software (FLOSS) is essential to us and the FSFE campaigns on our behalf (and yours too!) to defend and promote it.

We judge FLOSS essential for several reasons:

  • We know that FLOSS is critical for a society like ours, one that is dependent on information technology. In a software-powered world, ensuring that software is a common good for all (and not a secret in the hands of a few) means that people are empowered by technology and not restricted by it.
  • What’s more, we at Endocode all come from backgrounds in FLOSS. Each one of has for years been involved with various open source communities and have come together in a company that provides multiple services to numerous organisations – services built on the power of open source software. Without FLOSS, Endocode wouldn’t exist.
  • And that power translates into altogether more practical reasons for valuing FLOSS. We know that being able to examine and adapt software gives us the power to do more for our customers and ourselves. We know that FLOSS helps us to reduce costs and increase quality. We see using open source software as the superior way to build large, complex and robust systems.

The FSFE fights many campaigns, such as promoting awareness among the public, pushing for FLOSS and open standards in the public sector, and defending us against menaces like software patents.

Endocode has become a silver sponsor of the FSFE. In so doing, we recognise their contribution and join the many other individuals and organisations (like HP, Intel  and LibreOffice) who want to see the FSFE continue doing its great work.




Distributed Java Programming – A new training topic

I was recently in Hamburg once again to deliver another IT training. This time around the topic was Java, a language I’ve long been familiar with.

But it wasn’t just plain old Java; the participants were already well-versed in that. Instead, they wanted to learn how to build distributed systems using Java. Not only that, but they had a few very specific interests, which you see in the list below.

Distributed systems is a challenging topic to teach, especially because it encompasses so much stuff and I had only two days to cover the requested material. Here’s what I managed to include:

Principles of networked and distributed systems

  • Definitions
  • Transparency
  • Benefits and challenges
  • Case study: The web

Distributed architecture and design patterns

  • Layer paradigm
  • Distributed operating systems
  • Interprocess communication
  • Remote invocation
  • Models (client/server, peer-to-peerm multi-server, proxy, mobile variants, thin clients)
  • Distributed design patterns


  • Thread vs. processes
  • Benefits and costs
  • Server threading architectures
  • Threads in Java

Lower-level concurrency mechanisms

  • Thread interference
  • Synchronising

Higher-level concurrency mechanisms

  • Locks
  • Executor, ExecutorService, ThreadPools
  • Futures
  • Concurrent collections


  • Addressing with sockets
  • UDP
  • TCP


  • Input and output streams
  • Stream readers and writers
  • Streaming with sockets
  • Streaming among multiple threads
  • Multicast


  • Serializable interface
  • Serialisation with references
  • Serialisation with inheritence
  • Best practices

Remote Method Invocation

  • Using the RMI registry
  • Remote interface
  • Creating a server
  • Creating a client

Case study: CORBA

Distributed object persistence

  • Java Persistence API
  • Hadoop
  • Distributed databases
  • Special topic: Distributed cache using memcached
  • Best practices for distributed caching

Brown Dogs and Barbers – “Could not have come at a better time, nor be better pitched”

The British Computer Society (BCS), the professional body for IT workers in the UK, was kind enough to publish a review of my book Brown Dogs and Barbers recently and gave it a roaringly good verdict – 9 out of 10. Here is a link to the review.

Of course, it’s very nice for someone to pay your work compliments, like being called “eloquent” and having an “easy, engaging style”. But there are other things in the review which I’m particularly pleased to read because they show that I’m achieving my goals for the book.

For instance, the reviewer agrees with me that the book is “aimed squarely at the intelligent layperson, it requires no prior expertise and sits within the genre of popular science.” I’m glad that I have managed to present these ideas in an understandable way that requires no background knowledge.

Furthermore, the reviewer recommends the book to target audiences that I also intended to shoot for: “IT professionals, teachers, parents and their teenage children will all find it an invaluable introduction to the key concepts and their practical application.” This is especially nice to read as I now know that the reviewer is in the field of education, working at a British school and active in the Computing at School BCS working group.

In the reviewer’s opinion (and mine too) Brown Dogs and Barbers is also a book that’s relevant to people already working in IT, stating: “If you have no background in computer science, this book will be a revelation. And if you think you know what computer science is about, this book will invoke connections you may never have considered before.”

If you’d like to read for yourself what prompted this review, you can order my book online at Smashwords or Amazon, where there are also samples to try before you buy.

Are you prepared for your child’s computing education?

An overhaul of computing education is looming in schools throughout the UK.

In recent years – but at least as far back as when I was a pupil in the 1990s – education in computing and computer science within British schools had a rather narrow focus. Children learned mainly about operating computers: using word processors to write documents, whipping up spreadsheets, (maybe) building simple databases and proficiency in using an operating system (any operating system, so long as it’s Microsoft Windows).

There’s nothing wrong with this. It’s a fine goal to teach someone how to make good use of everyday applications. However, it must be admitted that this narrow focus merely teaches children how to be passive users of a computer. It gives them no grounding in the fundamentals of computing; they learn nothing about how a computer actually works.

But the upcoming overhaul of computing education will change that. Computing education will in the future focus on things like what an algorithm actually is; how to program a computer; how a program relates to an algorithm; how to detect errors in programs; how to reason about source code and find errors, and much more. It will be like physics lessons going from focusing on how to drive a car to learning the principles of the internal combustion engine.

And these changes won’t only affect college-level, or secondary school-level. It will begin from the first year of primary school.

Parents naturally want to support their children’s learning at home. With many subjects, you can do this. Many of today’s subjects are the same as when you were at school (Maths, Science, English, History etc.), so discussing their contents and helping with homework are doable. But chances are you were taught nothing about computer science at school, so how could you support your child in this subject?

One way to get a feeling is to look at the proposed syllabus. Schools in England and Wales divide all schooling into several blocks called key stages.  Each key stage covers several years of a child’s education.

Key stages 1 – 3 cover all of primary and most of secondary education. Children educated within these stages are aged between 5 and 14 years. Here’s a link to the UK Government’s breakdown of plans for teaching computing in England, but I’ve picked out some of the key parts here:

Key stage 1 (aged 5 – 7 years)

At this stage, some things your child will learn include:

  • What an algorithm is
  • What a program is and how it relates to an algorithm
  • What a digital device is
  • How to perform simple programming

Key stage 2 (aged 7 – 11 years)

  • Understand the importance of sequence, selection and repetition in algorithms
  • Understand computer networks
  • Use logical reasoning
  • Understand and detect errors in programs

Key stage 3 (aged 11 – 14 years)

  • Use and evaluate computational abstractions
  • Understand key algorithms (e.g. for sorting and searching)
  • Understand binary numbers and their use in computing
  • Understand how instructions and data are stored and executed in a computer

Some may look at that list and find that most of the items mean nothing to them. That might be discouraging if you’re a parent with a child in school. Nevertheless, it might prompt you to learn about the subject for yourself so you can share in what your son or daughter is picking up in computing lessons, but you may be unsure where to begin.

That’s one of the reasons I wrote my recently released book about computer science, Brown Dogs and Barbers. It has several intended audiences, but one of the primary ones is those people with no background in computing whatsoever who would like to learn about its fundamentals. That’s why it’s an easy-to-read book with a fun, casual style and touch of humour mixed in.

As an indicator of how helpful Brown Dogs and Barbers should be, compare the list of topics covered in the book (below) with the school syllabus. Topics that appear in both the book and the syllabus are emphasised:

  • Graph Theory
  • Set Theory
  • Sequence, selection and iteration
  • Algorithms
  • Theory of Computation
  • Turing Machine
  • Halting Problem
  • Complexity Theory
  • Binary and Hexadecimal
  • Binary Architecture
  • Von Neumann Architecture
  • Machine Coding and Assembly Language
  • High-Level Programming Languages
  • Searching and Sorting
  • Data Structures
  • Multi-tasking
  • Scheduling
  • Concurrency
  • Operating Systems
  • Networking
  • Security

I think that my book is ideal if you have school-age children and want to brush up on computer science so that you can prepare yourself to help them get to grips with this sometimes challenging but nevertheless rewarding and important subject.

It’s available to order at Smashwords or Amazon, where there are also samples to try before you buy.

Brown Dogs and Barbers – Available to buy!

Brown Dogs and Barbers, the computer science book for everyone, is now available to buy online. There’s even a new landing page where you can find free excerpts and links to online shops: browndogsandbarbers.com.

Right now you can get it from several distribution channels, including Amazon (find it your nearest Amazon outlet, like the US, Canada, UK or Germany) and Smashwords. Other retailers, like iTunes, are also currently preparing it for sale in their webstores. More news on those as I receive word.