# HG changeset patch # User Eugen Sawin # Date 1278367538 -7200 # Node ID a264da3d80be39f110abc93356b50932896caeb1 # Parent a04897b5801e5dff3a61579e775414a83512a039 Fixed some issues. diff -r a04897b5801e -r a264da3d80be books.html --- a/books.html Mon Jul 05 17:19:17 2010 +0200 +++ b/books.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,117 +1,115 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
-

Here is a list of books I find useful or simply enjoyed reading them.

-

Engineering & Science

-
    -
  • The Pragmatic Programmer

    Andrew Hunt and David Thomas
    -A collection of advises for effective software development. -
  • -
  • Effective C++ / More Effective C++

    Scott Meyers
    -Effective and safe C++ programming advises for practical use. -
  • -
  • Thinking in C++

    Bruce Eckel
    -A freely available introduction to C++ and its Standard Library. -
  • -
  • Artificial Intelligence: A Modern Approach

    Stuart J. Russel and Peter Norvig
    -A comprehensive compendium of most techniques for the development of artificial intelligence. -
  • -
  • The Algorithmic Beauty of Plants

    Przemyslwa Prusinkieicz and Aristid Lindenmayer
    -A wonderful introduction to L-systems and a motivational read. -
  • -
  • Compilers: Principles, Techniques & Tools

    Alfred V. Aho, Monica S. Lam and Ravi Sethi
    -The standard introduction to compiler development. Also known as the Dragon Book. -
  • -
  • Computer Networks

    Andrew S. Tanenbaum
    -A good and in-depth textbook for network technology. -
  • -
  • A Brief History of Time

    Stephen W. Hawking
    -Popular science. Follow Stephen on his quest for the Theory of Everything. -
  • -
-

Fiction

-
    -
  • Alice in Wonderland

    Lewis Carroll
    -Follow the rabbit. -
  • -
  • Through the Looking-Glass

    Lewis Carroll
    -Sequel to Alice in Wonderland. -
  • -
  • 1984

    George Orwell
    -Classic novel about a totalitarian regime and its influence on the society. -
  • -
- - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+

Here is a list of books I find useful or simply enjoyed reading them.

+

Engineering & Science

+
    +
  • The Pragmatic Programmer

    Andrew Hunt and David Thomas
    +A collection of advises for effective software development. +
  • +
  • Effective C++ / More Effective C++

    Scott Meyers
    +Effective and safe C++ programming advises for practical use. +
  • +
  • Thinking in C++

    Bruce Eckel
    +A freely available introduction to C++ and its Standard Library. +
  • +
  • Artificial Intelligence: A Modern Approach

    Stuart J. Russel and Peter Norvig
    +A comprehensive compendium of most techniques for the development of artificial intelligence. +
  • +
  • The Algorithmic Beauty of Plants

    Przemyslwa Prusinkieicz and Aristid Lindenmayer
    +A wonderful introduction to L-systems and a motivational read. +
  • +
  • Compilers: Principles, Techniques & Tools

    Alfred V. Aho, Monica S. Lam and Ravi Sethi
    +The standard introduction to compiler development. Also known as the Dragon Book. +
  • +
  • Computer Networks

    Andrew S. Tanenbaum
    +A good and in-depth textbook for network technology. +
  • +
  • A Brief History of Time

    Stephen W. Hawking
    +Popular science. Follow Stephen on his quest for the Theory of Everything. +
  • +
+

Fiction

+
    +
  • Alice in Wonderland

    Lewis Carroll
    +Follow the rabbit. +
  • +
  • Through the Looking-Glass

    Lewis Carroll
    +Sequel to Alice in Wonderland. +
  • +
  • 1984

    George Orwell
    +Classic novel about a totalitarian regime and its influence on the society. +
  • +
+ + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be contact.html --- a/contact.html Mon Jul 05 17:19:17 2010 +0200 +++ b/contact.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,82 +1,80 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
- -

Contact

-

water -
Eugen Sawin
- sawine@me73.com.

- - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+ +

Contact

+

water +
Eugen Sawin
+ sawine@me73.com.

+ + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be factory/v2010/chrome.html --- a/factory/v2010/chrome.html Mon Jul 05 17:19:17 2010 +0200 +++ b/factory/v2010/chrome.html Tue Jul 06 00:05:38 2010 +0200 @@ -2,13 +2,13 @@ - - - - - - - - + + + + + + + +

diff -r a04897b5801e -r a264da3d80be howiwork.html --- a/howiwork.html Mon Jul 05 17:19:17 2010 +0200 +++ b/howiwork.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,171 +1,169 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
-

Programming Languages

