26c3 - Here be dragons
December 31, 2009 on 1:09 pm | In berlin, hacking | No Comments
Der Chaos Computer Congress war wie jedes Mal wieder ein lohnender Abschluss des Jahres. Ich war dieses Jahr nur einen Tag dort (3.Tag), was daran lag, dass nun das Berliner Congress Center endgültig unter der Masse an Teilnehmern zusammenbricht. Morgens um 11 Uhr war die Welt noch schön. Ich saß im halb vollem Saal 1 und lauschte Markus Beckedahl und Falk Lueckes Vortrag über Netzneutralität. Ein Thema das sicherlich 2010 in Europa und Deutschland diskutiert werden wird. Danach noch dem hervorragenden Vortrag über Kreationismus von Kay Hamacher gefolgt. Nach diesem schönen Start in den Tag merkte ich so langsam wie von Stunde zu Stunde das BCC immer voller und voller wurde. Um 16:00 konnte ich noch angenehm den Namesgeber des diesjährigen CCC folgen. Brian Dunnig zeigte seinen sehr professionell gemachten Vortrag “The Lost Cosmonauts”. Seinen Podcast kann ich übrigens sehr empfehlen.

Gegen Abend kam es dann zu dem Showdown der 3 Könige des Kongresses. Bre Patis gefolgt von Fefe und Frank Rieger, die dann von Dan Kaminsky abgelöst wurden. Zwischen den Vorträgen hatte ein Security Mitarbeiter des Kongresses mit netten Witz probiert Ordnung zu schaffen. Die Sicherheitsregeln müssen halt bei solchen Menschenmassen dringend eingehalten werden. Schon das war schwierig. Aber als ich nach der Fnord New Show kurz den Saal 1 verlassen wollte, war der Schock gewaltig. Vor den Türen des Saales war die gesamte obere Etage des BCC brechend voll mit Menschen die nicht reinkammen und nun versuchten wenigstens etwas von Kaminskys zu sehen. Da Hacker intelligente und höfliche Menschen sind lief das alles ohne großen Ärger und Rangelleien ab. Es schmerzt das schreiben zu müssen, aber der CCC benötigt einen neuen Veranstaltungsort.

Schön zu sehen war das in der Hackergemeinde Macs nicht mehr so beliebt sind wie noch vor 2 Jahren. Der Trend zum Netbook mit Linux war deutlich zu sehen. Auch Android Handys waren stark im Vormarsch. Sogar ein Nexus wurde wohl schon gesichtet.
Allen einen guten Rutsch ins (neue) Jahr 1984.
Ubuntu 9.10 and the Google Go Emacs Mode
November 24, 2009 on 1:00 pm | In english, hacking, linux, open source, technic | No CommentsAfter some hours with google go I recognize the emacs mode in the source directory of the current distribution.
It is easy to install the mode for ubuntu 9.10 (karmic). First install the emacs with
sudo apt-get install emacs23
After that copy the the two .el files from you google ~/go/misc/emacs directory to
/usr/share/emacs/23.1/lisp
Now create a .emacs file in you home directory and add the following to lines.
(add-to-list ‘load-path “/usr/share/emacs/23.1/lisp” t)
(require ‘go-mode-load)
Now the google mode is activated after loading a .go file.

Google Go and the Mandelbrot Set Part II
November 17, 2009 on 12:22 pm | In english, hacking, linux | No CommentsThe following code is my solution for parallel calculation of a mandelbrot set with google go.
package main
import ( "image";
"image/png";
"bufio";
"fmt";
"os";
"math";
"time"; )
type PixelCalc struct { x int;
y int;
cx float64;
cy float64; }
func PointIteration(in chan *PixelCalc,ready chan int,img *image.RGBA){
for {
pixelCalc := <- in;
xt := float64(0);
yt := float64(0);
x := float64(0);
y := float64(0);
quadValue := float64(0);
iter := 0;
for quadValue <= 255.0 && iter < 255 {
xt= ( x * x ) - ( y * y) + pixelCalc.cx;
yt= ( float64(2.0) * x * y ) + pixelCalc.cy;
x = xt;
y = yt;
iter++;
quadValue = ( x * x ) + ( y * y );
}
color := new(image.NRGBAColor);
color.A = 255;
iter8 := uint8(iter);
color.R = iter8;
color.G = iter8;
color.B = iter8;
img.Set(pixelCalc.x,pixelCalc.y,color);
ready <- 1;
}
}
func main(){
start := time.Seconds();
const pictureSize = 1000;
img := image.NewRGBA(pictureSize,pictureSize);
f, err := os.Open("mandel.png", os.O_WRONLY|os.O_CREAT, 0666);
if err != nil {
fmt.Printf("Can't create picture file\n");
}
calc := make(chan *PixelCalc,pictureSize*pictureSize);
out := make(chan int,pictureSize*pictureSize);
for i:=0;i<4;i++{
go PointIteration(calc,out,img);
}
deltaX := math.Fabs(float64(-2.0 - 1.0)) / float64(pictureSize);
deltaY := math.Fabs(float64(-1.0 - 1.0)) / float64(pictureSize);
cx := float64(-2.0);
for x:=0;x<pictureSize;x++{
cx+=deltaX;
cy := float64(-1.0);
for y:=0;y<pictureSize;y++{
cy+=deltaY;
pixelCalc := new(PixelCalc);
pixelCalc.cx = cx;
pixelCalc.cy = cy;
pixelCalc.x = x;
pixelCalc.y = y;
calc <- pixelCalc;
}
}
for i:=0;i<pictureSize*pictureSize;i++{
<- out;
}
w := bufio.NewWriter(f);
png.Encode(w,img);
w.Flush();
fmt.Printf("Seconds needed %d\n",time.Seconds() - start);
}
At this time the go compiler has some bugs regarding the multiprocessor support. But sometimes I can see the use of my two processors.

