Distributed Websearch

When it comes to searching the web, the first thing that comes to mind is Google. Or Bing. Or Yahoo. Sure, it’s easy, fast, and sort of reliable. However, there are a few problems with these kinds of services.

First of all, there’s the filter bubble. These search engines (and social networks) will present results that are specifically tailored for you. On the one hand, this is a good thing, because you’ll probably find what you’re looking for faster. However, you’ll never find information that COULD be relevant, but is filtered out for you. Your world view is being limited by this filter bubble.

You can work around this by using “anonymous” search engines, such as DuckDuckGo or Startpage. These search engines don’t store your personal data, and therefore can not create a filter bubble for you. As for Startpage, that search engine will act as a proxy between you and Google. You will usually get high quality results to your search query.

Another problem is “The Right To Be Forgotten”. The European court ruled that Google needs to provide the option to delete certain search results from its index. When you’ve had problems, which have been resolved, you shouldn’t be judged on the basis of those past problems. However, once information is on the Internet, it’s very hard to remove. The toothpaste is out of the tube, the genie out of the bottle. You’ll never get it back in. Google provides links to this information, it does not provide the information itself. Removing the links is not the same as removing the information. We have seen the same misunderstanding in the case of The Pirate Bay.

YaCy

Since a couple of years, there is YaCy. YaCy is a distributed search engine, that ensures TRUE anonimity, and is impossible to take down. You need to install a piece of software on your computer, browse to the local webserver (probably http://localhost:8090/), and start searching. At this moment, there are 1.7 billion documents in the public network. In contrast, the web is estimated to contain 15 to 55 billion documents.

There are a couple of other interesting features in YaCy, such as creating a search engine for one specific topic, or a search engine for your local intranet. Give it a try.

The Pomodoro Technique

One of my favorite time management methods is the Pomodoro Technique. The method is basically as follows:

  1. Pick a task.
  2. Work on it for 25 minutes. This is called a Pomodoro.
  3. Take a 5 minute break. Do something totally unrelated to your work.
  4. Work for another Pomodoro, or 25 minutes. This can be on the same task, or a new one if the previous one is finished.
  5. After 4 Pomodoros, take a longer break of 15 to 30 minutes.

Because of the breaks, your mind gets just enough rest to stay focussed. Also, because you’re supposed to work on one task, and one task only during your Pomodoro, the quality of your work can go up.

Ofcourse, the technique is completely customizable. Do you think 25 minutes is too short (or too long)? Try 45 minutes (or 10 minutes). Do you need a long break sooner? Do it every 3 Pomodoros.

No I’ve made my own Pomodoro tracker. It’s written in Java 8, and it’s open source. You can find the source here . A runnable version can be found here.

This is still work in progress, and I mainly made it as a challenge to myself. If you like it, do whatever you want with it.

The pomodoro is running!
The pomodoro is running!

When the screen and the tray icon are red, a pomodoro is running. Right clicking the tray icon will bring up a menu.

Pomodoro break.
Pomodoro break.

When the screen and the tray icon are green, you are on a break.

Waiting for the next Pomodoro to be started.
Waiting for the next Pomodoro to be started.

When the screen and the tray icon are blue, the program is waiting.

Changing the settings
Changing the settings

The settings allow you to specify the location of the program, the times and the number of Pomodoros between long breaks.

JFreeChart

JFreeChart is an open source Java library for creating charts. The project started in February 2000, and is currently the most widely used Java charting library. It offers a large number of charts, examples of which can be found here.

To get started with JFreeChart in your maven project, add the following to your pom.xml

<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.17</version>
</dependency>

First, you need to create a Dataset to display in your chart. One of the most used Datasets by the library is the CategoryDataset, so let’s focus on that one.

DefaultCategoryDataset set = new DefaultCategoryDataset();
for (int i = 0; i < records.size(); i++){
Record record = records.get(i);
set.addValue(record.getCorrect(), // y-value
record.getStage(), // dataset
Integer.valueOf(i)); // x-value
}

The parameters for the addValue method are as follows:

  1. The actual value of this record
  2. The row key. When adding multiple sets to the same chart, so you can compare them, use different values for this parameter
  3. The column key, or the column at which this value will appear. Since this must implement the Comparable interface, it will be sorted.

Once you have the dataset, you can use it to create  the chart itself.

JFreeChart chart = ChartFactory
.createLineChart("Score progress over time", // title
"Iteration", // category axis label
"Score", // value axis label
set); // dataset

With this dataset, you can create a number of charts. In this case, a line chart will be created, but you can also create an area chart, a bar chart, a stacked area / bar chart, and a 3D line / bar chart.

The library provides components to display the chart on screen, and to write it to file. The latter option involves only a couple of lines of code.

File output = new File(WORK_DIR, "chart.png");
try {
ChartUtilities.saveChartAsJPEG(output, // file
chart, // chart
800, // width
600); // height
} catch (IOException e) {
e.printStackTrace();
}

And when everything is ok, you’ll end up with something like this:chart