-

binary -During my studies and personal work, I've used a variety of programming -languages. Here is an overview in chronologic order with some comments:

-
    -
  • -

    QBasic. *

    -It was the first language that I've learned. I've enjoyed hacking -around in it a little, but never got far with it due to lack of -learning resources.
  • -
  • -

    C++. *****

    -This was actually my second language to learn, which meant a big leap. -My first contact was at the age of 15, though I hadn't used it -extensively until I started studying. In the past years, I've been -developing most of my personal and professional work in C++. It's a beast and should be -only handled with care.
  • -
  • -

    Java. ***

    -My first contact with Java was at the university. It does provide help -by managed memory and a big standard library. -
  • -
  • -

    Haskell. *

    -This language was a love-hate relationship for me. I hated it for being -so difficult to grasp for the first time and loved it for inspiring me -to approach problem solving from a differnt angle, even when working -with non-functional languages.
  • -
  • -

    Prolog. **

    -Nice iterative language especially for the field of artificial -intelligence.
  • -
  • -

    C. *****

    -C is clean and flat. It is still the most successful structured language and will most -probably still be in use for many years to come, even if it's just "under the hood".
  • -
  • -

    Assembler. **

    -Been there, done that.
  • -
  • -

    C#. ***

    -It feels like the more mature language based on a managed -architecture, especially in combination with Visual Studio, developing -in it is a breeze. The .Net framework is mostly a well structured and -complete environment to work in.
  • -
  • -

    Python. ****

    -It's my personal favourite language for many fields. It's best suited -for rapid prototyping, which fits perfectly into my method of working.
  • -
  • -

    Go. *

    -Google has developed an interesting language with the goal of providing a general programming language including a garbage collector and efficient methods for concurrency handling. It's a fun language and shows some interesting concepts including a more dynamic approach on object orientation.
  • -
  • -
    * show my level of expertise in the language -
  • -
-

Operating Systems

-
    -
  • GNU/Linux

    -Ubuntu, openSUSE, Red Hat and CentOS.
  • -
  • Microsoft Windows

    -Windows 95/98/2000/XP/Vista/7.
  • -
  • AmigaOS

    -Been a while...
  • -
-

Environments

-
    -
  • -

    GVim & gedit

    -These are my general purpose editors for quick editing on all platforms -and have become my prefered editors when working in an IDE-free environment.
  • -
  • -

    Visual Studio

    -It's my first choice for C#, C++ and C programming on Windows. It has -proven to be a feature-rich, reliable and customisable IDE with great debugger integration.
  • -
  • -

    Eclipse

    -It's what I prefer when developing in Java and, to some extent, when -working in C++ on Linux. It has a great plugin system and is therefore -extendable to be used with a big variety of languages.
  • -
-

Tools

-
    -
  • -

    Internet

    -Chrome for browsing, IRSSI for IRC and Skype for communication.
  • -
  • -

    Documentation

    -gedit & LaTeX for papers, gnuplot for analysis visualisations and Inkscape for graphics.
  • -
  • -

    Version Control

    -Mercurial for private work. -Subversion/CVS at work.
  • -
- - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+

Programming Languages

+

binary +During my studies and personal work, I've used a variety of programming +languages. Here is an overview in chronologic order with some comments:

+
    +
  • +

    QBasic. *

    +It was the first language that I've learned. I've enjoyed hacking +around in it a little, but never got far with it due to lack of +learning resources.
  • +
  • +

    C++. *****

    +This was actually my second language to learn, which meant a big leap. +My first contact was at the age of 15, though I hadn't used it +extensively until I started studying. In the past years, I've been +developing most of my personal and professional work in C++. It's a beast and should be +only handled with care.
  • +
  • +

    Java. ***

    +My first contact with Java was at the university. It does provide help +by managed memory and a big standard library. +
  • +
  • +

    Haskell. *

    +This language was a love-hate relationship for me. I hated it for being +so difficult to grasp for the first time and loved it for inspiring me +to approach problem solving from a differnt angle, even when working +with non-functional languages.
  • +
  • +

    Prolog. **

    +Nice iterative language especially for the field of artificial +intelligence.
  • +
  • +

    C. *****

    +C is clean and flat. It is still the most successful structured language and will most +probably still be in use for many years to come, even if it's just "under the hood".
  • +
  • +

    Assembler. **

    +Been there, done that.
  • +
  • +

    C#. ***

    +It feels like the more mature language based on a managed +architecture, especially in combination with Visual Studio, developing +in it is a breeze. The .Net framework is mostly a well structured and +complete environment to work in.
  • +
  • +

    Python. ****

    +It's my personal favourite language for many fields. It's best suited +for rapid prototyping, which fits perfectly into my method of working.
  • +
  • +

    Go. *

    +Google has developed an interesting language with the goal of providing a general programming language including a garbage collector and efficient methods for concurrency handling. It's a fun language and shows some interesting concepts including a more dynamic approach on object orientation.
  • +
  • +
    * show my level of expertise in the language +
  • +
