Not even network neutrality in the Netherlands

It has begun; the first step to network censorship in the Netherlands. The judge closed the case of Brein (anti-piracy organisation) versus Ziggo and Xs4all (two large internet providers) where Ziggo and Xs4all has to block all IP addresses of The Pirate Bay for their abonnees. I find this a disaster for the network neutrality in the Netherlands, even though it’s only one website. Now it’s one website, but in the future more will follow, count my words.

What I’m flabbergasted about, is the motivation of the judge. The proof Brein delivered in court were three samples where they showed that a large group of the abonnees of Ziggo and Xs4all are using The Pirate Bay for downloading copyright material, but what’s the proof? For sure, these people are using torrents, but how do they know these torrents come from The Pirate Bay? The tracker of The Pirate Bay has been offline for one or two years, but if you look closely in the torrent files, the tracker link is still there. Brein thinks this is part of any evidence to proof they’re right, but it isn’t. This tracker link is also in torrent files downloaded from other websites who make torrent files available. That’s the weird part.

A questionable part that follows, is where lies the responsibility? Are the ISP’s or the users them selves responsible for not sharing copyright material? It might be easy to say the ISP’s are responsible for this matter, because they clearly provide the access to these sort of websites. Blocking the access and the problem is gone, right? Not the slightest, because the problem still remains. The users them selves still share the material, but this time to other websites that are still available. You can see this is a cat-and-mouse game who will be the strongest. One website is down, others pop up again that have the same purpose: distributing information. If Brein was smart enough they would see that the users are the main problem and thus they should take care of these users.

But hear me talking about ‘taking care of’ to make the internet better. What is making the internet better? In other countries it already happened, e.g. the Three Strike law in France. It’s not because I’m fed up with Brein because they took away a resource for downloading, but because they took away a part of the internet. The fundamental idea of the internet has been disappeared ever since the personal computer joined our lives because we copied our lives to the internet, so also our common values. This means that things like copyright and ‘stealing’ made his appearance on the internet since the majority of the people started using the internet. Now that Brein demands Ziggo and Xs4all blocks the IP addresses, people simply can’t go to these  websites anymore and thus the spirit of the internet is gone.

What’s next? I’ve read Xs4all already made an appeal to the higher court, but what will Ziggo do? I hope they aleso will make an appeal, because this action of Brein is not acceptable. Therefore we have to wait until the higher court has given it’s sentence. By the way, Ziggo and Xs4all still have to block the IP addresses even though they still can make an appeal to the higher court.

A funny fact is that there are ways of circumventing the IP address blockades by ISP’s. Using the Tor project, a VPN service or a proxy you can still access the website even though the ISP has blocked the website. This is another reason why this whole process agains Ziggo and Xs4all is wasting time. You make it harder for the average internet user to access these kind of websites for sure, but the intention to share is still there. Not at the website side, but at the users side.

I hope this makes you think about the whole concept ‘network neutrality’. The countries of which I would have thought it wouldn’t budge for the anti-piracy actions of Brein and hold tight onto the network neutrality, the Netherlands was definitely one of. But after today I begin to doubt if this is still true…


Preview: Windows 8

Windows has been around for quite some time now. This operating system gone through a lot of changes when you look at the GUI (Graphical User Interface). The ’95 build of Windows was a big leap forward, since it came with a revamp of the GUI used in Windows 3.0 and 3.1. New features and new looks made it into a successful operating system. They kept this GUI formula for a long time, because although the looks differ, the basic concept stayed the same: A desktop screen with icons, a task-bar at the bottom and screens popping up when a new program launched.

But it now has a totally different approach when it comes to GUI’s. At the BUILD conference, which started September 13th 2011, Microsoft showed off its new operating system: Windows 8. Windows 8 features a completely new GUI, named Metro. If you’re familiar with the Windows Phone 7, then you already know how Metro looks like. Every program is a tile and these tiles are shown on-screen. Once you click on it, it launches an application. This same principle of interaction has been implemented on the desktop version.

During the BUILD conference, Microsoft shared a Developer Preview version of Windows 8 with the public. This way people can already test their new Metro GUI. Because I’ve used every single Windows version since version ’98, I also wanted to try this new operating system.

Continue reading


Find the polar bear

