Archive for 2008
Baum, übernehmen Sie!
by ace on Nov.11, 2008, under Pol-IT
Die große Koalition hat eine weitere Vorlage für den ehemaligen Innenminister und heutigen "Hobby-Kläger" Gerhart Baum geliefert. Der Innen- und Rechtsausschuss winkten gestern das umstrittene BKA-Gesetz durch. Am Mittwoch wird der Bundestag über das *gähn* "Gesetz zur Abwehr von Gefahren des internationalen Terrorismus durch das Bundeskriminalamt" abstimmen und vermutlich mit den Stimmen von CDU/CSU und SPD verabschieden.
Gerhart Baum (FDP) hat für den Fall einer Verabschiedung bereits eine Klage vor dem Bundesverfassungsgericht angekündigt. Dies wäre dann seine dritte. Oder vierte? Langsam kommt man mit dem Zählen nicht mehr nach. Selbst die Deutsche Polizeigewerkschaft (nicht zu verwechseln mit der Gewerkschaft der Polizei, die sieht nämlich keine Probleme!) hat starke Bedenken gegen die Gesetztesnovelle angemeldet. Ebenso Journalisten, Rechtsanwälte und Ärzte. Aber unsere Politiker sind anscheinend beratungsresistent.
Kritiker sehen in dem Gesetz eine starke Beschneidung der Bürgerrechte, weil das BKA damit bei einer konkreten Gefahr und schwersten Straftaten eine heimliche Onlinedurchsuchung ausführen dürfen. Normalerweise nur mit richterlicher Genehmigung (die mittlerweile einfach zu erhalten ist, die Prüfung eines Antrags auf Hausdurchsuchung dauert laut Statistik beim Gericht weniger als 30 Minuten), bei dringenden Gefahren natürlich auch ohne. Ebenso entscheiden nun zwei BKA-Beamte und der Datenschutzbeauftragte der Polizei *haha!*, was auf dem durchsuchten Rechner zur Privatsphäre gehört und was nicht. Diese soll nämlich, ebenso wie bei telefonischen Lauschangriffen, weiterhin geschützt bleiben.
Reif für die Insel?
by ace on Nov.11, 2008, under Pol-IT
In Sachen unverhohlener Überwachung sind die Briten schon seit längerem Spitzenreiter. Nun haben sie sich einen fast uneinholbaren Vorsprung verschafft. Grund: Die Regierung will nach Berichten des "Independent" jegliche Telekommunikationsverbindung lückenlos überwachen und in riesigen Datenbanken speichern.
In sogenannten "Black Boxes" sollen E-Mails, aufgerufene Webseiten samt Client-IP sowie jeglicher Telefonverkehr inklusive SMS gespeichert werden. Laut Independent hat die Britische Regierung um Premierminister Gordon Brown bereits Gespräche mit Telekommunikationsfirmen geführt. Das ganze Programm existiert – eigentlich öffentlich, aber aufgrund der blumigen Formulierung fast unentdeckt – unter dem Namen Interception Modernisation Programme (IMP) und soll – natürlich (!) – wiederum ausschließlich dem Schutz vor Terrorismus dienen.
Wer eine Ahnung davon erhalten möchte, was damit auf die Briten zurollt, braucht sich nur einmal anzuschauen, wie mittlerweile die unzähligen Überwachungskameras auf der Insel eingesetzt werden. Inzwischen werden damit nicht nur Parksünder gefangen, auch eine achtlos weggeworfene Verpackung kann an bestimmten Orten bereits zu einer öffentlichen Ermahnung über Lautsprecher führen.
Vielleicht sollten wir uns schon einmal Grundkenntnisse in "Neusprech" aneignen. Brown zumindest würde dies "doppelplusgut" finden.
Die Bayern als Vorreiter
by ace on Sep.17, 2008, under Pol-IT
Wie man mit unliebsamen Bürgern umgeht, zeigten kürzlich die Bayerische Polizei und Staatsanwaltschaft. Laut Netzpolitik.org wurde am vergangenen Donnerstag beim Pressesprecher der Piratenpartei eine Hausdurchung durchgeführt.
Grund: Der Piratenpartei wurde im Januar 2008 ein sehr amtlich aussehendes Schreiben zugespielt, in dem das Bayerische Staatsministerium für Justiz die Kostenverteilung bei der Überwachung von "Internettelefonaten" (hier speziell Skype) regelte. Bezug genommen wurde auf ein Angebot der hessischen Firma DigiTask, welche eine Software zum direkten Mitschnitt von Kommunikation über Skype anbietet. Diese Software, bei DigiTask "Skype Capture Unit" genannt, muss jedoch noch auf dem Rechner eines der Kommunikationspartner installiert werden. DigiTask liefert hierzu eine ausführbare Datei, die z.B. als Attachement einer E-Mail versendet werden kann.
Obwohl das Einpflanzen von Trojanern (noch) illegal ist, haben die Bayerischen Ermittlungsorgane keine Bedenken, die Rechner von Zielpersonen zu verseuchen. Dies falle schließlich unter den Bereich "Telefonüberwachung."
Natürlich ermitteln die Bayerischen Staatsschützer nicht gegen Ihre Kollegen wegen möglicher illiegaler Abhör- oder Durchsuchungsaktionen. Vielmehr wird nun derjenige in die Mangel genommen, dem das brisante Dokument (an dessen Authentizität nun nicht mehr gezweifelt werden braucht) zugespielt wurde. Als Zeuge wird er in einem Ermittlungsverfahren gegen unbekannt um 5 Uhr morgens aus dem Bett geklingelt und mit dem Durchsuchungsbeschluß konfrontiert. Wie heißt es so schön in einem Heiseforums-Betrag: "Die Junta zeigt ihre Fratze."
Einfach nur noch krank.
Showdown Odds
by ace on Sep.09, 2008, under Poker
In general:
| Combination | Example | % (rnd) |
| Pair vs one lower life card | AA vs AK | ~90% |
| Overpair | AA vs 99 | ~80% |
| Overpair vs two lower life cards | AA vs KQ | ~80% |
| Two non-pairs, "low-high" is paired | AK vs KQ | ~70% |
| Two non-pairs, "low-low" is paired | AQ vs KQ | ~70% |
| Two non-pairs, "high-high" is paired | AK vs AQ | ~70% |
| Pair vs "high-low" life cards | KK vs AQ | ~70% |
| Pair vs one higher life card | KK vs AK | ~68% |
| Two upper life cards vs two lower life cards | AK vs T9 | ~62% |
| Four life cards zipped | AQ vs KJ | ~62% |
| Two upper life cards vs pair | AK vs 99 | ~46% |
| top | 2% |
5% |
8% |
10% |
15% | 20% |
25% |
| AA | 80 | 83 | 84 | 84 | 85 | 85 | 84 |
| KK | 60 | 68 | 71 | 73 | 74 | 75 | 77 |
| 40 | 57 | 64 | 65 | 67 | 69 | 71 | |
| JJ | 20 | 49 | 57 | 58 | 62 | 65 | 67 |
| AKs | 39 | 48 | 56 | 59 | 62 | 64 | 64 |
| AKo | 35 | 45 | 53 | 57 | 60 | 62 | 62 |
| TT | 19 | 42 | 52 | 53 | 57 | 60 | 62 |
| AQs | 34 | 40 | 48 | 53 | 57 | 60 | 61 |
| AQo | 30 | 36 | 45 | 50 | 55 | 58 | 59 |
| 99 | 19 | 35 | 47 | 49 | 53 | 55 | 57 |
| 88 | 19 | 33 | 43 | 45 | 50 | 52 | 54 |
Some Simple Maths
by ace on Sep.09, 2008, under Poker
Numbers are pretty dry for most of us – except for some rare mathematics nerds – but a showing a few of them might help when facing a bad run of "unplayable" pocket cards.
A poker deck usually has 52 cards (2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K, A with 4 colours each).
Dealt two cards there are 1326 (52*51/2) combinations.
| Combinations | No | Odds (rnd) | % (rnd) |
| 13 pairs * 6 | 78 | 1 in 17 | 6% |
| 13 directly suited connectors * 4 | 52 | 1 in 25.5 | 4% |
| 10 "one gap" suited connectors * 4 | 40 | 1 in 33 | 3% |
| 13 directly unsuited connectors * 12 | 156 | 1 in 8.5 | 12% |
| 12 "one gap" unsuited connectors * 12 | 144 | 1 in 9 | 11% |
| Combinations | No | Odds (rnd) | % (rnd) |
| AA | 6 | 1 in 221 | 0.45% |
| AKs | 4 | 1 in 332 | 0.30% |
| AKo | 12 | 1 in 110.5 | 0.90% |
| AX or Ax | 198 | 1 in 6.7 | 14.93% |
| AA-TT or AK, AQ | 62 | 1 in 21 | 4.67% |
| Combinations | Odds (rnd) | % (rnd) |
| AK hits on the flop | 1 in 4.25 | 24% |
| A pair flops a set | 1 in 8.5 | 12% |
| Two suits flop at least two suits | 1 in 8.5 | 12% |
| Two pair after flop make FH or better | 1 in 6 | 17% |
| A set after flop makes FH or better | 1 in 3 | 33% |
| Combinations |
Odds Turn
|
% T (rnd) | % T and R (rnd) |
| Open end straight draw | 8 in 47 | 17% | 31% |
| Flush draw | 9 in 47 | 19% | 35% |
| Open end straight flush draw* | 15 in 47 | 32% | 54% |
VDS ‘mal anders
by ace on Aug.19, 2008, under Pol-IT
Der in den vergangenen Tagen aufgedeckte, schwunghafte und illegale Handel mit Kundendaten scheint offenbar größeren Ausmaßes zu sein, als vermutet. In der vergangenen Woche hatte der Mitarbeiter eines Callcenters der Verbraucherschutzzentrale Schleswig-Holstein eine CD mit ca. 17,000 Kundendaten zugespielt. Auf der CD waren neben Name und Anchrift auch Kontoinformationen enthalten.
Einige Tage später gelang es einem Aufkäufer im Auftrag des Bundesverbands der Verbraucherzentralen innerhalb weniger Stunden, für den "Schnäppchenpreis" von € 850,- weitere vier Millionen Kontendaten zu erwerben. Stichproben haben ergeben, daß die Masse der Daten von zwei großen Klassenlotterien stammten.
In der gestrigen Sendung von Kriminalreport (WDR) wurde nun bekannt, daß sich ein weiteres Callcenter in Bremerhafen offenbar illegal Zugang zu dreißig Millionen Kundendaten der Deutschen Telekom verschafft hat. Ein Mitarbeiter des Callcenters berichtete, wie er sich mit Hilfe seines Vorgesetzten in die Serviceapplikationen der Telekom einloggen und von dort Kundendaten abgreifen konnte.
Zahlreiche Betroffene des Datenschutzskandals – der BVZ spricht von Hunderten – meldeten inzwischen illegale Abbuchungen in Höhe von € 50,- bis 100,- von ihren Konten bei den Verbrauchschutzzentralen. Dies ist jedoch möglicherweise nur die Spitze des Eisbergs.
Verwunderlich an der ganzen Geschichte ist die Tatsache, daß sich weder Frau Zypries noch Herr Schäuble – beide glühende Verfechter der Vorratsdatenspeicherung zur Bekämpfung der allgegenwärtigen Bedrohungen durch Terrorismus, Kinderpornographie und Musikklau – auch nach einer Woche zu Wort gemeldet haben.
Using a SQLite Database III
by ace on Aug.05, 2008, under Backgammon, Gnubg Hints
What about getting a terminal output like this?
No Length Result Luck_Adjusted FIBS Snowie Date ------ ------- ------- ------------- ------- ------- ---------- 1 1 1.0 79.68 1802.4 2.99 2008-08-04 2 1 0.0 51.06 1719.1 3.67 2008-08-04 3 1 0.0 37.48 1975.4 0.58 2008-08-04 4 3 1.0 56.9 1912.7 3.27 2008-08-04 5 3 0.0 52.47 2014.2 0.54 2008-08-04 6 3 1.0 68.69 1853.1 6.35 2008-08-04 7 3 0.0 59.16 1980.8 1.79 2008-08-04 8 1 1.0 51.58 1864.5 2.56 2008-08-04 9 1 0.0 35.92 1455.7 8.35 2008-08-04 10 1 1.0 56.21 1967.7 0.89 2008-08-04 Result secret_player (2): 165.0 win(s) in 276 matches. Snowie error rate: 3.68
Unfortunately for the moment this is only possible on MacOS or Unix/Linux systems. I provided a script "query_player.sh" which allows you to query your database using search patterns. A script call could be:
#: query_player.sh goodguy
and the script would give you an output like shown above. Perhaps someone with deeper MSWindows knowledge is able to convert the script. You can find it either in the repository of GNU Backgammon or here (be careful, the content may change from time to time and will not always work perfectly).
There are two adjustment you have to make:
# Put the path to your database here:
DATABASE=/Users/good_player/.gnubg/gnubg.db
...
# only for getting your number of games correctly, usually you have the id 1 or 2.
if [ ${NAME_ID_RESULT} = 2 ]
then PLAYER_ID="player_id1"
else PLAYER_ID="player_id0"
fi
[Update]
The script now works with error rates and names of opponents. Output is slightly different to the table above.
Using a SQLite Database II
by ace on Aug.04, 2008, under Backgammon, Gnubg Hints
In the first part I showed some general information about the sqlite database in GNU Backgammon. We now start some useful queries:
sqlite> select a.session_id as No, b.length as Length, a.actual_result+0.5 as Result, round(a.luck_adjusted_result*100,2) as Luck_Adjusted, round(a.snowie_error_rate_per_move*1000,2) as Snowie, date(b.added) as Date from matchstat a, session b where a.session_id = b.session_id and a.player_id = 2 group by a.session_id limit 10;
No Length Result Luck_Adjusted Snowie Date ------ ------- ---------- ------------- ---------- ------------ 1 1 1.0 29.68 2.99 2008-08-04 2 1 0.0 1.06 3.67 2008-08-04 3 1 0.0 -12.52 0.58 2008-08-04 4 3 1.0 6.9 3.27 2008-08-04 5 3 0.0 2.47 0.54 2008-08-04 6 3 1.0 18.69 6.35 2008-08-04 7 3 0.0 9.16 1.79 2008-08-04 8 1 1.0 1.58 2.56 2008-08-04 9 1 0.0 -14.08 8.35 2008-08-04 10 1 1.0 6.21 0.89 2008-08-04
Explanations:
| round(…*100,2) | = | change output into percentages, round up and restrict number to 2 digits after decimal point |
| round(…*1000,2) | = | round up and restrict number to 2 digits after decimal point |
| date(…) | = | print only the date, not hours, minutes and seconds |
| limit 10 | = | restrict the output to the first ten lines |
A more sophisticated query with nicer output could be the following:
sqlite>select a.session_id as No, b.length as Length, round(a.actual_result+0.5) as Result, round(50+a.luck_adjusted_result*100,2) as Luck_Adjusted, round(a.error_based_fibs_rating,1) as FIBS, round(a.snowie_error_rate_per_move*1000,2) as Snowie, date(b.added) as Date from matchstat a, session b where a.session_id = b.session_id and a.player_id = 2 group by a.session_id;
No Length Result Luck_Adjusted FIBS Snowie Date ------- -------- -------- ------------- ------- -------- ---------- 267 1 0.0 53.53 1947.8 0.52 2008-08-04 268 1 1.0 44.78 1691.9 4.01 2008-08-04 269 1 1.0 37.92 1491.0 6.2 2008-08-04 270 1 1.0 49.63 1726.4 4.45 2008-08-04 271 1 1.0 58.7 1720.4 4.34 2008-08-04 272 3 1.0 36.64 1883.4 4.01 2008-08-04 273 1 1.0 67.96 1878.3 2.16 2008-08-04 274 1 1.0 57.63 1888.9 1.92 2008-08-04 275 1 1.0 61.18 1861.5 2.61 2008-08-04 276 3 1.0 57.31 1883.9 4.54 2008-08-04
Using a SQLite Database I
by ace on Aug.04, 2008, under Backgammon, Gnubg Hints
GNU Backgammon provides relational database support. Besides mysql and postgresql the standard database is sqlite. After the installation of gnubg you’ll find the database file in your home directory (~/.gnubg/gnubg.db on Linux and MacOS). You find the menu entry for using the database in "Analyze" – "Relational Database".
Besides getting information by the GUI of gnubg you can also put queries directly into the database. I’ll describe some important stuff for terminal usage here. If you work on MSWindows systems either get a sqlite browser or the Firefox Addon "Sqlite Manager."
In a terminal you start sqlite with:
#: sqlite .gnubg/gnubg.db (or wherever your database is located sqlite>Loading resources from /Users/ace/.sqliterc SQLite version 3.4.0 Enter ".help" for instructions sqlite>
Important sqlite commands:
| sqlite>.help | = | show help |
| sqlite>.tables | = | show tables |
| sqlite>.headers ON|OFF | = | set table headers on|off |
| sqlite>.mode | = | set output mode |
| sqlite>.exit | = | exit program |
Gnubg stores all data into five tables (actually there is a 6th table called "control", but forget about that for now):
- game
- gamestat
- matchstat
- player
- session
sqlite>.mode line sqlite> select * from player limit 1; player_id = 73 name = cdforex notes = sqlite> select * from game limit 1; game_id = 1 session_id = 1 player_id0 = 1 player_id1 = 2 score_0 = 0 score_1 = 0 result = 1 added = 02:00:22 game_number = 1 crawford = 0 sqlite> select * from session limit 1; session_id = 80 checksum = 112f66856248c6b6a6b0f211071b5d3d player_id0 = 73 player_id1 = 74 result = 0 length = 1 added = 2008-08-04 05:50:07 rating0 = NULL rating1 = NULL event = NULL round = NULL place = NULL annotator = NULL comment = NULL date = 2008-04-01
".mode" and "limit 1" are only set for displaying it here on the webpage more conveniently. The other three tables look similar but with much more rows:
game: game_id session_id player_id0 player_id1 score_0 score_1 result added game_number crawford
gamestat: gamestat_id game_id player_id total_moves unforced_moves unmarked_moves good_moves doubtful_moves bad_moves very_bad_moves chequer_error_total_normalised chequer_error_total chequer_error_per_move_normalised chequer_error_per_move chequer_rating very_lucky_rolls lucky_rolls unmarked_rolls unlucky_rolls very_unlucky_rolls luck_total_normalised luck_total luck_per_move_normalised luck_per_move luck_rating total_cube_decisions close_cube_decisions doubles takes passes missed_doubles_below_cp missed_doubles_above_cp wrong_doubles_below_dp wrong_doubles_above_tg wrong_takes wrong_passes error_missed_doubles_below_cp_normalised error_missed_doubles_above_cp_normalised error_wrong_doubles_below_dp_normalised error_wrong_doubles_above_tg_normalised error_wrong_takes_normalised error_wrong_passes_normalised error_missed_doubles_below_cp error_missed_doubles_above_cp error_wrong_doubles_below_dp error_wrong_doubles_above_tg error_wrong_takes error_wrong_passes cube_error_total_normalised cube_error_total cube_error_per_move_normalised cube_error_per_move cube_rating overall_error_total_normalised overall_error_total overall_error_per_move_normalised overall_error_per_move overall_rating actual_result luck_adjusted_result snowie_moves snowie_error_rate_per_move luck_based_fibs_rating_diff error_based_fibs_rating chequer_rating_loss cube_rating_loss actual_advantage actual_advantage_ci luck_adjusted_advantage luck_adjusted_advantage_ci time_penalties time_penalty_loss_normalised time_penalty_loss
matchstat: matchstat_id session_id player_id total_moves unforced_moves unmarked_moves good_moves doubtful_moves bad_moves very_bad_moves chequer_error_total_normalised chequer_error_total chequer_error_per_move_normalised chequer_error_per_move chequer_rating very_lucky_rolls lucky_rolls unmarked_rolls unlucky_rolls very_unlucky_rolls luck_total_normalised luck_total luck_per_move_normalised luck_per_move luck_rating total_cube_decisions close_cube_decisions doubles takes passes missed_doubles_below_cp missed_doubles_above_cp wrong_doubles_below_dp wrong_doubles_above_tg wrong_takes wrong_passes error_missed_doubles_below_cp_normalised error_missed_doubles_above_cp_normalised error_wrong_doubles_below_dp_normalised error_wrong_doubles_above_tg_normalised error_wrong_takes_normalised error_wrong_passes_normalised error_missed_doubles_below_cp error_missed_doubles_above_cp error_wrong_doubles_below_dp error_wrong_doubles_above_tg error_wrong_takes error_wrong_passes cube_error_total_normalised cube_error_total cube_error_per_move_normalised cube_error_per_move cube_rating overall_error_total_normalised overall_error_total overall_error_per_move_normalised overall_error_per_move overall_rating actual_result luck_adjusted_result snowie_moves snowie_error_rate_per_move luck_based_fibs_rating_diff error_based_fibs_rating chequer_rating_loss cube_rating_loss actual_advantage actual_advantage_ci luck_adjusted_advantage luck_adjusted_advantage_ci time_penalties time_penalty_loss_normalised time_penalty_loss
A simple query could now be:
sqlite> select * from player where name = "ace"; player_id name notes ---------- ---------- ---------- 12 ace
And now you have one of the most important information about a player, his "player_id" which is necessary for further queries. It’s also possible to deliver a search string:
sqlite> select * from player where name like "%ace%"; player_id name notes ---------- ---------- ---------- 12 ace 26 Acepoint
As you can see the search is not case sensitive.
Batch Rollouts
by ace on Jul.27, 2008, under Backgammon, Gnubg Hints
If you want gnubg doing some batch rollouts you can prepare a file like:
set gnubg Position ID ... rollout =cube export position html filename.html set gnubg Position ID ... hint rollout =1 =2 =3 export position html filename.htm ... and start gnubg with the following command: #: gnubg -t -c [file].txt