Deprecate return values?

Return value handling in imperative languages is really awkward.

In many you cannot have multiple return values. I propose a syntax for making in and out parameter handling symmetric:

(type1 in1, type2 in2) myFunction (type3 out1, type4 out2)
in1 in2 + =: out1;

whereas in function composition, all out parameters form the input parameters for the next function:

( ( in1, in2 )myFunction )myFunction2 =: res;

Read more!


Control codes and Caret Notation

For some time I have been confronted with ^C and the like, well, right now I was wondering and finally looked it up. It is officially called the Caret Notation.

Furthermore you can use

cat -v [FILE]
to make cat output Control Codes in Caret Notation for a bit of readability of binary files.

Wikipedia has some more articles on the topic: C0 and C1 control codes and Control code.

For instance, did you know that Control subtracts 64 from the parameter character (uppercase) ASCII value, which for ^C (C=67) results in End of text(=3).
Read more!


La música electrónica

Been there (Annual Pressure Festival), heard that (Klaudia Gawlas). She does techno the hard way, had a great time listening. Also take a look at the videos for a sound test!

There is also a 'Close your eyes (CYE)' mix by her travelling around, find it or request per mail address from the hompage. Thats a great one. Looking forward to seeing her again, in Linz or next Pressure. Give her a try.
Read more!


Road: 730, Terror: 0

Terrorism is currently seen as an imminent threat to Europe and thus also Austria. The possibility of terrorist attacks is widely used in political context to push privacy and civil right reductions.