The internet is full of entertaining games, such as this gem: Find the polar bear. The goal is to traverse through the website in the quest to find the polar bear (obvious). Most of them are based on clicking some special areas in a picture or by simply checking the source code, also not to forget simply logical thinking. This website was pretty easy to finish and can be done within a good 20 minutes (if it’s your first time).

Continue reading


Review: Age of Empires Online

It’s been out for two days now. Officially launched at August 16th and before the actual launch date there was a beta period, but I never took part of that beta period though. Owning Age of Empires I, II, III and Age of Mythology, I could say I’m a huge fan of the Age of Empires/Mythology. That’s the reason why I also wanted to try Age of Empires Online. One seemingly cool thing is that this game is free-to-play. Once the game was downloaded and ready to launch I had to choose what civilisation I wanted to be: Greek or Egyptian. Greek would be the obvious choice, so the journey starts with the Greek civilisation.

Continue reading


Passwords everywhere

Password Strength

So last week this comic was published by XKCD. It states that a simple sentence creates a hard to guess password. Of course this theory of memorization has been verified by cognitive research [1]. It showed that people could easily memorize 7 plus/minus 2 blocks.

Now, since you have a difficult password at your disposal, why not create such a hard to guess password for each website. Uniqueness is vital when you are operating on the internet, right? Assuming you are pretty active on social networks you would normally have an account on: Facebook, Twitter, Hyves (Dutch people), MySpace, Tumblr, Reddit, Google, Yahoo / Hotmail, WordPress and some kind of news website. That’s a total of 10 websites, but then I didn’t take in account you would like to buy something online or have a specific website which requires an account to comment. All these websites require an account and that account is secured with a password. In total you have to memorize dozens of passwords every day. Remember the research? Right.

Continue reading


Unicode headache

Today I came along a very curious spoofing technique which involves Unicode. It’s called RTLO (0x202e) spoofing.

First some clarifications about the terminology:

  1. Unicode: This is a universal standard to encode text. This is done by codes in hexadecimal form, something like: 0×0031 which stands for the digit number 1.
  2. RTLO: This is a Unicode character encoded with 0x202e. This flips the read direction from right to left. Handy for arabic languages. For example: [RTLO] abc renders like cba.
  3. Spoofing: Spoofing means you fake something. For instance, you can spoof your name. You pretend you are somebody else.

Now what is this RTLO spoofing? Continue reading


Web development: The new way

When developing a web application, you want to quickly deploy a standard frame; the HTML. The core mechanics behind the website should have the major attention, yet HTML has a lot of syntax, so it takes time to create a nice looking layout.

Zen Coding

There are multiple ways to create a nice looking layout in to-time.The most known way is Zen Coding. In a one-liner you can generate a huge amount of HTML:

div#page>div.logo+ul#navigation>li*5>a

which expands into:

<div id="page">
        <div class="logo"></div>
        <ul id="navigation">
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
        </ul>
</div>

This way you can create a huge HTML code in a few keystrokes. In fact you reduce the number of keystrokes from 199 to 38 characters, which is -80.9%.

Yet, once it has been expanded, it is there. So the one-liner has been transformed. This way you still work with pure HTML in the end. What if you could have a new markup language? Something similar to HTML, but cleaner, nicer?

Continue reading


Word search solver: Revisited Part 1

I gave the word search solver some thought. It’s far from efficient. Although a lightning fast approach would be using nodes, I wanted to first try something else. A new attempt from my side would be using some kind of indexing of the puzzle.

The nature of the approach

When you take a glance at a word you need to search for, e.g. ‘mexicancocktail’, what approach would you take? Starting with the ‘m’, and then look if in the surrounding places has an ‘e’? That would be inefficient, since this particular puzzle has 25 letters ‘m’, unlike for example the 8 letters ‘x’! Also, would you start with looking for the ‘m’ every time at the top left corner or would you have a mental map of the places where the most m’s are?

These simple questions give great insight to a more efficient approach. I don’t claim it to be ‘the best’ approach, only a more efficient one.

Continue reading


Sleep sort?

As if we don’t have enough sorting algorithms yet! Someone over at 4chan, the programming section, tried to invent a new sorting algorithm, but it’s not what you would say… efficient.

In bash:

#!/bin/bash
function f()
{
    sleep "$1"
    echo "$1"
}
while [ -n "$1" ]
do
    f "$1" & 
    shift
