Replace Evernote with Spidernote

Sunday 2014-03-02

Resistance is futile

In the past I have used Evernote extensively, it really helped me in my research for this blog and keeping track of meeting notes, todo lists and even making pictures of whiteboards at work searchable. As a product, there is no note taking app that can beat Evernote. But there is a little problem that has become a deal breaker for me, and that is basically the NSA and the way Americans, and particularly the American government seems to think about people’s privacy and online security.

Evernote is an American company, which sadly has to comply with whatever ridiculous request by the U.S. government to turn over data of innocent people all over the world (yes, even outside the U.S. border, I know, it’s amazing). This, combined with the fact that Evernote clearly can not use zero-knowledge encryption because of the services it provides, makes that all the data you and I put into Evernote are at NSA’s fingertips at all times. If you find that as scary as I do, and you have a Mac, there is a way to solve this. Read the rest of this entry »

From the Finder to the Shell (and back)

Friday 2013-12-20

A quick tip for OSX users out there who frequently need to open a Terminal window for the current location in the finder, or the other way around:

Go2Shell and Back

Install the free application from the App Store: Go2Shell. It will give you an icon on the toolbar of your Finder, and pressing it will open a Terminal window and automatically change it’s directory to match the Finder’s location.

The other way around is easier; you can already do that on any Mac. Simply type “open .” (that’s the word “open”, followed by a space and a period). This command will open a Finder window for the directory location your Terminal window is in.

Bonus tip: Also check the “open -t [filename]” command, it will open your system’s default text editor with the given file.

Anonimatron: Quick Start

Sunday 2013-11-03

Anonymous customerAfter reading my last blogpost on Anonimatron, you must have asked yourself “Great, but how do I actually use Anonimatron to de-personalize my database”? I tried my best to make basic Anonimatron configuration as self-explanatory as possible, just start it without any command line arguments and it will tell you.

Less adventurous or in a big hurry? This blogpost will show how simple it is to install and configure Anonimatron on an example MySQL database.

Read the rest of this entry »

Anonimatron: Overview

Thursday 2013-10-31

It's the LawIn every software project, there comes a time where a bug pops up, nobody knows how to reproduce it, and somebody says “I know, let’s test this against a copy of the production database”. Even with the best intentions, once production data leaves the production machine with all its safeguards it becomes really hard to do access control on that data.

Most of the time, it’s not even needed to have that data. Developers just need a data set which resembles the production scenario close enough. Some brave souls have mixed succes with data generators, but those generators usually are tedious to maintain and die a slow death under the pressure of the daily grind.

In some ambitious projects automated integration testcases are built on top of the data which was inserted by the data generators. As the generators die, so die the tests. If you recognize this pattern, Anonimatron might be the answer for you.

Read the rest of this entry »

Non-Java Binary Dependencies in Maven

Thursday 2013-07-18

binary-pillowSuppose you have a Java Server application, and some of the runtime binaries in that application are external to your application. Generated image files, compiled Silverlight components in your pages, or resource files which are managed by an external team.

Much like the jar files used by your application, these external binaries can be seen as dependencies, with versions. This blogpost assumes your project is built with Maven 2, because the real world isn’t always a greenfield project.

Because Maven is designed around jar file dependencies, and a lot of it’s internal decisions are based on file extensions, it looks like this problem can not be tackled with Maven. But there is a way to do this. It will decouple your sub-projects and make version and dependency management much better.

Read the rest of this entry »

BaseCamp Import problem [fixed]

Friday 2013-05-03

route.gdb not foundOn Mac OSX, when installing Garmin BaseCamp 4.1.2 from the Appstore, there is a chance that importing downloaded routes in gdb or gpx files from your local machine will not work. The error you’ll get is “[filename].gdb not found”, in a popup much like the one shown here. If you open the console app, you’ll see the following error in the logfile:

sandboxd[28092]: ([27931]) Garmin BaseCamp(27931) deny file-read-data /Users/rolf/Desktop

This means that the OSX Sandbox mechanism does not allow Garmin BaseCamp to read files in that folder. I have briefly searched documentation on how to grant BaseCamp the rights to read files there, but I couldn’t find anything that would work. I did find a way to work around this problem though: Garmin BaseCamp does have rights to read your Garmin device. So here we go:

  1. Temporarily copy the files you want to import in Garmin BaseCamp onto your device (or in my case: the extra SD card in the device).
  2. Start Garmin BaseCamp, and select “File” -> “Import…”.
  3. Browse to the Garmin SD card and select the gdb file to import. Voila. That will get it into BaseCamp.
  4. Delete the gdb file from the Garmin. We don’t need it anymore, the Garmin was just a place where BaseCamp could read the file.

From here on, everything should work as normal. This is just a workaround. If anybody finds out how to really fix this problem let me know.

Why you should not use SOAP Headers

Monday 2012-12-24


In the project I am working on right now we use apache XCF and Spring to provide a SOAP service to our customers. As part of the messages, there is a userid/password combo telling the application which user sent the request. I struggled with that today because I think that userid/password info should actually be in the SOAP Header, cleaning up my API, enable me to implement different authentication techniques in the future and generally be more “compliant” to the SOAP standard. Boy was I wrong.

Read the rest of this entry »