Author Archives: Graham

About Graham

I make it faster and easier for you to create high-quality code.

Java By Contract: a Worked Example

Java by Contract is an implementation of Design by Contract, as promoted by Bertrand Meyer and the Eiffel Software company, for the Java programming language. The contract is specified using standard Java methods and annotations, making it a more reliable … Continue reading

Posted in Java | Leave a comment

Updates to JavaByContract

Some improvements to JavaByContract, the design-by-contract tool for Java: Preconditions, Postconditions and Invariants now appear in the Javadoc for types that use JavaByContract. While this is only a small source change, it’s a huge usability improvement, as programmers using your … Continue reading

Posted in Java | Leave a comment

Impossibility and Uncertainty in AI

About this paper Impossibility and Uncertainty Theorems in AI Value Alignment (or why your AGI should not have a utility function), Peter Eckersley. Submitted to the ArXiV on December 31, 2018. Notes Ethical considerations in artificial intelligence applications have arguably … Continue reading

Posted in academia, AI | Leave a comment

The App that Wasn’t (Yet)

One of the early goals written into the mission statement of the Labrary was an eponymous app for organising research notes. I’ve used Mekentosj Springer Readcube Papers for years, and encountered Mendeley and others, and found that they were all … Continue reading

Posted in architecture of sorts, design | Leave a comment

Research Watch, and Java by Contract

I introduced Java by Contract, a tool for building design-by-contract style invariants, preconditions and postconditions in Java using annotations. It’s MIT licensed, contributions are welcome, and I hope this helps lots of people to introduce stronger correctness checking into your … Continue reading

Posted in academia, Java, OOP | Leave a comment

Teaching Quality Object-Oriented Programming

About this paper Teaching Quality OOP by Yishai A. Feldman, published March 2005 (see the link for full citation). Notes One of the points made in my book Object-Oriented Programming the Easy Way is that objects should be specified by … Continue reading

Posted in academia | Leave a comment

Cleaner Code

Readers of OOP the easy way will be familiar with the distinction between object-oriented programming and procedural programming. You will have read, in that book, about how what we claim is OOP in the sentence “OOP has failed” is actually … Continue reading

Posted in OOP | Tagged | Leave a comment

Product teams: our products are not our products

Woah, too many products. Let me explain. No, it will take too long, let me summarise. Sometimes, people running software organisations call their teams “product teams”, and organise them around particular “products”. I do not believe that this is a … Continue reading

Posted in architecture of sorts, Business | Leave a comment

Mapping software engineering tools

Despite the theory that everything can be done in software (and of course, anything that can’t be done could in principle be approximated using numerical methods, or fudged using machine learning), software engineering itself, the business of writing software, seems … Continue reading

Posted in architecture of sorts, tool-support | Leave a comment

More speed, lower velocity

I frequently meet software teams who describe themselves as “high velocity”, they even have graphs coming from Jira to prove it, and yet their ability to ship great software, to delight their customers, or even to attract their customers, doesn’t … Continue reading

Posted in Business, performance, process, software-engineering | 4 Comments