+

Operating Systems

+
    +
  • GNU/Linux

    +Ubuntu, openSUSE, Red Hat and CentOS.
  • +
  • Microsoft Windows

    +Windows 95/98/2000/XP/Vista/7.
  • +
  • AmigaOS

    +Been a while...
  • +
+

Environments

+
    +
  • +

    GVim & gedit

    +These are my general purpose editors for quick editing on all platforms +and have become my prefered editors when working in an IDE-free environment.
  • +
  • +

    Visual Studio

    +It's my first choice for C#, C++ and C programming on Windows. It has +proven to be a feature-rich, reliable and customisable IDE with great debugger integration.
  • +
  • +

    Eclipse

    +It's what I prefer when developing in Java and, to some extent, when +working in C++ on Linux. It has a great plugin system and is therefore +extendable to be used with a big variety of languages.
  • +
+

Tools

+
    +
  • +

    Internet

    +Chrome for browsing, IRSSI for IRC and Skype for communication.
  • +
  • +

    Documentation

    +gedit & LaTeX for papers, gnuplot for analysis visualisations and Inkscape for graphics.
  • +
  • +

    Version Control

    +Mercurial for private work. +Subversion/CVS at work.
  • +
+ + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be images/mandelbrot.png Binary file images/mandelbrot.png has changed diff -r a04897b5801e -r a264da3d80be index.html --- a/index.html Mon Jul 05 17:19:17 2010 +0200 +++ b/index.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,80 +1,78 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
-

-world map -

- - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+

+Mandelbrot +

+ + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be links.html --- a/links.html Mon Jul 05 17:19:17 2010 +0200 +++ b/links.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,98 +1,96 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
-

Friends

-
    -
  • Thomas Witt

    -A good friend and designer for the visual arts. -
  • -
  • Christian König

    -A fellow student and companion in the quest for world domination. -
  • -
  • Michael Chlebek

    -A friend, programmer and amateuer photographer. -
  • -
  • Thomas Huber

    -A fellow student of artificial intelligence. -
  • -
-

Professional

- - - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+

Friends

+
    +
  • Thomas Witt

    +A good friend and designer for the visual arts. +
  • +
  • Christian König

    +A fellow student and companion in the quest for world domination. +
  • +
  • Michael Chlebek

    +A friend, programmer and amateuer photographer. +
  • +
  • Thomas Huber

    +A fellow student of artificial intelligence. +
  • +
+

Professional

+ + + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be personalwork.html --- a/personalwork.html Mon Jul 05 17:19:17 2010 +0200 +++ b/personalwork.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,165 +1,163 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
-

Tools

-
    -
  • -

    NetChannel

    -

    Description

    -

    NetChannel is a simple Python object for message-based network communication - on the TCP/IP stack. NetChannel is based on stateful sessions for improved performance.

    -

    Version 0.7

    -

    A stable prototype.

    -

    - Download NetChannel (Python required)

    -
  • -
  • -

    Eden Plotter

    - eden plotter -

    Description

    -

    Eden Plotter or Eden One is a quick prototype for my genetic programming routines. - What it does is approximating a given function by the methods of GP.

    -

    Version 0.9

    -

    An unendurable slow prototype.

    -

    - Download Eden Plotter (Python required)

    -
  • -
  • -

    ANQ

    -

    Description

    - anq -

    ANQ -is a testing environment for distributed algorithms. It provides a -centralised and convenient way of organising runtime dynamic -topologies, gives full control over the initialisation and flow of the -algorithm and helps in tracking the current node states by visualising -the node reports on the OpenGL graph.

    -

    -ANQ builds on the ANQ Protocol which can be optionally extended on -special needs for the algorithm to be tested. The ANQ Master is written -in C# using Windows Forms and OpenGL. Observer, Hotbed and the example -Node were developed in Python.

    - anq -

    Version Antquarium Prototype

    -

    Antquarium is the predecessor of ANQ. It was an extended course assignment and serves as a prototype for ANQ.

    -

    - Download Antquarium for Windows (Python and .Net 2.0 required)

    -

    Version 0.4.1

    -

    Stable version missing features like flow and runtime topology control.

    -

    - Request Access to Subversion Repository

    -
  • -
- - -

Games

- - - - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+

