Category Archives: Software Engineering

Is Spring RestTemplate Thread Safe

Is Spring RestTemplate Thread Safe? The only correct answer to this question is: No A quick look at the source (the link is tied to a specific version so the line number is always correct) on line 230 shows the … Continue reading

Posted in Software Engineering | Comments Off on Is Spring RestTemplate Thread Safe

iptables flush and ssh

Fun lesson from today: don’t blindly clear/flush your iptables. If you are remotely managing a system, then make sure you run this: sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT before you run … Continue reading

Posted in Software Engineering, Ubuntu | Comments Off on iptables flush and ssh

What is AngularJS – the key is client-side

After working with AngularJS for a couple of months now, I can finally express a concise answer to “What is AngularJS?” It is: MVC where the model is on the client side MVC where the view is a template based … Continue reading

Posted in Software Engineering | Comments Off on What is AngularJS – the key is client-side

Amazon SDK broken dependencies

If you have received this error message: java.lang.IllegalStateException: Unsupported cookie spec: default It is because Amazon made their SDK dependency look like this: +— com.amazonaws:aws-java-sdk | +— org.apache.httpcomponents:httpclient:[4.1, 5.0) -> 4.4-beta1 | | +— org.apache.httpcomponents:httpcore:4.4-beta1 i.e. they made an open-ended … Continue reading

Posted in Software Engineering | Comments Off on Amazon SDK broken dependencies

Use a DSA to implement your DSL (insipired by Cucumber)

This post was inspired by The Training Wheels Came Off by Aslak Helles√ły, author of The Cucumber Book. TL;DR – Use a Domain Specific (testing) API to implement your Domain Specific Language That article describes the motivation behind removing web_steps.rb … Continue reading

Posted in Software Engineering | Comments Off on Use a DSA to implement your DSL (insipired by Cucumber)

Computer Science Hard Things

There is a popular saying about Computer Science (see here and here): There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton There is a funny variation that makes it “There are only … Continue reading

Posted in Software Engineering | Comments Off on Computer Science Hard Things

Agile non Evolutionary Stable Strategy

Starting with a quotation I saw at a rest stop while on vacation: Dryland farming works best when in a wet year. This was on a placard explaining that Dryland farming had a string of successful years when it was … Continue reading

Posted in Software Engineering | Comments Off on Agile non Evolutionary Stable Strategy

Choose Your Path Wisely

This article was inspired by a strangely acting Gradle build script. (Unimportant details: it worked fine locally, and it worked in Jenkins the first time, but when I renamed the job, it mysteriously started failing with a compile error every … Continue reading

Posted in Software Engineering | Comments Off on Choose Your Path Wisely

Gradle with Local Archiva Publish

This shows the way to get gradle to use a local Archiva server to publish your project artifacts. IMPORTANT: You must configure your “guest” user in Archiva to have the correct permissions (roles) to publish to the Archiva server. To … Continue reading

Posted in Software Engineering | Comments Off on Gradle with Local Archiva Publish

Gradle with Local Archiva

This shows the way to get gradle to use a local Archiva server to resolve dependencies (where the Archiva server in turn resolves to maven central). (Side comment: documentation for gradle is sparse, incomplete and out-of-date – e.g. ‘mavenRepo’ shows … Continue reading

Posted in Software Engineering | Comments Off on Gradle with Local Archiva