Ansible local_action privilege de-escalation or: how to wait for a reboot

I increasingly use Ansible not only for glorious tasks like setting up my various VMs I use for prototyping but also for mundane things like resetting my personal laptop every time I get a new one or break it (dedicated readers of this blog will know me to do that a lot [2],[3],[4]). Most of … Continue reading Ansible local_action privilege de-escalation or: how to wait for a reboot

End-to-end testing Java web applications with an embedded Tomcat

 In this instalment on assembly testing [1] I'll talk about how automated system tests run over my Java web applications. The set-up is rather cheap, not very labour-intensive and can incrementally evolve from a simple assembly test (aka smoke test) to a full-fledged system test. Since this post is rather concrete naming tools and frameworks, … Continue reading End-to-end testing Java web applications with an embedded Tomcat

SSLHandshakeException: unsupported certificate

When: loading client certificates from a custom keystore Reason: multiple certificates for the same domain but different purposes, e.g. one certificate handles email authentication, the other authenticates the user against a web server Solution: either fix the buggy code that selects the wrong certificate from the keystore or make sure only one certificate per domain … Continue reading SSLHandshakeException: unsupported certificate

Spring MVC REST controller says 406 when emails are part URL path

You've got this Spring @RestController and mapped a URL that contains an email as part of the URL path. You cunningly worked around the dot truncation issue [1] and you are ready to roll. And suddenly, on some URLs, Spring will return a 406 [2] which says that the browser requested a certain content type … Continue reading Spring MVC REST controller says 406 when emails are part URL path

Heisenbugs with angular.js and Internet Explorer 9 or: missing console.log

I'm developing a proof of concept web application based on angular.js for corporate users, which - as so often in my career - means that they are using Internet Explorer. Several users complained about sporadic failures which were really hard to pin down, but during debugging sessions boiled down to a simple observation: the errors … Continue reading Heisenbugs with angular.js and Internet Explorer 9 or: missing console.log

AngularJS, Internet Explorer 9 and watch error

While working on an enterprise project (of course...) I run into an error with Angular (1.3.13), Internet Explorer 9 and $watch-ing a scope when programming a directive:   TypeError: Object doesn't support property or method 'watch' I'll never find out what the reason is. The collective wisdom of Angular users claims that including JQuery solves … Continue reading AngularJS, Internet Explorer 9 and watch error

Fauxjsp: productive JSP development

Important note: This post is not being updated. For up-to-date information refer to the project repository: https://github.com/ggeorgovassilis/fauxjsp/ About JSP In this post I'll present a new open source project I'm currently working on, fauxjsp [1] which re-implements JSP in a way that is more robust and faster for developers. It is intended for development, where … Continue reading Fauxjsp: productive JSP development

Reactive programming for Java, revisited

Abstract Rewritten on 15 January 2015 In this post I'll talk about the problems callbacks introduce into the readability of asynchronous Java programs. I'll also discuss an implementation of method pointers for Java which aids the transformation of a callback-style program into a linear program flow, greatly increasing readability while still being a 100% asynchronous … Continue reading Reactive programming for Java, revisited

Running varnish as unprivileged user

Since I haven't found any documentation on the topic of running varnish as non-root, I proudly present: how to run varnish as non-root. A warning ahead: this will require fiddling with init scripts, so make sure to keep backups. Also, scripts will be overwritten with each package update. Changes to /etc/init.d/varnish Ulimit calls are not … Continue reading Running varnish as unprivileged user