Tools

+
    +
  • +

    NetChannel

    +

    Description

    +

    NetChannel is a simple Python object for message-based network communication + on the TCP/IP stack. NetChannel is based on stateful sessions for improved performance.

    +

    Version 0.7

    +

    A stable prototype.

    +

    + Download NetChannel (Python required)

    +
  • +
  • +

    Eden Plotter

    + eden plotter +

    Description

    +

    Eden Plotter or Eden One is a quick prototype for my genetic programming routines. + What it does is approximating a given function by the methods of GP.

    +

    Version 0.9

    +

    An unendurable slow prototype.

    +

    + Download Eden Plotter (Python required)

    +
  • +
  • +

    ANQ

    +

    Description

    + anq +

    ANQ +is a testing environment for distributed algorithms. It provides a +centralised and convenient way of organising runtime dynamic +topologies, gives full control over the initialisation and flow of the +algorithm and helps in tracking the current node states by visualising +the node reports on the OpenGL graph.

    +

    +ANQ builds on the ANQ Protocol which can be optionally extended on +special needs for the algorithm to be tested. The ANQ Master is written +in C# using Windows Forms and OpenGL. Observer, Hotbed and the example +Node were developed in Python.

    + anq +

    Version Antquarium Prototype

    +

    Antquarium is the predecessor of ANQ. It was an extended course assignment and serves as a prototype for ANQ.

    +

    + Download Antquarium for Windows (Python and .Net 2.0 required)

    +

    Version 0.4.1

    +

    Stable version missing features like flow and runtime topology control.

    +

    + Request Access to Subversion Repository

    +
  • +
+ + +

Games

+ + + + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be resume.html --- a/resume.html Mon Jul 05 17:19:17 2010 +0200 +++ b/resume.html Tue Jul 06 00:05:38 2010 +0200 @@ -1,118 +1,116 @@ - - - - -ME73 - A Programmer's Playground - - - - - - - - - -
- -
-
- -

Professional Experience

-
    -
  • Software Engineer, Comsoft GmbH, since 2010

    -Development of safety-critical back end systems for the ATC domain. -
  • -
-

Accompanying the Studies

-
    -
  • Bachelor Thesis, Comsoft GmbH, 2009-2010

    -"Flexible Modeling of Dynamic Air Space Constraints and its Application in Departure Flow Optimisation" -
  • -
  • Working Student & Internship, Comsoft GmbH, 2008-2009

    -Development of software and driver for safety-critical embedded systems. -
  • -
  • -

    Student Assistant, University of Applied Sciences Offenburg, 2008

    -Assistance at a university course for object-oriented software development. -
  • -
  • University Project, University of Applied Sciences Offenburg & Karlsruhe Institute of Technology, 2008

    -Development of a client for 3D data streaming and visualisation. -
  • -
  • University Project, University Karlsruhe, 2006

    -Development of a multi-discipline scheduler. -
  • -
-

Education

-
    -
  • -

    University of Applied Sciences Offenburg, 2007-2010

    -B. Sc. in Computer Science.
    -Emphasis in Distributed Systems and Artificial Intelligence. -
  • -
-
    -
  • -

    University Karlsruhe, 2003-2007

    -Diplom in Informatics, 6 semesters. -
  • -
- - - -
- -
- -
- - - - - - + + + + +ME73 - A Programmer's Playground + + + + + + + + + +
+ +
+
+ +

Professional Experience

+
    +
  • Software Engineer, Comsoft GmbH, since 2010

    +Development of safety-critical back end systems for the ATC domain. +
  • +
+

Accompanying the Studies

+
    +
  • Bachelor Thesis, Comsoft GmbH, 2009-2010

    +"Flexible Modeling of Dynamic Air Space Constraints and its Application in Departure Flow Optimisation" +
  • +
  • Working Student & Internship, Comsoft GmbH, 2008-2009

    +Development of software and driver for safety-critical embedded systems. +
  • +
  • +

    Student Assistant, University of Applied Sciences Offenburg, 2008

    +Assistance at a university course for object-oriented software development. +
  • +
  • University Project, University of Applied Sciences Offenburg & Karlsruhe Institute of Technology, 2008

    +Development of a client for 3D data streaming and visualisation. +
  • +
  • University Project, University Karlsruhe, 2006

    +Development of a multi-discipline scheduler. +
  • +
+

Education

+
    +
  • +

    University of Applied Sciences Offenburg, 2007-2010

    +B. Sc. in Computer Science.
    +Emphasis in Distributed Systems and Artificial Intelligence. +
  • +