I thought about that argument and looked up traffic deaths. According to the official source, the Statistik Austria, in 2006 (latest available numbers) 730 people died due to traffic accidents. Compared to 0 terrorism deaths (I could not find any statistics, but am quite sure, I wouldn't have missed a terror attack).

So I claim, that there doesn't exist any measure on terrorism attacks, thus the effectiveness of counter-measures against such cannot be proved.

Okay, I do not want to say that there does not exist any threat. But I first do want to say, that there are other more important problems and threats to life and that terrorism threats are gaining too much attention and people argue as if we would face daily bombing attacks, worse than in Baghdad.

Second, I think terrorism has to be fought on a very different level, a much earlier stage than surveillance of suspects. One would have to avoid that people even want to make terrorist attacks, so prevent their grief and anger.

Let me quote the Verfassungsschutzbericht 2005 - they watch threats to the constitution, terrorism and such - on the 2004 Madrid bomb attacks:

Begründet wurde der Anschlag mit der Stationierung spanischer Truppen im Irak.

So what are the reasons for terrorist attacks? You just read one. How to dissolve them? I propose:
  • Not fighting causeless prevention wars

  • Help those in need in war-troubled reasons - eg: sending aid to Iraq, if necessary with some publicity

  • Repeatedly and officially (by government) opposing and criticizing unjust behavior such as the US attack on Iraq and the situation in Guantanamo

  • Sending objective watchdogs to war regions and announce their reports

  • Work closely with immigrants and others that may have emotional bindings to conflicts in the world and provide an open forum for exchange how to improve the situation

This behavior would be much more effective than sending troops supporting illegal wars. If somebody would invade and occupy Austria on such a reasoning basis like the US did, I would fight them and their supporters too.
Read more!


Musikindustrie bestiehlt Österreicher um 15 Millionen Euro

Dem Bericht der Austro Mechana Verwertungsgesellschaft wurden 2006 erfolgreich 15 Millionen Euro von den österreichischen Bürgern im Rahmen der Leerkassettenvergütung (auf CDs, MP3 Player, DVDs, uvm) geraubt.
Read more!


Protesting data retention wasn't in vain

Seems like the demonstrations against data retention in Germany were not in vain. They seem to have convinced German Justice minister Brigitte Zypries.

Heise runs a story about her on the police congress backing her arguments against the Transparency of the citizen with the recent Germany-wide demonstrations:

Gegen diese ihrer Ansicht nach ausufernde Sammlerei verwahrte sich Justizministerin Brigitte Zypries (SPD). Unter Verweis auf die Proteste von über 10.000 deutschen Demonstranten, die gegen die Vorratsdatenspeicherung auf die Straße gegangen sind, erklärte Zypries, eine Fluggastdatenbank mit einer Eingriffstiefe von 13 Jahren sei der falsche Weg.
Thanks to all protesters, organizers and to Misses Zypries for trying to uphold the constitutional right for privacy.
Read more!

Landtagswahl Hessen 2008

"Dafür [Ann: dass die Wahl manipuliert wurde] gibt es keinerlei Anhaltspunkte, da das vorläufige Wahlergebnis in der Stadt Niedernhausen dem Hessentrend entspricht." Nur wenn das anders wäre, könnte man überhaupt über eine Neuwahl in diesem Wahlkreis nachdenken.
(aus Spiegel Online im Interview im Landeswahlleiter Wolfgang Hannappel)

Interessant, wenn ich das richtig lese sind also nur jene Wahlergebnisse gefälscht, welche nicht im Trend liegen? Wieso wählt man dann eigentlich noch? Man könnte gleich die Statistiker um das Ergebnis befragen und so viel Geld und Zeit sparen.
Read more!


Something like democracy (€50 per vote)

The CCC tried to independently observe elections in Hesse, Germany. Well it turned out, not everybody likes to be observed - so they have something to hide, don't they?

Read reports, especially about the probably manipulated elections in Obertshausen, where it seems they have something to hide. Something big enough to justify turning away independent observers based on constructed reasoning and stalk them to make sure that they are gone.
Read more!


Deprecate Arrays?

Most (imperative) languages got some built-in support for array types and I was asking myself, if it wouldn't help us all to remove the special type from the language and instead treat them what they really are, to help us recognize them as that and get a better understanding of collections types?

What I want to say, would it make sense to replace

Map< Integer,String >
For clarity, the accessing of an array through the indexes could be viewed as a Dictionary=Map type usage, mapping an Integer to some other Type. To actively counter first no votes, you can also specify the initial size in the constructor type and I think optimization algorithms could deduce the original situation from the Map.

Of course some Generics/Template implementations right now are kind of verbose, but let's leave that detail out and assume some type inference.
Read more!


Java Definition order matters

Ever encountered a illegal forward reference in Java? Thought that those days were gone and that compilers finally managed to get the initialization order right. Well, turns out not in all cases.

The Java Language Specification tackles that topic in section It basically says the declaration has to textually appear before another if it's used in a member initialization expression.

The static initializer also has this restriction. Well perhaps thats a reason, why many Java programmers declare Variables at the beginning of their class. I still think thats not the best approach, as the public interface - which should give the best overview of the class - should appear first (textually) to ease comprehension.
Read more!


24C3 Proceedings

Just came across the 24C3 proceedings.
Read more!




Open Source Encryption extension for (over) IM Protocols with plugin for pidgin!

aptitude show pidgin-otr
Enjoy the privacy! If you hadn't known yet, at least ICQ is transmitting messages in plain text or the Internet and the local network, so anyone can listen in or probably even inject messages without you knowing it.

OTR seems to solve this problem.
Read more!

Quicksort in C#

Amazingly short in code and even intuitive if you are a bit into functional programming:

Func< intlist, intlist > Sort = 
xs =>
() => xs,
(head,tail) => (Sort(tail.Where(x => x < head)))
(Sort(tail.Where(x => x >= head)))
Taken from this presentation, also find more interesting features from C# 3.0 there.

Now argue with me, that some languages are not clunky compared to this!
Read more!

Chained comparisons

Have you ever wondered about writing

if( 0 <= x < max ) { ... }
in your program? Did it work? Like you intended?

The (by me) expected semantic for this expression is the same like the mathematical, or if you want to talk in C:
if( (0 <= x) && (x < max) ) { ... }
However in C, the <= operator is left-associative meaning, 0 <= is evaluated first and the integer 1 is the result if the test is true and the second test against max is made to this 1, thus the result is most likely a bug. C++ upholds this C legacy.

Java doesn't make it work, but at least detects it as an error through the dedication that comparisons in general result in an result of type boolean, thus you get this:
operator < cannot be applied to boolean,int
compiler error.

Python (tested) and Ruby (read) implement the "right" behavior, Perl 6 is about to implement it. Concerning D, I came across this discussion.
Read more!


The legendary BTX Hack

The Chaos Computer Club back in the eighties hacked the BTX - Bildschirmtext to demonstrate the vulnerability of the system through transferring 130.000 DM indirectly to their own bank account.

The recording of the back-then news journal report has been put up at Google Video.

It features an interview with Wau Holland.
Read more!


Shared source

Shared source programs allow restricted auditing of normally closed source code. This is mostly done by software vendors to get contracts from governments for sensitive application areas. Examples include Microsoft's Windows OS and Voting machine vendors.

The point I want to bring up is that though you can use that kind of audit to further assure that the software vendor didn't make any unintentional errors, normally this doesn't help you against intentional backdoors.

Why that? Well unless you really build the software yourself, the vendor could show you any source code and deliver any malicious software. This is the point where I doubt, that the auditor really takes the given source and builds the product from there on after the audit.

So those audits still imply trusting the vendor. Thats the interesting point, do you really trust the voting machine vendor? Imagine what you could do with the control over elections in a country. Or the control over a government computer through controlling the operating system.
Read more!