I hope there will fix that bug fast. The first workaround for that bug is the GOMAXPROCS environment variable. I set this to 2. But this did’nt help everytime.
Google Go and the Mandelbrot Set
November 13, 2009 on 12:30 pm | In english, hacking, linux | 1 CommentLearning a new programming language is fun. Here is my version of calculating the mandelbrot set and save the result as a PNG picture with Google Go.
package main
import ( "image";
"image/png";
"bufio";
"fmt";
"os";
"math";
"time"; )
func PointIteration( cx, cy, maxValue float64, maxIter uint8) uint8{
quadValue := float64(0.0);
iter := uint8(0);
x := float64(0.0);
y := float64(0.0);
for quadValue <= maxValue && iter < maxIter {
xt:= ( x * x ) - ( y * y) + cx;
yt:= ( float64(2.0) * x * y ) + cy;
x = xt;
y = yt;
iter++;
quadValue = ( x * x ) + ( y * y );
}
return iter;
}
func main(){
start := time.Seconds();
const pictureSize = 500;
img := image.NewRGBA(pictureSize,pictureSize);
f, err := os.Open("mandel.png", os.O_WRONLY|os.O_CREAT, 0666);
if err != nil {
fmt.Printf("Can't create picture file\n");
}
deltaX := math.Fabs(float64(-2.0 - 1.0)) / float64(pictureSize);
deltaY := math.Fabs(float64(-1.0 - 1.0)) / float64(pictureSize);
cx := float64(-2.0);
for x:=0;x<pictureSize;x++{
cx+=deltaX;
cy := float64(-1.0);
for y:=0;y<pictureSize;y++{
cy+=deltaY;
iter := PointIteration(cx,cy,255.0,255);
color := new(image.NRGBAColor);
color.A = 255;
color.R = iter;
color.G = iter;
color.B = iter;
img.Set(x,y,color);
}
}
w := bufio.NewWriter(f);
png.Encode(w,img);
w.Flush();
fmt.Printf("Seconds needed %d\n",time.Seconds() - start);
}
And here the result.

Next step is trying to improve the speed by using goroutines and channels.
Motodrone 2008
September 21, 2008 on 8:13 pm | In berlin, hacking, open source | No Comments
Am 20.09.2008 lud der Verein Motodrone eV zur seinen ersten internationalen Open Source Meisterschaften für Autonome Flugobjekte ein. Leider war der Zuschauer- und Mitmacherandrang nicht so hoch wie erwartet. Reporter gab es übrigens interessanterweise massenhaft. Trotz der schwachen Teilnehmerfeldes gab es einige neue Drohnen zu sehen.

Eine Drohne die auch einen Verfolgungsmodus beherrscht. Zu der Drohne gibt es einen kleinen Sender. Bewegt sich der Sender, folgt die Drohne den aktuellen Halter des Senders.

Für 500 € konnte sich jeder vor Ort ein Bauset für den spontanen Selbstbau erwerben und dann gleich unter Anleitung zusammenbauen.

Eins der Highlights war das Paparazzi Team. Dieses Team baut im Gegensatz zu den meisten anderen Drohnenbauer keine Hubschrauber ähnlichen Geräte, sondern Flugzeuge. Diese werden einfach aus der Hand gestartet und fliegen bis auf die Start- und Landphase völlig autark.

Es war äußerst beeindruckend wie hoch die einfachen Styroporflieger flogen und dabei wie selbstverständlich den Platz fast lautlos in ca. 100 - 200 Meter Höhe umkreisen. Auf einen Monitor könnte dazu noch live der Flug mitverfolgt werden. Das ganze Gerät kostet nicht mehr als 1000 €. Mehr Infos dazu gibt es unter der Webseite des Paparazzi Projektes und diesen Spiegel Artikel.
Die Veranstaltung fand auf dem Gelände des Flugzeugmuseums bei Finowfurt statt. Ein recht interessantes Museum mit mehreren alten Flugzeugen, hautpsächlich aus der ehemaligen Sowjetunion und der DDR. Dies war übrigens auch der Platz für das Chaos Communication Camp im letzten Sommer.