+
    +
  • +

    University Karlsruhe, 2003-2007

    +Diplom in Informatics, 6 semesters. +
  • +
+ + + +
+ +
+ +
+ + + + + + diff -r a04897b5801e -r a264da3d80be script.js --- a/script.js Mon Jul 05 17:19:17 2010 +0200 +++ b/script.js Tue Jul 06 00:05:38 2010 +0200 @@ -151,6 +151,8 @@ var max_c = MAX_C; var max_iter = 100; var zoom = 1.0; +var resolution = 3; +var bailout = 4.0; function Result(z, iter) { @@ -174,6 +176,11 @@ return new Complex(c1.real + c2.real, c1.imag + c2.imag); } +function complex_equal(c1, c2) +{ + return (c1.real == c2.real) && (c1.imag == c2.imag); +} + function iterate(z, c) { z_quad = complex_quad(z); @@ -184,63 +191,71 @@ { var iter = 0; var z = new Complex(0.0, 0.0); - while (complex_quad_value(z) <= 4.0 - && iter < max_iter) + var last_z = new Complex(-1.0, 0.0); + var quad_z = complex_quad_value(z); + + while (iter < max_iter + && !complex_equal(z, last_z) + && quad_z <= bailout) { + last_z = z; z = iterate(z, c); + quad_z = complex_quad_value(z); iter++; } - return new Result(z, iter); + return new Result(quad_z, iter); } -function draw(iter, x, y, z) +function draw(iter, dx, dy, dz, dres) { - var canvas = document.getElementById('mandelbrot'); + var canvas = document.getElementById('mandelbrot'); + if (canvas.getContext) { + zoom += dz; var ctx = canvas.getContext('2d'); - z = z / 10.0; - zoom += z; - if (zoom < 1) - zoom = 1; - x = x / 10.0 / zoom; - y = y / 10.0 / zoom; - var min_inc = new Complex(x + z, y + z); - var max_inc = new Complex(x - z, y - z); + + if (dres != 0) + { + resolution = Math.max(1, resolution + dres); + } + + var width = canvas.width; + var height = canvas.height; + var dim = Math.max(width, height); + var dim_ratio = Math.round(width / height); + var diff_c = new Complex(max_c.real - min_c.real, + max_c.imag - min_c.imag); + dx_min = diff_c.real / 100 * (dx + dz); + dx_max = diff_c.real / 100 * (dx - dz); + + dy_min = diff_c.imag / 100 * (dy + dz); + dy_max = diff_c.imag / 100 * (dy - dz); + + var min_inc = new Complex(dx_min * dim_ratio / 2.0, dy_min); + var max_inc = new Complex(dx_max * dim_ratio / 2.0, dy_max); min_c = complex_add(min_c, min_inc); max_c = complex_add(max_c, max_inc); max_iter += iter; - var diff_c = new Complex(max_c.real - min_c.real, + diff_c = new Complex(max_c.real - min_c.real, max_c.imag - min_c.imag); - var width = canvas.width; - var height = canvas.height; - var dim = Math.max(width, height); - ctx.clearRect(0, 0, width, height); - for (var y = 0; y < height; y++) + for (var y = 0; y < height; y += resolution) { - for (var x = 0; x < width; x++) - { - if (true) - { - var c = new Complex(min_c.real + diff_c.real - / dim * x, - min_c.imag + diff_c.imag / dim * y); - var result = test(c, max_iter); - - if (result.iter < max_iter) - { - var r = Math.min(255, Math.pow(Math.max(0, - (result.iter - max_iter / 20.0)), 2)); - var g = Math.min(255, Math.pow(Math.max(0, - (result.iter - max_iter / 25.0)), 2)); - var b = Math.min(255, Math.pow(Math.max(0, - (result.iter - max_iter / 20.0)), 2)); - var colour = r + "," + g + "," + b; - ctx.fillStyle = "rgb(" + colour + ")"; - ctx.fillRect(x, y, 1, 1); - } - } + for (var x = 0; x < width; x += resolution) + { + var c = new Complex(min_c.real + diff_c.real / dim * x, + min_c.imag + diff_c.imag / dim * y); + var result = test(c, max_iter); + var r = Math.min(255, Math.pow(Math.max(0, + (result.iter - max_iter / 20.0)), 2)); + var g = Math.min(255, Math.pow(Math.max(0, + (result.iter - max_iter / 25.0)), 2)); + var b = Math.min(255, Math.pow(Math.max(0, + (result.iter - max_iter / 20.0)), 2)); + var colour = r + "," + g + "," + b; + ctx.fillStyle = "rgb(" + colour + ")"; + ctx.fillRect(x, y, resolution, resolution); } } }