done
wait

What it does, is creating a thread for each number and let it sleep in seconds as long as the number. After the thread is done sleeping, it echos the number, resulting in a sorted list of number. In fact it’s nothing more than a slightly altered Bogosort algorithm. A GitHub repository with a Java version is also available.

Even though it’s a cute sorting algorithm, it has more cons than pros:

  • Unpredictable: When you have a small set of numbers, there is also a small set of threads. Threads behave quite predictable when there aren’t with many, but when they are with many, performance drops are inevitable and results can be unpredictable.
  • Computation time: The computation time in seconds is as big as the biggest  number in the set of numbers. Even my example in the GitHub repository takes 3 seconds to sort {5, 3, 7, 2, 1, 1, 3, 4}, only because the thread sleeps for number*500 milliseconds. The lower you go with the sleep time, the worst the results get. If you have a big number, say 2180, in your set of number, your thread sleeps for 1090 seconds or 18 minutes.
  • CPU intensive: This algorithm is quite intensive for your CPU, compared to other algorithms.

In general this algorithm is just for lulz. However, this “algorithm” is for the really lazy programmers among us, almost no notion of sorting data sets is required. But since it has too many cons, its simply not usable.


Edge detection: The beginning

In computer vision there is one big thing that is really important, and that is edge detection. We humans have a brain which is able to extract the edges in our vision. Even the most subtle changes in gradients around us are processed and detected by our brain. I won’t cover how it works in our brain, but what I do want to start with is edge detection in computer vision. In this post I will discuss the basic background information about edge detection in general.

A recent paper about a new algorithm for edge detection motivated me to do some basic research about how those filters in Photoshop or any other drawing program apply edge detection, which could result in a picture such as shown on the right side. There are some well-known algorithms to get this result. Some of them are Prewitt operator and the Canny edge detection algorithm.

Compression

Ever since the internet encouraged people to share media with each other, mankind has invented all kinds of compression methods to shrink the size of the media. When the size shrinks, the quality decreases too. The decreasing quality gives artifacts which are just small enough to blend in. Jpeg is a good example of a format with good compression and still decent quality. But decent quality can be fatal to edge detection algorithms as I will discuss later on.

Prewitt operator

A picture is represented by a large array of pixels and each pixel has its red, green and blue value. But how can you harness a vast amount of pixels which is nothing more than dots. By using a gradient across an area of the picture you get a line of RGB values along the gradient. If you look at three pixels at the same time you would say that an edge occurs when the outer two differ a lot, and exceed a given threshold, the middle would represent the edge. You could use a matrix representation to do the math, but since you are looking at pixels and there is almost 100% chance of noise in the picture, this method will give bad results.

Canny edge detection algorithm

A better way would be an algorithm which can adapt its threshold and be able to distinguish real content from compression artifacts. The algorithm contains a few steps before edge detection can start:

  1. Smooth the picture: Using a Gaussian filter the picture is smoothed, so that sharp artifacts smooth out and merge into the content.
  2. Finding the gradient: The smoothed picture is being fed to a function which is the derivative of the Gaussian filter. This function calculates the gradient along the x- and y-axis.
  3. Non-maximum suppression: By smoothing the picture the localization of the true edge is harder since pixels are smeared across all directions to merge them together. So next you would apply the non-maximum suppression. Along the smooth, thick line you determine the local maximum (the pixel-in-the-middle). When this is done for the whole gradient, you get a thinner line which approximates the correct position of the true edge.
  4. Hysteresis: This step is a new threshold to remove falsely detected edges from the result. In this stage you would have two thresholds h and l. Values above h are definitely edges and by following the edge surrounding values which are lower, than h can still be an edge, as long as they are higher than l. Why you would do this is to suppress further noise and still preserve weak, but important edges.

During the filtering process the value σ is needed. σ Is the standard deviation of the Gaussian filter and the h and l thresholds. The choice of σ depends on the desired behavior of the edge detection.


As you can see a large σ detects larger edges and a small σ also detects fine features.

Some further reading:

Whether I ever will write edge detection in Java or a different language is hard to say. The plan was to do some basic edge detection, but I guess I’ll have to read some more in-depth material about decent edge detection. Until next time!


Follow

Get every new post delivered to your Inbox.

Join 33 other followers